官术网_书友最值得收藏!

2.5 迭代模型

針對瀑布模型的缺陷,人們提出了迭代模型(Iterative Model)。在多種迭代模型中,要算美國的I. Jacobson,G. Booch和J. Rumbaugh三位軟件專家提出的RUP(Rational Unified Process)模型最成功。他們在1995年提出了統一建模語言UML(Unified Modeling Language)的雛型,隨后使該語言在Rational Rose開發環境中得到了初步實現,而且在迭代模型的啟發下,于1997年又提出了“統一軟件開發過程”,即USDP(the United Software Development Process),以后又叫做RUP。RUP試圖集中所有的生命周期開發模型的優點,用統一的建模語言UML加以實現。統一軟件開發過程RUP模型的原型,如圖2-3所示。

圖2-3 統一軟件開發過程RUP模型

所謂迭代,是指活動的多次重復。從這個意義上講,原型不斷完善,增量不斷產生,都是迭代的過程。因此,快速原型法和增量模型都可以看成是局部迭代模型。但這里所講的迭代模型是RUP推出的一種“逐步求精”的面向對象的軟件開發過程模型,被認為是軟件界迄今為止最完善、可實現商品化的開發過程模型。

圖2-3看起來非常簡單,其內涵卻非常豐富。它表面上是一個二維圖,實質上用一張二維圖,表示了一個多維空間模型。從宏觀上看,它是一個大的迭代過程:橫坐標表示軟件產品所處的4個階段狀態:先啟、精化、構建、產品化(移交),縱坐標表示軟件產品在每個階段的工作流程。從微觀上看,任何一個階段本身,其內部工作流程也是一個小的迭代過程。

1.模型的本意

在計算方法(或數值分析)課程中,迭代是一種逼近真值的算法。例如,要尋求某個問題的真值,可以設計一種迭代算法,第1 次給定一個初值,這個初值離真值可能很遠,誤差很大,進行第1次計算,得到第2個值。第2個值,離真值會近一些,但誤差還是不小,沒關系,再把這個值當新的初值,再計算一次,又產生第3個值。第3個值,離真值更近了,誤差更小了……這樣循環迭代計算N次下去,直到第N個值與第N+1個值之間的誤差足夠小,完全滿足預先設定的誤差范圍為止,就用第N+1個值當作真值的近似值。在許多問題中,沒有誤差的真值可能是求不出來的。這就是迭代模型思想的來源。

為使項目能夠順利地進行,一種較靈活(并且風險更小)的方法是:多次執行各個開發工作流程,從而更好地理解需求,設計出更為強壯的軟件構架,逐步提高開發組織能力,最終交付一系列逐步完善的實施成果,這就是迭代生命周期模型。每次按順序完成一系列工作流程就叫做一次迭代,每次迭代,均以次要里程碑(Minor Milestone)結束,按照特定的迭代成功標準,對迭代的結果進行評估。每個階段都可以進一步細分為迭代。迭代是產生可執行的產品發布(內部的或外部的)的完整開發循環,所發布的產品是開發過程最終產品的子集,它將通過一次又一次的迭代,實現遞增成長,最后形成最終的軟件系統或產品。

2.模型的特點

迭代模型的特點是:迭代或迭代循環驅動,每一次迭代或迭代循環,均要走完初始(先啟)、精化、構建、產品化(移交)這4個階段。RUP的主要特征如下:

(1)采用迭代的、增量式的開發過程。

(2)采用UML語言描述軟件開發過程。

(3)有功能強大的軟件工具Rational Rose支撐。

面向對象的方法,尤其是面向對象的CASE工具Rational Rose,適用于迭代模型。或者說,迭代模型適用面向對象的Rational Rose工具。

3.模型的選取條件

根據軟件開發的實際情況,建議以下類型的項目,可以考慮使用迭代生命周期模型。

(1)生命周期模型是以迭代為主要特征的。項目組的管理人員和核心成員,應對迭代的開發方式比較熟悉,并具有豐富的軟件工程知識和實施經驗。

(2)項目組的管理人員和核心成員應對軟件工程的核心過程:系統建模、需求分析、系統設計、系統實現、項目管理、配置管理、測試等比較熟悉。

(3)面向對象技術比較適合采用迭代方式進行,采用面向對象技術(如OOA,OOD等)的項目組,建議使用迭代生命周期模型。

(4)該生命周期模型是以軟件構架為中心的開發方式,項目組的核心設計人員,應具備一定程度的軟件架構知識,并熟練掌握軟件架構設計技能。

(5)項目組全體成員應熟悉UML,并能利用建模工具(如Rational Rose等)進行分析、策劃、設計、測試等。

(6)該生命周期模型是以風險管理為驅動的開發方式,項目組的管理人員應具備風險管理的知識和技能。

(7)擁有實施軟件產品開發、組裝的軟件組織。

