天天看點

軟體開發模型 - 瀑布模型 快速原型模型 增量模型 螺旋模型 及優缺點詳解

一、軟體開發過程模型

軟體開發模型(Software Development Model)是指軟體開發全部過程、活動和任務的結構架構。軟體開發包括需求、設計、編碼和測試等階段,有時也包括維護階段。 軟體開發模型(目的)能清晰、直覺地表達軟體開發全過程,明确規定了要完成的主要活動和任務,用來作為軟體項目工作的基礎。對于不同的軟體系統,可以采用不同的開發方法、使用不同的程式設計語言以及各種不同技能的人員參與工作、運用不同的管理方法和手段等,以及允許采用不同的軟體工具和不同的軟體工程環境。

軟體開發過程模型是軟體開發人員在公司裡工作的過程。

軟體開發模型 - 瀑布模型 快速原型模型 增量模型 螺旋模型 及優缺點詳解

常見的軟體開發過程模型有:瀑布模型、快速原型模型、增量模型、螺旋模型,在日常開發中,瀑布模型最為常用,需重點學習。

二、瀑布模型
軟體開發模型 - 瀑布模型 快速原型模型 增量模型 螺旋模型 及優缺點詳解

1970年溫斯頓·羅伊斯(Winston Royce)提出了著名的“瀑布模型”,直到80年代早期,它一直是唯一被廣泛采用的軟體開發模型。

瀑布模型核心思想是按工序将問題化簡,将功能的實作與設計分開,便于分工協作,即采用結構化的分析與設計方法将邏輯實作與實體實作分開。将軟體生命周期劃分為制定計劃、需求分析、軟體設計、程式編寫、軟體測試和運作維護等六個基本活動,并且規定了它們自上而下、互相銜接的固定次序,如同瀑布流水,逐級下落。

瀑布模型是最早出現的軟體開發模型,在軟體工程中占有重要的地位,它提供了軟體開發的基本架構。

優點

1. 為項目提供了按階段劃分的檢查點。

2. 目前一階段完成後,您隻需要去關注後續階段。

3. 可在疊代模型中應用瀑布模型。

4. 它提供了一個模闆,這個模闆使得分析、設計、編碼、測試和支援的方法可以在該模闆下有一個共同的指導。

缺點

1. 各個階段的劃分完全固定,階段之間産生大量的文檔,極大地增加了工作量。

2. 由于開發模型是線性的,使用者隻有等到整個過程的末期才能見到開發成果,進而增加了開發風險。

3. 通過過多的強制完成日期和裡程碑來跟蹤各個項目階段。

4. 瀑布模型的突出缺點是不适應使用者需求的變化。

三、快速原型模型
軟體開發模型 - 瀑布模型 快速原型模型 增量模型 螺旋模型 及優缺點詳解

快速原型是利用原型輔助軟體開發的一種新思想。經過簡單快速分析,快速實作一個原型,使用者與開發者在試用原型過程中加強通信與回報,通過反複評價和改進原型,減少誤解,彌補漏洞,适應變化,最終提高軟體品質。

優點

克服瀑布模型的缺點,減少由于軟體需求不明确帶來的開發風險。

缺點

1. 所選用的開發技術和工具不一定符合主流的發展。

2. 快速建立起來的系統結構加上連續的修改可能會導緻産品品質低下。

3. 使用這個模型的前提是要有一個展示性的産品原型,是以在一定程度上可能會限制開發人員的創新。

4. 不适合大型項目的研發。

四、增量模型
軟體開發模型 - 瀑布模型 快速原型模型 增量模型 螺旋模型 及優缺點詳解

增量模型又稱為漸增模型,也稱為有計劃的産品改進模型。

增量模型是把待開發的軟體系統子產品化,将每個子產品作為一個增量元件,進而分批次地分析、設計、編碼和測試這些增量元件。運用增量模型的軟體開發過程是遞增式的過程。相對于瀑布模型而言,采用增量模型進行開發,開發人員不需要一次性地把整個軟體産品送出給使用者,而是可以分批次進行送出。

增量模型也是瀑布模型和原型進化模型的綜合。

優點

1. 将待開發的軟體系統子產品化,可以分批次的送出軟體産品,使使用者可以及時了解軟體項目的進展。

2. 以元件為機關進行開發降低了軟體開發的風險,一個開發周期内的錯誤不會影響到整個軟體系統。

3. 開發順序靈活,開發熱源可以對元件的實作順序進行優先級排序,先完成需要穩定的核心元件,當元件的優先級發生變化時,還能及時的對實作順序進行調整。

缺點

1. 要求待開發的團建能給進行增量式的開發,否則會很麻煩。

2. 在軟體開發過程中需求變化是不可避免的,增量模型的靈活性可以使其适應這種變化的能力大大優于瀑布模型和快速開發模型,但也很容易退化為邊做邊改模型,進而是軟體過程的控制失去整體性。

五、螺旋模型

軟體開發模型 - 瀑布模型 快速原型模型 增量模型 螺旋模型 及優缺點詳解

1988年,巴利·玻姆(Barry Boehm)正式發表了軟體系統開發的“螺旋模型”,它将瀑布模型和快速原型模型結合起來,強調了其他模型所忽視的風險分析,特别适合于大型複雜的系統。

螺旋模型是一種演化軟體開發過程模型,它兼顧了快速原型的疊代的特征以及瀑布模型的系統化與嚴格監控。螺旋模型最大的特點在于引入了其他模型不具備的風險分析,使軟體在無法排除重大風險時有機會停止,以減小損失。同時,在每個疊代階段建構原型是螺旋模型用以減小風險的途徑。螺旋模型更适合大型的昂貴的系統級的軟體應用。

螺旋模型沿着螺線進行若幹次疊代,圖中的四個象限代表了以下活動:

四種象限

1. 制定計劃:确定軟體目标,標明實施方案,弄清項目開發的限制條件;

2. 風險分析:分析評估所選方案,考慮如何識别和消除風險;

3. 實施工程:實施軟體開發和驗證;

4. 客戶評估:評價開發工作,提出修正建議,制定下一步計劃。

螺旋模型由風險驅動,強調可選方案和限制條件進而支援軟體的重用,有助于将軟體品質作為特殊目标融入産品開發之中。

優點

1. 設計靈活可以在項目各個階段進行變更。

2. 風險驅動,每個項目上線前都要進行風險分析。

缺點

1. 螺旋模型強調風險分析,需要相當豐富的風險評估經驗和專門知識,在風險較大的項目開發中,如果未能及時辨別風險,勢必造成重大損失。

2. 如果執行風險分析将大大影響項目的利潤,那麼進行風險分析就毫無意義了。