資源描述:
《軟件開發(fā)技術》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在教育資源-天天文庫。
1、迭代化軟件開發(fā)技術1.傳統(tǒng)開發(fā)流程的問題傳統(tǒng)的軟件開發(fā)流程是一個文檔驅(qū)動的流程,它將整個軟件開發(fā)過程劃分為順序相接的幾個階段,每個階段都必需完成全部規(guī)定的任務(文檔)后才能夠進入下一個階段。如必須完成全部的系統(tǒng)需求規(guī)格說明書之后才能夠進入概要設計階段,編碼必需在系統(tǒng)設計完成之后才能夠進行。這就意味著只有當所有的系統(tǒng)模塊全部開發(fā)完成之后,我們才進行系統(tǒng)集成,對于一個由上百個模塊組的復雜系統(tǒng)來說,這是一個非常艱巨而漫長的工作。隨著我們所開發(fā)的軟件項目越來越復雜,傳統(tǒng)的瀑布型開發(fā)流程不斷地暴露出以下問題:·需求或設計中的錯誤往往只有到了項目后期才能夠被發(fā)現(xiàn)例如:系統(tǒng)交付客戶之后才發(fā)現(xiàn)原先對于需求的
2、理解是錯誤的,系統(tǒng)設計中的問題要到測試階段才能被發(fā)現(xiàn)?!τ陧椖匡L險的控制能力較弱項目風險在項目開發(fā)較晚的時候才能夠真正降低,往往是經(jīng)過系統(tǒng)測試之后,才能確定該設計是否能夠真正滿足系統(tǒng)需求?!ぼ浖椖砍3Q悠谕瓿苫蜷_發(fā)費用超出預算項目開發(fā)進度往往會被意外發(fā)生的問題所打亂,需要進行返工或其他一些額外的開發(fā)周期,造成項目延期或費用超支?!ろ椖抗芾砣藛T專注于文檔的完成和審核來估計項目的進展情況所以項目經(jīng)理對于項目狀態(tài)的估計往往是不準確的,當他回答系統(tǒng)已完成了80%的開發(fā)任務時,剩下20%的開發(fā)任務實際上消耗的是整個項目80%的開發(fā)資源。在傳統(tǒng)的瀑布模型中,需求和設計中的問題是無法在項目開發(fā)的前期被
3、檢測出來的,只有當?shù)谝淮蜗到y(tǒng)集成時,這些設計缺陷才會在測試中暴露出來,從而導致一系列的返工:重新設計、編碼、測試,進而導致項目的延期和開發(fā)成本的上升。2.采用迭代化開發(fā)控制項目風險為了解決傳統(tǒng)軟件開發(fā)流程中的問題,我們建議采用迭代化的開發(fā)方法來取代瀑布模型。在瀑布模型中,我們要完成的是整個軟件系統(tǒng)開發(fā)這個大目標。在迭代化的方法中,我們將整個項目的開發(fā)目標劃分成為一些更易于完成和達到的階段性小目標,這些小目標都有一個定義明確的階段性評估標準。迭代就是為了完成一定的階段性目標而所從事的一系列開發(fā)活動,在每個迭代開始前都要根據(jù)項目當前的狀態(tài)和所要達到的階段性目標制定迭代計劃,整個迭代過程包含了需求
4、、設計、實施(編碼)、部署、測試等各種類型的開發(fā)活動,迭代完成之后需要對迭代完成的結果進行評估,并以此為依據(jù)來制定下一次迭代的目標。與傳統(tǒng)的瀑布式開發(fā)模型相比較,迭代化開發(fā)具有以下特點:·允許變更需求需求總是會變化,這是事實。給項目帶來麻煩的常常主要是需求變化和需求"蠕變",它們會導致延期交付、工期延誤、客戶不滿意、開發(fā)人員受挫。通過向用戶演示迭代所產(chǎn)生的部分系統(tǒng)功能,我們可以盡早地收集用戶對于系統(tǒng)的反饋,及時改正對于用戶需求的理解偏差,從而保證開發(fā)出來的系統(tǒng)真正地解決客戶的問題。·逐步集成元素在傳統(tǒng)的項目開發(fā)中,由于要求一下子集成系統(tǒng)中所有的模塊,集成階段往往要占到整個項目很大比例的工作量
5、(最高可達40%),這一階段的工作經(jīng)常是不確定并且非常棘手。在迭代式方法中,集成可以說是連續(xù)不斷的,每一次迭代都會增量式集成一些新的系統(tǒng)功能,要集成的元素都比過去少得多,所以工作量和難度都是比較低的?!けM早降低風險迭代化開發(fā)的主要指導原則就是以架構為中心,在早期的迭代中所要解決的主要問題就是盡快確定系統(tǒng)架構,通過幾次迭代來盡快地設計出能夠滿足核心需求的系統(tǒng)架構,這樣可以迅速降低整個項目的風險。等到系統(tǒng)架構穩(wěn)定之后,項目的風險就比較低了,這個時候再去實現(xiàn)系統(tǒng)中尚未完成的功能,進而完成整個項目?!び兄谔岣邎F隊的士氣開發(fā)人員通過每次迭代都可以在短期內(nèi)看到自己的工作成果,從而有助于他們增強信心,更
6、好地完成開發(fā)任務。而在非迭代式開發(fā)中,開發(fā)人員只有在項目接近尾聲時才能看到開發(fā)的結果,在此之前的相當長時間,大家還是在不確定性中摸索前近。·生成更高質(zhì)量的產(chǎn)品每次迭代都會產(chǎn)生一個可運行的系統(tǒng),通過對這個可運行系統(tǒng)進行測試,我們在早期的迭代中就可以及時發(fā)現(xiàn)缺陷并改正,性能上的瓶頸也可以盡早發(fā)現(xiàn)并處理。因為在每次迭代中總是不斷地糾正錯誤,我們可以得到更高質(zhì)量的產(chǎn)品?!けWC項目開發(fā)進度每次迭代結束時都會進行評估,來判斷該次迭代有沒有達到預定的目標。項目經(jīng)理可以很清楚地知道有哪些需求已經(jīng)實現(xiàn)了,并且比較準確地估計項目的狀態(tài),對項目的開發(fā)進度進行必要的調(diào)整,保證項目按時完成。·容許產(chǎn)品進行戰(zhàn)術改變迭代
7、化的開發(fā)具有更大的靈活性,在迭代過程中可以隨時根據(jù)業(yè)務情況或市場環(huán)境來對產(chǎn)品的開發(fā)進行調(diào)整。例如為了同現(xiàn)有的同類產(chǎn)品競爭,可以決定采用搶先競爭對手一步的方法,提前發(fā)布一個功能簡化的產(chǎn)品?!さ鞒套陨砜稍谶M行過程中得到改進和精煉一次迭代結束時的評估不僅要從產(chǎn)品和進度的角度來考察項目的情況,而且還要分析組織和流程本身有什么待改進之處,以便在下次迭代中更好地完成任務。迭代化方法解決的主要是對于風險的控制問題,從下