1. 程式人生 > >軟體工程之軟體過程模型

軟體工程之軟體過程模型

軟體過程模型

軟體過程模型習慣上也稱為軟體開發模型,它是軟體開發全部過程、活動和任務的結構框架。

瀑布模型:

瀑布模型是將軟體生存週期中的各個活動規定為依線性連線的若干階段的模型,包括需求分析、設計、編碼、測試、執行與維護。由前至後、相互銜接的固定次序,如同瀑布流水逐級下落。

這裡寫圖片描述

瀑布模型是以文件作為驅動、適合於軟體需求很明確的軟體專案的模型。

V模型

V模型是瀑布模型的一個變體。V模型提供了一種將驗證確認活動應用於早期軟體工程工作中的方法。

這裡寫圖片描述

瀑布模型的優點:

  • 容易理解,管理成本低。
  • 強調開發的階段性早期計劃及需求調查和產品測試。

瀑布模型的缺點:

  • 客戶必須能夠完整、正確和清晰地表達他們的需要
  • 開始2個或3個階段,很難評估真正的進度。
  • 專案結束時,出現大量的整合和測試工作。
  • 需求或設計中的錯誤往往只有到了專案後期才能夠被發現,對於專案風險的控制能力較弱,從而導致專案常常延期完成,開發費用超出預算。

增量模型:

增量模型融合了瀑布模型的基本成分和原型實現的迭代特徵,它假設可以將需求分段為一系列增量產品,每一增量可以分別開發。

這裡寫圖片描述

使用增量模型,第1個增量往往是核心的產品。客戶對每個增量的使用和評估都作為下一個增量釋出的新特徵和功能,這個過程在每一個增量釋出後不斷重複,直到產生了最終的完善產品。增量模型強調每一個增量均釋出一個可操作的產品。

增量模型的優點:

  • 容易理解,管理成本低。
  • 強調開發的階段性早期計劃及需求調查和產品測試。
  • 第一個可交付版本所需要的成本和時間很少。
  • 開發由增量表示的小系統所承擔的風險不大。
  • 減少使用者需求的變更。
  • 執行增量投資,即在專案開始時,可以僅對一個或兩個增量投資。

增量模型的缺點:

  • 如果沒有對使用者的變更需求進行規劃,那麼產生的初始增量可能會造成後來增量的不穩定。
  • 如果需求不想早期思考的那樣穩定和完整,那麼一些增量就可能需要重新開發,重新發布。
  • 管理髮生的成本、進度和配置的複雜性可能會超出組織的能力。

演化模型:

演化模型是迭代的過程模型,使得軟體開發人員能夠逐步開發出更完整的軟體版本。演化模型特別適用於對軟體需求缺乏準確認識的情況。典型的演化模型有原型模型和螺旋模型等。

演化模型之原型模型:

原型是預期系統的一個可執行版本,反映了系統性質的一個選定的子集。一個原型不必滿足目標軟體的所有約束,其目的是能快速、低成本地構建原型。

這裡寫圖片描述

原型模型開始於溝通,其目的是定義軟體的總體目標,標識需求,然後快速制定原型開發的計劃,確定原型的目標和範圍,採用快速射擊的方式對其進行建模,並構建原型。

根據原型的目的,可分為三種:

  • 探索型原型:目的是弄清目標的要求,確定所希望的特性,並探討多種方案的可行性。
  • 實驗型原型:目的是驗證方案或演算法的合理性,是在大規模開發和實現前,用於考查方案是否合適、規格說明是否可靠等。
  • 演化型原型:目的是將原型作為目標系統的一部分,通過對原型的多次改進,逐步將原型演化成最終的目標系統。

演化模型之螺旋模型:

螺旋模型將瀑布模型和演化模型結合起來,加入了兩種模型均忽略的風險分析,彌補了這兩種模型的不足。

螺旋模型將開發過程分為幾個螺旋週期,每個螺旋週期大致和瀑布模型相符合:

這裡寫圖片描述

  • 制定計劃:確定軟體的目標,選定實施方案,明確專案開發的限制條件。
  • 風險分析:分析所需的方案,識別風險,消除風險。
  • 實施工程:實施軟體開發,驗證階段性產品。
  • 使用者評估:評價開發工作,提出修正建議,建立下一個週期的開發計劃。

螺旋模型強調風險分析,使得開發人員和使用者對每個演化層出現的風險有所瞭解,從而做出應有的反應。因此,該模型特別適用於龐大、複雜並且具有高風險的系統。

螺旋模型和瀑布模型比較:

螺旋模型支援使用者需求的動態變化,為使用者參與軟體開發的所有關鍵決策提供了方便,有助於提高軟體的適應能力,並且為專案管理人員及時調整管理決策提供了便利,從而降低了軟體開發的風險。在使用螺旋模型進行軟體開發時,需要開發人員具有相當豐富的風險評估經驗和專門知識。另外,過多的迭代次數會增加開發成本,延遲提交時間。

噴泉模型:

噴泉模型是一種以使用者需求為動力,以物件作為驅動的模型,適合於面向物件的開發方法。它克服了瀑布模型不支援軟體重用和多項開發活動整合的侷限性。噴泉模型使開發過程具有迭代性和無間隙性。

這裡寫圖片描述

優點:

  • 提高軟體專案的開發效率,節省開發時間。

缺點:

  • 開發階段是重疊的,開發過程中需要大量的開發人員,不利於專案的管理。
  • 需要嚴格的管理文件,使得稽核的難度加大。

基於構件的開發模型:

基於構件的開發是指利用預先包裝的構件來構造應用系統。基於構件的開發模型具有許多螺旋模型的特點,它本質上是演化模型,需要以迭代方式構建軟體。

基於構件的開發模型,包括領域工程和應用系統工程兩部分。

這裡寫圖片描述

  領域工程的目的是構建領域模型、領域基準體系結構和可複用構件庫。 
  應用系統工程的目的是使用可複用構件組裝應用系統。

形式化方法模型:

  形式化方法是建立在嚴格數學基礎上的一種軟體開發方法,其主要活動是生成計算機軟體形式化的數學規格說明。

  形式化方法用嚴格的數學語言和語義描述功能規約和設計規約,通過數學的分析和推導,易於發現需求的歧義性、不完整性和不一致性,易於對分析模型、設計模型和程式進行驗證。這種方法的一個變型是淨室軟體工程。

結束:

人生格言:[ 做一個決定,並不難,難的是付諸行動,並且堅持到底 ]

今天的苦果,是昨天的伏筆,當下的付出,才是明日的花開!加油!!!加油!!!

參考文獻: