?? 190.txt
字號:
日月光華 -- SE精華區文章閱讀
--------------------------------------------------------------------------------
發信人: jiachong (甲蟲), 信區: SE
標 題: [轉載]7.凈室軟件工程介紹 jiachong
發信站: 日月光華 (2003年04月09日12:48:22 星期三), 站內信件
【 以下文字轉載自 SE 討論區 】
【 原文由 jiachong 所發表 】
--bluefield整理
凈室軟件工程介紹
一、 凈室方法概述
1. 凈室概念
凈室(cleanroom)軟件工程室一種應用數學和統計學以經濟的方式生產高質量軟件的工
程技術。“凈室”這個詞來源于半導體工業的生產硬件的凈室。在硬件生產過程中,嚴
格的工程過程預防了缺陷的產生,而不是事后再去排除故障。凈室技術的重點在于通過
設計和測試中的質量認證來保證軟件開發的正確性。凈室方法植根于科學,它的應用可
提高軟件生產效率并獲得軟件運行可靠性,從而成為一個工程過程。凈室軟件工程有兩
個重要目標:一是開發過程的可管理性,二是使用時無失效。
2. 凈室基礎
(1) 函數理論
凈室開發方法基于數學中的函數理論。一個程序的規范就是一個函數的規范,描述了一
個程序的定義域(或輸入序列)到值域(或輸出空間)的映射。一個定義明確(well-d
efined)的函數有如下特性:完備性、一致性和正確性。
(2) 統計理論
凈室測試方法基于統計學。在軟件測試中,用于采樣的全體(population)是所有可能
使用情況的集合。其中集合中的每個元素代表系統的一種可能運行情況。統計的目的是
度量系統正確運行一個樣本的能力。因為總體是無限的,完全的測試是不可能的,所以
必須利用統計學方法來對系統性能做一個有效的推理。在凈室軟件工程中,統計測試既
可用于產品檢測,也可用于過程檢測。
(3) 凈室小組的工作
凈室是面向小組的方法。凈室開發小組完成三項主要工作:制定系統規范、開發和認證
。評審是凈室小組的一項重要工作。每個產品從最初的概念到最后形成都要經歷多次評
審。有兩種評審。一種稱為開發評審,開發評審的焦點集中于技術策略、好的想法以及
小組培訓和交流。所走工作產品的簡化是小組評審的顯著目標之一。最初的思路幾乎從
來都不是最好的,所以評審的一個關鍵目標是在規范、設計和驗證方面找到更好的思路
。第二種評審稱為驗證評審。這種評審通過形式化方法來驗證工作產品的正確性和完備
性,這些驗證通常這樣進行,設計者以口頭方式注意列舉其滿足基于函數的正確性條件
的理由。小組順序檢查每個條件,不允許有存在異議的情況。任何修改必須經過后續評
審的重新驗證。一個工作產品經過驗證評審而不再有更改的必要就被認為是正確和完備
的。
3. 凈室技術
凈室軟件工程可用如下三個關鍵技術來刻畫:
(1) 置于統計過程控制之下的增量開發
增量開發基于產品開發中受控迭代的工程原理—控制迭代。增量開發不是把整個開發過
程作為一個整體,而是將其劃分為一系列較小的、積累的增量。每個增量都時積累的,
也就是所有以前的增量加上新的工作而不斷積累。增量開發是開發小組保持對項目智能
控制的基礎。因為小組成員在任何時刻只需把注意立即終于工作的一部分,而不是一次
考慮所有的事情。
增量開發把一個凈室項目分成一個有序的開發周期序列。在每個周期完成一些用戶功能
。在每個增量開發完成時,產品的功能便可向客戶演示。這樣客戶對產品有真實的改觀
認識,他們可不受約束重新確認需求或時需求更加清晰。這將使產品在完成時雙方的不
滿程度降到最低。
(2) 基于函數的規范、設計和驗證
凈室采用的方法不僅有堅實的理論基礎,而且可操作性也很好。規范從一個外部視圖(
稱之為黑盒)開始,然后被轉化成一個狀態機視圖(稱之為狀態盒),最后由一個過程
(明盒)來實現。這些形式上不同、行為上等價的視圖統稱為盒子結構。盒子結構是基
于對象的,并支持軟件工程的關鍵原則:信息隱藏和實現分離。
(3) 統計測試和軟件認證
凈室測試方法采用統計學的基本原理,既當總體太大時必須采取抽樣的方法。首先確定
一個使用模型來代表系統所有可能使用的(一般是無限的)總體。然后由使用模型產生
測試用例。因為測使用歷史用體的一個隨機樣本,所以可得到系統預期操作性能的有效
的統計推導。使用模型是指系統使用中所有可能的情形及其發生的概率。使用模型可有
許多形式(包括馬爾可夫模型盒形式化的語法)來表示。在馬爾可夫模型中,使用模型
是一個狀態機組成,狀態之間由轉移弧線連接,轉移弧線指系統測試時可能的激勵,并
有一個概率值與之對應。概率指從給定狀態進行特定轉移的可能性大小。從起始狀態穿
過模型到終點狀態變得到了一個測試用例。
使用模型是可重用的資源,它能產生任意數目的側使用例。實際上,測試一個系統可采
用多種使用模型,對每種使用模型可采用多種概率分布。例如,許多系統提供一些很少
使用的功能,但這些功能處理失誤的后果很嚴重,如在核電廠關閉反應堆。這種功能在
一般的使用模型中的執行概率是很小的。當集中測試這種能產生重大后果的功能時,需
要采用嚴格安全使用模型、冒險使用模型、惡意使用模型或其他特定環境使用模型。
這些技術可分開使用,也可以一起使用。采用這些技術可改進軟件生產過程。
4. 凈室過程
凈室參考模型(CRM)為凈室項目運行定義了一套完整的過程和工作產品。CRM由14個分
別對應于軟件管理、規范、開發和認證的獨立過程組成:
l 管理過程包括項目計劃、項目管理、性能改進以及工程變更。
l 規范過程包括需求分析、功能規范、使用規范、結構規范和增量計劃。
l 開發過程包括軟件再工程、增量設計和正確性驗證。
l 認證過程包括使用建模、測試計劃、統計測試和認證。]
二、 增量式開發的凈室管理
統計質量控制之下的增量式開發是軟件項目建立和保持管理控制的凈室途徑。在使用凈
室方法時,軟件產品是以一系列功能增量的形式開發的,這些增量合起來就形成了最終
的產品。最穩定的需求被首先實現。這些增量的集成是自頂向下來進行的。
1. 增量式開發的優點
(1) 進展的可見性
例用增量式開發,每一步增量實現了一個或多個最終用戶功能。每一步增量包含所有早
期的已開發的功能集機上一些新的功能;系統再逐步積累的增量中增長。例如,在早期
增量結束時,開發者可以很有信心的說:系統的20%已100%完成了,而不是推測系統已完
成了20%。
(2) 智能控制
增量時開發通過引用透明性,實現了整個系統開發過程中的智能控制。當擁有引用透明
性時,一個系統的部件無需回溯就能根據其子規范得以實現。無需重做前期增量。這種
策略有利于在一個完整系統中對每個增量進行正確性驗證。
(3) 增量系統集成
凈室增量式開發允許在整個開發生命期引用透明的用戶函數增量的連續集成。因為每一
步增量設計基于一個已驗證的子規范和前期增量已測試的接口,因此,幾乎沒有更深的
設計和接口錯誤。較好的定義增量貫穿于整個系統開發過程,系統在良好定義的增量忠
言化。測試和驗證工作始于開發周期早期。
(4) 連續質量反饋貫穿統計過程控制
已在凈室中實踐的增量式開發為統計過程控制提供了基礎。每一個凈室增量都是過程的
一個完整周期,包含規范、開發和新的用戶函數的驗證,加上到目前為止所有已完成工
作的測試。作為統計過程控制的典型,把過程的每一次反復的性能度量與性能目標相比
較,以決定是否過程一直在控制之下(即是否正如所期望的那樣發生)。
(5) 用戶使用中不斷的功能反饋
增量式開發有助于用戶對一個進化系統的執行功能做出盡早的不斷的反饋,必要時允許
改變。因為增量執行于系統環境并代表了用戶功能的子集,早期的增量能通過用戶對系
統功能性和實用性的檢測來反饋。這種反饋有助于避免開發出實效的系統和建立用戶可
接受的最終產品。
(6) 變更的適應性
在系統需求和性努環境中增量室開發允許不可避免變更的系統適應性。在每一步增量完
成時,系統需求的積累變更所產生的影響能根據當前規范和增量設計來評估。如果變更
于將來增量相互獨立,則通常與現已存在的增量開發計劃相合并,并對進度和資源進行
可能的調整。如果變更影響已完成的增量,自頂向下修改系統開發,通常重用絕大多數
已存在的增量代碼(通常是全部),按照要求的進度和資源來進行相應調整。
(7) 進度與資源管理
項目資源在增量式開發全過程中能在可控制的方式下分配。可用進度是決定待開發的增
量數量和其規模的一個因素。在短進度中,小規模增量將有助于在增量交付與認證組織
間維持充分的時間段,允許一個有序的測試過程。然而,這將給項目開發小組設計和實
現更大、更復雜的增量帶來更多負擔。進度和復雜性的折衷能夠反映增量式開發計劃。
另外,從后續增量得到的反饋,為過程和產品性能的目標度量提供了管理,以允許在開
發和測試中對不足和意外收獲的適應。
2.增量式開發的理論基礎
凈室過程中的增量是開發技術是基于引用透明性原理的。引用透明性意味著一個表達式
所關心的唯一的事情是它的值,能用其值相等的子表達式代替。軟件增量式開發的基礎
在于為程序制定數學函數規則。這種觀點認為程序開發作為一種自頂向下的控制結構或
子函數(子規范)的函數改進過程,這種改進將導致基于對象或函數分解,或者是二者
的結合。因為引用透明性,任何精化步驟的驗證能夠與其它精化步驟相互獨立進行,這
就意味著,在系統的大部分組件寫出之前,在早期的增量中,系統的體系結構能夠被驗
證,在后期的增量中,體系結構不需重新驗證。
三、 凈室軟件規范
根據結構化編程的理論,無論多么復雜的程序結構都可用分層結構中的三種基本控制結
構:順序,選擇和循環嵌套而成。然而,軟件系統的開發不僅僅需要系統控制流,如今
的大規模系統涉及整個企業中大量數據的存儲、檢索、傳送和處理數據的操作。在缺乏
工程基礎的系統開發中,這些操作使數據復雜性不斷積累,從而難以控制。凈室軟件規
范和設計使用了三種系統結構─黑盒、狀態盒和明盒,統稱為盒子結構。這些結構體現
了數據封裝和數據隱藏的重要概念。在逐步求精和驗證過程中開發盒子結構,并將系統
控制和數據操作結合起來。系統的開發就是把這些結構以一種可證明的方式逐層嵌套和
排序。
1. 凈室規范和設計的盒子結構
盒子結構是在規范和設計中對現實系統的外在基本屬性的功能描述。有三種盒子:黑盒
、狀態盒、明盒。這些盒子不僅展示了外部行為,而且還提高了內部可見度。黑盒確定
了一個系統或系統組件的外部行為。狀態盒則進一步指定了完成外部行為所需的狀態數
據。明盒則進一步把狀態盒具體化,它確定了完成狀態和行為的過程設計。它可是用已
有的黑盒或引入新的黑盒,這些黑盒將在以后細化(明盒由程序控制結構組成),每步
細化是根據前一步進行驗證的。這樣盒子結構將系統開發的三個方面(行為、數據和過
程的規范)分離開,但又把它們聯成一個細化和驗證的內聚過程。
(1) 黑盒行為
黑盒定義了一個系統或系統組件的外部行為。當系統接受激勵S(視為從其環境的輸入)
時,它將產生相應R(作為對其環境的輸出),響應不僅與當前激勵有關,還與到目前為
止收到的激勵有關。
黑盒行為的數學語義可寫成如下函數:
歷史激勵→響應
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -