迭代軟件開(kāi)發(fā)流程_第1頁(yè)
迭代軟件開(kāi)發(fā)流程_第2頁(yè)
迭代軟件開(kāi)發(fā)流程_第3頁(yè)
迭代軟件開(kāi)發(fā)流程_第4頁(yè)
迭代軟件開(kāi)發(fā)流程_第5頁(yè)
已閱讀5頁(yè),還剩2頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、1. 傳統(tǒng)開(kāi)發(fā)流程的問(wèn)題 傳統(tǒng)的 軟件開(kāi)發(fā)流程是一個(gè)文檔驅(qū)動(dòng)的流程,它將整個(gè)軟件開(kāi)發(fā)過(guò)程劃分為順序相接的幾個(gè)階段,每個(gè)階段都必需完成全部規(guī)定的任務(wù)(文檔)后才能夠進(jìn)入下一個(gè)階段。 如必須完成全部的系統(tǒng)需求規(guī)格說(shuō)明書(shū)之后才能夠進(jìn)入概要設(shè)計(jì)階段,編碼必需在系統(tǒng)設(shè)計(jì)完成之后才能夠進(jìn)行。這就意味著只有當(dāng)所有的系統(tǒng)模塊全部開(kāi)發(fā)完成之 后,我們才進(jìn)行系統(tǒng)集成,對(duì)于一個(gè)由上百個(gè)模塊組的復(fù)雜系統(tǒng)來(lái)說(shuō),這是一個(gè)非常艱巨而漫長(zhǎng)的工作。隨著我們所開(kāi)發(fā)的軟件項(xiàng)目越來(lái)越復(fù)雜,傳統(tǒng)的瀑布型開(kāi)發(fā)流程不斷地暴露出以下問(wèn)題:· 需求或設(shè)計(jì)中的錯(cuò)誤往往只有到了項(xiàng)目后期才能夠被發(fā)現(xiàn)例如:系統(tǒng)交付客戶(hù)之后才發(fā)現(xiàn)原

2、先對(duì)于需求的理解是錯(cuò)誤的,系統(tǒng)設(shè)計(jì)中的問(wèn)題要到測(cè)試階段才能被發(fā)現(xiàn)。· 對(duì)于項(xiàng)目風(fēng)險(xiǎn)的控制能力較弱項(xiàng)目風(fēng)險(xiǎn)在項(xiàng)目開(kāi)發(fā)較晚的時(shí)候才能夠真正降低,往往是經(jīng)過(guò)系統(tǒng)測(cè)試之后,才能確定該設(shè)計(jì)是否能夠真正滿足系統(tǒng)需求。· 軟件項(xiàng)目常常延期完成或開(kāi)發(fā)費(fèi)用超出預(yù)算項(xiàng)目開(kāi)發(fā)進(jìn)度往往會(huì)被意外發(fā)生的問(wèn)題所打亂,需要進(jìn)行返工或其他一些額外的開(kāi)發(fā)周期,造成項(xiàng)目延期或費(fèi)用超支。· 項(xiàng)目管理人員專(zhuān)注于文檔的完成和審核來(lái)估計(jì)項(xiàng)目的進(jìn)展情況所以項(xiàng)目經(jīng)理對(duì)于項(xiàng)目狀態(tài)的估計(jì)往往是不準(zhǔn)確的,當(dāng)他回答系統(tǒng)已完成了80%的開(kāi)發(fā)任務(wù)時(shí),剩下20%的開(kāi)發(fā)任務(wù)實(shí)際上消耗的是整個(gè)項(xiàng)目80%的開(kāi)發(fā)資源。在傳統(tǒng)的瀑布模型

3、中,需求和設(shè)計(jì)中的問(wèn)題是無(wú)法在項(xiàng)目開(kāi)發(fā)的前期被檢測(cè)出來(lái)的,只有當(dāng)?shù)谝淮蜗到y(tǒng)集成時(shí),這些設(shè)計(jì)缺陷才會(huì)在測(cè)試中暴露出來(lái),從而導(dǎo)致一系列的返工:重新設(shè)計(jì)、編碼、測(cè)試,進(jìn)而導(dǎo)致項(xiàng)目的延期和開(kāi)發(fā)成本的上升。2. 采用迭代化開(kāi)發(fā)控制項(xiàng)目風(fēng)險(xiǎn) 為 了解決傳統(tǒng)軟件開(kāi)發(fā)流程中的問(wèn)題,我們建議采用迭代化的開(kāi)發(fā)方法來(lái)取代瀑布模型。在瀑布模型中,我們要完成的是整個(gè)軟件系統(tǒng)開(kāi)發(fā)這個(gè)大目標(biāo)。在迭代化的方 法中,我們將整個(gè)項(xiàng)目的開(kāi)發(fā)目標(biāo)劃分成為一些更易于完成和達(dá)到的階段性小目標(biāo),這些小目標(biāo)都有一個(gè)定義明確的階段性評(píng)估標(biāo)準(zhǔn)。迭代就是為了完成一定的階段 性目標(biāo)而所從事的一系列開(kāi)發(fā)活動(dòng),在每個(gè)迭代開(kāi)始前都要根據(jù)項(xiàng)目當(dāng)前

4、的狀態(tài)和所要達(dá)到的階段性目標(biāo)制定迭代計(jì)劃,整個(gè)迭代過(guò)程包含了需求、設(shè)計(jì)、實(shí)施(編 碼)、部署、測(cè)試等各種類(lèi)型的開(kāi)發(fā)活動(dòng),迭代完成之后需要對(duì)迭代完成的結(jié)果進(jìn)行評(píng)估,并以此為依據(jù)來(lái)制定下一次迭代的目標(biāo)。與傳統(tǒng)的瀑布式開(kāi)發(fā)模型相比較,迭代化開(kāi)發(fā)具有以下特點(diǎn):· 允許變更需求需求總是會(huì)變化,這是事實(shí)。給項(xiàng)目帶來(lái)麻煩的常常主要是需求變化和需求"蠕變",它們會(huì)導(dǎo)致延期交付、工期延誤、客戶(hù)不滿 意、開(kāi)發(fā)人員受挫。通過(guò)向用戶(hù)演示迭代所產(chǎn)生的部分系統(tǒng)功能,我們可以盡早地收集用戶(hù)對(duì)于系統(tǒng)的反饋,及時(shí)改正對(duì)于用戶(hù)需求的理解偏差,從而保證開(kāi)發(fā)出來(lái) 的系統(tǒng)真正地解決客戶(hù)的問(wèn)題。·

5、 逐步集成元素在傳統(tǒng)的項(xiàng)目開(kāi)發(fā)中,由于要求一下子集成系統(tǒng)中所有的模塊,集成階段往往要占到整個(gè)項(xiàng)目很大比例的工作量(最 高可達(dá)40%),這一階段的工作經(jīng)常是不確定并且非常棘手。在迭代式方法中,集成可以說(shuō)是連續(xù)不斷的,每一次迭代都會(huì)增量式集成一些新的系統(tǒng)功能,要集成 的元素都比過(guò)去少得多,所以工作量和難度都是比較低的。· 盡早降低風(fēng)險(xiǎn)迭代化開(kāi)發(fā)的主要指導(dǎo)原則就是以架構(gòu)為中心,在早期的迭代中所要解決的主要問(wèn)題就是盡快確定系統(tǒng)架構(gòu),通過(guò)幾 次迭代來(lái)盡快地設(shè)計(jì)出能夠滿足核心需求的系統(tǒng)架構(gòu),這樣可以迅速降低整個(gè)項(xiàng)目的風(fēng)險(xiǎn)。等到系統(tǒng)架構(gòu)穩(wěn)定之后,項(xiàng)目的風(fēng)險(xiǎn)就比較低了,這個(gè)時(shí)候再去實(shí)現(xiàn)系統(tǒng) 中尚未完

6、成的功能,進(jìn)而完成整個(gè)項(xiàng)目。· 有助于提高團(tuán)隊(duì)的士氣開(kāi)發(fā)人員通過(guò)每次迭代都可以在短期內(nèi)看到自己的工作成果,從而有助于他們?cè)鰪?qiáng)信心,更好地完成開(kāi)發(fā)任務(wù)。而在非迭代式開(kāi)發(fā)中,開(kāi)發(fā)人員只有在項(xiàng)目接近尾聲時(shí)才能看到開(kāi)發(fā)的結(jié)果,在此之前的相當(dāng)長(zhǎng)時(shí)間,大家還是在不確定性中摸索前近。· 生成更高質(zhì)量的產(chǎn)品每次迭代都會(huì)產(chǎn)生一個(gè)可運(yùn)行的系統(tǒng),通過(guò)對(duì)這個(gè)可運(yùn)行系統(tǒng)進(jìn)行測(cè)試,我們?cè)谠缙诘牡芯涂梢约皶r(shí)發(fā)現(xiàn)缺陷并改正,性能上的瓶頸也可以盡早發(fā)現(xiàn)并處理。因?yàn)樵诿看蔚锌偸遣粩嗟丶m正錯(cuò)誤,我們可以得到更高質(zhì)量的產(chǎn)品。· 保證項(xiàng)目開(kāi)發(fā)進(jìn)度每次迭代結(jié)束時(shí)都會(huì)進(jìn)行評(píng)估,來(lái)判斷該次迭代有沒(méi)有達(dá)到

7、預(yù)定的目標(biāo)。項(xiàng)目經(jīng)理可以很清楚地知道有哪些需求已經(jīng)實(shí)現(xiàn)了,并且比較準(zhǔn)確地估計(jì)項(xiàng)目的狀態(tài),對(duì)項(xiàng)目的開(kāi)發(fā)進(jìn)度進(jìn)行必要的調(diào)整,保證項(xiàng)目按時(shí)完成。· 容許產(chǎn)品進(jìn)行戰(zhàn)術(shù)改變迭代化的開(kāi)發(fā)具有更大的靈活性,在迭代過(guò)程中可以隨時(shí)根據(jù)業(yè)務(wù)情況或市場(chǎng)環(huán)境來(lái)對(duì)產(chǎn)品的開(kāi)發(fā)進(jìn)行調(diào)整。例如為了同現(xiàn)有的同類(lèi)產(chǎn)品競(jìng)爭(zhēng),可以決定采用搶先競(jìng)爭(zhēng)對(duì)手一步的方法,提前發(fā)布一個(gè)功能簡(jiǎn)化的產(chǎn)品。· 迭代流程自身可在進(jìn)行過(guò)程中得到改進(jìn)和精煉一次迭代結(jié)束時(shí)的評(píng)估不僅要從產(chǎn)品和進(jìn)度的角度來(lái)考察項(xiàng)目的情況,而且還要分析組織和流程本身有什么待改進(jìn)之處,以便在下次迭代中更好地完成任務(wù)。迭代化方法解決的主要是對(duì)于風(fēng)險(xiǎn)的控制問(wèn)題,從下

