在過去的二十年里,新的軟件開發(fā)方法和技術(shù)的使用并未使軟件生產(chǎn)率和生產(chǎn)質(zhì)量得到有效的提高。軟件生產(chǎn)商開始意識到他們的基本問題在于對軟件的生產(chǎn)過程管理不力,主要體現(xiàn)在:軟件產(chǎn)品不能按時完成、超出預(yù)算的成本、以及采用新的技術(shù)和工具后其好處難以體現(xiàn)。
企業(yè)要通過選擇最關(guān)鍵的目標(biāo)來進(jìn)行過程改進(jìn),應(yīng)該搞清成熟的軟件過程和不成熟的過程之間的差異。
不成熟的企業(yè)有如下標(biāo)志:
- 缺乏確定的軟件過程和相應(yīng)的管理和控制;
- 即使給出了軟件過程,也不嚴(yán)格的遵循和強(qiáng)制執(zhí)行;
- 管理是完全被動的,管理者采用的策略是救火式的,即出了事才去解決,解決的時候也難以縱觀全局,往往只顧眼前;
- 由于缺乏有依據(jù)的估算,制訂軟件預(yù)算和生產(chǎn)計劃時往往跟著感覺走,實際生產(chǎn)時則常常超標(biāo);
- 如果強(qiáng)制在預(yù)定期限內(nèi)完成,那么軟件的功能和質(zhì)量肯定是得不到保證;
- 缺乏評價軟件產(chǎn)品質(zhì)量和解決產(chǎn)品缺陷和過程問題的客觀基礎(chǔ)。
成熟的企業(yè)則有如下標(biāo)志:
- 具有在企業(yè)范圍內(nèi)管理、控制軟件開發(fā)和維護(hù)過程的能力;
- 現(xiàn)有人員和新進(jìn)人員均了解所遵循的軟件過程,且工作活動均按照事先的計劃完成;
- 在定義好的軟件過程中,所有項目和機(jī)構(gòu)中的角色和責(zé)任分明;
- 制定的計劃是有效的且與實際的工作進(jìn)展一致;
- 軟件過程在必要時可按照一定規(guī)則和程序加以修改;
- 軟件產(chǎn)品和過程的具有一定的可控性。這主要體現(xiàn)在:
- 管理者能夠監(jiān)督軟件產(chǎn)品的質(zhì)量和生產(chǎn)過程;
- 具有客觀的和定量化的措施來判斷產(chǎn)品質(zhì)量并分析產(chǎn)品與生產(chǎn)過程中的問題;
- 計劃和預(yù)算有章可循,它是基于歷史數(shù)據(jù)的,從而是實際可行的;
- 預(yù)算的結(jié)果,包括成本、時間表、產(chǎn)品功能和質(zhì)量等,通常能夠達(dá)到;
- 有關(guān)的參與者完全理解遵循軟件過程的價值并認(rèn)真地遵循之;
- 具有支撐軟件過程的基礎(chǔ)設(shè)施,如標(biāo)準(zhǔn)過程庫、歷史數(shù)據(jù)庫等。
如果公司要通過CMM2,那么公司的管理成本又有多大?公司其它管理層是否意識到制定標(biāo)準(zhǔn)的好處?新事物會帶來多少人的抵制?