第5章 關(guān)于過(guò)程話題_第1頁(yè)
第5章 關(guān)于過(guò)程話題_第2頁(yè)
第5章 關(guān)于過(guò)程話題_第3頁(yè)
第5章 關(guān)于過(guò)程話題_第4頁(yè)
第5章 關(guān)于過(guò)程話題_第5頁(yè)
已閱讀5頁(yè),還剩49頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第章關(guān)于過(guò)程的話題第章關(guān)于過(guò)程的話題5.1 5.1 為什么需要過(guò)程為什么需要過(guò)程5.2 5.2 主流軟件開(kāi)發(fā)過(guò)程簡(jiǎn)介主流軟件開(kāi)發(fā)過(guò)程簡(jiǎn)介 5.2.1 5.2.1 統(tǒng)一軟件開(kāi)發(fā)過(guò)程統(tǒng)一軟件開(kāi)發(fā)過(guò)程RUPRUP 5.2.2 5.2.2 測(cè)試驅(qū)動(dòng)開(kāi)發(fā)測(cè)試驅(qū)動(dòng)開(kāi)發(fā)TDDTDD5.2.3 5.2.3 極限編程極限編程XPXP5.2.4 5.2.4 特征驅(qū)動(dòng)開(kāi)發(fā)特征驅(qū)動(dòng)開(kāi)發(fā)FDDFDD 5.3 5.3 理解開(kāi)發(fā)過(guò)程理解開(kāi)發(fā)過(guò)程 5.3.1 5.3.1 模型的演化過(guò)程模型的演化過(guò)程 5.3.2 5.3.2 第一次迭代第一次迭代5.3.3 5.3.3 第二次迭代第二次迭代5.3.4 5.3.4 隨后的迭代隨后

2、的迭代5.3.5 5.3.5 最后的迭代最后的迭代5.4 5.4 本章小結(jié)本章小結(jié)第章關(guān)于過(guò)程的話題第章關(guān)于過(guò)程的話題5.1 5.1 為什么需要過(guò)程為什么需要過(guò)程開(kāi)發(fā)一個(gè)具有一定規(guī)模和復(fù)雜性的軟件系統(tǒng)和編寫(xiě)一個(gè)簡(jiǎn)單程序是大不開(kāi)發(fā)一個(gè)具有一定規(guī)模和復(fù)雜性的軟件系統(tǒng)和編寫(xiě)一個(gè)簡(jiǎn)單程序是大不一樣的,其間的差別就如同建造一座大廈和搭建一個(gè)狗窩的差別。大型一樣的,其間的差別就如同建造一座大廈和搭建一個(gè)狗窩的差別。大型的、復(fù)雜的軟件系統(tǒng)的開(kāi)發(fā)是一項(xiàng)工程,必須按工程學(xué)的方法組織軟件的、復(fù)雜的軟件系統(tǒng)的開(kāi)發(fā)是一項(xiàng)工程,必須按工程學(xué)的方法組織軟件的生產(chǎn)與管理,必須經(jīng)過(guò)分析、設(shè)計(jì)、實(shí)現(xiàn)、測(cè)試、維護(hù)等一系列的軟的生

3、產(chǎn)與管理,必須經(jīng)過(guò)分析、設(shè)計(jì)、實(shí)現(xiàn)、測(cè)試、維護(hù)等一系列的軟件生命周期階段。編程仍然是重要的,但是更具有決定意義的是系統(tǒng)建件生命周期階段。編程仍然是重要的,但是更具有決定意義的是系統(tǒng)建模。只有在分析和設(shè)計(jì)階段建立了良好的系統(tǒng)模型,才有可能保證工程模。只有在分析和設(shè)計(jì)階段建立了良好的系統(tǒng)模型,才有可能保證工程的正確實(shí)施。的正確實(shí)施。對(duì)于現(xiàn)代的軟件開(kāi)發(fā)來(lái)說(shuō),對(duì)于現(xiàn)代的軟件開(kāi)發(fā)來(lái)說(shuō),“過(guò)程過(guò)程”是一個(gè)繞不過(guò)去的話題。一個(gè)過(guò)程是一個(gè)繞不過(guò)去的話題。一個(gè)過(guò)程定義了為達(dá)到某個(gè)確定的目標(biāo),需要什么人在什么時(shí)間以何種方式做何定義了為達(dá)到某個(gè)確定的目標(biāo),需要什么人在什么時(shí)間以何種方式做何種工作。對(duì)于軟件開(kāi)發(fā)而言,

4、其目標(biāo)是構(gòu)造一個(gè)新的軟件產(chǎn)品或者完善種工作。對(duì)于軟件開(kāi)發(fā)而言,其目標(biāo)是構(gòu)造一個(gè)新的軟件產(chǎn)品或者完善一個(gè)舊的軟件產(chǎn)品。一個(gè)有效的過(guò)程為有效地開(kāi)發(fā)高質(zhì)量的軟件提供準(zhǔn)一個(gè)舊的軟件產(chǎn)品。一個(gè)有效的過(guò)程為有效地開(kāi)發(fā)高質(zhì)量的軟件提供準(zhǔn)則,它獲取并提出當(dāng)前技術(shù)條件下可行的最佳實(shí)踐方案。因此,它可降則,它獲取并提出當(dāng)前技術(shù)條件下可行的最佳實(shí)踐方案。因此,它可降低風(fēng)險(xiǎn)并增強(qiáng)預(yù)見(jiàn)性。低風(fēng)險(xiǎn)并增強(qiáng)預(yù)見(jiàn)性。第章關(guān)于過(guò)程的話題第章關(guān)于過(guò)程的話題目前,軟件的趨勢(shì)是朝著更龐大、更復(fù)雜的系統(tǒng)發(fā)展。軟件問(wèn)題可以歸目前,軟件的趨勢(shì)是朝著更龐大、更復(fù)雜的系統(tǒng)發(fā)展。軟件問(wèn)題可以歸結(jié)為開(kāi)發(fā)人員面臨的將一個(gè)大型復(fù)雜軟件所包含的各個(gè)部分集

5、成為一個(gè)結(jié)為開(kāi)發(fā)人員面臨的將一個(gè)大型復(fù)雜軟件所包含的各個(gè)部分集成為一個(gè)整體的難度。軟件開(kāi)發(fā)組織需要一種受控的工作方式,需要一個(gè)過(guò)程來(lái)整體的難度。軟件開(kāi)發(fā)組織需要一種受控的工作方式,需要一個(gè)過(guò)程來(lái)集成軟件開(kāi)發(fā)的方方面面,需要通用的方法或過(guò)程來(lái)完成以下工作:集成軟件開(kāi)發(fā)的方方面面,需要通用的方法或過(guò)程來(lái)完成以下工作:指導(dǎo)一個(gè)團(tuán)隊(duì)活動(dòng)的順序;指導(dǎo)一個(gè)團(tuán)隊(duì)活動(dòng)的順序;布置每個(gè)開(kāi)發(fā)人員和整個(gè)團(tuán)隊(duì)的任務(wù);布置每個(gè)開(kāi)發(fā)人員和整個(gè)團(tuán)隊(duì)的任務(wù);確定開(kāi)發(fā)何種產(chǎn)品;確定開(kāi)發(fā)何種產(chǎn)品;提出監(jiān)控和測(cè)量一個(gè)項(xiàng)目的產(chǎn)品和活動(dòng)的準(zhǔn)則。提出監(jiān)控和測(cè)量一個(gè)項(xiàng)目的產(chǎn)品和活動(dòng)的準(zhǔn)則。第章關(guān)于過(guò)程的話題第章關(guān)于過(guò)程的話題5.2 5.2

6、 主流軟件開(kāi)發(fā)過(guò)程簡(jiǎn)介主流軟件開(kāi)發(fā)過(guò)程簡(jiǎn)介在軟件開(kāi)發(fā)領(lǐng)域,許多新技術(shù)和新方法都是首先在編程領(lǐng)域出現(xiàn),然后在軟件開(kāi)發(fā)領(lǐng)域,許多新技術(shù)和新方法都是首先在編程領(lǐng)域出現(xiàn),然后很快地再拓展到軟件生命周期的分析與設(shè)計(jì)階段。面向?qū)ο蠓椒ㄕ墙?jīng)很快地再拓展到軟件生命周期的分析與設(shè)計(jì)階段。面向?qū)ο蠓椒ㄕ墙?jīng)歷了這樣的發(fā)展過(guò)程,它首先在編程領(lǐng)域興起,作為一種嶄新的程序設(shè)歷了這樣的發(fā)展過(guò)程,它首先在編程領(lǐng)域興起,作為一種嶄新的程序設(shè)計(jì)范型引起世人矚目。繼計(jì)范型引起世人矚目。繼Smalltalk-80之后,之后,20世紀(jì)世紀(jì)80年代又有一大批年代又有一大批面向?qū)ο蟮木幊陶Z(yǔ)言問(wèn)世,標(biāo)志著面向?qū)ο蠓椒ㄗ呦虺墒旌蛯?shí)用。此時(shí)

7、,面向?qū)ο蟮木幊陶Z(yǔ)言問(wèn)世,標(biāo)志著面向?qū)ο蠓椒ㄗ呦虺墒旌蛯?shí)用。此時(shí),面向?qū)ο蠓椒ㄩ_(kāi)始向系統(tǒng)設(shè)計(jì)階段延伸,出現(xiàn)了如面向?qū)ο蠓椒ㄩ_(kāi)始向系統(tǒng)設(shè)計(jì)階段延伸,出現(xiàn)了如Booch86、GOOD(通用面向?qū)ο蟮拈_(kāi)發(fā))、(通用面向?qū)ο蟮拈_(kāi)發(fā))、HOOD(層次式面向?qū)ο蟮脑O(shè)計(jì))、(層次式面向?qū)ο蟮脑O(shè)計(jì))、OOSD(面向?qū)ο蟮慕Y(jié)構(gòu)設(shè)計(jì))等一批(面向?qū)ο蟮慕Y(jié)構(gòu)設(shè)計(jì))等一批OOD方法。但是這些早期的方法。但是這些早期的OOD方法方法不是以面向?qū)ο蟮姆治觯ú皇且悦嫦驅(qū)ο蟮姆治觯∣OA)為基礎(chǔ)的,而主要是基于結(jié)構(gòu)化分析。)為基礎(chǔ)的,而主要是基于結(jié)構(gòu)化分析。到到1989年之后,面向?qū)ο蠓椒ǖ难芯恐攸c(diǎn)開(kāi)始轉(zhuǎn)向軟件生命周期的分年

