《軟件工程》09-2UML基礎(chǔ)_第1頁
《軟件工程》09-2UML基礎(chǔ)_第2頁
《軟件工程》09-2UML基礎(chǔ)_第3頁
《軟件工程》09-2UML基礎(chǔ)_第4頁
《軟件工程》09-2UML基礎(chǔ)_第5頁
已閱讀5頁,還剩95頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

軟件工程2022/12/102統(tǒng)一建模語言UML面向?qū)ο蠓治雠c設(shè)計方法的發(fā)展在20世紀(jì)80年代末到90年代中出現(xiàn)了一個高潮,統(tǒng)一建模語言UML就是這個高潮的產(chǎn)物。UML是由面向?qū)ο蠓椒I(lǐng)域的三位著名專家GradyBooch,JamesRumbaugh和IvarJacobson提出的,統(tǒng)一了表示方法,融入了眾多優(yōu)秀的軟件方法和思想,把面向?qū)ο蠓椒ㄌ岣叩揭粋€嶄新的高度,標(biāo)志著面向?qū)ο蠼7椒ㄟM(jìn)入了第三代。2022/12/103UML得到世界知名公司的使用和支持,并于1997年11月17日被OMG組織采納,成為面向?qū)ο蠼?biāo)準(zhǔn)語言。OMG把UML作為公共可得到的規(guī)格說明提交給國際標(biāo)準(zhǔn)化組織進(jìn)行國際標(biāo)準(zhǔn)化,這一進(jìn)程在近期完成后UML將最終成為信息技術(shù)的正式國際標(biāo)準(zhǔn)。UML已經(jīng)迅速成長為一個事實上的工業(yè)標(biāo)準(zhǔn)。不論在計算機(jī)學(xué)術(shù)界、軟件產(chǎn)業(yè)界還是在商業(yè)界,UML已經(jīng)逐漸成為人們?yōu)楦鞣N系統(tǒng)建模、描述系統(tǒng)體系結(jié)構(gòu)、商業(yè)體系結(jié)構(gòu)和商業(yè)過程時使用的統(tǒng)一工具,而且在實踐過程中人們還在不斷擴(kuò)展它的應(yīng)用領(lǐng)域。2022/12/104概述靜態(tài)建模機(jī)制動態(tài)建模機(jī)制描述物理架構(gòu)的機(jī)制使用和擴(kuò)展UML小結(jié)2022/12/105概述UML的產(chǎn)生和發(fā)展UML的結(jié)構(gòu)UML是一種標(biāo)準(zhǔn)的圖形化(即可視化)建模語言,由圖和元模型組成。圖是UML的語法,而元模型給出圖的含義,是UML的語義。UML的語義UML的語義是定義在一個四層(四個抽象級別)建模概念框架中的,這四層分別是:2022/12/106元元模型(meta_metamodel)層由UML最基本的元素“事物(thing)”組成,代表要定義的所有事物。元模型(metamodel)層由UML基本元素組成,包括面向?qū)ο蠛兔嫦驑?gòu)件的概念。這一層的每個概念都是元元模型中“事物”概念的實例(通過版類化)。2022/12/107模型(model)層由UML模型組成,這一層的每個概念都是元模型層中概念的實例(通過版類化)。這一層的模型通常稱為類模型或類型模型。用戶模型(usermodel)層由UML模型的例子組成,這一層中的每個概念都是模型層的一個實例(通過分類),也是元模型層模型的一個實例(通過版類化)。這一層的模型通常稱為對象模型或?qū)嵗P汀?022/12/108UML的表示法UML由視圖(view)、圖(diagram)、模型元素(modelelement)和通用機(jī)制(generalmechanism)等幾個部分組成。視圖為了完整地描述一個系統(tǒng),往往需要描述該系統(tǒng)的許多方面。用視圖可以表示被建模系統(tǒng)的各個方面,即,從不同目的出發(fā)可以為系統(tǒng)建立多個模型,這些模型都描述同一個系統(tǒng),只是描述的角度不同,它們之間具有一致性。圖圖是用來表達(dá)一個視圖的內(nèi)容的,通常,一個視圖由多張圖組成。UML語言共定義了9種不同的圖,把它們有機(jī)地結(jié)合起來就可以描述系統(tǒng)的所有視圖。2022/12/109模型元素可以在圖中使用的概念(例如,用例、類、對象、消息和關(guān)系),統(tǒng)稱為模型元素。模型元素在圖中用相應(yīng)的視圖元素(圖形符號)表示。一個模型元素可以用在多個不同的圖中,不管怎樣使用,它總是具有相同的含義和相同的符號表示。通用機(jī)制UML語言利用通用機(jī)制為圖附加一些額外的信息,比如,可以在“筆記”中書寫注釋,或用“標(biāo)簽值”說明模型元素的性質(zhì)等。此外,它還提供擴(kuò)展機(jī)制(例如,版類、標(biāo)簽值、約束),使UML能夠適應(yīng)一種特殊方法或滿足某些特殊用戶的需要。2022/12/1010UML的圖用例圖(use-casediagram)用例是對系統(tǒng)提供的功能(即系統(tǒng)的具體用法)的描述。用例圖從用戶的角度描述系統(tǒng)功能,并指出各個功能的操作者。用例圖定義了系統(tǒng)的功能需求。2022/12/1011靜態(tài)圖(staticdiagram)這類圖描述系統(tǒng)的靜態(tài)結(jié)構(gòu),屬于這類圖的有類圖(classdiagram)和對象圖(objectdiagram)。類圖不僅定義系統(tǒng)中的類,表示類與類之間的關(guān)系(例如,關(guān)聯(lián)、依賴、泛化和細(xì)化等關(guān)系),也表示類的內(nèi)部結(jié)構(gòu)(類的屬性和操作)。類圖描述的是一種靜態(tài)關(guān)系,在系統(tǒng)的整個生命期內(nèi)都是有效的。2022/12/1012對象圖是類圖的實例,它使用幾乎與類圖完全相同的圖示符號。兩者之間的差別在于,對象圖表示的是類的多個對象實例,而不是實際的類。由于對象有生命周期,因此對象圖只能在系統(tǒng)的某個時間段內(nèi)存在。一般說來,對象圖沒有類圖重要,它主要用來幫助對類圖的理解,也可用在協(xié)作圖中,表示一組對象之間的動態(tài)協(xié)作關(guān)系。2022/12/1013行為圖(behaviordiagram)這類圖描述系統(tǒng)的動態(tài)行為和組成系統(tǒng)的對象間的交互關(guān)系,包括狀態(tài)圖(statediagram)和活動圖(activitydiagram)兩種圖形。狀態(tài)圖描述類的對象可能具有的所有狀態(tài),以及引起狀態(tài)變化的事件,狀態(tài)變化稱作狀態(tài)轉(zhuǎn)換。通常,狀態(tài)圖是對類圖的補(bǔ)充。2022/12/1014實際使用時,并不需要為每個類都畫狀態(tài)圖,僅需要為那些有多個狀態(tài),且其行為在不同狀態(tài)有所不同的類畫狀態(tài)圖。活動圖描述為滿足用例要求而進(jìn)行的動作以及動作間的關(guān)系。活動圖是狀態(tài)圖的一個變種,它是另一種描述交互的方法。2022/12/1015交互圖(interactivediagram)這類圖描述對象間的交互關(guān)系,包括順序圖(sequencediagram)和協(xié)作圖(collaborationdiagram)兩種圖形。順序圖顯示若干個對象間的動態(tài)協(xié)作關(guān)系,它強(qiáng)調(diào)對象之間發(fā)送消息的先后次序,描述對象之間的交互過程。協(xié)作圖與順序圖類似,也描述對象間的動態(tài)協(xié)作關(guān)系。除了顯示對象間發(fā)送的消息之外,協(xié)作圖還顯示對象及它們之間的關(guān)系(稱為上下文相關(guān))。2022/12/1016由于順序圖和協(xié)作圖都描述對象間的交互關(guān)系,所以建模者可以選擇其中一種表示對象間的協(xié)作關(guān)系:如果需要強(qiáng)調(diào)時間和順序,最好選用順序圖;如果需要強(qiáng)調(diào)上下文相關(guān),最好選擇協(xié)作圖。2022/12/1017實現(xiàn)圖(implementationdiagram)這類圖提供關(guān)于系統(tǒng)實現(xiàn)方面的信息,構(gòu)件圖(componentdiagram)和配置圖(deploymentdiagram)屬于這類圖。構(gòu)件圖描述代碼構(gòu)件的物理結(jié)構(gòu)及各個構(gòu)件之間的依賴關(guān)系。構(gòu)件可能是源代碼、二進(jìn)制文件或可執(zhí)行文件。使用構(gòu)件圖有助于分析和理解構(gòu)件之間的相互影響。2022/12/1018配置圖定義系統(tǒng)中軟件和硬件的物理體系結(jié)構(gòu)。通常,配置圖中顯示實際的計算機(jī)和設(shè)備(用節(jié)點(diǎn)表示),以及各個節(jié)點(diǎn)之間的連接關(guān)系,也可以顯示連接的類型及構(gòu)件之間的依賴關(guān)系。在節(jié)點(diǎn)內(nèi)部顯示可執(zhí)行的構(gòu)件和對象,以清晰地表示出哪個軟件單元運(yùn)行在哪個節(jié)點(diǎn)上。2022/12/1019UML的應(yīng)用領(lǐng)域UML是一種建模語言,是一種標(biāo)準(zhǔn)的表示方法,而不是一種完整的方法學(xué)。UML的最終用途——為不同領(lǐng)域的人提供統(tǒng)一的交流方法。UML適用于系統(tǒng)開發(fā)的全過程,它的應(yīng)用貫穿于從需求分析到系統(tǒng)建成后測試的各個階段。2022/12/1020需求分析:可以用用例來捕獲用戶的需求。描述對系統(tǒng)感興趣的外部角色及其對系統(tǒng)的功能要求(用例)。分析:分析階段主要關(guān)心問題域中的基本概念(例如,抽象、類和對象等)和機(jī)制,需要識別這些類以及它們相互間的關(guān)系,用UML的邏輯視圖和動態(tài)視圖來描述。類圖描述系統(tǒng)的靜態(tài)結(jié)構(gòu),協(xié)作圖、順序圖、活動圖和狀態(tài)圖描述系統(tǒng)的動態(tài)行為。在這個階段只為問題域的類建模,而不定義軟件系統(tǒng)的解決方案細(xì)節(jié)(例如,處理用戶接口、數(shù)據(jù)庫、通信和并行性等問題的類)。2022/12/1021設(shè)計:把分析階段的結(jié)果擴(kuò)展成技術(shù)解決方案,加入新的類來定義軟件系統(tǒng)的技術(shù)方案細(xì)節(jié)。設(shè)計階段用和分析階段類似的方式使用UML。構(gòu)造(編碼):這個階段的任務(wù)是把來自設(shè)計階段的類轉(zhuǎn)換成某種面向?qū)ο蟪绦蛟O(shè)計語言的代碼。2022/12/1022測試:對系統(tǒng)的測試通常分為單元測試、集成測試、系統(tǒng)測試和驗收測試等幾個不同步驟。UML模型可作為測試階段的依據(jù),不同測試小組使用不同的UML圖作為工作的依據(jù):單元測試使用類圖和類規(guī)格說明;集成測試使用構(gòu)件圖和協(xié)作圖;系統(tǒng)測試使用用例圖來驗證系統(tǒng)的行為;驗收測試由用戶進(jìn)行,用與系統(tǒng)測試類似的方法,驗證系統(tǒng)是否滿足在分析階段確定的所有需求。2022/12/1023靜態(tài)建模機(jī)制任何建模語言都以靜態(tài)建模機(jī)制為基礎(chǔ),UML也不例外。UML的靜態(tài)建模機(jī)制包括用例圖、類圖、對象圖和包等。用例圖2022/12/1024用例模型用例模型描述的是外部執(zhí)行者(actor)所理解的系統(tǒng)功能。用例模型用于需求分析階段,需要系統(tǒng)開發(fā)者和用戶反復(fù)討論,描述了開發(fā)者和用戶對需求規(guī)格達(dá)成的共識。首先,描述了待開發(fā)系統(tǒng)的功能需求;其次,把系統(tǒng)看作黑盒,從外部執(zhí)行者的角度來理解系統(tǒng);第三,驅(qū)動了需求分析之后各階段的開發(fā)工作,不僅在開發(fā)過程中保證了系統(tǒng)所有功能的實現(xiàn),而且被用于驗證和檢測所開發(fā)的系統(tǒng),從而影響到開發(fā)工作的各個階段和UML的各個模型。在UML中,一個用例模型由若干個用例圖來描述,用例圖的主要元素是用例和執(zhí)行者。2022/12/1025用例一個用例是用戶與計算機(jī)系統(tǒng)之間的一次典型的交互作用,代表的是系統(tǒng)的一個完整的功能。UML把用例定義成系統(tǒng)執(zhí)行的一系列動作,動作的結(jié)果能被外部執(zhí)行者察覺到。在UML用例圖中,用例表示為一個橢圓。如“售貨”、“供貨”和“取貨款”都是典型的用例。用例有以下特點(diǎn)。用例代表某些用戶可見的功能,實現(xiàn)一個具體的用戶目標(biāo)。用例由執(zhí)行者激活,并提供確切的值給執(zhí)行者。用例可大可小,但它必須是對一個具體的用戶目標(biāo)實現(xiàn)的完整描述。2022/12/1026自動售貨機(jī)系統(tǒng)用例圖2022/12/1027執(zhí)行者執(zhí)行者是與系統(tǒng)交互的人或物,它代表外部實體,例如,用戶、硬件設(shè)備或與本系統(tǒng)交互的另一個軟件系統(tǒng)。使用用例并與系統(tǒng)交互的任何人或物都是執(zhí)行者。實踐表明,執(zhí)行者對確定用例是非常有用的。面對一個大型、復(fù)雜的系統(tǒng),要列出用例清單往往很困難,這時可以先列出執(zhí)行者清單,再針對每個執(zhí)行者列出它的用例。這樣做可以使問題變得容易很多。2022/12/1028用例之間的關(guān)系用例間可以有擴(kuò)展、使用和組合三種關(guān)系。擴(kuò)展和使用是繼承關(guān)系(即泛化關(guān)系)的兩種不同形式。組合則是把相關(guān)用例打成包(參見15.2.2節(jié)),當(dāng)作一個整體看待。擴(kuò)展關(guān)系向一個用例中加入一些新的動作后構(gòu)成了另一個用例,這兩個用例之間的關(guān)系就是擴(kuò)展關(guān)系,后者通過繼承前者的一些行為得來,通常把后者稱為擴(kuò)展用例。使用關(guān)系當(dāng)一個用例使用另一個用例時,這兩個用例之間就構(gòu)成了使用關(guān)系。2022/12/1029含擴(kuò)展和使用關(guān)系的用例圖2022/12/1030建立用例模型幾乎在任何情況下都需要使用用例,通過用例可以獲取用戶需求,規(guī)劃和控制項目。獲取用例是需求分析階段的主要工作之一,而且是首先要做的工作。大部分用例將在項目的需求分析階段產(chǎn)生,并且隨著開發(fā)工作的深入還會發(fā)現(xiàn)更多用例,這些新發(fā)現(xiàn)的用例都應(yīng)及時補(bǔ)充進(jìn)已有的用例集中。用例集中的每個用例都是對系統(tǒng)的一個潛在的需求。2022/12/1031發(fā)現(xiàn)執(zhí)行者為獲取用例首先要找出系統(tǒng)的執(zhí)行者,可以通過請系統(tǒng)的用戶回答一些問題的辦法來發(fā)現(xiàn)執(zhí)行者。獲取用例事實上,從識別執(zhí)行者起獲取用例的過程就已經(jīng)開始了。一旦識別出了執(zhí)行者,就可以對每個執(zhí)行者提出問題以獲取用例。2022/12/1032類圖和對象圖類圖類圖描述類和類與類之間的靜態(tài)關(guān)系,它是從靜態(tài)角度表示系統(tǒng)的,因此類圖屬于一種靜態(tài)模型。類圖是構(gòu)建其他圖的基礎(chǔ),沒有類圖就沒有狀態(tài)圖、協(xié)作圖等其他圖,也就無法表示系統(tǒng)其他方面的特性。

