02第二章:軟件過(guò)程報(bào)告_第1頁(yè)
02第二章:軟件過(guò)程報(bào)告_第2頁(yè)
02第二章:軟件過(guò)程報(bào)告_第3頁(yè)
02第二章:軟件過(guò)程報(bào)告_第4頁(yè)
02第二章:軟件過(guò)程報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩134頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

軟件工程過(guò)程是為了獲得高質(zhì)量軟件所需要完成的一系列任務(wù)的框架,它規(guī)定了完成各項(xiàng)任務(wù)的工作步驟。

本章講述在軟件生命周期全過(guò)程中應(yīng)該完成的基本任務(wù),并介紹各種常用的過(guò)程模型。第二章:軟件過(guò)程2.1軟件生命周期的基本任務(wù)2.2瀑布模型2.3快速原型模型2.4增量模型2.5螺旋模型2.6噴泉模型2.7Rational統(tǒng)一過(guò)程2.8敏捷過(guò)程與極限編程2.9能力成熟度模型第二章:軟件過(guò)程1.軟件定義:確定軟件開(kāi)發(fā)工程必須完成的總目標(biāo);確定工程的可行性;導(dǎo)出實(shí)現(xiàn)工程目標(biāo)應(yīng)該采用的策略及系統(tǒng)必須完成的功能;估計(jì)完成該項(xiàng)工程需要的資源和成本,并且制訂工程進(jìn)度表。這個(gè)時(shí)期的工作通常又稱(chēng)為系統(tǒng)分析,由系統(tǒng)分析員負(fù)責(zé)完成。軟件定義時(shí)期通常進(jìn)一步劃分為3個(gè)階段,即問(wèn)題定義、可行性研究和需求分析。軟件生命周期:2.軟件開(kāi)發(fā):具體設(shè)計(jì)和實(shí)現(xiàn)在前一個(gè)時(shí)期定義的軟件,它通常由下述4個(gè)階段組成:概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)、編碼和單元測(cè)試、綜合測(cè)試。其中前兩個(gè)階段又稱(chēng)為系統(tǒng)設(shè)計(jì),后兩個(gè)階段又稱(chēng)為系統(tǒng)實(shí)現(xiàn)。軟件生命周期:3.運(yùn)行維護(hù):當(dāng)軟件在使用過(guò)程中發(fā)現(xiàn)錯(cuò)誤時(shí)應(yīng)該加以改正;當(dāng)環(huán)境改變時(shí)應(yīng)該修改軟件以適應(yīng)新的環(huán)境;當(dāng)用戶(hù)有新要求時(shí)應(yīng)該及時(shí)改進(jìn)軟件以滿(mǎn)足用戶(hù)的新需要。通常對(duì)維護(hù)時(shí)期不再進(jìn)一步劃分階段,但是每一次維護(hù)活動(dòng)本質(zhì)上都是一次壓縮和簡(jiǎn)化了的定義和開(kāi)發(fā)過(guò)程。軟件生命周期:

通過(guò)調(diào)研,系統(tǒng)分析員應(yīng)該提出關(guān)于問(wèn)題性質(zhì)、工程目標(biāo)和工程規(guī)模的書(shū)面報(bào)告,并且需要得到客戶(hù)對(duì)這份報(bào)告的確認(rèn)。2.1.1問(wèn)題定義確定上一個(gè)階段的問(wèn)題是否有行得通的解決辦法用最小的代價(jià)在盡可能短的時(shí)間內(nèi)確定問(wèn)題是否能夠解決。2.1.2可行性研究解決“目標(biāo)系統(tǒng)必須做什么”這個(gè)問(wèn)題可行性研究的基本目的是用較小的成本在較短的時(shí)間內(nèi)確定是否存在可行的解法,因此許多細(xì)節(jié)被忽略了。然而在最終的系統(tǒng)中卻不能遺漏任何一個(gè)微小的細(xì)節(jié)是用正式文檔準(zhǔn)確地記錄對(duì)目標(biāo)系統(tǒng)的需求,該文檔通常稱(chēng)為規(guī)格說(shuō)明書(shū)(specification)。2.1.3需求分析概括地回答“怎樣實(shí)現(xiàn)目標(biāo)系統(tǒng)?”概要設(shè)計(jì)又稱(chēng)為初步設(shè)計(jì)、邏輯設(shè)計(jì)、高層設(shè)計(jì)或總體設(shè)計(jì)。設(shè)計(jì)幾種可能的方案推薦最佳方案制定詳細(xì)計(jì)劃模塊化2.1.4概要設(shè)計(jì)將抽象概括的方式具體化“應(yīng)該怎樣具體地實(shí)現(xiàn)這個(gè)系統(tǒng)”設(shè)計(jì)出程序的詳細(xì)規(guī)格說(shuō)明詳細(xì)設(shè)計(jì)也稱(chēng)為模塊設(shè)計(jì)、物理設(shè)計(jì)或低層設(shè)計(jì)。在這個(gè)階段將詳細(xì)地設(shè)計(jì)每個(gè)模塊,確定實(shí)現(xiàn)模塊功能所需要的算法和數(shù)據(jù)結(jié)構(gòu)。2.1.5詳細(xì)設(shè)計(jì)這個(gè)階段的關(guān)鍵任務(wù)是寫(xiě)出正確的,容易理解、容易維護(hù)的程序模塊程序員應(yīng)該根據(jù)目標(biāo)系統(tǒng)的性質(zhì)和實(shí)際環(huán)境,選取一種適當(dāng)?shù)母呒?jí)程序設(shè)計(jì)語(yǔ)言(必要時(shí)用匯編語(yǔ)言),把詳細(xì)設(shè)計(jì)的結(jié)果翻譯成用選定的語(yǔ)言書(shū)寫(xiě)的程序,并且仔細(xì)測(cè)試編寫(xiě)出的每一個(gè)模塊。2.1.6編碼和單元測(cè)試這個(gè)階段的關(guān)鍵任務(wù)是通過(guò)各種類(lèi)型的測(cè)試(及相應(yīng)的調(diào)試)使軟件達(dá)到預(yù)定的要求。最基本的測(cè)試是集成測(cè)試和驗(yàn)收測(cè)試。必要時(shí)還可以再通過(guò)現(xiàn)場(chǎng)測(cè)試或平行運(yùn)行等方法對(duì)目標(biāo)系統(tǒng)進(jìn)一步測(cè)試檢驗(yàn)。2.1.7綜合測(cè)試集成測(cè)試是根據(jù)設(shè)計(jì)的軟件結(jié)構(gòu),把經(jīng)過(guò)單元測(cè)試檢驗(yàn)的模塊按某種選定的策略裝配起來(lái),在裝配過(guò)程中對(duì)程序進(jìn)行必要的測(cè)試。驗(yàn)收測(cè)試則是按照規(guī)格說(shuō)明書(shū)的規(guī)定(通常在需求分析階段確定),由用戶(hù)(或在用戶(hù)積極參加下)對(duì)目標(biāo)系統(tǒng)進(jìn)行驗(yàn)收。2.1.7綜合測(cè)試通過(guò)各種必要的維護(hù)活動(dòng)使系統(tǒng)持久地滿(mǎn)足用戶(hù)的需要。改正性維護(hù):也就是診斷和改正在使用過(guò)程中發(fā)現(xiàn)的軟件錯(cuò)誤適應(yīng)性維護(hù):即修改軟件以適應(yīng)環(huán)境的變化2.1.8軟件維護(hù)完善性維護(hù):即根據(jù)用戶(hù)的要求改進(jìn)或擴(kuò)充軟件使它更完善預(yù)防性維護(hù):即修改軟件為將來(lái)的維護(hù)活動(dòng)預(yù)先做準(zhǔn)備。2.1.8軟件維護(hù)實(shí)際上每一項(xiàng)維護(hù)活動(dòng)都應(yīng)該經(jīng)過(guò)提出維護(hù)要求(或報(bào)告問(wèn)題),分析維護(hù)要求,提出維護(hù)方案,審批維護(hù)方案,確定維護(hù)計(jì)劃,修改軟件設(shè)計(jì),修改程序,測(cè)試程序,復(fù)查驗(yàn)收等一系列步驟。因此,實(shí)質(zhì)上是經(jīng)歷了一次壓縮和簡(jiǎn)化了的軟件定義和開(kāi)發(fā)的全過(guò)程。每一項(xiàng)維護(hù)活動(dòng)都應(yīng)該準(zhǔn)確地記錄下來(lái),作為正式的文檔資料加以保存。2.1.8軟件維護(hù)2.1軟件生命周期的基本任務(wù)2.2瀑布模型2.3快速原型模型2.4增量模型2.5螺旋模型2.6噴泉模型2.7Rational統(tǒng)一過(guò)程2.8敏捷過(guò)程與極限編程2.9能力成熟度模型第二章:軟件過(guò)程在20世紀(jì)80年代之前,瀑布模型(waterfallmodel)一直是唯一被廣泛采用的生命周期模型,現(xiàn)在它仍然是軟件工程中應(yīng)用最廣泛的過(guò)程模型。圖2.1所示為傳統(tǒng)的瀑布模型。2.2瀑布模型2.2瀑布模型圖2.1傳統(tǒng)的瀑布模型1.階段間具有順序性和依賴(lài)性

①必須等前一階段的工作完成之后,才能開(kāi)始后一階段的工作;②前一階段的輸出文檔就是后一階段的輸入文檔。2.推遲實(shí)現(xiàn)的觀(guān)點(diǎn)

實(shí)踐表明,對(duì)于規(guī)模較大的軟件項(xiàng)目來(lái)說(shuō),往往編碼開(kāi)始得越早最終完成開(kāi)發(fā)工作所需要的時(shí)間反而越長(zhǎng)。傳統(tǒng)的瀑布模型的特點(diǎn)3.質(zhì)量保證的觀(guān)點(diǎn)①每個(gè)階段都必須完成規(guī)定的文檔,沒(méi)有交出合格的文檔就是沒(méi)有完成該階段的任務(wù)。②每個(gè)階段結(jié)束前都要對(duì)所完成的文檔進(jìn)行評(píng)審,以便盡早發(fā)現(xiàn)問(wèn)題,改正錯(cuò)誤。傳統(tǒng)的瀑布模型的特點(diǎn)傳統(tǒng)的瀑布模型過(guò)于理想化了。事實(shí)上,人在工作過(guò)程中不可能不犯錯(cuò)誤。因此,實(shí)際的瀑布模型是帶“反饋環(huán)”的,如圖2.2所示(圖中實(shí)線(xiàn)箭頭表示開(kāi)發(fā)過(guò)程,虛線(xiàn)箭頭表示維護(hù)過(guò)程)。當(dāng)在后面階段發(fā)現(xiàn)前面階段的錯(cuò)誤時(shí),需要沿圖中左側(cè)的反饋線(xiàn)返回前面的階段,修正前面階段的產(chǎn)品之后再回來(lái)繼續(xù)完成后面階段的任務(wù)。2.2瀑布模型2.2瀑布模型圖2.2加入迭代過(guò)程的瀑布模型可強(qiáng)迫開(kāi)發(fā)人員采用規(guī)范的方法嚴(yán)格地規(guī)定了每個(gè)階段必須提交的文檔要求每個(gè)階段交出的所有產(chǎn)品都必須經(jīng)過(guò)質(zhì)量保證小組的仔細(xì)驗(yàn)證瀑布模型的優(yōu)點(diǎn)瀑布模型是由文檔驅(qū)動(dòng)的”:在可運(yùn)行的軟件產(chǎn)品交付給用戶(hù)之前,用戶(hù)只能通過(guò)文檔來(lái)了解產(chǎn)品是什么樣的。很可能最終開(kāi)發(fā)出的軟件產(chǎn)品不能真正滿(mǎn)足用戶(hù)的需要。瀑布模型的缺點(diǎn)(1)用戶(hù)的需求非常清楚全面,且在開(kāi)發(fā)過(guò)程中沒(méi)有或很少變化(2)開(kāi)發(fā)人員對(duì)軟件的應(yīng)用領(lǐng)域很熟悉(3)用戶(hù)的使用環(huán)境非常穩(wěn)定(4)開(kāi)發(fā)工作對(duì)用戶(hù)參與的要求很低瀑布模型的適用范圍2.1軟件生命周期的基本任務(wù)2.2瀑布模型2.3快速原型模型2.4增量模型2.5螺旋模型2.6噴泉模型2.7Rational統(tǒng)一過(guò)程2.8敏捷過(guò)程與極限編程2.9能力成熟度模型第二章:軟件過(guò)程快速原型(rapidprototype)是快速建立起來(lái)的可以在計(jì)算機(jī)上運(yùn)行的程序,它所能完成的功能往往是最終產(chǎn)品能完成的功能的一個(gè)子集。如圖2.3所示(圖中實(shí)線(xiàn)箭頭表示開(kāi)發(fā)過(guò)程,虛線(xiàn)箭頭表示維護(hù)過(guò)程)2.3快速原型模型2.3快速原型模型圖2.3快速模型原型優(yōu)點(diǎn):快速原型模型是不帶反饋環(huán)的,軟件產(chǎn)品的開(kāi)發(fā)基本上是按線(xiàn)性順序進(jìn)行的。原型系統(tǒng)已經(jīng)通過(guò)與用戶(hù)交互而得到驗(yàn)證,據(jù)此產(chǎn)生的規(guī)格說(shuō)明文檔正確地描述了用戶(hù)需求。開(kāi)發(fā)人員通過(guò)建立原型系統(tǒng)已經(jīng)學(xué)到了許多東西,在設(shè)計(jì)和編碼階段發(fā)生錯(cuò)誤的可能性也比較小。2.3快速原型模型快速原型的本質(zhì)是“快速”。開(kāi)發(fā)人員應(yīng)該盡可能快地建造出原型系統(tǒng),以加速軟件開(kāi)發(fā)過(guò)程,節(jié)約軟件開(kāi)發(fā)成本。原型的用途是獲知用戶(hù)的真正需求,一旦需求確定了,原型將被拋棄。當(dāng)快速原型的某個(gè)部分是利用軟件工具由計(jì)算機(jī)自動(dòng)生成的時(shí)候,可以把這部分用到最終的軟件產(chǎn)品中。2.3快速原型模型(1)對(duì)所開(kāi)發(fā)的領(lǐng)域比較熟悉而且有快速的原型開(kāi)發(fā)工具(2)項(xiàng)目招投標(biāo)時(shí),可以以原型模型作為軟件的開(kāi)發(fā)模型(3)進(jìn)行產(chǎn)品移植或升級(jí)時(shí),或?qū)σ延挟a(chǎn)品原型進(jìn)行客戶(hù)化工作時(shí),原型模型是非常適合的2.3快速原型模型的適用范圍2.1軟件生命周期的基本任務(wù)2.2瀑布模型2.3快速原型模型2.4增量模型2.5螺旋模型2.6噴泉模型2.7Rational統(tǒng)一過(guò)程2.8敏捷過(guò)程與極限編程2.9能力成熟度模型第二章:軟件過(guò)程增量模型也稱(chēng)為漸增模型,如圖2.4所示。使用增量模型開(kāi)發(fā)軟件時(shí),把軟件產(chǎn)品作為一系列的增量構(gòu)件來(lái)設(shè)計(jì)、編碼、集成和測(cè)試。每個(gè)構(gòu)件由多個(gè)相互作用的模塊構(gòu)成,并且能夠完成特定的功能。2.4增量模型2.4增量模型圖2.4增量模型增量模型分批地逐步向用戶(hù)提交產(chǎn)品,每次提交一個(gè)滿(mǎn)足用戶(hù)需求子集的可運(yùn)行的產(chǎn)品。整個(gè)軟件產(chǎn)品被分解成許多個(gè)增量構(gòu)件,開(kāi)發(fā)人員一個(gè)構(gòu)件接一個(gè)構(gòu)件地向用戶(hù)提交產(chǎn)品。每次用戶(hù)都得到一個(gè)滿(mǎn)足部分需求的可運(yùn)行的產(chǎn)品,直到最后一次得到滿(mǎn)足全部需求的完整產(chǎn)品。2.4增量模型難點(diǎn):把每個(gè)新的增量構(gòu)件集成到現(xiàn)有軟件體系結(jié)構(gòu)中時(shí),必須不破壞原來(lái)已經(jīng)開(kāi)發(fā)出的產(chǎn)品。此外,必須把軟件的體系結(jié)構(gòu)設(shè)計(jì)得便于按這種方式進(jìn)行擴(kuò)充,向現(xiàn)有產(chǎn)品中加入新構(gòu)件的過(guò)程必須簡(jiǎn)單、方便。2.4增量模型從某種意義上說(shuō),增量模型本身是自相矛盾的。它一方面要求開(kāi)發(fā)人員把軟件看做一個(gè)整體,另一方面又要求開(kāi)發(fā)人員把軟件看做構(gòu)件序列,每個(gè)構(gòu)件本質(zhì)上都獨(dú)立于另一個(gè)構(gòu)件。除非開(kāi)發(fā)人員有足夠的技術(shù)能力協(xié)調(diào)好這一明顯的矛盾,否則用增量模型開(kāi)發(fā)出的產(chǎn)品可能并不令人滿(mǎn)意。2.4增量模型(1)進(jìn)行已有產(chǎn)品升級(jí)或新版本開(kāi)發(fā),增量模型是非常適合的;(2)對(duì)完成期限嚴(yán)格要求的產(chǎn)品,可以使用增量模型;(3)對(duì)所開(kāi)發(fā)的領(lǐng)域比較熟悉而且已有原型系統(tǒng),增量模型也是非常適合的。2.4增量模型的適用范圍2.1軟件生命周期的基本任務(wù)2.2瀑布模型2.3快速原型模型2.4增量模型2.5螺旋模型2.6噴泉模型2.7Rational統(tǒng)一過(guò)程2.8敏捷過(guò)程與極限編程2.9能力成熟度模型第二章軟件過(guò)程使用原型及其他方法來(lái)盡量降低風(fēng)險(xiǎn)。理解這種模型的一個(gè)簡(jiǎn)便方法,是把它看做在每個(gè)階段之前都增加了風(fēng)險(xiǎn)分析過(guò)程的快速原型模型,如圖2.5所示。圖中帶箭頭的點(diǎn)畫(huà)線(xiàn)的長(zhǎng)度代表當(dāng)前累計(jì)的開(kāi)發(fā)費(fèi)用,螺線(xiàn)旋過(guò)的角度值代表開(kāi)發(fā)進(jìn)度?;舅枷?.5螺旋模型圖2.5螺旋模型設(shè)計(jì)上的靈活性,可以在項(xiàng)目的各個(gè)階段進(jìn)行變更;以小的分段來(lái)構(gòu)建大型系統(tǒng),使成本計(jì)算變得簡(jiǎn)單容易;客戶(hù)始終參與每個(gè)階段的開(kāi)發(fā),保證了項(xiàng)目不偏離正確方向以及項(xiàng)目的可控性;隨著項(xiàng)目推進(jìn),客戶(hù)始終掌握項(xiàng)目的最新信息,

