軟件開發模型:
軟件開發模型(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、缺點:建設周期長,而軟件技術發展比較快,所以經常出現軟件開發完畢后,和當前的技術水平有了較大的差距,無法滿足當前用戶需求。
總結:總之,沒有完美的開發模型,每種開發模型都有其優點,不同的開發模型適用於不同的軟件項目,有時候需要集中模型同時使用等。