定義類類的屬性UML描述屬性的語法格式為: 可見性屬性名:類型名=初值{性質(zhì)串} 其中,屬性名和類型名必須有,其他部分根據(jù)需要可有可無。2022/12/1033類的圖形符號2022/12/1034屬性的可見性(即可訪問性)通常分為三種:公有的(public)、私有的(private)和保護(hù)的(protected),分別用加號(+)、減號(-)和井號(#)表示。如果在屬性名前面沒有標(biāo)注任何符號,則表示該屬性的可見性尚未定義。注意,這里沒有缺省的可見性。屬性名和類型名之間用冒號(:)分隔。類型名表示該屬性的數(shù)據(jù)類型,它可以是基本數(shù)據(jù)類型,如整數(shù)、實數(shù)、布爾型等,也可以是用戶自定義的類型,一般說來,可用的類型由所涉及的程序設(shè)計語言決定。2022/12/1035屬性的缺省值用初值表示,類型名和初值之間用等號隔開。最后是用花括號括起來的性質(zhì)串,列出該屬性所有可能的取值。枚舉類型的屬性經(jīng)常使用性質(zhì)串,串中每個枚舉值之間用逗號分隔。當(dāng)然,也可以用性質(zhì)串說明該屬性的其他信息,比如,約束說明{只讀}表明該屬性是只讀屬性。例如,“發(fā)貨單”類的屬性“管理員”,在UML類圖中像下面那樣描述:

-管理員:String=“未定”2022/12/1036類的操作UML描述操作的語法格式為:可見性操作名(參數(shù)表):返回值類型{性質(zhì)串}其中,可見性和操作名是不可缺少的。操作的可見性通常分為公有(用加號表示)和私有(用減號表示)兩種,其含義與屬性可見性的含義相同。參數(shù)表由若干個參數(shù)(用逗號隔開)構(gòu)成。參數(shù)的語法格式為:參數(shù)名:參數(shù)類型名=缺省值2022/12/1037關(guān)系如前所述,類圖由類和它們之間的關(guān)系組成。定義了類之后,就可以定義類之間的各種關(guān)系了。類與類之間通常有關(guān)聯(lián)、泛化(繼承)、依賴和細(xì)化等四種關(guān)系。關(guān)聯(lián)關(guān)系①普通關(guān)聯(lián)普通關(guān)聯(lián)是最常見的關(guān)聯(lián)關(guān)系,只要在類與類之間存在連接關(guān)系就可以用普通關(guān)聯(lián)表示。普通關(guān)聯(lián)的圖示符號是連接兩個類之間的直線,如圖15.4所示。如果關(guān)聯(lián)是單向的,則稱為導(dǎo)航關(guān)聯(lián),其符號是用實線箭頭連接兩個類。2022/12/1038在類圖中還可以表示關(guān)聯(lián)中的數(shù)量關(guān)系,即參與關(guān)聯(lián)的對象的個數(shù)。在UML中用重數(shù)(類似于第6章中的階)說明數(shù)量或數(shù)量范圍,例如,0··1表示0到1個對象0··*或*表示0到多個對象1··15表示1到15個對象3表示3個對象如果圖中未明確標(biāo)出關(guān)聯(lián)的重數(shù),則缺省重數(shù)是1。2022/12/1039普通關(guān)聯(lián)之例2022/12/1040導(dǎo)航關(guān)聯(lián)之例2022/12/1041②關(guān)聯(lián)的角色在任何關(guān)聯(lián)中都會涉及到參與此關(guān)聯(lián)的對象所扮演的角色(即起的作用),在某些情況下顯式標(biāo)明角色名有助于別人理解類圖。如果沒有顯式標(biāo)出角色名,意味用類名作為角色名。③限定關(guān)聯(lián)④關(guān)聯(lián)類為了說明關(guān)聯(lián)的性質(zhì)可能需要一些附加信息。可以引入一個關(guān)聯(lián)類來記錄這些信息。關(guān)聯(lián)中的每個連接與關(guān)聯(lián)類的一個對象相聯(lián)系。關(guān)聯(lián)類通過一條虛線與關(guān)聯(lián)連接。2022/12/1042關(guān)聯(lián)的角色2022/12/1043關(guān)聯(lián)類示例2022/12/1044⑤聚集聚集也稱為聚合,是關(guān)聯(lián)的特例。聚集表示類與類之間的關(guān)系是整體與部分的關(guān)系。如果在聚集關(guān)系中處于部分方的對象可同時參與多個處于整體方對象的構(gòu)成,則該聚集稱為共享聚集。如果部分類完全隸屬于整體類,部分與整體共存,整體不存在了部分也會隨之消失(或失去存在階值了),則該聚集稱為復(fù)合聚集(簡稱為組成)。2022/12/1045共享聚集示例2022/12/1046復(fù)合聚集示例2022/12/1047泛化關(guān)系UML中的泛化關(guān)系就是通常所說的繼承關(guān)系。具體類完全擁有通用類信息,還附加一些其他信息。UML對泛化關(guān)系要求:具體類應(yīng)與通用類完全一致,通用類具有的屬性、操作和關(guān)聯(lián),具體類也都隱含具有。具體類應(yīng)包含通用類所沒有的額外信息。允許使用通用類實例的地方,也應(yīng)能夠使用具體元素的實例(Liskov替換原則)。2022/12/1048泛化可劃分成普通泛化和受限泛化。①普通泛化②受限泛化可以給泛化關(guān)系附加約束條件,說明該泛化關(guān)系的使用方法或擴(kuò)充方法,稱為受限泛化。預(yù)定義的約束有4種:多重、不相交、完全和不完全。這些約束都是語義約束。2022/12/1049抽象類示例2022/12/1050復(fù)雜類圖示例2022/12/1051多重繼承示例2022/12/1052依賴和細(xì)化①依賴關(guān)系依賴關(guān)系描述兩個模型元素(類、用例等)之間的語義關(guān)系:其中一個模型元素是獨(dú)立的,另一個模型元素不是獨(dú)立的,它依賴于獨(dú)立的模型元素,如果獨(dú)立的模型元素改變,將影響依賴于它的元素。與關(guān)聯(lián)關(guān)系區(qū)別為對象間表現(xiàn)非固定關(guān)系,如自行車與打氣筒的關(guān)系。2022/12/1053依賴關(guān)系2022/12/1054關(guān)聯(lián)關(guān)系2022/12/1055②細(xì)化關(guān)系當(dāng)對同一事物在不同抽象層次上描述時,這些描述之間具有細(xì)化關(guān)系。細(xì)化是UML中的術(shù)語,表示對事物更詳細(xì)一層的描述。假設(shè)兩個元素A和B描述同一個事物,它們的區(qū)別是抽象層次不同,如果B是在A的基礎(chǔ)上的更詳細(xì)的描述,則稱B細(xì)化了A,或稱A細(xì)化成了B。細(xì)化主要用于模型之間的合作,表示各開發(fā)階段不同抽象層次的模型的相關(guān)性,常用于跟蹤模型的演變。2022/12/1056細(xì)化關(guān)系的圖示2022/12/1057對象圖對象是類的實例,對象之間的連接是類之間關(guān)聯(lián)的實例,因此,對象圖可以看作是類圖的實例,能幫助人理解一個比較復(fù)雜的類圖。在UML中,對象圖與類圖具有幾乎完全相同的表示形式,主要差別是對象的名字下面要加一條下劃線。2022/12/1058對象名有下列三種表示格式:第一種格式形如:對象名:類名即對象名在前,類名在后,中間用冒號連接。第二種格式形如::類名這種格式用于尚未給對象命名的情況,注意,類名前的冒號不能省略。第三種格式形如:對象名這種格式不帶類名(即省略類名)。2022/12/1059對象圖示例2022/12/1060包包(package)是一種組合機(jī)制。模型元素通過內(nèi)在的語義關(guān)系連在一起,形成一個高內(nèi)聚、低耦合的整體就叫做包。包通常用于對模型的組織管理,因此有時又把包稱為子系統(tǒng)。包的內(nèi)容包的內(nèi)容可以是一個類圖也可以是另一個包圖。包與包之間不能共用一個相同的模型元素。包的依賴和繼承包與包之間允許建立依賴、泛化和細(xì)化等關(guān)系。2022/12/1061包圖示例2022/12/1062動態(tài)建模機(jī)制對象通過通信相互協(xié)作的方式以及系統(tǒng)中的對象在系統(tǒng)生命期中改變狀態(tài)的方式,是系統(tǒng)的動態(tài)行為。消息在UML的所有動態(tài)圖(狀態(tài)圖、順序圖、協(xié)作圖和活動圖)中,消息都表示為連接發(fā)送者和接收者的一根箭頭線,箭頭的形狀表示消息的類型,如圖所示。2022/12/1063消息的類型2022/12/1064UML定義了三種消息。簡單消息:表示簡單的控制流,它只是表示控制從一個對象傳給另一個對象,而沒有描述通信的任何細(xì)節(jié)。同步消息:表示嵌套的控制流,操作的調(diào)用是一種典型的同步消息。調(diào)用者發(fā)出消息后必須等待消息返回,只有當(dāng)處理消息的操作執(zhí)行完畢后,調(diào)用者才可以繼續(xù)執(zhí)行自己的操作。異步消息:表示異步控制流,發(fā)送者發(fā)出消息后不用等待消息處理完就可以繼續(xù)執(zhí)行自己的操作。異步消息主要用于描述實時系統(tǒng)中的并發(fā)行為。把簡單消息和同步消息合并成一個消息(見圖),這樣的消息意味著操作調(diào)用一旦完成就立即返回。2022/12/1065狀態(tài)圖狀態(tài)圖描述一個特定對象的所有可能的狀態(tài)以及引起狀態(tài)轉(zhuǎn)換的事件。狀態(tài)圖表示單個對象在其生命期中的行為。一個狀態(tài)圖包括一系列狀態(tài)、事件以及狀態(tài)之間的轉(zhuǎn)移。狀態(tài)在狀態(tài)圖中定義的狀態(tài)可能有:初態(tài)(初始狀態(tài))、終態(tài)(最終狀態(tài))、中間狀態(tài)和復(fù)合狀態(tài)。UML中表示初態(tài)和終態(tài)的符號與第6章所用的符號相同。在一張狀態(tài)圖中只能有一個初態(tài),而終態(tài)則可以有多個。2022/12/1066第一部分為狀態(tài)的名稱;第二部分為狀態(tài)變量的名字和值,這部分是可選的;第三部分是活動表,這部分也是可選的。在活動表中經(jīng)常使用下述三種標(biāo)準(zhǔn)事件:entry(進(jìn)入)、exit(退出)和do(做)。entry事件指定進(jìn)入該狀態(tài)的動作exit事件指定退出該狀態(tài)的動作do事件則指定在該狀態(tài)下的動作,這些標(biāo)準(zhǔn)事件一般不做它用。2022/12/1067活動部分的語法如下:事件名(參數(shù)表)/動作表達(dá)式其中,“事件名”可以是任何事件的名稱,包括上述三種標(biāo)準(zhǔn)事件;需要時可為事件指定參數(shù)表,其語法格式與類的操作的參數(shù)表語法格式相似;動作表達(dá)式指定應(yīng)做的動作。2022/12/1068狀態(tài)轉(zhuǎn)換狀態(tài)圖中兩個狀態(tài)之間帶箭頭的連線稱為狀態(tài)轉(zhuǎn)換。狀態(tài)的變遷通常是由事件觸發(fā)的,在這種情況下應(yīng)在表示狀態(tài)轉(zhuǎn)換的箭頭線上標(biāo)出觸發(fā)轉(zhuǎn)換的事件表達(dá)式;如果在箭頭線上未標(biāo)明事件,則表示在源狀態(tài)的內(nèi)部活動執(zhí)行完之后自動觸發(fā)轉(zhuǎn)換。事件表達(dá)式的語法如下:事件說明[守衛(wèi)條件]/動作表達(dá)式∧發(fā)送子句2022/12/1069其中,事件說明的語法為:事件名(參數(shù)表)。守衛(wèi)條件是一個布爾表達(dá)式。如果同時使用守衛(wèi)條件和事件說明,則當(dāng)且僅當(dāng)事件發(fā)生且布爾表達(dá)式成立時,狀態(tài)轉(zhuǎn)換才發(fā)生。如果只有守衛(wèi)條件沒有事件說明,則只要守衛(wèi)條件為真狀態(tài)轉(zhuǎn)換就發(fā)生。動作表達(dá)式是一個過程表達(dá)式,當(dāng)狀態(tài)轉(zhuǎn)換開始時執(zhí)行該表達(dá)式。發(fā)送子句是動作的特例,它被用來在狀態(tài)轉(zhuǎn)換期間發(fā)送消息。2022/12/1070電梯的狀態(tài)圖2022/12/1071順序圖順序圖描述對象之間的動態(tài)交互關(guān)系,著重表現(xiàn)對象間消息傳遞的時間順序。順序圖有兩個坐標(biāo)軸:縱坐標(biāo)軸表示時間,橫坐標(biāo)軸表示不同的對象。順序圖中的對象用一個矩形框表示,框內(nèi)標(biāo)有對象名(對象名的表示格式與對象圖中相同)。從表示對象的矩形框向下的垂直虛線是對象的“生命線”,用于表示在某段時間內(nèi)該對象是存在的。2022/12/1072對象間的通信用對象生命線之間的水平消息線來表示,消息箭頭的形狀表明消息的類型(同步、異步或簡單)。當(dāng)收到消息時,接收對象立即開始執(zhí)行活動,即對象被激活了。激活用對象生命線上的細(xì)長矩形框表示。消息通常用消息名和參數(shù)表來標(biāo)識。消息還可以帶有條件表達(dá)式,用以表示分支或決定是否發(fā)送消息。如果用條件表達(dá)式表示分支,則會有若干個互斥的箭頭,也就是說,在某一時刻僅可發(fā)送分支中的一個消息。2022/12/1073順序圖2022/12/1074協(xié)作圖協(xié)作圖用于描述相互協(xié)作的對象間的交互關(guān)系和鏈接關(guān)系(鏈接是關(guān)聯(lián)的實例)。順序圖和協(xié)作圖都描述對象間的交互關(guān)系,但順序圖著重表現(xiàn)交互的時間順序,協(xié)作圖則著重表現(xiàn)交互對象的靜態(tài)鏈接關(guān)系。協(xié)作圖中對象的圖示與順序圖中一樣。如果一個對象在消息交互中被創(chuàng)建,則在對象名之后標(biāo)以{new},類似地,如果一個對象在交互期間被刪除,則在對象名之后標(biāo)以{destroy}。2022/12/1075對象間的鏈接關(guān)系類似于類圖中的關(guān)聯(lián)(但沒有重數(shù)標(biāo)志)。通過在對象間的鏈接上標(biāo)注帶有消息標(biāo)簽的消息,來表示對象間的消息傳遞。協(xié)作圖從初始化整個交互過程的消息開始。2022/12/1076書寫消息標(biāo)簽的語法規(guī)則如下:前綴[守衛(wèi)條件]序列表達(dá)式返回值:=消息說明前綴前綴的語法為:序列號,…/。前綴是用于同步線程或路徑的表達(dá)式,意思是在發(fā)送當(dāng)前消息之前應(yīng)該把指定序列號的消息處理完。若有多個序列號則用逗號隔開。最后用斜線標(biāo)志前綴的結(jié)束。消息標(biāo)簽中可以沒有前綴。守衛(wèi)條件守衛(wèi)條件的語法與狀態(tài)圖中的相同。2022/12/1077序列表達(dá)式常用的序列表達(dá)式的語法如下:序列號recurrence:序列號用于指定消息發(fā)送的順序。在協(xié)作圖中沒有時間軸,因此把消息按順序編號:消息1總是消息序列的開始消息,消息1.1是處理消息1的過程中的第1條嵌套消息,依此類推。recurrence語法為:*[循環(huán)子句]或[條件子句]

循環(huán)子句用于指定循環(huán)的條件,而條件子句通常用于表示分支條件。序列表達(dá)式用冒號標(biāo)志結(jié)束。在序列表達(dá)式中必須有序列號,而recurrence部分是可選的。2022/12/1078消息說明消息說明由消息名和參數(shù)表組成,其語法與狀態(tài)圖中事件說明的語法相同。返回值表示操作調(diào)用(即消息)的結(jié)果。決定選用哪種圖的原則是,當(dāng)對象及其鏈接有利于理解交互時選擇協(xié)作圖,當(dāng)只需了解時間順序時選擇順序圖。2022/12/1079電梯的協(xié)作圖2022/12/1080活動圖活動圖描述動作及動作之間的關(guān)系。活動圖是另一種描述交互的方式,描述采取何種動作,動作的結(jié)果是什么(動作狀態(tài)改變),何時發(fā)生(動作序列),以及在何處發(fā)生(泳道)。2022/12/1081活動圖示例2022/12/1082描述物理架構(gòu)的機(jī)制系統(tǒng)架構(gòu)(或稱為體系結(jié)構(gòu))是對構(gòu)成系統(tǒng)的各個部分的框架性描述。在UML中,架構(gòu)的定義是:架構(gòu)是系統(tǒng)的組織結(jié)構(gòu)。可以遞歸地把架構(gòu)分解成:通過接口交互的部分,連接各個部分的關(guān)系,組裝各個部分的約束。2022/12/1083邏輯架構(gòu)和物理架構(gòu)系統(tǒng)架構(gòu)分為邏輯架構(gòu)和物理架構(gòu)兩大類。邏輯架構(gòu)完整地描述系統(tǒng)的功能,把功能分配到系統(tǒng)的各個部分,詳細(xì)說明它們是如何工作的。在UML中,用于描述邏輯架構(gòu)的圖有:用例圖、類圖、對象圖、狀態(tài)圖、活動圖、協(xié)作圖和順序圖。物理架構(gòu)關(guān)心的是實現(xiàn),因此可以用實現(xiàn)圖建模,構(gòu)件圖顯示代碼本身的靜態(tài)結(jié)構(gòu),配置圖顯示系統(tǒng)運(yùn)行時的結(jié)構(gòu)。2022/12/1084構(gòu)件圖構(gòu)件圖描述軟件構(gòu)件及構(gòu)件之間的依賴關(guān)系,顯示代碼的靜態(tài)結(jié)構(gòu)。構(gòu)件是邏輯架構(gòu)中定義的概念和功能(例如,類、對象及它們之間的關(guān)系)在物理架構(gòu)中的實現(xiàn)。典型情況下,構(gòu)件是開發(fā)環(huán)境中的實現(xiàn)文件。軟件構(gòu)件可以是:源構(gòu)件:源構(gòu)件僅在編譯時才有意義。典型情況下,它是實現(xiàn)一個或多個類的源代碼文件。2022/12/1085二進(jìn)制構(gòu)件:典型情況下,二進(jìn)制構(gòu)件是對象代碼,它是源構(gòu)件的編譯結(jié)果。它可以是一個對象代碼文件,一個靜態(tài)庫文件或一個動態(tài)庫文件。二進(jìn)制構(gòu)件僅在鏈接時有意義,如果二進(jìn)制構(gòu)件是動態(tài)庫文件,則在運(yùn)行時有意義(動態(tài)庫只在運(yùn)行時由可執(zhí)行的構(gòu)件裝入)。可執(zhí)行構(gòu)件:可執(zhí)行構(gòu)件是一個可執(zhí)行的程序文件,它是鏈接所有二進(jìn)制構(gòu)件所得到的結(jié)果。一個可執(zhí)行構(gòu)件代表在處理器(計算機(jī))上運(yùn)行的可執(zhí)行單元。2022/12/1086構(gòu)件是類型,僅僅可執(zhí)行構(gòu)件才可能有實例(當(dāng)它們代表的程序在處理器上執(zhí)行時)。構(gòu)件圖只把構(gòu)件顯示成類型顯示構(gòu)件的實例必須使用配置圖。2022/12/1087構(gòu)件圖示例2022/12/1088配置圖配置圖描述處理器、硬件設(shè)備和軟件構(gòu)件在運(yùn)行時的架構(gòu),它顯示系統(tǒng)硬件的物理拓?fù)浣Y(jié)構(gòu)及在此結(jié)構(gòu)上執(zhí)行的軟件。使用配置圖可以顯示硬件節(jié)點(diǎn)的拓?fù)浣Y(jié)構(gòu)和通信路徑、節(jié)點(diǎn)上運(yùn)行的軟件構(gòu)件、軟件構(gòu)件包含的邏輯單元(對象、類)等。配置圖常用于幫助人理解分布式系統(tǒng)。2022/12/1089節(jié)點(diǎn)和連接節(jié)點(diǎn)(node)代表一個物理設(shè)備及在其上運(yùn)行的軟件系統(tǒng)。節(jié)點(diǎn)間的連線表示系統(tǒng)之間進(jìn)行交互的通信線路,在UML中稱為連接。通信類型用版類表示,寫在表示連接的線旁,以指定所用的通信協(xié)議或網(wǎng)絡(luò)類型。構(gòu)件和接口在配置圖中,構(gòu)件代表可執(zhí)行的物理代碼模塊(可執(zhí)行構(gòu)件的實例),在邏輯上它可以與類圖中的包或類對應(yīng)。因此,配置圖顯示運(yùn)行時各個包或類在節(jié)點(diǎn)中的分布情況。在面向?qū)ο蠓椒ㄖ校⒉皇穷惡蜆?gòu)件等元素的所有屬性和操作都對外可見,它們對外提供的可見操作和屬性稱為接口。接口用一端是小圓圈的直線來表示。2022/12/1090對象在一個面向?qū)ο蟮能浖到y(tǒng)中運(yùn)行著許多個對象。由于可以把構(gòu)件看作是與包或類對應(yīng)的物理代碼模塊,因此,構(gòu)件中應(yīng)該包含一些運(yùn)行的對象。配置圖中的對象與對象圖中的對象表示方法相同。2022/12/10912022/12/1092使用和擴(kuò)展UML使用UML的準(zhǔn)則不要試圖使用所有的圖形和符號應(yīng)該根據(jù)項目的特點(diǎn),選用最適用的圖形和符號。一般來說,應(yīng)該優(yōu)先選用簡單的圖形和符號,例如,用例、類、關(guān)聯(lián)、屬性和繼承等概念是最常用的。不要為每個事物都畫一個模型應(yīng)該把精力集中于關(guān)鍵的領(lǐng)域。最好只畫幾張關(guān)鍵的圖,經(jīng)常使用并不斷更新、修改這幾張圖。2022/12/1093應(yīng)該分層次地畫模型圖根據(jù)項目進(jìn)展的不同階段,用正確的觀點(diǎn)畫模型圖。如果處于分析階段,應(yīng)該畫概念層模型圖;當(dāng)開始著手進(jìn)行軟件設(shè)計時,

溫馨提示

  • 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

提交評論