商業建模工作流描述了如何為新的目標組織開發一個構想,并基于這個構想在商業用例模型和商業對象模型中定義組織的過程,角色和責任。
2. 需求(Requirements)
需求工作流的目標是描述系統應該做什么,并使開發人員和用戶就這一描述達成共識。為了達到該目標,要對需要的功能和約束進行提取、組織、文檔化;最重要的是理解系統所解決問題的定義和范圍。
3. 分析和設計(Analysis & Design)
分析和設計工作流將需求轉化成未來系統的設計,為系統開發一個健壯的結構并調整設計使其與實現環境相匹配,優化其性能。分析設計的結果是一個設計模型和一個可選的分析模型。設計模型是源代碼的抽象,由設計類和一些描述組成。設計類被組織成具有良好接口的設計包(Package)和設計子系統(Subsystem),而描述則體現了類的對象如何協同工作實現用例的功能。
設計活動以體系結構設計為中心,體系結構由若干結構視圖來表達,結構視圖是整個設計的抽象和簡化,該視圖中省略了一些細節,使重要的特點體現得更加清晰。體系結構不僅僅是良好設計模型的承載媒介,而且在系統的開發中能提高被創建模型的質量。
4. 實現(Implementation)
實現工作流的目的包括以層次化的子系統形式定義代碼的組織結構;以組件的形式(源文件、二進制文件、可執行文件)實現類和對象;將開發出的組件作為單元進行測試以及集成由單個開發者(或小組)所產生的結果,使其成為可執行的系統。
5. 測試(Test)
測試工作流要驗證對象間的交互作用,驗證軟件中所有組件的正確集成,檢驗所有的需求已被正確的實現, 識別并確認缺陷在軟件部署之前被提出并處理。RUP提出了迭代的方法,意味著在整個項目中進行測試,從而盡可能早地發現缺陷,從根本上降低了修改缺陷的成本。測試類似于三維模型,分別從可靠性、功能性和系統性能來進行。
6. 部署(Deployment)
部署工作流的目的是成功的生成版本并將軟件分發給最終用戶。部署工作流描述了那些與確保軟件產品對最終用戶具有可用性相關的活動,包括:軟件打包、生成軟件本身以外的產品、安裝軟件、為用戶提供幫助。在有些情況下,還可能包括計劃和進行beta測試版、移植現有的軟件和數據以及正式驗收。
7. 配置和變更管理(Configuration & Change Management)
配置和變更管理工作流描繪了如何在多個成員組成的項目中控制大量的產物。配置和變更管理工作流提供了準則來管理演化系統中的多個變體,跟蹤軟件創建過程中的版本。工作流描述了如何管理并行開發、分布式開發、如何自動化創建工程。同時也闡述了對產品修改原因、時間、人員保持審計記錄。
8. 項目管理(Project Management)
軟件項目管理平衡各種可能產生沖突的目標,管理風險,克服各種約束并成功交付使用戶滿意的產品。其目標包括:為項目的管理提供框架,為計劃、人員配備、執行和監控項目提供實用的準則,為管理風險提供框架等。
9. 環境(Environment)
環境工作流的目的是向軟件開發組織提供軟件開發環境,包括過程和工具。環境工作流集中于配置項目過程中所需要的活動,同樣也支持開發項目規范的活動,提供了逐步的指導手冊并介紹了如何在組織中實現過程。
五 RUP的迭代開發模式
RUP中的每個階段可以進一步分解為迭代。一個迭代是一個完整的開發循環,產生一個可執行的產品版本,是最終產品的一個子集,它增量式地發展,從一個迭代過程到另一個迭代過程到成為最終的系統。
傳統上的項目組織是順序通過每個工作流,每個工作流只有一次,也就是我們熟悉的瀑布生命周期。這樣做的結果是到實現末期產品完成并開始測試,在分析、設計和實現階段所遺留的隱藏問題會大量出現,項目可能要停止并開始一個漫長的錯誤修正周期。
一種更靈活,風險更小的方法是多次通過不同的開發工作流,這樣可以更好的理解需求,構造一個健壯的體系結構,并最終交付一系列逐步完成的版本。這叫做一個迭代生命周期。在工作流中的每一次順序的通過稱為一次迭代。軟件生命周期是迭代的連續,通過它,軟件是增量的開發。一次迭代包括了生成一個可執行版本的開發活動,還有使用這個版本所必需的其他輔助成分,如版本描述、用戶文檔等。因此一個開發迭代在某種意義上是在所有工作流中的一次完整的經過,這些工作流至少包括:需求工作流、分析和設計工作流、實現工作流、測試工作流。其本身就像一個小型的瀑布項目
與傳統的瀑布模型相比較,迭代過程具有以下優點:
降低了在一個增量上的開支風險。如果開發人員重復某個迭代,那么損失只是這一個開發有誤的迭代的花費。
降低了產品無法按照既定進度進入市場的風險。通過在開發早期就確定風險,可以盡早來解決而不至于在開發后期匆匆忙忙。
加快了整個開發工作的進度。因為開發人員清楚問題的焦點所在,他們的工作會更有效率。
由于用戶的需求并不能在一開始就作出完全的界定,它們通常是在后續階段中不斷細化的。因此,迭代過程這種模式使適應需求的變化會更容易些。
六總結
RUP具有很多長處:提高了團隊生產力,在迭代的開發過程、需求管理、基于組件的體系結構、可視化軟件建模、驗證軟件質量及控制軟件變更等方面,針對所有關鍵的開發活動為每個開發成員提供了必要的準則、模板和工具指導,并確保全體成員共享相同的知識基礎。它建立了簡潔和清晰的過程結構,為開發過程提供較大的通用性。但同時它也存在一些不足: RUP只是一個開發過程,并沒有涵蓋軟件過程的全部內容,例如它缺少關于軟件運行和支持等方面的內容;此外,它沒有支持多項目的開發結構,這在一定程度上降低了在開發組織內大范圍實現重用的可能性??梢哉fRUP是一個非常好的開端,但并不完美,在實際的應用中可以根據需要對其進行改進并可以用OPEN和OOSP等其他軟件過程的相關內容對RUP進行補充和完善。