論UML在程序開發(fā)中的重要作用_第1頁
論UML在程序開發(fā)中的重要作用_第2頁
論UML在程序開發(fā)中的重要作用_第3頁
論UML在程序開發(fā)中的重要作用_第4頁
論UML在程序開發(fā)中的重要作用_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、經(jīng)典的軟件工程思想將軟件開發(fā)分成5個(gè)階段:需求分析系統(tǒng)分析與設(shè)計(jì);系統(tǒng)實(shí)現(xiàn)測試及維護(hù)五個(gè)階段。序言如果想搭一個(gè)狗窩,備好木料、釘子和一些基本工具(如錘子、鋸和卷尺)之后,就可以開始工作了。從制定一點(diǎn)初步計(jì)劃到完成一個(gè)滿足適當(dāng)功能的狗窩,可能不用別人幫助,在幾個(gè)小時(shí)內(nèi)就能夠?qū)崿F(xiàn)。只要狗窩夠大且不太漏水,狗就可以安居。如果未能達(dá)到希望的效果,返工總是可以的,無非是讓狗受點(diǎn)委屈。如果你要建造一座高層辦公大廈,若還是先備好木料、釘子和一些基本工具就開始工作,那將是非常愚蠢的。因?yàn)槟闼褂玫馁Y金可能是別人的,他們會(huì)對(duì)建筑物的規(guī)模、形狀和風(fēng)格做出要求。同時(shí),他們經(jīng)常會(huì)改變想法,甚至是在工程已經(jīng)開工之后。由

2、于失敗的代價(jià)太高了,因此必須要做詳盡的計(jì)劃。負(fù)責(zé)建筑物設(shè)計(jì)和施工的是一個(gè)龐大的組織機(jī)構(gòu),你只是其中的一部分。這個(gè)組織將需要各種各樣的設(shè)計(jì)圖和模型,以供各方相互溝通。只要得到了合適的人員和工具,并對(duì)把建筑概念轉(zhuǎn)換為實(shí)際建筑的過程進(jìn)行積極的管理,將會(huì)建成這座滿足使用要求的大廈。如果想繼續(xù)從事建筑工作,那么一定要在使用要求和實(shí)際的建筑技術(shù)之間做好平衡,并且處理好建筑團(tuán)隊(duì)成員們的休息問題,既不能把他們置于風(fēng)險(xiǎn)之中,也不能驅(qū)使他們過分辛苦地工作以至于精疲力盡。奇怪的是,很多軟件開發(fā)組織開始想建造一座大廈式的軟件,而在動(dòng)手處理時(shí)卻好像他們正在倉促地造一個(gè)狗窩。有時(shí)你是幸運(yùn)的。如果在恰當(dāng)?shù)臅r(shí)間有足夠的合適人

3、員,并且其他一切事情都很如意,你的團(tuán)隊(duì)有可能(僅是可能)推出一個(gè)令用戶眼花繚亂的軟件產(chǎn)品。然而,一般的情況下,不可能所有人員都合適(合適的人員經(jīng)常供不應(yīng)求),時(shí)間并不總是恰當(dāng)?shù)模ㄗ蛱炜偸歉茫?,其他的事情也并不盡如人意(常常由不得自己)。現(xiàn)在對(duì)軟件開發(fā)的要求正在日益增加,而開發(fā)團(tuán)隊(duì)卻還是經(jīng)常單純地依靠他們唯一真正知道如何做好的一件事編寫程序代碼。英雄式的編程工作成為這一行業(yè)的傳奇,人們似乎經(jīng)常認(rèn)為更努力地工作是面對(duì)開發(fā)中出現(xiàn)的各種危機(jī)的正常反應(yīng)。然而,這未必能產(chǎn)生正確的程序代碼,而且一些項(xiàng)目是非常巨大的,無論怎樣延長工作時(shí)間,也不足以完成所需的工作。如果真正想建造一個(gè)相當(dāng)于房子或大廈類的軟件系

