接前一篇文章:软考 系统架构设计师系列知识点之净室软件工程(1)
所属章节:
第5章. 软件工程基础知识
第5节. 净室软件工程
3. 技术手段
净室软件工程中应用的技术手段 主要有以下4种。
(1)统计过程控制下的增量式开发(Incremental Development)
增量开发基于产品开发中受控迭代的工程原理------控制迭代。增量开发不是把整个开发过程作为一个整体,而是将其划分为一系列较小的累积增量,小组成员在任何时可只须把注意力集中于工作的一部分,而无须一次考虑所有的事情。
(2)基于函数的规范与设计
盒子结构方法按照函数理论定义了3种抽象层次 :行为视图 、有限状态机视图 和过程视图 。规范从一个外部行为视图(称为黑盒) 开始,然后被转化为一个状态机视图(称为状态盒) ,最后由一个过程视图(明盒) 来实现。盒子结构是基于对象的,并支持软件工程的关键原则:信息隐藏和实现分离。
(3)正确性验证
正确性验证被认为是CSE(Cleanroom Software Engineering)的核心,正是由于采用了这一技术,净室项目的软件质量才有了极大的提高。
(4)统计测试(Statistically Based Testing)和软件认证
净室测试方法采用统计学的基本原理,即当总体太大时必须采用抽样的方法。首先确定一个使用模型(Usage Model)来代表系统所有可能使用的(一般是无限的)总体。然后由使用模型产生测试用例。因为测试用例是总体的一个随机样本,所以可得到系统预期操作性能的有效统计推导。
净室软件工程是软件开发方法的一种形式化方法 ,它可以生成质量非常高的软件。它使用盒子结构规约进行分析与设计建模,并且强调将正确性验证(而不是测试)作为发现和消除错误的主要机制。
4. 应用与缺点
第一项净室软件项目由IBM的Richard Linger于20世纪80年代中期负责实施。COBOL结构化设施项目开发出一项商业软件再工程产品,该产品显示出了卓越的质量水平,净室方法得到了初步确认。
20世纪90年代初,IBM生产出运用净室方法开发的海量存储控制单元适配器,售出了数千单元,直至1997年产品超过使用寿命后,仍未收到任何反映显存故障的报告。
从20世纪80年代末到90年代初,美国国家宇航局(NASA)哥达地飞行控制中心(GSFC)软件工程实验室(SEL)进行了一系列净室试验。这些试验被认为是迄今为止软件工程领域进行的一次最完整的研究。4个规模依次扩大的地面控制软件系统按净室工程方法开发出来,结果表明,与NASA GSFC的质量和生产力有一致的提高。
20世纪90年代初,美国陆军执行了一个净室项目,并在这个项目中获得了20倍于引进净室技术所用的投资回报。1996年美国国防部软件数据与分析中心在其所做的软件方法比较分析中,报告净室具有真实的价值和质量优势。其它留有软件生成和质量方面历史数据的机构也用净室进行了大型项目的研发,它们公开发表了其结果。净室实践明显改进了IBM、Ericsson、NASA、DOD及许多其它机构的软件项目产出。
但是,净室软件工程在使用的过程中,也显示出了一些缺点。
1)CSE太理论化,需要更多的数学知识。其正确性验证的步骤比较困难且比较耗时。CSE要求采用增量式开发、盒子结构、统计测试方法,普通工程师必须经过加强训练才能掌握,开发软件的成本比较高昂。
2)CSE开发小组不进行传统的模块测试,这是不现实的。工程师可能对编程语言和开发环境还不熟悉,而且编译器或操作系统的bug也可能导致未预期的错误。
3)CSE毕竟脱胎于传统软件工程,不可避免地带有传统软件工程的一些弊端。