一、瀑布模型
1970年溫斯頓.羅伊斯提出了著名的“瀑布模型”圃阳,直到80年代早期厌衔,它一直是唯一被廣泛采用的軟件開發(fā)模型
瀑布模型將軟件生命周期劃分為制定計劃、需求分析捍岳、軟件設(shè)計富寿、程序編寫、軟件測試和運行維護(hù)等六個基本活動锣夹,并且規(guī)定了它們自上而下页徐、相互銜接的固定次序,如同瀑布流水银萍,逐級下落
瀑布模型是最早出現(xiàn)的軟件開發(fā)模型变勇,在軟件工程中占有重要的地位,它提供了軟件開發(fā)的基本框架贴唇。其過程是從上一項活動接收該項活動的工作對象作為輸入搀绣,利用這一輸入實施該項活動應(yīng)完成的內(nèi)容給出該項活動的工作成果,并作為輸出傳給下一項活動
從本質(zhì)來講戳气,它是一個軟件開發(fā)架構(gòu)链患,開發(fā)過程是通過一系列階段順序展開的,從系統(tǒng)需求分析開始直到產(chǎn)品發(fā)布和維護(hù)瓶您,每個階段都會產(chǎn)生循環(huán)反饋锣险,因此蹄皱,如果有信息未被覆蓋或者發(fā)現(xiàn)了問題,那么最好 “返回”上一個階段并進(jìn)行適當(dāng)?shù)男薷男痉簦_發(fā)進(jìn)程從一個階段“流動”到下一個階段巷折,這也是瀑布開發(fā)名稱的由來
對于經(jīng)常變化的項目而言,瀑布模型毫無價值
1崖咨、階段間具有順序性和依賴性
該階段具有兩重含義
必須等前一階段的工作完成后锻拘,才能開始后一階段的工作
前一階段的輸出文檔就是后一階段的輸入文檔,因此只有前一階段的輸出文檔正確击蹲,后一階段的工作才能獲得正確的結(jié)果
2署拟、推遲實現(xiàn)的觀點
對于規(guī)模較大的軟件項目來說,往往編碼開始的越早歌豺,最終完成開發(fā)所需時間越長推穷。因為前面階段的工作沒做或做的不扎實,過早地考慮進(jìn)行程序?qū)崿F(xiàn)类咧,往往導(dǎo)致大量返工馒铃,有時甚至發(fā)生無法彌補(bǔ)的問題
瀑布模型在編碼之前設(shè)置了系統(tǒng)分析與系統(tǒng)設(shè)計的各個階段,分析與設(shè)計階段的基本任務(wù)規(guī)定痕惋,在這兩個階段主要考慮目標(biāo)系統(tǒng)的邏輯模型区宇,不涉及軟件的物理實現(xiàn)
清楚的區(qū)分邏輯設(shè)計與物理設(shè)計,盡可能推遲程序的物理實現(xiàn)值戳,是按照瀑布模型開發(fā)軟件的一條重要的指導(dǎo)思想
3议谷、質(zhì)量保證的觀點
為了保證所開發(fā)的軟件的質(zhì)量,在瀑布模型的每一個階段都應(yīng)堅持兩個重要做法
每個階段都必須完成規(guī)定的文檔堕虹,沒有交出合格的文檔就是沒有完成該階段的任務(wù)
每個階段結(jié)束前都要對所完成的文檔進(jìn)行評審卧晓,以便盡早發(fā)現(xiàn)問題,改正錯誤
傳統(tǒng)的瀑布模型過于理想化赴捞,實際的瀑布模型是帶"反饋環(huán)"的禀崖。如圖所示(圖中實線箭頭表示開發(fā)過程,虛線箭頭表示維護(hù)過程)螟炫,當(dāng)在后面階段發(fā)現(xiàn)前面階段的錯誤時波附,需要沿圖中左側(cè)的反饋線返回前面的階段,修正前面階段的產(chǎn)品后再回來繼續(xù)完成后面階段的任務(wù)
瀑布模型是文檔驅(qū)動的模型昼钻,遵守這個約束可使軟件維護(hù)變得比較容易一些掸屡,從而顯著降低軟件預(yù)算
優(yōu)點:
為項目提供了按階段劃分的檢查點
當(dāng)前一階段完成后,您只需要去關(guān)注后續(xù)階段
可在迭代模型中應(yīng)用瀑布模型
缺點:
不適合需求模糊或需求經(jīng)常變動的系統(tǒng)
由于開銷的逐步升級問題然评,它不希望存在早期階段的反饋
在一個系統(tǒng)完成以前仅财,它無法預(yù)測一個新系統(tǒng)引入一個機(jī)構(gòu)的影響
在用戶可能需要較長等待時間來獲得一個可供使用的系統(tǒng),也許會給用戶的信任程度帶來影響和打擊
最終產(chǎn)品往往反映用戶的初始需求而不是最終需求
對項目而言碗淌,是否使用這一模型主要取決于是否能理解客戶的需求以及在項目的進(jìn)程中這些需求的變化程度盏求;對于經(jīng)常變化的項目而言抖锥,瀑布模型毫無價值,可以考慮其他的架構(gòu)來進(jìn)行項目管理碎罚,比如螺旋模型
瀑布模型強(qiáng)調(diào)文檔的作用磅废,并要求每個階段都要仔細(xì)驗證。但是荆烈,這種模型的線性過程太理想化拯勉,已不再適合現(xiàn)代的軟件開發(fā)模式,幾乎被業(yè)界拋棄憔购,其主要問題在于:
各個階段的劃分完全固定宫峦,階段之間產(chǎn)生大量的文檔,極大地增加了工作量
由于開發(fā)模型是線性的玫鸟,用戶只有等到整個過程的末期才能見到開發(fā)成果导绷,從而增加了開發(fā)的風(fēng)險
早期的錯誤可能要等到開發(fā)后期的測試階段才能發(fā)現(xiàn),進(jìn)而帶來嚴(yán)重的后果
按照瀑布模型的階段劃分屎飘,軟件測試可以分為單元測試妥曲,集成測試,系統(tǒng)測試