8、之后,面向?qū)ο蠓椒ǖ难芯恐攸c(diǎn)開(kāi)始轉(zhuǎn)向軟件生命周期的分析階段,并將析階段,并將OOA和和OOD密切地聯(lián)系在一起,出現(xiàn)了一大批面向?qū)ο竺芮械芈?lián)系在一起,出現(xiàn)了一大批面向?qū)ο蟮姆治雠c設(shè)計(jì)(的分析與設(shè)計(jì)(OOA&D)方法,如)方法,如Booch方法、方法、Coad/Yourdon方法、方法、Firesmith方法、方法、Jacobon的的OOSE、Martin/Odell方法、方法、Rumbaugh等人等人OMT、Shlaer/Mellor方法等等、截至方法等等、截至1994年,公開(kāi)發(fā)表并具有一年,公開(kāi)發(fā)表并具有一定影響的定影響的OOA&D方法已達(dá)方法已達(dá)50多種。多種。第章關(guān)于過(guò)程的

9、話題第章關(guān)于過(guò)程的話題這種繁榮的局面表明面向?qū)ο蠓椒ㄒ呀?jīng)深入到分析與設(shè)計(jì)領(lǐng)域,并隨著這種繁榮的局面表明面向?qū)ο蠓椒ㄒ呀?jīng)深入到分析與設(shè)計(jì)領(lǐng)域,并隨著面向?qū)ο蟮臏y(cè)試、集成與演化技術(shù)的出現(xiàn)而發(fā)展成為一套貫穿整個(gè)軟件面向?qū)ο蟮臏y(cè)試、集成與演化技術(shù)的出現(xiàn)而發(fā)展成為一套貫穿整個(gè)軟件生命周期的方法體系。目前,大多數(shù)較規(guī)范的軟件開(kāi)發(fā)組織已經(jīng)從分析、生命周期的方法體系。目前,大多數(shù)較規(guī)范的軟件開(kāi)發(fā)組織已經(jīng)從分析、設(shè)計(jì)到編程、測(cè)試階段全面地采用面向?qū)ο蠓椒ǎ姑嫦驅(qū)ο鬅o(wú)可置疑設(shè)計(jì)到編程、測(cè)試階段全面地采用面向?qū)ο蠓椒?,使面向?qū)ο鬅o(wú)可置疑地成為當(dāng)前軟件領(lǐng)域的主流技術(shù)。地成為當(dāng)前軟件領(lǐng)域的主流技術(shù)。任何技術(shù)和方法的發(fā)

10、展,都要經(jīng)歷群雄并起到大浪淘沙的過(guò)程,面向?qū)θ魏渭夹g(shù)和方法的發(fā)展,都要經(jīng)歷群雄并起到大浪淘沙的過(guò)程,面向?qū)ο蠓椒ǖ陌l(fā)展也不例外。經(jīng)過(guò)幾輪淘汰,表達(dá)工具已從上世紀(jì)年代象方法的發(fā)展也不例外。經(jīng)過(guò)幾輪淘汰,表達(dá)工具已從上世紀(jì)年代的無(wú)序格局到今天的一統(tǒng)天下,而經(jīng)得住時(shí)間考驗(yàn)的軟件開(kāi)發(fā)過(guò)的無(wú)序格局到今天的一統(tǒng)天下,而經(jīng)得住時(shí)間考驗(yàn)的軟件開(kāi)發(fā)過(guò)程也已為數(shù)不多。下面,我們將簡(jiǎn)單介紹幾個(gè)當(dāng)前的主流軟件開(kāi)發(fā)過(guò)程。程也已為數(shù)不多。下面,我們將簡(jiǎn)單介紹幾個(gè)當(dāng)前的主流軟件開(kāi)發(fā)過(guò)程。5.2.1 5.2.1 統(tǒng)一軟件開(kāi)發(fā)過(guò)程(統(tǒng)一軟件開(kāi)發(fā)過(guò)程(The Unified Software Devolopment The Un

11、ified Software Devolopment ProcessProcess,RUPRUP)RUP是重型方法論的典型代表,它的核心理念是:是重型方法論的典型代表,它的核心理念是:“用例驅(qū)動(dòng)、以架構(gòu)用例驅(qū)動(dòng)、以架構(gòu)為中心、迭代和增量的軟件開(kāi)發(fā)過(guò)程。為中心、迭代和增量的軟件開(kāi)發(fā)過(guò)程?!彼彩侨粍?chuàng)建人的共它也是三位創(chuàng)建人的共同主張。它把整個(gè)軟件開(kāi)發(fā)過(guò)程分成了四個(gè)階段:初始(先啟)、精化、同主張。它把整個(gè)軟件開(kāi)發(fā)過(guò)程分成了四個(gè)階段:初始(先啟)、精化、構(gòu)建、交付(產(chǎn)品化),而每個(gè)階段又可以細(xì)分為多個(gè)迭代,如圖構(gòu)建、交付(產(chǎn)品化),而每個(gè)階段又可以細(xì)分為多個(gè)迭代,如圖5.15.1所所示。示。第章

12、關(guān)于過(guò)程的話題第章關(guān)于過(guò)程的話題圖圖5.1 RUP5.1 RUP軟件開(kāi)發(fā)過(guò)程軟件開(kāi)發(fā)過(guò)程第章關(guān)于過(guò)程的話題第章關(guān)于過(guò)程的話題圖圖5.15.1是是RUPRUP的一個(gè)核心概念圖,它詮釋了的一個(gè)核心概念圖,它詮釋了RUPRUP提倡的過(guò)程精髓。圖解如提倡的過(guò)程精髓。圖解如下:下:1.1.圖的橫軸表示項(xiàng)目的生命周期,也就是時(shí)間軸;圖的橫軸表示項(xiàng)目的生命周期,也就是時(shí)間軸;2.2.橫軸上劃分了四個(gè)階段,每個(gè)階段又會(huì)有橫軸上劃分了四個(gè)階段,每個(gè)階段又會(huì)有1 1N N個(gè)迭代,迭代個(gè)數(shù)的多個(gè)迭代,迭代個(gè)數(shù)的多少視階段工作進(jìn)展而定;少視階段工作進(jìn)展而定;3.3.圖的縱軸羅列了項(xiàng)目中可能實(shí)施的工作流程;圖的縱軸羅列

13、了項(xiàng)目中可能實(shí)施的工作流程;4.4.每個(gè)工作流程都在橫軸上有一個(gè)波形圖,用來(lái)表示它在時(shí)間線上工作每個(gè)工作流程都在橫軸上有一個(gè)波形圖,用來(lái)表示它在時(shí)間線上工作量的起伏變化。量的起伏變化。圖中四個(gè)階段很容易讓人迷惑,我們來(lái)簡(jiǎn)單解釋一下:圖中四個(gè)階段很容易讓人迷惑,我們來(lái)簡(jiǎn)單解釋一下: 先啟階段先啟階段 - - 明確項(xiàng)目目標(biāo)和范圍,其主要任務(wù)是理解與分析需求,生明確項(xiàng)目目標(biāo)和范圍,其主要任務(wù)是理解與分析需求,生成用例模型框架,對(duì)優(yōu)先級(jí)較高的用例進(jìn)行細(xì)化。成用例模型框架,對(duì)優(yōu)先級(jí)較高的用例進(jìn)行細(xì)化。精化階段精化階段 - - 確立系統(tǒng)架構(gòu)和技術(shù)方向,完成部分優(yōu)先級(jí)最高的用例開(kāi)確立系統(tǒng)架構(gòu)和技術(shù)方向,完成

14、部分優(yōu)先級(jí)最高的用例開(kāi)發(fā),并完善所有的用例模型。發(fā),并完善所有的用例模型。構(gòu)建階段構(gòu)建階段 - - 大規(guī)模并行實(shí)施設(shè)計(jì)、開(kāi)發(fā)、單元測(cè)試,即經(jīng)多次迭代,大規(guī)模并行實(shí)施設(shè)計(jì)、開(kāi)發(fā)、單元測(cè)試,即經(jīng)多次迭代,逐漸完成不同優(yōu)先級(jí)的用例開(kāi)發(fā)。逐漸完成不同優(yōu)先級(jí)的用例開(kāi)發(fā)。產(chǎn)品化階段產(chǎn)品化階段 - - 產(chǎn)品驗(yàn)收、部署、發(fā)布,即進(jìn)行各種功能、性能測(cè)試,產(chǎn)品驗(yàn)收、部署、發(fā)布,即進(jìn)行各種功能、性能測(cè)試,對(duì)其進(jìn)行產(chǎn)品化、部署,完成整個(gè)系統(tǒng)的開(kāi)發(fā)工作。對(duì)其進(jìn)行產(chǎn)品化、部署,完成整個(gè)系統(tǒng)的開(kāi)發(fā)工作。 第章關(guān)于過(guò)程的話題第章關(guān)于過(guò)程的話題在在RUPRUP中,需求、設(shè)計(jì)、編碼與測(cè)試不再是過(guò)程階段,而是工作流程,中,需求、設(shè)

15、計(jì)、編碼與測(cè)試不再是過(guò)程階段,而是工作流程,從圖從圖5.15.1中已經(jīng)明確表明這些工作幾乎存在于生命周期的每個(gè)階段,只中已經(jīng)明確表明這些工作幾乎存在于生命周期的每個(gè)階段,只是不同的階段工作量有多有少而已。每個(gè)階段的目標(biāo)不一樣,工作的側(cè)是不同的階段工作量有多有少而已。每個(gè)階段的目標(biāo)不一樣,工作的側(cè)重點(diǎn)自然不同,但上述四個(gè)工作流程卻一個(gè)都不能少。通過(guò)各個(gè)工作流重點(diǎn)自然不同,但上述四個(gè)工作流程卻一個(gè)都不能少。通過(guò)各個(gè)工作流程的配合,實(shí)現(xiàn)階段目標(biāo)的演進(jìn),最終實(shí)現(xiàn)產(chǎn)品化。程的配合,實(shí)現(xiàn)階段目標(biāo)的演進(jìn),最終實(shí)現(xiàn)產(chǎn)品化。 對(duì)事物從認(rèn)知到理解,是一個(gè)由抽象到具體的演化過(guò)程。軟件開(kāi)發(fā)也是對(duì)事物從認(rèn)知到理解,是一

