目錄
軟件過程模型(軟件開發模型)
瀑布模型
原型模型
V模型
構件組裝模型
螺旋模型(原型+瀑布)
基于構件的軟件工程(CBSE)
快速應用開發模型(RAD)
統一過程(UP)/統一開發方法
敏捷開發方法
敏捷方法-xp
敏捷方法-SCRUM
極限編程 -xp
水晶方法
SCRUM
特征驅動開發方法(FDD)
開放式源碼
ASD方法
動態系統開發方法(DSDM)
逆向工程
凈室軟件工程
軟件過程模型(軟件開發模型)
????????軟件過程模型也叫軟件開發模型,是我們進行軟件開發的時候需要遵循的一些思想和規范
瀑布模型
特點:嚴格區分階段,每個階段因果關系緊密相連,但是只適合需求明確的項目
缺點:
軟件需求完整性、正確性很難確定
嚴格串行化、很長時間才能看到結果
瀑布模型要求每個階段一次性完全解決該階段的工作,這不現實。
原型模型
原型的思想就是構造一個簡易系統,由他來獲取需求。原型模式我們一般用在需求分析階段
V模型
這個模式是強調測試貫穿始終的開發模型。
構件組裝模型
優點:
容易擴展、重用、降低成本、安排任務更靈活
缺點:這個要求經驗豐富的架構師、設計不好的構件難以重用、強調重用可能犧牲其他的指標(比如性能)、第三方構件質量難控制。
螺旋模型(原型+瀑布)
以快速原型為基礎+瀑布模型,這個模型考慮了風險問題。
四個關鍵字:目標設定、風險分析、評審、開發和有效性驗證
基于構件的軟件工程(CBSE)
它該具備的特征:
可組裝性:所有外部交互必須通過公開定義的接口進行
可部署性:構件總是二進制形式的,能作為一個獨立實體在平臺上運行
文檔化:用戶根據文檔來判斷構件是否滿足需求
獨立性:可以在沒有其他特殊構件的情況下進行組裝和部署
標準化:符合某種標準化的構件模型
構件的組裝:
順序組裝:按照順序調用已經存在的構件、可用兩個已經有的構件來創造一個新的構件
層次組裝:被調用構件的接口和調用構件的請求接口必須兼容
疊加組裝:多個構件合并形成新構件、新構件整合原構件的功能、對外提供新的接口
快速應用開發模型(RAD)
多個模型拼裝成的新的模型,瀑布模型有標準的開發流程、CBSD有構件的支撐。
統一過程(UP)/統一開發方法
主要用在大型軟件開發應用里面
核心特點:用例驅動、以架構為中心、迭代和增量
四大階段
初始:定義產品的業務模型、確定系統的范圍
細化:設計及確定系統架構、制定工作計劃以及資源要求
構造:開發剩余構件和應用程序功能、把這些構件集成為產品、并進行詳細測試
移交:確保軟件對最終客戶是可用的,進行測試、制作產品的發布版本.
九大核心工作流
- 業務建模
- 需求
- 分析和設計
- 編碼實現
- 測試
- 部署
- 配置和變更管理
- 項目管理
- 環境
敏捷開發方法
是通過迭代而來的
最開始是沒有開發方法的,沒有順序、不可空
到了一定的時間出現了傳統軟件開發方法:預設姓的、以開發過程為本、整體分階段
最后才出現了敏捷方法:適應性的,以人為本、增量迭代、小不快跑、適合小型項目
敏捷宣言
- 個體和交互勝過過程和工具,強調了人的重要性
- 可工作的軟件勝過大量的文檔
- 客戶合作勝過合同談判
- 響應變化勝過遵循計劃
敏捷方法-xp
四大價值觀:溝通、簡單、反饋、勇氣
12條過程實踐規則
敏捷方法-SCRUM
極限編程 -xp
價值觀【交流、樸素、反饋、勇氣】、近螺旋式的開發方法
水晶方法
提倡機動性的方法,擁有對不同類型項目非常有效的敏捷過程
SCRUM
側重于項目管理
特征驅動開發方法(FDD)
這個方法認為有效的軟件開發需要3要素【人、過程、技術】定義了6種關鍵的項目角色:項目經理、首席架構設計師、開發經理、主程序員、程序員和領域專家
開放式源碼
程序開發人員在地域上分部很廣
ASD方法
核心就是三個非線性的、重疊的開發階段:猜測、合作和學習
動態系統開發方法(DSDM)
倡導以業務為核心
逆向工程
實現級:包括程序的抽象語法樹、符號表、過程的設計表示,這個是最接近代碼層面的
結構級:包括反映程序分量之間相互依賴關系的信息、例如:調用圖、結構圖、程序和數據結構
功能級:包括反映程序段功能及程序段之間的關系的信息,例如數據和控制流模型
領域級:包括反映程序分量或程序諸實體與應用領域概念之間對應的關系的信息,例如實體關系模型
與逆向工程相關的概念是:重構、設計恢復、再工程、正向工程
重構:在同一抽象級別上轉換系統描述形式
設計恢復:借助工具從已有程序中抽象出有關數據設計、總計結構設計和過程設計等方面的信息
再工程:對現有系統的重新開發、包括逆向工程、新需求的考慮過程和正向過程的三個步驟
正向工程:不僅從現有的系統中恢復設計信息、而且使用該信息去改變或重構現有系統、以改善他的整體質量。
凈室軟件工程
凈室:無塵室、潔凈室、也就是一個受控污染級別的環境
使用盒結構規約或者形式方法進行分析和設計建模、并且強調將正確性驗證、而不是測試,作為發現和消除錯誤的主要機制
使用統計的測試來獲取認證被交付的軟件的可靠性所必需的出錯率信息。
技術手段主要四個方面
- 統計過程控制下的增量式開發:控制迭代
- 基于函數的規范和設計:盒子結構:定義三種抽象層次:行為視圖(黑盒)——>有限狀態機視圖(狀態盒)——>過程視圖(明盒)
- 正確性驗證:凈室工程的核心
- 統計測試和軟件認證:使用統計學原理、總體太大時必須采用抽樣方法
缺點:
- 太理論化,正確性驗證的步驟比較困難和耗時間
- 開發小組不進行傳統的模塊測試。這是不現實的
- 脫胎于傳統軟件工程、不可避免帶有傳統軟件工程的一些弊端