文章目錄
- 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畢竟脫胎于傳統軟件工程,不可避免地帶有傳統軟件工程的一些弊端。