在軟件工程的開發過程中我們需要一個宏觀的指導思想和全局性框架。軟件過程模型應運而生,但是,需要指出的是,這些模型並不是某種必須要遵循的標准!它們只是對軟件開發過程的一種抽象,在實際使用中,我們還需要進行適當的裁剪和組合。
一:宏觀導圖
導圖的思路:指導思想“懶人思想”(將多變成少),整個開發過程的模型其實說是有7個,甚至更多。但是無非就是兩大類,傳統和現代。再根據各自的特點,在傳統里面分了基本類型和混合型=瀑布+原型
二、聊聊細節
1、瀑布模型:(最早提出,又稱軟件生命周期模型)
優點:
A、歷時長、應用廣、廣為開發者熟知,有着非常成熟和豐富的開發方法與支撐工具
B、結構簡明,每個階段都有文檔及審查,能及早改正錯誤
C、順序性、依賴性強,強調需求分析的重要性
缺點:
A、不靈活,難以響應用戶的需求變化
B、錯誤修改代價大
C、實現晚(系統原型與用戶見面晚)
適用范圍:需求明確,且后期變化小。
2、原型模型:=(瀑布+局部迭代)
優點:
A、溝通多、后期變更少
B、滿意度高
C、與用戶見面快
缺點:
A、開發過程不可見
B、系統結構差
C、技術、工具非主流
D、成本高
適用范圍:中小型系統,需求不明確
3、增量模型=(瀑布+原型)
優點:
A、人員分配靈活
B、風險小,總是有增量可以提交給用戶
C、關鍵重要的功能測試次數多
D、能穩住客戶
E、有早期增量的開發經驗可借鑒
缺點:
A、對軟件體系結構要求高(要求系統結構具有開放性)
B、缺乏整體性,容易變成邊做邊改。
適用范圍:需求模糊,且多變
4、螺旋模型=(瀑布+原型+風險分析)
優點:
A、瀑布+原型
B、重視風險分析
C、安全性好
缺點:
A、對於開發者風險分析能力的要求非常高
B、迭代次數多,成本過高
C、提交時間延遲
D、應用范圍小
適用范圍:大型,復雜,高風險的系統開發
小結:
以上都是傳統的開發方法,比較成熟,應用較廣泛。而且一個共同的特點是:每個里面都會有結構化的開發思想在里面,都有瀑布模型的一些特點,都可以看做是對瀑布的一個改造和升級。
比較:增量模型 PK 螺旋模型
相同點:都以原型或初始子集為基礎,通過演化得到最終產品
不同點:
A、計划性:螺旋先定義大部分需求,計划性強;增量先定義少部分,相比之更靈活
B、迭代方式:螺旋屬於過程級;增量屬於活動級
C、提交內容:螺旋每次提交完整軟件版本;增量是在上次基礎提交新的一部分軟件
5、噴泉模型
優點:
A、迭代(重復、演進)
B、無間隙(各階段沒有明確的界限),方便調錯
C、各個階段可以同時進行,縮短開發時間,效率高,節省成本
缺點:
A、需要投入大量人力
B、不利管理
C、文檔審核難度大
適用范圍:面向對象的大型復雜軟件開發
6、形式化系統開發模型(類似瀑布)
優點:(三高)
A、可靠度高
B、正確性高
C、安全性高
缺點:
A、方法困難,需要特殊訓練
B、人力、物力等資源耗費大!
C、難以描述系統交互
適用范圍:對於安全性,可靠性要求高的系統。比如:銀行等金融方面的系統
7、基於組件的系統開發模型(站在巨人的肩膀上!)
優點:
A、減少工作量
B、節省成本
C、提高質量
缺點:
A、修改需求以適應組件
B、進化升級常常無法控制
適用范圍:通常用於與已有軟件具有共同特性的系統或軟件的開發;開發方能力有限,為減少創新成本而進行的微創新開發。
三、總結
一共七種模型,看似很多,看似毫無聯系,但是一總結就發現。其實就兩種思路,一種是結構化的思想,一層一層,自頂向下,典型就是瀑布模型,后來的原型、增量、螺旋也都是對瀑布的升級改造。原型是為了解決瀑布的一些缺點而產生,增量和螺旋則綜合了原型以及瀑布的優點。值得一提的是形式化開發,但說到底其實也是瀑布的變型而已。另一種就是:面向對象的思路,比如:基於組件的開發,具有高復用性!噴泉模型的開發,為了解決各個階段依賴性,更好描述現實世界復雜關系而產生。
至於選哪個好?我送你一句話“一切從實際出發,實事求是,具體問題具體分析。(因為變是永遠不變的,這是矛盾的特殊性使然。)