




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
包圖5.1
概述5.2包間關(guān)系5.3設(shè)計包的原則第5章●包圖(PackageDiagram)●包圖(PackageDiagram)也是一種結(jié)構(gòu)型UML圖,它用于顯示包與包之間的依賴關(guān)系,可以放入包圖中的元素和關(guān)系有:包(package)、所有可打包元素(packageableelement)、依賴(dependency)、元素導(dǎo)入(elementimport)、包導(dǎo)入(packageimport)、包合并(packagemerge)?!褚粋€包表示一個命名空間,用于將語義相關(guān)的元素組織在一起。包可以包含其它的包,以及其它的可打包元素,如:類、用例、組件等。5.1
概述5.1
概述javautilDatejava::utilDatejava::util::Date5.1
概述●包圖其他嵌套表示可見性含義前綴符號公有的Public此元素可以被任何引用該包的包中的元素訪問。+受保護(hù)的Protected此元素可被繼承該包的包中的元素訪問。#私有的private此元素只能被同一個包中的元素訪問。-5.1
概述●包的可見性包內(nèi)元素的可見性控制了包外部元素訪問包內(nèi)部元素的權(quán)限?!裨貙?dǎo)入關(guān)系:元素導(dǎo)入關(guān)系是一種有向關(guān)系,用帶開放箭頭的虛線表示。它從一個要導(dǎo)入元素的包指向一個要被導(dǎo)入的具體元素,如所示。如果被導(dǎo)入的元素在命名空間中的可見性為public,則在關(guān)系中用關(guān)鍵字“?import?”來說明,如果它的可見性是private的則用關(guān)鍵字“?access?”來表示。元素導(dǎo)入的含義為將某些元素引入到新的命名空間中作為其成員,但和包中自身所擁有的元素相比,被導(dǎo)入的元素只是一種引用,也就是說如果要對這些導(dǎo)入的元素作修改的話,只能在它們的源包中進(jìn)行修改。5.2
包間關(guān)系●包導(dǎo)入關(guān)系:包導(dǎo)入關(guān)系的表示法與元素導(dǎo)入關(guān)系類似,不同的是它指向的是一個要被導(dǎo)入包。包導(dǎo)入的含義是:一旦某個包某導(dǎo)入到新的命名空間后,那么這個包中的元素就可以被該命名空間中的元素直接訪問,而不再需要通過限定名的方式來訪問它們。5.2
包間關(guān)系usersUsersecurity+Credentials+IdentityVerifier-MD5Crypt《access》5.2
包間關(guān)系該例中,users被稱為源包(SourcePackage),security被稱為目標(biāo)包(TargetPackage)這個例子表示包users要用到包security中的元素由于可見性的原因,users中的元素User只能使用security中的元素Credentials和IdentityVerifier,而不能使用MD5Crypt5.2
包間關(guān)系userssecurity+Credentials+IdentityVerifier-MD5Crypt《import》User這個例子表示包users中的元素可以訪問包security中的元素Credentials和IdentityVerifier包的access關(guān)系和import關(guān)系的區(qū)別:如果包users被導(dǎo)入到另一個包Z中,如果users和security是access的關(guān)系,則Z中的元素是看不到包security中的元素Credentials和IdentityVerifier的,即包security中的元素Credentials和IdentityVerifier對包Z中的元素來說,其可見性是private如果包users和包security是import的關(guān)系,那么,包Z中的元素是可以見到包security中的元素Credentials和IdentityVerifier的,也就是說,包security中的元素Credentials和IdentityVerifier對包Z中的元素來說,其可見性是public5.2
包間關(guān)系●包合并關(guān)系:包合并關(guān)系是一種包與包之間的有向關(guān)系,用帶開放箭頭的虛線表示,它從源包指向目標(biāo)包,再加上一個關(guān)鍵字“?merge?”,用于表示目標(biāo)包中的內(nèi)容被源包中的內(nèi)容擴(kuò)展。它類似于類圖中的泛化關(guān)系,從概念上表示源元素將目標(biāo)元素的特性添加到自己身上,從而得到一個由兩組特性組合之后的新元素。5.2
包間關(guān)系包的合并關(guān)系有一些規(guī)則:包中的私有成員能被任何其他包合并如果合并的包中的類與被合并包中的類重名或具有相同的類型,那么在合并后的包中將存在一個泛化關(guān)系來建模合并的包與被合并包中的這些類也可以仍然使用被合并包的名字加類名的方式引用被合并包中的類合并包和被合并包中的類都會保持原樣不變的被添加到合并包中即使被合并包還不存在子包,子包也將被添加到合并包中如果被合并的包中有一個子包與合并包中的子包同名,那么這兩個子包之間還會合并一次任何與被合并包具有導(dǎo)入關(guān)系的包都將作為合并包的導(dǎo)入包,與合并后的包建模為導(dǎo)入關(guān)系,就是說,不會產(chǎn)生規(guī)則(2)所說的泛化關(guān)系,被導(dǎo)入的元素不被合并。如果導(dǎo)入的元素與合并后的包中的元素有沖突,那么,導(dǎo)入包中的同名元素具有優(yōu)先權(quán),被導(dǎo)入的元素必須被重新命名5.2
包間關(guān)系在考慮如何對類進(jìn)行分組并放入不同的包時,主要依據(jù)類之間的依賴關(guān)系進(jìn)行分組。包中的類應(yīng)該是功能相關(guān)的,在建包時,應(yīng)把概念上和語義上相近的模型元素納入一個包。依賴關(guān)系其實是耦合的一種體現(xiàn),如果兩個包中的類之間存在依賴關(guān)系,那么這兩個包之間就有了依賴關(guān)系,也就存在耦合關(guān)系。好的設(shè)計要求體現(xiàn)高內(nèi)聚、低耦合的特性。5.2
設(shè)計包的原則重用等價原則
——把類放入包中時,應(yīng)考慮把包作為可重用的單元。共同閉包原則
——把那些需要同時改變的類放在同一個包中。若一個類的行為或結(jié)構(gòu)的改變要求另一個類做相應(yīng)的改變;刪除了一個類后,另一個類成多余的;兩個類之間有大量的消息發(fā)送。共同重用原則
——把不會一起使用的類不要放在同一個包中。非循環(huán)依賴原則
——包之間的依賴關(guān)系不要形成循環(huán)。5.3
設(shè)計包的原則繪制包圖的基本步驟如下:①分析系統(tǒng)的模型元素(通常是對象類),把概念上或語義上相近的模型元素歸入同一個包。②對于每一個包,標(biāo)出其模型元素的可視性,確定包內(nèi)每個元素的訪問屬性,是公共、保護(hù)或私有。③確定包與包之間的依賴關(guān)系,特別是“引入”關(guān)系。④確定包與包之間的泛化關(guān)系。⑤繪制包圖。⑥對結(jié)果進(jìn)行精化和細(xì)化。5.3
設(shè)計包的原則組件圖和部署圖6.1
組件圖概述6.2組件圖的應(yīng)用6.3UML2.0中的相關(guān)變化6.4復(fù)合結(jié)構(gòu)6.5部署圖概述6.6部署圖的應(yīng)用6.7UML2.0中的相關(guān)變化6.8對象約束語言第6章為了構(gòu)造一個面向?qū)ο蟮能浖到y(tǒng)必須考慮系統(tǒng)的邏輯和物理兩個方面。邏輯方面需要發(fā)現(xiàn)和描述對象類、接口、協(xié)同、交互和狀態(tài)機(jī)等事物,物理方面需要找出組件和節(jié)點。
UML提供了兩種物理表示圖形:組件圖和部署圖。
組件圖表示系統(tǒng)中的不同物理組件及其關(guān)系,它表達(dá)的是系統(tǒng)代碼本身的結(jié)構(gòu)。部署圖由節(jié)點構(gòu)成,節(jié)點代表系統(tǒng)的硬件,組件在節(jié)點上駐留并執(zhí)行。部署圖表示系統(tǒng)的軟件組件與硬件之間的關(guān)系,它表達(dá)的是運行系統(tǒng)的結(jié)構(gòu)。
組件圖和部署圖用于建立系統(tǒng)的實現(xiàn)模型。
對象約束語言(OCL)是用于表示對模型元素的約束的語言,是UML的重要組成部分。
件圖和部署圖第6章組件圖和部署圖6.1.1
組件6.1.2
組件的種類6.1.3
組件的關(guān)系第6章6.1組件圖概述組件(Component)是系統(tǒng)的物理的可替換的單位,它把系統(tǒng)的實現(xiàn)打包,并提供一組接口的實現(xiàn)(Realization)。
組件代表系統(tǒng)的一個物理實現(xiàn)塊,代表邏輯模型元素如類、接口、協(xié)同等的物理打包。組件本身遵從和提供一組接口的實現(xiàn),它們代表了由駐留在組件內(nèi)部的模型元素所實現(xiàn)的服務(wù)。組件用于對系統(tǒng)配置節(jié)點上的物理事物建立模型。
常見的組件有系統(tǒng)的配置組件,如COM+組件、JavaBeans等。組件也可以是軟件開發(fā)過程中的產(chǎn)物,如軟件代碼(源碼、二進(jìn)制碼和可執(zhí)行碼)等。
6.1.1
組件組件的圖標(biāo)是一個大矩形的左邊嵌二個小矩形。組件必須有名字。
簡單組件:只標(biāo)出組件名。在組件名之后或之下,可以用括在花括號中的文字(即標(biāo)記值)說明組件的性質(zhì),如“{version=2.0}”等。
擴(kuò)充組件:當(dāng)需要了解組件所包含的模型元素時,則需要把每個模型元素的名字在組件的大矩形框里列出,這稱為擴(kuò)充的組件。
例:簡單組件與擴(kuò)充組件示例,如圖6.1所示。圖6.1簡單組件與擴(kuò)充組件示例
6.1.1
組件組件在很多方面與對象類相似,如都有名字,都有實例,都能實現(xiàn)接口,都存在著關(guān)系等。組件的實例代表運行期間的可執(zhí)行軟件模塊。例如,圖6.1中的組件“mymailer:Mailer”就是組件“Mailer”的一個實例,它存在于運行期間。組件的實例只用于部署圖中。
組件的性質(zhì)的表示法與類相同。組件所包含的模型元素的可視性同樣有“公共”、“保護(hù)”、“私用”等。
但是組件和類有實質(zhì)性的區(qū)別。組件代表物理事物,而類代表事物的邏輯抽象,因此組件可以用于部署圖的節(jié)點中,而類不能。一般組件只有操作,外界只能通過接口接觸它們,而類可以直接有屬性和操作。
6.1.1
組件組件是一組邏輯元素(如類、協(xié)同等)的物理實現(xiàn)。一個類可以由一個或多個組件實現(xiàn)。
組件和類的關(guān)系是一種依賴關(guān)系,組件擁有類,類不存在了,包含它的組件也就不存在了。通常,組件與類的依賴關(guān)系不必用圖形顯式表示,可以在說明文檔中予以說明。
例:圖6.2中的組件“Mailer”依賴于類“Mailbox”、“RoutingList”和“MailQueue”
。圖6.2組件與類的關(guān)系示例
6.1.1
組件組件提供接口的實現(xiàn),一個組件可以實現(xiàn)一個或多個接口。
例:在圖6.3中的組件“字典”實現(xiàn)兩個接口:“拼寫檢查”和“同義詞”。
圖6.3組件與接口示例
6.1.1
組件按照組件的作用可以把組件分為以下3種:
1.配置組件(DeploymentComponent)
配置組件是構(gòu)成一個可執(zhí)行的系統(tǒng)的必需的組件,如動態(tài)連接庫(DLL)、執(zhí)行程序(EXE)等。
UML的組件可以表達(dá)典型的對象模型,如COM+、
CORBA、JAVABeans、Web頁、數(shù)據(jù)庫表等內(nèi)容。
2.工作產(chǎn)品組件(WorkProductComponent)
工作產(chǎn)品組件是在軟件開發(fā)階段使用的組件,它們包括源程序文件、數(shù)據(jù)文件等。
配置組件是根據(jù)工作產(chǎn)品組件建立的。
3.執(zhí)行組件(ExecutionComponent)
執(zhí)行組件是執(zhí)行系統(tǒng)的部件,如COM+的一個對象,它是一個動態(tài)連接庫(DLL)的實例。
6.1.2
組件的種類UML的所有擴(kuò)展機(jī)制都可以用于組件。例如,可以在組件上加上標(biāo)記值描述組件的性質(zhì),使用構(gòu)造型規(guī)定組件的種類。
UML定義了以下5個用于組件的標(biāo)準(zhǔn)構(gòu)造型:
1.<<executable>>
構(gòu)造型<<executable>>說明一個組件可以在系統(tǒng)的節(jié)點上執(zhí)行。
2.<<library>>
構(gòu)造型<<library>>說明一個組件是一個靜態(tài)的或動態(tài)的對象庫。
3.<<table>>
構(gòu)造型<<table>>說明一個組件代表的是一個數(shù)據(jù)庫表。
4.<<file>>
構(gòu)造型<<file>>說明一個組件代表的是一個文檔,它包含的是源代碼或數(shù)據(jù)。
5.<<document>>
構(gòu)造型<<document>>說明一個組件代表的是一個文檔。6.1.2
組件的種類組件之間可以有依賴關(guān)系。組件之間的依賴是指,一個組件的模型元素使用另一個組件的模型元素。
組件也可以通過接口實現(xiàn)依賴關(guān)系。
組件通過接口依賴的圖形表示方式有兩種,一種是簡單的表示法,另一種通過擴(kuò)充的接口來表達(dá),如圖6.4所示。
由一個組件實現(xiàn)的接口稱為輸出接口(ExportInterface),意指該接口是組件提供給其他組件的服務(wù)。一個組件可以提供多個輸出接口。為一個組件所使用的接口稱為輸入接口(ImportInterface),意指該組件遵從該接口,建立在該接口上。
一個組件可以遵從多個輸入接口。一個組件可以既有輸入接口,又有輸出接口。通過輸入接口和輸出接口所實現(xiàn)的組件之間的依賴稱為輸入依賴(ImportDependency)。
6.1.3
組件的關(guān)系例:組件的依賴接口示例,如圖6.4所示。
圖6.4組件的依賴接口示例
6.1.3
組件的關(guān)系根據(jù)組件的種類的不同,組件之間的依賴可以分為兩種:開發(fā)期間的依賴和調(diào)用依賴。
開發(fā)期間的依賴是指在編譯階段和連接階段的組件之間的依賴。例如,在圖6.5中,客戶組件依賴于供應(yīng)者組件。供應(yīng)者組件在開發(fā)期間存在,但并不需要在運行期間存在。
圖6.5組件的開發(fā)期間的依賴
6.1.3
組件的關(guān)系調(diào)用依賴(CallDependency)是指一個組件調(diào)用或使用另一個組件的服務(wù),如圖6.6所示??蛻艚M件調(diào)用或使用供應(yīng)者組件的服務(wù),調(diào)用可以直接進(jìn)行,或通過接口進(jìn)行。供應(yīng)者組件的元素可以是組件的型或?qū)ο蟆?/p>
調(diào)用依賴可以發(fā)生在開發(fā)期間的組件的型之間,用組件圖表示;調(diào)用依賴也可以發(fā)生在運行期間的組件的實例之間,可在部署圖中表示。
圖6.6組件的調(diào)用依賴
6.1.3
組件的關(guān)系組件圖由組件、接口和組件之間的關(guān)系構(gòu)成,其中的組件可以是源碼、二進(jìn)制碼或可執(zhí)行程序。
組件圖表示系統(tǒng)中的不同物理部件及其關(guān)系,它表達(dá)的是系統(tǒng)代碼本身的結(jié)構(gòu)。組件圖只有型(Type)的形式,沒有實例形式。為了顯示組件的實例需要使用部署圖。
組件圖用于下列事物建立模型:系統(tǒng)的源代碼、系統(tǒng)的發(fā)布版本、物理數(shù)據(jù)庫、自適應(yīng)系統(tǒng)等。組件圖也可以用于建立業(yè)務(wù)模型,此時的組件是業(yè)務(wù)的過程和文檔。組件圖還可以用于建立開發(fā)期間的軟件產(chǎn)物的依賴關(guān)系,用于系統(tǒng)開發(fā)的管理。
6.2
組件的應(yīng)用例:一個組件圖的示例,如圖6.7所示。它由組件“調(diào)度程序”、“計劃程序”、“GUI”(圖形界面),接口“注冊登記”、“更新”,以及它們的關(guān)系構(gòu)成。
圖6.7組件圖示例
6.2
組件的應(yīng)用建立一個可執(zhí)行系統(tǒng)的組件圖可按以下步驟進(jìn)行:(1)確定組件。(2)對組件加上必要的構(gòu)造型。如標(biāo)準(zhǔn)構(gòu)造型<<executable>>、<<library>>、<<table>>、<<file>>、<<document>>,或自定義新的構(gòu)造型。(3)確定組件之間的關(guān)系。最常見的組件之間的關(guān)系是通過接口依賴。一個組件使用(輸入)某個接口,另一個組件實現(xiàn)(輸出)該接口。(4)必要時把組件組織成包。(5)繪制組件圖。6.2
組件的應(yīng)用例:一個軟件產(chǎn)品的系統(tǒng)構(gòu)成模型,如圖6.8所示。它由可執(zhí)行程序和動態(tài)連接庫構(gòu)成。圖6.8可執(zhí)行程序和動態(tài)連接庫建模示例
6.2
組件的應(yīng)用采用同樣的方法可以為報表、文件與文檔建模。例如,圖6.9是在圖6.8的基礎(chǔ)上增加了程序的初始化文件“animator.ini”、數(shù)據(jù)庫表“shapes.tbl”和幫助文件“animator.hlp”,它們都用注釋節(jié)點表示。
圖6.9報表、文件與文檔建模
6.2
組件的應(yīng)用例:項目與資源管理系統(tǒng)PRMS的一個系統(tǒng)組件圖,如圖6.10所示,它表示了開發(fā)期間和運行期間的實現(xiàn)系統(tǒng)的對象。圖6.10項目與資源管理系統(tǒng)PRMS的組件圖
6.2
組件的應(yīng)用在UML2.0中規(guī)定的組件圖標(biāo),如圖6.11所示。在UML1.x中,組件用于代表物理結(jié)構(gòu),特別是運行時的系統(tǒng)物理塊,如動態(tài)連接庫(DLL)等。在UML2.0中,組件代表系統(tǒng)的一個模塊化部分,可以是指邏輯的,也可以是指物理的。按照基于組件的開發(fā)方法,一個系統(tǒng)可以看作是由若干個組件通過接口連接而成的。
圖6.11UML2.0的組件圖標(biāo)
6.3
組件圖-UML2.0中的相關(guān)變化組件通過供給接口和需要接口定義其行為。組件的服務(wù)是一種型(Type)。組件在其環(huán)境中是一個可替換的單元。不論是在系統(tǒng)的分析設(shè)計階段或運行時,只要型相合(TypeConformant),即接口的功能等價,一個組件可以重用,也可以被另一個組件完全代替。在組件中,供給接口和需要接口可以組織成端口(port),它們常在運行時被訪問。對于包含復(fù)雜內(nèi)容的組件,常使用復(fù)合結(jié)構(gòu)把組件的內(nèi)容進(jìn)行劃分和聚集,使得結(jié)構(gòu)關(guān)系更為清晰。
6.3
組件圖-UML2.0中的相關(guān)變化例:一個按照UML2.0規(guī)定圖標(biāo)繪制的簡單的組件圖,如圖6.12所示。圖6.12組件圖示例
6.3
組件圖-UML2.0中的相關(guān)變化復(fù)合結(jié)構(gòu)(CpmpositeStructure)和復(fù)合結(jié)構(gòu)圖是UML2.0中的新成分。復(fù)合結(jié)構(gòu)描述系統(tǒng)中某一部分(復(fù)合結(jié)構(gòu))的內(nèi)部結(jié)構(gòu),包括該部分與系統(tǒng)的其它部分的交互。復(fù)合結(jié)構(gòu)圖能夠展示這些部分的“內(nèi)部”參與者的配置情況。通過復(fù)合結(jié)構(gòu)可以把一個復(fù)雜類或組件等分解成若干部分,便于清晰地描述它們(系統(tǒng))的內(nèi)部組織構(gòu)造情況,明確地說明了支持該復(fù)合結(jié)構(gòu)所包含的分類符(類、組件等)的結(jié)構(gòu)特性(Property)。這里說的分類符可以是類、對象、組件等。6.4
組件圖-復(fù)合結(jié)構(gòu)復(fù)合結(jié)構(gòu)與包都是一種聚組機(jī)制。復(fù)合結(jié)構(gòu)是模型元素在運行時刻的聚組,包是編譯時刻的聚組。
復(fù)合結(jié)構(gòu)圖常用于組件圖,適宜表示組件,以及如何把組件分解為不同的部件。復(fù)合結(jié)構(gòu)圖類似于類圖,但它所表示的是內(nèi)部結(jié)構(gòu)所包含的部件和連接符。部件(Part)是分類符將扮演的角色(Role),不代表特定的實例(Instance)。6.4
組件圖-復(fù)合結(jié)構(gòu)部件的圖標(biāo)與對象的圖標(biāo)類似,也是一個矩形框,它的命名形式為:部件名:類名,但是名稱之下不帶下劃線。部件之間可以有連接符(Connector)連接,連接符用一條直線表示。連接符使得兩個部件(或模型元素)之間能夠通信。
委托連接符(DelegationConnector)是一種連接該復(fù)合結(jié)構(gòu)的對外委托端口和內(nèi)部實現(xiàn)部件的連接符,委托連接符用一條虛箭線表示。
連接符的實現(xiàn)可以是一個簡單指針,或是復(fù)雜的網(wǎng)絡(luò)連接。
6.4
組件圖-復(fù)合結(jié)構(gòu)例:一個表示對象類的復(fù)合結(jié)構(gòu)的示例,如圖6.13所示。其中,“輪胎”類是一個簡單類?!稗I車”類的內(nèi)部結(jié)構(gòu)是一種復(fù)合結(jié)構(gòu),它包含四個部件:“左前輪”、“右前輪”、“左后輪”、“右后輪”,代表轎車的四個輪子,它們的型都是“輪胎”。兩個前輪部件和兩個后輪部件分別有連接符相互連接。圖6.13類的復(fù)合結(jié)構(gòu)示例
左前輪:輪胎
右前輪:輪胎
右后輪:輪胎
左后輪:輪胎轎車前軸后軸輪胎
Tire:StringSize:String…6.4
組件圖-復(fù)合結(jié)構(gòu)在復(fù)合結(jié)構(gòu)圖中還常需要表示復(fù)合結(jié)構(gòu)和部件所需要的接口和端口,以及部件的多重性。例:一個組件“訂貨”的復(fù)合結(jié)構(gòu),如圖6.14所示,它有兩個端口。
圖6.14組件的復(fù)合結(jié)構(gòu)圖示例
6.4
組件圖-復(fù)合結(jié)構(gòu)6.3部署圖(配置圖)Home6.3.1節(jié)點6.3.2節(jié)點的關(guān)系6.3.3部署圖的應(yīng)用6.3.4UML2.0中的相關(guān)變化組件圖和部署圖6.5.1
節(jié)點6.5.2
節(jié)點的關(guān)系6.5.3
組件的關(guān)系第6章6.5部署圖概述節(jié)點(Node)是存在于運行期間的系統(tǒng)的物理元素,節(jié)點代表計算機(jī)資源,通常為處理器(Processor)或其他硬件設(shè)備,系統(tǒng)的組件可以配置在節(jié)點上。節(jié)點的圖標(biāo)為一個三維立方體圖形,如圖6.15所示。
圖6.15簡單節(jié)點與擴(kuò)充節(jié)點示例
6.5.1
節(jié)點節(jié)點必須有名字。節(jié)點的名字可以是一個簡單名,或用路徑名。與對象類一樣,節(jié)點可以用標(biāo)記值說明名字的性質(zhì)。節(jié)點和對象類一樣可以區(qū)分為型和實例。節(jié)點的型代表計算資源的不同類型,節(jié)點的實例代表特定的具體的計算機(jī)資源。對象和組件實例可以駐留在節(jié)點實例上,而且可以從一個節(jié)點向另一個節(jié)點遷移。節(jié)點執(zhí)行組件,組件是被節(jié)點執(zhí)行的事物。一個節(jié)點可以與其它的節(jié)點、組件、對象有關(guān)聯(lián)。節(jié)點和對象類、協(xié)同、組件等模型元素一樣可以組織成包。
6.5.1
節(jié)點例:在節(jié)點上安置組件,如圖6.16所示。圖6.16用節(jié)點安置組件
6.5.1
節(jié)點節(jié)點與節(jié)點通過物理連接(Connection)發(fā)生關(guān)系,物理連接如以太網(wǎng)絡(luò)、共享總線等,從硬件方面保證了系統(tǒng)的節(jié)點協(xié)同運行。節(jié)點與節(jié)點、節(jié)點與組件之間存在著多種類型的關(guān)系,包括關(guān)聯(lián)(通信關(guān)系)和依賴(支持關(guān)系、成為關(guān)系)。
1.通信關(guān)系通信關(guān)系是節(jié)點之間的一種關(guān)聯(lián),是節(jié)點之間的通信路徑或連接的模型。通信關(guān)系的表示法是用一條實關(guān)聯(lián)線連接兩個節(jié)點,如圖6.17所示。在實關(guān)聯(lián)線上可以加構(gòu)造型以表達(dá)節(jié)點間的通信路徑或連接的性質(zhì)。
2.支持關(guān)系支持關(guān)系是節(jié)點與組件或?qū)ο笾g的依賴關(guān)系。如果一個節(jié)點與一個組件或?qū)ο蟠嬖谥С株P(guān)系,說明該節(jié)點上駐留著該組件或?qū)ο?,該組件或?qū)ο竽軌蛟谠摴?jié)點上執(zhí)行。支持關(guān)系的表示法是用一條虛箭線從節(jié)點指向所連接的組件或?qū)ο?,并可在虛箭線上加有構(gòu)造型<<supports>>,如圖6.18所示。
6.5.2
節(jié)點的關(guān)系圖6.17通信關(guān)系表示法示例
圖6.18支持關(guān)系表示法
6.5.2
節(jié)點的關(guān)系3.成為關(guān)系成為關(guān)系是組件與組件、組件與對象、對象與對象之間的依賴關(guān)系。成為關(guān)系不是節(jié)點之間的關(guān)系,但是它是組件或?qū)ο笤诠?jié)點之間的遷移的模型。成為關(guān)系的表示法是用一條虛箭線從一個節(jié)點中的組件指向另一個節(jié)點中的組件或從一個節(jié)點中的對象指向另一個節(jié)點中的對象,并可在虛箭線上加有構(gòu)造型<<becomes>>,如圖6.19所示。
成為關(guān)系可以用標(biāo)記值“{time=…}”說明其時間性質(zhì),即組件或?qū)ο笤谑裁磿r間發(fā)生遷移活動。
成為關(guān)系說明源對象(或組件)和目標(biāo)對象(或組件)是在不同時間點的同一個對象(或組件),而且它們的狀態(tài)和角色不同。
6.5.2
節(jié)點的關(guān)系成為關(guān)系表示法,如圖6.19所示。圖6.19成為關(guān)系表示法
6.5.2
節(jié)點的關(guān)系部署圖由節(jié)點與節(jié)點之間的關(guān)系構(gòu)成。在部署圖中也可以有組件,以及節(jié)點與組件之間、組件與組件之間的關(guān)系。部署圖表示分布式系統(tǒng)的軟件組件與硬件之間的關(guān)系,它表達(dá)的是運行系統(tǒng)的結(jié)構(gòu)。部署圖主要用于對在網(wǎng)絡(luò)環(huán)境運行的分布式系統(tǒng)建立系統(tǒng)物理模型,或者對嵌入式系統(tǒng)建模。部署圖也可以用于建立業(yè)務(wù)模型,此時的“運行系統(tǒng)”就是業(yè)務(wù)的組織機(jī)構(gòu)和資源(人力、設(shè)備等)。
例:項目與資源管理系統(tǒng)PRMS的部署圖,如圖6.20所示。
6.6
部署圖的應(yīng)用Home圖6.20項目與資源管理系統(tǒng)PRMS的部署圖
6.6
部署圖的應(yīng)用
建立一個客戶機(jī)/服務(wù)器系統(tǒng)或Web應(yīng)用系統(tǒng)的部署圖一般可按以下步驟進(jìn)行:(1)確定節(jié)點。(2)對節(jié)點加上必要的構(gòu)造型。(3)確定關(guān)系。把系統(tǒng)的組件如可執(zhí)行程序、動態(tài)連接庫等分配到節(jié)點上,并確定節(jié)點與節(jié)點之間、節(jié)點與組件之間、組件與組件之間的關(guān)系,以及它們的性質(zhì)。
(4)繪制部署圖。例:一個醫(yī)院診療系統(tǒng)部署圖,如圖6.21所示。它是一個對象部署圖,其中每一個節(jié)點都是可視的特定節(jié)點實例:“DatabaseUnitServer”、“HeartUnitServer”與“aWindowsPC”,它們通過TCP/IP網(wǎng)絡(luò)連接。
6.6
部署圖的應(yīng)用圖6.21醫(yī)院診療系統(tǒng)部署圖(客戶機(jī)/服務(wù)器系統(tǒng))
6.6
部署圖的應(yīng)用在UML2.0中規(guī)定,部署圖的節(jié)點所代表的計算機(jī)資源,不僅是指硬件設(shè)備(Device),如處理器、讀卡機(jī)、移動設(shè)備、通信設(shè)備等;而且可以是指包含在設(shè)備內(nèi)的執(zhí)行環(huán)境。執(zhí)行環(huán)境是其它軟件的宿主,如操作系統(tǒng)、J2EE容器、工作流引擎、數(shù)據(jù)庫等。
制品(Artifact)配置在節(jié)點上。在部署圖中的制品就是系統(tǒng)開發(fā)過程中最終產(chǎn)生的各種可執(zhí)行代碼文件。
實際上,制品代表組件(或任何可包裝模型元素,如簡單的類)的物理形式,組件由制品實現(xiàn)。
制品的圖標(biāo)為一個矩形,在制品的名稱上方給出構(gòu)造型“<<artifact>>”;或者,在矩形的右上角貼上一個圖標(biāo)“”。
6.7
部署圖-UML2.0中的相關(guān)變化例:圖6.22中有一個組件“Order”和一個制品“Order.jar”,制品“Order.jar”是一個可執(zhí)行的Java代碼文件。組件“Order”由制品“Order.jar”實現(xiàn)。圖6.22組件與制品
6.7
部署圖-UML2.0中的相關(guān)變化例:節(jié)點“應(yīng)用服務(wù)器”上的配置,如圖6.23所示。
圖6.23配置有執(zhí)行環(huán)境和制品的節(jié)點
應(yīng)用服務(wù)器J2EE容器DB2DBMS
KJPT.exe{Vendor=WSSC}{Component}6.7
部署圖-UML2.0中的相關(guān)變化對象約束語言(ObjectConstraintLanguage,OCL)是一種形式語言,用于表示UML模型中施加于模型元素上的約束。
OCL是一種純表達(dá)式語言,它用表達(dá)式表示約束。OCL的表達(dá)式確保沒有副作用,對一個OCL表達(dá)式進(jìn)行求值將返回一個值,它在系統(tǒng)模型中不改變。
OCL是一種規(guī)格說明語言(SpecificationLanguage)。所有有關(guān)實現(xiàn)的問題都不能用OCL表達(dá)。
OCL不是一種程序設(shè)計語言,不能用OCL編寫程序,不能用OCL編寫程序邏輯和控制流程。
6.8
對象約束語言組件圖和部署圖6.8.1
標(biāo)準(zhǔn)型6.8.2表達(dá)式6.8.3
對象性質(zhì)的約束第6章6.8對象約束語言O(shè)CL預(yù)定義的標(biāo)準(zhǔn)型定義了一組基本型和集合型(CollectionType)。OCL標(biāo)準(zhǔn)型定義為一個層次結(jié)構(gòu),用類圖表示,如圖6.18所示。
圖6.18OCL標(biāo)準(zhǔn)型
6.8.1
對象約束語言-標(biāo)準(zhǔn)型OCL基本型的含義與Java語言中的數(shù)據(jù)類型的含義類似。OCL基本型的例子如下:
1,3,5.4true,false‘a(chǎn)pple’,’orange’,’strawberry’
對OCL基本型能施加的運算如下:
OCL基本型
運算
Integer*,+,–,/,absReal*,+,–,/,floorBooleanand,or,xor,not,implies,if–then–elseStringtoUpper,toLower,substring,concat6.8.1
對象約束語言-標(biāo)準(zhǔn)型集合型是抽象型,它預(yù)定義了大量的運算,可以維護(hù)集合。
UML定義了3種集合型:“Set”、“Bag”、“Sequence”。集合型本身又可以構(gòu)成集合型,形成集合型的嵌套。
“Set”型是一個數(shù)學(xué)的集合,它包含的元素不重復(fù)?!癇ag”型類似“Set”型,但它包含的元素允許重復(fù)。“Sequence”型類似“Bag”型,但它包含的元素有序?!癝et”、“Bag”和“Sequence”型的表示方法是分別用關(guān)鍵字“Set”、“Bag”和“Sequence”,后跟一個花括號,其中有組成該型的元素值。
例:集合型的一些例子如下:
Set{1,3,5,7,9}Sequence{1,3,4,5,2,3}Bag{1,3,4,3,5}Set{Set{1,3},Set{5,7},Set{9,11}}/“Collection”型嵌套
6.8.1
對象約束語言-標(biāo)準(zhǔn)型集合型的預(yù)定義運算主要有“select”(選擇)、“reject”(剔除)、“collect”(集合)、“forAll”(全體)、“exists”(存在)等。
Collection->select(…)Collection->reject(…)Collection->collect(…)Collection->forAll(…)Collection->existsl(…)例:集合型運算的一些例子如下:
self.employee->select(age>50)->notEmptyself.employee->reject(isMarried)->isEmptyself.employee->collect(person|person.birthDate)self.employee->forAll(p|p.lastname=‘張’)self.employee->exists(p|p.lastname=‘張’)6.8.1
對象約束語言-標(biāo)準(zhǔn)型OCL表達(dá)式對一個OCL型求值。
OCL的基本表達(dá)式的擴(kuò)展巴斯科范式EBNF定義如下:
PrimaryExpression:=literalCollection|literal|pathNametimeExpression?Qualifier?FeatureCallParameters?|‘’(‘’expression’’)’’|ifExpressionliteral:=<string>|<number>|“#”<name>timeExpression:=“@”<name>featureCallParameters:=“(”(declarator)?(actualParameterList)?“)”ifExpression:=“if”expression“then”expression“else”expression“endif”
最簡單的OCL基本表達(dá)式是一個literal(文字),literal可以是一個字符串,或一個數(shù)字,或在“#”號后跟一個模型元素或操作的名字。
OCL基本表達(dá)式也可以是literalCollection,即literal的集合型。
6.8.2
對象約束語言-表達(dá)式OCL基本表達(dá)式可以是一個路徑名,后面可有選項:時間表達(dá)式、限定符(Qualifier)或特征調(diào)用參數(shù)。
時間表達(dá)式的格式是在符號“@”后面跟一個名字,它確定性質(zhì)的時間值。
特征調(diào)用參數(shù)是運算的實在參數(shù)表。
OCL基本表達(dá)式可以是一個條件表達(dá)式,其值為一個Boolean值“True”或“False”。
把一個OCL表達(dá)式用圓括號括起來也是一個OCL基本表達(dá)式。
6.8.2
對象約束語言-表達(dá)式OCL表達(dá)式的求值自左向右進(jìn)行,運算符的優(yōu)先級規(guī)定由高到低依次為:圓點“.”和箭頭“->”的優(yōu)先級最高;一元運算符“not”和“–”;乘除運算符“*”和“/”;加減運算符“+”和“–”;邏輯運算符“and”、“or”和“xor”;邏輯運算符“implies”;條件運算符“if–then–else”;比較運算符“<”、“>”、“<=”、“>=”、“=”、“<>”;圓括號優(yōu)先
6.8.2
對象約束語言-表達(dá)式例:OCL表達(dá)式的例子如下:
1+2*34self.wife.sex=#femaleself.wife.age>=18andself.employee->select(age>50)
在OCL的基本表達(dá)式的基礎(chǔ)上定義了其他一些表達(dá)式,如加減表達(dá)式、乘除表達(dá)式、一元表達(dá)式、邏輯表達(dá)式、關(guān)系表達(dá)式、后綴表達(dá)式、let表達(dá)式。
6.8.2
對象約束語言-表達(dá)式一個對象的屬性、關(guān)聯(lián)端、無副作用的操作稱為對象的性質(zhì)(Property)。
對象的性質(zhì)的表示是用一個圓點“
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《幼兒教師教育教學(xué)技能全解》課件-5-合理安排一日活動
- 備戰(zhàn)VB考試的試題及答案
- 行政法學(xué)與社會變革相結(jié)合的綜合研究探討試題及答案
- 高考語文閱讀理解能力訓(xùn)練試題及答案
- 網(wǎng)絡(luò)攻擊與防御策略試題及答案
- 行政法學(xué)核心概念試題與答案
- 企業(yè)合規(guī)管理與戰(zhàn)略風(fēng)險應(yīng)對試題及答案
- 戰(zhàn)略目標(biāo)實現(xiàn)中的障礙與應(yīng)對試題及答案
- 企業(yè)戰(zhàn)略反饋機(jī)制考題及答案
- 宜昌市猇亭區(qū)事業(yè)單位2025年統(tǒng)一公開招聘工作人員筆試歷年典型考題及考點剖析附帶答案詳解
- 企業(yè)員工法律意識培訓(xùn)課件
- 家具維保服務(wù)投標(biāo)方案
- 交通事故自救、互救基本常識(新版)
- 環(huán)保管家服務(wù)投標(biāo)方案(技術(shù)標(biāo))
- 電氣工程概論-肖登明
- 膠粘劑制造業(yè)行業(yè)營銷方案
- 【江淮汽車公司財務(wù)現(xiàn)狀及其盈利能力問題分析(10000字論文)】
- Sibelius使用教程教材說明
- 學(xué)會寬容快樂生活主題班會課件
- ASME-B31.3-2008-工藝管道壁厚計算
評論
0/150
提交評論