軟體開發過程學習總結目的:初步了解CMM、RUP、XP分别是怎樣的過程,弄懂其關鍵步驟,分析其優劣及适應情況。最後綜各家之長,給出一個可能較實用可行的軟體開發過程體系X Process,以用在項目(或産品)開發中。 By Robin Zhang. http://robinzhang.cnblogs.com/ MSN:[email protected] 一、 CMM1. 綜述 CMM2-CMM3,可以看作是一個嚴謹的,傳統瀑布式的開發體系。 CMM并未提供具體的過程體系,它隻是一個評價标準(“軟體能力成熟度”)。 但它提供了一個目标:一個可重複指派成功經驗的開發體系應該是怎樣的。 知識點: 1).通常應該從CMM2開始實作,一般做到CMM3的已經難得了。 2).CMM2是一套已定義的項目管理過程,CMM3是總結不同項目的經驗,最終形成組織(公司)的一套過程标準。 3).可以考慮交叉引用,即上CMM2及CMM3的教育訓練、同行評審。 4).CMM與CMMI的差別:前者僅限于軟體工程,後者還包括其他學科的CMM,如系統工程等;前者一般意味着瀑布過程,後者支援疊代方法。 參考: CMM2:“定義了項目管理過程,将項目劃分成幾個明确定義的階段,每個階段結束都是控制點,增加了軟體開發過程的透明度和可控性。項目執行中好 的經驗可以在别的項目中重複,軟體開發有了一定的保證。” CMM3: “是對CMM 2 項目管理的全面整合和提高,綜合公司所有類型項目的過程經驗,制定公司統一的最佳過程,增加了對項目每個階段的内部過程 規定和檢查點,使得軟體開發工程更加透明和可控。” 2. 關鍵過程 包括: CMM2:項目計劃、需求管理、配置管理、品質管理、項目過程控制。 CMM3:同行評審(需求、設計、代碼評審)、教育訓練計劃、體系規範 注:能做到上面8項就可以了。
3. 适用情況 1).中大型軟體企業,同時進行多個項目、産品的研發(必須有一套體系以便管理、控制)。 2).需求比較明确,并已經定義當機的情況,如産品項目。 3)适合用瀑布式過程開發的項目。 4. 優劣 優點:體系嚴謹,提高了軟體開發過程的透明度和可控性,令項目成功經驗可以重複複制。 缺點:因瀑布過程需要,要求需求當機,導緻需求過程要求非常高。而在項目中,需求變更是不可避免的。 5. 其他 企業上到一定規模,偏重産品開發時,可以考慮上CMM。中小軟體企業可借鑒并精簡地實作它的關鍵過程,如項目計劃、需求管理、配置管理、 品質管理、項目過程控制、同行評審、教育訓練計劃。 二、 RUP1. 綜述 RUP是一個由用例驅動、以架構為中心的、疊代增量的開發過程架構。 2. 關鍵過程 疊代開發過程及産出:見:《UML和設計模式》第一頁。
s開始,r精化提煉 3. 适用情況 4. 優劣 5. 其他 參考: 三、 XPXp注重人的因數,提倡盡量靈活輕量級的過程。 重要過程:測試驅動、疊代開發、持續內建建構、客戶現場參與(确定疊代内的功能集,提供業務邏輯的确認,驗證程式等)、隻在必要時做簡單設計 一)、Xp的缺點: 1. 要求客戶現場參與。通常國内項目都是前期作需求确認,無法提供整個開發過程的需求确認支援。除非是分段來确認(如疊代結束時)。 2. 測試驅動開發。目前還很難做到,因為編寫測試腳本需要花費不少精力,一般項目無法做到。由此也無法作重構,無法保證能有靈活的設計 來支援因前期不明确的需求而導緻的變更。 3. 缺少文檔、設計支援。Xp隻在必要時才寫文檔及設計,這樣可能導緻xp新手缺乏良好的設計指引,項目開發過程透明度不夠,可能會失控。 二)、xp可借鑒的地方 1. 對整個開發過程:疊代開發、持續內建 2. 對特定疊代:編碼規範、保持設計靈活(允許需求改動) 3. 設計編碼過程:測試驅動、重構(用在編碼過程中,以用戶端來“測試驅動”業務邏輯層、以重構減少重複代碼) 參考: 四、實用過程X Process:RUP+XP,并達到CMM2-3考慮目前國内項目現況:需求調研先行,但需求不明确導緻需求變更。中小公司缺乏過程規範指導,基本在CMM1即混亂狀态。 X Process = CMM的體系+RUP的過程+XP的最佳實踐 參考文檔:xp_vs_cmm.pdf, RUPvsXP.pdf, RUP and XP.pdf,dX Process 1. 過程:取RUP的過程 過程還是取項目啟動、細化、建構、傳遞四個過程。 啟動階段: 定義項目計劃、風險分析、項目前景、範圍、限制;确定Actor、涉衆及收益;确定概要需求;作一個原型,實作關鍵用例。 細化階段: 确定使用者需要、産品特性并确認優先級、風險;确定80%需求,編寫需求規格書。制定疊代計劃,需求基線;完成重要用例的設計及實作, 由此确定系統架構及第三方元件。已制定疊代計劃。同時編寫對應用例的測試用例。 建構階段: 按計劃疊代開發。在每個疊代裡采用小瀑布的方式,應用部分XP的最佳實踐(見下2),每個疊代為一個裡程碑,送出給客戶确認,由此得到 需求變更,分析後調整疊代計劃。 傳遞階段: 送出客戶測試,作小的修改。編寫産品說明,使用者教育訓練,上線運作。項目總結、關閉報告。 2. 疊代内的步驟:取xp的最佳實踐 合并細化的後期+構造期,為“設計程式設計期”,在這期間,啟用“保持設計靈活”、編碼規範、代碼稽核(結隊程式設計)、持續內建、測試驅動、 重構的最佳實踐。 3. 使用CMM的關鍵域的規範流程,,以達到CMM2-3的效果 在RUP的四個階段中,應用CMM的關鍵域,來保證各種産出的品質。如下: 先啟階段:項目計劃、項目過程控制、配置管理、教育訓練計劃(設計、編碼規範) 細化階段:體系規範、同行評審(需求、設計、代碼評審)、需求管理、品質管理 建構階段:編碼規範、設計、代碼評審、需求變更管理 傳遞階段:體系規範 三者的關系如下: 1. RUP:是由用例驅動、疊代增量開發的過程,主要定義了各個階段應該做什麼,做到什麼程度。 2. CMM:是一套評估标準,提供了一些關鍵實作域(需求管理等),對每一個産出提出了品質要求。 3. XP:主要關注編碼階段的一些最佳實踐。是一個提倡靈活的輕量級軟體開發方法。強調“交流;簡單;回報;實事求是”。強調客戶參與, 簡單設計(靈活設計)、允許需求變更等。 4. 下面是按傳統瀑布式的過程,來考察三種過程方法在各個階段的活動及産出。
|