RUP
一 前言軟件過程是指實施於軟件開發(fā)和維護中的階段、方法、技術、實踐及相關產(chǎn)物(計劃、文檔、模型、代碼、測試用例和手冊等)的集合。行之有效的軟件過程可以提高開發(fā)軟件組織的生產(chǎn)效率、提高軟件質(zhì)量、降低成本並減少風險。
RUP具有較高認知度的原因之一恐怕是因為其提出者Rational軟件公司聚集了物件導向領域三位傑出專家Booch、Rumbaugh和 Jacobson,同時它又是物件導向開發(fā)的行業(yè)標準語言——標準建模語言(UML)的創(chuàng)立者。RUP是由Objectory過程演化而來。本文主要討論 RUP的主要內(nèi)容和特點。
二 RUP的二維開發(fā)模型
RUP可以用二維坐標來描述。橫軸通過時間組織,是過程展開的生命週期特徵,體現(xiàn)開發(fā)過程的動態(tài)結(jié)構,用來描述它的術語主要包括週期 (Cycle)、階段(Phase)、迭代(Iteration)和里程碑(Milestone);縱軸以內(nèi)容來組織為自然的邏輯活動,體現(xiàn)開發(fā)過程的靜態(tài)結(jié)構,用來描述它的術語主要包括活動(Activity)、產(chǎn)物(Artifact)、工作者(Worker)和工作流(Workflow)。
三 開發(fā)過程中的各個階段和里程碑
RUP中的軟件生命週期在時間上被分解為四個順序的階段,分別是:初始階段(Inception)、細化階段(Elaboration)、構建階段(Construction)和交付階段(Transition)。每個階段結(jié)束於一個主要的里程碑(Major Milestones);每個階段本質(zhì)上是兩個里程碑之間的時間跨度。在每個階段的結(jié)尾執(zhí)行一次評估以確定這個階段的目標是否已經(jīng)滿足。如果評估結(jié)果令人滿意的話,可以允許項目進入下一個階段。
初始階段(Inception Phase)
初始階段的目標是為系統(tǒng)建立商業(yè)案例並確定項目的邊界。為了達到該目的必須識別所有與系統(tǒng)交互的外部實體,在較高層次上定義交互的特性。本階段具有非常重要的意義,在這個階段中所關注的是整個項目進行中的業(yè)務和需求方面的主要風險。對於建立在原有系統(tǒng)基礎上的開發(fā)項目來講,初始階段可能很短。
初始階段結(jié)束時是第一個重要的里程碑:生命週期目標(Lifecycle Objective)里程碑。生命週期目標里程碑評價項目基本的生存能力。
細化階段(Elaboration Phase)
細化階段的目標是分析問題領域,建立健全的體系結(jié)構基礎,編製項目計劃,淘汰項目中最高風險的元素。為了達到該目的,必須在理解整個系統(tǒng)的基礎上,對體系結(jié)構作出決策,包括其範圍、主要功能和諸如性能等非功能需求。同時為項目建立支持環(huán)境,包括創(chuàng)建開發(fā)案例,創(chuàng)建模板、準則並準備工具。
細化階段結(jié)束時第二個重要的里程碑:生命週期結(jié)構(Lifecycle Architecture)里程碑。生命週期結(jié)構里程碑為系統(tǒng)的結(jié)構建立了管理基準並使項目小組能夠在構建階段中進行衡量。此刻,要檢驗詳細的系統(tǒng)目標和範圍、結(jié)構的選擇以及主要風險的解決方案。
構建階段(Construction Phase)
在構建階段,所有剩餘的構件和應用程序功能被開發(fā)並集成為產(chǎn)品,所有的功能被詳細測試。從某種意義上說,構建階段是一個製造過程,其重點放在管理資源及控制運作以優(yōu)化成本、進度和質(zhì)量。
構建階段結(jié)束時是第三個重要的里程碑:初始功能(Initial Operational)里程碑。初始功能里程碑決定了產(chǎn)品是否可以在測試環(huán)境中進行部署。此刻,要確定軟件、環(huán)境、用戶是否可以開始系統(tǒng)的運作。此時的產(chǎn)品版本也常被稱為「beta」版。
交付階段(Transition Phase)
交付階段的重點是確保軟件對最終用戶是可用的。交付階段可以跨越幾次迭代,包括為發(fā)佈做準備的產(chǎn)品測試,基於用戶反饋的少量的調(diào)整。在生命週期的這一點上,用戶反饋應主要集中在產(chǎn)品調(diào)整,設置、安裝和可用性問題,所有主要的結(jié)構問題應該已經(jīng)在項目生命週期的早期階段解決了。
在交付階段的終點是第四個里程碑:產(chǎn)品發(fā)佈(Product Release)里程碑。此時,要確定目標是否實現(xiàn),是否應該開始另一個開發(fā)週期。在一些情況下這個里程碑可能與下一個週期的初始階段的結(jié)束重合。
四 RUP的核心工作流(Core Workflows)
RUP中有9個核心工作流,分為6個核心過程工作流(Core Process Workflows)和3個核心支持工作流(Core Supporting Workflows)。儘管6個核心過程工作流可能使人想起傳統(tǒng)瀑布模型中的幾個階段,但應注意迭代過程中的階段是完全不同的,這些工作流在整個生命週期中一次又一次被訪問。9個核心工作流在項目中輪流被使用,在每一次迭代中以不同的重點和強度重複。
商業(yè)建模(Business Modeling)
商業(yè)建模工作流描述了如何為新的目標組織開發(fā)一個構想,並基於這個構想在商業(yè)用例模型和商業(yè)對像模型中定義組織的過程,角色和責任。
需求(Requirements)
需求工作流的目標是描述系統(tǒng)應該做什麼,並使開發(fā)人員和用戶就這一描述達成共識。為了達到該目標,要對需要的功能和約束進行提取、組織、文檔化;最重要的是理解系統(tǒng)所解決問題的定義和範圍。
分析和設計(Analysis & Design)
分析和設計工作流將需求轉(zhuǎn)化成未來系統(tǒng)的設計,為系統(tǒng)開發(fā)一個健壯的結(jié)構並調(diào)整設計使其與實現(xiàn)環(huán)境相匹配,優(yōu)化其性能。分析設計的結(jié)果是一個設計模型和一個可選的分析模型。設計模型是源代碼的抽像,由設計類和一些描述組成。設計類被組織成具有良好接口的設計包(Package)和設計子系統(tǒng) (Subsystem),而描述則體現(xiàn)了類的對象如何協(xié)同工作實現(xiàn)用例的功能。
設計活動以體系結(jié)構設計為中心,體系結(jié)構由若干結(jié)構視圖來表達,結(jié)構視圖是整個設計的抽像和簡化,該視圖中省略了一些細節(jié),使重要的特點體現(xiàn)得更加清晰。體系結(jié)構不僅僅是良好設計模型的承載媒介,而且在系統(tǒng)的開發(fā)中能提高被創(chuàng)建模型的質(zhì)量。
實現(xiàn)(Implementation)
實現(xiàn)工作流的目的包括以層次化的子系統(tǒng)形式定義代碼的組織結(jié)構;以組件的形式(源文件、二進制文件、可執(zhí)行文件)實現(xiàn)類和對像;將開發(fā)出的組件作為單元進行測試以及集成由單個開發(fā)者(或小組)所產(chǎn)生的結(jié)果,使其成為可執(zhí)行的系統(tǒng)。
測試(Test)
測試工作流要驗證對像間的交互作用,驗證軟件中所有組件的正確集成,檢驗所有的需求已被正確的實現(xiàn), 識別並確認缺陷在軟件部署之前被提出並處理。RUP提出了迭代的方法,意味著在整個項目中進行測試,從而儘可能早地發(fā)現(xiàn)缺陷,從根本上降低了修改缺陷的成本。測試類似於三維模型,分別從可靠性、功能性和系統(tǒng)性能來進行。
部署(Deployment)
部署工作流的目的是成功的生成版本並將軟件分發(fā)給最終用戶。部署工作流描述了那些與確保軟件產(chǎn)品對最終用戶具有可用性相關的活動,包括:軟件打包、生成軟件本身以外的產(chǎn)品、安裝軟件、為用戶提供幫助。在有些情況下,還可能包括計劃和進行beta測試版、移植現(xiàn)有的軟件和數(shù)據(jù)以及正式驗收。
配置和變更管理(Configuration & Change Management)
配置和變更管理工作流描繪了如何在多個成員組成的項目中控制大量的產(chǎn)物。配置和變更管理工作流提供了準則來管理演化系統(tǒng)中的多個變體,跟蹤軟件創(chuàng)建過程中的版本。工作流描述了如何管理並行開發(fā)、分佈式開發(fā)、如何自動化創(chuàng)建工程。同時也闡述了對產(chǎn)品修改原因、時間、人員保持審計記錄。
項目管理(Project Management)
軟件項目管理平衡各種可能產(chǎn)生衝突的目標,管理風險,克服各種約束併成功交付使用戶滿意的產(chǎn)品。其目標包括:為項目的管理提供框架,為計劃、人員配備、執(zhí)行和監(jiān)控項目提供實用的準則,為管理風險提供框架等。
環(huán)境(Environment)
環(huán)境工作流的目的是向軟件開發(fā)組織提供軟件開發(fā)環(huán)境,包括過程和工具。環(huán)境工作流集中於配置項目過程中所需要的活動,同樣也支持開發(fā)項目規(guī)範的活動,提供了逐步的指導手冊並介紹了如何在組織中實現(xiàn)過程。
五 RUP的迭代開發(fā)模式
RUP中的每個階段可以進一步分解為迭代。一個迭代是一個完整的開發(fā)循環(huán),產(chǎn)生一個可執(zhí)行的產(chǎn)品版本,是最終產(chǎn)品的一個子集,它增量式地發(fā)展,從一個迭代過程到另一個迭代過程到成為最終的系統(tǒng)。
傳統(tǒng)上的項目組織是順序通過每個工作流,每個工作流只有一次,也就是我們熟悉的瀑布生命週期。這樣做的結(jié)果是到實現(xiàn)末期產(chǎn)品完成並開始測試,在分析、設計和實現(xiàn)階段所遺留的隱藏問題會大量出現(xiàn),項目可能要停止並開始一個漫長的錯誤修正週期。
一種更靈活,風險更小的方法是多次通過不同的開發(fā)工作流,這樣可以更好的理解需求,構造一個健壯的體系結(jié)構,並最終交付一系列逐步完成的版本。這叫做一個迭代生命週期。在工作流中的每一次順序的通過稱為一次迭代。軟件生命週期是迭代的連續(xù),通過它,軟件是增量的開發(fā)。一次迭代包括了生成一個可執(zhí)行版本的開發(fā)活動,還有使用這個版本所必需的其他輔助成分,如版本描述、用戶文檔等。因此一個開發(fā)迭代在某種意義上是在所有工作流中的一次完整的經(jīng)過,這些工作流至少包括:需求工作流、分析和設計工作流、實現(xiàn)工作流、測試工作流。其本身就像一個小型的瀑布項目。
與傳統(tǒng)的瀑布模型相比較,迭代過程具有以下優(yōu)點:
降低了在一個增量上的開支風險。如果開發(fā)人員重複某個迭代,那麼損失只是這一個開發(fā)有誤的迭代的花費。
降低了產(chǎn)品無法按照既定進度進入市場的風險。通過在開發(fā)早期就確定風險,可以儘早來解決而不至於在開發(fā)後期匆匆忙忙。
加快了整個開發(fā)工作的進度。因為開發(fā)人員清楚問題的焦點所在,他們的工作會更有效率。
由於用戶的需求並不能在一開始就作出完全的界定,它們通常是在後續(xù)階段中不斷細化的。因此,迭代過程這種模式使適應需求的變化會更容易些。
六 總結(jié)
RUP具有很多長處:提高了團隊生產(chǎn)力,在迭代的開發(fā)過程、需求管理、基於組件的體系結(jié)構、可視化軟件建模、驗證軟件質(zhì)量及控制軟件變更等方面,針對所有關鍵的開發(fā)活動為每個開發(fā)成員提供了必要的準則、模板和工具指導,並確保全體成員共享相同的知識基礎。它建立了簡潔和清晰的過程結(jié)構,為開發(fā)過程提供較大的通用性。但同時它也存在一些不足: RUP只是一個開發(fā)過程,並沒有涵蓋軟件過程的全部內(nèi)容,例如它缺少關於軟件運行和支持等方面的內(nèi)容;此外,它沒有支持多項目的開發(fā)結(jié)構,這在一定程度上降低了在開發(fā)組織內(nèi)大範圍實現(xiàn)重用的可能性。可以說RUP是一個非常好的開端,但並不完美。
posted on 2010-03-26 10:29 paulwong 閱讀(348) 評論(0) 編輯 收藏 所屬分類: RUP