8、圖可以看出,傳統(tǒng)的開(kāi)發(fā)流程中系統(tǒng)的風(fēng)險(xiǎn)要到項(xiàng)目開(kāi)發(fā)的后期(主要是測(cè)試階段)才能夠被真正降低。 而迭代化開(kāi)發(fā)中的風(fēng)險(xiǎn),可以在項(xiàng)目開(kāi)發(fā)的早期通過(guò)幾次迭代來(lái)盡快地解決掉。在早期的迭代中一旦遇到問(wèn)題,如某一個(gè)迭代沒(méi)有完成預(yù)定的目標(biāo),我們還可以及時(shí) 調(diào)整開(kāi)發(fā)進(jìn)度以保證項(xiàng)目按時(shí)完成。一般到了項(xiàng)目開(kāi)發(fā)的后期(風(fēng)險(xiǎn)受控階段),由于大部分高風(fēng)險(xiǎn)的因素(如需求、架構(gòu)、性能等)都已經(jīng)解決,這時(shí)候只需要投 入更多的資源去實(shí)現(xiàn)剩余的需求即可。這個(gè)階段的項(xiàng)目開(kāi)發(fā)具有很強(qiáng)的可控性,從而保證我們按時(shí)交付一個(gè)高質(zhì)量的軟件系統(tǒng)。迭代化開(kāi)發(fā)不是一種高深的軟件工程理論,它提供了一種控制項(xiàng)目風(fēng)險(xiǎn)的非常有效的機(jī)制。在日常的工作我們也經(jīng)常

9、地應(yīng)用到這一基本思想,如對(duì)于一個(gè)非常 大型的工程項(xiàng)目,我們經(jīng)常會(huì)把它分為幾期來(lái)分步實(shí)施,從而把復(fù)雜的問(wèn)題分解為相對(duì)容易解決的小問(wèn)題,并且能夠在較短周期內(nèi)看到部分系統(tǒng)實(shí)現(xiàn)的效果,通過(guò)盡 早暴露問(wèn)題來(lái)幫助我們及早調(diào)整我們的開(kāi)發(fā)資源,加強(qiáng)項(xiàng)目進(jìn)度的可控程度,保證項(xiàng)目的按時(shí)完成。3. 管理迭代化的軟件項(xiàng)目 當(dāng)我 們?cè)趯?shí)際工作中實(shí)踐迭代化思想時(shí),Rational統(tǒng)一開(kāi)發(fā)流程RUP(Rational Unified Process)可以給予我們實(shí)踐的指導(dǎo)。RUP是一個(gè)通用的軟件流程框架,它是一個(gè)以架構(gòu)為中心、用例驅(qū)動(dòng)的迭代化軟件開(kāi)發(fā)流程。RUP是從幾千個(gè)軟件 項(xiàng)目的實(shí)踐經(jīng)驗(yàn)中總結(jié)出來(lái)的,對(duì)于實(shí)際

10、的項(xiàng)目具有很強(qiáng)的指導(dǎo)意義,是軟件開(kāi)發(fā)行業(yè)事實(shí)上的行業(yè)標(biāo)準(zhǔn)。3.1 軟件開(kāi)發(fā)的四個(gè)階段 在RUP中,我們把軟件開(kāi)發(fā)生命周期劃分為四個(gè)階段,每個(gè)階段的結(jié)束標(biāo)志就是一個(gè)主要的里程碑(如下圖所示)。這四個(gè)階段主要是為了達(dá)到以下階段性的目標(biāo)里程碑:· 先啟(Inception):確定項(xiàng)目開(kāi)發(fā)的目標(biāo)和范圍· 精化(Elaboration):確定系統(tǒng)架構(gòu)和明確需求· 構(gòu)建(Construction):實(shí)現(xiàn)剩余的系統(tǒng)功能· 產(chǎn)品化(Transition):完成軟件的產(chǎn)品化工作,將系統(tǒng)移交給客戶(hù)每個(gè)目標(biāo)里程碑都是一個(gè)商業(yè)上的決策點(diǎn),如先啟階段結(jié)束之后,我們就要決

