軟件過程是指實施于軟件開發和維護中的階段、方法、技術、實踐及相關產物(計劃、文檔、模型、代碼、測試用例和手冊等)的集合。行之有效的軟件過程可以提高開發軟件組織的生產效率、提高軟件質量、降低成本并減少風險。目前市場上領先的軟件過程主要有RUP(Rational Unified Process)、OPEN Process和OOSP(Object-Oriented Software Process)。
RUP具有較高認知度的原因之一恐怕是因為其提出者Rational軟件公司聚集了面向對象領域三位杰出專家Booch、Rumbaugh和Jacobson,同時它又是面向對象開發的行業標準語言??標準建模語言(UML)的創立者。RUP是由Objectory過程演化而來,其初始版本為5.0,先后經歷了5.1、5.11、5.5等版本直到最新的Rational Unified Process2000版本。本文主要討論RUP的主要內容和特點。
二 RUP的二維開發模型
RUP可以用二維坐標來描述。橫軸通過時間組織,是過程展開的生命周期特征,體現開發過程的動態結構,用來描述它的術語主要包括周期(Cycle)、階段(Phase)、迭代(Iteration)和里程碑(Milestone);縱軸以內容來組織為自然的邏輯活動,體現開發過程的靜態結構,用來描述它的術語主要包括活動(Activity)、產物(Artifact)、工作者(Worker)和工作流(Workflow)。如圖1:

圖1 RUP的二維開發模型
三 開發過程中的各個階段和里程碑
RUP中的軟件生命周期在時間上被分解為四個順序的階段,分別是:初始階段(Inception)、細化階段(Elaboration)、構造階段(Construction)和交付階段(Transition)。每個階段結束于一個主要的里程碑(Major Milestones);每個階段本質上是兩個里程碑之間的時間跨度。在每個階段的結尾執行一次評估以確定這個階段的目標是否已經滿足。如果評估結果令人滿意的話,可以允許項目進入下一個階段。
1.初始階段
初始階段有時也稱先啟階段。初始階段的目標是為系統建立商業案例并確定項目的邊界。為了達到該目的必須識別所有與系統交互的外部實體,在較高層次上定義交互的特性。本階段具有非常重要的意義,在這個階段中所關注的是整個項目進行中的業務和需求方面的主要風險。對于建立在原有系統基礎上的開發項目來講,初始階段可能很短。
初始階段結束時是第一個重要的里程碑:生命周期目標(Lifecycle Objective)里程碑。生命周期目標里程碑評價項目基本的生存能力。
2.細化階段
細化階段的目標是分析問題領域,建立健全的體系結構基礎,編制項目計劃,淘汰項目中最高風險的元素。為了達到該目的,必須在理解整個系統的基礎上,對體系結構作出決策,包括其范圍、主要功能和諸如性能等非功能需求。同時為項目建立支持環境,包括創建開發案例,創建模板、準則并準備工具。
細化階段結束時第二個重要的里程碑:生命周期結構(Lifecycle Architecture)里程碑。生命周期結構里程碑為系統的結構建立了管理基準并使項目小組能夠在構建階段中進行衡量。此刻,要檢驗詳細的系統目標和范圍、結構的選擇以及主要風險的解決方案。
3.構造階段
在構建階段,所有剩余的構件和應用程序功能被開發并集成為產品,所有的功能被詳細測試。從某種意義上說,構建階段是一個制造過程,其重點放在管理資源及控制運作以優化成本、進度和質量。
構建階段結束時是第三個重要的里程碑:初始功能(Initial Operational)里程碑。初始功能里程碑決定了產品是否可以在測試環境中進行部署。此刻,要確定軟件、環境、用戶是否可以開始系統的運作。此時的產品版本也常被稱為“beta”版。
4.交付階段
交付階段的重點是確保軟件對最終用戶是可用的。交付階段可以跨越幾次迭代,包括為發布做準備的產品測試,基于用戶反饋的少量的調整。在生命周期的這一點上,用戶反饋應主要集中在產品調整,設置、安裝和可用性問題,所有主要的結構問題應該已經在項目生命周期的早期階段解決了。
在交付階段的終點是第四個里程碑:產品發布(Product Release)里程碑。此時,要確定目標是否實現,是否應該開始另一個開發周期。在一些情況下這個里程碑可能與下一個周期的初始階段的結束重合。
延伸閱讀
文章來源于領測軟件測試網 http://www.kjueaiud.com/