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