11、定這個(gè)項(xiàng)目是否可行、是否要繼續(xù)做這個(gè)項(xiàng)目。每一個(gè)階段都是由里程碑來(lái)決定的,判斷一個(gè)階段是否結(jié)束的標(biāo)志就是看項(xiàng)目當(dāng)前的狀態(tài)是否滿足里碑中所規(guī)定的條件。從這種階段劃分模式中可以看出,項(xiàng)目的主要風(fēng)險(xiǎn)集中在前兩個(gè)階段。在精化階段中經(jīng)過(guò)幾次迭代后,我們要為系統(tǒng)建立一個(gè)穩(wěn)定的架構(gòu),在此之后再實(shí)現(xiàn)更 多的系統(tǒng)需求時(shí),不再需要對(duì)該架構(gòu)進(jìn)行修改。同時(shí),在精化階段中,我們通過(guò)迭代來(lái)不斷地收集用戶(hù)的需求反饋,便得系統(tǒng)的需求逐步地明確和完整。3.2 關(guān)于開(kāi)發(fā)資源的分配 基于 RUP風(fēng)險(xiǎn)驅(qū)動(dòng)的迭代化開(kāi)發(fā)模式,我們只需要在項(xiàng)目的先啟階段投入少量的資源,對(duì)項(xiàng)目的開(kāi)發(fā)前景和商業(yè)可行性進(jìn)行一些探索性的研究。在精化階段

12、再投入多一 些的研發(fā)力量來(lái)實(shí)現(xiàn)一些與架構(gòu)相關(guān)的核心需求,逐步地把系統(tǒng)架構(gòu)搭建起來(lái)。等到這兩個(gè)階段結(jié)束之后,項(xiàng)目的一些主要風(fēng)險(xiǎn)和問(wèn)題也得到了解決,這時(shí)候再投入 整個(gè)團(tuán)隊(duì)進(jìn)行全面的系統(tǒng)開(kāi)發(fā)。等到產(chǎn)品化階段,主要的開(kāi)發(fā)任務(wù)已經(jīng)全部完成,項(xiàng)目不再需要維持一個(gè)大規(guī)模的開(kāi)發(fā)團(tuán)隊(duì),開(kāi)發(fā)資源也可以隨之而減少。在項(xiàng)目開(kāi) 發(fā)周期中,開(kāi)發(fā)資源的分配可以如下圖所示。這樣安排可以最充分有效地利用公司的開(kāi)發(fā)資源,緩解軟件公司對(duì)于人力資源不斷增長(zhǎng)的需求,從而降低成本。另外一方面,由于前兩個(gè)階段(先啟和精化) 的風(fēng)險(xiǎn)較高,我們只是投入部分的資源,一旦發(fā)生返工或是項(xiàng)目目標(biāo)的改變,我們也可以將資源浪費(fèi)降到最低點(diǎn)。在傳統(tǒng)的軟件開(kāi)發(fā)

13、流程中,對(duì)于開(kāi)發(fā)資源的分配基 本上是貫穿整個(gè)項(xiàng)目周期而不變的,資源往往沒(méi)有得到充分有效地利用?;谶@種資源分配模式,一個(gè)典型的項(xiàng)目在項(xiàng)目進(jìn)度和所完成的工作量之間的關(guān)系可能如下表中的數(shù)據(jù)所示。先啟精化構(gòu)建產(chǎn)品化工作量5%20%65%10%進(jìn)度10%30%50%10%3.3 迭代策略 關(guān)于迭代計(jì)劃的安排,通常有以下四種典型的策略模式:· 增量式(Incremental)這種模式的特點(diǎn)是項(xiàng)目架構(gòu)的風(fēng)險(xiǎn)較?。ㄍ情_(kāi)發(fā)一些重復(fù)性的項(xiàng)目),所以精化階段只需要一個(gè)迭代。但項(xiàng)目的開(kāi)發(fā)工作量較大,構(gòu)建階段需要有多次迭代來(lái)實(shí)現(xiàn),每次迭代都在上一次迭代的基礎(chǔ)上增加實(shí)現(xiàn)一部分的系統(tǒng)功能,通過(guò)迭代

