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

下載本文檔

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

文檔簡介

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

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

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

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

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

6、( 2)模型能夠規(guī)約系統(tǒng)的結(jié)構(gòu)或行為。( 3)模型給出了指導(dǎo)構(gòu)造系統(tǒng)的模板。( 4)模型對做出的決策進(jìn)行文檔化。建模并不只是針對大的系統(tǒng)。甚至像狗窩那樣的軟件也能從一些建模中受益。然而,可以明確地講,系統(tǒng)越大、越復(fù)雜,建模的重要性就越大,一個很簡單的原因是:因為不能完整地理解一個復(fù)雜的系統(tǒng),所以要對它建模。人對復(fù)雜問題的理解能力是有限的。通過建模, 縮小所研究問題的范圍,一次只著重研究它的一個方面, 即把一個困難問題劃分成一系列能夠解決的小問題;解決了這些小問題也就解決了這個難題。此外, 通過建??梢栽鰪?qiáng)人的智力。一個適當(dāng)選擇的模型可以使建模人員在較高的抽象層次上工作。每個項目都能從一些建模中

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

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

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

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

11、模型還可作為測試階段的依據(jù)。系統(tǒng)通常需要經(jīng)過單元測試、集成測試、系統(tǒng)測試和驗收測試。不同的測試小組使用不同的UML 圖作為測試依據(jù):單元測試使用類圖和類規(guī)格說明; 集成測試使用部件圖和合作圖;系統(tǒng)測試使用用例圖來驗證系統(tǒng)的行為;驗收測試由用戶進(jì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ā),定義了用例圖、類圖、對象圖、狀態(tài)圖、活動圖、序列圖、協(xié)作圖、構(gòu)件圖、部署圖等9 種圖,按其特點可分成五大

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

13、,確切的說,是一種靜態(tài)模型類型。3、對象圖與類圖極為相似, 它是類圖的實例,對象圖顯示類的多個對象實例, 而不是實際的類。它描述的不是類之間的關(guān)系,而是對象之間的關(guān)系。4、活動圖.描述用例要求所要進(jìn)行的活動, 以及活動間的約束關(guān)系, 有利于識別并行活動。 能夠演示出系統(tǒng)中哪些地方存在功能, 以及這些功能和系統(tǒng)中其他組件的功能如何共同滿足前面使用用例圖建模的商務(wù)需求。5、狀態(tài)圖描述類的對象所有可能的狀態(tài),以及事件發(fā)生時狀態(tài)的轉(zhuǎn)移條件。可以捕獲對象、 子系統(tǒng)和系統(tǒng)的生命周期。他們可以告知一個對象可以擁有的狀態(tài),并且事件(如消息的接收、時間的流逝、錯誤、條件變?yōu)檎娴?會怎么隨著時間的推移來影響這些狀

14、態(tài)。一個狀態(tài)圖應(yīng)該連接到所有具有清晰的可標(biāo)識狀態(tài)和復(fù)雜行為的類;該圖可以確定類的行為,以及該行為如何根據(jù)當(dāng)前的狀態(tài)變化,也可以展示哪些事件將會改變類的對象的狀態(tài)。狀態(tài)圖是對類圖的補(bǔ)充。6、序列圖(順序圖)序列圖是用來顯示你的參與者如何以一系列順序的步驟與系統(tǒng)的對象交互的模型。順序圖可以用來展示對象之間是如何進(jìn)行交互的。順序圖將顯示的重點放在消息序列上,即強(qiáng)調(diào)消息是如何在對象之間被發(fā)送和接收的。7、協(xié)作圖和序列圖相似, 顯示對象間的動態(tài)合作關(guān)系??梢钥闯墒穷悎D和順序圖的交集,協(xié)作圖建模對象或者角色,以及它們彼此之間是如何通信的。如果強(qiáng)調(diào)時間和順序,則使用序列圖;如果強(qiáng)調(diào)上下級關(guān)系,則選擇協(xié)作圖;

