典雅格格
1、用于軟件過程的改進。(SPI Software Process Improvement)
幫助軟件企業對其軟件過程的改變進行計劃、制定以及實施。
2、用于軟件過程評估。(SPA Software Process Assessment)
在評估中,一組經過培訓的軟件專業人員確定出一個企業軟件過程的狀況,找出該企業所面對的與軟件過程有關的,最迫切的所有問題;以及取得企業領導層對軟件過程改進的支持。(用途2是用途1的前一步)
3、 軟件能力評鑒。(SCE Software Capability Evaluation)
在能力評鑒中,一組經過培訓的專業人員鑒別出軟件承包者的能力資格;或者是檢查監察正用于軟件制作的軟件過程的狀況。
基于CMMI成熟度模型,包括中小企業在內的軟件企業如何進行軟件過程改造,如何在具體項目中引入并實施CMMI的標準成為人們關注的重點。CMMI的實施核心焦點不在于軟件的開發技術層面,而在于工程過程層面和工程管理層面。所謂工程過程層面是指將工程開發的整個過程所涉及的相關議題作為過程學的體系來研究和執行。過程學本身既不同于通常所說的軟件工程技術,(如編碼,操作系統等等),也不同于一般所言的工程管理學,軟件過程既是對軟件工程這一領域中所涉及的流程按其獨特特性進行專門描述。事實上,任何企業在開發工程產品的實踐中,都有開發過程產生,雖然很多企業并未對其進行記錄或關注。按照工程過程學派的觀點,沒有正確的過程就不可能有正確的產品產生,因此對開發組織的過程需要規范和改進。
由于軟件過程必然與工程管理相關,因而它不象具體的開發技術問題那樣容易規劃并著手實施,特別是國內廣大的中小軟件企業和部門,在采納某一過程體系進行開發流程的改造時,應特別注意如下幾方面的問題,將其作為過程實施開端的要領加以掌握:
1.不可急于求成和盲目樂觀。任何新體系的采納和改進都必然涉及對舊有體系的重組和調整,需要投入相當的決心和時間。如果企業在充分評估后決定了以CMMI工程標準來規范建構自身的軟件開發行為,則應該在次序改進的前提下盡早實施企業開發過程調整以便有充裕時間理解和評估前期改造的成效。
2.必須懂得CMMI作為一套標準,它指明的是該作什么(What)而非怎樣去做(How),同時CMMI也代表了一種對軟件生產過程進行理解和分析的獨到觀點(Philosophy)。CMMI著重于過程中的關鍵要素,而非面面俱到,它主要不是為了解決某個具體項目的問題,也不能保證在此框架下產品開發100%成功,CMMI所述的軟件過程集合了工程過程和管理過程等方面,對它的過程改進要靠許多細小的階段性的步驟而非一蹴而就的革新。
3.CMMI
1.1版主要針對大型軟件企業,這些企業的開發工作通常關涉軟件生產過程的方方面面。對于20人以下的小型企業,
1.1版中的一些環節可能并不適用。
4.企業在采納CMMI過程改進的同時,可以引入新技術與自動化工具幫助軟件開發的實現,不過,對過程的改進要求企業全面投入并需較長周期,而技術引進則相對周期較短。但如果企業只是依靠技術改進而不注重過程改進,長遠看來,企業可能收獲甚少。
5."知己知彼,百戰不殆"。實施改進之前,企業應對自身當前所有的軟件能力水平及過程狀態有盡可能的客觀、詳盡的了解??梢詤⒖急疚暮蟾狡髽I開發能力自測表進行初步診斷,在明了自身實際過程等級之后,企業應確定需要達到的等級目標并找到主要差距所在。企業要想達到的等級目標包括它所特定的過程目標及核心過程域(KPA)。這一等級應符合企業自身開發水平與項目特征。在企業明了了自身實際等級與目標等級之間的差距之后,應制定規劃,決定改進次序及程度,可參考的決策因素包括:目標與能力的平衡,投入工期與質量的保證,企業總體發展與當前項目開發的平衡,員工素質條件,最薄弱環節與最急需改進環節,還有最易見效的環節,等等。
6.如有可能,在企業內部成立專門的過程改進規劃組,并配合企業外聘的咨詢機構或顧問,擬訂出詳細的過程實施方案,同時注意在實施過程中對計劃進行修正和調節。在此,應將改進方案指定得盡量具體詳細,這包括:
目標明確并可檢驗,有助于切實的檢驗標準;
有詳細的實施步驟,有專人負責每一環節的落實,有協調方解決各環節之間的沖突;
如需采納新技術和工具,應詳細分析他們的作用及獲取方式并準備對新技術和工具進 行改造,對員工進行培訓以適應項目所需。
制定項目開發時間表,將每個過程環節的實施與此時間表掛鉤。
對項目開發的投入工期進行預測并據此規劃開發工作。
預先規劃開發過程中相關數據的采集,分析和提供方式與時段;
所有過程,包括:需求分析、項目計劃、項目驗收和交付,都必須編檔并保留,應有具體的監控和考核計劃來監督過程的實施。這一計劃應考慮到偏差的可能性及應對方案。
企業的高層和相關管理人員應參與過程的制定與實施并形成制度。領導層應負責對每一階段改進的總結并制定出相應的后繼方案,另外,凡涉及對已定計劃和過程的調整必須事先申請備案并經領導層同意。
需強調的最重要的一條原則是,過程改進不可流于書面形式,所有員工都應理解并參與其中。
CMMI模式即可用于描述軟件機構實際具備的能力成熟度水平,也可用于指明軟件企業改進軟件工程所需著力之處,它說明了努力的方向,又允許企業自己選擇恰當的方式去達到這一目的。實施CMMI的經驗告訴軟件工程人員,在軟件項目開發中,更多的問題和錯誤來源于工程安排的次序,工程規劃和工程管理而不是技術上的how to do。軟件工程的過程學不斷分析和改善已有工程經驗,擬定出盡可能完善的開發過程,并按開發生命周期確定重點環節加以管理,最終達到以量化數據來建立能力成熟度等級的目標。良好的工程過程保證了有序的開發實施,避免了以往開發人員被動救火的方式,并將個人主觀因素減低至最少。開發人員的個人創造性從獨立任意的發揮消解并轉移到如何創建性地運用和完善工程過程上來。
作為一種模型,CMMI實際上是對軟件機構工程過程的理論和數據模擬,在對它的應用中,主要包括軟件產品供應方和應用方兩大類。
目前,世界范圍內已采納CMMI標準的企業紛紛以此標準決定軟件項目合同的承接與分包。實踐中,許多中小企業在接納CMMI體系時,采納了保留企業部分原有工程過程指標并加以修改的辦法。
卡萊基·梅隆大學軟件研究所提出了一套實施CMMI標準的方法,按照他們的建議,IDEAL是企業開始引入CMMI體系的良好參照模式,它包括:
I--啟動(Initiating),表示開發機構應為CMMI的引入準備好前期基礎設施和程序。
D--診斷(Diagnosing),明確機構目前所處的能力水平及目標等級所在。
E--建構(Establishing),制定如何實現目標等級的計劃。
A--行動(Acting),具體實施該計劃。
L--學習(Learning),積累以往經驗并將其用于持續的改進過程之中,同時注意新技術和工具的引入以協助過程實施。
如有可能,企業在咨詢機構或咨詢師的協助下可以加快CMMI體系引入的過程,但企業必須同時著力于培訓自身理解工程過程的人才。較好的方法包括在開發組織內部分項目形成CMMI研討小組以促進開發組及開發人員之間的經驗交流。顯而易見,實施CMMI的成效應根據機構自身特有的實際情況作判斷,正確的實施應該從質和量兩方面對過程的各環節發生作用。CMMI體系在中小企業的應用中并未要求逐字照章對應每一項核心過程域和核心實踐來進行,機構可以用裁減的辦法對其應用程度作修正,也可選用闡述的辦法將某項具體的實施工作等同為特定的核心實施。
根據SEI的研究數據,絕大多數軟件項目的成功都遵循了下述的工程原則:
1、將軟件生命周期劃分為若干階段并進行嚴格的計劃,包括項目計劃,里程碑計劃,質量檢測計劃,維護計劃等。
2、在開發過程中,分階段進行復審和評估,以便盡早發現錯誤所在。
3、項目組成員應注重包括技術和流程在內的培訓,提高人員素質。
4、軟件過程的改進應是持續性的,不斷調整的進程。
5、盡可能采用度量數據來描述過程中的每一環節,從而提高可預測性和可控制性。
6、對以往所有開發工作必須進行文檔工作,積累經驗以用于未來的開發之中。
7、如果項目允許,盡可能采納較為先進的技術與工具,例如,面向對象的編程方式(OOP)