问答题 4
阅读以下关于基于场景驱动的软件架构设计的相关叙述,根据要求回答问题。
[说明]
对于大中型软件开发项目,通常采用迭代的方法来进行架构设计。架构先被原型化、测试和评估分析,然后在一系列的迭代过程中被细化。这种方法能够使需求细化、成熟化,并能够被更好地理解。
用例场景是通过描述流经用例的路径来确定的过程,这个流经过程要从用例开始到结束遍历其中所有基本流(基本事件)和备选流(分支事件)。表1是对某IC卡加油机应用系统基本流的描述,表2是对该IC卡加油机应用系统备选流的描述。
表1 基本流描述表
序 号 用例名称 用例描述
A1 准备加油 客户将IC加油卡插入加油机
A2 验证加油卡 加油机从加油卡的磁条中读取账户代码,并检查它是否属于可以接收的加油卡
A3 验证黑名单 加油机验证卡账户是否存在于黑名单中,如果属于黑名单,则加油机吞卡
A4 输入购油量 客户输入需要购买的汽油数量
A5 加油 加油机完成加油操作,从加油卡中扣除相应金额
A6 返回加油卡 退还加油卡
表2备选流描述表
序 号 用例名称 用例描述
B 加油卡无效 在基本流A2过程中,该卡不能够识别或是非本机可以使用的IC卡,加油机退卡,并退出基本流
C 卡账户属于黑名单 在基本流A3过程中,判断该卡账户属于黑名单(例如,已经挂失),加油机吞卡,并退出基本流
D 加油卡账面现金不足 系统判断加油卡内现金不足,重新加入基本流A4,或选择退卡
E 加油机油量不足 系统判断加油机内油量不足,重新加入基本流A4,或选择退卡