14、的進(jìn)行而逐步實(shí)現(xiàn)整個(gè)系統(tǒng)的功能。· 演進(jìn)式(Evolutionary)當(dāng)項(xiàng)目架構(gòu)的風(fēng)險(xiǎn)較大時(shí)(從未開(kāi)發(fā)過(guò)類(lèi)似項(xiàng)目),需要在精化階段通過(guò)多次迭代來(lái)建立系統(tǒng)的架構(gòu),架構(gòu)是通過(guò)多次迭代的探索,逐步演化而來(lái)的。當(dāng)架構(gòu)建立時(shí),往往系統(tǒng)的功能也已經(jīng)基本實(shí)現(xiàn),所以構(gòu)建階段只需要一次迭代。· 增量提交(Incremental Delivery)這種模式的特點(diǎn)產(chǎn)品化階段的迭代較多,比較常見(jiàn)的例子是項(xiàng)目的難度并不 大,但業(yè)務(wù)需求在不斷地發(fā)生變化,所以需要通過(guò)迭代來(lái)不斷地部署完成的系統(tǒng);但同時(shí)又要不斷地收集用戶(hù)的反饋來(lái)完善系統(tǒng)需求,并通過(guò)后續(xù)的迭代來(lái)補(bǔ)充實(shí)現(xiàn) 這些需求。應(yīng)用這種策略時(shí)要求系統(tǒng)架構(gòu)

15、非常穩(wěn)定,能夠適應(yīng)滿足后續(xù)需求變化的要求。· 單次迭代(Grand Design)傳統(tǒng)的瀑布模型可以看作是迭代化開(kāi)發(fā)的一個(gè)特例,整個(gè)開(kāi)發(fā)流程只有一次迭代。但這種模式有一個(gè)固有的弱點(diǎn),由于它對(duì)風(fēng)險(xiǎn)的控制能力較差,往往會(huì)在產(chǎn)品化階段產(chǎn)生一些額外的迭代,造成項(xiàng)目的延誤。這幾種迭代策略只是一些典型模式的代表,實(shí)際應(yīng)用中應(yīng)根據(jù)實(shí)際情況靈活應(yīng)用,最常見(jiàn)的迭代計(jì)劃往往是這幾種模式的組合。3.4 制定項(xiàng)目開(kāi)發(fā)計(jì)劃 在迭代 化的開(kāi)發(fā)模式中,項(xiàng)目開(kāi)發(fā)計(jì)劃也是隨著項(xiàng)目的進(jìn)展而不斷細(xì)化、調(diào)整并完善的。傳統(tǒng)的項(xiàng)目開(kāi)發(fā)計(jì)劃是在項(xiàng)目早期制定的,項(xiàng)目經(jīng)理總是試圖在項(xiàng)目的一開(kāi)始就制 定一個(gè)非常詳細(xì)完善的開(kāi)發(fā)計(jì)劃。與之相反,迭代開(kāi)發(fā)模式認(rèn)為在項(xiàng)目早期只需要制定一個(gè)比較粗略的開(kāi)發(fā)計(jì)劃,因?yàn)殡S著項(xiàng)目的進(jìn)展,項(xiàng)目的狀態(tài)在不斷地發(fā)生變 化,項(xiàng)目經(jīng)理需要隨時(shí)根據(jù)迭代的結(jié)果來(lái)對(duì)項(xiàng)目計(jì)劃進(jìn)行調(diào)整,并制定下一次迭代的詳細(xì)計(jì)劃。在RUP中,我們把項(xiàng)目開(kāi)發(fā)計(jì)劃分為以下三部分:· 項(xiàng)目計(jì)劃確定整個(gè)項(xiàng)目的開(kāi)發(fā)目標(biāo)和進(jìn)度安排,包括每一個(gè)階段的起止時(shí)間段。· 階段計(jì)劃當(dāng)前階段中包含有幾個(gè)迭代,每一次迭代要達(dá)到的目標(biāo)以及進(jìn)度安排。· 迭代計(jì)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論