統一軟件開發過程(RUP)分析

什麼是RUP?

RUP(Rational Unified Process),統一軟件開發過程統一軟件過程是一個面向對象且基於網絡的程序開發方法論。

RUP是風險驅動的、基於Use Case技術的、以架構爲中心的、迭代的、可配置的軟件開發流程。

RUP描述瞭如何有效地利用商業的可靠的方法開發和部署軟件,是一種重量級過程(也被稱作厚方法學),因此特別適用於大型軟件團隊開發大型項目

 

核心概念

RUP中定義的核心概念主要有角色、活動和工作

(1)角色:RUP預先定義了許多角色,角色描述了在項目開發中,一個人或者一個開發團隊的工作職能與任務。

(2)活動:它是一個有明確功能的獨立模塊,反映了系統的某個功能。

(3)工件:是在活動進行過程中產生、創建或修改的一段信息,同時也是項目開發的文檔資料

 

開發過程

RUP中的軟件生命週期在時間上被分解爲四個順序的階段,分別是:初始階段、細化階段、構造階段和交付階段。每個階段結束於一個主要的里程碑。每個階段本質上是兩個里程碑之間的時間跨度。在每個階段的結尾執行一次評估以確定這個階段的目標是否已經滿足。如果評估結果令人滿意的話,可以允許項目進入下一個階段。

初始階段

(1)對需求有大概瞭解,確定系統中大多數角色和用例。

(2)劃分主要子系統,給出系統的體系結構概貌

(3)分析整個項目進行中的業務和需求方面的主要風險,評價項目可行性。

(4)考慮時間、經費、技術、項目規模和效益等因素

(5)制定開發計劃

(6)初始階段結束時是第一個重要的里程碑:生命週期目標里程碑。生命週期目標里程碑評價項目基本的生存能力

 

細化階段

(1)進行需求風險分析。考慮項目目標是否偏離用戶需求

(2)進行技術風險分析。通過建立原型等方法,考慮所選技術方案可行性

(3)進行技能風險分析。考慮實施項目人員素質能否勝任項目要求

(4)進行政策風險分析。考慮政策性因素對項目的影響

(5)進行高層分析和設計,並作出結構性決策。

(6)產生簡要體系結構,包括用例列表、領域概念模型和技術平臺等

(7)爲構造制定計劃

(8)同時爲項目建立支持環境,包括創建開發案例,創建模板、準則並準備工具。

(9)細化階段結束時第二個重要的里程碑:生命週期結構里程碑。生命週期結構里程碑爲系統的結構建立了管理基準並使項目小組能夠在構建階段中進行衡量。此刻,要檢驗詳細的系統目標和範圍、結構的選擇以及主要風險的解決方案

 

構造階段

(1)構建階段是一個製造過程,其重點放在管理資源及控制運作以優化成本、進度和質量,迭代增量的開發一個完整的軟件系統。

(2)在構建階段,所有剩餘的構件和應用程序功能被開發並集成爲產品,所有的功能被詳細測試。

(3)構建階段結束時是第三個重要的里程碑:初始功能里程碑。初始功能里程碑決定了產品是否可以在測試環境中進行部署。此刻,要確定軟件、環境、用戶是否可以開始系統的運作。此時的產品版本也常被稱爲“beta”版

 

交付階段

(1)交付階段的重點是確保軟件對最終用戶是可用的。

(2)交付階段可以跨越幾次迭代,包括爲發佈做準備的產品測試,基於用戶反饋的少量的調整。用戶反饋應主要集中在產品調整,設置、安裝和可用性問題,所有主要的結構問題應該已經在項目生命週期的早期階段解決了。

(3)在交付階段的終點是第四個里程碑:產品發佈里程碑。此時,要確定目標是否實現,是否應該開始另一個開發週期。在一些情況下這個里程碑可能與下一個週期的初始階段的結束重合

 

核心工作流

RUP中有9個核心工作流,分爲6個核心過程工作流和3個核心支持工作流。這些工作流在整個生命週期中被多次訪問。9個核心工作流在項目中輪流被使用,在每一次迭代中以不同的重點和強度重複

(1)商業建模

商業工作流描述瞭如何爲新的目標組織開發一個構想,並基於這個構想在商業用例模型和商業對象模型中定義組織的過程,角色和責任。

