文章目录
- 1. 概述
 - 2. 理论基础
 - 2.1 函数理论
 - 2.2 抽样理论
 
- 3. 技术手段
 - 3.1 增量式开发
 - 3.2 基于函数的规范与设计
 - 3.3 正确性验证
 - 3.4 统计测试 (Statistically Based Testing) 和软件认证
 
- 4. 应用与缺点
 - 1)太理论化
 - 2)缺少传统模块测试
 - 3)带有传统软件工程的弊端
 
1. 概述
- 净室软件工程(Cleanroom Software Engineering):力图通过严格的工程化的软件过程达到开发中的零缺陷或接近零缺陷
 - 过程:要求在规约和设计中消除错误,然后以“净”的方式制作 
  
它的过程模型是在代码增量积聚到系统的过程的同时,进行代码增量的统计质量验证。它甚至提倡开发者不需要进行单元测试,而是进行正确性验证和统计质量控制。
 - 作用:降低软件开发中的风险,以合理的成本开发出高质量的软件
 
2. 理论基础
净室软件工程的理论基础主要是函数理论和抽样理论。
2.1 函数理论
- 概述: 
  
- 函数:函数定义了从定义域到值域的映射
 - 程序:一个特定的程序定义了一个从定义域(所有可能的输入序列的集合)到值域(所有对应于输入的输出集合)的映射。
 - 因此,一个程序的规范就是一个函数的规范
 
 - 函数应当具备的特性 
  
- 完备性: 
    
- 对函数:定义域中的每个元素,值域中至少有一个元素与之对应
 - 对程序:每种可能的输入都必须定义,并有一个输出与之对应。
 
 - 一致性 
    
- 对函数:在值域中最多有一个元素与定义域中的同一元素对应
 - 对程序:每个输入只能对应一个输出
 
 - 正确性: 
    
- 函数:的正确性可以由上述性质判断
 - 对程序:由通过基于函数理论的推理来验证
 
 
 - 完备性: 
    
 
2.2 抽样理论
- 不可能对软件的所有可能应用都进行测试
 - 把软件的所有可能的使用情况看作总体,通过统计学手段对其进行抽样,并对样本进行测试
 - 根据测试结果分析软件的性能和可靠性
 
3. 技术手段
净室软件工程中应用的技术手段主要有以下4种
3.1 增量式开发
- 统计过程控制下的增量式开发 (Incremental Development )
 - 基于产品开发中受控迭代的工程原理——控制迭代
 - 概述: 
  
- 增量开发把开发过程划分为一系列较小的累积增量
 - 小组成员在任何时刻只须把注意力集中于工作的一部分
 
 
3.2 基于函数的规范与设计
- 3种抽象层次 
  
- 行为视图(黑盒)
 - 状态机视图(状态盒)
 - 过程视图(明盒)
 
 - 过程: 
  
- 从一个外部行为视图开始
 - 被转化为一个状态机视图(
 - 最后由一个过程视图来实现
 
 - 盒子结构是基于对象的
 
支持软件工程的关键原则:信息隐藏和实现分离。
3.3 正确性验证
正确性验证被认为是CSE的核心,正是由于采用了这一技术,净室项目的软件质量才有了极大的提高。
3.4 统计测试 (Statistically Based Testing) 和软件认证
净室测试方法采用统计学的基本原理,即当总体太大时必须采取抽样的方法。首先确定一
 个使用模型 (Usage Model) 来代表系统所有可能使用的(一般是无限的)总体。然后由使用模
 型产生测试用例。因为测试用例是总体的一个随机样本,所以可得到系统预期操作性能的有效
 统计推导。
 净室软件工程是软件开发的一种形式化方法,它可以生成质量非常高的软件。它使用盒子
 结构规约进行分析和设计建模,并且强调将正确性验证(而不是测试)作为发现和消除错误的
 主要机制。
4. 应用与缺点
1)太理论化
- 需要更多的数学知识
 - 正确性验证的步骤困难、耗时
 - 开发成本较高
 
CSE要求采用增量式开发、盒子结构、统计测试方法,普通工程师必须经过加强训练才能掌握,开发软件的成本比较高昂。
2)缺少传统模块测试
CSE 开发小组不进行传统的模块测试,这是不现实的。工程师可能对编程语言和开发环境还不熟悉,而且编译器或操作系统的bug也可能导致未预期的错误。
3)带有传统软件工程的弊端
CSE毕竟脱胎于传统软件工程,不可避免地带有传统软件工程的一些弊端。


















![[计算机网络]--MAC/ARP/DNS协议](https://img-blog.csdnimg.cn/direct/35bef6573ffb4170930f59f268ef379c.png)

