今天,本站帶領(lǐng)大家來學(xué)習(xí)一下UML中的部署圖。
部署圖很簡單,簡單到?jīng)]必要大張旗鼓的進(jìn)行介紹,但是本文還是詳細(xì)的介紹一下相關(guān)知識。
部署圖(Deployment Diagram)用于描述系統(tǒng)硬件的物理拓?fù)浣Y(jié)構(gòu)以及在相關(guān)節(jié)點(diǎn)上運(yùn)行的軟件工件(artifacts)。
工件是系統(tǒng)開發(fā)過程產(chǎn)生的具體的元素,如可執(zhí)行文件、庫、檔案文件、數(shù)據(jù)庫模式、配置文件等。
部署圖與上篇文章介紹的組件圖都是對系統(tǒng)物理方面進(jìn)行建模。
構(gòu)成的部署圖的元素主要包括節(jié)點(diǎn)(node)和節(jié)點(diǎn)之間的關(guān)系(relationship)。
節(jié)點(diǎn)是系統(tǒng)部署的目標(biāo)對象,其通常是硬件或軟件的運(yùn)行環(huán)境。
每個(gè)節(jié)點(diǎn)都有自己的名稱,如“Web服務(wù)器”,“數(shù)據(jù)庫服務(wù)器”等。
也可以在節(jié)點(diǎn)上進(jìn)行其他信息的描述,如硬件的配置情況,軟件環(huán)境的版本信息等。
在UML1.x中,節(jié)點(diǎn)被分為兩類:處理器(processor)和設(shè)備(device)。
處理器是具有計(jì)算能力的節(jié)點(diǎn),且一般可以運(yùn)行軟件,如服務(wù)器。
設(shè)備指的是一些不具有計(jì)算能力的節(jié)點(diǎn),它們可能作為一些輸入輸出設(shè)備或者本身是處理器的外部連接設(shè)備,如顯示器、打印機(jī)、讀卡器等。
在UML中,兩種節(jié)點(diǎn)分別使用下面的圖形來表示:
而在UML2.x中,節(jié)點(diǎn)被分為設(shè)備和執(zhí)行環(huán)境兩種。
設(shè)備是一個(gè)具有處理能力的物理計(jì)算資源的節(jié)點(diǎn),可以在該節(jié)點(diǎn)上部署執(zhí)行構(gòu)件(artifacts)。
設(shè)備使用帶有<<device>>構(gòu)造型的正方體或長方體來表示,如下圖所示:
上圖是UML2.x中表示一個(gè)設(shè)備節(jié)點(diǎn),其名稱是“Application Server”(應(yīng)用服務(wù)器)。
在UML中沒有為設(shè)備節(jié)點(diǎn)提供標(biāo)準(zhǔn)的構(gòu)造型,用戶可以根據(jù)實(shí)際情況選擇一些非規(guī)范性的構(gòu)造型,如:
設(shè)備節(jié)點(diǎn)也可使用用戶自定義的圖標(biāo),配置信息、構(gòu)造型和標(biāo)記值等可以添加到自定義圖標(biāo)和屬性信息中。如下圖是使用用戶自定義圖標(biāo)表示設(shè)備節(jié)點(diǎn)的一個(gè)例子:
上圖中使用了構(gòu)造型<<application server>>來給出設(shè)備的類別,并配以文字說明設(shè)備的名稱和型號信息。
下圖使用注釋的方式給出設(shè)備節(jié)點(diǎn)的相關(guān)信息:
下圖使用另外一種圖標(biāo)來表示數(shù)據(jù)庫服務(wù)器的情形:
上圖使用構(gòu)造型<<database server>>來描述節(jié)點(diǎn),并使用文字給出設(shè)備名稱和品牌。
下面使用用戶自定義圖標(biāo)來表示智能手機(jī)的情形:
設(shè)備也可能很復(fù)雜,如設(shè)備可能包含其它設(shè)備。
執(zhí)行環(huán)境是一種軟件節(jié)點(diǎn),它為以可執(zhí)行工件(artifacts)的形式部署在該節(jié)點(diǎn)上特定類型的組件提供一個(gè)可執(zhí)行環(huán)境。
在UML2.x中,執(zhí)行環(huán)境節(jié)點(diǎn)以標(biāo)準(zhǔn)的構(gòu)造型<<executionEnviroment>>來指定。
但這個(gè)構(gòu)造型的名稱有些冗長,UML也未提供其它標(biāo)準(zhǔn)構(gòu)造型,在實(shí)際中可以使用一些非規(guī)范的構(gòu)造型來表示實(shí)際的可執(zhí)行環(huán)境,如:
如下面兩個(gè)例子:
Linux操作系統(tǒng)執(zhí)行環(huán)境
Oracle 10g DBMS執(zhí)行環(huán)境
節(jié)點(diǎn)之間的關(guān)系也稱之為節(jié)點(diǎn)間的通信路徑,其表示兩個(gè)部署目標(biāo)之間的關(guān)聯(lián)關(guān)系,節(jié)點(diǎn)之間使用這種路徑可以交換信號和消息。
下圖給出了兩個(gè)設(shè)備節(jié)點(diǎn)之間的關(guān)聯(lián)關(guān)系。
當(dāng)部署目標(biāo)為物理設(shè)備時(shí),通信路徑通常表示兩個(gè)節(jié)點(diǎn)之間的物理連接。
下圖顯示兩個(gè)節(jié)點(diǎn)支架使用千兆以太網(wǎng)作為應(yīng)用程序服務(wù)器和數(shù)據(jù)庫服務(wù)器之間的通信路徑。
當(dāng)兩個(gè)部署目標(biāo)是執(zhí)行環(huán)境節(jié)點(diǎn)時(shí),通信路徑通常是一些協(xié)議。
下圖表示了部署在兩個(gè)設(shè)備節(jié)點(diǎn)中執(zhí)行環(huán)境節(jié)點(diǎn)的關(guān)聯(lián)關(guān)系。兩個(gè)節(jié)點(diǎn)通過TCP/IP協(xié)議進(jìn)行通信。
同時(shí),上圖也表示出一個(gè)執(zhí)行環(huán)境部署到一個(gè)設(shè)備節(jié)點(diǎn)上的情況。
在UML中,也可以使用文本列表的形式來表示在該節(jié)點(diǎn)上部署的工件(artifacts)。
下圖顯示了執(zhí)行環(huán)境.NET Framework 4.7中部署的工件情況:
部署情況也可以使用左上角帶一個(gè)小分隔倉的矩形框架來表示,在分隔倉中標(biāo)注dep(deployment的縮寫形式)和部署的名稱:
上圖中使用虛線箭頭表示工件(artifacts)“Borrow.dll”部署到節(jié)點(diǎn)“.NET Framework 4.7”服務(wù)器上的,并在虛線箭頭上標(biāo)注<<deploy>>。
在Rose中只支持UML1.x中的節(jié)點(diǎn)繪制方法,而且只支持繪制一個(gè)部署圖。
具體繪制方法如下:
(1)在Rose左側(cè)瀏覽器中,雙擊“Deployment View”節(jié)點(diǎn),則會打開部署圖繪制界面;
(2)在Rose中,部署圖的工具欄主要有三種工具:
帶陰影的正方形圖標(biāo)表示創(chuàng)建一個(gè)處理器節(jié)點(diǎn);
不帶陰影的正方形圖標(biāo)表示創(chuàng)建一個(gè)設(shè)備節(jié)點(diǎn);
實(shí)線表示節(jié)點(diǎn)之間的連接。
(3)根據(jù)需要點(diǎn)擊相應(yīng)的圖標(biāo)后,并在繪圖區(qū)點(diǎn)擊一下就會創(chuàng)建一個(gè)節(jié)點(diǎn),在創(chuàng)建的同時(shí),可以給節(jié)點(diǎn)命名。
(4)雙擊節(jié)點(diǎn),或右擊節(jié)點(diǎn)后選擇“Open Specification...”,可以打開節(jié)點(diǎn)詳述對話框,下圖為處理器節(jié)點(diǎn)的詳述對話框:
在上圖中的“Name”處可以設(shè)置處理器節(jié)點(diǎn)的名稱,在“Stereotype”中可以輸入該節(jié)點(diǎn)的構(gòu)造型,在“Documentation”中可以輸入該節(jié)點(diǎn)的其它說明信息。
處理器節(jié)點(diǎn)詳述“Detail”選項(xiàng)卡的信息如下:
在“Characteristic”可以給出處理器的特征,如型號,配置等信息。
在“Processes”中可以定義該節(jié)點(diǎn)中處理的進(jìn)程和優(yōu)先級。
在“Scheduling”可以指定調(diào)度信息:
Preemptive:搶占式;Non Preemptive:非搶占式;Cyclic:周期的;Executive:可執(zhí)行的;Manual:手動的。
一般情況下,部署圖僅顯示各個(gè)節(jié)點(diǎn)的連接情況,這些信息可以不用設(shè)置。
下圖顯示的是設(shè)備節(jié)點(diǎn)的詳述對話框:
該對話框中的內(nèi)容與處理器節(jié)點(diǎn)相同。
在設(shè)備節(jié)點(diǎn)詳述對話框的“Detail”選項(xiàng)卡中僅有“Characteristic”項(xiàng),可以給出設(shè)備的型號等信息。
(5)建立連接
在工具欄中選擇“Connection”連接線,然后在要連接的一個(gè)節(jié)點(diǎn)上點(diǎn)擊鼠標(biāo)后按住鼠標(biāo)左鍵拖動到第二個(gè)節(jié)點(diǎn)上,并松開鼠標(biāo),這時(shí)就會建立了兩個(gè)節(jié)點(diǎn)之間的鏈接。
雙擊連接線,或右擊連接線后選擇“Open Specification...”,可以打開連接線詳述對話框,如下圖所示:
在這個(gè)對話框中可以指定連接的名稱以及連接的構(gòu)造型。
如在“Name”里輸入“1000 Base-T”,在“Stereotype”里輸入“ethernet”,則會顯示如下圖所示的情形。
下面給出Rose中一個(gè)部署圖的例子。
該部署圖描述了圖書館借閱系統(tǒng)的部署圖。
而關(guān)于UML2.x中的部署圖可以使用Visio、StarUML、draw.io等工具進(jìn)行繪制。
新聞熱點(diǎn)
疑難解答