迭代模型要求的條件是最苛刻的,初學者不宜隨便使用。該模型一般用在中小型應用軟件的開發上,系統軟件的開發很少采用迭代模型。

4.模型的4個階段

迭代生命周期模型分為以下4個階段:

(1)初始階段。本階段主要工作是確定系統的業務用例(Use Case,許多書上翻譯為用況)和定義項目的范圍。為此,需要標識系統要交互的外部實體,定義高層次的交互規律,定義所有的用例并對個別重要的用例進行描述和實現。業務用例包括成功的評估、風險確認、資源需求和以階段里程碑表示的階段計劃。

(2)精化階段。本階段主要工作是分析問題域,細化產品定義,定義系統的構架并建立基線,為構建階段的設計和實施提供一個穩定的基礎。為驗證構架,可能要實現系統的原型,執行重要的用況。

(3)構建階段。本階段主要工作是反復地開發,以完善產品,達到用戶的要求。這包括了用例的描述、完成設計、完成實現和對軟件進行測試等工作。

(4)產品化(移交)階段。本階段主要工作是將產品交付給用戶,包括安裝、培訓、交付、維護等工作。

5.模型的9個核心流程

迭代生命周期模型包含9 個核心流程(需要指出,采用迭代模型,事先要有一個初始業務模型,以便進行迭代。這就是為什么將“業務建模”作為9個核心流程之首的道理):

(1)業務建模。目的在于,了解目標組織(將要在其中部署系統的組織)的結構及機制;了解目標組織中當前存在的問題,并確定改進的可能性;確保客戶、最終用戶和開發人員就目標組織達成共識;導出支持目標組織所需的系統需求。通俗地講,業務建模就是用戶業務流程的重新規劃與合理改進,即業務流程的優化,目的是使開發出來的系統能反映最優化的業務流程。

(2)需求獲取。目的在于,與客戶在系統的工作內容方面達成并保持一致;使系統開發人員能夠更清楚地了解系統需求;定義系統邊界;為計劃迭代的內容提供基礎;為估算開發系統所需成本和時間提供基礎;定義系統的用戶界面,重點是用戶的需要和目標。

(3)分析設計。目的在于,將需求轉換為未來系統的設計;逐步開發強壯的系統構架;使設計適合實施環境,為提高性能而進行設計。

(4)實施。目的在于,對照實施子系統的分層結構定義代碼結構;以構件(源文件、二進制文件、可執行文件以及其他文件等)方式實施類和對象;對已開發的構件按單元進行測試;將各實施成員(或團隊)完成的結果集成到可執行系統中。

(5)測試。目的在于,核實對象之間的交互;核實軟件的所有構件是否正確集成;核實所有需求是否已經正確實施;確定缺陷并確保在部署軟件之前將缺陷解決。

(6)部署。目的在于,將構件部署到網絡的各個節點上,使最終用戶可以使用該軟件產品。

(7)配置與變更管理,目的在于,始終保持工作產品的完整性和一致性。

(8)項目管理。目的在于,為軟件密集型項目的管理提供框架;為項目計劃、人員配備、執行和監測提供實用準則;為風險管理提供框架。

(9)環境。目的在于,為軟件開發組織提供軟件開發環境(流程和工具),該環境將支持開發團隊。

6.模型的優點

迭代模型的優點是:在開發的早期或中期,用戶需求可以變化;在迭代之初,不要求有一個相近的產品原型;模型的適用范圍很廣,幾乎適用于所有項目的開發。

7.模型的缺點

迭代模型的缺點是:傳統的組織方法是按順序(一次且僅一次)完成每個工作流程,即瀑布式生命周期。迭代模型采取循環工作方式,每次循環均使工作產品更靠近目標產品,這要求項目組成員具有很高的水平并掌握先進的開發工具。反之,存在較大的技術和技能風險。

對于統一軟件開發過程RUP的提出,也存在不同的聲音。理由是:方法與模型越通用,實用性可能越差。因此,反對者甚至提出:開發模型的最佳選擇,是為用戶定制開發過程。這就是矛盾的普遍性與特殊性的關系,即共性與個性的關系。不管怎樣,UML和RUP的提出,確實是軟件工程發展史上一個新的里程碑。

主站蜘蛛池模板: 兰西县| 沙河市| 大足县| 来凤县| 汉中市| 砚山县| 长白| 伊金霍洛旗| 错那县| 林芝县| 阿坝县| 得荣县| 邵阳县| 驻马店市| 盘山县| 无锡市| 乌鲁木齐县| 阿勒泰市| 景宁| 襄樊市| 芮城县| 边坝县| 孟津县| 天水市| 靖西县| 股票| 定南县| 玉屏| 高碑店市| 肇庆市| 察隅县| 固阳县| 临湘市| 新民市| 河源市| 新兴县| 芒康县| 屏边| 清水河县| 牙克石市| 东台市|