天天看點

轉軟體開發過程學習總結

軟體開發過程學習總結

目的:初步了解CMM、RUP、XP分别是怎樣的過程,弄懂其關鍵步驟,分析其優劣及适應情況。最後綜各家之長,給出一個可能較實用可行的軟體開發過程體系X Process,以用在項目(或産品)開發中。

By Robin Zhang. http://robinzhang.cnblogs.com/ MSN:[email protected]

一、       CMM

1. 綜述

CMM2-CMM3,可以看作是一個嚴謹的,傳統瀑布式的開發體系。

CMM并未提供具體的過程體系,它隻是一個評價标準(“軟體能力成熟度”)。

但它提供了一個目标:一個可重複指派成功經驗的開發體系應該是怎樣的。

知識點:

1).通常應該從CMM2開始實作,一般做到CMM3的已經難得了。

2).CMM2是一套已定義的項目管理過程,CMM3是總結不同項目的經驗,最終形成組織(公司)的一套過程标準。

3).可以考慮交叉引用,即上CMM2及CMM3的教育訓練、同行評審。

4).CMM與CMMI的差別:前者僅限于軟體工程,後者還包括其他學科的CMM,如系統工程等;前者一般意味着瀑布過程,後者支援疊代方法。

參考:

CMM2:“定義了項目管理過程,将項目劃分成幾個明确定義的階段,每個階段結束都是控制點,增加了軟體開發過程的透明度和可控性。項目執行中好

    的經驗可以在别的項目中重複,軟體開發有了一定的保證。”

CMM3: “是對CMM 2 項目管理的全面整合和提高,綜合公司所有類型項目的過程經驗,制定公司統一的最佳過程,增加了對項目每個階段的内部過程

    規定和檢查點,使得軟體開發工程更加透明和可控。”

2. 關鍵過程

包括:

CMM2:項目計劃、需求管理、配置管理、品質管理、項目過程控制。

CMM3:同行評審(需求、設計、代碼評審)、教育訓練計劃、體系規範

注:能做到上面8項就可以了。

CMM等級 關鍵域 KPA 對應産出、流程操作 相關産出、過程(參考)
CMM2 需求管理 需求基線 項目建議書,概要需求,需求評審,需求規格書
軟體項目計劃 建立一個合理有效的軟體項目計劃 軟體項目立項書、風險分析控制報告等                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          
軟體項目跟蹤和監督 項目管理,過程管理 任務分解、下達,每日耗費,每周例會,單元測試報告,裡程碑等
軟體配置管理 辨別軟體配置項,建立産品基線庫,對配置項的修改加以系統的控制 配置管理計劃,VSS代碼庫,版本,代碼同步,示範帳套
軟體品質管理 單元測試、功能測試、繼承測試等 品質保證計劃,測試計劃,測試用例,産品品質報告,單元測試、功能測試、繼承測試等
子合同管理 外包管理  
CMM3 同行評審 需求評審,設計評審,代碼評審
教育訓練計劃 知識共享,内部教育訓練,VSS共享,創新獎等
組織級過程焦點,組織級過程定義,內建軟體管理,軟體産品工程,組間協調,  

1.各種規範:需求、分析設計、編碼、

資料庫規範。

2.體系規定文檔

3. 适用情況

1).中大型軟體企業,同時進行多個項目、産品的研發(必須有一套體系以便管理、控制)。

2).需求比較明确,并已經定義當機的情況,如産品項目。

3)适合用瀑布式過程開發的項目。

4. 優劣

優點:體系嚴謹,提高了軟體開發過程的透明度和可控性,令項目成功經驗可以重複複制。

缺點:因瀑布過程需要,要求需求當機,導緻需求過程要求非常高。而在項目中,需求變更是不可避免的。

5. 其他

企業上到一定規模,偏重産品開發時,可以考慮上CMM。中小軟體企業可借鑒并精簡地實作它的關鍵過程,如項目計劃、需求管理、配置管理、

品質管理、項目過程控制、同行評審、教育訓練計劃。

二、      RUP

1.    綜述

RUP是一個由用例驅動、以架構為中心的、疊代增量的開發過程架構。

2.    關鍵過程

疊代開發過程及産出:見:《UML和設計模式》第一頁。

流程 工件 初始 精化 構造 傳遞
項目管理 軟體開發計劃等

S:1)定義項目目的,範圍、限制。

2)第一個疊代計劃

1)  分析需求用例,确定疊代計劃(任務時間表)。

2)  确定編碼等規範

3)  需求基線

1)按疊代計劃進行開發

2)每個疊代都實作一個用例集,包含一個設計編碼測試過程。

客戶測試評估

上線運作

業務模組化 領域模型 S 細化模組化
需求 用例模型、需求規格說明書、補充需求文檔 S:1)确定Actor及其需要。2)确定最重要的用例 R 1)編寫詳細用例需求規格書 2)确定更多使用者需要、産品特性、用例集合并确定其優先級重要性風險。需求初步基線。 r疊代過程中允許需求變更,但必須受控,分析對目前需求的影響,再決定是否在下一個疊代基線進去。
設計 設計模型、軟體架構文檔 R挑選部分重要用例,開始建設計模型 R對疊代内的用例進行更詳細的設計
實作 實作代碼 S 1)實作部分重要且風險大的用例,以驗證并确定架構設計。 R 全力編碼,按時完成疊代内的用例實作。
測試 測試用例 S根據用例編寫測試用例 測試已實作疊代功能,編寫新疊代的測試用例
文檔等 使用文檔等 s 産品文檔,使用者教育訓練
産出 項目計劃書(前景文檔)、高層用例模型、最重要用例規格說明書、(概要設計說明書?)、開發環境(總體軟體架構、開發規範) 80%詳細需求規格書(用例集及補充說明書)、用例模型、領域模型及設計模型,部分詳細設計文檔,部分測試用例,産生一個可執行的原型(實作部分重要用例) 内部發版,可用于測試的完整産品。詳細設計說明書
産出2 項目計劃、概要需求清單、初步架構說明、重要用例需求規格書、編碼規範 需求規格說明書(80%),概要設計文檔(?)、項目疊代計劃、重要用例的設計及實作, 設計模型,詳細設計說明書,代碼實作,測試用例(疊代) 産品、說明文檔,使用者教育訓練

s開始,r精化提煉

3.    适用情況

4.    優劣

5.    其他

參考:

三、       XP

Xp注重人的因數,提倡盡量靈活輕量級的過程。

重要過程:測試驅動、疊代開發、持續內建建構、客戶現場參與(确定疊代内的功能集,提供業務邏輯的确認,驗證程式等)、隻在必要時做簡單設計

一)、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.       下面是按傳統瀑布式的過程,來考察三種過程方法在各個階段的活動及産出。

過程 RUP CMM XP
項目啟動 先啟 項目計劃、風險清單、過程控制、配置計劃、概要需求清單等 客戶盡可能參與
需求調研 先啟、精化(用例模型) 需求管理、需求評審、需求基線 客戶盡可能參與
分析設計 精化、建構(領域模型、設計模型) 設計評審、軟體配置、教育訓練計劃 靈活設計、需求變更
編碼實作 建構、啟動、精華(代碼) 代碼評審、需求變更控制 測試驅動開發、重構、編碼規範、日建構、小版本釋出、簡單實作
測試 建構、精化 品質管理 Unit Test
文檔及實施等 傳遞