1987年,美国学者H.D.米尔斯(Harlan D.Mills)、M.戴尔(Michael Dyer)和R.C.林格(Richard C.Linger)正式提出了净室软件工程。“净室”一词源自半导体工业中硬件生产车间,通过严格、洁净的生产过程预防了缺陷的产生,而不是在事后再去排除故障。将“净室”引入软件工程,旨在通过防止错误的引入来保证软件的质量。是一种应用数学和统计学方法以经济有效的方式开发高质量软件的工程技术。
净室软件工程采用增量式软件过程,依靠基于函数理论的形式化开发方法和基于统计学的测试方法,及早发现并消除缺陷,减少在开发后期修复开发前期的缺陷而带来的巨大支出,从而提高软件生产率并获得高可靠软件。净室软件开发过程模型见图。其中涉及的关键技术为:①增量式软件开发过程。统计质量控制下的增量式开发是净室软件项目管理的途径。它把净室项目分成一个有序的开发周期序列,每个周期完成一部分用户功能。在每个增量开发结束时,交付可运行演示的软件版本,并采用统计过程控制技术度量和评估软件的质量。增量式开发有助于早期的和连续的质量评估、用户反馈、过程改进、需求变更控制,降低项目的风险。②盒式规约与设计。净室软件工程采用盒结构来定义软件需求规约,一个“盒”在某个细节层次上封装了系统或系统的某些方面。从一个外部视图(黑盒)开始,然后被转化成一个状态机视图(状态盒),最后由一个过程(明盒)来实现。③正确性验证。每一种盒结构在小组开发评审时都要经过正确性验证。小组采用基于函数理论的推理来验证每一细化步骤相对于前一步骤的正确性。例如,在明盒的验证中,函数理论的正确性定理为正确程序定义了必须满足的条件。④统计测试与软件认证。采用统计学进行软件测试和认证。首先建立软件运行时的使用模型,由该使用模型随机产生测试用例。然后测试团队执行这些测试用例,对照软件的规约来验证软件的行为。最后,按照统计学模型对测试结果进行分析,判断测试的充分性,并计算出平均失效时间(mean time to failure; MTTF),进行软件可靠性的认证。
自20世纪80年代,净室软件工程在美国国际商业机器公司(IBM)、美国宇航局、美国国防部、爱立信、parx等许多机构中得到实践,在提高生产率和降低缺陷率方面都取得了良好的成果。但由于存在学习与开发成本高、过程重载等问题,阻碍了它的推广。