问答题 [问题1]
结合你的系统架构经验,请用400字以内的文字,简述基于场景驱动的迭代式软件架构设计过程。
【正确答案】这是一道要求读者掌握基于场景驱动的迭代式软件架构设计的经验总结题。本题的解答思路如下。
软件架构是软件系统的高层描述,给出了关于软件系统组织结构的一系列高级的、重要的抽象,包括:①系统组成的结构性构件;②组成构件之间的接口;③构件相对系统其他部分的可视行为;④构件之间所采取的交互和协作关系。
采用迭代的方法来进行架构设计,除了减少与架构相关的风险之外,在项目管理方面的优点有团队合作和培训,加深对架构的理解,以及深入程序和工具等(此处提及的是演进的原形,逐渐发展成为系统,而不是一次性的试验性的原形)。这种迭代方法还能够使需求被细化和成熟化,并能够被更好地理解。
软件系统大多数关键的功能以场景(或用例)的形式被捕获。这里的“关键”是指系统最重要的功能(或系统存在的理由),或使用频率最高的功能,或其应用减轻了一些重要的技术风险。基于场景驱动的迭代式设计过程如下。
(1)开始阶段。基于风险和重要性为某次迭代选择一些场景。场景可能被归纳为对若干用户需求的抽象;对场景进行“描述”,以识别主要的抽象(类、机制、过程和子系统);将所发现的架构元素分布到4个视图中;然后实施、测试和评估该架构。这个过程中可能检测到一些缺点或潜在的增强要求。
(2)循环阶段。重新评估风险,选择能减轻风险或提高结构覆盖的额外的少量场景,然后试着在原先的架构中描述这些场景,发现额外的架构元素,或找出适应这些场景所需的重要架构变更,更新4个主要视图;根据变更修订现有的场景;升级实现工具(架构原型)以支持新的、扩展的场景集合。
(3)测试。如果有可能(例如,在已有的可重用的组件下快速实现系统),则在实际的目标环境和负载下进行测试。
(4)评审。评审软件架构的5个视图,检测架构在简洁性、可重用性和通用性方面可能存在的潜在问题。
(5)更新设计准则和基本原理。
(6)捕获经验教训。
对于实际的系统,初始的架构原型需要不断进行演化。一般的情况是在经过2次或3次迭代,当找到了主要的抽象时,子系统和过程都已经完成并且已经实现所有的接口,系统架构可认为趋向于稳定。
可能这些迭代过程的持续时间参差不齐,其原因在于:所实施项目的规模,参与项目人员的数量,对本领域和方法的熟悉程度,以及该系统和开发组织的熟悉程度等。因而较小的项目迭代过程可能持续2~3周,而大中型的项目可能为6~9个月。
【答案解析】
问答题 [问题2]
下图是对该IC卡加油机应用系统的基本流路径和备选流路径的描述,请用试题描述中的相应字母(见表1和表2),将图中(1)~(6)空缺处的内容填写完整。
[*]
【正确答案】这是一道要求读者掌握场景法的基本流和备选流路径描述的应用分析题。本题的解答思路如下。
(1)经过用例的每条不同路径都反映了基本流和备选流,都用箭头来表示。基本流用粗直黑线来表示,是经过用例的最简单的路径。上图中粗直黑线就是对该IC卡加油机应用系统基本流路径的描述。
(2)再根据表1中A1~A6各个基本流的描述和描述顺序,以及图中已给出的基本流A1、A2、A3、A6的路径位置可知,图中(3)空缺处填写的内容应为“A4(输入购油量)”,(4)空缺处填写的内容应为“A5(加油)”。
(3)备选流用不同的彩色曲线表示,一个备选流可能从基本流开始,在某个特定条件下执行,然后重新加入基本流中;也可能起源于另一个备选流,或者终止用例而不再重新加入某个流。
(4)根据表2中备选流B的描述“在基本流A2过程中,该卡不能够识别或是非本机可以使用的IC卡,加油机退卡,并退出基本流”可知,备选流B的路径起源于基本流A2,终点是基本流A6(退还加油卡)。因此图中(1)空缺处填写的内容应为“B(加油卡无效)”。
(5)同理,根据表2中备选流C的关键描述“在基本流A3过程中,判断该卡账户属于黑名单,加油机吞卡,并退出基本流”可知,备选流C的路径起源于基本流A3,终点是基本流A6(退还加油卡)。因此图中(2)空缺处填写的内容应为“C(卡账户属于黑名单)”。
(6)备选流D(加油卡账面现金不足)的描述“系统判断加油卡内现金不足,重新加入基本流A4,或选择退卡”中,“系统判断加油卡内的现金不足”是指当客户输入需要购买的汽油数量时,该IC卡加油机应用系统将准备购买的汽油数量乘以单位油价得到需支付的费用,并将此费用与客户加油卡内现金进行比较后的一种可能结果。因此备选流D的路径起源于基本流A4(输入购油量)之后,基本流A5(加油)之前。由备选流D的描述“重新加入基本流A4,或选择退卡”可知,备选流D的路径终点可能是基本流A4,以便重新进行购油量的输入;也可能是基本流A6(退还加油卡)。因此需将“D(加油卡账面现金不足)”的内容同时填入图中(5)、(6)空缺处。
【答案解析】
问答题 [问题3]
场景中的每一个场景都需要确定测试用例,一般采用矩阵或决策表来确定和管理测试用例。表5-19是一种通用格式,表中各行代表各个测试用例,而各列代表测试用例的信息。本例中的测试用例包含测试用例ID号、场景(或说明/条件)、测试用例中涉及的所有数据元素(作为输入或已经存在于数据库中),以及预期结果等项目。
测试用例的设计步骤通常是,首先确定执行用例场景所需的数据元素(本例中包括账号、是否黑名单卡、输入油量、账面金额和加油机油量),然后构建矩阵,最后确定包含执行场景所需的适当条件的测试用例。在表3的测试矩阵中,V表示有效数据元素,I表示无效数据元素,n/a表示不适用,例如CW01表示“成功加油”基本流。请按上述规定为其他的应用场景设计测试用例矩阵。
表3 测试用例表
测试用例ID号 场 景 账 号 是否黑名单卡 输入油量 账面金额 加油机油量 预期结果
CW01 场景1:成功加油 V I V V V 成功加油
CW02
CW03
CW04
CW05
【正确答案】这是一道要求读者掌握在场景法中设计测试用例的综合分析题。本题的分析思路如下。
(1)根据题干的描述可知,本案例中存在着以下5种场景。
场景1:基本流A。
场景2:基本流A、备选流B。
场景3:基本流A、备选流C。
场景4:基本流A、备选流D。
场景5:基本流A、备选流E。
(2)测试用例表(表3)已给出了场景1的测试用例,对于其他4行所填写的内容可以通过参照场景1的测试用例的解答思路进行。
(3)本案例中与场景2(AB)相关的描述如下。
A2,验证加油卡:加油机从加油卡的磁条中读取账户代码,并检查它是否属于可以接收的加油卡。
B,加油卡无效:在基本流A2过程中,该卡不能够识别,或是非本机可以使用的Ic卡,加油机退卡,并退出基本流。
由“备选流B(加油卡无效)”的描述中提取出场景2(AB)的名称——“卡无效”,输入值是“账号无效”,预期结果是“退卡”。
(4)本案例中与场景3(AC)相关的描述如下。
A2,验证加油卡:加油机从加油卡的磁条中读取账户代码,并检查它是否属于可以接收的加油卡。
A3,验证黑名单:加油机验证卡账户是否存在于黑名单中,如属于黑名单,则加油机吞卡。
C,卡账户属于黑名单:在基本流A3过程中,判断该卡账户属于黑名单,例如,已经挂失,加油机吞卡并退出基本流。
由“备选流C(卡账户属于黑名单)”的描述提取出场景3(AC)的名称——“黑名单卡”,输入值是
“账号有效”和“黑名单卡”,预期结果是“吞卡”。
(5)基本流A1~A4、备选流D的相关描述与本案例中场景4(AD)有关。由“备选流D(加油卡账面现金不足)”的描述提取出场景4(AD)的名称——“金额不足”,其输入值为“账号有效”、“非黑名单卡”、“输入购油量有效”、“加油机油量有效”和“账面金额无效”,预期结果是“提示错误,或重新输入购油量,或退卡”。
(6)基本流A1~A4、备选流E的相关描述与本案例中场景5(AE)有关。由“备选流E(加油机油量不足)”的描述提取出场景5(AE)的名称——“油量不足”,其输入值为“账号有效”、“非黑名单卡”、“输入购油量有效”、“账面金额有效”和“加油机油量无效”,预期结果是“提示错误,或重新输入购油量,或退卡”。
(7)将以上分析结果按照试题中的规定——“V表示有效数据元素,I表示无效数据元素,n/a表示不适用”,归纳整理成如表4所示的测试用例表。
表4 完整的测试用例表
测试用例ID号 场景 账 号 是否黑名单卡 输入油量 账面金额 加油机油量 预期结果
CW01 场景1:
成功加油
V I V V V 成功加油
CW02 场景2:
卡无效
I n/a n/a n/a n/a 退卡
CW03 场景3:
黑名单卡
V V n/a n/a n/a 吞卡
CW04 场景4:
金额不足
V I V I V 提示错误,或
重新输入购油
量,或退卡
CW05 场景5:
油量不足
V I V V I
【答案解析】