對(duì)于復(fù)雜的大型軟件,開發(fā)一個(gè)原型往往達(dá)不到要求。螺旋模型將瀑布模型與演化模型結(jié)合起來,并且加入兩種模型均忽略了的風(fēng)險(xiǎn)分析。螺旋模型沿著螺線旋轉(zhuǎn),如圖1.5.3所示,在笛卡爾坐標(biāo)的四個(gè)象限上分別表達(dá)了四個(gè)方面的活動(dòng),即: 制定計(jì)劃──確定軟件目標(biāo),選定實(shí)施方案,弄清項(xiàng)目開發(fā)的限制條件; 風(fēng)險(xiǎn)分析──分析所選方案,考慮如何識(shí)別和消除風(fēng)險(xiǎn); 實(shí)施工程──實(shí)施軟件開發(fā) 客戶評(píng)估──評(píng)價(jià)開發(fā)工作,提出修正建議。 沿螺線自內(nèi)向外每旋轉(zhuǎn)一圈便開發(fā)出更為完善的一個(gè)新的軟件版本。 螺旋模型的基本思想:是生命周期模型和快速原型模型的結(jié)合,其基本思想是借助構(gòu)建原型來降低風(fēng)險(xiǎn),把軟件開發(fā)的每一個(gè)階段都看作是增加了風(fēng)險(xiǎn)分析的快速原型模型。螺旋模型的每一個(gè)周期都包括需求定義、風(fēng)險(xiǎn)分析、工程實(shí)現(xiàn)和評(píng)審4個(gè)部分,軟件開發(fā)的整個(gè)過程就是這4個(gè)部分的迭代,每迭代一次,過程就完成一個(gè)周期,軟件開發(fā)就前進(jìn)一個(gè)層次,系統(tǒng)就生成一個(gè)新的版本。 螺旋模型的特點(diǎn): (1)模型結(jié)合性:螺旋模型的每一個(gè)周期都應(yīng)用了原型模型排除風(fēng)險(xiǎn),在確認(rèn)了原型之后,則又啟動(dòng)生命周期模型繼續(xù)過程的演化。因此,螺旋模型是生命周期模型和快速原型模型的結(jié)合,體現(xiàn)了兩個(gè)模型的優(yōu)點(diǎn)。
2)過程迭代性:軟件開發(fā)過程的每個(gè)階段都是一次迭代,這種迭代不是過程的簡單重復(fù),而是每旋轉(zhuǎn)一個(gè)圈就前進(jìn)一個(gè)層次,得到一個(gè)新的版本。 螺旋模型的優(yōu)點(diǎn):強(qiáng)調(diào)可選方案和約束條件有利于已有軟件的重用,有助于把軟件質(zhì)量作為軟件開發(fā)的一個(gè)重要目標(biāo),減少過多或測(cè)試不足帶來的風(fēng)險(xiǎn)。維護(hù)看成是模型的另一個(gè)周期,在維護(hù)和開發(fā)之間沒有本質(zhì)的區(qū)別。 螺旋模型的缺點(diǎn):要求軟件開發(fā)人員具有豐富的風(fēng)險(xiǎn)評(píng)估經(jīng)驗(yàn)和有關(guān)的專門知識(shí),開發(fā)過程比較復(fù)雜,給過程管理和控制帶來一定的難度。 5 增量模型
與建造大廈相同,軟件也是一步一步建造起來的。在增量模型中,軟件被作為一系列的增量構(gòu)
件來設(shè)計(jì)、實(shí)現(xiàn)、集成和測(cè)試,每一個(gè)構(gòu)件是由多種相互作用的模塊所形成的提供特定功能的代碼片段構(gòu)成. 增量模型在各個(gè)階段并不交付一個(gè)可運(yùn)行的完整產(chǎn)品,而是交付滿足客戶需求的一個(gè)子集的可運(yùn)行產(chǎn)品。整個(gè)產(chǎn)品被分解成若干個(gè)構(gòu)件,開發(fā)人員逐個(gè)構(gòu)件地交付產(chǎn)品,這樣做的好處是軟件開發(fā)可以較好地適應(yīng)變化,客戶可以不斷地看到所開發(fā)的軟件,從而降低開發(fā)風(fēng)險(xiǎn),如圖2.2所示。增量模型也存在以下缺陷: (1)
由于各個(gè)構(gòu)件是逐漸并入已有的軟件體系結(jié)構(gòu)中的,所以加入構(gòu)件必須不破壞已構(gòu)造好
的系統(tǒng)部分,這需要軟件具備開放式的體系結(jié)構(gòu)。 (2) 在開發(fā)過程中,需求的變化是不可避免的。增量模型的靈活性可以使其適應(yīng)這種變化的
能力大大優(yōu)于瀑布模型和快速原型模型,但也很容易退化為邊做邊改模型,從而是軟件過程的控制失去整體性。 在使用增量模型時(shí),個(gè)增量往往是實(shí)現(xiàn)基本需求的核心產(chǎn)品。核心產(chǎn)品交付用戶使用后,經(jīng)過評(píng)價(jià)形成下一個(gè)增量的開發(fā)計(jì)劃,它包括對(duì)核心產(chǎn)品的修改和一些新功能的發(fā)布。這個(gè)過程在每個(gè)增量發(fā)布后不斷重復(fù),直到產(chǎn)生終的完善產(chǎn)品。 例如,使用增量模型開發(fā)字處理軟件??梢钥紤],個(gè)增量發(fā)布基本的文件管理、編輯和文檔生成功能,第二個(gè)增量發(fā)布更加完善的編輯和文檔生成功能,第三個(gè)增量實(shí)現(xiàn)拼寫和文法檢查功能,第四個(gè)增量完成高級(jí)的頁面布局功能。 增量模型的基本思想:把軟件產(chǎn)品作為一系列的增量構(gòu)件來設(shè)計(jì)、實(shí)現(xiàn)、集成和測(cè)試。開發(fā)時(shí)分批逐步向用戶提交產(chǎn)品,每次提交一個(gè)滿足用戶需求子集的增量構(gòu)件,直到后一次得到滿足用戶全部需求的完整產(chǎn)品為止。 增量模型的特點(diǎn):過程漸進(jìn)性:軟件過程分批次完成,每次提交一個(gè)滿足用戶需求子集的增量構(gòu)件,產(chǎn)品規(guī)模逐漸增大,直到得到滿足用戶全部需求的完整產(chǎn)品為止。 增量模型的優(yōu)點(diǎn):能在較短的時(shí)間內(nèi)向用戶提交部分功能的構(gòu)件,并且在逐步增加產(chǎn)品功能的過程中有充裕的時(shí)間學(xué)習(xí)和適應(yīng)新的功能,減少一個(gè)全新軟件可能給用戶帶來的沖擊。 增量模型的缺點(diǎn):增量構(gòu)件的劃分依賴于系統(tǒng)功能的構(gòu)成和軟件開發(fā)人員的經(jīng)驗(yàn),每次集成新的增量構(gòu)件必須不破壞原有軟件系統(tǒng)的結(jié)構(gòu),因此要求軟件系統(tǒng)的體系結(jié)構(gòu)必須具有高度的開放性和可擴(kuò)充性。