净室软件工程(Cleanroom Software Engineering)
目录 |
净室软件工程是一种应用数学与统计学理论以经济的方式生产高质量软件的工程技术。力图通过严格的工程化的软件过程达到开发中的零缺陷或接近零缺陷HJ。“净室”一词源自半导体工业中硬件生产车间,通过严格、洁净的生产过程预防了缺陷的产生,而不是在事后再去排除故障。借用这个词,充分显示了净室技术“防患于未然”的主导思想。[1]
净室软件工程有两个主要目标:软件开发的工程化和软件失效控制。
1.软件开发的工程化
在传统的软件开发模式下无法对软件开发的过程进行有效的控制和管理,所有的工作处于一种无序状态,程序经常需要返工,开发效率低下,无法保证软件的预期产出,尤其在大型的软件生产中更为突出。这些问题的解决均需要有一套系统的适合于软件生产的工程方法来保证。而净室软件工程的目标之一就是实现软件开发的工程化,通过工程化的软件开发过程,有效的控制软件开发中的任何一个步骤,从而实现可预期的软件产出。
2.软件失效控制
怎样控制软件的失效,减少程序的返工是软件工程中的重要主题。净室软件工程的目标即是改变以往在软件开发后期来改正失效的做法,通过增量开发、严格的开发规范及设计和基于统计学的可靠性测量来达到软件零失效的目标。
经过IBM,NASA等机构在实践中使用净室技术开发的产品,显示出了卓越的质量水平及用户使用可靠性,使得净室方法得到了初步认可。
净室技术是一种开发高质量和高可靠性软件的方法,由三大关键技术来刻画:统计过程控制下的增量开发,基于函数的规范、设计和验证,以及统计测试和认证。
1.增量式开发过程
统计质量控制下的增量式开发是软件项目建立和保持管理控制的净室途径。增量式开发有助于早期的和连续的质量评估、用户反馈并方便开发进度的过程改进,避免了在开发周期中期部件集成后风险的继承,而且增量式开发允许在开发周期整修过程中根据需求变化进行系统协调。
增量式开发的技术基础是引用透明性特征。在软件开发的前后,这种特征要求规范及其实现定义同样的数学函数。当拥有了这种特征时,设计就能显示出与其规范的一致性。大的软件系统由各个部分组成。系统各个部分组成的方式对项目的成功有重要的影响。增量式自顶向下的开发途径表现为软件系统的已开发和已测试部分作为功能累积子集的序列。在最早增量中开发了一个小系统,然后把功能添加到每一个后续增量中直到系统完成。这种软件系统增长方式有利于客户、管理者,同样有利于技术人员。
已在净室中实践的增量式开发为统计过程控制提供了基础。每一个净室增量都是过程的一个完整周期,包含规范、开发和新的用户函数的验证,以及到目前为止所有已完成的测试。作为统计过程控制的典型,把过程的每一次的性能度量与性能目标相比较,以决定过程是否一直在控制之下。
净室软件小组通常使用在测试中的开发性能度量作为过程控制的标准。通常使用的度量包括每千行代码的错误数、失效的间隔时间(MTTF)、可靠性及可信性。其它过程控制方法或许依赖于所管理的事务,而不是产品的质量。进度一致性、预算一致性、整体计划的一致性等,都是按增量的实际性能与目标性能相比较而言。净室增量度量依据的标准描述了过程控制的具体级别。如果标准不符合,开发小组能从增量中检测执行数据,确定问题所在,必要时调整项目计划,修改软件开发过程,避免此类问题的再次发生。例如,如果增量的测试提示过程失去控制(如质量标准不符合),开发者们应停止测试,返回设计阶段;如果过程是在控制之下,下一步增量工作才能继续。
2.盒式规范与设计
盒子结构是在规范和设计中对现实系统的外在基本属性的功能描述。净室软件工程中描绘了三种盒子:黑盒、状态盒、明盒。这些盒子不仅展示了外部行为,而且还提高了内部可见度。黑盒确定了一个系统或系统组件的外部行为。状态盒指定了完成外部行为所需的状态数据。明盒则进一步把状态盒具体化,它确定了完成状态盒行为的过程设计。它可使用已有的黑盒或引人新的黑盒,这些黑盒将在以后细化,每步细化是根据前一步进行验证的。这样盒子结构将系统开发的行为、数据和过程三个方面的规范分离开,但又把它们连成一个细化和验证的内聚过程。盒子结构是基于对象的,并支持软件工程的关键原则:信息隐藏和实现分离。
3.净室软件认证和测试
净室软件测试和认证方法是基于模型的统计测试在软件上的一种应用。统计测试时,需要建立软件运行时的使用模型,测试用例由该使用模型随机产生。然后,按照数学和统计学模型对结果进行分析,获取软件的质量度量,并判断测试的充分性。传统的结构化测试方法是净室统计使用测试方法的一种补充,因此,不必放弃该方法。不过,大量实践表明,基于使用模型的测试更经济有效,并且能获得实用软件的高可靠性。软件系统基于使用模型的统计测试提供了软件产品和过程质量的度量标准,它将用于软件的整个生命期的管理和决策。由于使用模型是基于规范而不是基于代码的,因此,源于模型构筑的洞察可用于产生在工程的早期阶段避免出现问题的有价值的管理决策。
就统计测试而言,软件测试被看作是一个统计学方法的问题。先产生软件所有可能使用的一个子集,并以这个子集所表现的性能作为依据来考虑整体使用性能。换句话说,就是通过样本来描述总体。作为一个出发点,这种类比的前提是:不可能对软件的所有可能应用都进行测试。软件使用的过程被认为是一个随机过程。一个Markov过程就是一个具有Markov性质的随机过程,其中,序列中的下一个事件只依赖于当前而与过去无关。Markov理论已经用于软件使用模型的分析和开发之中,相关的数学方法也已被运用到模型优化之中。软件的使用模型可用有穷状态、离散参数的Markov链表示。Markov链的标准分析结果将有助于分析长期运行使用的情况。给定一个使用模型的约束系统,通过数学方法可以得到满足一定目标条件的最优化模型。形式化思想在净室软件认证中的应用,为当前的实践和技术进步提供了坚实的理论基础。