软件工程——五大模型
目錄
?
【引言】
【正文】
①瀑布模型 / 線性順序 / 傳統生命周期模型
②快速原型模型
③漸增模型/增量模型/迭代模型
④螺旋模型
⑤噴泉模型
【尾聲】
【引言】
在軟工視頻中接觸到了一些軟件開發過程中用到的模型,在此做一個總結。所謂軟件過程就是從軟件項目需求定義至軟件運行維護的整個生命周期過程中系統開發、運行和維護所實施的全部過程。軟件過程模型/軟件生命周期模型就是一種開發策略,這種策略針對軟件工程的各個階段提供了一套范形,使工程的進展達到預期的目的。對一個軟件的開發無論其大小,我們都需要選擇一個合適的軟件過程模型,這種選擇基于項目和應用的性質、采用的方法、需要的控制,以及要交付的產品的特點。一個錯誤模型的選擇,將迷失我們的開發方向。對于下面的模型,希望能夠給開發者們一個參考和一點啟示。
?
【正文】
?
①瀑布模型 / 線性順序 / 傳統生命周期模型
瀑布模型是一個特別經典,甚至有點老套的周期模型,一般情況下將其分為計劃、需求分析、概要設計、詳細設計、編碼以及單元測試、測試、運行維護等幾個階段。瀑布模型的周期是環環相扣的。每個周期中交互點都是一個里程碑,上一個周期的結束需要輸出本次活動的工作結果,本次的活動的工作結果將會作為下一個周期的輸入。這樣,當某一個階段出現了不可控的問題的時候,就會導致返工,返回到上一個階段,甚至會延遲下一個階段。
優點:
分為固定的幾個階段,次序固定,自上而下
以文檔為驅動
階段間具有順序性和依賴性
每個階段必須完成規定的文檔,每個階段結束前完成文檔審查,及早改正錯誤
缺點:
實際項目很少遵守瀑布模型提出的順序,需求可能變更
客戶通常難以清晰描述所有需求
客戶需要有耐心,只有項目完成才能看到所開發的軟件
變體:V模型:強調了過程中的質量保證
V模型從整體上看起來,就是一個V字型的結構,由左右兩邊組成。左邊的下劃線分別代表了需求分析、概要設計、詳細設計、編碼。右邊的上劃線代表了單元測試、集成測試、系統測試與驗收測試??雌饋鞻模型就是一個對稱的結構,它的重要意義在于,非常明確的表明了測試過程中存在的不同的級別,并且非常清晰的描述了這些測試階段和開發階段的對應關系。
?
②快速原型模型
原型化模型第一步就是創建一個快速原型,能夠滿足項目干系人與未來的用戶可以與原型進行交互,再通過與相關干系人進行充分的討論和分析,最終弄清楚當前系統的需求,進行了充分的了解之后,在原型的基礎上開發出用戶滿意的產品。在實際的項目過程中,借助于組織過程資產以及快速模型軟件,一般在需求分析的時候,就可以建立一些簡單的原型,例如在第一家YH公司中,因為是“行業軟件提供商”,所以擁有各個地域的行業解決軟件方案,慣用的伎倆就是將其他地市的項目拿到本次項目實施地,作為原型化模型。原型化模型是極具意義的項目實踐。
優點:
快速為用戶提供一個可以看到的原型軟件
可有效應對需求的不確定性
原型系統可以逐步演化為最終系統,避免浪費人力
?
缺點:
整個軟件可能是隨意搭成的 , 開發者沒有考慮整體軟件質量與長期的可維護性
采用了一些折中手段讓系統快速運行起來,比如不合適的操作系統、開發語言、低效算法等
?
③漸增模型/增量模型/迭代模型
迭代模型,摒棄了傳統的需求分析,設計,編碼,測試的流程,而是將整個生命周期變成若干個沖刺(Sprint)階段,而每一個階段都是由以上若干或者全部傳統的流程組成,在每一個階段中,都會包含下面四個階段:初始階段,細化階段,構建階段,交付階段。在初始階段中,確認本次沖刺的范圍,邊界,系統選擇的架構,計劃,以及所需要的資源等信息。在細化階段中,對問題進行建域,創建開發案例,創建模板以及準備工具等。在構建階段的主要任務就是完成構建的開發并且進行測試,將完成的構建集成為產品,并且測試所有的功能(CI)。在交付階段,主要是完成本次沖刺,將軟件產品交付給相關的干系人。
優點:
增量包概念的引入 , 以及它不需要提供完整的需求 。 只要有一個增量包出現,開發就可以進行
在項目的初始階段不需要投入太多的人力資源
增量可以有效地管理技術風險
缺點:
每個增量必須提供一些系統功能,有時開發者難以根據客戶需求給出大小適合的增量
?
④螺旋模型
螺旋模型,尤其重視風險分析階段,特別適用于龐大并且復雜,非常高風險的項目。通常螺旋模型由四個階段組成:制定計劃、風險分析、實施工程和客戶評估。螺旋模型中,發布的第一個模型甚至可能是沒有任何產出的,可能僅僅是紙上談兵的一個目標,但是隨著一次次的交付,每一個版本都會朝著固定的目標邁進,最終得到一個更加完善的版本。
優點:
支持用戶需求的動態變化
原型可看作形式的可執行的需求規格說明,易于為用戶和開發人員共同理解,還可作為繼續開發的基礎,并為用戶參與所有關鍵決策提供了方便
特別強調原型的可擴充性和可修改性 , 原型的進化貫穿整個軟件生存周期,這將有助于目標軟件的適應能力
為項目管理人員及時調整管理決策提供了方便,進而可降低開發風險
缺點:
如果每次迭代效率不高,致使迭代次數過多將會增加成本并推遲提交時間
使用該模型需要有相當豐富的風險評估經驗和專門知識,要求開發隊伍水平較高
?
⑤噴泉模型
噴泉模型是一種以用戶需求為動力,以對象為驅動的模型,主要用于描述面向對象的軟件開發過程。該模型認為軟件開發過程自下而上周期的各階段是相互迭代和無間隙的特性。
優點:
噴泉模型不像瀑布那樣,需要分析活動結束后才開始設計活動,設計活動結束后才開始編碼活動
該模型的各個階段沒有明顯的界限,開發人員可以同步進行開發
可以提高軟件項目開發效率,節省開發時間
缺點:
由于噴泉模型在各個開發階段是重疊的,因此在開發過程中需要大量的開發人員,因此不利于項目的管理
此外這種模型要求嚴格管理文檔,使得審核的難度加大,尤其是面對可能隨時加入各種信息、需求與資料的情況
改進的噴泉模型:
?
?
【尾聲】
學如逆水行舟,不進則退? ? ? ? ? ? ? ? ? ? ? ?——梁啟超
總結
以上是生活随笔為你收集整理的软件工程——五大模型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 前端学习(3219):...扩展
- 下一篇: Feign的构建过程及自定义扩展功能