? ?軟件開(kāi)發(fā)模型大體上可以分為三種類(lèi)型。第一種是以軟件需求完全確定為前提的瀑布模型;第二種是在軟件開(kāi)發(fā)初始階段只能提供基本需求時(shí)采用的漸進(jìn)式開(kāi)發(fā)模型,如原型模型、螺旋模型等;第三種是以形式化開(kāi)發(fā)方法為基礎的的變換模型。時(shí)間中經(jīng)常將幾種模型組合使用,以便充分利用各種模型的優(yōu)點(diǎn)。
1.瀑布模型
瀑布模型也稱(chēng)軟件生存周期模型。它在軟件工程中占有重要地位,它提供了軟件開(kāi)發(fā)的基本框架,這比依靠“個(gè)人技藝”開(kāi)發(fā)軟件好得多。它有利于大型軟件開(kāi)發(fā)過(guò)程中人員的組織、管理,有利于軟件開(kāi)發(fā)方法和工具的研究與使用,從而提高了大型軟件項目開(kāi)發(fā)的質(zhì)量和效率。
瀑布模型的缺點(diǎn):一是個(gè)階段的劃分完全固定,階段之間產(chǎn)生大量的文檔,極大地增加了工作量;二是由于開(kāi)發(fā)模型是線(xiàn)性的用戶(hù)只有等到整個(gè)過(guò)程的末期才能見(jiàn)到開(kāi)發(fā)成果,從而卡增加了開(kāi)發(fā)的風(fēng)險;三是早期的錯誤可能要等到開(kāi)發(fā)后期的測試階段才能發(fā)現,進(jìn)而帶來(lái)嚴重后果。
2.原型模型
原型模型的主要思想:先借用已有系統作為原型模型,通過(guò)“樣品”不斷改進(jìn), 使得最后的產(chǎn)品就是用戶(hù)所需要的。 原型模型通過(guò)向用戶(hù)提供原型獲取用戶(hù)的反饋,使開(kāi)發(fā)出的軟件能夠真正反映用戶(hù)的需求。
原型模型的特點(diǎn):開(kāi)發(fā)人員和用戶(hù)在“原型”上達成一致。這樣一來(lái),可以減少設計中的錯誤和開(kāi)發(fā)中的風(fēng)險,也減少了對用戶(hù)培訓的時(shí)間,而提高了系統的實(shí)用、正確性以及用戶(hù)的滿(mǎn)意程度??s短了開(kāi)發(fā)周期,加快了工程進(jìn)度。降低成本。?
原型模型的缺點(diǎn):當告訴用戶(hù),還必須重新生產(chǎn)該產(chǎn)品時(shí),用戶(hù)是很難接受的。這往往給工程繼續開(kāi)展帶來(lái)不利因素。不宜利用原型系統作為最終產(chǎn)品。
3.螺旋模型
螺旋模型采用一種周期性的方法來(lái)進(jìn)行系統開(kāi)發(fā)。這會(huì )導致開(kāi)發(fā)出眾多的中間版本?! ?/p>
螺旋模型的優(yōu)點(diǎn):
1)設計上的靈活性,可以在項目的各個(gè)階段進(jìn)行變更。?
2)以小的分段來(lái)構建大型系統,使成本計算變得簡(jiǎn)單容易。?
3)客戶(hù)始終參與每個(gè)階段的開(kāi)發(fā),保證了項目不偏離正確方向及項目的可控性。?
4)隨著(zhù)項目推進(jìn),客戶(hù)始終掌握項目的最新信息 , 從而他或她能夠和管理層有效地交互。?
? ? 5)客戶(hù)認可這種公司內部的開(kāi)發(fā)方式帶來(lái)的良好的溝通和高質(zhì)量的產(chǎn)品。
? ? 螺旋模型的缺點(diǎn):
很難讓用戶(hù)確信這種演化方法的結果是可以控制的。建設周期長(cháng),而軟件技術(shù)發(fā)展比較快,所以經(jīng)常出現軟件開(kāi)發(fā)完畢后,和當前的技術(shù)水平有了較大的差距,無(wú)法滿(mǎn)足當前用戶(hù)需求。?
螺旋模型的項目適用:?
對于新近開(kāi)發(fā),需求不明確的情況下,適合用螺旋模型進(jìn)行開(kāi)發(fā),便于風(fēng)險控制和需求變更。
4.基于四代技術(shù)的模型
四代語(yǔ)言(4GL)是在大型數據庫管理程序基礎上發(fā)展起來(lái)的程序設計語(yǔ)言。是面向結果的非過(guò)程式語(yǔ)言它獨立于具體的處理機,有豐富的軟件工具的支持,能統一利用和管理各種數據資源,因此能適應不同水平用戶(hù)的需要。以4GL為核心的軟件開(kāi)發(fā)技術(shù)稱(chēng)為四代技術(shù)(4GT).軟件開(kāi)發(fā)者在定義軟件需求、給出軟件規格說(shuō)明后,4GT工具能夠將開(kāi)發(fā)者編寫(xiě)的軟件規格說(shuō)明自動(dòng)轉換成程序代碼,這大大減少了分析、設計、編碼、與測試的時(shí)間。實(shí)踐表明,大多數需求明確的小型應用系統,特別是信息領(lǐng)域、工程和實(shí)時(shí)嵌入式小型應用系統采用4GT,在軟件開(kāi)發(fā)時(shí)間、成本、質(zhì)量等方面都會(huì )取得比較好的效果。對于大型的軟件開(kāi)發(fā)項目,由于在系統分析、設計、測試、文檔生成等方面要做大量的工作,采用4GT雖然可以節省部分代碼生成的時(shí)間,但它在整個(gè)大型軟件系統開(kāi)發(fā)中所占的比例是有限的。
5.變換模型
變換模型是基于形式化規格說(shuō)明語(yǔ)言及程序變換的軟件開(kāi)發(fā)模型。它采用形式化的軟件開(kāi)發(fā)方法對形式化的軟件規格說(shuō)明進(jìn)行一系列自動(dòng)或半自動(dòng)的程序變換,最后映射為計算機系統能夠接受的程序系統。
為了確認形式化規格說(shuō)明與軟件需求的一致性,往往以形式化規格說(shuō)明為基礎開(kāi)發(fā) 一個(gè)軟件原型, 用戶(hù)可以從人機界面、系統主要功能和性能等幾個(gè)方面對原型進(jìn)行評審。必要時(shí),可以修改軟件需求、形式化規格說(shuō)明和原型,直至原型被確認為止。這時(shí)軟件開(kāi)發(fā)人員即可對形式化的規格說(shuō)明進(jìn)行一系列的程序變換,直至生成計算機系統可以接受的目標代碼?!俺绦蜃儞Q”是軟件開(kāi)發(fā)的另一種方法,其基本思想是把程序設計的過(guò)程分為生成階段和改進(jìn)階段。首先通過(guò)對問(wèn)題的分析制定形式規范并生成一個(gè)程序,通常是一種函數型的“遞歸方程”。然后通過(guò)一系列保持正確性的源程序到源程序的變換,把函數型風(fēng)格轉換成過(guò)程型風(fēng)格并進(jìn)行數據結構和算法的求精,最終得到一個(gè)有效的面向過(guò)程的程序。這種變換過(guò)程是一種嚴格的形式推導過(guò)程,所以只需對變換前的程序的規范加以驗證,變換后的程序的正確性將由變換法則的正確性來(lái)保證。變換模型的優(yōu)點(diǎn)是解決了代碼結構經(jīng)多次修改而變壞的問(wèn)題,減少了許多中間步驟(如設計、編碼和測試等)。但是變換模型仍有較大局限,以形式化開(kāi)發(fā)方法為基礎的變換模型需要嚴格的數學(xué)理論和一整套開(kāi)發(fā)環(huán)境的支持,目前形式化開(kāi)發(fā)方法在理論、實(shí)踐和人員培訓方面距工程應用尚有一段距離。
? ? 前面介紹的軟件開(kāi)發(fā)模型是針對軟件開(kāi)發(fā)的某些問(wèn)題和要求設計的,他們都有各自的優(yōu)點(diǎn)和不足.在軟件工程實(shí)踐中經(jīng)常把幾種模型組合在一起配套使用,形成組合模型