4、統(tǒng),問題可不是僅僅編寫許多軟件。事實(shí)上,關(guān)鍵是要編出正確的軟件,并考慮如何少寫軟件。要生產(chǎn)合格的軟件就要有一套關(guān)于體系結(jié)構(gòu)、過程和工具的規(guī)范。即使如此,很多項(xiàng)目開始看起來像狗窩,但隨后發(fā)展得像大廈,原因很簡單,它們是自己成就的犧牲品。如果對(duì)體系結(jié)構(gòu)、過程或工具的規(guī)范沒有作任何考慮,總有一天狗窩會(huì)膨脹成大廈,并會(huì)由于其自身的重量而倒塌。狗窩的倒塌可能使你的狗惱怒;同理,不成功的大廈則將對(duì)大廈的租戶造成嚴(yán)重的影響。不成功的軟件項(xiàng)目失敗的原因各不相同,而所有成功的項(xiàng)目在很多方面都是相似的。成功的軟件組織有很多成功的因素,其中共同的一點(diǎn)就是對(duì)建模的采用。一、 項(xiàng)目開發(fā)中模型是什么以及建模的重要性。那么

5、,模型是什么?簡單地說:模型是對(duì)現(xiàn)實(shí)的簡化。模型提供了系統(tǒng)的藍(lán)圖。模型既可以包括詳細(xì)的計(jì)劃,也可以包括從很高的層次考慮系統(tǒng)的總體計(jì)劃。一個(gè)好的模型包括那些有廣泛影響的主要元素,而忽略那些與給定的抽象水平不相關(guān)的次要元素。每個(gè)系統(tǒng)都可以從不同的方面用不同的模型來描述,因而每個(gè)模型都是一個(gè)在語義上閉合的系統(tǒng)抽象。模型可以是結(jié)構(gòu)性的,強(qiáng)調(diào)系統(tǒng)的組織。它也可以是行為性的,強(qiáng)調(diào)系統(tǒng)的動(dòng)態(tài)方面。為什么要建模?一個(gè)基本理由是:建模是為了能夠更好地理解正在開發(fā)的系統(tǒng)。通過建模,要達(dá)到4個(gè)目的:(1)模型有助于按照實(shí)際情況或按照所需要的樣式對(duì)系統(tǒng)進(jìn)行可視化。(2)模型能夠規(guī)約系統(tǒng)的結(jié)構(gòu)或行為。(3)模型給出了指

6、導(dǎo)構(gòu)造系統(tǒng)的模板。(4)模型對(duì)做出的決策進(jìn)行文檔化。 建模并不只是針對(duì)大的系統(tǒng)。甚至像狗窩那樣的軟件也能從一些建模中受益。然而,可以明確地講,系統(tǒng)越大、越復(fù)雜,建模的重要性就越大,一個(gè)很簡單的原因是:因?yàn)椴荒芡暾乩斫庖粋€(gè)復(fù)雜的系統(tǒng),所以要對(duì)它建模。人對(duì)復(fù)雜問題的理解能力是有限的。通過建模,縮小所研究問題的范圍,一次只著重研究它的一個(gè)方面,即把一個(gè)困難問題劃分成一系列能夠解決的小問題;解決了這些小問題也就解決了這個(gè)難題。此外,通過建??梢栽鰪?qiáng)人的智力。一個(gè)適當(dāng)選擇的模型可以使建模人員在較高的抽象層次上工作。每個(gè)項(xiàng)目都能從一些建模中受益。即使在一次性的軟件開發(fā)中由于可視化編程語言的支持,可以輕而

7、易舉地扔掉不適合的軟件。建模也能幫助開發(fā)組更好地對(duì)系統(tǒng)計(jì)劃進(jìn)行可視化,并幫助他們正確地進(jìn)行構(gòu)造,使開發(fā)工作進(jìn)展得更快。如果根本不建模,項(xiàng)目越復(fù)雜,就越有可能失敗或者構(gòu)造出錯(cuò)誤的東西。所有實(shí)用系統(tǒng)都有一個(gè)自然趨勢:隨著時(shí)間的推移變得越來越復(fù)雜。雖然今天可能認(rèn)為不需要建模,但隨著系統(tǒng)的演化,終將會(huì)對(duì)這個(gè)決定感到后悔,但那時(shí)為時(shí)已晚。在項(xiàng)目開發(fā)中如何建模,接下來我將詳細(xì)講解一下建模工具UML。二、 UML介紹UML( Unified Modeling Language )又稱統(tǒng)一建模語言或標(biāo)準(zhǔn)建模語言,是始于1997年一個(gè)OMG標(biāo)準(zhǔn),它是一個(gè)支持模型化和軟件系統(tǒng)開發(fā)的圖形化語言,為軟件開發(fā)的所有階段

