基于序列的规范过程
未经允许,严禁转载本栏目内容
本文经许可转载自软件工程专家网www.21cmm.com,
未经CSDN许可,请勿随便转载,谢谢合作[url=http://www.21cmm.com/prelogin.asp?page=/bbs/index.asp?Type=D][/url]
规范制定有很多方法。基于顺序的规范是指逐步构造出完备、一致和正确的黑盒和状态盒规范的过程。本节讨论的就是这种方法。
在基于序列的规范过程中,按严格顺序系统地举出所有可能的激励(历史激励)序列,如按长度0、1、2……排列。因为每个序列映射至其正确的响应,所以可通过应用归约规则辨识等价序列,当完备和一致地定义了系统以后枚举过程结束。
基于Mills(1975)、Pamas(1992)、Mao(1993)Drowell(1996)和 Poore(Prowell和Poore,1998)的工作,基于序列的规范产生了明显的问题,软件使用的各种情况的组合产生的用例个数是天文数字。通过序列枚举,开发人员考虑系统激励的所有排列和组合。每种序列代表一种使用场景。在逐步枚举过程中,要区别可能的场景和不可能的场景,计划中的使用和错误的使用,可规约的序列和不可规约的序列。这些不可规约的序列(称为典型序列)是软件行为的精确规范的基础,这种精确是指数学意义上的完备性、一致性和可追踪正确性。
序列书面枚举提供了完备性的直接验证。能按序列的从小到大的长度(1,2,3……)逐一验证激励的所有组合和排列是否已映射到一个响应。
序列顺序枚举保证了任何所给使用场景只出现一次。和完备性一样,一致性也是枚举的直接的推论。
基于序列的规范的每一元素都可追溯到最初的需求。如果一个序列的正确响应在需求中找不到,那么必须澄清所期望的行为并修改需求。
基于序列的规范工作流程以连续方式对掌握需求分析、黑盒规范、状态盒规范方面提供了自动支持的可能性。其步骤在下面的小节中作简要说明。
黑盒定义
加上标签的需求。将需求加上标签序号用于验证后续工作产品的每一要素的正确性。有条理的顺序枚举过程可暴露出需求的含糊不清或遗漏的地方。在基于序列的规范中得到清晰的需求是很自然的事。
定义系统边界。系统边界决定了组件是在系统的内部还是外部。处于系统外部的实体是激励来源和响应的目的地。激
励和响应的标识始于最基本层次。进一步考虑(可能包括初期枚举)后常用抽象这种方法来简化枚举进程。
抽象用于隐藏易于明白的细节。以反映问题的自然划分或将一个较大的元素集归约为较小的元素集。必须有一个好的定义将大集合中的元素映射到小集合中的元素。激励集(或响应集)可能由不同的粒度混合而成(有基本的,有抽象的)。不管是什么粒度层次,激励集(或响应集)必须是互斥的。
顺序枚举。将所有序列的排列组合按长度顺序列举。对每个序列进行检查时,完成如下评价工作:
1. 不可能的序列(如在系统启动之前的激励)标上"非法"。任何非法序列的扩展仍是非法的,所以标有"非法"的序列在列举时不再扩展。
2. 对应于需求,对每个序列的正确响应要记录归档。如果没有需求与之对应,要记下一个导出需求。导出需求代表假设或解释,所以必须和原来的需求一起进行确认。
3. 如果两个序列对未来激励的响应是一样的,则称它们是等价的。既然两个等价序列的扩展对应同样的行为,就没有必要都扩展,只需将较短的进行扩展。
当一个给定长度的所有序列或者非法或者和先前的序列等价时,就停止枚举。
完全的枚举表示数学上完备的、一致的和可验证正确的黑盒规范。因为每一个序列映射到一个响应,所以规范是完备的;因为每个序列只对应一个响应,所以规范是一致的。由领域专家去验证其正确性,每序列对应的行为追溯到需求正好是所需的行为,则验证了正确性。
典型序列分析。枚举中的合法的不与任何先前序列等价的序列,称为典型序列。典型序列代表了系统使用的独一无二的情况,对于给定抽象层次的黑盒子,对典型序列的分析将产生系统的状态空间。
在典型序列分析中,用变量来封装每一激励序列的条件。这些变量可视为系统的状态数据。对相关变量的典型序列进行检查可得到每个变量的范围。对每一典型序列,变量值的组合是惟一的。这使得在分析完成时典型序列都是不相交的。
状态盒定义
黑盒规范中每一序列可看作是个元组(当前的激励、以前的激励)。黑盒中位于每个序列上的以前的激励事实上是典型序列。基于这一点,制定系统的状态盒子规范只是一个装配的事。可将每个合法的黑盒映射(序列→响应)替换成状态盒映射(当前激励、状态→响应、状态更新)。状态盒可以自动从黑盒生成,如果借助认证工具生成,则无需再验证。
状态盒的最后形式是一系列映射表的集合,每个激励对应一个映射表。映射表的格式如下图所示。
状态盒规范是规范的最后产品。在从状态盒细化到明盒子的过程中将继续用到净室盒子结构规范和设计方法。在明盒中将进行完整的过程设计。