1、嚴格把軟件項目的開發分隔成各個開發階段:需求分析,要件定義,基本設計,詳細設計,編碼,單體測試,結合測試,系統測試等。
使用里程碑的方式,嚴格定義了各開發階段的輸入和輸出。如果達不到要求的輸出,下一階段的就不展開。
2、重視和強調過程文檔,在開發的中后期才會看到軟件原型,早起只能通過文檔來了解系統的模樣。
在這種情況下,文檔的重要性仿佛已經超過了代碼的重要性。
瀑布模型把每個開發階段都定義為黑盒,希望每個階段的人員只關心自己階段的,不需要關注其他階段的。
這種模式一般適用于需求比較明確、to B端項目。
敏捷開發模式:
敏捷開發的核心是快速迭代,擁抱變化。因為目標是讓客戶滿意,所以能夠主動接受需求變更,這就使設計出來的軟件有靈活性,可擴展性。
與傳統模式相比,敏捷開發具有以下特點:
(1)敏捷開發的過程有著更強的適應性而不是預設性。
從敏捷宣言的第四條響應變化高于預設計劃便可以看出來。因為軟件開發過程的本身的不可預見性,很多用戶在項目開始時不可能對于這個項目有著一個完整而明確的預期。很多對軟件的預期都在后期的修改和完善過程中產生,因此高適應性顯然更加符合軟件工程開發的實際,而敏捷開發實現其適應性的方式主要在于:
一,縮短把項目提交給用戶的周期;
二,增加用戶,業務人員,開發人員這三者之間的交流;
三,通過減少重構的成本以增加軟件的適應性。
(2)敏捷開發的過程中,更加的注重人的因素。
在傳統軟件工程中,個人的因素很少被考慮到分工中,每個個體都是只是整個代碼開發機器的一個小小的螺絲釘,為了更好的為集體服務,個人的意志和創造力很大程度上被抹去。
而在敏捷開發過程中,每個個人的潛力被充分的考慮,應用什么技術很大程度上直接由在線開發的技術人員決定;每個人的特點和創造力都可以充分發揮,這樣開發出來的軟件更加具有生命力。開發者融入了他的心血和創意,他不再是進行機械的乏味堆砌,而是創造屬于自己的藝術品。在這樣的條件下產生的代碼必然在質量上更占優勢。
(3)在敏捷開發的過程中,整個項目是測試驅動的而不是文檔驅動的。
不僅每個模塊有著自己的相應的測試單元,開發人員在開發自己的模塊的過程中必須自己所開發的模塊可以通過這一單元的測試,并且集成測試貫穿了整個開發過程的始終。集成測試每天會進行十幾次甚至幾十次,而不是像傳統方法一樣只有當各個模塊的編碼都結束了之后再進行聯合調試。因此,在軟件開發進程中,每一點改動所引起的問題都容易暴露出來,使得錯誤更容易在剛剛產生的時候就被發現,從而解決問題,也就避免了在整個系統完成時,由于錯誤隱藏太深而給調試造成極大困難。
總之,敏捷開發模式更適用于需求不明確、創新性強的項目,或者需要搶占市場的項目。