8、提供模型化和可視化支持,包括由需求分析到規(guī)格,到構(gòu)造和配置。 UML是一種功能強(qiáng)大的,面向?qū)ο蟮目梢暬到y(tǒng)分析的建模語言,它的各個(gè)模型可以幫助開發(fā)人員更好地理解業(yè)務(wù)流程,建立更可靠,更完善的系統(tǒng)模型.從而使用戶和開發(fā)人員對(duì)問題的描述達(dá)到相同的理解,以減少語義差異,保障分析的正確性。UML建模分為需求建模和設(shè)計(jì)建模,需求建模的目的是確定系統(tǒng)邊界并明確系統(tǒng)需要實(shí)現(xiàn)的功能。而設(shè)計(jì)建模主要目的是用于開發(fā)團(tuán)隊(duì)中的設(shè)計(jì)思想交流;以及后續(xù)程序設(shè)計(jì)的依據(jù);后續(xù)測試和驗(yàn)收程序的依據(jù)。)三、 UML應(yīng)用領(lǐng)域UML的目標(biāo)是以面向?qū)ο髨D的方式來描述任何類型的系統(tǒng),具有很寬的應(yīng)用領(lǐng)域。其中最常用的是建立軟件系

9、統(tǒng)的模型,但它同樣可以用于描述非軟件領(lǐng)域的系統(tǒng),如機(jī)械系統(tǒng)、企業(yè)機(jī)構(gòu)或業(yè)務(wù)過程,以及處理復(fù)雜數(shù)據(jù)的信息系統(tǒng)、具有實(shí)時(shí)要求的工業(yè)系統(tǒng)或工業(yè)過程等。總之,UML是一個(gè)通用的標(biāo)準(zhǔn)建模語言,可以對(duì)任何具有靜態(tài)結(jié)構(gòu)和動(dòng)態(tài)行為的系統(tǒng)進(jìn)行建模。此外,UML適用于系統(tǒng)開發(fā)過程中從需求規(guī)格描述到系統(tǒng)完成后測試的不同階段。在需求分析階段,可以用用例來捕獲用戶需求。通過用例建模,描述對(duì)系統(tǒng)感興趣的外部角色及其對(duì)系統(tǒng)(用例)的功能要求。分析階段主要關(guān)心問題域中的主要概念(如抽象、類和對(duì)象等)和機(jī)制,需要識(shí)別這些類以及它們相互間的關(guān)系,并用UML類圖來描述。為實(shí)現(xiàn)用例,類之間需要協(xié)作,這可以用UML動(dòng)態(tài)模型來描述。在分

10、析階段,只對(duì)問題域的對(duì)象(現(xiàn)實(shí)世界的概念)建模,而不考慮定義軟件系統(tǒng)中技術(shù)細(xì)節(jié)的類(如處理用戶接口、數(shù)據(jù)庫、通訊和并行性等問題的類)。這些技術(shù)細(xì)節(jié)將在設(shè)計(jì)階段引入,因此設(shè)計(jì)階段為構(gòu)造階段提供更詳細(xì)的規(guī)格說明。編程(構(gòu)造)是一個(gè)獨(dú)立的階段,其任務(wù)是用面向?qū)ο缶幊陶Z言將來自設(shè)計(jì)階段的類轉(zhuǎn)換成實(shí)際的代碼。在用UML建立分析和設(shè)計(jì)模型時(shí),應(yīng)盡量避免考慮把模型轉(zhuǎn)換成某種特定的編程語言。因?yàn)樵谠缙陔A段,模型僅僅是理解和分析系統(tǒng)結(jié)構(gòu)的工具,過早考慮編碼問題十分不利于建立簡單正確的模型。UML模型還可作為測試階段的依據(jù)。系統(tǒng)通常需要經(jīng)過單元測試、集成測試、系統(tǒng)測試和驗(yàn)收測試。不同的測試小組使用不同的UML圖作

