八種軟體開發過程模型

前言

所謂軟體過程模型就是一種開發策略,這種策略針對軟體工程的各個階段提供了一套范形,使工程的進展達到預期的目的。對一個軟體的開發無論其大小,我們都需要選擇一個合適的軟體過程模型,這種選擇基於項目和應用的性質、採用的方法、需要的控制,以及要交付的產品的特點。一個錯誤模型的選擇,將迷失我們的開發方向。這裡我們介紹八種軟體開發過程模型,分別是:瀑布模型、V模型、原型模型、螺旋模型、增量模型、RAD模型(線性順序開發模型)、軟體包模型、遺留系統維護模型。下面介紹模型的優缺點和適用情況。

瀑布模型

  • 由於這種方法是從一個階段成瀑布流入下一個階段,所以稱為「瀑布模型」。
  • 瀑布模型是從時間角度對軟體開發和維護的複雜問題進行分解。按軟體生命周期依次劃分為六個階段:可行性研究、需求分析、軟體設計、軟體編碼、軟體測試、運行與維護。

瀑布模型流程

image

瀑布模型總結
運用瀑布模型應堅持做到以下兩點:

  • 每個階段都完成規定的文檔,沒有交出合格的文檔就沒有完成階段性工作。
  • 每個階段結束前都要對提交的文檔進行評審,以便儘早發現問題,改正錯誤。

優缺點及適用情況

image

V模型

V模型是瀑布模型的一種變體,由於整個開發過程構造成一個V字形而得名。

V模型流程

image

總結

  • 從水平方向看
    垂直虛線左邊是分析和設計,是軟體設計實現的過程,同時伴隨著品質保證活動──審核的過程,也就是靜態的測試過程;垂直虛線右邊是對左邊結果的驗證,是動態測試的過程,即對分析和設計的結果進行測試,以確認是否滿足用戶需求。左右兩邊的對應關係如下:

    • 需求分析對應驗收測試。
    • 概要設計對應系統測試。
    • 詳細設計對應集成測試。
    • 軟體編碼對應單元測試。
  • 從垂直方向看
    水平虛線上部,需求分析、系統定義和驗收測試等工作主要是面向用戶。水平虛線下部是技術工作,主要由工程師、技術人員完成。
    從垂直方向看,越在下面,白盒測試方法使用越多,中間部分是灰盒測試方法。在驗收測試過程中,使用黑盒測試方法。

原型模型

軟體工程的原型模型的基本思想是從用戶處收集到的需求出發,初步定義軟體的總體目標,然後根據總體目標進行快速設計,建造一個能夠反映用戶主要需求並且能夠運行的軟體系統原型

原型模型的軟體支撐環境

  • 方便靈活的關係資料庫系統;
  • 完整的程式生成軟體;
  • 與資料庫對應的、方便靈活的數據字典;
  • 可以快速抽象或者容易提煉的原型。

原型模型流程

image

優缺點及適用情況

image

螺旋模型

勃姆(Boehm,B.W)將瀑布模型與快速原型模型結合起來提出了螺旋模型。要求不斷迭代,同時要象螺旋一樣不斷前進,即每次迭代都不是在原水平上進行,是對整個開發過程進行迭代,而不僅僅對編碼、測試進行迭代。

螺旋模型流程

image

  • 工作步驟和內容
    • 確定下一階段目標、開發方案及約束條件。
    • 風險分析、構造原型。
    • 開發、驗證階段軟體產品。
    • 制訂下一階段計劃。

優缺點及適用情況

image

增量模型

增量模型首先創建一組核心功能,或者是項目至關重要的最高優先順序的系統,或者是能夠降低風險的系統。隨後基於核心功能反覆擴展,逐步增加功能以提高性能。
增量模型降低了取得初始功能之前的成本,強調採用構建方法來控制更改需求的影響,提高了創建可操作軟體系統的速度。
增量模型綜合了瀑布模型和原型模型,提倡以功能漸增方式開發軟體。

增量模型流程

image

注意點

  • 良好的可擴展性架構設計,是增量開發成功的基礎;
  • 由於一些模組必須在另一個模組之前完成,所以必須定義良好的介面;
  • 與完整系統相比,增量方式正式評審更難於實現,所以必須定義可行的過程;
  • 要避免把難題往後推,首先完成的應該是高風險和重要的部分;
  • 客戶必須認識到總體成本不會更低;
  • 分析階段採用總體目標而不是完整的需求定義,可能不適應管理;
  • 需要良好的計劃和設計,管理必須注意動態分配工作,技術人員必須注意相關因素的變化。

優缺點及適用情況

image

RAD模型

RAD模型是增量型的軟體開發過程模型,強調極短的開發周期,是瀑布模型的一個「高速」變種,通過大量使用可復用構件,採用基於構件的建造方法進行快速開發。

RAD模型流程

image

使用情況

如果一個業務能夠被模組化使得其中每一個主要功能均可以在不到3個月的時間內完成,則是RAD的一個候選。一個主要功能可由一個單獨的RAD組來實現,最後集成起來形成一個整體。
(1)業務建模。
(2)數據建模。
(3)過程建模。
(4)應用生成。
(5)測試交付。

軟體包模型

主要用於開發依賴於外購(協)軟體產品和可重用軟體包的系統。

軟體包流程

image

開發步驟

(1)需求分析和軟體包標識。
(2)結構定義和軟體包選擇。
(3)系統集成和測試。
(4)技術修改和系統維護。

優缺點及適用情況

image

遺留系統維護模型

主要用於糾錯性維護或者稍加改進一個運行系統。

遺留系統流程

image

優缺點及適用情況

image

總結

本文總結了8中軟體開放過程模型,包括瀑布模型、V模型、原型模型、螺旋模型、增量模型、快速開發模型、遺留系統維護模型。分別整理了他們的流程圖和使用情況!