16、個(gè)由抽象到具體的演化過(guò)程。軟件開(kāi)發(fā)也是一樣,起初是一些表象和問(wèn)題,經(jīng)過(guò)第一次迭代理解了表象和解決了一一樣,起初是一些表象和問(wèn)題,經(jīng)過(guò)第一次迭代理解了表象和解決了一些問(wèn)題,但又產(chǎn)生了新的問(wèn)題,在經(jīng)過(guò)第二次迭代解決了第一次的問(wèn)題些問(wèn)題,但又產(chǎn)生了新的問(wèn)題,在經(jīng)過(guò)第二次迭代解決了第一次的問(wèn)題之后,可能又會(huì)產(chǎn)生第二次的問(wèn)題之后,可能又會(huì)產(chǎn)生第二次的問(wèn)題. 這樣反反復(fù)復(fù),從二維的角度看好像是原地踏步,但從三維的角度看,這樣反反復(fù)復(fù),從二維的角度看好像是原地踏步,但從三維的角度看,在理解事物本質(zhì)的縱向上我們卻有了很大的進(jìn)展。項(xiàng)目范圍在一段時(shí)間在理解事物本質(zhì)的縱向上我們卻有了很大的進(jìn)展。項(xiàng)目范圍在一段時(shí)間內(nèi)

17、是相對(duì)穩(wěn)定的,那么迭代的周期也是固定的。但從宏觀上看,這個(gè)迭內(nèi)是相對(duì)穩(wěn)定的,那么迭代的周期也是固定的。但從宏觀上看,這個(gè)迭代還會(huì)持續(xù)下去,就像代還會(huì)持續(xù)下去,就像officeoffice從從9797到現(xiàn)在,十多年間歷經(jīng)了多少迭代!到現(xiàn)在,十多年間歷經(jīng)了多少迭代!有兩種辦法可以結(jié)束迭代:有兩種辦法可以結(jié)束迭代: 1 1)限定項(xiàng)目范圍,這樣問(wèn)題域是有限的;)限定項(xiàng)目范圍,這樣問(wèn)題域是有限的;2 2)終止項(xiàng)目。)終止項(xiàng)目。 第章關(guān)于過(guò)程的話題第章關(guān)于過(guò)程的話題5.2.2 5.2.2 測(cè)試驅(qū)動(dòng)開(kāi)發(fā)(測(cè)試驅(qū)動(dòng)開(kāi)發(fā)(Test-Driven DevelopmentTest-Driven Developmen

18、t,TDDTDD) 1.1.什么是什么是TDDTDD測(cè)試驅(qū)動(dòng)開(kāi)發(fā)是敏捷開(kāi)發(fā)中的一項(xiàng)核心實(shí)踐和技術(shù),也是一種設(shè)計(jì)方法測(cè)試驅(qū)動(dòng)開(kāi)發(fā)是敏捷開(kāi)發(fā)中的一項(xiàng)核心實(shí)踐和技術(shù),也是一種設(shè)計(jì)方法論。的原理是在開(kāi)發(fā)功能代碼之前,先編寫(xiě)單元測(cè)試用例代碼,論。的原理是在開(kāi)發(fā)功能代碼之前,先編寫(xiě)單元測(cè)試用例代碼,以測(cè)試代碼來(lái)確定需要編寫(xiě)什么產(chǎn)品代碼。以測(cè)試代碼來(lái)確定需要編寫(xiě)什么產(chǎn)品代碼。的基本思路就是通過(guò)測(cè)試來(lái)推動(dòng)整個(gè)開(kāi)發(fā)的進(jìn)行,但測(cè)試驅(qū)動(dòng)開(kāi)的基本思路就是通過(guò)測(cè)試來(lái)推動(dòng)整個(gè)開(kāi)發(fā)的進(jìn)行,但測(cè)試驅(qū)動(dòng)開(kāi)發(fā)并不只是單純的測(cè)試工作,而是把需求分析、設(shè)計(jì)、編碼質(zhì)量控制進(jìn)發(fā)并不只是單純的測(cè)試工作,而是把需求分析、設(shè)計(jì)、編碼質(zhì)量控制進(jìn)

19、行量化的過(guò)程。行量化的過(guò)程。我們知道工人蓋房子砌墻時(shí)先用樁子拉上線,以使磚壘得筆直。木匠打我們知道工人蓋房子砌墻時(shí)先用樁子拉上線,以使磚壘得筆直。木匠打造家具切割木料時(shí),先在木頭上實(shí)線打上各種各樣的墨線,這樣鋸木頭造家具切割木料時(shí),先在木頭上實(shí)線打上各種各樣的墨線,這樣鋸木頭時(shí)才不會(huì)鋸偏。中的測(cè)試代碼就好似我們編碼時(shí)的規(guī)范之線。時(shí)才不會(huì)鋸偏。中的測(cè)試代碼就好似我們編碼時(shí)的規(guī)范之線。第章關(guān)于過(guò)程的話題第章關(guān)于過(guò)程的話題2. TDD2. TDD的步驟的步驟的開(kāi)發(fā)過(guò)程如圖的開(kāi)發(fā)過(guò)程如圖5.2.2所示。所示。增加一個(gè)測(cè)試增加一個(gè)測(cè)試運(yùn)行這個(gè)測(cè)試運(yùn)行這個(gè)測(cè)試改變一些代碼改變一些代碼運(yùn)行這個(gè)測(cè)試運(yùn)行這個(gè)測(cè)

20、試失敗失敗成功成功失敗失敗成功成功圖圖5.2 TDD5.2 TDD開(kāi)發(fā)過(guò)程開(kāi)發(fā)過(guò)程第章關(guān)于過(guò)程的話題第章關(guān)于過(guò)程的話題在圖在圖5.25.2中,首先根據(jù)用戶需求,增加一個(gè)測(cè)試(開(kāi)始測(cè)試代碼的編寫(xiě)),中,首先根據(jù)用戶需求,增加一個(gè)測(cè)試(開(kāi)始測(cè)試代碼的編寫(xiě)),運(yùn)行這個(gè)測(cè)試,如果編譯失敗,則添加或者改變一些代碼(開(kāi)始編碼)運(yùn)行這個(gè)測(cè)試,如果編譯失敗,則添加或者改變一些代碼(開(kāi)始編碼)后,再次運(yùn)行測(cè)試,如果還失敗,則重復(fù)修改代碼,直到成功。然后循后,再次運(yùn)行測(cè)試,如果還失敗,則重復(fù)修改代碼,直到成功。然后循環(huán)增加下一個(gè)測(cè)試。環(huán)增加下一個(gè)測(cè)試。我們用更為詳細(xì)的紅綠金(重構(gòu))三色六步圖來(lái)進(jìn)一步講解測(cè)試驅(qū)動(dòng)開(kāi)

21、我們用更為詳細(xì)的紅綠金(重構(gòu))三色六步圖來(lái)進(jìn)一步講解測(cè)試驅(qū)動(dòng)開(kāi)發(fā)的過(guò)程循環(huán),如圖發(fā)的過(guò)程循環(huán),如圖5.35.3所示。所示。圖圖5.3 5.3 測(cè)試驅(qū)動(dòng)開(kāi)發(fā)循環(huán)圖測(cè)試驅(qū)動(dòng)開(kāi)發(fā)循環(huán)圖編譯編譯為新功能寫(xiě)為新功能寫(xiě)一個(gè)測(cè)試一個(gè)測(cè)試運(yùn)行測(cè)試觀運(yùn)行測(cè)試觀察編譯錯(cuò)誤察編譯錯(cuò)誤編寫(xiě)一些代碼編寫(xiě)一些代碼按照需求重構(gòu)按照需求重構(gòu)代碼編譯通過(guò)代碼編譯通過(guò)重新運(yùn)行重新運(yùn)行測(cè)試通過(guò)測(cè)試通過(guò)開(kāi)始開(kāi)始TDDTDD過(guò)程過(guò)程紅色步驟紅色步驟綠色步驟綠色步驟金色步驟金色步驟第章關(guān)于過(guò)程的話題第章關(guān)于過(guò)程的話題圖圖5.35.3的步驟為:的步驟為:1.1.寫(xiě)一個(gè)單一的測(cè)試。寫(xiě)一個(gè)單一的測(cè)試。2.2.編譯它。這時(shí)因?yàn)槲覀儧](méi)有編寫(xiě)任何代

22、碼,編譯肯定通不過(guò)。編譯它。這時(shí)因?yàn)槲覀儧](méi)有編寫(xiě)任何代碼,編譯肯定通不過(guò)。3.3.添加一些代碼使其能通過(guò)編譯。這時(shí)我們對(duì)添加代碼沒(méi)有太多的要求,添加一些代碼使其能通過(guò)編譯。這時(shí)我們對(duì)添加代碼沒(méi)有太多的要求,只要?jiǎng)倓偰芡ㄟ^(guò)測(cè)試即可。只要?jiǎng)倓偰芡ㄟ^(guò)測(cè)試即可。4.4.運(yùn)行這個(gè)測(cè)試,觀察編譯結(jié)果,如果未通過(guò),重復(fù)上一步,如果通過(guò)則運(yùn)行這個(gè)測(cè)試,觀察編譯結(jié)果,如果未通過(guò),重復(fù)上一步,如果通過(guò)則進(jìn)入下一步。進(jìn)入下一步。5.5.迭代式的重構(gòu)添加的代碼。迭代式的重構(gòu)添加的代碼。6.6.重復(fù)增加下一個(gè)測(cè)試。重復(fù)增加下一個(gè)測(cè)試。從以上步驟可以看出,我們?cè)诿鞔_要開(kāi)發(fā)的某個(gè)功能后,首先思考如何對(duì)從以上步驟可以看出,我

