軟件工程管理和其它工程管理相比有其特殊性。首先,軟件是知識產品,進度和質量都難以度量,生產效率也難以保證。其次,軟件系統復雜程度也是超乎想象的。例如,宇宙飛船的軟件系統源程序代碼多達2000萬行,如果按過去的生產效率一個人一年只能寫1萬行代碼的話,那么需要2000人年的工作量,這是非常驚人的。正因為軟件如此復雜和難以度量,軟件工程管理的發展還很不成熟。
美國 Carnegie Mellon 大學軟件工程研究所(CMU/SEI)主持研究與開發的CMM/PSP/TSP 技術,為軟件工程管理開辟了一條新的途經。CMM是英文 Capability Maturity Model 的簡稱,意為能力成熟度模型。CMM的本質是軟件管理工程的一個部分。根據軟件生產的歷史與現狀,CMM框架可用5個不斷進化的層次來表達:其中初始層是混沌的過程,可重復層是經過訓練的軟件過程,定義層是標準一致的軟件過程,管理層是可預測的軟件過程,優化層是能持續改善的軟件過程。任何單位所實施的軟件過程,都可能在某一方面比較成熟,在另一方面不夠成熟,但總體上必然屬于這5個層次中的某一個層次。在某個層次內部,也有成熟程度的區別。在一個較低層次的上沿,很可能與一個較高層次的下沿非常接近,此時由這個較低層次向該較高層次進化也就比較容易。反之,在一個較低層次的下沿向較高層次進化,就比較困難。在CMM框架的不同層次中,需要解決帶有不同層次特征的軟件過程問題。因此,一個軟件開發單位首先需要了解自己處于哪一個層次,然后才能夠對癥下藥地針對該層次的特殊要求解決相關問題,這樣才能收到事半功倍的軟件過程改善效果。任何軟件開發單位在致力于軟件過程改善時,只能由所處的層次向緊鄰的上一層次進化,即軟件過程的進化是漸進的,而不能是跳躍的。而且在由某一成熟層次向上一更成熟層次進化時,在原有層次中的那些已經具備的能力還應該得到保持與發揚。
CMM家族包括CMM集成產品集、SA-CMM(軟件獲取能力成熟度模型)、SE-CMM(系統工程能力成熟度模型)和IDEAL模型。其中CMM集成產品集為工業界和政府部門提供了一系列集成產品,以支持軟件過程和產品的改善;SA-CMM用于單位獲取和采購基于軟件的應用系統的軟件過程,美國國防部、陸軍、海軍和一些商用單位都已采用SA - CMM對他們的獲取能力進行評估;SE-CMM是描述一個單位為保證實現一個好的系統工程的主要元素;而IDEAL模型則是一個單位用于啟動、規劃和實現過程改善措施藍圖的模型,概括了建立一個成功的過程改善項目的必要步驟,其中I代表Initiating(啟動)、D代表Diagnosing(診斷)、E代表Establishing(建造)、A代表Acting(措施)、L代表Learning(學習)。
美國曾在1995年做過軟件產業成熟程度的調查,發現在美國的軟件產業中,CMM成熟度等級為初始級的竟占70%,其特征是軟件開發過程不能預測,風險度高;為可重復級的占15%,其特征是軟件開發過程需小心謹慎方能避免失;為定義級的所占比例小于10%,其特征是軟件開發過程相當穩定,進展順利且可以預測;為管理級的所占比例小于5%,其特征是軟件過程預測準確、值得信賴;為優化級的所占比例小于1%,其特征是軟件過程能持續改善。國內在這方面的起步則要晚一些,據我所知,目前只有清華鼎新公司的CMM成熟度等級達到可重復級。盡管CMM已經是一套發展相當成熟的方法,但國內要想完全掌握并廣泛付諸實踐,對絕大多數軟件企業來說,可能還需要3~5年的時間。
需要注意的是,并不是實施了CMM,軟件項目的質量就能有所保障。CMM不是萬能的,它的成功與否,與一個組織內部有關人員的積極參與和創造性活動是密不可分的,而且CMM并未提供實現有關子過程域所需要的具體知識和技能。因此,個體軟件過程PSP(Personal Software Process)也就應運而生。PSP為基于個體和小型群組軟件過程的優化提供了具體而有效的途徑,例如如何制訂計劃,如何控制質量,如何與其他人相互協作等等。在軟件設計階段,PSP的著眼點在于軟件缺陷的預防,其具體辦法是強化設計結束準則,而不是設計方法的選擇。根據對參加培訓的104位軟件人員的統計數據表明,在應用了PSP后,軟件中總的缺陷減少了58.0%,在測試階段發現的缺陷減少了71.9%,生產效率提高了20.8%。PSP的研究結果還表明,絕大多數軟件缺陷是由于對問題的錯誤理解或簡單的失誤所造成的,只有很少一部分是由于技術問題而產生的。而且根據多年來的軟件工程統計數據表明,如果在設計階段注入一個差錯,則這個差錯在編碼階段要引發3~5個新的缺陷,要修復這些缺陷所花的費用要比修復這個設計缺陷所花的費用多一個數量級。因此,PSP保障軟件產品質量的一個重要途徑是提高設計質量。PSP的推出,在軟件工程界引起了極大的轟動,可以說是由定向軟件工程走向定量軟件工程的一個標志。
文章來源于領測軟件測試網 http://www.kjueaiud.com/