國際學術界和工業界一致公認,軟件產業的發展將經歷三個不同的階段。第一階段是70年代中期至90年代中期的軟件結構化生產階段,該階段是以結構化分析與設計、結構化評審、結構化程序設計以及結構化測試為特征。從80年代中期開始,軟件生產開始進入以過程為中心的第二階段,以個體軟件過程PSP(Personal Software Process)、過程成熟度模型CMM和群組軟件過程TSP(Team Software Process)為標志,這個階段預計在2005年前后結束。而從1995年開始,國際上已經逐步進入以軟件過程、面向對象和構件重用等三項技術為基礎的軟件工業化生產的第三階段。我國一些先進的軟件公司也已經開始從第二階段過渡到第三階段。
我國的軟件開發行業目前還處于軟件結構化生產階段,剛剛開始向以過程為中心的第二階段過渡,這也就是說,我國的大部分軟件開發組織的過程能力成熟度還有待于進一步提高和改進,這主要表現在:
第一、 相當多的軟件開發單位對軟件開發的過程管理不規范,所生產的軟件系統質量達不到客戶方要求,容易產生因質量問題所引起的軟件危機,軟件開發中還存在比較大的潛在風險。
第二、 軟件開發單位的開發過程混亂而無序,只重視先進技術在軟件開發中的作用,忽視了軟件開發過程對于軟件質量的影響。開發過程的不標準性既不利于組織本身軟件過程能力的提高,同時也妨礙了軟件開發組織與國際先進開發管理規范的接軌。
第三、 各軟件開發單位對軟件產品的開發中不遵循軟件工程的要求,其軟件開發過程能力的不成熟,不利于軟件項目采辦中做出正確的決策。并且,客戶方對軟件開發組織的開發過程也不能進行很好地監控。
基于以上幾點原因,要想加快我國軟件行業的發展,提高軟件開發水平和質量,促使軟件開發單位嚴格按照軟件工程的要求開發軟件,則必須對軟件開發單位的開發能力和過程能力進行客觀公正的評估,督促各開發單位從根本上提高自身的軟件開發過程能力,從而保證軟件項目的高質量和低風險。
2. 國內外軟件開發組織進行軟件開發能力評估的現狀
20世紀80年代,美國工業界和政府部門開始認識到,軟件過程能力的不斷改進才是增進軟件開發組織的開發能力和提高軟件質量的第一要素。在這種背景下,由美國卡內基-梅隆大學軟件工程研究所(SEI)研制并推出了軟件能力成熟度模型SW-CMM,隨著軟件產業界對軟件過程能力改進的不斷研究,CMM逐漸成為了評估軟件開發過程的管理以及工程能力的標準。
CMM評估在軟件產業界的開展,極大地推動了軟件開發組織的過程能力成熟度的提高,并且將軟件開發和生產從原來的結構化生產階段推進到了以過程為中心的生產階段。美國、印度等軟件大國率先接受并實施了基于CMM的評估和改進,并取得了明顯的效益。自1987年到2000年6月,向SEI報告的CMM軟件過程評估多達1654次,被評估組織1269個,受評估的項目6784個。其中從1996年到2000年6月,就有901個軟件組織接受了評估,被評估的項目為4174個。
我國軟件組織對于CMM評估的實施起步較晚,目前仍然處于起步階段,具體現狀可以概括如下:
第一、 我國正在由結構化生產方式向以過程為中心的生產方式和工業化生產方式前進。許多軟件企業已經認識到利用CMM改進軟件過程,實施科學化、系統化管理以提高軟件組織的過程能力成熟度的重要性,因而具備了開展CMM評估的強大動力。
第二、 目前實施CMM評估還存在一定的困難。這主要表現在許多軟件組織不熟悉CMM的概念,缺乏軟件工程理論和實踐方面的經驗,組織內的成員、特別是高層領導對CMM評估的重視程度不夠,使得評估的具體工作得不到有效實施。
第三、 軟件開發過程很不規范,缺少必要的文檔化的過程描述,特別是缺少工作文檔、工作量統計文檔和風險管理文檔。缺乏對軟件過程和產品的測量,沒有足夠的軟件過程歷史數據,很難基于歷史數據對軟件開發的工作量和進度進行估計。
盡管如此,到目前為止,我國也已經有數家軟件企業成功開展了CMM評估,并分別通過了CMM各個級別的認證。在評估過程中,不僅積累了豐富的經驗,而且還培訓了大量具有初步經驗的評估人員,有的軟件公司甚至已經培養出了自己的主任評估師。
我國的軟件開發行業要想從根本上提高自身的軟件過程能力,保證所開發軟件的質量,縮短開發周期和減少費用,就必須緊跟國際和國內先進企業的步伐,盡快在軟件開發過程中實施CMM評估和改進,有能力的軟件開發企業應該率先申請進行CMM認證,形成適合于自身的軟件開發管理規范。
3. 軟件開發能力評估程序
當然,CMM作為一個較好的軟件改善框架,只是給出做什么,并沒有給出如何做。因此要想在軟件行業中成功實施CMM,還必須認真研究如何遵循CMM模型進行具體操作的問題。
1) 實施軟件開發能力評估的戰略考慮
在軟件開發企業中實施CMM評估,不能夠照本宣科、生搬硬套國外軟件公司的實施評估的方法,而要考慮軟件組織自身的現狀和評估所需要的人力財力物力等因素。對于我國大部分的軟件開發組織來講,基于CMM對軟件開發過程進行評估和改進是一個全新的課題,實施CMM評估不僅需要大量的時間和資金投入,而且還會從根本上影響到軟件組織的企業文化,并要求組織成員的軟件開發理念也相應發生根本性改變。因此,對軟件開發能力進行CMM評估不可能一步到位,而應該分階段、分層次進行實施。
具體來說,軟件開發組織中實施CMM評估應該按照以下兩個階段進行:
第一階段:申請評估的軟件開發組織首先應該自己組織CMM培訓,強化組織成員的CMM理念,在整個組織中樹立起過程管理和質量管理意識,并著重培養一批具有初步經驗的CMM實施管理人員。在此基礎上,選取一些合適規模的中小型項目進行試點,初步積累一些實施CMM的經驗,為進行正式的CMM評估打下基礎。
第二階段:在第一階段取得收獲的基礎上,聘請有實施CMM成功經驗的單位作為咨詢顧問,在組織內全面實施CMM。并且在咨詢專家的指導下提出評估申請,并著手準備組織預評估和正式評估。
2) 基于CMM評估的具體實施過程
根據評估中的側重點,軟件開發能力的評估也可以有多種方法。在基于CMM模型的評估中所采用的方法是SEI所發布的CBA IPI方法。當然,根據被評估單位的具體情況,評估方法和程序也可以有所改變,但其基本的過程仍然是遵循CBA IPI方法的。CBA IPI方法以CMM為參考模型,以CMM評估框架CAF(CMM Appraisal Framework)為設計要求,由一組專業評估團隊對組織的軟件過程進行評估,找出組織當前軟件過程的強項和弱點并依據CMM中關鍵過程域KPA(Key Process Area)的目標要求對組織的軟件過程進行評級,從而提出最終評估報告的評估方法。
基于CMM的評估程序一般由三個步驟組成:
第一、 計劃準備階段。這一階段的主要任務是在接到軟件組織的評估申請后進行受理和實地考察,完成具體評估前的準備工作,制定出評估的具體計劃。這一階段的主要工作包括以下幾項:1、界定評估范圍,確定評估目標。2、制定調查問卷,選擇組織參與者。3、制定評估計劃,組織和培訓評估團隊。4、宣傳評估的意義、目標、基本方法和過程。5、進行問卷調查并分析匯總,進行文檔的前期查閱以確定準備內容的完整性。
第二、 評估執行階段。這一階段的主要任務是在組織中選取軟件項目進行審查,對組織的軟件開發能力成熟度進行定量、定性和綜合評估,確定組織的資質等級并頒發資質證書等。其中具體工作包括:1、召開動員會,明確目標,取得組織參與者的支持。2、與組織參與者進行深度交談、文檔查閱及必要的演示說明。3、對收集到的信息進行確認、歸類和匯總。4、分析、總結與歸納通過評估發現的組織過程的強項和弱點。5、將初步發現的組織強項和弱點向組織參與者報告說明并征求反饋意見。6、根據反饋意見作進一步驗證評估和必要的修正、補充。7、確認評估內容的完整性后進行CMM等級評定。
第三、 評估報告階段。這一階段的主要任務是將評估結果報告給受評估的組織,并給出相應的反饋改進意見。具體工作有:1、向組織參與者報告說明評估結果并取得共識。2、向組織管理層報告說明評估結果取得認同以及對進一步的軟件過程改進(SPI)計劃的支持。
4. 關鍵過程域的管理規范
以上所述的評估程序是參考CMM模型而建立的,其評估過程中所依據的是CMM模型等級中所規定關鍵過程域的目標要求。因此,要保證軟件開發組織中實施CMM評估的有效性,就必須在開展CMM評估的同時,研究、建立和完善CMM中所給出的軟件需求管理、軟件項目策劃、軟件跟蹤和監督、軟件(子)合同管理、軟件過程文檔管理、軟件標準化、軟件質量保證、軟件配置管理、軟件維護、集成軟件管理、軟件產品工程化、組織協調、同行專家評審、預防缺陷、技術變更管理、過程變更管理、組織過程管理和培訓過程管理等18個關鍵過程域的管理規范。在制定這些管理規范的工作中需要注意以下幾點:
第一、 要以CMM模型中所規定關鍵過程域為參考,所制定的各關鍵過程域的管理規范應盡量接近國際標準,做到與國際接軌,以樹立起權威性。
第二、 在每一個關鍵過程域中,不能照搬照抄CMM中所規定的關鍵實踐,而應該根據軟件組織的具體情況進行合理的裁剪和解釋。
第三、 在實現各關鍵過程域的過程中,CMM模型各級別之間的關鍵過程域的劃分并不是一層不變的,可以根據具體情況進行靈活變更。比如,對于某些特定領域的應用軟件來說,有些開發組織雖然不一定能夠完全達到CMM5級水平的能力成熟度,但在實施評估時仍然可以將CMM5中的缺陷預防這一關鍵過程域的目標要求納入到評估的指標體系中來,以符合軟件對于軟件質量的高要求。
5. 軟件開發能力評估中可能會遇到的問題
前面說過,CMM評估對大多數軟件開發組織來說是個新事物,組織中的絕大部分成員對其并不是很了解,因此,在實施評估中不可避免地會遇到這樣那樣的問題。根據我國軟件開發組織中的實際情況,在實施CMM評估是大概會出現以下幾方面的情況:
首先,實施CMM評估將會改變開發組織的企業文化和員工的開發理念,因而在執行中可能會有很大阻力。以前的軟件開發組織在對軟件開發過程進行管理時,往往只注重項目進度,而很少考慮到軟件的質量保障和過程管理等問題。對于一個項目負責人來說,可能只是關心每天、每周的軟件開發進度,而不注重由于過程管理不規范而帶來的質量隱患;對于軟件開發人員來說,往往習慣于按照自己喜歡的方式完成眼前的開發任務,排斥使用既耗時又費力的各種開發規范,也懶得填寫開發過程中的各種文檔,通常的做法是完成軟件開發之后再回過頭來寫文檔,不能真正發揮規范文檔的作用;而對于軟件開發組織的高層領導來說,可能只會著眼于組織近期所產生的效益,對于近期內作用并不明顯、卻又需要投入大量資金和時間的CMM評估往往并不能給以真正的支持。
其次,在實施CMM評估過程中只注重CMM認證的廣告效應,為評估而評估,而忽略了進行CMM評估的真正目的。CMM評估只是一種手段,其最終目的是實現軟件開發組織過程能力的不斷提高。如果在評估過程中,被評估單位本末倒置,只是為了追求短期的經濟效益,卻不根據評估結果和反饋意見對軟件開發過程管理進行有效的改進,CMM評估的實施往往就會流于形式,而不能從根本上改進軟件組織的開發過程能力。
第三,目前在軟件開發組織中實施CMM評估,還存在一定的技術阻力。這主要表現在兩方面:一方面,由于對CMM標準的要求不熟悉,在管理過程中所編寫的過程文檔質量較差;另一方面,項目經理對文檔要求不理解,或者操作方法不熟練,從而導致執行的結果與要求相差甚遠。
第四,在實踐方面,沒有實施CMM評估的具體經驗,缺乏有經驗的評估人員。
根據以上幾點考慮,要想在軟件開發組織中成功實施CMM評估,需要做好以下幾方面工作:
第一、 在整個組織內宣傳CMM軟件開發過程理念,從思想上引起對CMM評估的重視,尤其是要得到組織高層領導的支持和組織的政策扶持。
第二、 對組織內的相關人員進行CMM培訓和軟件工程相關知識的培訓,提高組織成員實施CMM的技能。
第三、 加強與同行之間的交流,借鑒國內外軟件組織進行CMM評估的成功經驗,并根據自身實際情況靈活運用。
第四、 評估程序和管理規范力爭做到與國際接軌,樹立起行業權威性,在軟件的開發過程管理中形成共識。
第五、 將開展CMM評估的出發點放在改善軟件開發組織的過程能力成熟度上,制定合理的過程管理規章制度,嚴格執行,避免流于形式。
6. 結束語
目前我國軟件產業方興未艾,實施CMM可以從根本上改變我國的軟件工程文化,改善軟件人員素質,這對于提高軟件企業素質、增強軟件企業的國際競爭力以及軟件的出口創匯都有著很重要的作用。這種行業環境為軟件開發過程能力評估的開展創造了有利的外部條件。同時,當今國外軟件開發組織對于我國軟件行業的沖擊對于軟件組織所造成的壓力,形成了在軟件開發組織中開展CMM評估的內在要求。并且,鑒于信息產業在國家建設中的重要地位,在軟件開發組織中開展CMM評估得到了政策方面的傾斜和資金上的支持,這一點為在軟件開發組織內開展CMM評估創造了外部條件。因此,盡管在實施中存在不少困難,但這并不能阻止軟件開發能力評估的開展。盡快進行這方面的研究工作,不僅具有重要的理論意義,而且還會產生巨大的應用價值。
延伸閱讀
文章來源于領測軟件測試網 http://www.kjueaiud.com/