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