軟件開發(fā)模型給出了軟件開發(fā)活動個階段之間的關(guān)系,他是軟件開發(fā)過程的概括,是軟件工程的重要內(nèi)容。軟件開發(fā)模型為軟件工程管理提供了里程碑和進度表。
8.3.1 軟件開發(fā)模型概述
軟件開發(fā)模型大體上分為三種類型。第一種是以軟件需求完全確定為前提的瀑布模型;第二種是愛軟件開發(fā)初始階段只能提供基本需求時采用的迭代或漸進式開發(fā)模型 (噴泉模型,螺旋模型,統(tǒng)一開發(fā)過程和敏捷方法)第三種是以形式化開發(fā)方法為基礎(chǔ)的變換模型。
- 瀑布模型
瀑布模型時一種嚴格定義方法,它將軟件開發(fā)的過程分為軟件計劃、需求分析、軟件設(shè)計、程序編碼、軟件測試和運行維護6個階段。 - 演化模型
演化模型主要針對事先不能完整定義需求的軟件開發(fā),是在快讀開發(fā)一個原型的基礎(chǔ)上,根據(jù)用戶在調(diào)用原型的過程中提出的反饋意見和建議,對原型進行改進,獲得原型的新版本,重復(fù),直到演化成最終的軟件產(chǎn)品。 - 螺旋模型
螺旋模型時瀑布模型和演化模型相結(jié)合,并加入兩者所忽略的風險分析所建立的一種軟件開發(fā)模型。 - 噴泉模型
噴泉模型時一種以用戶需求為動力,以對象為驅(qū)動的模型,主要用于描述面向?qū)ο蟮能浖_發(fā)過程。在噴泉模型中,個活動之間無明顯界限,稱為無間隙性。由于對象概念的引入,只用類和關(guān)系來表達分析、設(shè)計和實現(xiàn)等活動。 - 變化模型
變化模型是基礎(chǔ)形式化規(guī)格說明語言和程序變換的軟件開發(fā)模型,他對形式化的軟件規(guī)格說明進行一系列自動或半自動的程序變換,最后映射為計算機能夠接受的軟件系統(tǒng)。 - 智能模型
智能模型也稱為基于知識的軟件開發(fā)模型,他綜合了上述若干模型,并把專家系統(tǒng)結(jié)合在一起。該模型應(yīng)用基于規(guī)則的系統(tǒng),采用規(guī)約和推理機制,幫助開發(fā)人員完成開發(fā)工作,并使維護在系統(tǒng)規(guī)格說明一級進行。 - V模型
V模型是在快速應(yīng)用開發(fā)模型基礎(chǔ)上演變而來,由于將整個開發(fā)過程構(gòu)造成一個V字而得名。V模型強調(diào)軟件開發(fā)的協(xié)作和速度,將軟件實現(xiàn)和驗證有機地結(jié)合起來,在保證較高的軟件質(zhì)量情況下縮短開發(fā)周期。
8.3.2 快速應(yīng)用開發(fā)
快速應(yīng)用開發(fā)(rapid application development ,RAD)是這一種比傳統(tǒng)生命周期法更快得多的開發(fā)方法,他強調(diào)極短的開發(fā)周期。RAD模型時瀑布模型的一個高速變種,通過使用基于構(gòu)件的開發(fā)方法快速開發(fā)。
1.RAD的基本思想
(1)讓用戶主動地參與到系統(tǒng)分析、設(shè)計和構(gòu)造中來
(2)將項目開發(fā)組織成一系列重大突出的研討會,研討會要讓投資方,用戶、系統(tǒng)分析師、設(shè)計人員和開發(fā)人員一起參與。
(3)通過迭代的構(gòu)造方法,加速需求分析和設(shè)計階段。
(4)讓用戶提前看到一個可工作的系統(tǒng)。
- RAD的開發(fā)階段
RAD的流程從業(yè)務(wù)建模開始,隨后是數(shù)據(jù)建模、過程建模、應(yīng)用生成、測試與交付。
(1)業(yè)務(wù)建模 確定驅(qū)動業(yè)務(wù)過程運作的信息,可以使用數(shù)據(jù)流圖來幫助建立業(yè)務(wù)模型。
(2)數(shù)據(jù)建模 為支持業(yè)務(wù)過程的數(shù)據(jù)流查找數(shù)據(jù)對象集合、定義數(shù)據(jù)對象屬性,并與其他數(shù)據(jù)對象的關(guān)系構(gòu)成數(shù)據(jù)模型,可以使用E-R圖來幫助建立數(shù)據(jù)模型。
(3)處理建模 將數(shù)據(jù)對象轉(zhuǎn)變?yōu)橐瓿梢粋€業(yè)務(wù)功能所需要的信息流,創(chuàng)建處理以描述增加,修改、刪除或獲取某個數(shù)據(jù)對象,即細化數(shù)據(jù)流圖加工。
(4)應(yīng)用生成 利用環(huán)境提供的工具自動生成并構(gòu)建整個應(yīng)用系統(tǒng)。
(5)測試與交付 因為RAD強調(diào)復(fù)用,許多構(gòu)件已經(jīng)是測試過的,這就減少了測試的時間。 - RAD的特點
RAD采用基于構(gòu)件的開發(fā)方法,復(fù)用已有的程序結(jié)構(gòu)或者構(gòu)件,或者創(chuàng)建可復(fù)用的,在所有情況下,均可以使用CASE工具輔助進行軟件構(gòu)件。
(1)RAD對模塊化要求比較高,如果有一項不能模塊化,那么RAD所需的構(gòu)建就會有問題。
(2)開發(fā)者和客戶必須在很短的時間能完成一系列的需求分析
(3)RAD只能用于管理系統(tǒng)開發(fā),不適合技術(shù)風險很高的情況。
8.3.3 統(tǒng)一過程
(unified process,UP)統(tǒng)一過程是一個通用過程框架,可以用與種類廣泛的軟件系統(tǒng),不同的應(yīng)用領(lǐng)域。不同的組織類型,不同的性能水平和不同的項目規(guī)模。UP具有三個顯著特點,即用例驅(qū)動、以架構(gòu)為中心、迭代和增量。
- RUP概述
(rational unified process)是rational 公司開發(fā)維護的過程產(chǎn)品。RUP將項目管理、業(yè)務(wù)建模、分析與設(shè)計等統(tǒng)一起來,貫穿整個開發(fā)過程。
RUP使用Internet 技術(shù),增強團隊的開發(fā)效率,并為所有成員提供最佳的軟件實現(xiàn)方案,他使團隊中每個開發(fā)人員的見解和思想得到統(tǒng)一,使開發(fā)小組成員的溝通更為容易,而這正是任何項目要取得成功的關(guān)鍵因素。
RUP在軟件過程在時間上分解為4個順序的階段,分別是初始階段、細化階段、構(gòu)建階段和移交階段。每個階段結(jié)束都要安排一次技術(shù)評審。 - 初始階段
初始階段為了系統(tǒng)建立業(yè)務(wù)模型并確定項目邊界。
(1)明確項目規(guī)模
(2)評估項目風險
(3)制訂項目計劃
(4)階段技術(shù)評審 - 細化階段
細化階段的任務(wù)是分析問題領(lǐng)域,建立完善的結(jié)構(gòu),淘汰項目中最高風險因素。
(1)確定架構(gòu)
(2)制訂構(gòu)建階段計劃
(3)建立支持環(huán)境
(4)選擇構(gòu)件
(5)階段技術(shù)評審 - 構(gòu)建階段
在構(gòu)建階段,要開發(fā)所有剩余的構(gòu)建和應(yīng)用功能,吧這些構(gòu)建集成為產(chǎn)品,并進行詳細測試。 - 移交階段
當極短已經(jīng)足夠完善,可以安裝到最終用戶實際環(huán)境中,則進入交付階段。交付階段的重點是確保軟件對最終用戶是可用的。
8.3.4 敏捷方法
敏捷方法以應(yīng)對快速變化的需求,雖然他們的具體名稱、理念、過程、術(shù)語都不盡相同,但相對于“非敏捷”而言,他們更強調(diào)開發(fā)團隊與用戶之間的緊密協(xié)作、面對面的溝通、批犯的交付新的軟件版、緊湊而自我組織型的團隊,更注重人的作用。
- 敏捷宣言
敏捷方法強調(diào):
- 讓客戶滿意和軟件盡早增量發(fā)布
- 小而高度自主的項目團隊
- 非正式的方法
- 最小化軟件工程總做產(chǎn)品以及整體精簡開發(fā)
主要的敏捷方法有:
- 極限編程
- 自適應(yīng)軟件開發(fā)
- 水晶方法
- 特性驅(qū)動開發(fā)
- 動態(tài)驅(qū)動開發(fā)
- 敏捷數(shù)據(jù)庫技術(shù)
- 精益軟件開發(fā)
敏捷開發(fā)的原則包括用戶參與、增量式提交、簡單性、接收變更、強調(diào)開發(fā)人員的作用和及時反饋。
- 敏捷開發(fā)的特點
(1)客戶參與往往依賴于客戶參與的意愿和客戶自身的代表性
(2)團隊成員的性格可能不適合激烈的投入,可能無法做到與其他成員之間的良好溝通
(3)對系統(tǒng)的變更做出優(yōu)先級排序可能是極短困難的
(4)維護系統(tǒng)的間接性往往需要額外的工作,迫于時間表的壓力,可能沒有時間執(zhí)行系統(tǒng)簡化過程。 - XP方法
(eXtreme programming,XP)敏捷方法最著名的就是XP,XP是一種輕量、高效、低風險、柔性、可預(yù)測、科學且充滿樂趣的軟件開發(fā)方式,適用于小型或者中型軟件開發(fā)團隊,并且客戶的需求模糊或需求多變。
(1)在更短的周期能,更早的提供具體。持續(xù)的反饋信息。
(2)迭代地進行假話編制,首先在最開始迅速生成一個總體計劃,然后在整個項目開發(fā)過程中不斷地發(fā)展它。
(3)依賴于自動測試程序開監(jiān)控開發(fā)進度
(4)依賴于口頭交流,測試和源程序進行溝通
(5)倡導(dǎo)持續(xù)的演化式的設(shè)計
(6)依賴于開發(fā)團隊內(nèi)部的緊密協(xié)作
(7)盡可能達到程序員短期利益和項目長期利益的平衡。
XP由價值觀、原則、實踐和行為4個部分組成,他們彼此相互依賴、關(guān)聯(lián),并通過行為貫穿于整個生命周期。XP的核心是其總結(jié)的四大價值觀,即溝通、簡單、反饋和勇氣。XP的的5個原則是快速反饋、簡單性假設(shè)、逐步修改、提倡更改和優(yōu)質(zhì)工作。
貫徹“小步快跑”的開發(fā)原則,因此工作量絕不可打折扣,通常采用測試先行的編碼方式來提供支持。