23、們?cè)诿鞔_要開(kāi)發(fā)的某個(gè)功能后,首先思考如何對(duì)這個(gè)功能進(jìn)行測(cè)試,快速完成針對(duì)此功能的測(cè)試用例編寫(xiě),而缺少對(duì)象的這個(gè)功能進(jìn)行測(cè)試,快速完成針對(duì)此功能的測(cè)試用例編寫(xiě),而缺少對(duì)象的測(cè)試代碼肯定無(wú)法通過(guò)編譯,這時(shí)編譯器一般會(huì)出現(xiàn)紅色編譯錯(cuò)誤提示,測(cè)試代碼肯定無(wú)法通過(guò)編譯,這時(shí)編譯器一般會(huì)出現(xiàn)紅色編譯錯(cuò)誤提示,簡(jiǎn)稱為簡(jiǎn)稱為“紅色步驟紅色步驟”;根據(jù)錯(cuò)誤提示,編寫(xiě)對(duì)應(yīng)的功能代碼以滿足測(cè)試用;根據(jù)錯(cuò)誤提示,編寫(xiě)對(duì)應(yīng)的功能代碼以滿足測(cè)試用例直到測(cè)試通過(guò),這時(shí)編譯器會(huì)顯示綠色編譯通過(guò)的進(jìn)度條,簡(jiǎn)稱為例直到測(cè)試通過(guò),這時(shí)編譯器會(huì)顯示綠色編譯通過(guò)的進(jìn)度條,簡(jiǎn)稱為“綠綠色步驟色步驟”;在綠色步驟過(guò)程中持續(xù)進(jìn)行代碼重構(gòu),使

24、功能優(yōu)化、效率提升,;在綠色步驟過(guò)程中持續(xù)進(jìn)行代碼重構(gòu),使功能優(yōu)化、效率提升,代碼逐步完善,追求代碼逐步完善,追求“金色代碼金色代碼”,簡(jiǎn)稱為,簡(jiǎn)稱為“金色步驟金色步驟”。至此,一項(xiàng)功。至此,一項(xiàng)功能完成,然后循環(huán)添加其它功能,直到完成全部功能的開(kāi)發(fā)。能完成,然后循環(huán)添加其它功能,直到完成全部功能的開(kāi)發(fā)。第章關(guān)于過(guò)程的話題第章關(guān)于過(guò)程的話題5.2.3 5.2.3 極限編程(極限編程(Extereme Programming,XPExtereme Programming,XP) 極限編程是一種較有影響的輕量級(jí)軟件開(kāi)發(fā)方法論。輕量開(kāi)發(fā)方法是相極限編程是一種較有影響的輕量級(jí)軟件開(kāi)發(fā)方法論。輕量開(kāi)發(fā)方

25、法是相對(duì)于傳統(tǒng)的重量開(kāi)發(fā)方法而言。簡(jiǎn)單地理解,對(duì)于傳統(tǒng)的重量開(kāi)發(fā)方法而言。簡(jiǎn)單地理解,“量量”的輕重是指用于軟的輕重是指用于軟件過(guò)程管理和控制的、除程序量以外的件過(guò)程管理和控制的、除程序量以外的“文檔量文檔量”的多少。的多少。XPXP等輕量開(kāi)等輕量開(kāi)發(fā)方法認(rèn)識(shí)到,在當(dāng)前很多情況下,按傳統(tǒng)觀念建立的大量文檔,一方發(fā)方法認(rèn)識(shí)到,在當(dāng)前很多情況下,按傳統(tǒng)觀念建立的大量文檔,一方面需要消耗大量開(kāi)發(fā)資源,同時(shí)卻已失去幫助面需要消耗大量開(kāi)發(fā)資源,同時(shí)卻已失去幫助“預(yù)見(jiàn)、管理、決策和控預(yù)見(jiàn)、管理、決策和控制的依據(jù)制的依據(jù)”的作用。因此必須重新審視開(kāi)發(fā)環(huán)節(jié),去除臃腫累贅,輕裝的作用。因此必須重新審視開(kāi)發(fā)環(huán)節(jié),

26、去除臃腫累贅,輕裝上陣。上陣。XPXP的主要特征是要適應(yīng)環(huán)境變化和需求變化,充分發(fā)揮開(kāi)發(fā)人員的主動(dòng)的主要特征是要適應(yīng)環(huán)境變化和需求變化,充分發(fā)揮開(kāi)發(fā)人員的主動(dòng)精神。在精神。在XPXP的項(xiàng)目開(kāi)發(fā)中,首先引入了四個(gè)變量:成本、時(shí)間、質(zhì)量和的項(xiàng)目開(kāi)發(fā)中,首先引入了四個(gè)變量:成本、時(shí)間、質(zhì)量和范圍,通過(guò)研究變量之間的相互作用,將項(xiàng)目開(kāi)發(fā)分析得更加透徹,成范圍,通過(guò)研究變量之間的相互作用,將項(xiàng)目開(kāi)發(fā)分析得更加透徹,成功講述一個(gè)項(xiàng)目成功的原則。功講述一個(gè)項(xiàng)目成功的原則。XP XP 強(qiáng)調(diào)四種價(jià)值:交流,簡(jiǎn)單,回饋,勇氣。強(qiáng)調(diào)四種價(jià)值:交流,簡(jiǎn)單,回饋,勇氣。 程序員之間緊密的相互程序員之間緊密的相互交流,程

27、序員也和客戶緊密的交流。他們總是保持他們的設(shè)計(jì)簡(jiǎn)單明了。交流,程序員也和客戶緊密的交流。他們總是保持他們的設(shè)計(jì)簡(jiǎn)單明了。項(xiàng)目一開(kāi)始,項(xiàng)目一開(kāi)始,XP XP 就強(qiáng)調(diào)通過(guò)對(duì)軟件的不斷測(cè)試來(lái)獲得反饋,程序員盡可就強(qiáng)調(diào)通過(guò)對(duì)軟件的不斷測(cè)試來(lái)獲得反饋,程序員盡可能早的把軟件交給客戶,并實(shí)現(xiàn)客戶對(duì)軟件需求提出的變化。有了這些能早的把軟件交給客戶,并實(shí)現(xiàn)客戶對(duì)軟件需求提出的變化。有了這些基礎(chǔ),基礎(chǔ),XP XP 程序員就可以自信的面對(duì)需求和軟件技術(shù)的變化。程序員就可以自信的面對(duì)需求和軟件技術(shù)的變化。 第章關(guān)于過(guò)程的話題第章關(guān)于過(guò)程的話題極限編程是一套快速開(kāi)發(fā)高質(zhì)量軟件的方法。極限編程是一套快速開(kāi)發(fā)高質(zhì)量軟件的

28、方法。“極限極限”意味著以最快的意味著以最快的速度獲得最高的客戶價(jià)值。極限編程建立在以下十二條基本原則的基礎(chǔ)速度獲得最高的客戶價(jià)值。極限編程建立在以下十二條基本原則的基礎(chǔ)上。上。1.1.計(jì)劃游戲計(jì)劃游戲(The Planning GameThe Planning Game)客戶與開(kāi)發(fā)人員合作進(jìn)行項(xiàng)目的計(jì)劃與估算?;镜某绦蚴牵嚎蛻襞c開(kāi)發(fā)人員合作進(jìn)行項(xiàng)目的計(jì)劃與估算?;镜某绦蚴牵海┛蛻袅谐鱿到y(tǒng)的功能表。每個(gè)功能作為一個(gè))客戶列出系統(tǒng)的功能表。每個(gè)功能作為一個(gè)“用戶故事用戶故事”(User (User Story)Story)寫(xiě)出,用戶故事中有功能名稱、所要求的操作和應(yīng)完成的功能。寫(xiě)出,用戶故事

29、中有功能名稱、所要求的操作和應(yīng)完成的功能。用戶故事通常寫(xiě)在一張卡片上。用戶故事通常寫(xiě)在一張卡片上。)開(kāi)發(fā)組估計(jì)每個(gè)用戶故事需要投入多少人力,以及在給定的時(shí)間內(nèi)開(kāi))開(kāi)發(fā)組估計(jì)每個(gè)用戶故事需要投入多少人力,以及在給定的時(shí)間內(nèi)開(kāi)發(fā)組有多少人力可以投入。發(fā)組有多少人力可以投入。)客戶再?zèng)Q定用戶故事的優(yōu)先級(jí),也就是開(kāi)發(fā)的先后次序。然后決定)客戶再?zèng)Q定用戶故事的優(yōu)先級(jí),也就是開(kāi)發(fā)的先后次序。然后決定在什么時(shí)候、多久發(fā)行一個(gè)版本。在什么時(shí)候、多久發(fā)行一個(gè)版本。2.2.頻繁發(fā)布小版本頻繁發(fā)布小版本(Small ReleasesSmall Releases)從最小的功能集開(kāi)始,經(jīng)常推出新版本。每個(gè)版本僅比前一個(gè)

30、版本增加從最小的功能集開(kāi)始,經(jīng)常推出新版本。每個(gè)版本僅比前一個(gè)版本增加幾個(gè)新功能。在系統(tǒng)的開(kāi)發(fā)過(guò)程中,獲得有價(jià)值的反饋是非常重要的,幾個(gè)新功能。在系統(tǒng)的開(kāi)發(fā)過(guò)程中,獲得有價(jià)值的反饋是非常重要的,對(duì)開(kāi)發(fā)出來(lái)的系統(tǒng)的質(zhì)量有重要的影響。系統(tǒng)的使用者越晚接觸系統(tǒng),對(duì)開(kāi)發(fā)出來(lái)的系統(tǒng)的質(zhì)量有重要的影響。系統(tǒng)的使用者越晚接觸系統(tǒng),留給開(kāi)發(fā)者完善系統(tǒng)的時(shí)間就越少。顯然,這是一個(gè)迭代過(guò)程。留給開(kāi)發(fā)者完善系統(tǒng)的時(shí)間就越少。顯然,這是一個(gè)迭代過(guò)程。第章關(guān)于過(guò)程的話題第章關(guān)于過(guò)程的話題3.3.命名一致命名一致(MetaphorMetaphor)使用容易記憶的前后一致的命名原則,以方便開(kāi)發(fā)與交流。使用容易記憶的前后一致

