軟件度量技術與CMMI應用及簡介
一直以來,軟件產品與軟件過程的分析與改進是軟件企業最為關注的事情之一。作為項目/產品的 開發 人員,在整個軟件開發過程中,從 需求分析 到系統構架,到編碼、 單元測試 、聯合測試,再到最終發布使用,如何把握軟件過程中的 質量 、進度控制,將開發過程
一直以來,軟件產品與軟件過程的分析與改進是軟件企業最為關注的事情之一。作為項目/產品的
開發人員,在整個軟件開發過程中,從
需求分析到系統構架,到編碼、
單元測試、聯合測試,再到最終發布使用,如何把握軟件過程中的
質量、進度控制,將開發過程的每一部分控制在可預算范圍內,主管人員往往通過經驗和對人員的了解進行一個定性的分析以及結論,這樣的結果往往造成企業缺乏有效的統計數據,對軟件過程進行定量的分析和統計。一個生存了許多年的軟件企業,卻拿不出企業自身對軟件產品和過程有效控制的統計數據作為評判依據,無疑說明了它在軟件開發的發展方面是失敗的。
CMMI為軟件產品及軟件過程提供了一套定量的表示和分析的模型,即
軟件度量。因此軟件度量分為軟件產品度量和軟件過程度量兩大部分。
先簡單介紹一下軟件產品的度量(我個人認為,軟件產品的度量評估比較EASY,重點放在軟件過程度量上),由三部分組成:
1.質量要素:包括 功能性,
可靠性,易用性,高效性,可維護性,可移植性 六條。
2.評價標準:包括 精確、健壯、通信有效、處理有效、設備有效、可操作等等共22點。以這22點作為上面六條的評判標準。
3.度量元:指軟件的需求分析,概要設計,詳細設計,CODING實現,設置測試,
確認測試,使用維護七個階段中的度量元素,比如各階段的里程碑--文檔等。
對于軟件過程度量,我們先來討論,在軟件過程中,我們最需要掌握這個過程中的什么。
因為我們需要在通過每一個軟件過程后,能交付符合該過程需要的結果,即該過程產品,該產品
性能是否達到組織的商業目標。為了讓這個目標成功,讓它所有過程中的行為在整個管理中可以預測,判斷現階段這個過程設計是否合理,我們不僅僅需要主管和經驗豐富的開發人員的經驗,還需要定量的數據作為分析、參考。并把每個軟件過程記錄入庫,作為今后的統計分析參考數據,這樣科學的輔佐開發人員將軟件過程控制住。
如何設定并采集參考數據,這些數據如何使用,可以采用那些數據統計、描述工具。下面我舉系列例子:
對于一個開發項目,首先我們將其歸入某一項目種類中,然后將開發人員人數、級別(如一個P4,兩個P3,5個P2等)記錄,統計他們對一功能模塊(以代碼行為標準,乘以其難度系數)的開發時間,在此類數據積累夠多時,我們就可以預測并控制下一次遇到此類的項目(或實現該功能模塊)大致需要的時間上、下限,并能查找偏差來進行控制,直方圖或正態分布圖可以有效的表示出這一點,這是開發進度的控制方式之一。
對于軟件過程中遇到的偏差以及問題,我們可以采用頭腦風暴法,將這些問題羅列出來,用來探測和展示問題的可能原因,魚骨圖可以很形象的將其描述。問題是羅列出來了,但是本方式存在的弊端也很明顯,就是
缺陷主次不明,時間、資源都是有限的,如何從問題最大的缺陷下手呢,我們可以采用PARETO圖將問題展示出來,根據其二八原則,先將缺陷種類中的20%解決,卻就解決了80%的問題,這樣缺陷解決的過程得以優先排序。
我們可以通過對整個軟件過程中的七個階段進行離散分析,可以得出各階段中缺陷的發現及解決比例,從而判斷出哪個階段問題最大,將解決重點放在該階段。比如,如果在分析階段缺陷比例最大,而后期依次減小至理想狀態,這說明本軟件過程是非常成功的,反之,如果在測試階段甚至使用階段缺陷比例很大,很可能說明這個軟件過程在分析、或者構架時就存在很大的問題?! ?
由于俺也接觸CMMI不多,無法做到很深入的剖析,但求能起個拋磚引玉的效果,希望有興趣的朋友一起來討論研究,共同進步。
原文轉自:http://www.kjueaiud.com