從而能夠和管理層有效地交互。優(yōu)點(diǎn)(1)采用螺旋模型需要具有相當(dāng)豐富的風(fēng)險(xiǎn)評(píng)估經(jīng)驗(yàn)和專(zhuān)門(mén)知識(shí),在風(fēng)險(xiǎn)較大的項(xiàng)目開(kāi)發(fā)中,如果未能夠及時(shí)標(biāo)識(shí)風(fēng)險(xiǎn),勢(shì)必造成重大損失;(2)過(guò)多的迭代次數(shù)會(huì)增加開(kāi)發(fā)成本,延遲提交時(shí)間。缺點(diǎn)螺旋模型主要適用于內(nèi)部開(kāi)發(fā)的大規(guī)模軟件項(xiàng)目。如果進(jìn)行風(fēng)險(xiǎn)分析的費(fèi)用接近整個(gè)項(xiàng)目的經(jīng)費(fèi)預(yù)算,則風(fēng)險(xiǎn)分析是不可行的。事實(shí)上,項(xiàng)目越大,風(fēng)險(xiǎn)也越大,因此,進(jìn)行風(fēng)險(xiǎn)分析的必要性也越大。螺旋模型的主要優(yōu)勢(shì)在于,它是風(fēng)險(xiǎn)驅(qū)動(dòng)的,但是,這也可能是它的一個(gè)弱點(diǎn)。2.5螺旋模型2.1軟件生命周期的基本任務(wù)2.2瀑布模型2.3快速原型模型2.4增量模型2.5螺旋模型2.6噴泉模型2.7Rational統(tǒng)一過(guò)程2.8敏捷過(guò)程與極限編程2.9能力成熟度模型第二章:軟件過(guò)程迭代是軟件開(kāi)發(fā)過(guò)程中普遍存在的一種內(nèi)在屬性。經(jīng)驗(yàn)表明,軟件過(guò)程各個(gè)階段之間的迭代或一個(gè)階段內(nèi)各個(gè)工作步驟之間的迭代,在面向?qū)ο蠓缎椭斜仍诮Y(jié)構(gòu)化范型中更常見(jiàn)。圖2.6所示的噴泉模型是典型的面向?qū)ο笊芷谀P??!皣娙边@個(gè)詞體現(xiàn)了面向?qū)ο筌浖_(kāi)發(fā)過(guò)程迭代和無(wú)縫的特性。2.6噴泉模型2.6噴泉模型圖2.6噴泉模型為避免使用噴泉模型開(kāi)發(fā)軟件時(shí)開(kāi)發(fā)過(guò)程過(guò)分無(wú)序,應(yīng)該把一個(gè)線(xiàn)性過(guò)程(例如,快速原型模型或螺旋模型中的中心垂線(xiàn))作為總目標(biāo)。但是,同時(shí)也應(yīng)該記住,面向?qū)ο蠓缎捅旧硪蠼?jīng)常對(duì)開(kāi)發(fā)活動(dòng)進(jìn)行迭代或求精。2.6噴泉模型噴泉模型不像瀑布模型那樣,需要分析活動(dòng)結(jié)束后才開(kāi)始設(shè)計(jì)活動(dòng),設(shè)計(jì)活動(dòng)結(jié)束后才開(kāi)始編碼活動(dòng)。該模型的各個(gè)階段沒(méi)有明顯的界限,開(kāi)發(fā)人員可以同步進(jìn)行開(kāi)發(fā)。優(yōu)點(diǎn)其優(yōu)點(diǎn)是可以提高軟件項(xiàng)目開(kāi)發(fā)效率,節(jié)省開(kāi)發(fā)時(shí)間,適應(yīng)于面向?qū)ο蟮能浖_(kāi)發(fā)過(guò)程??梢詮娜魏我粋€(gè)階段(圓圈)轉(zhuǎn)到其它一個(gè)階段。即,在整個(gè)過(guò)程中補(bǔ)漏、拾遺、糾錯(cuò)的切入點(diǎn)大大增多,受到的階段性的限制較少。優(yōu)點(diǎn)由于噴泉模型在各個(gè)開(kāi)發(fā)階段是重疊的,因此在開(kāi)發(fā)過(guò)程中需要大量的開(kāi)發(fā)人員,因此不利于項(xiàng)目的管理。噴泉模型要求嚴(yán)格管理文檔,使得審核的難度加大,尤其是面對(duì)可能隨時(shí)加入各種信息、需求與資料的情況。缺點(diǎn)2.1軟件生命周期的基本任務(wù)2.2瀑布模型2.3快速原型模型2.4增量模型2.5螺旋模型2.6噴泉模型2.7Rational統(tǒng)一過(guò)程2.8敏捷過(guò)程與極限編程2.9能力成熟度模型第二章:軟件過(guò)程Rational統(tǒng)一過(guò)程(rationalunifiedprocess,RUP)是由Rational軟件公司(已被IBM并購(gòu))推出的一個(gè)軟件開(kāi)發(fā)過(guò)程框架。所謂軟件開(kāi)發(fā)過(guò)程框架是指團(tuán)隊(duì)可以根據(jù)具體的項(xiàng)目組或軟件開(kāi)發(fā)企業(yè)的不同需求,能夠定義、配置、定制和實(shí)施一致的軟件開(kāi)發(fā)過(guò)程。2.7Rational統(tǒng)一過(guò)程1.用于成功開(kāi)發(fā)軟件的一組基本觀(guān)念和原則。2.一套關(guān)于可重用方法內(nèi)容和過(guò)程構(gòu)建的框架。3.基礎(chǔ)的方法和過(guò)程定義語(yǔ)言。RUP核心元素2.7.1最佳實(shí)踐1.迭代式開(kāi)發(fā):迭代式開(kāi)發(fā)允許在每次迭代過(guò)程中需求發(fā)生變化,這種開(kāi)發(fā)方法通過(guò)一系列細(xì)化來(lái)加深對(duì)問(wèn)題的理解,因此能更容易地容納需求的變更。也可以把軟件開(kāi)發(fā)過(guò)程看做是一個(gè)風(fēng)險(xiǎn)管理過(guò)程,迭代式開(kāi)發(fā)通過(guò)采用可驗(yàn)證的方法來(lái)減少風(fēng)險(xiǎn)。圖2.7迭代式開(kāi)發(fā)2.管理需求:在開(kāi)發(fā)軟件的過(guò)程中,客戶(hù)需求將不斷地發(fā)生變化,因此,確定系統(tǒng)的需求是一個(gè)連續(xù)的過(guò)程。RUP描述了如何提取、組織系統(tǒng)的功能性需求和約束條件并把它們文檔化。RUP采用用例分析來(lái)捕獲需求,并由它們驅(qū)動(dòng)設(shè)計(jì)和實(shí)現(xiàn)。2.7.1最佳實(shí)踐3.使用基于組件的架構(gòu):所謂組件就是功能清晰的模塊或子系統(tǒng)。系統(tǒng)可以由已經(jīng)存在的、由第三方開(kāi)發(fā)商提供的組件構(gòu)成,因此組件使軟件重用成為可能。RUP提供了使用現(xiàn)有的或新開(kāi)發(fā)的組件定義架構(gòu)的系統(tǒng)化方法,從而有助于降低軟件開(kāi)發(fā)的復(fù)雜性,提高軟件重用率。2.7.1最佳實(shí)踐4.可視化建模:RUP與可視化的統(tǒng)一建模語(yǔ)言(UnifiedModelingLanguage,UML)緊密地聯(lián)系在一起,在開(kāi)發(fā)過(guò)程中建立起軟件系統(tǒng)的可視化模型,可以幫助人們提高管理軟件復(fù)雜性的能力。2.7.1最佳實(shí)踐5.驗(yàn)證軟件質(zhì)量:某些軟件不受用戶(hù)歡迎的一個(gè)重要原因,是其質(zhì)量低下。在軟件投入運(yùn)行后再去查找和修改出現(xiàn)的問(wèn)題,比在開(kāi)發(fā)的早期階段就進(jìn)行這項(xiàng)工作需要花費(fèi)更多的人力和時(shí)間。在RUP中,軟件質(zhì)量評(píng)估不再是一種事后的行為或由單獨(dú)小組進(jìn)行的孤立活動(dòng),而是內(nèi)建在貫穿于整個(gè)開(kāi)發(fā)過(guò)程的、由全體成員參與的所有活動(dòng)中。2.7.1最佳實(shí)踐6.控制軟件變更:在變更是不可避免的環(huán)境中,必須具有管理變更的能力,才能確保每個(gè)修改都是可接受的而且能被跟蹤的。RUP描述了如何控制、跟蹤和監(jiān)控修改,以確保迭代開(kāi)發(fā)的成功。2.7.1最佳實(shí)踐(1)前景:制定前景

