軟考複習之路—從瀑布模型到極限程式設計,敏捷開發
軟體開發是一門技術,也是一門藝術。
瀑布模型、極限程式設計、敏捷開發是有代表性的開發模式,在對開發者、客戶、最終的產品的關注上的變化,體現了軟體開發管理者在管理模式上的變化。
瀑布模型
是一種理想化的開發模型,要求有明確的需求分析,無法解決軟體需求不明確或不準確的問題。
瀑布模型像工廠流水線一樣把軟體開發過程分成各種工序,並且每個工序可以根據軟體產品的規模、參與
人員的多少進一步細分成更細的工序。更符合分層的設計思想,比較適合於大型軟體的開發。也因此瀑布模型
是使用最多的開發模型。
瀑布模型將複雜的問題簡單化,分層化,便於分工協作,採用結構化的分析與設計方法將邏輯實現與物理
實現分開。
特點:
1、強調文件,前一個階段的輸出就是下一個階段的輸入。文件是各個階段銜接的重要資訊,所以文件
為重中之重。但是各個階段之間產生大量的文件,極大地增加了工作量。
2、沒有迭代與反饋。瀑布模型對反饋沒有涉及,所以對變化的客戶需求非常不容易適應,意味著使用
了瀑布模型,最好不要走回頭路,否則付出的代價會很大的。
3、管理人員較開發人員更喜歡瀑布。文件很適合向領導彙報用,即使不瞭解專案的人也能看懂專案的
進度情況;同時它也束縛了開發人員的創造性。
4、由於開發流程是一個階段順序進行的,只有等到開發完成,使用者才能見到結果,增加了開發的風險
;同時由於這種特性,程式中早期的錯誤可能要等到開發後期的測試階段才能發現。
5、瀑布模型對人員的要求是,只要會基本的程式設計就可以。
由於瀑布模型不適合客戶需求不斷變化的軟體開發,並且把開發者程式設計流水線上的機器,大量重複性工作讓程式設計人員提不起興趣,程式設計成了一種沒有創意的機械勞動,於是極限程式設計帶來了新鮮的空氣。
極限程式設計
注重使用者反饋。有了反饋,開發時間變短,迭代就出現了,快速迭代。
是一種開發管理模式.
強調:
1、角色定位:明確的把客戶加入到開發團隊中。使用者在軟體開發過程中的責任被提到與開發者同樣的
重要程度。
2、敏捷開發:追求合作與響應變化。迭代就是縮短版本的釋出週期,縮短到周、日,完成一個小的功
能模組,可以快速測試、並及時展現給客戶,以便及時反饋。小版本加快了客戶溝通反饋的頻率,功
能簡單,在設計、文擋環節大大簡化。極限程式設計中文擋不再重要的原因就是因為每個版本功能簡單,
不需要複雜的設計過程。極限程式設計追求設計簡單,實現客戶要求即可,無需為擴充套件考慮太多,因為客
戶的新需求隨時可以新增。
3、追求價值:極限程式設計把軟體開發變成自我與管理的挑戰,追求溝通、簡單、反饋、勇氣,體現開發
團隊的人員價值,激發參與者的情緒,最大限度地調動開發者的積極性,情緒高漲,認真投入,開發
的軟體質量就大大提高。
敏捷開發
核心是迭代。最終目標是讓客戶滿意,所以能主動接受需求變更,這樣就使設計出來的軟體有靈活性,可
擴充套件性。
特點:
1、迭代:軟體的功能是客戶的需求,對迭代強調的是縮短了軟體版本的週期。
2、專案團隊的人數不能太多
3、專案經常發生變更
4、高風險的專案實施
5、開發人員可以參與決策
注意:
1、客戶最關心的功能最先完成
2、小版本。快速功能的展現。
3、敏捷開發不等於不寫文件,而是減輕了繁重的文件,不以文件為驅動。
瀑布模型由於其過程的不可回溯性,自 然決定了它無法應對需求的變化,對軟體開發過程無法及時反饋與
修改,或者說對於應對變化的成本較大。因此瀑布模型是面向過程的;而敏捷開發是面向人的,在開發過程中,
人是第一位。使軟體利用人的特點,充分發揮人的創造能力。
不論是瀑布還是敏捷開發,在推行的時候還要認真分析要面對的團隊。有很多人現在執迷於敏捷開發,但
是沒有傳統的瀑布模型,怎麼會有敏捷開發,又怎麼會體會到敏捷開發的樂趣?況且,對於一個比較大型的需
求確定的專案,還是用瀑布模型比較有優勢。