软件工程--螺旋模型详解
螺旋模型
軟件開發(fā)幾乎總要冒一定風(fēng)險,例如,產(chǎn)品交付給用戶之后用戶可能不滿意,到了預(yù)訂的交付日期軟件可能還未開發(fā)出來,實際的開發(fā)成本可能超過預(yù)算,產(chǎn)品完成前一些關(guān)鍵的開發(fā)人員可能“跳槽”了,產(chǎn)品投入市場之前競爭對手發(fā)布了一個功能相近、價格更低的軟件等。軟件風(fēng)險是任何軟件開發(fā)項目中都普遍存在的實際問題,項目越大,軟件越復(fù)雜,承擔(dān)該項目所冒的風(fēng)險也越大。軟件風(fēng)險可能在不同程度上損害軟件開發(fā)過程和軟件產(chǎn)品質(zhì)量。因此,在軟件開發(fā)過程中必須及時識別和分析風(fēng)險,并且采取適當(dāng)措施以消除或減少風(fēng)險的危害。
構(gòu)件原型是一種能使某些類型風(fēng)險降至最低的方法。為了降低交付給用戶的產(chǎn)品不能滿足用戶需要的風(fēng)險,一種行之有效的方法是在需求分析階段快速構(gòu)建一個原型。在后續(xù)的階段中也可以通過構(gòu)造適當(dāng)?shù)脑蛠斫档湍承┘夹g(shù)風(fēng)險。當(dāng)然,原型并不能“包治百病”,對于某些類型的風(fēng)險(例如,聘請不到需要的專業(yè)人員或關(guān)鍵的技術(shù)人員在項目完成前“跳槽”),原型方法是無能為力的。
**螺旋模型的基本思想是:**使用原型及其他方法來盡量降低風(fēng)險。理解這種模型的一個簡便方法,是把它看作在每個階段之前都增加了風(fēng)險分析過程的快速原型模型,如下圖所示:
完整的螺旋模型如下圖:
圖中帶箭頭的點劃線的長度代表當(dāng)前累計的開發(fā)費用,螺旋線的角度值代表開發(fā)進度。螺旋線每個周期對應(yīng)于一個開發(fā)階段。每個階段開始時(左上象限)的任務(wù)是,確定該階段的目標(biāo)、為完成這些目標(biāo)選擇方案及設(shè)定這些方案的約束條件。接下來的任務(wù)是,從風(fēng)險角度分析上一步的工作結(jié)果,努力排除各種潛在的風(fēng)險,通常用建造原型的方法來排除風(fēng)險。如果風(fēng)險不能排除,則停止開發(fā)工作或大幅度地削減項目規(guī)模。如果成功地排除了所有風(fēng)險,則啟動下一個開發(fā)步驟(右下象限),在這個步驟的工作過程相當(dāng)于純粹的瀑布模型。最后是評價該階段的工作成果并計劃下一個階段的工作。
**螺旋模型有許多優(yōu)點:**對可選方案和約束條件的強調(diào)有利于已有軟件的重用,也有助于把軟件質(zhì)量作為軟件開發(fā)的一個重要目標(biāo);減少了過多測試(浪費資金)或測試不足(產(chǎn)品故障多)所帶來的風(fēng)險;更重要的是,在螺旋模型中維護只是模型的另一個周期,在維護和開發(fā)之間并沒有本質(zhì)區(qū)別。
螺旋模型主要適用于內(nèi)部開發(fā)的大規(guī)模軟件項目。 如果進行風(fēng)險分析的費用接近整個項目的經(jīng)費預(yù)算,則風(fēng)險分析是不可行的。事實上,項目越大,風(fēng)險也越大,因此,進行風(fēng)險分析的必要性也越大。此外,只有內(nèi)部開發(fā)的項目,才能在風(fēng)險過大時方便地中止項目。
螺旋模型的主要優(yōu)勢在于: 它是風(fēng)險驅(qū)動的,但是,這也可能是它的一個弱點。除非軟件開發(fā)人員具有豐富的風(fēng)險評估經(jīng)驗和這方面專門的知識,否則將出現(xiàn)真正的風(fēng)險;當(dāng)項目實際正在走向災(zāi)難時,開發(fā)人員可能還認(rèn)為一切正常。
總結(jié)
以上是生活随笔為你收集整理的软件工程--螺旋模型详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 为什么一个字节定义成8位?
- 下一篇: 你可能对电灯泡一无所知