(2)需求

       需求工作流的目標是描述系統應該做什麼,並使開發人員和用戶就這一描述達成共識。爲了達到該目標,要對需要的功能和約束進行提取、組織、文檔化;最重要的是理解系統所解決問題的定義和範圍。

    (3)分析和設計

    分析和設計工作流將需求轉化成未來系統的設計,爲系統開發一個健壯的結構並調整設計使其與實現環境相匹配,優化其性能。分析設計的結果是一個設計模型和一個可選的分析模型。設計模型是源代碼的抽象,由設計類和一些描述組成。設計類被組織成具有良好接口的設計包和設計子系統,而描述則體現了類的對象如何協同工作實現用例的功能。設計活動以體系結構設計爲中心,體系結構由若干結構視圖來表達,結構視圖是整個設計的抽象和簡化,該視圖中省略了一些細節,使重要的特點體現得更加清晰。體系結構不僅僅是良好設計模型的承載媒介,而且在系統的開發中能提高被創建模型的質量。

    (4)實現

    實現工作流的目的包括以層次化的子系統形式定義代碼的組織結構;以組件的形式(源文件二進制文件可執行文件)實現類和對象;將開發出的組件作爲單元進行測試以及集成由單個開發者(或小組)所產生的結果,使其成爲可執行的系統。

    (5)測試

    測試工作流要驗證對象間的交互作用,驗證軟件中所有組件的正確集成,檢驗所有的需求已被正確的實現,識別並確認缺陷在軟件部署之前被提出並處理。RUP提出了迭代的方法,意味着在整個項目中進行測試,從而儘可能早地發現缺陷,從根本上降低了修改缺陷的成本。測試類似於三維模型,分別從可靠性、功能性和系統性能來進行。

    (6)部署

    部署工作流的目的是成功的生成版本並將軟件分發給最終用戶。部署工作流描述了那些與確保軟件產品對最終用戶具有可用性相關的活動,包括:軟件打包、生成軟件本身以外的產品、安裝軟件、爲用戶提供幫助。在有些情況下,還可能包括計劃和進行beta測試版、移植現有的軟件和數據以及正式驗收。

    (7)配置和變更管理

    配置和變更管理工作流描繪瞭如何在多個成員組成的項目中控制大量的產物。配置和變更管理工作流提供了準則來管理演化系統中的多個變體,跟蹤軟件創建過程中的版本。工作流描述瞭如何管理並行開發、分佈式開發、如何自動化創建工程。同時也闡述了對產品修改原因、時間、人員保持審計記錄。

    (8)項目管理

    軟件項目管理平衡各種可能產生衝突的目標,管理風險,克服各種約束併成功交付使用戶滿意的產品。其目標包括:爲項目的管理提供框架,爲計劃、人員配備、執行和監控項目提供實用的準則,爲管理風險提供框架等。

    (9)環境

       環境工作流的目的是向軟件開發組織提供軟件開發環境,包括過程和工具。環境工作流集中於配置項目過程中所需要的活動,同樣也支持開發項目規範的活動,提供了逐步的指導手冊並介紹瞭如何在組織中實現過程

 

開發模式實現

(1)RUP的二維開發模型

RUP軟件開發生命週期是一個二維的軟件開發模型。橫軸通過時間組織,是過程展開的生命週期特徵,體現開發過程的動態結構,用來描述它的術語主要包括週期、階段、迭代里程碑;縱軸以內容來組織爲自然的邏輯活動,體現開發過程的靜態結構,用來描述它的術語主要包括活動、產物、工作者和工作流。如圖

(2)迭代開發模式

RUP中的每個階段可以進一步分解爲迭代。一個迭代是一個完整的開發循環,產生一個可執行的產品版本,是最終產品的一個子集,它增量式地發展,從一個迭代過程到另一個迭代過程到成爲最終的系統

(3)裁剪

RUP是一個通用的過程模板,包含了很多開發指南、製品、開發過程所涉及到的角色說明,由於它非常龐大所以對具體的開發機構和項目,用RUP時還要做裁剪,也就是要對RUP進行配置。RUP就像一個元過程,通過對RUP進行裁剪可以得到很多不同的開發過程,這些軟件開發過程可以看作RUP的具體實例。RUP裁剪可以分爲以下幾步:

(1) 確定本項目需要哪些工作流。RUP的9個核心工作流並不總是需要的,可以取捨。

(2) 確定每個工作流需要哪些製品。