11、為測試依據(jù):單元測試使用類圖和類規(guī)格說明;集成測試使用部件圖和合作圖;系統(tǒng)測試使用用例圖來驗(yàn)證系統(tǒng)的行為;驗(yàn)收測試由用戶進(jìn)行,以驗(yàn)證系統(tǒng)測試的結(jié)果是否滿足在分析階段確定的需求??傊瑯?biāo)準(zhǔn)建模語言UML適用于以面向?qū)ο蠹夹g(shù)來描述任何類型的系統(tǒng),而且適用于系統(tǒng)開發(fā)的不同階段,從需求規(guī)格描述直至系統(tǒng)完成后的測試和維護(hù)。四、 UML圖形種類介紹UML從考慮系統(tǒng)的不同角度出發(fā),定義了用例圖、類圖、對(duì)象圖、狀態(tài)圖、活動(dòng)圖、序列圖、協(xié)作圖、構(gòu)件圖、部署圖等9種圖,按其特點(diǎn)可分成五大類,1.用例圖;2.靜態(tài)圖:(類圖、對(duì)象圖);3.行為圖:(活動(dòng)圖、狀態(tài)圖);4.交互圖:(順序圖、協(xié)作圖);5.實(shí)現(xiàn)圖:(構(gòu)件

12、圖、部署圖)。這些圖從不同的側(cè)面對(duì)系統(tǒng)進(jìn)行描述。系統(tǒng)模型將這些不同的側(cè)面綜合成一致的整體,便于系統(tǒng)的分析和構(gòu)造。1、用例圖    描述角色以及角色與用例之間的連接關(guān)系。說明的是誰要使用系統(tǒng),以及他們使用該系統(tǒng)可以做些什么。一個(gè)用例圖包含了多個(gè)模型元素,如系統(tǒng)、參與者和用例,并且顯示了這些元素之間的各種關(guān)系,如泛化、關(guān)聯(lián)和依賴。2、類圖    類圖是描述系統(tǒng)中的類,以及各個(gè)類之間的關(guān)系的靜態(tài)視圖。能夠讓我們在正確編寫代碼以前對(duì)系統(tǒng)有一個(gè)全面的認(rèn)識(shí)。類圖是一種模型類型,確切的說,是一種靜態(tài)模型類型。3、對(duì)象圖 

13、;   與類圖極為相似,它是類圖的實(shí)例,對(duì)象圖顯示類的多個(gè)對(duì)象實(shí)例,而不是實(shí)際的類。它描述的不是類之間的關(guān)系,而是對(duì)象之間的關(guān)系。4、活動(dòng)圖    描述用例要求所要進(jìn)行的活動(dòng),以及活動(dòng)間的約束關(guān)系,有利于識(shí)別并行活動(dòng)。能夠演示出系統(tǒng)中哪些地方存在功能,以及這些功能和系統(tǒng)中其他組件的功能如何共同滿足前面使用用例圖建模的商務(wù)需求。5、狀態(tài)圖    描述類的對(duì)象所有可能的狀態(tài),以及事件發(fā)生時(shí)狀態(tài)的轉(zhuǎn)移條件??梢圆东@對(duì)象、子系統(tǒng)和系統(tǒng)的生命周期。他們可以告知一個(gè)對(duì)象可以擁有的狀態(tài),并且事件(如

14、消息的接收、時(shí)間的流逝、錯(cuò)誤、條件變?yōu)檎娴?會(huì)怎么隨著時(shí)間的推移來影響這些狀態(tài)。一個(gè)狀態(tài)圖應(yīng)該連接到所有具有清晰的可標(biāo)識(shí)狀態(tài)和復(fù)雜行為的類;該圖可以確定類的行為,以及該行為如何根據(jù)當(dāng)前的狀態(tài)變化,也可以展示哪些事件將會(huì)改變類的對(duì)象的狀態(tài)。狀態(tài)圖是對(duì)類圖的補(bǔ)充。6、序列圖 (順序圖)    序列圖是用來顯示你的參與者如何以一系列順序的步驟與系統(tǒng)的對(duì)象交互的模型。順序圖可以用來展示對(duì)象之間是如何進(jìn)行交互的。順序圖將顯示的重點(diǎn)放在消息序列上,即強(qiáng)調(diào)消息是如何在對(duì)象之間被發(fā)送和接收的。7、協(xié)作圖    和序列圖相