15、這兩種圖合稱為交互圖。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)件時軟件單個組成部分,它可以是一個文件,產(chǎn)品、可執(zhí)行文件和腳本等。9、部署圖(配置圖)是用來建模系統(tǒng)的物理部署。 例如計算機(jī)和設(shè)備, 以及它們之間是如何連接的。 部署圖的使用者是開發(fā)人員、系統(tǒng)集成人員和測試人員。以上圖形中由于類圖之間的關(guān)系相對比較復(fù)雜,所以對于類圖之間的關(guān)系進(jìn)行一個大致的講解。其關(guān)系種類有關(guān)聯(lián)、聚合、組合、泛化、依賴。1. 泛化( Generalization )【泛化關(guān)系】 :是一種繼承關(guān)

16、系 , 表示一般與特殊的關(guān)系 , 它指定了子類如何特化父類的所有特征和行為 . 例如:老虎是動物的一種 , 即有老虎的特性也有動物的共性 .【箭頭指向】:帶三角箭頭的實線,箭頭指向父類2. 實現(xiàn)( Realization ).【實現(xiàn)關(guān)系】:是一種類與接口的關(guān)系, 表示類是接口所有特征和行為的實現(xiàn).【箭頭指向】:帶三角箭頭的虛線,箭頭指向接口3. 關(guān)聯(lián)( Association)【關(guān)聯(lián)關(guān)系】:是一種擁有的關(guān)系 , 它使一個類知道另一個類的屬性和方法;如:老師與學(xué)生,丈夫與妻子關(guān)聯(lián)可以是雙向的, 也可以是單向的。 雙向的關(guān)聯(lián)可以有兩個箭頭或者沒有箭頭, 單向的關(guān)聯(lián)有一個箭頭。【代碼體現(xiàn)】:成員變量

17、【箭頭及指向】:帶普通箭頭(或?qū)嵭娜切渭^)的實心線,指向被擁有者上圖中,老師與學(xué)生是雙向關(guān)聯(lián),老師有多名學(xué)生,學(xué)生也可能有多名老師。但學(xué)生與某課程間的關(guān)系為單向關(guān)聯(lián),一名學(xué)生可能要上多門課程,課程是個抽象的東西他不擁有學(xué)生。 4. 聚合( Aggregation )【聚合關(guān)系】 :是整體與部分的關(guān)系 , 且部分可以離開整體而單獨存在 . 如車和輪胎是整體和部分的關(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)】:成員變量【箭頭及指向】:帶空心菱形的實心線,菱形指向整體.5. 組合 (Compo

18、sition)【組合關(guān)系】 :是整體與部分的關(guān)系 , 但部分不能離開整體而單獨存在 . 如公司和部門是整體和部分的關(guān)系 , 沒有公司就不存在部門 .組合關(guān)系是關(guān)聯(lián)關(guān)系的一種,是比聚合關(guān)系還要強(qiáng)的關(guān)系,它要求普通的聚合關(guān)系中代表整體的對象負(fù)責(zé)代表部分的對象的生命周期【代碼體現(xiàn)】:成員變量【箭頭及指向】:帶實心菱形的實線,菱形指向整體6. 依賴 (Dependency)【依賴關(guān)系】:是一種使用的關(guān)系, 即一個類的實現(xiàn)需要另一個類的協(xié)助, 所以要盡量不使用雙向的互相依賴.【代碼表現(xiàn)】:局部變量、方法的參數(shù)或者對靜態(tài)方法的調(diào)用【箭頭及指向】:帶箭頭的虛線,指向被使用者.各種關(guān)系的強(qiáng)弱順序:泛化=實現(xiàn)組合聚合關(guān)聯(lián)依賴UML 圖形實例由于開發(fā)的項目復(fù)雜程度不一,所以在真正的開發(fā)上以上九類圖形并不是都會用上,一般情況下使用頻率最高的就三種圖形:用例圖、類圖、時序圖。接下來實例也只列出此三種圖形實例1類圖:2.用例圖 :.3.時序圖 :.UML 建模工具

溫馨提示

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

評論

0/150

提交評論