31、的命名原則,以方便開(kāi)發(fā)與交流。4.4.簡(jiǎn)單設(shè)計(jì)簡(jiǎn)單設(shè)計(jì)(Simple DesignSimple Design)因?yàn)榭蛻舻囊笤诓粩嗟馗淖?,所以使用能滿足當(dāng)前客戶要求的最簡(jiǎn)單的因?yàn)榭蛻舻囊笤诓粩嗟馗淖?,所以使用能滿足當(dāng)前客戶要求的最簡(jiǎn)單的設(shè)計(jì)。在保證功能的基礎(chǔ)上,要盡可能采取簡(jiǎn)單的實(shí)現(xiàn)方法,以節(jié)省時(shí)間。設(shè)計(jì)。在保證功能的基礎(chǔ)上,要盡可能采取簡(jiǎn)單的實(shí)現(xiàn)方法,以節(jié)省時(shí)間。5.5.測(cè)試測(cè)試(TestingTesting)編程前先寫(xiě)測(cè)試。測(cè)試通過(guò)之日也就是程序完成之時(shí)。極限編程中的測(cè)試編程前先寫(xiě)測(cè)試。測(cè)試通過(guò)之日也就是程序完成之時(shí)。極限編程中的測(cè)試包括兩個(gè)方面:包括兩個(gè)方面:)單元測(cè)試是程序員編寫(xiě)的自

32、動(dòng)化測(cè)試的程序,一般用單元測(cè)試框架寫(xiě))單元測(cè)試是程序員編寫(xiě)的自動(dòng)化測(cè)試的程序,一般用單元測(cè)試框架寫(xiě)成,如成,如JUnitJUnit。每一個(gè)單元測(cè)試通常測(cè)試一個(gè)或幾個(gè)類。單元測(cè)試用例應(yīng)該。每一個(gè)單元測(cè)試通常測(cè)試一個(gè)或幾個(gè)類。單元測(cè)試用例應(yīng)該和被測(cè)試的代碼一起發(fā)布到代碼庫(kù)中,沒(méi)有經(jīng)過(guò)測(cè)試的代碼不能發(fā)布。每和被測(cè)試的代碼一起發(fā)布到代碼庫(kù)中,沒(méi)有經(jīng)過(guò)測(cè)試的代碼不能發(fā)布。每當(dāng)發(fā)現(xiàn)一個(gè)錯(cuò)誤的時(shí)候,就應(yīng)該添加測(cè)試用例,以防止錯(cuò)誤再次出現(xiàn)。針當(dāng)發(fā)現(xiàn)一個(gè)錯(cuò)誤的時(shí)候,就應(yīng)該添加測(cè)試用例,以防止錯(cuò)誤再次出現(xiàn)。針對(duì)錯(cuò)誤的測(cè)試用例可以幫助開(kāi)發(fā)者集中注意力檢查問(wèn)題是否已經(jīng)得到糾正。對(duì)錯(cuò)誤的測(cè)試用例可以幫助開(kāi)發(fā)者集中注意力

33、檢查問(wèn)題是否已經(jīng)得到糾正。)接收測(cè)試(又稱功能測(cè)試)是客戶進(jìn)行的測(cè)試以確認(rèn)系統(tǒng)功能運(yùn)行是)接收測(cè)試(又稱功能測(cè)試)是客戶進(jìn)行的測(cè)試以確認(rèn)系統(tǒng)功能運(yùn)行是否正常。接收測(cè)試通常測(cè)試整個(gè)系統(tǒng)。當(dāng)給定的用戶故事中所有的接收測(cè)否正常。接收測(cè)試通常測(cè)試整個(gè)系統(tǒng)。當(dāng)給定的用戶故事中所有的接收測(cè)試都通過(guò)了,用戶故事就完成了。試都通過(guò)了,用戶故事就完成了。測(cè)試過(guò)程也是一個(gè)迭代的過(guò)程。測(cè)試過(guò)程也是一個(gè)迭代的過(guò)程。第章關(guān)于過(guò)程的話題第章關(guān)于過(guò)程的話題6.6.代碼重構(gòu)代碼重構(gòu)(RefactoringRefactoring)去除在編程中產(chǎn)生的任何重復(fù)的代碼。因?yàn)樗械某绦蚨加邢鄳?yīng)的測(cè)試,去除在編程中產(chǎn)生的任何重復(fù)的代碼。

34、因?yàn)樗械某绦蚨加邢鄳?yīng)的測(cè)試,開(kāi)發(fā)組可以大膽地整理程序,而不必顧慮影響其它的功能模塊。在可能開(kāi)發(fā)組可以大膽地整理程序,而不必顧慮影響其它的功能模塊。在可能的情況下,開(kāi)發(fā)者應(yīng)該每過(guò)幾個(gè)小時(shí)就做一次代碼整合,然后更新代碼的情況下,開(kāi)發(fā)者應(yīng)該每過(guò)幾個(gè)小時(shí)就做一次代碼整合,然后更新代碼庫(kù)一次。無(wú)論如何都不能超過(guò)一天不去整合代碼。不斷地整合將避免代庫(kù)一次。無(wú)論如何都不能超過(guò)一天不去整合代碼。不斷地整合將避免代碼的離題和支離破碎。如果不跟其他人交流,開(kāi)發(fā)者就沒(méi)有辦法知道哪碼的離題和支離破碎。如果不跟其他人交流,開(kāi)發(fā)者就沒(méi)有辦法知道哪些代碼是可以重用的。每個(gè)人都必須在最新的版本中開(kāi)發(fā),避免不應(yīng)該些代碼是可以

35、重用的。每個(gè)人都必須在最新的版本中開(kāi)發(fā),避免不應(yīng)該產(chǎn)生的廢碼導(dǎo)致整合的復(fù)雜性。產(chǎn)生的廢碼導(dǎo)致整合的復(fù)雜性。7.7.結(jié)對(duì)編程結(jié)對(duì)編程(Pair ProgrammingPair Programming)一個(gè)版本中所有的代碼都由兩個(gè)人一起在一臺(tái)電腦里編寫(xiě)。結(jié)對(duì)編程只是一個(gè)版本中所有的代碼都由兩個(gè)人一起在一臺(tái)電腦里編寫(xiě)。結(jié)對(duì)編程只是提高了軟件的質(zhì)量,而不會(huì)加快版本發(fā)布的進(jìn)度。但是,兩個(gè)人結(jié)對(duì)編程提高了軟件的質(zhì)量,而不會(huì)加快版本發(fā)布的進(jìn)度。但是,兩個(gè)人結(jié)對(duì)編程會(huì)更加高效,特別是在質(zhì)量上會(huì)有更好的保障,從而節(jié)省項(xiàng)目后期的時(shí)間。會(huì)更加高效,特別是在質(zhì)量上會(huì)有更好的保障,從而節(jié)省項(xiàng)目后期的時(shí)間。結(jié)對(duì)編程最好的

36、方式是:兩個(gè)人肩并肩地坐在電腦前,共同操作鍵盤(pán)和鼠結(jié)對(duì)編程最好的方式是:兩個(gè)人肩并肩地坐在電腦前,共同操作鍵盤(pán)和鼠標(biāo)。當(dāng)一個(gè)人從整體考慮方法如何去適應(yīng)類的時(shí)候,另外一個(gè)人就輸入代標(biāo)。當(dāng)一個(gè)人從整體考慮方法如何去適應(yīng)類的時(shí)候,另外一個(gè)人就輸入代碼、考慮如何具體實(shí)現(xiàn)方法。你需要花些時(shí)間來(lái)適應(yīng)結(jié)對(duì)編程的過(guò)程,所碼、考慮如何具體實(shí)現(xiàn)方法。你需要花些時(shí)間來(lái)適應(yīng)結(jié)對(duì)編程的過(guò)程,所以在開(kāi)始的時(shí)候感覺(jué)有些難以把握是很正常的。以在開(kāi)始的時(shí)候感覺(jué)有些難以把握是很正常的。第章關(guān)于過(guò)程的話題第章關(guān)于過(guò)程的話題8.8.共同擁有代碼共同擁有代碼(Collective Code OwnershipCollective Co

37、de Ownership)共同擁有代碼,鼓勵(lì)任何人在任何時(shí)候?qū)ο到y(tǒng)的任何部分提出自己新的共同擁有代碼,鼓勵(lì)任何人在任何時(shí)候?qū)ο到y(tǒng)的任何部分提出自己新的想法。任何人都可以為了添加功能、修改錯(cuò)誤而修改任何一行代碼。想法。任何人都可以為了添加功能、修改錯(cuò)誤而修改任何一行代碼。團(tuán)隊(duì)中的每一個(gè)人都不會(huì)因?yàn)樾薷拇a而感到不便。當(dāng)然,在一開(kāi)始這團(tuán)隊(duì)中的每一個(gè)人都不會(huì)因?yàn)樾薷拇a而感到不便。當(dāng)然,在一開(kāi)始這是很難理解的,很難想象團(tuán)隊(duì)中的每個(gè)人都需要對(duì)系統(tǒng)的體系結(jié)構(gòu)負(fù)責(zé)。是很難理解的,很難想象團(tuán)隊(duì)中的每個(gè)人都需要對(duì)系統(tǒng)的體系結(jié)構(gòu)負(fù)責(zé)。沒(méi)有一個(gè)主要的系統(tǒng)設(shè)計(jì)者來(lái)保持系統(tǒng)的完整性和系統(tǒng)的開(kāi)發(fā)進(jìn)程,這沒(méi)有一個(gè)主要的系

38、統(tǒng)設(shè)計(jì)者來(lái)保持系統(tǒng)的完整性和系統(tǒng)的開(kāi)發(fā)進(jìn)程,這看上去好像會(huì)導(dǎo)致工作很難進(jìn)行。但是,你經(jīng)常會(huì)碰到這樣的情況:當(dāng)看上去好像會(huì)導(dǎo)致工作很難進(jìn)行。但是,你經(jīng)常會(huì)碰到這樣的情況:當(dāng)你問(wèn)主要設(shè)計(jì)者一個(gè)問(wèn)題的時(shí)候,他的回答經(jīng)常答非所問(wèn)。這并不是他你問(wèn)主要設(shè)計(jì)者一個(gè)問(wèn)題的時(shí)候,他的回答經(jīng)常答非所問(wèn)。這并不是他的錯(cuò),因?yàn)樗豢赡苊靼壮绦蛩械募?xì)節(jié)。不管你知道什么,你都應(yīng)該的錯(cuò),因?yàn)樗豢赡苊靼壮绦蛩械募?xì)節(jié)。不管你知道什么,你都應(yīng)該讓整個(gè)開(kāi)發(fā)團(tuán)隊(duì)的成員熟知你的編碼部分。為了貫徹這種工作方式,就讓整個(gè)開(kāi)發(fā)團(tuán)隊(duì)的成員熟知你的編碼部分。為了貫徹這種工作方式,就必須保證代碼庫(kù)中的代碼永遠(yuǎn)都是通過(guò)測(cè)試的、最新的代碼。必須