(3) 確定4個階段之間如何演進。確定階段間演進要以風險控制爲原則,決定每個階段要哪些工作流,每個工作流執行到什麼程度,製品有哪些,每個製品完成到什麼程度。

(4) 確定每個階段內的迭代計劃。規劃RUP的4個階段中每次迭代開發的內容。

(5) 規劃工作流內部結構。工作流涉及角色、活動及製品,他的複雜程度與項目規模即角色多少有關。最後規劃工作流的內部結構,通常用活動圖的形式給出

 

RUP開發十大要素

(1)開發前景

 有一個清晰的前景是開發一個滿足涉衆真正需求的產品的關鍵。前景抓住了RUP需求流程的要點:分析問題,理解涉衆需求,定義系統,當需求變化時管理需求。它是軟件項目的一個清晰的、通常是高層的視圖,能被過程中任何決策者或者實施者借用。它捕獲了非常高層的需求和設計約束,讓前景的讀者能理解將要開發的系統。

(2)達成計劃

在RUP中,軟件開發計劃(SDP)綜合了管理項目所需的各種信息,也許會包括一些在先啓階段開發的單獨的內容。SDP必須在整個項目中被維護和更新。

(3)標識和減小風險

在項目早期就標識並處理最大的風險。項目組標識的每一個風險都應該有一個相應的緩解或解決計劃。風險列表應該既作爲項目活動的計劃工具,又作爲確定迭代的基礎

(4)分配和跟蹤任務

對正在進行的活動和進化的產品的客觀數據的連續的分析,通過定期的項目狀態評估提供講述、交流和解決管理問題、技術問題以及項目風險的機制。團隊一旦發現障礙物,就爲這些問題指定一個負責人,並指定解決日期。進度應該定期跟蹤,如有必要,更新應該被髮布。

(5)檢查商業理由

商業理由從商業的角度提供必要的信息,以決定一個項目是否值得投資或繼續進行

(6)設計組織構架

在RUP中,系統的構架是指一個系統關鍵部件的組織或結構,部件之間通過接口交互。要陳述和討論軟件構架,你必須先創建一個構架表示方式,以便描述構架的重要方面。在RUP中,構架表示由軟件構架文檔捕獲,它給構架提供了多個視圖。每個視圖都描述了某一組涉衆所關心的正在進行的系統的某個方面。

(7)構建和測試

在構建階段的每次迭代中,組件不斷的被集成到可執行、經過測試的版本中,不斷地向最終產品進化。

(8)驗證和評價結果

 RUP的迭代評估捕獲迭代的結果。評估決定了迭代滿足評價標準的程度,還包括學到的教訓和實施的過程改進。

(9)管理和控制變化

    當變化發生時管理和控制項目的規模,並且貫穿整個生命週期。

(10)提供用戶支持

    在RUP中,部署流程的要點是包裝和交付產品,同時交付有助於最終用戶學習、使用和維護產品的任何必要的材料

 

RUP的優勢

(1)迭代式開發

    在軟件開發的初期就想完全、準確地獲得用戶的需求基本是不可能的。實際上,設計者常常碰到的問題是需求在整個軟件開發過程中經常會發生變化。而迭代式開發允許每次迭代開發過程中需求發生變化,它正是通過不斷迭代來細化對問題的理解。這樣,迭代式開發大大降低了項目開發的風險,提高了軟件開發的效率

(2)需求管理

    準確地確定系統的需求是一個連續漸進的過程,開發人員不可能在系統開發之前就完全詳細地理解系統的全部需求。而RUP正是提供瞭如何獲得、組織系統的功能和約束條件並將其文檔化的方法

(3)便於複用的軟件體系結構

    組件是可複用的單位,爲了達到軟件複用的目的,可以由組件來組成系統。基於獨立的、可替換的、模塊化組件的體系結構的優點是它方便管理,並能有效地提高軟件的重用性。RUP展示瞭如何設計一個靈活的、有很強適應性的、有利於理解和便於複用的軟件體系結構

(4)有利於可視化建模

    RUP常常和UML相互聯繫,這就有利於建立軟件系統的可視化模型。RUP提供了對軟件系統進行可視化建模的方法

(5)對軟件質量進行驗證

    在RUP中,軟件質量的評估不再是事後進行或單獨小組進行的分離活動,而是貫穿於軟件開發的過程中,這樣就有利於及早發現軟件中存在的不足

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章