軟考-軟件工程開發模型
參考視頻: 軟件工程概述&開發模型 ,配合視頻理解更清晰~
軟件的生命周期為:需求分析
、軟件設計
、軟件開發
、運行維護直至被淘汰
幾個階段。
軟件工程支持 4 個活動,簡稱 PDCA,分別是:Plan、Do、Check、Action
- 軟件規格說明:規定軟件功能及其運行時限制
- 軟件開發:開發出滿足規格說明的軟件
- 軟件確認:確認開發的軟件能滿足用戶需求
- 軟件演進:軟件在運行過程中不斷改進以滿足用戶新的需求
為了使軟件生命周期中的各項任務有序進行,需要一定的模型給予規程約束,這就是軟件生命周期模型。
1、瀑布模型
基礎知識:
【1】又被稱為生命周期法
【2】開發計劃分為:軟件計劃、需求分析、軟件設計、程序編碼、軟件測試、運行維護 6 個階段
優點:
【1】為項目提供了按階段劃分的檢查點
【2】當前一階段完成后,只需要關注后一階段
【3】提供了一個模板,使得分析、設計、編碼、測試和支持的方法可以在該模板下有一個共同的指導
缺點:
【1】各個階段產生了大量的文檔,極大地增加了工作量
【2】開發模型是線性的,用戶只有在開發末期才能看到開發成果,從而增加了開發風險
【3】不適應用戶需求的變化,并且在需求分析階段不可能完全獲取
【4】前期未發現的錯誤在后面的開發活動中可能被擴散,進而導致整個項目開發失敗
適用場景:
【1】需求明確或很少變更的項目
2、原型化模型
基礎知識:
【1】快速建立一個目標系統的最初版本,并交給用戶試用、補充和修改
,再進行新的版本開發,直到用戶滿意
【2】成敗的關鍵和效率的高低,在于模型的建立和建模的速度
【3】按照最終的結果可以分為拋棄型原型和演化型原型
適用場景:
【1】用戶需求不明確
3、螺旋模型
基礎知識:
【1】瀑布型模型和演化型原型相結合
【2】強調風險分析
【3】每一次迭代分為:目標設定、風險分析、開發和有效性驗證、評審
適用場景:
【1】大型軟件開發
【2】面向規格說明、面向過程和面向對象的開發,及幾種開發方法的組合
4、敏捷模型
基礎知識:
【1】適應型(圖右)而非預設型(或者叫可預測型,圖左)
【2】以人為本而非以過程為本,強調開發人員有權做技術方面的所有決定
,強調相關人員的溝通
,提倡面對面交流
【3】迭代增量式的開發過程
迭代(圖左),增量(圖右)
敏捷模型適合需求變化較大或者開發前期對需求不是很清晰
的項目。是一組,包含下面多種:
4.1 極限編程(XP)
基礎知識:
【1】價值觀是:交流、樸素、反饋和勇氣,將開發過程分解為一個個相對比較簡單的小周期
4.2 水晶方法
基礎知識:
【1】提倡“機動性”,認為每個項目都有獨特
的角色、過程模式、工作產品和實踐。
4.3 SCRUM
基礎知識:
【1】側重于項目管理,迭代式增量軟件開發過程
4.4 特征驅動開發方法(FDD)
基礎知識:
【1】一種迭代開發模型,認為有效的軟件開發需要三要素:人、過程和技術
4.5 開放源碼(很少考)
基礎知識:
【1】程序員地域上分布十分廣泛
4.6 ASD 方法(很少考)
基礎知識:
【1】核心是三個非線性的、重疊的開放階段:猜測、開放和學習
4.7 動態系統開放方法(DSDM)(很少考)
基礎知識:
【1】倡導以業務為核心
5、構件組裝模型(CBSD)
基礎知識:
【1】利用模塊化方法,將整個系統模塊化,在一定構件模型的支持下,復用構件庫中的一個或多個構件,通過組合手段高效率、高質量的構造軟件系統
【2】融合了螺旋模型的許多特征,本質上是演化的,開發過程是迭代的
【3】基于構件的軟件開發分為:需求分析和定義、體系結構設計、構件庫的建立、應用軟件構建、測試和發布
6、V 模型
基礎知識:
【1】測試分段(每一步都有對應的測試)
【2】測試計劃先行(例如詳細設計階段做單元測試的測試計劃,這樣提前做下一步驟的測試計劃)
7、W 模型
基礎知識:
【1】依據“盡早且持續進行軟件測試
”的原則,開發流程與測試活動并行展開
8、快速應用開發模型(RAD)
基礎知識:
【1】增量型軟件開發模型
【2】通過大量使用可復用構件,采用基于構件的開發方法快速開發,強調極短的開發周期
【3】流程分為:業務建模、數據建模、過程建模、應用生成、測試與交付
適用場景:
【1】模塊化要求程度比較高
9、噴泉模型
基礎知識:
【1】強調面向對象
10、統一過程開發模型(UP、RUP)
基礎知識:
【1】用例驅動
【2】以架構為中心
【3】迭代和增量