有一個(gè)清晰的前景是開(kāi)發(fā)一個(gè)滿(mǎn)足項(xiàng)目干系人(stakeholder)需求的產(chǎn)品的關(guān)鍵。前景(vision)給更詳細(xì)的技術(shù)需求提供了一個(gè)高層的、有時(shí)候是合同式的基礎(chǔ)。前景的內(nèi)容將回答以下問(wèn)題:

關(guān)鍵術(shù)語(yǔ)是什么?(詞匯表)2.7.2RUP的十大要素

我們要嘗試解決什么問(wèn)題?(問(wèn)題聲明)

誰(shuí)是項(xiàng)目干系人?誰(shuí)是用戶(hù)?他們的需要是什么?

產(chǎn)品的特性是什么?

功能性需求是什么?(用例)

非功能性需求是什么?

設(shè)計(jì)約束是什么?2.7.2RUP的十大要素(2)計(jì)劃:按計(jì)劃管理

在RUP中,軟件開(kāi)發(fā)計(jì)劃(softwaredevelopmentplan,SDP)綜合了管理項(xiàng)目所需的各種信息,也許會(huì)包括一些在先啟階段開(kāi)發(fā)的單獨(dú)的內(nèi)容。SDP必須在整個(gè)項(xiàng)目中被維護(hù)和更新。2.7.2RUP的十大要素(3)風(fēng)險(xiǎn):降低風(fēng)險(xiǎn)并跟蹤相關(guān)問(wèn)題RUP的要點(diǎn)之一是在項(xiàng)目早期就標(biāo)識(shí)并處理最大的風(fēng)險(xiǎn)。項(xiàng)目組標(biāo)識(shí)的每一個(gè)風(fēng)險(xiǎn)都應(yīng)該有一個(gè)相應(yīng)的緩解或解決計(jì)劃。風(fēng)險(xiǎn)列表應(yīng)該既作為項(xiàng)目活動(dòng)的計(jì)劃工具,又作為組織迭代的基礎(chǔ)。2.7.2RUP的十大要素(4)業(yè)務(wù)案例:檢驗(yàn)業(yè)務(wù)案例

