軟件有其孕育、誕生、成長、成熟和衰亡的生存過程,一般稱其為“軟件生命周期”。軟件生命周期一般分為6個階段,即制定計划、需求分析、設計、編碼、測試、運行和維護。典型的開發模型有:瀑布模型、增量模型、快速原型模型、螺旋模型、噴泉模型、智能模型、混合模型等。
瀑布模型,其最大的特點就是簡單,他按照軟件生命期划分成六個部分順序進行。但是這其中也會帶來問題,相較於快速原型模型和增量模型,瀑布模型要求用戶在最初就提出一套清晰完整的需求,在軟件編程之前必須先撰寫出詳細的需求說明書。用瀑布模型開發的軟件系統可能不滿足客戶的需求。
快速原型模型則是通過一些快速原型語言先構建出軟件產品的原型系統,這樣可快速的和用戶交互,用戶通過該原型系統具體的了解該款軟件,並通過原型發現用戶需求的遺漏,同時用戶參與度相較於瀑布模型加大了不少,彌補了瀑布模型的不足。但可能導致系統設計差、效率低,難於維護。
增量模型是將軟件產品作為一系列的增量構件來設計、編碼的。這樣既可以快速的向用戶提交可完成部分功能的產品,有能讓用戶有較充裕的時間適應新系統。這樣的開發模型需要開放式的體系結構,同時可能會導致開發的軟件設計差、效率低。
然而開發軟件產品,不可避免的便是風險分析。而螺旋模型的思想便是:使用原型及其他方法來盡可能降低風險。在軟件開發的每個階段,都增加一個風險分析過程。螺旋模型結合了快速原型模型的迭代性質和瀑布模型的系統性和可控性特點,適用於內部開發的大規模軟件項目。
綜上所訴我們可以看到各個開發模型都有其可取之處,也有不可避免的缺點。軟件開發過程中應適當的選擇合適的開發模型。幾大開發模型也有其共通點。例如瀑布模型是按順序進行,就如數學中的“線性”開發。而“線性”是人們最容易掌握並能熟練應用的思想方法。一個軟件系統的整體可能是復雜的,而單個子程序總是簡單的,可以用線性的方式來實現。線性是一種簡潔。當我們領會了線性的精神,就可以不再呆板地套用線性模型的外表,而可以用活它。例如增量模型實質就是分段的線性模型,螺旋模型則是接連的彎曲了的線性模型,當然在其它模型中也能夠找到線性模型的影子。
