迭代模型
1.什么是迭代模型
早在20世紀(jì)50年代末期,軟件領(lǐng)域中就出現(xiàn)了迭代模型。最早的迭代過(guò)程可能被描述為“分段模型(stagewise model)”,其背景是H.D.Benington領(lǐng)導(dǎo)的美國(guó)空軍SAGE項(xiàng)目。
迭代模型是RUP(Rational Unified Process,統(tǒng)一軟件開發(fā)過(guò)程,統(tǒng)一軟件過(guò)程)推薦的周期模型。在RUP中,迭代被定義為:迭代包括產(chǎn)生產(chǎn)品發(fā)布(穩(wěn)定、可執(zhí)行的產(chǎn)品版本)的全部開發(fā)活動(dòng)和要使用該發(fā)布必需的所有其他外圍元素。所以,在某種程度上,開發(fā)迭代是一次完整地經(jīng)過(guò)所有工作流程的過(guò)程:(至少包括)需求工作流程、分析設(shè)計(jì)工作流程、實(shí)施工作流程和測(cè)試工作流程。
實(shí)質(zhì)上,它類似小型的瀑布式項(xiàng)目。RUP認(rèn)為,所有的階段(需求及其它)都可以細(xì)分為迭代。每一次的迭代都會(huì)產(chǎn)生一個(gè)可以發(fā)布的產(chǎn)品,這個(gè)產(chǎn)品是最終產(chǎn)品的一個(gè)子集。迭代的思想如下圖所示。
在現(xiàn)代過(guò)程方法XP(eXtreme Programming,極限編程)、RUP無(wú)一例外地都推薦、主張采用能顯著減少風(fēng)險(xiǎn)的迭代模型。美國(guó)國(guó)防部原本提倡瀑布過(guò)程和觀點(diǎn),在發(fā)現(xiàn)那么多采用了瀑布模型的失敗的項(xiàng)目之后,不但放棄了對(duì)它的要求,而且從1994年的報(bào)告開始,積極地鼓勵(lì)采用更加現(xiàn)代化的迭代模型來(lái)取代瀑布模型做法。同時(shí),中國(guó)中科院也提倡選用迭代模型。
對(duì)眾多的開發(fā)模型和過(guò)程方法,及權(quán)威機(jī)構(gòu)的看法,企業(yè)應(yīng)選擇什么樣的開發(fā)模型,應(yīng)慎重對(duì)從以下幾方面進(jìn)行考慮:
1、RUP雖然內(nèi)容極其豐富,定義了選起、精化、構(gòu)建、產(chǎn)品化4個(gè)階段和業(yè)務(wù)建模、需求、分析設(shè)計(jì)、實(shí)現(xiàn)、測(cè)試、部署等9個(gè)工種,提供了一大堆的文檔模板,但極易讓人誤解是重型的過(guò)程,實(shí)施推廣有一定難度。
2、再次,在質(zhì)量管理方面:以實(shí)現(xiàn)系統(tǒng)架構(gòu)、核心功能目標(biāo)的迭代產(chǎn)品生的工作成果作為質(zhì)量控制重點(diǎn)。每次迭代進(jìn)行系統(tǒng)集成、系統(tǒng)測(cè)試,達(dá)到對(duì)軟件質(zhì)量的持續(xù)驗(yàn)證。每次系統(tǒng)測(cè)試,需要回歸測(cè)試前一次迭代遺留發(fā)現(xiàn)的問(wèn)題。每次迭代發(fā)布的小版本組織客戶(包括內(nèi)部客戶、外部客戶)進(jìn)行評(píng)價(jià),通過(guò)演示操作等方式,評(píng)價(jià)該次迭代是否達(dá)到預(yù)定的目標(biāo),并以此為依據(jù)來(lái)制定下一次迭代的目標(biāo)。
3、最后,在其他方面:每次迭代成果須進(jìn)行配置管理,版本控制很重要。在整個(gè)迭代過(guò)程中風(fēng)險(xiǎn)無(wú)處不在,建議每周作一次風(fēng)險(xiǎn)跟蹤。同時(shí)通過(guò)重點(diǎn)關(guān)注進(jìn)度、工作量、滿意度、缺陷等數(shù)據(jù)收集,關(guān)注每次迭代情況。
總之,選擇一個(gè)合適的生命周期模型,并應(yīng)用正確的方法,對(duì)于任何軟件項(xiàng)目的成功是至關(guān)重要。企業(yè)在選擇開發(fā)模型應(yīng)從項(xiàng)目時(shí)間要求、需求明確程度、風(fēng)險(xiǎn)狀況等選擇合適的生命周期模型。
2.迭代模型的選擇使用條件
1、在項(xiàng)目開發(fā)早期需求可能有所變化。
2、分析設(shè)計(jì)人員對(duì)應(yīng)用領(lǐng)域很熟悉。
3、高風(fēng)險(xiǎn)項(xiàng)目。
4、用戶可不同程度地參與整個(gè)項(xiàng)目的開發(fā)過(guò)程。
5、使用面向?qū)ο蟮恼Z(yǔ)言或統(tǒng)一建模語(yǔ)言(Unified Modeling Language,UML)。
6、使用CASE(Computer Aided Software Engineering,計(jì)算機(jī)輔助軟件工程)工具,如Rose(Rose是非常受歡迎的物件軟體開發(fā)工具。)。
7、具有高素質(zhì)的項(xiàng)目管理者和軟件研發(fā)團(tuán)隊(duì)。
3.迭代模型的優(yōu)點(diǎn)
與傳統(tǒng)的瀑布模型相比較,迭代過(guò)程具有以下優(yōu)點(diǎn):
1)降低了在一個(gè)增量上的開支風(fēng)險(xiǎn)。如果開發(fā)人員重復(fù)某個(gè)迭代,那么損失只是這一個(gè)開發(fā)有誤的迭代的花費(fèi)。
2)降低了產(chǎn)品無(wú)法按照既定進(jìn)度進(jìn)入市場(chǎng)的風(fēng)險(xiǎn)。通過(guò)在開發(fā)早期就確定風(fēng)險(xiǎn),可以盡早來(lái)解決而不至于在開發(fā)后期匆匆忙忙。
3)加快了整個(gè)開發(fā)工作的進(jìn)度。因?yàn)殚_發(fā)人員清楚問(wèn)題的焦點(diǎn)所在,他們的工作會(huì)更有效率。
4)由于用戶的需求并不能在一開始就作出完全的界定,它們通常是在后續(xù)階段中不斷細(xì)化的。因此,迭代過(guò)程這種模式使適應(yīng)需求的變化會(huì)更容易些。
4.各種軟件過(guò)程模型的特點(diǎn)[1]
不同的軟件過(guò)程模型對(duì)軟件開發(fā)過(guò)程有不同的理解和認(rèn)識(shí),支持不同的軟件項(xiàng)目和開發(fā)組織。下表對(duì)比和分析了各個(gè)軟件過(guò)程模型的特點(diǎn)及其適用的軟件項(xiàng)目類型。
各種軟件過(guò)程模型的特點(diǎn)
模型名稱 | 技術(shù)特點(diǎn) | 適用范圍 |
---|---|---|
瀑布模型 | 簡(jiǎn)單,分階段,階段間存在因果關(guān)系,
各個(gè)階段完成后都有評(píng)審,允許反饋,不支持 用戶參與,要求預(yù)先確定需求 | 需求易于完善定義且不易變更的軟件系統(tǒng) |
快速原型模型 | 不要求需求預(yù)先完備定義,支持用戶參與,
支持需求的漸進(jìn)式完善和確認(rèn),能夠適應(yīng)用戶需求的變化 | 需求復(fù)雜、難以確定、動(dòng)態(tài)變化的軟件系統(tǒng) |
增量模型 | 軟件產(chǎn)品是被增量式地一塊塊開發(fā)的,
允許開發(fā)活動(dòng)并行和重疊 | 技術(shù)風(fēng)險(xiǎn)較大、用戶需求較為穩(wěn)定的軟件系統(tǒng) |
迭代模型 | 不要求一次性地開發(fā)出完整的軟件系統(tǒng),將軟件
開發(fā)視為一個(gè)逐步獲取用廣需求、完善軟件產(chǎn)品的過(guò)程 | 需求難以確定、不斷變更的軟件系統(tǒng) |
螺旋模型 | 結(jié)合瀑布模型、快速原型模型和迭代模
型的思想,并引進(jìn)了風(fēng)險(xiǎn)分析活動(dòng) | 需求難以獲取和確定、軟件開發(fā)風(fēng)險(xiǎn)較大的軟件系統(tǒng) |
RUP | 可改造、擴(kuò)展和剪裁:可以對(duì)它進(jìn)行設(shè)計(jì)、
開發(fā)、維護(hù)和發(fā)布;強(qiáng)調(diào)迭代開發(fā) | 復(fù)雜和需求難以獲取和確定的軟件系統(tǒng);
軟件開發(fā)項(xiàng)目組擁有豐富的軟件開發(fā)和管理經(jīng)驗(yàn) |