軟體開發模型 是指軟體開發全部過程、活動和任務的結構架構。給出了軟體開發中各個活動之間的關系,它是軟體開發過程的概括,是軟體工程的重要内容。它能為軟體工程管理提供裡程碑和進度表,為軟體開發提供原則和方法。目前已經出現過多種軟體開發過程模型,其中多數模型主要關注軟體生存周期中從需求分析開始到軟體确認測試為止的過程。
經典的軟體開發模型大體可分為三種類型:瀑布模型;漸進式開發模型,如原型模型,螺旋模型等;變換模型;随着面向對象開發方法,UML的廣泛應用,逐漸出現了與之相适應,針對現代大型和複雜軟體系統的開發過程模型,如統一軟體開發過程(RUP)。
模型 | 說明 | 組成 | 優點 | 缺點 | 适用範圍 |
瀑布模型 | 瀑布模型根據軟體生存周期各個階段的任務從可行性研究開始,逐漸進行變換,直至通過确認測試并得到使用者确認的軟體産品為止。上一階段的變換結果是下一階段變換的輸入,相鄰兩個階段具有因果關系,緊密相聯。 | 從可行性研究階段到确認測試階段依次是可行性研究,需求分析,概要設計,詳細設計,軟體構造,單元測試,內建測試,确認測試,使用與維護。 | 有利于軟體開發方法和工具的研究與使用,進而提高了大型軟體項目開發的品質和效率。 | 1.需求确定後,使用者和軟體項目負責人要等相當長的時間。 2.在軟體開發的初始階段指明軟體系統的全部需求是困難的,有時甚至是不現實的。 | 非經常變動的項目 |
快速原型模型 | 軟體開發人員根據使用者提出的軟體定義,快速地開發一個原型,它向使用者展示了待開發軟體系統的全部或部分功能和性能,在征求使用者對原型意見的過程中,進一步修改,完善,确認軟體系統的需求并達成一緻的了解。 | 有初步需求分析,快速設計,構造原型,使用者評估原型(新需求)原型改進,産品開發等階段。 | 有助于需求的定義和确認,克服了瀑布模型的缺點,減少由于軟體需求不明确帶來的開發風險。 | 1.所選用的開發技術和工具不一定符合主流的發展; 2.快速建立起來的系統結構加上連續的修改可能會導緻産品品質低下。 3.限制開發人員的創新 。 | 使用者需求模糊不明的情況下。 |
螺旋模型 | 以原型為基礎沿螺線旋轉、每轉一圈都經過計劃/風險分析/實施/評估等過程且得到相應新版本、經過若幹次螺旋上升得到最終版本。 | 需求分析 風險分析 工程實作 評審 | 1.設計上的靈活性,可以随時變更。 2.以小的分段來建構大型系統,使成本計算變得簡單容易。 | 很難讓使用者确信這種演化方法的結果是可以控制的。建設周期長,無法滿足目前使用者需求。 | 需求不明确的經常變化的大型複雜系統。 |
統一軟體開發過程 | RUP,是工業界對軟體開發中經實踐證明行之有效的的方法和過程進行總結,主要包括來自疊代式開發,需求管理,基于構件的軟體體系結構,可視化模組化,驗證軟體品質,控制軟體變更等幾個方面的實踐經驗,逐漸完善形成的一種軟體開發過程。此外,RUP非常适合與統一模組化語言UML結合起來使用。RUP開發過程可以用具有兩個坐标的二維結構進行描述。 | 業務模組化 需求 分析與設計 實施 測試 部署 配置與變更管理 項目管理 環境 | 1.提高了團隊生産力。 2.建立了簡潔和清晰的過程結構,為開發過程提供較大的通用性。 3.確定全體成員共享相同的知識基礎 | 缺少關于軟體運作和支援等方面的内容;此外,它沒有支援多項目的開發結構,這在一定程度上降低了在開發組織内大範圍實作重用的可能性。 | 适合經常變動需求的系統。是一個非常好的開端,可以用OPEN和OOSP等其他軟體過程的相關内容對RUP進行補充和完善。 |