軟件能力成熟度是屬于軟件質量和軟件生產組織管理問題。
這里,先給出軟件質量概念;然后討論軟件質量模型;最后評論軟件質量控制方法。
1.軟件質量概念和問題
軟件質量是一模糊的、捉摸不定的概念。對于什么是產品質量,可以從以下幾個觀點來看:
* 透明性觀點:質量是產品一種可以認識但不可定義的性質;
* 使用者觀點:質量是產品滿足使用目的之程度;
* 制造者觀點:質量是產品性能和規格要求的符合度;
* 產品觀點:質量是聯結產品固有性能的紐帶;
* 基于價值觀點:質量依賴于顧客愿意付給產品報酬的數量。
概括地說,有三類方法來改進軟件質量:控制軟件生產過程、提高軟件生產者組織性和軟件生產者個人能力,已經應用的著名的方法有:
* 凈化軟件工程(Clearnroom Software Engineering):這是把軟件生產過程,放在統計質量控制下的軟件工程管理過程。其特點是:勞動質量管理、重視生產過程和定量分析。這一方法的本質是干干凈凈生產,以求提高產品質量。
* 評估軟件能力成熟度:用軟件能力成熟度模型(CMM:Capability Maturity Model)來評估軟件生產組織研制軟件能力的成熟度。CMM是從軟件生產組織過程角度,來評估其生產能力和技術水平。軟件能力成熟度分5級,當前一般的軟件生產組織的軟件能力成熟度水平沒超過3級。
* 提高軟件生產力和個人技能:用人事軟件過程(PSP:Personal Software Process)作為一個工具和方法,它給軟件工程師提供了測量和分析的工具,并幫助他(她)們理解自己的軟件生產水平和技巧的高低,以求得到提高。
軟件質量和很多研究領域及實際問題有關,主要相關領域和因素有:
需求工程(RE:Requirements Engineering), 理論上,需求工程是應用已被證明的原理、技術和工具,幫助系統分析人員理解問題或描述產品的外在行為。
軟件復用(SR:Software Reuse), 定義為利用工程知識或方法,由一已存在的系統,來建造一新系統, 這種技術,可改進軟件產品質量和生產率。還有軟件檢查、軟件計量、軟件可靠性、軟件可維修性、軟件工具評估和選擇等。
2.軟件質量模型
McCall模型
McCall,J.A. 等人對軟件質量因素進行了研究,將軟件需求按照3個緯度對11個軟件質量因素進行分類。其模型分為三層:因素、準則、計量。這就是說,軟件質量是正確性、可靠性、效率……的函數。正確性、可靠性、效率……稱之為軟件質量因素,或軟件質量特征。每一因素又由一些準則來衡量,例如正確性由跟蹤性、完全性、相容性來判斷;而每一準則又有一些定量化指標來計量。McCall模型可用下圖表達。
軟件質量特征,在國際標準化組織軟件質量測量標準(ISO9126)“信息技術----軟件產品評估----和應用指南”中,給出了一些定義(和McCall,J.A. 等人軟件質量因素不盡相同)如下表1。
還有人提出了軟件質量計量模型(SQM:Software Quality Metrics Model)。軟件質量計量模型是把軟件質量因素-準則-計量三者綜合的軟件質量結構模型;其思路如圖2示。
圖2
可把SQM改為目標規則檢查計量層次結構(GRCM)模型:例如評估可讀性、可擴充性。
規則1:可讀性----目的在于理解類結構,界面和方法。
規則2:可擴性----目的在于可以擴充,保持先進性。
要進行:
可讀性檢查.1
查看在一個類中方法數目是否小于20 * 計量1.1 方法個數(NIS)
可讀性檢查.2
查看在一個類層次機構層次數是否小于6 * 計量2.1 層次結構的層數(HNL) (從底層開始數)
可讀性檢查.3
查看在一個子類服務于子類是否合理 * 計量3.1 方法不理會需求的個數(NMO)
……
一般的思路是:
在GRCM結構中,因素(Factor)對應于目的(Goal);準則(Criteria)對應于規則(Rules)。關于計量(Metric)可以參考[2]。
SQM綜合模型和ISO9216對比如圖3所示:
圖3
GRCM模型在軟件工程過程中的作用和地位如圖4所示:
圖4
實際上,軟件質量特性通過有形的質量載體性質表達。而這可由一些計量(定量化)指標表示。
軟件生產部門能力成熟模型 Capability Maturity Model(CMM)
1993年,美國防部設在卡內基-梅隆大學的軟件研究所(SEI)正式發表了能力成熟度模型。這是評估軟件生產部門(組織、廠家)軟件生產能力成熟度的模型,是從軟件生產組織過程角度,來評估其達到的水平級別。它分5級(如圖5),當前我國一般的軟件生產組織的水平沒超過3級。
圖5
這5個級別包含18項內容:
5(優化):過程變化管理、技術變化管理、缺點防止;
4(管理):軟件質量管理、過程定量化管理;
3(確定):仔細觀察、整體協調、軟件生產工程、集成軟件管理、訓練規劃、組織過程確定、組織過程中心點;
2(重復):軟件構形管理、軟件質量保證、軟件合同管理、軟件工程跟蹤和統籌、軟件工程計劃、需求管理;
1(初始):經驗和個人行為。
還可以進一步分解,例如:軟件工程跟蹤和統籌可分解為13項活動。軟件生產組織的這13項活動水平,可進行評分;0分;1分;2分……9分;10分。比如第6項,軟件計劃費用跟蹤并采取修正。評分標準是0~10,分為:差-0分;弱-2分;中等-4分;基本合格-6分;合格-8分;優秀-10分。事實上,每一級別、每一項內容都有豐富的內涵,為CMM實施奠定了基礎。
目前,SEI研制和保有的能力成熟度模型有:
* 軟件集成能力成熟度模型(CMMISM: CMM IntegrationSM );
* 軟件能力成熟度模型(SW-CMM :Capability Maturity Model(r) for Software);
* 人力能力成熟度模型( P-CMM :People Capability Maturity Model );
* 軟件采辦能力成熟度模型(SA-CMM:Software Acquisition Capability Maturity Model );
* 系統工程能力成熟度模型(SE-CMM: Systems Engineering Capability Maturity Model );
* 一體化生產研制能力成熟度模型( IPD-CMM :Integrated Product Development Capability Maturity Model )。
建立這些模型的指導思想和方法論,都是一樣的:評估能力,發現問題,幫助改進。
3.軟件質量—系統工程問題和系統方法
軟件質量是一復雜系統工程問題,它必需用系統方法(Systems Approach)來研究。軟件研制是一過程,是以個人智力為基礎的有組織的團隊性生產活動。這一過程可用水滴模型或螺旋模型來描述,基本內容是:需求、設計、編程、測試、運用,如圖6所示。
圖6
用全面質量管理思想方法,把軟件研制和運用過程全壽命全系統科學的管理,這就是我們的軟件質量管理觀點和思路,可稱之為軟件質量系統管理。這是保證軟件質量的必由之路。根本原因在于,影響軟件質量的因素太多、太復雜。軟件質量系統管理,是要把上述水滴模型的每一階段、每一步驟都管起來。例如,對設計、編程和測試活動的質量保證,如圖7所示。
圖7
圖7中,拿顯微鏡這位老專家,代表質量系統管理組,根據質量管理規范、程序和方法,實施其質量管理職責。重要的問題在于質量管理規范、程序和方法制定與選擇,必需從三個方面進行研究和實施:
* 軟件生產組織;
* 軟件生產過程;
* 軟件生產者個人。
給定軟件生產組織環境和個人水平,研究軟件生產規律,通過生產過程質量特性計量,反過來對軟件質量進行控制。把軟件質量控制和軟件可靠性、可維修性、測試和監控接合起來。當前,對軟件生產組織可用CMM方法,評估其能力成熟程度; 用個人能力軟件評價其軟件生產水平。然后,再深入軟件生產過程中,研究軟件計量(定量)和質量控制方法,就能夠取得成功。