業(yè)務(wù)案例主要用于為實(shí)現(xiàn)項(xiàng)目前景而制定經(jīng)濟(jì)計(jì)劃。一旦制定之后,業(yè)務(wù)案例就用來(lái)對(duì)項(xiàng)目提供的投資收益率(ROI)進(jìn)行精確的評(píng)估。

業(yè)務(wù)案例的描述不應(yīng)深挖問(wèn)題的細(xì)節(jié),而應(yīng)就為什么需要該產(chǎn)品樹(shù)立一個(gè)有說(shuō)服力的論點(diǎn)。2.7.2RUP的十大要素(5)架構(gòu):設(shè)計(jì)組件架構(gòu)

在RUP中,軟件系統(tǒng)的架構(gòu)是指一個(gè)系統(tǒng)關(guān)鍵部件的組織或結(jié)構(gòu),組件之間通過(guò)接口交互,而組件是由一些更小的組件和接口組成的。架構(gòu)由軟件架構(gòu)文檔通過(guò)多個(gè)視圖表示,每個(gè)視圖都描述了某一組項(xiàng)目干系人所關(guān)心的系統(tǒng)的某個(gè)方面2.7.2RUP的十大要素(6)原型:增量地構(gòu)建和測(cè)試產(chǎn)品RUP是為了盡早排除問(wèn)題和解決風(fēng)險(xiǎn)和問(wèn)題而構(gòu)建、測(cè)試和評(píng)估產(chǎn)品的可執(zhí)行版本的一種迭代方法。遞增地構(gòu)造和測(cè)試系統(tǒng)的組件,這是實(shí)施和測(cè)試規(guī)程及原則通過(guò)迭代證明價(jià)值的“要素”。2.7.2RUP的十大要素(7)評(píng)估:定期評(píng)估結(jié)果

顧名思義,RUP的迭代評(píng)估審查了迭代的結(jié)果。評(píng)估得出了迭代滿(mǎn)足需求規(guī)范的程度,同時(shí)還包括學(xué)到的教訓(xùn)和實(shí)施的過(guò)程改進(jìn)。根據(jù)項(xiàng)目的規(guī)模、風(fēng)險(xiǎn)以及迭代的特點(diǎn),評(píng)估可以是對(duì)演示及其結(jié)果的一條簡(jiǎn)單的記錄,也可能是一個(gè)完整的、正式的測(cè)試評(píng)審記錄。2.7.2RUP的十大要素(8)變更請(qǐng)求:管理并控制變更RUP的配置和變更管理流程的要點(diǎn)是當(dāng)變化發(fā)生時(shí)管理和控制項(xiàng)目的規(guī)模,并且貫穿整個(gè)生命周期。在RUP中,變更請(qǐng)求通常用于記錄和跟蹤缺陷和增強(qiáng)功能的要求,或者對(duì)產(chǎn)品提出的任何其他類(lèi)型的變更請(qǐng)求。2.7.2RUP的十大要素(9)用戶(hù)支持:部署可用的產(chǎn)品

在RUP中,部署流程的要點(diǎn)是包裝和交付產(chǎn)品,同時(shí)交付有助于最終用戶(hù)學(xué)習(xí)、使用和維護(hù)產(chǎn)品的所有必要的材料。項(xiàng)目組至少要給用戶(hù)提供一個(gè)用戶(hù)指南(也許是通過(guò)聯(lián)機(jī)幫助的方式提供),可能還有一個(gè)安裝指南和版本發(fā)布說(shuō)明。2.7.2RUP的十大要素(10)過(guò)程:采用適合項(xiàng)目的過(guò)程