39、保證代碼庫(kù)中的代碼永遠(yuǎn)都是通過(guò)測(cè)試的、最新的代碼。代碼共有的機(jī)制要比獨(dú)個(gè)兒擁有代碼可靠得多,尤其是當(dāng)有人在開(kāi)發(fā)過(guò)代碼共有的機(jī)制要比獨(dú)個(gè)兒擁有代碼可靠得多,尤其是當(dāng)有人在開(kāi)發(fā)過(guò)程中離開(kāi)時(shí)。程中離開(kāi)時(shí)。第章關(guān)于過(guò)程的話題第章關(guān)于過(guò)程的話題9.9.持續(xù)集成持續(xù)集成(Continuous IntegrationContinuous Integration)如果不控制源代碼的集成,開(kāi)發(fā)者就會(huì)隨意測(cè)試、集成他們認(rèn)為已經(jīng)很如果不控制源代碼的集成,開(kāi)發(fā)者就會(huì)隨意測(cè)試、集成他們認(rèn)為已經(jīng)很好的代碼。但是因?yàn)榇a集成是平行的,就可能有些需要做整體測(cè)試的好的代碼。但是因?yàn)榇a集成是平行的,就可能有些需要做整體測(cè)試的源

40、代碼沒(méi)有放在一起進(jìn)行整體測(cè)試,所以大多數(shù)集成的問(wèn)題在開(kāi)始時(shí)都源代碼沒(méi)有放在一起進(jìn)行整體測(cè)試,所以大多數(shù)集成的問(wèn)題在開(kāi)始時(shí)都很難發(fā)現(xiàn)。很難發(fā)現(xiàn)。每天都要將所有的修改集成到代碼庫(kù)中。在集成前后,應(yīng)該地每天都要將所有的修改集成到代碼庫(kù)中。在集成前后,應(yīng)該地通過(guò)測(cè)試。通過(guò)測(cè)試。為了解決這個(gè)問(wèn)題,對(duì)代碼庫(kù)必須引入上鎖的機(jī)制。如果一個(gè)團(tuán)隊(duì)相對(duì)為了解決這個(gè)問(wèn)題,對(duì)代碼庫(kù)必須引入上鎖的機(jī)制。如果一個(gè)團(tuán)隊(duì)相對(duì)獨(dú)立的話,應(yīng)該有一臺(tái)專門(mén)用于集成的電腦。經(jīng)常集成和發(fā)布代碼將會(huì)獨(dú)立的話,應(yīng)該有一臺(tái)專門(mén)用于集成的電腦。經(jīng)常集成和發(fā)布代碼將會(huì)大大縮短上鎖的時(shí)間,減少鎖的等待時(shí)間。大大縮短上鎖的時(shí)間,減少鎖的等待時(shí)間。10.

41、10.每周工作每周工作4040小時(shí)小時(shí)(40-Hour Work Week40-Hour Work Week)疲憊的程序員容易出錯(cuò)。程序員準(zhǔn)時(shí)下班以確保他們的健康和高效率。疲憊的程序員容易出錯(cuò)。程序員準(zhǔn)時(shí)下班以確保他們的健康和高效率。在項(xiàng)目的關(guān)鍵時(shí)刻少量的超時(shí)工作是允許的,但在極限編程項(xiàng)目中不允在項(xiàng)目的關(guān)鍵時(shí)刻少量的超時(shí)工作是允許的,但在極限編程項(xiàng)目中不允許發(fā)生經(jīng)常的、連續(xù)的加班。許發(fā)生經(jīng)常的、連續(xù)的加班。第章關(guān)于過(guò)程的話題第章關(guān)于過(guò)程的話題11.11.現(xiàn)場(chǎng)客戶現(xiàn)場(chǎng)客戶(On-site CustomerOn-site Customer)開(kāi)發(fā)組能夠不斷地和真正使用系統(tǒng)的客戶聯(lián)系。對(duì)于商業(yè)通用軟件

42、,通開(kāi)發(fā)組能夠不斷地和真正使用系統(tǒng)的客戶聯(lián)系。對(duì)于商業(yè)通用軟件,通常是產(chǎn)品經(jīng)理?yè)?dān)任客戶這一角色。這樣既可以改善開(kāi)發(fā)組與客戶之間的常是產(chǎn)品經(jīng)理?yè)?dān)任客戶這一角色。這樣既可以改善開(kāi)發(fā)組與客戶之間的交流,又可以省去大量耗時(shí)耗力的文檔工作。交流,又可以省去大量耗時(shí)耗力的文檔工作。12.12.編碼標(biāo)準(zhǔn)編碼標(biāo)準(zhǔn)(Coding StandardsCoding Standards)編碼標(biāo)準(zhǔn)將保證代碼的一致性、易讀性和可重構(gòu)性。因此,所有的程序員編碼標(biāo)準(zhǔn)將保證代碼的一致性、易讀性和可重構(gòu)性。因此,所有的程序員必須以同樣的方式、遵循同樣的規(guī)則來(lái)編寫(xiě)代碼。必須以同樣的方式、遵循同樣的規(guī)則來(lái)編寫(xiě)代碼。5.2.4 5.2

