軟件的迭代增量式開發

“迭代”的概念,迭代:是數值分析中通過從一個初始估計出發尋找一系列近似解來解決問題(一般是解方程或者方程組)的過程,爲實現這一過程所使用的方法統稱爲迭代法(Iterative Method)。
跟迭代法相對應的是直接法(或者稱爲一次解法),即一次性解決問題。
迭代式開發:迭代式開發也被稱作迭代增量式開發或迭代進化式開發,是一種與傳統的瀑布式開發相反的軟件開發過程,它彌補了傳統開發方式中的一些弱點,具有更高的成功率和生產率。
“迭代過程”:是這樣一個過程,涉及到對一連串可執行的發佈的管理。
“增量過程”:是這樣的過程,涉及到對體系結構的持續集成,以產生各種發佈,每次新的發佈都比上一次的發佈有所改進和提高。可以說這種過程其實是以“風險驅動”的,這意味着每一次新的發佈都致力於降低和處理對軟件開發的最有影響的顯著的風險。(風險管理:風險管理指對項目風險進行識別、分析、並採取應對措施的系統過程。它包括儘量擴大有利於項目目標事項發生的概率與後果,而儘量減小不利於項目目標事項發生的概率與後果。)
在迭代式開發方法中,整個開發工作被組織爲一系列的短小的、固定長度的小項目,被稱爲一系列的迭代。每一次迭代都包括了需求分析、設計、實現與測試。採用這種方法,開發工作可以在需求被完整地確定之前啓動,並在一次迭代中完成系統的一部分功能或業務邏輯的開發工作。再通過客戶的反饋來細化需求,並開始新一輪的迭代。
軟件開發生命週期:軟件開發開發過程包括起始階段、細化階段、構造階段和移交階段,在每一個階段中有需求、設計、編碼和測試這四項活動。“階段”是兩個主要里程碑之間的時間跨度,在階段中將達到一組明確的目標,產生一定的製品。並做出是否進入下一階段的決策,如下圖,在軟件開發生命週期內 包括四個階段:初始、細化、構造、移交。在圖中按照這些階段中工作流進行了劃分,並顯示了他們的焦點隨時間的推移而變化的程度。
clip_p_w_picpath002
圖:軟件開發生命週期
初始:初始階段的目標是在所有涉衆之間達成關於項目的生命週期目標的協議。具有代表性的是,在項目進行之前必須確定重要的業務和需求風險。在此階段萌發的開發想法經過培育至少要達到這樣一個目標:至少在內部奠定一定的基礎,以保證能夠進入到細化階段。
細化:是這個過程的第二個階段。在此階段定義產品需求和體系結構。明確系統需求,按其重要性排序並劃定基線。每個需求都說明了特定的功能或非功能的行爲,併爲測試提供了基礎。細化階段的目標是爲系統體系架構設定基礎,用來爲構建階段的大多數設計和實現工作提供穩定的基礎。細化階段會描繪出一個將必要的業務需求結合了技術體系架構的可執行的系統,並論證所選技術方法的能力。該體系架構進化了對最重要的需求(哪些需求對系統的體系架構有很大的影響)的考慮和對風險的評估。生命週期體系架構里程碑爲系統的體系架構建立了一個受控的基線。
構建:在這個階段的要不斷的對系統的的需求,特別是對系統的評價準則進行檢查,並適當的分配資源,以主動的降低項目的風險;完成基於基本體系架構的系統的開發。構建階段在某種意義上說是一個製造過程,在此階段要強調對資源的管理控制,用來優化成本、進度和質量。在這個意義上說,管理團隊經歷着一個從初始和細化階段的知識產權的開發到構建和產品化階段的可部署產品的開發的變遷。
移交:在此階段將軟件移交給用戶,在這個階段開發過程很少能夠結束,軟件需要持續的改善,以實現在早期版本未實現的特性。移交階段的重點是確保軟件對最終用戶是可用的。實際上是一個軟件產品化的階段,該階段可以跨越若干次迭代,包括爲發佈而進行的產品測試,以及根據用戶反饋做出的較小調整。在生命週期的這個階段,產品版本里程碑是一個需要在此決定項目是否達到目標,及是否應該開始另一個開發循環的位置。從軟件工程和項目管理的觀點出發,隨着迭代的進行,事情會逐日的發生。階段由若干迭代組成 —— 照基本計劃和評價標準的不同序列的活動會致使工件的發佈(內部或外部的)。生命週期的每個階段都由一系列迭代組成。
爲什麼需要“迭代”
一方面:給定的時間內,開發一個大型的複雜的軟件系統,定義問題並構建解決方案是不可能一蹴而就的。在項目的開發過程中,由於體系結構方面的約束,客戶的需要或對原始問題更精確的理解需要有一個過程,需求會經常地變更,因爲客戶對自己想要什麼可能並沒有一個明確的想法。
另一方面:沒有人人夠保證自己所做的軟件是完美無缺的,因此很多時候我們必須對已經開發的部分進行修正,而修正就需要時間。傳統的開發方式下,很多軟件項目都是在匆忙交付後發現用戶不滿意,於是繼續修正,再次引發用戶的不滿意,再次修正,在這樣反覆地拖延中,客戶和軟件開發商都筋疲力盡。
迭代式開發允許通過後續的細化產生對項目更好的理解,並在每個迭代的階段,把項目的最高風險的事項作爲最高優先級的任務集中精力解決。理想的,每一次迭代都以一個可執行的發佈爲結束,這樣可以減少一個項目風險,更多地允許客戶的交互並幫助開發人員集中精力。
我們需要迭代開發,是因爲我們深知對事物的認知就是一個探索的過程,軟件開發也是一樣。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章