選擇適合正開(kāi)發(fā)的產(chǎn)品類(lèi)型的流程是非常必要的。即使在選定一個(gè)流程后,也不能盲目遵循這個(gè)流程——必須應(yīng)用常理和經(jīng)驗(yàn)來(lái)配置流程和工具,以滿(mǎn)足組織和項(xiàng)目的需要。2.7.2RUP的十大要素2.7.3RUP生命周期圖2.8方法內(nèi)容定義與方法內(nèi)容在流程中的應(yīng)用業(yè)務(wù)建模:深入了解使用目標(biāo)系統(tǒng)的機(jī)構(gòu)及其商業(yè)運(yùn)作,評(píng)估目標(biāo)系統(tǒng)對(duì)使用它的機(jī)構(gòu)的影響。需求:捕獲客戶(hù)的需求,并且使開(kāi)發(fā)人員和用戶(hù)達(dá)成對(duì)需求描述的共識(shí)。分析與設(shè)計(jì):把需求分析的結(jié)果轉(zhuǎn)化成分析模型與設(shè)計(jì)模型。(1)核心流程實(shí)現(xiàn):把設(shè)計(jì)模型轉(zhuǎn)換成實(shí)現(xiàn)結(jié)果(形式化地定義代碼結(jié)構(gòu);用構(gòu)件實(shí)現(xiàn)類(lèi)和對(duì)象;對(duì)開(kāi)發(fā)出的構(gòu)件進(jìn)行單元測(cè)試;把不同實(shí)現(xiàn)人員開(kāi)發(fā)出的模塊集成為可執(zhí)行的系統(tǒng))。測(cè)試:檢查各個(gè)子系統(tǒng)的交互與集成,驗(yàn)證所有需求是否都被正確地實(shí)現(xiàn)了,識(shí)別、確認(rèn)缺陷并確保在軟件部署之前消除缺陷。(1)核心流程部署:成功地生成目標(biāo)系統(tǒng)的可運(yùn)行的版本,并把軟件移交給最終用戶(hù)。配置與變更管理:跟蹤并維護(hù)在軟件開(kāi)發(fā)過(guò)程中產(chǎn)生的所有制品的完整性和一致性。項(xiàng)目管理:提供項(xiàng)目管理框架,為軟件開(kāi)發(fā)項(xiàng)目制定計(jì)劃、人員配備、執(zhí)行和監(jiān)控等方面的實(shí)用準(zhǔn)則,并為風(fēng)險(xiǎn)管理提供框架。(1)核心流程環(huán)境:向軟件開(kāi)發(fā)機(jī)構(gòu)提供軟件開(kāi)發(fā)環(huán)境,包括過(guò)程管理和工具支持。(1)核心流程先啟階段:建立業(yè)務(wù)模型,定義最終產(chǎn)品視圖,并且確定項(xiàng)目的范圍。精化階段:設(shè)計(jì)并確定系統(tǒng)的體系結(jié)構(gòu),制定項(xiàng)目計(jì)劃,確定資源需求。構(gòu)建階段:開(kāi)發(fā)出所有構(gòu)件和應(yīng)用程序,把它們集成為客戶(hù)需要的產(chǎn)品,并且詳盡地測(cè)試所有功能。移交階段:把開(kāi)發(fā)出的產(chǎn)品提交給用戶(hù)使用。(2)工作階段(2)工作階段圖2.9項(xiàng)目的階段和里程碑RUP強(qiáng)調(diào)采用迭代和漸增的方式來(lái)開(kāi)發(fā)軟件,整個(gè)項(xiàng)目開(kāi)發(fā)過(guò)程由多個(gè)迭代過(guò)程組成。事實(shí)上,RUP重復(fù)一系列組成軟件生命周期的循環(huán)。每個(gè)階段又進(jìn)一步細(xì)分為一次或多次迭代過(guò)程。(3)RUP迭代式開(kāi)發(fā)2.1軟件生命周期的基本任務(wù)2.2瀑布模型2.3快速原型模型2.4增量模型2.5螺旋模型2.6噴泉模型2.7Rational統(tǒng)一過(guò)程2.8敏捷過(guò)程與極限編程2.9能力成熟度模型第二章:軟件過(guò)程(1)“個(gè)體和交互”勝過(guò)“過(guò)程和工具”

優(yōu)秀的團(tuán)隊(duì)成員是軟件開(kāi)發(fā)項(xiàng)目獲得成功的最重要因素,但不好的過(guò)程和工具也會(huì)使最優(yōu)秀的團(tuán)隊(duì)成員無(wú)法發(fā)揮作用。團(tuán)隊(duì)成員的合作、溝通以及交互能力要比單純的軟件編程能力更為重要2.8.1敏捷過(guò)程概述(2)“可以使用的軟件”勝過(guò)“面面俱到的文檔”

軟件開(kāi)發(fā)的主要目標(biāo)是向用戶(hù)提供可以使用的軟件而不是文檔,但是,完全沒(méi)有文檔的軟件也是一種災(zāi)難。開(kāi)發(fā)人員應(yīng)該把主要精力放在創(chuàng)建可使用的軟件上面,僅當(dāng)迫切需要并且具有重大意義時(shí),才進(jìn)行文檔編制工作,而且所編織的內(nèi)部文檔應(yīng)該盡量簡(jiǎn)明扼要和主題突出。2.8.1敏捷過(guò)程概述(3)“客戶(hù)合作”勝過(guò)“合同談判”

客戶(hù)通常不可能做到一次性地把他們的需求完整準(zhǔn)確地表述在合同中。能夠滿(mǎn)足客戶(hù)不斷變化的需求的切實(shí)可行的途徑是:開(kāi)發(fā)團(tuán)隊(duì)與客戶(hù)密切協(xié)作。因此,能指導(dǎo)開(kāi)發(fā)團(tuán)隊(duì)與客戶(hù)協(xié)同工作的合同才是最好的合同。2.8.1敏捷過(guò)程概述(4)“響應(yīng)變化”勝過(guò)“遵循計(jì)劃”

軟件開(kāi)發(fā)過(guò)程總會(huì)有變化,這是客觀(guān)存在的現(xiàn)實(shí)。一個(gè)軟件過(guò)程必須反映現(xiàn)實(shí),因此,軟件過(guò)程應(yīng)該有足夠的能力及時(shí)響應(yīng)變化。然而沒(méi)有計(jì)劃的項(xiàng)目也會(huì)因陷入混亂而失敗,關(guān)鍵是計(jì)劃必須有足夠的靈活性和可塑性,在形勢(shì)發(fā)生變化時(shí)能迅速調(diào)整,以適應(yīng)業(yè)務(wù)、技術(shù)等方面的變化。2.8.1敏捷過(guò)程概述1.最重要的是通過(guò)盡早和持續(xù)地交付有價(jià)值的軟件以滿(mǎn)足客戶(hù)需要。2.即使在開(kāi)發(fā)后期也歡迎需求的變化。敏捷過(guò)程駕馭變化帶給客戶(hù)競(jìng)爭(zhēng)優(yōu)勢(shì)。3.經(jīng)常交付可以使用的軟件,間隔可以從幾星期到幾個(gè)月,時(shí)間尺度越短越好。4.業(yè)務(wù)人員和開(kāi)發(fā)人員應(yīng)該在整個(gè)項(xiàng)目過(guò)程中每天都在一起工作。“敏捷宣言”的原則5.使用積極的開(kāi)發(fā)人員進(jìn)行項(xiàng)目,給他們提供所需環(huán)境和支持,并信任他們能夠完成任務(wù)。6.在開(kāi)發(fā)小組中最有效率和效果的信息傳達(dá)方式是面對(duì)面的交談。7.可以使用的軟件是度量進(jìn)度的主要標(biāo)準(zhǔn)。8.敏捷過(guò)程提倡的是持續(xù)開(kāi)發(fā)過(guò)程。投資“敏捷宣言”的原則人、開(kāi)發(fā)人員和用戶(hù)應(yīng)該維持一個(gè)長(zhǎng)期穩(wěn)定的步調(diào)。9.持續(xù)地追求卓越的技術(shù)與良好的設(shè)計(jì)會(huì)增加敏捷性。10.簡(jiǎn)單(盡可能減少工作量)是最重要的。11.最好的架構(gòu)、需求和設(shè)計(jì)都來(lái)自于自組織的團(tuán)隊(duì)。

“敏捷宣言”的原則12.團(tuán)隊(duì)要定期總結(jié)如何提高效率,然后相應(yīng)地調(diào)整自己的行為。根據(jù)上述價(jià)值觀(guān)提出的軟件過(guò)程統(tǒng)稱(chēng)為敏捷過(guò)程,其中應(yīng)用比較廣泛的是極限編程和Scrum?!懊艚菪浴钡脑瓌t極限編程(extremeprogramming)是敏捷過(guò)程中最負(fù)盛名的一個(gè),其名稱(chēng)中“極限”二字的含義是指把好的開(kāi)發(fā)實(shí)踐運(yùn)用到極致。目前,極限編程已經(jīng)成為一個(gè)典型的開(kāi)發(fā)方法,廣泛應(yīng)用于需求模糊且經(jīng)常改變的場(chǎng)合。2.8.2極限編程