43、.4 特征驅(qū)動(dòng)開(kāi)發(fā)(特征驅(qū)動(dòng)開(kāi)發(fā)(Feature-Driven Devolopment,FDDFeature-Driven Devolopment,FDD) 特征驅(qū)動(dòng)開(kāi)發(fā)的誕生有些戲劇性。當(dāng)年,特征驅(qū)動(dòng)開(kāi)發(fā)的誕生有些戲劇性。當(dāng)年,Jeff De Luca受命于危難,接受命于危難,接手了新加坡的一個(gè)大型軟件開(kāi)發(fā)項(xiàng)目。該項(xiàng)目不僅規(guī)模大,而且涉及了手了新加坡的一個(gè)大型軟件開(kāi)發(fā)項(xiàng)目。該項(xiàng)目不僅規(guī)模大,而且涉及了不同的三個(gè)商業(yè)領(lǐng)域,同時(shí)還要對(duì)原有的系統(tǒng)進(jìn)行集成,并且在此之前不同的三個(gè)商業(yè)領(lǐng)域,同時(shí)還要對(duì)原有的系統(tǒng)進(jìn)行集成,并且在此之前其他人已經(jīng)有過(guò)一次失敗的嘗試。接手之后,其他人已經(jīng)有過(guò)一次失敗的嘗試。

44、接手之后,Jeff邀請(qǐng)他的好友、對(duì)象邀請(qǐng)他的好友、對(duì)象建模專家建模專家Peter Coad擔(dān)任項(xiàng)目的主設(shè)計(jì)師。在兩人的默契配合下,項(xiàng)目擔(dān)任項(xiàng)目的主設(shè)計(jì)師。在兩人的默契配合下,項(xiàng)目取得了成功。取得了成功。第章關(guān)于過(guò)程的話題第章關(guān)于過(guò)程的話題作為該項(xiàng)目成功經(jīng)驗(yàn)的總結(jié),產(chǎn)生了兩個(gè)重大的成果:特征驅(qū)動(dòng)開(kāi)發(fā)和作為該項(xiàng)目成功經(jīng)驗(yàn)的總結(jié),產(chǎn)生了兩個(gè)重大的成果:特征驅(qū)動(dòng)開(kāi)發(fā)和彩色建模法。后來(lái),彩色建模法。后來(lái),Peter Coad使用使用FDD,開(kāi)發(fā)出了杰出的建模工具,開(kāi)發(fā)出了杰出的建模工具Together,成為,成為Rational Rose最有力的競(jìng)爭(zhēng)者。最有力的競(jìng)爭(zhēng)者。1.1.什么是什么是FDDFDDF

45、DDFDD是一個(gè)模型驅(qū)動(dòng)的快速迭代開(kāi)發(fā)過(guò)程,它強(qiáng)調(diào)的是簡(jiǎn)化、實(shí)用、易于是一個(gè)模型驅(qū)動(dòng)的快速迭代開(kāi)發(fā)過(guò)程,它強(qiáng)調(diào)的是簡(jiǎn)化、實(shí)用、易于被開(kāi)發(fā)團(tuán)隊(duì)接受,適用于需求經(jīng)常變動(dòng)的項(xiàng)目。簡(jiǎn)單地說(shuō),被開(kāi)發(fā)團(tuán)隊(duì)接受,適用于需求經(jīng)常變動(dòng)的項(xiàng)目。簡(jiǎn)單地說(shuō),F(xiàn)DD“FDD“是一個(gè)是一個(gè)以以ArchitectureArchitecture為中心的,采用短迭代期,目標(biāo)驅(qū)動(dòng)的開(kāi)發(fā)過(guò)程為中心的,采用短迭代期,目標(biāo)驅(qū)動(dòng)的開(kāi)發(fā)過(guò)程”。它。它首先對(duì)整個(gè)項(xiàng)目建立起一個(gè)整體的模型,然后通過(guò)兩周一次首先對(duì)整個(gè)項(xiàng)目建立起一個(gè)整體的模型,然后通過(guò)兩周一次”設(shè)計(jì)功能設(shè)計(jì)功能- -實(shí)現(xiàn)功能實(shí)現(xiàn)功能”的迭代來(lái)完成項(xiàng)目的開(kāi)發(fā)。此處的的迭代來(lái)完成項(xiàng)目

46、的開(kāi)發(fā)。此處的“功能功能”是指是指“用戶眼中最用戶眼中最小的有用的功能小的有用的功能”,它是可理解的、可度量的,并且可以在有限的時(shí)間內(nèi),它是可理解的、可度量的,并且可以在有限的時(shí)間內(nèi)(兩周)實(shí)現(xiàn)。在開(kāi)發(fā)過(guò)程中,開(kāi)發(fā)計(jì)劃的制定、報(bào)告的生成、開(kāi)發(fā)進(jìn)度(兩周)實(shí)現(xiàn)。在開(kāi)發(fā)過(guò)程中,開(kāi)發(fā)計(jì)劃的制定、報(bào)告的生成、開(kāi)發(fā)進(jìn)度的跟蹤均是以上述的跟蹤均是以上述“功能功能”為單位進(jìn)行的。為單位進(jìn)行的。FDDFDD認(rèn)為:只有良好定義的并認(rèn)為:只有良好定義的并且簡(jiǎn)單的過(guò)程才能被很好地執(zhí)行。另外,由于在且簡(jiǎn)單的過(guò)程才能被很好地執(zhí)行。另外,由于在FDDFDD中采用了短周期的迭中采用了短周期的迭代,最小化的功能劃分法,所以可

47、以對(duì)項(xiàng)目的開(kāi)發(fā)進(jìn)程進(jìn)行精確、及時(shí)的代,最小化的功能劃分法,所以可以對(duì)項(xiàng)目的開(kāi)發(fā)進(jìn)程進(jìn)行精確、及時(shí)的監(jiān)控。監(jiān)控。 第章關(guān)于過(guò)程的話題第章關(guān)于過(guò)程的話題2.2.什么是什么是“特征特征”特征是特征是FDDFDD方法論中最核心的概念,在的定義中,特征就是具有客方法論中最核心的概念,在的定義中,特征就是具有客戶價(jià)值的功能。它通常是采用戶價(jià)值的功能。它通常是采用“”的形式來(lái)的形式來(lái)描述的,例如描述的,例如“統(tǒng)計(jì)本月業(yè)務(wù)總額統(tǒng)計(jì)本月業(yè)務(wù)總額”(統(tǒng)計(jì)是(統(tǒng)計(jì)是actionaction,本月業(yè)務(wù)是,本月業(yè)務(wù)是objectobject,總額是,總額是resultresult)。也就是希望一開(kāi)始就將軟件開(kāi)發(fā)團(tuán)隊(duì)從技

48、術(shù))。也就是希望一開(kāi)始就將軟件開(kāi)發(fā)團(tuán)隊(duì)從技術(shù)領(lǐng)域、技術(shù)視角中拉出來(lái),而將注意力放在領(lǐng)域、技術(shù)視角中拉出來(lái),而將注意力放在“客戶價(jià)值客戶價(jià)值”的體現(xiàn)上。的體現(xiàn)上。的的Feature與中的與中的“user store(用戶故事)(用戶故事)”和中的和中的“use case(用例)(用例)”無(wú)論是在思想上還是在形式上,基本是一致的,無(wú)論是在思想上還是在形式上,基本是一致的,它們都是試圖從用戶的角度以及問(wèn)題域的角度來(lái)理解軟件的需求。它們都是試圖從用戶的角度以及問(wèn)題域的角度來(lái)理解軟件的需求。3.FDD3.FDD過(guò)程簡(jiǎn)述過(guò)程簡(jiǎn)述與其它方法論的一個(gè)明顯的區(qū)別是,致力于軟件系統(tǒng)的實(shí)際與其它方法論的一個(gè)明顯的區(qū)

49、別是,致力于軟件系統(tǒng)的實(shí)際設(shè)計(jì)和構(gòu)造,它僅僅關(guān)注進(jìn)行設(shè)計(jì)和編寫(xiě)軟件所需的特定活動(dòng)和產(chǎn)生的工設(shè)計(jì)和構(gòu)造,它僅僅關(guān)注進(jìn)行設(shè)計(jì)和編寫(xiě)軟件所需的特定活動(dòng)和產(chǎn)生的工作成果。從與領(lǐng)域?qū)<液献鲃?chuàng)建一個(gè)領(lǐng)域?qū)ο竽P烷_(kāi)始,結(jié)合需求作成果。從與領(lǐng)域?qū)<液献鲃?chuàng)建一個(gè)領(lǐng)域?qū)ο竽P烷_(kāi)始,結(jié)合需求過(guò)程的信息,為開(kāi)發(fā)人員創(chuàng)建一個(gè)特征表,接著在特征表的基礎(chǔ)上制定一過(guò)程的信息,為開(kāi)發(fā)人員創(chuàng)建一個(gè)特征表,接著在特征表的基礎(chǔ)上制定一個(gè)迭代的開(kāi)發(fā)計(jì)劃,最后通過(guò)幾個(gè)個(gè)迭代的開(kāi)發(fā)計(jì)劃,最后通過(guò)幾個(gè)“設(shè)計(jì)、構(gòu)造設(shè)計(jì)、構(gòu)造”的迭代完成開(kāi)發(fā)任務(wù)。的迭代完成開(kāi)發(fā)任務(wù)。過(guò)程如圖過(guò)程如圖5.45.4所示。所示。第章關(guān)于過(guò)程的話題第章關(guān)于過(guò)程的話題開(kāi)

50、發(fā)一個(gè)開(kāi)發(fā)一個(gè)整體模型整體模型構(gòu)造一個(gè)構(gòu)造一個(gè)特征表特征表根據(jù)特征根據(jù)特征制定計(jì)劃制定計(jì)劃開(kāi)發(fā)一個(gè)開(kāi)發(fā)一個(gè)整體模型整體模型根據(jù)特征根據(jù)特征進(jìn)行設(shè)計(jì)進(jìn)行設(shè)計(jì)根據(jù)特征根據(jù)特征進(jìn)行構(gòu)造進(jìn)行構(gòu)造圖圖5.45.4過(guò)程過(guò)程4.FDD4.FDD的實(shí)踐集合的實(shí)踐集合)領(lǐng)域?qū)ο蠼#簽榱耸管浖_(kāi)發(fā)過(guò)程中的問(wèn)題域和解決域更緊密的結(jié))領(lǐng)域?qū)ο蠼#簽榱耸管浖_(kāi)發(fā)過(guò)程中的問(wèn)題域和解決域更緊密的結(jié)合起來(lái),非常強(qiáng)調(diào)合起來(lái),非常強(qiáng)調(diào)“領(lǐng)域模型領(lǐng)域模型”的重要性。你可以使用傳統(tǒng)的的重要性。你可以使用傳統(tǒng)的圖、類圖來(lái)建模,也可以使用圖、類圖來(lái)建模,也可以使用PeterPeter的的“彩色建模法彩色建模法”來(lái)建模。來(lái)建模。)根據(jù)

51、特征組織開(kāi)發(fā):在整個(gè)開(kāi)發(fā)過(guò)程中,使用)根據(jù)特征組織開(kāi)發(fā):在整個(gè)開(kāi)發(fā)過(guò)程中,使用“特征特征”為主線完成任為主線完成任務(wù)分工、任務(wù)實(shí)現(xiàn)、進(jìn)度監(jiān)控等。務(wù)分工、任務(wù)實(shí)現(xiàn)、進(jìn)度監(jiān)控等。)類的所有者:一個(gè)類有且只有一個(gè)所有者,即一個(gè)類只能由一名開(kāi)發(fā))類的所有者:一個(gè)類有且只有一個(gè)所有者,即一個(gè)類只能由一名開(kāi)發(fā)人員進(jìn)行設(shè)計(jì)及編碼。采用這種方式是十分有效的,因?yàn)殚_(kāi)發(fā)人員會(huì)感覺(jué)人員進(jìn)行設(shè)計(jì)及編碼。采用這種方式是十分有效的,因?yàn)殚_(kāi)發(fā)人員會(huì)感覺(jué)他擁有了部分屬于自已的代碼,他會(huì)以此為榮;此外,它還可以保證相關(guān)他擁有了部分屬于自已的代碼,他會(huì)以此為榮;此外,它還可以保證相關(guān)代碼的一致性。如果此類中包含有復(fù)雜的算法,那么

52、可以再增加一名專門(mén)代碼的一致性。如果此類中包含有復(fù)雜的算法,那么可以再增加一名專門(mén)負(fù)責(zé)算法的開(kāi)發(fā)人員。雖然負(fù)責(zé)算法的開(kāi)發(fā)人員。雖然FDDFDD是面向用戶功能的,而不是面向類的,但是面向用戶功能的,而不是面向類的,但用戶最終關(guān)心的是他們所需要的功能,而并不關(guān)心在開(kāi)發(fā)時(shí)采用何種框架用戶最終關(guān)心的是他們所需要的功能,而并不關(guān)心在開(kāi)發(fā)時(shí)采用何種框架模式,所以以類為單位進(jìn)行人員分配與開(kāi)發(fā)的宗旨并不矛盾。模式,所以以類為單位進(jìn)行人員分配與開(kāi)發(fā)的宗旨并不矛盾。 第章關(guān)于過(guò)程的話題第章關(guān)于過(guò)程的話題)特征開(kāi)發(fā)小組:在中,將形成動(dòng)態(tài)矩陣式管理。一方面是從)特征開(kāi)發(fā)小組:在中,將形成動(dòng)態(tài)矩陣式管理。一方面是從解決

53、領(lǐng)域入手,每個(gè)類都有一個(gè)責(zé)任人;另一方面則是從問(wèn)題域入手,解決領(lǐng)域入手,每個(gè)類都有一個(gè)責(zé)任人;另一方面則是從問(wèn)題域入手,每一個(gè)特征也有一個(gè)責(zé)任人。并將相關(guān)的特征組織成特征集,建立特征每一個(gè)特征也有一個(gè)責(zé)任人。并將相關(guān)的特征組織成特征集,建立特征開(kāi)發(fā)小組,承擔(dān)特征、特征集開(kāi)發(fā)的任務(wù)。開(kāi)發(fā)小組,承擔(dān)特征、特征集開(kāi)發(fā)的任務(wù)。)審查:通過(guò)代碼審查、設(shè)計(jì)審查、同級(jí)評(píng)審等機(jī)制來(lái)強(qiáng)調(diào)每個(gè))審查:通過(guò)代碼審查、設(shè)計(jì)審查、同級(jí)評(píng)審等機(jī)制來(lái)強(qiáng)調(diào)每個(gè)環(huán)節(jié)的質(zhì)量保證。審查的目的是質(zhì)量控制,而不是績(jī)效考核。環(huán)節(jié)的質(zhì)量保證。審查的目的是質(zhì)量控制,而不是績(jī)效考核。)定期構(gòu)造:是一個(gè)迭代的過(guò)程,在開(kāi)發(fā)中將特征分配到幾個(gè)迭)定

