軟體開發模型之瀑布模型、快速原型模型、增量模型、螺旋模型
軟體開發模型:
軟體開發模型(Software Development Model)是指軟體開發全部過程、活動和任務的結構框架。軟體開發包括需求、設計、編碼和測試等階段,有時也包括維護階段。 軟體開發模型能清晰、直觀地表達軟體開發全過程,明確規定了要完成的主要活動和任務,用來作為軟體專案工作的基礎。對於不同的軟體系統,可以採用不同的開發方法、使用不同的程式設計語言以及各種不同技能的人員參與工作、運用不同的管理方法和手段等,以及允許採用不同的軟體工具和不同的軟體工程環境。
瀑布模型:
1、基本概念:瀑布模型是將軟體生存週期的各項活動規定為按固定順序而連線的若干階段工作,形如瀑布流水,最終得到軟體產品。
2、核心思想:採用結構化的分析與設計方法將功能的實現與設計分開,便於分工合作。即將軟體生命週期劃分為可行性分析、需求分析、概要設計、詳細設計、編碼實現、測試與維護,六個基本階段,並規定了他們自上而下,相互銜接的固定次序,如同瀑布流水,逐級下落。
3、實施過程:從上一項活動接收該項活動的工作物件作為輸入,利用這一輸入實施該項活動應完成的內容給出該項活動的工作成果,並作為輸出傳給下一項活動。同時評審該項活動的實施,若確認,則繼續下一項活動;否則返回前面,甚至更前面的活動。
4、優點:能夠逐步穩定的使專案向前發展。
5、缺點:只有在專案完全結束後才能看到軟體產品,不能在短期內向使用者呈現一個基本軟體模型;另外,瀑布模型這種固定次序的開發模式可能會浪費太多不必要的時間。
快速原型模型:
1、基本概念:快速原型模型需要迅速建造一個可以執行的軟體原型 ,以便理解和澄清問題,使開發人員與使用者達成共識,最終在確定的客戶需求基礎上開發客戶滿意的軟體產品。
2、核心思想:在開發真實系統之前,構造一個原型,在該原型的基礎上,逐漸完成整個系統的開發工作。
3、實施過程:第一步是建造一個快速原型,實現客戶或未來的使用者與系統的互動,使用者或客戶對原型進行評價,進一步細化待開發軟體的需求。通過逐步調整原型使其滿足客戶的要求,開發人員可以確定客戶的真正需求是什麼;第二步則在第一步的基礎上開發客戶滿意的軟體產品。
4、優點:能夠有效減少由於軟體需求不明確帶來的開發風險。
5、缺點:快速建立起來的系統結構可能會在後續的持續更改中導致然簡質量低下。
增量模型:
1、基本概念:增量模型就是先實現軟體的主要核心功能滿足使用者需求,但一些補充性功能還未釋出,通過後期不斷完善迭代,最終實現一個完善的軟體產品。
2、核心思想:本質上是迭代的,但與原型實現不一樣的是其強調每一個增量均釋出一個可操作產品。早期的增量是最終產品的“可拆卸”版本,但提供了為使用者服務的功能,並且為使用者提供了評估的平臺。即,瀑布模型的不斷重複迭代過程。
3、實現過程: 當使用增量模型時,第1個增量往往是核心的產品,即第1個增量實現了基本的需求,但很多補充的特徵還沒有釋出。客戶對每一個增量的使用和評估都作為下一個增量釋出的新特徵和功能,這個過程在每一個增量釋出後不斷重複,直到產生了最終的完善產品。增量模型強調每一個增量均釋出一個可操作的產品。
4、優點:能夠快速推出軟體產品,滿足客戶需求,對客戶有一定的鎮定作用,同時不用一下子投入太多資源。靈活性比較高。
5、缺點:由於軟體其他構件是後期加入的,容易導致由於構件之間的不穩定從而使系統崩潰。
螺旋模型:
1、基本概念:是一種演化軟體開發過程模型,它兼顧了快速原型的迭代的特徵以及瀑布模型的系統化與嚴格監控。螺旋模型最大的特點在於引入了其他模型不具備的風險分析,使軟體在無法排除重大風險時有機會停止,以減小損失。
2、核心思想:該模型是快速原型法,以進化的開發方式為中心,在每個專案階段使用瀑布模型法。這種模型的每一個週期都包括需求定義、風險分析、工程實現和評審4個階段,由這4個階段進行迭代。軟體開發過程每迭代一次,軟體開發又前進一個層次。
3、實現過程:螺旋模型基本做法是在"瀑布模型"的每一個開發階段前引入一個非常嚴格的風險識別、風險分析和風險控制,它把軟體專案分解成一個個小專案。每個小專案都標識一個或多個主要風險,直到所有的主要風險因素都被確定。
4、優點:能夠使客戶每個階段都參與開發,設計上更加靈活,能始終了解客戶新的需求。
5、缺點:建設週期長,而軟體技術發展比較快,所以經常出現軟體開發完畢後,和當前的技術水平有了較大的差距,無法滿足當前使用者需求。
總結:總之,沒有完美的開發模型,每種開發模型都有其優點,不同的開發模型適用於不同的軟體專案,有時候需要集中模型同時使用等。