客戶(hù)作為開(kāi)發(fā)團(tuán)隊(duì)的成員

使用用戶(hù)素材

短交付周期

驗(yàn)收測(cè)試

結(jié)對(duì)編程

測(cè)試驅(qū)動(dòng)開(kāi)發(fā)

集體所有1.極限編程的有效實(shí)踐

持續(xù)集成

可持續(xù)的開(kāi)發(fā)速度

開(kāi)放的工作空間

及時(shí)調(diào)整計(jì)劃

簡(jiǎn)單的設(shè)計(jì)

重構(gòu)

使用隱喻1.極限編程的有效實(shí)踐

必須至少有一名客戶(hù)代表在項(xiàng)目的整個(gè)開(kāi)發(fā)周期中與開(kāi)發(fā)人員在一起緊密地配合工作,客戶(hù)代表負(fù)責(zé)確定需求、回答開(kāi)發(fā)人員的問(wèn)題并且設(shè)計(jì)功能驗(yàn)收測(cè)試方案??蛻?hù)作為開(kāi)發(fā)團(tuán)隊(duì)的成員

所謂用戶(hù)素材就是正在進(jìn)行的關(guān)于需求的談話(huà)內(nèi)容的助記符。根據(jù)用戶(hù)素材可以合理地安排實(shí)現(xiàn)該項(xiàng)需求的時(shí)間。使用用戶(hù)素材

每?jī)芍芡瓿梢淮蔚牡^(guò)程實(shí)現(xiàn)了用戶(hù)的一些需求,交付出目標(biāo)系統(tǒng)的一個(gè)可工作的版本。通過(guò)向有關(guān)的用戶(hù)演示迭代生成的系統(tǒng),獲得他們的反饋意見(jiàn)。短交付周期

通過(guò)執(zhí)行由客戶(hù)制定的驗(yàn)收測(cè)試來(lái)捕獲用戶(hù)素材的細(xì)節(jié)。驗(yàn)收測(cè)試

結(jié)對(duì)編程就是由兩名開(kāi)發(fā)人員在同一臺(tái)計(jì)算機(jī)上共同編寫(xiě)解決同一個(gè)問(wèn)題的程序代碼,通常一個(gè)人編碼,另一個(gè)人對(duì)代碼進(jìn)行審查與測(cè)試,以保證代碼的正確性與可讀性。結(jié)對(duì)編程是加強(qiáng)開(kāi)發(fā)人員相互溝通與評(píng)審的一種方式。結(jié)對(duì)編程

極限編程強(qiáng)調(diào)“測(cè)試先行”。在編碼之前應(yīng)該首先設(shè)計(jì)好測(cè)試方案,然后再編程,直至所有測(cè)試都獲得通過(guò)之后才可以結(jié)束工作。測(cè)試驅(qū)動(dòng)開(kāi)發(fā)

極限編程強(qiáng)調(diào)程序代碼屬于整個(gè)開(kāi)發(fā)小組集體所有,小組每個(gè)成員都有更改代碼的權(quán)利,每個(gè)成員都對(duì)全部代碼的質(zhì)量負(fù)責(zé)。集體所有

極限編程主張?jiān)谝惶熘畠?nèi)多次集成系統(tǒng),而且隨著需求的變更,應(yīng)該不斷地進(jìn)行回歸測(cè)試。持續(xù)集成

開(kāi)發(fā)人員以能夠長(zhǎng)期維持的速度努力工作。XP(extremeprogramming)規(guī)定開(kāi)發(fā)人員每周工作時(shí)間不超過(guò)40h,連續(xù)加班不可以超過(guò)兩周,以免降低生產(chǎn)率。可持續(xù)的開(kāi)發(fā)速度XP項(xiàng)目的全體參與者(開(kāi)發(fā)人員、客戶(hù)等)一起在一個(gè)開(kāi)放的場(chǎng)所中工作,項(xiàng)目組成員在這個(gè)場(chǎng)所中自由地交流和討論。開(kāi)放的工作空間

計(jì)劃應(yīng)該是靈活的、循序漸進(jìn)的。制訂出項(xiàng)目計(jì)劃之后,必須根據(jù)項(xiàng)目進(jìn)展情況及時(shí)進(jìn)行調(diào)整,沒(méi)有一成不變的計(jì)劃。及時(shí)調(diào)整計(jì)劃

開(kāi)發(fā)人員應(yīng)該使設(shè)計(jì)與計(jì)劃要在本次迭代過(guò)程中完成的用戶(hù)素材完全匹配,設(shè)計(jì)時(shí)不需要考慮未來(lái)的用戶(hù)素材。在一次次的迭代過(guò)程中,項(xiàng)目組成員不斷變更系統(tǒng)設(shè)計(jì),使之相對(duì)于正在實(shí)現(xiàn)的用戶(hù)素材而言始終處于最優(yōu)狀態(tài)。簡(jiǎn)單的設(shè)計(jì)

所謂代碼重構(gòu)就是在不改變系統(tǒng)行為的前提下,重新調(diào)整和優(yōu)化系統(tǒng)的內(nèi)部結(jié)構(gòu),以降低復(fù)雜性、消除冗余、增加靈活性和提高性能。應(yīng)該注意的是,在開(kāi)發(fā)過(guò)程中不要過(guò)分依賴(lài)重構(gòu),特別是不能輕視設(shè)計(jì),對(duì)于大中型系統(tǒng)而言,如果推遲設(shè)計(jì)或者干脆不做設(shè)計(jì),將造成一場(chǎng)災(zāi)難。重構(gòu)

可以將隱喻看做是把整個(gè)系統(tǒng)聯(lián)系在一起的全局視圖,它描述系統(tǒng)如何運(yùn)作,以及用何種方式把新功能加入到系統(tǒng)中。使用隱喻首先,項(xiàng)目組針對(duì)客戶(hù)代表提出的“用戶(hù)故事”然后,項(xiàng)目組在隱喻和用戶(hù)故事的基礎(chǔ)上,根據(jù)客戶(hù)設(shè)定的優(yōu)先級(jí)制訂交付計(jì)劃最后,開(kāi)始多個(gè)迭代過(guò)程,在迭代期內(nèi)產(chǎn)生的新用戶(hù)故事不在本次迭代內(nèi)解決,以保證本次開(kāi)發(fā)過(guò)程不受干擾。2.極限編程的整體開(kāi)發(fā)過(guò)程2.極限編程的整體開(kāi)發(fā)過(guò)程圖2.10極限編程的整體開(kāi)發(fā)過(guò)程3.極限編程的迭代過(guò)程圖2.11極限編程的迭代過(guò)程