54、期構(gòu)造:是一個(gè)迭代的過(guò)程,在開(kāi)發(fā)中將特征分配到幾個(gè)迭代過(guò)程中去,每次迭代都將產(chǎn)生一個(gè)可執(zhí)行的中間產(chǎn)品,這為定期構(gòu)造提代過(guò)程中去,每次迭代都將產(chǎn)生一個(gè)可執(zhí)行的中間產(chǎn)品,這為定期構(gòu)造提供了可能,也使得在開(kāi)發(fā)的過(guò)程中能夠定期構(gòu)造出一些可進(jìn)行質(zhì)量度量的供了可能,也使得在開(kāi)發(fā)的過(guò)程中能夠定期構(gòu)造出一些可進(jìn)行質(zhì)量度量的工作成果。工作成果。)配置管理:在的多次迭代過(guò)程中將產(chǎn)生眾多的中間版本,因)配置管理:在的多次迭代過(guò)程中將產(chǎn)生眾多的中間版本,因此,如果沒(méi)有有效的配置管理,系統(tǒng)的開(kāi)發(fā)過(guò)程將會(huì)亂了套。此,如果沒(méi)有有效的配置管理,系統(tǒng)的開(kāi)發(fā)過(guò)程將會(huì)亂了套。)可視的結(jié)果報(bào)告:定期構(gòu)造可以使得開(kāi)發(fā)過(guò)程中能夠不斷地產(chǎn)

55、生)可視的結(jié)果報(bào)告:定期構(gòu)造可以使得開(kāi)發(fā)過(guò)程中能夠不斷地產(chǎn)生“可可視視”的中間結(jié)果,這使得進(jìn)度更加容易得到監(jiān)控。另外,還創(chuàng)建了的中間結(jié)果,這使得進(jìn)度更加容易得到監(jiān)控。另外,還創(chuàng)建了一種可視化的項(xiàng)目進(jìn)度報(bào)表格式,使得進(jìn)度情況一目了然。一種可視化的項(xiàng)目進(jìn)度報(bào)表格式,使得進(jìn)度情況一目了然。第章關(guān)于過(guò)程的話題第章關(guān)于過(guò)程的話題以上所介紹的幾種目前主流的軟件開(kāi)發(fā)過(guò)程,無(wú)論是強(qiáng)調(diào)文檔的重量級(jí)方以上所介紹的幾種目前主流的軟件開(kāi)發(fā)過(guò)程,無(wú)論是強(qiáng)調(diào)文檔的重量級(jí)方法論如統(tǒng)一過(guò)程,還是強(qiáng)調(diào)人和協(xié)作的輕量級(jí)敏捷方法論,都有一個(gè)共同法論如統(tǒng)一過(guò)程,還是強(qiáng)調(diào)人和協(xié)作的輕量級(jí)敏捷方法論,都有一個(gè)共同的特點(diǎn),那就是的特點(diǎn),那

56、就是迭代的、增量的迭代的、增量的開(kāi)發(fā)過(guò)程。這并不是一種偶然,而是為了開(kāi)發(fā)過(guò)程。這并不是一種偶然,而是為了更好地適應(yīng)變化的一種必然選擇。更好地適應(yīng)變化的一種必然選擇。5.3 5.3 理解開(kāi)發(fā)過(guò)程理解開(kāi)發(fā)過(guò)程在前面各章中,我們以在前面各章中,我們以“個(gè)人圖書(shū)管理系統(tǒng)個(gè)人圖書(shū)管理系統(tǒng)”為例,以作為工具,為例,以作為工具,介紹了如何使用面向?qū)ο蠓椒▽?duì)應(yīng)用系統(tǒng)進(jìn)行分析和設(shè)計(jì),分別闡述了介紹了如何使用面向?qū)ο蠓椒▽?duì)應(yīng)用系統(tǒng)進(jìn)行分析和設(shè)計(jì),分別闡述了體現(xiàn)業(yè)務(wù)領(lǐng)域知識(shí)的問(wèn)題域模型的建立、實(shí)現(xiàn)系統(tǒng)需求整合的用例模型體現(xiàn)業(yè)務(wù)領(lǐng)域知識(shí)的問(wèn)題域模型的建立、實(shí)現(xiàn)系統(tǒng)需求整合的用例模型的建立、通過(guò)健壯性分析來(lái)實(shí)現(xiàn)從需求分

57、析到設(shè)計(jì)的過(guò)渡、以及使用交的建立、通過(guò)健壯性分析來(lái)實(shí)現(xiàn)從需求分析到設(shè)計(jì)的過(guò)渡、以及使用交互模型進(jìn)行詳細(xì)設(shè)計(jì)等四個(gè)方面的內(nèi)容。在介紹上述內(nèi)容的過(guò)程中,我互模型進(jìn)行詳細(xì)設(shè)計(jì)等四個(gè)方面的內(nèi)容。在介紹上述內(nèi)容的過(guò)程中,我們把重點(diǎn)放在每種方法的局部應(yīng)用中,這容易讓人產(chǎn)生們把重點(diǎn)放在每種方法的局部應(yīng)用中,這容易讓人產(chǎn)生“只見(jiàn)樹(shù)木,不只見(jiàn)樹(shù)木,不見(jiàn)森林見(jiàn)森林”的錯(cuò)覺(jué),而這同時(shí)也是應(yīng)用面向?qū)ο蠓椒ㄖ锌赡芊傅腻e(cuò)誤之一。的錯(cuò)覺(jué),而這同時(shí)也是應(yīng)用面向?qū)ο蠓椒ㄖ锌赡芊傅腻e(cuò)誤之一。為此,我們?cè)谏弦还?jié)介紹了主流的開(kāi)發(fā)過(guò)程,而在這一節(jié)將結(jié)合我們的為此,我們?cè)谏弦还?jié)介紹了主流的開(kāi)發(fā)過(guò)程,而在這一節(jié)將結(jié)合我們的例子對(duì)開(kāi)發(fā)過(guò)程進(jìn)

58、行歸納和總結(jié),以便我們既見(jiàn)到了樹(shù)木,也見(jiàn)到了森例子對(duì)開(kāi)發(fā)過(guò)程進(jìn)行歸納和總結(jié),以便我們既見(jiàn)到了樹(shù)木,也見(jiàn)到了森林。林。第章關(guān)于過(guò)程的話題第章關(guān)于過(guò)程的話題5.3.1 5.3.1 模型的演化過(guò)程模型的演化過(guò)程我們?cè)谇八恼轮兴榻B的內(nèi)容,可以歸納為圖我們?cè)谇八恼轮兴榻B的內(nèi)容,可以歸納為圖5.5所示的模型演化過(guò)程。所示的模型演化過(guò)程。用戶界面原型用戶界面原型軟件需求軟件需求動(dòng)態(tài)模型動(dòng)態(tài)模型用例模型用例模型健壯性分析圖健壯性分析圖交互模型交互模型靜態(tài)模型靜態(tài)模型概念模型概念模型類模型類模型代碼代碼圖圖5.55.5模型演化過(guò)程模型演化過(guò)程第章關(guān)于過(guò)程的話題第章關(guān)于過(guò)程的話題由圖由圖5.5中,我們可以歸納

59、出涉及到的各種模型的演化過(guò)程中,我們可以歸納出涉及到的各種模型的演化過(guò)程:)從需求出發(fā),創(chuàng)建問(wèn)題域一靜一動(dòng)兩個(gè)模型:概念模型)從需求出發(fā),創(chuàng)建問(wèn)題域一靜一動(dòng)兩個(gè)模型:概念模型和用例模型。首先利用和用例模型。首先利用“名詞動(dòng)詞法名詞動(dòng)詞法”從需求描述中提取相從需求描述中提取相應(yīng)的類來(lái)建立概念模型,并添加主要屬性及識(shí)別它們之間的應(yīng)的類來(lái)建立概念模型,并添加主要屬性及識(shí)別它們之間的關(guān)聯(lián)關(guān)系;對(duì)于較復(fù)雜的應(yīng)用系統(tǒng),則必須首先進(jìn)行業(yè)務(wù)分關(guān)聯(lián)關(guān)系;對(duì)于較復(fù)雜的應(yīng)用系統(tǒng),則必須首先進(jìn)行業(yè)務(wù)分析,建立業(yè)務(wù)模型后再建立概念模型。其次根據(jù)用戶需求編析,建立業(yè)務(wù)模型后再建立概念模型。其次根據(jù)用戶需求編寫(xiě)用例描述、繪

60、制用例圖,建立包括用例描述和用例圖在內(nèi)寫(xiě)用例描述、繪制用例圖,建立包括用例描述和用例圖在內(nèi)的用例模型,此時(shí)可以進(jìn)行用戶界面原型的創(chuàng)建,從中發(fā)現(xiàn)的用例模型,此時(shí)可以進(jìn)行用戶界面原型的創(chuàng)建,從中發(fā)現(xiàn)用戶的使用場(chǎng)景,建立開(kāi)發(fā)人員與用戶之間進(jìn)行溝通的共同用戶的使用場(chǎng)景,建立開(kāi)發(fā)人員與用戶之間進(jìn)行溝通的共同基礎(chǔ)。用戶界面模型的創(chuàng)建既可以使用可視化語(yǔ)言,也可以基礎(chǔ)。用戶界面模型的創(chuàng)建既可以使用可視化語(yǔ)言,也可以簡(jiǎn)單地使用繪制草圖的方式來(lái)實(shí)現(xiàn)。簡(jiǎn)單地使用繪制草圖的方式來(lái)實(shí)現(xiàn)。第章關(guān)于過(guò)程的話題第章關(guān)于過(guò)程的話題)在用例模型的基礎(chǔ)上,進(jìn)行健壯性分析,目的是發(fā)現(xiàn)實(shí))在用例模型的基礎(chǔ)上,進(jìn)行健壯性分析,目的是發(fā)現(xiàn)實(shí)體類、控制類和

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論