15、似,顯示對(duì)象間的動(dòng)態(tài)合作關(guān)系??梢钥闯墒穷悎D和順序圖的交集,協(xié)作圖建模對(duì)象或者角色,以及它們彼此之間是如何通信的。如果強(qiáng)調(diào)時(shí)間和順序,則使用序列圖;如果強(qiáng)調(diào)上下級(jí)關(guān)系,則選擇協(xié)作圖;這兩種圖合稱為交互圖。8、構(gòu)件圖 (組件圖)    描述代碼構(gòu)件的物理結(jié)構(gòu)以及各種構(gòu)建之間的依賴關(guān)系。用來建模軟件的組件及其相互之間的關(guān)系,這些圖由構(gòu)件標(biāo)記符和構(gòu)件之間的關(guān)系構(gòu)成。在組件圖中,構(gòu)件時(shí)軟件單個(gè)組成部分,它可以是一個(gè)文件,產(chǎn)品、可執(zhí)行文件和腳本等。9、部署圖 (配置圖)    是用來建模系統(tǒng)的物理部署。例

16、如計(jì)算機(jī)和設(shè)備,以及它們之間是如何連接的。部署圖的使用者是開發(fā)人員、系統(tǒng)集成人員和測試人員。以上圖形中由于類圖之間的關(guān)系相對(duì)比較復(fù)雜,所以對(duì)于類圖之間的關(guān)系進(jìn)行一個(gè)大致的講解。其關(guān)系種類有關(guān)聯(lián)、聚合、組合、泛化、依賴。1.       泛化(Generalization)【泛化關(guān)系】:是一種繼承關(guān)系, 表示一般與特殊的關(guān)系, 它指定了子類如何特化父類的所有特征和行為. 例如:老虎是動(dòng)物的一種, 即有老虎的特性也有動(dòng)物的共性.【箭頭指向】:帶三角箭頭的實(shí)線,箭頭指向父類 

17、60;2. 實(shí)現(xiàn)(Realization)【實(shí)現(xiàn)關(guān)系】:是一種類與接口的關(guān)系, 表示類是接口所有特征和行為的實(shí)現(xiàn).【箭頭指向】:帶三角箭頭的虛線,箭頭指向接口 3. 關(guān)聯(lián)(Association)【關(guān)聯(lián)關(guān)系】:是一種擁有的關(guān)系, 它使一個(gè)類知道另一個(gè)類的屬性和方法;如:老師與學(xué)生,丈夫與妻子關(guān)聯(lián)可以是雙向的,也可以是單向的。雙向的關(guān)聯(lián)可以有兩個(gè)箭頭或者沒有箭頭,單向的關(guān)聯(lián)有一個(gè)箭頭。【代碼體現(xiàn)】:成員變量【箭頭及指向】:帶普通箭頭(或?qū)嵭娜切渭^)的實(shí)心線,指向被擁有者 上圖中,老師與學(xué)生是雙向關(guān)聯(lián),老師有多名學(xué)生,學(xué)生也可能有多名

18、老師。但學(xué)生與某課程間的關(guān)系為單向關(guān)聯(lián),一名學(xué)生可能要上多門課程,課程是個(gè)抽象的東西他不擁有學(xué)生。4. 聚合(Aggregation)【聚合關(guān)系】:是整體與部分的關(guān)系, 且部分可以離開整體而單獨(dú)存在. 如車和輪胎是整體和部分的關(guān)系, 輪胎離開車仍然可以存在.聚合關(guān)系是關(guān)聯(lián)關(guān)系的一種,是強(qiáng)的關(guān)聯(lián)關(guān)系;關(guān)聯(lián)和聚合在語法上無法區(qū)分,必須考察具體的邏輯關(guān)系?!敬a體現(xiàn)】:成員變量【箭頭及指向】:帶空心菱形的實(shí)心線,菱形指向整體  5. 組合(Composition)【組合關(guān)系】:是整體與部分的關(guān)系, 但部分不能離開整體而單獨(dú)存在. 如公司和部門是整體和部分的關(guān)系, 沒有公司就不存在部門.       組合關(guān)系是關(guān)聯(lián)關(guān)系的一種,是比聚合關(guān)系還要強(qiáng)的關(guān)系,它要求普通的聚合關(guān)系中代表整體的對(duì)象負(fù)責(zé)代表部分的對(duì)象的生命周期【代碼體現(xiàn)】:成員變量【箭頭及指向】:帶實(shí)心菱形的實(shí)線,菱形指向整體  6. 依賴(Dependency)【依賴關(guān)系】:是一種使用的關(guān)系,  即一個(gè)類的實(shí)現(xiàn)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論