以極限編程為杰出代表的敏捷過(guò)程,可以快速、敏捷地響應(yīng)變化和不確定的需求,同時(shí)仍然能夠保持可持續(xù)的開(kāi)發(fā)速度。上述這些特點(diǎn)使得敏捷過(guò)程能夠較好地適應(yīng)商業(yè)競(jìng)爭(zhēng)環(huán)境下對(duì)項(xiàng)目提出的有限資源和有限開(kāi)發(fā)時(shí)間的約束。3.極限編程的迭代過(guò)程2.1軟件生命周期的基本任務(wù)2.2瀑布模型2.3快速原型模型2.4增量模型2.5螺旋模型2.6噴泉模型2.7Rational統(tǒng)一過(guò)程2.8敏捷過(guò)程與極限編程2.9能力成熟度模型第二章:軟件過(guò)程能力成熟度模型(capabilitymaturitymodel,CMM)并不是一個(gè)軟件生命周期模型,而是改進(jìn)軟件過(guò)程的一種策略,它與實(shí)際使用的過(guò)程模型無(wú)關(guān)。1986年美國(guó)卡內(nèi)基—梅隆大學(xué)軟件工程研究所首次提出能力成熟度模型(CMM),不過(guò)在當(dāng)時(shí)它被稱(chēng)為過(guò)程成熟度模型。2.9能力成熟度模型問(wèn)題是由管理軟件過(guò)程的方法不當(dāng)引起的,所以新軟件技術(shù)的運(yùn)用并不會(huì)自動(dòng)提高生產(chǎn)率和軟件質(zhì)量。能力成熟度模型有助于軟件開(kāi)發(fā)組織建立一個(gè)有規(guī)律的、成熟的軟件過(guò)程。改進(jìn)后的過(guò)程將開(kāi)發(fā)出質(zhì)量更好的軟件,使更多的軟件項(xiàng)目免受時(shí)間和費(fèi)用超支之苦?;舅枷?.成熟度等級(jí)(maturitylevels):一個(gè)成熟度等級(jí)是在朝著實(shí)現(xiàn)成熟軟件過(guò)程進(jìn)化途中的一個(gè)妥善定義的平臺(tái)。5個(gè)成熟度等級(jí)構(gòu)成了CMM的頂層結(jié)構(gòu)。2.過(guò)程能力(processcapability):軟件過(guò)程能力描述,通過(guò)遵循軟件過(guò)程能實(shí)現(xiàn)預(yù)期結(jié)果的程度。2.9.1能力成熟度模型的結(jié)構(gòu)3.關(guān)鍵過(guò)程域(keyprocessareas,KPA):每個(gè)成熟度等級(jí)由若干關(guān)鍵過(guò)程域組成。每個(gè)關(guān)鍵過(guò)程域都標(biāo)識(shí)出一串相關(guān)的活動(dòng),當(dāng)把這些活動(dòng)都完成時(shí)所達(dá)到的一組目標(biāo),對(duì)建立該過(guò)程成熟度等級(jí)是至關(guān)重要的。2.9.1能力成熟度模型的結(jié)構(gòu)4.目標(biāo)(goals):目標(biāo)概括了關(guān)鍵過(guò)程域中的關(guān)鍵實(shí)踐,并可用于確定一個(gè)組織或項(xiàng)目是否已有效地實(shí)施了該關(guān)鍵過(guò)程域。5.公共特性(commonfeatures):CMM把關(guān)鍵實(shí)踐分別歸入下列5個(gè)公共特性之中:執(zhí)行約定、執(zhí)行能力、執(zhí)行的活動(dòng)、測(cè)量和分析以及驗(yàn)證實(shí)施。2.9.1能力成熟度模型的結(jié)構(gòu)6.關(guān)鍵實(shí)踐(keypractices):每個(gè)關(guān)鍵過(guò)程域都用若干關(guān)鍵實(shí)踐描述,實(shí)施關(guān)鍵實(shí)踐有助于實(shí)現(xiàn)相應(yīng)的關(guān)鍵過(guò)程域的目標(biāo)。2.9.1能力成熟度模型的結(jié)構(gòu)2.9.1能力成熟度模型的結(jié)構(gòu)圖2.12CMM結(jié)構(gòu)1.初始級(jí)

軟件過(guò)程的特征是無(wú)序的,有時(shí)甚至是混亂的。幾乎沒(méi)有什么過(guò)程是經(jīng)過(guò)定義的,項(xiàng)目能否成功完全取決于個(gè)人能力。

處于這個(gè)最低成熟度等級(jí)的組織,基本上沒(méi)有健全的軟件工程管理制度。每件事情都以特殊的方法來(lái)做。2.9.2能力成熟度等級(jí)2.可重復(fù)級(jí)

建立了基本的項(xiàng)目管理過(guò)程,以追蹤成本、進(jìn)度和功能性。必要的過(guò)程規(guī)范已經(jīng)建立起來(lái)了,使得可以重復(fù)以前類(lèi)似項(xiàng)目所取得的成功。2.9.2能力成熟度等級(jí)3.已定義級(jí)

用于管理和工程活動(dòng)的軟件過(guò)程已經(jīng)文檔化和標(biāo)準(zhǔn)化,并且已經(jīng)集成到整個(gè)組織的軟件過(guò)程中。所有項(xiàng)目都使用文檔化的、組織批準(zhǔn)的過(guò)程來(lái)開(kāi)發(fā)和維護(hù)軟件。這一級(jí)包含了第2級(jí)的所有特征。2.9.2能力成熟度等級(jí)4.已管理級(jí)

已收集了軟件過(guò)程和產(chǎn)品質(zhì)量的詳細(xì)度量數(shù)據(jù),使用這些詳細(xì)的度量數(shù)據(jù),能夠定量地理解和控制軟件過(guò)程和產(chǎn)品。這一級(jí)包含了第3級(jí)的所有特征。2.9.2能力成熟度等級(jí)5.優(yōu)化級(jí)

通過(guò)定量的反饋能夠?qū)崿F(xiàn)持續(xù)的過(guò)程改進(jìn),這些反饋是從過(guò)程及對(duì)新想法和技術(shù)的測(cè)試中獲得的。這一級(jí)包含了第4級(jí)的所有特征。2.9.2能力成熟度等級(jí)能力成熟度模型并不詳細(xì)描述所有與軟件開(kāi)發(fā)和維護(hù)有關(guān)的過(guò)程,但是,有一些過(guò)程是決定過(guò)程能力的關(guān)鍵因素,這就是CMM所稱(chēng)的關(guān)鍵過(guò)程域。關(guān)鍵過(guò)程域是達(dá)到一個(gè)成熟度等級(jí)的必要條件。除第1級(jí)成熟度之外,每個(gè)成熟度等級(jí)都指明了為改進(jìn)其軟件過(guò)程,軟件開(kāi)發(fā)組織應(yīng)該重視的區(qū)域,同時(shí)也指明了為達(dá)到某個(gè)成熟度等級(jí)所必須解決的問(wèn)題。2.9.3關(guān)鍵過(guò)程域(a)軟件配置管理。(b)軟件質(zhì)量保證。(c)軟件子合同管理。(d)軟件項(xiàng)目跟蹤和監(jiān)督軟件。(e)項(xiàng)目計(jì)劃。(f)需求管理。1.成熟度第2級(jí)(a)同事復(fù)審。(b)組間協(xié)作。(c)軟件產(chǎn)品工程。(d)集成的軟件管理。(e)培訓(xùn)計(jì)劃。(f)組織過(guò)程定義。(g)組織過(guò)程焦點(diǎn)。2.成熟度第3級(jí)(a)軟件質(zhì)量管理。(b)定量的過(guò)程管理。3.成熟度第4

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論