天天看點

軟體開發模型

典型的開發模型有:1. 邊做邊改模型(Build-and-Fix Model);2. 瀑布模型(Waterfall Model);3. 快速原型模型(Rapid Prototype Model);4. 增量模型(Incremental Model);5.螺旋模型(Spiral Model);6.演化模型(evolution model);7.噴泉模型(fountain model);8.智能模型(四代技術(4GL));9.混合模型(hybrid model);10.RAD模型;

遺憾的是,許多産品都是使用"邊做邊改"模型來開發的。在這種模型中,既沒有規格說明,也沒有經過設計,軟體随着客戶的需要一次又一次地不斷被修改.

在這個模型中,開發人員拿到項目立即根據需求編寫程式,調試通過後生成軟體的第一個版本。在提供給使用者使用後,如果程式出現錯誤,或者使用者提出新的要求,開發人員重新修改代碼,直到使用者滿意為止。

這是一種類似作坊的開發方式,對編寫幾百行的小程式來說還不錯,但這種方法對任何規模的開發來說都是不能令人滿意的,其主要問題在于:

缺少規劃和設計環節,軟體的結構随着不斷的修改越來越糟,導緻無法繼續修改;

忽略需求環節,給軟體開發帶來很大的風險;

沒有考慮測試和程式的可維護性,也沒有任何文檔,軟體的維護十分困難。

瀑布模型将軟體生命周期劃分為制定計劃、需求分析、軟體設計、程式編寫、軟體測試和運作維護等六個基本活動,并且規定了它們自上而下、互相銜接的固定次序,如同瀑布流水,逐級下落。

在瀑布模型中,軟體開發的各項活動嚴格按照線性方式進行,目前活動接受上一項活動的工作結果,實施完成所需的工作内容。目前活動的工作結果需要進行驗證,如果驗證通過,則該結果作為下一項活動的輸入,繼續進行下一項活動,否則傳回修改。

瀑布模型強調文檔的作用,并要求每個階段都要仔細驗證。但是,這種模型的線性過程太理想化,已不再适合現代的軟體開發模式,幾乎被業界抛棄,其主要問題在于:

各個階段的劃分完全固定,階段之間産生大量的文檔,極大地增加了工作量;

由于開發模型是線性的,使用者隻有等到整個過程的末期才能見到開發成果,進而增加了開發的風險;

早期的錯誤可能要等到開發後期的測試階段才能發現,進而帶來嚴重的後果。

我們應該認識到,"線性"是人們最容易掌握并能熟練應用的思想方法。當人們碰到一個複雜的"非線性"問題時,總是千方百計地将其分解或轉化為一系列簡單的線性問題,然後逐個解決。一個軟體系統的整體可能是複雜的,而單個子程式總是簡單的,可以用線性的方式來實作,否則幹活就太累了。線性是一種簡潔,簡潔就是美。當我們領會了線性的精神,就不要再呆闆地套用線性模型的外表,而應該用活它。例如增量模型實質就是分段的線性模型,螺旋模型則是接連的彎曲了的線性模型,在其它模型中也能夠找到線性模型的影子。

快速原型模型的第一步是建造一個快速原型,實作客戶或未來的使用者與系統的互動,使用者或客戶對原型進行評價,進一步細化待開發軟體的需求。通過逐漸調整原型使其滿足客戶的要求,開發人員可以确定客戶的真正需求是什麼;第二步則在第一步的基礎上開發客戶滿意的軟體産品。

顯然,快速原型方法可以克服瀑布模型的缺點,減少由于軟體需求不明确帶來的開發風險,具有顯著的效果。

快速原型的關鍵在于盡可能快速地建造出軟體原型,一旦确定了客戶的真正需求,所建造的原型将被丢棄。是以,原型系統的内部結構并不重要,重要的是必須迅速建立原型,随之迅速修改原型,以反映客戶的需求。

1988年,Barry Boehm正式發表了軟體系統開發的"螺旋模型",它将瀑布模型和快速原型模型結合起來,強調了其他模型所忽視的風險分析,特别适合于大型複雜的系統。螺旋模型沿着螺線進行若幹次疊代,圖中的四個象限代表了以下活動:

制定計劃:确定軟體目标,標明實施方案,弄清項目開發的限制條件;

風險分析:分析評估所選方案,考慮如何識别和消除風險;

實施工程:實施軟體開發和驗證;

客戶評估:評價開發工作,提出修正建議,制定下一步計劃。

螺旋模型由風險驅動,強調可選方案和限制條件進而支援軟體的重用,有助于将軟體品質作為特殊目标融入産品開發之中。但是,螺旋模型也有一定的限制條件,具體如下:

螺旋模型強調風險分析,但要求許多客戶接受和相信這種分析,并做出相關反應是不容易的,是以,這種模型往往适應于内部的大規模軟體開發。

如果執行風險分析将大大影響項目的利潤,那麼進行風險分析毫無意義,是以,螺旋模型隻适合于大規模軟體項目。

軟體開發人員應該擅長尋找可能的風險,準确地分析風險,否則将會帶來更大的風險

一個階段首先是确定該階段的目标,完成這些目标的選擇方案及其限制條件,然後從風險角度分析方案的開發政策,努力排除各種潛在的風險,有時需要通過建造原型來完成。如果某些風險不能排除,該方案立即終止,否則啟動下一個開發步驟。最後,評價該階段的結果,并設計下一個階段。

演化模型是一種全局的軟體(或産品)生存周期模型。屬于疊代開發方法。

該模型可以表示為:第一次疊代(需求->設計->實作->測試->內建)->回報->第二次疊代(需求->設計->實作->測試->內建)->回報->……

即根據使用者的基本需求,通過快速分析構造出該軟體的一個初始可運作版本,這個初始的軟體通常稱之為原型,然後根據使用者在使用原型的過程中提出的意見和建議對原型進行改進,獲得原型的新版本。重複這一過程,最終可得到令使用者滿意的軟體産品。采用演化模型的開發過程,實際上就是從初始的原型逐漸演化成最終軟體産品的過程。演化模型特别适用于對軟體需求缺乏準确認識的情況。

(也稱面向對象的生存期模型, OO模型)噴泉模型與傳統的結構化生存期比較,具有更多的增量和疊代性質,生存期的各個階段可以互相重疊和多次反複,而且在項目的整個生存期中還可以嵌入子生存期。就像水噴上去又可以落下來,可以落在中間,也可以落在最底部。

繼續閱讀