系統(tǒng)架構(gòu)師談企業(yè)應(yīng)用架構(gòu)之系統(tǒng)建模3
一、上章回顧
首先、我們先來回顧下,上篇講解的內(nèi)容,加深下印象。上篇我們主要講解了3個建模圖形分別是:順序圖(序列圖)、組件圖、狀態(tài)圖。
前兩篇分別為:系統(tǒng)架構(gòu)師談企業(yè)應(yīng)用架構(gòu)之系統(tǒng)建模2
系統(tǒng)架構(gòu)師談企業(yè)應(yīng)用架構(gòu)之系統(tǒng)建模1
具體功能描述如下圖:這里不詳細(xì)解釋,如果不清楚請看:系統(tǒng)架構(gòu)師-基礎(chǔ)到企業(yè)應(yīng)用架構(gòu)-系統(tǒng)建模[中篇](上)

由于全部放在一篇中篇幅太長了,所以分開講解。
二、摘要
本文主要講解:UML建模圖中的活動圖、部署圖等

上圖中就是本章要講解的內(nèi)容,本質(zhì)將仔細(xì)的剖析,部署圖與組件圖的關(guān)系與區(qū)別,活動圖與狀態(tài)圖的關(guān)系與區(qū)別。
三、本章內(nèi)容
1、上章回顧。
2、摘要。
3、本章內(nèi)容。
4、建模中的抽象模型圖之部署圖、活動圖。
5、本章總結(jié)。
6、系列進(jìn)度。
7、下篇預(yù)告。
四、抽象模型圖之部署圖、活動圖
部署圖
首先,我們先來講解部署圖。部署圖主要是用來描述一系列組件部署到節(jié)點運行的結(jié)構(gòu)。部署圖顯示了系統(tǒng)運行時的結(jié)構(gòu)。一般情況下部署圖幫助我們來理解分布
式應(yīng)用系統(tǒng)。同時部署圖還傳達(dá)了構(gòu)建應(yīng)用系統(tǒng)的軟件與硬件元素的配置及部署方式。
部署圖中的基本元素:
1、節(jié)點:這里就是指組件運行的環(huán)境??梢允擒浖?操作系統(tǒng)、其他等)或硬件資源(計算機(jī),其他硬件)。
UML建模語言中的通用圖形化表示為:

2、節(jié)點實例:節(jié)點實例與節(jié)點的區(qū)別就是有下劃線和冒號,節(jié)點實例必須緊跟冒號,當(dāng)然這個節(jié)點實例名稱可以為空,節(jié)點必須要有。

3、組件容器:一個節(jié)點可以包含其他節(jié)點,可以是組件,也可以是節(jié)點。

4、節(jié)點之間的關(guān)系
(1)、單向依賴:

上圖表示 查詢統(tǒng)計組件,通過.net提供的ADO.NET訪問SQLServer2005數(shù)據(jù)庫。
(2)、雙向依賴:

上圖表示:產(chǎn)品管理模塊會把數(shù)據(jù)寫入到數(shù)據(jù)庫中,同時產(chǎn)品管理中的信息會從數(shù)據(jù)庫中讀取,雙向依賴。
(3)、通信:

上圖表示:應(yīng)用軟件系統(tǒng)與數(shù)據(jù)庫通過.NET提供的方式相互通信,個人理解任務(wù)就是雙向通信(雙向依賴)[錯誤之處,還請高人指出]。
5、實例講解:
下面我們已一個簡單的系統(tǒng)B2C來進(jìn)行講解:
我們先來看看B2C系統(tǒng)中的相應(yīng)節(jié)點:

客戶端通過瀏覽器訪問B2C站點,首先進(jìn)入會員管理,如果注冊,則進(jìn)入到注冊系統(tǒng)。會員管理中完成對采購的管理、支付、發(fā)布等。
節(jié)點描述:
瀏覽器:通過鍵入網(wǎng)站地址訪問B2C站點。這是與B2C系統(tǒng)交互的唯一入口。
注冊系統(tǒng):完成用戶的注冊與數(shù)據(jù)庫通信。圖上并未畫出,所有的節(jié)點除了瀏覽器不需要直接與數(shù)據(jù)庫交互外,其他的模塊都需要與數(shù)據(jù)庫通信。
會員管理:完成會員中心的管理。會員的個人信息,開店的店鋪信息,收貨地址等等信息的管理,我的采購,我發(fā)布的產(chǎn)品等等。
采購系統(tǒng):系統(tǒng)中的子功能,用于完成買家的產(chǎn)品采購。
發(fā)布系統(tǒng):主要為賣家提供服務(wù),發(fā)布產(chǎn)品信息等。與數(shù)據(jù)庫通信
支付系統(tǒng):完成支付交易的操作。與個人賬戶進(jìn)行通信。
當(dāng)然這里只是舉個簡單的例子,其他的內(nèi)容,比如前臺的展示等等,這些目前都沒有考慮其中,也沒有仔細(xì)分析,這里只是達(dá)到介紹的目的。
6、總結(jié)
通過上面的講解相信大家對部署圖已經(jīng)有了基本的認(rèn)識,部署圖主要是用來完成將組件部署到節(jié)點上運行的結(jié)構(gòu)。從整體上描述了,系統(tǒng)運行時的結(jié)構(gòu)。部署圖是
必須要掌握的建模圖。
活動圖
活動圖主要是用來描述系統(tǒng)的動態(tài)行為,從一個活動到另一活動的控制流?;顒訄D的本質(zhì)是流程圖,但是與流程圖又有所不同。在本小節(jié)中將會詳細(xì)的講解活動
圖與流程圖的本質(zhì)的區(qū)別及活動圖與狀態(tài)圖的區(qū)別。
按照慣例,我們先來看看活動圖的元素:
1、動作狀態(tài):

通過用圓形邊的長方形來表示一個動作狀態(tài)。動作狀態(tài)有幾個特點:原子性(要么執(zhí)行,要么不執(zhí)行)、不可中斷的操作,并且此次動作完成后一定轉(zhuǎn)向到另外一種
狀態(tài)。 動作狀態(tài)是構(gòu)造活動圖的最小單位。
狀態(tài)圖區(qū)別:
a、活動圖中動作狀態(tài)可以有入轉(zhuǎn)換與出轉(zhuǎn)換,意思就是說可以從當(dāng)前狀態(tài)轉(zhuǎn)向到另外一個狀態(tài),也可以從另外一個狀態(tài)轉(zhuǎn)換到當(dāng)前狀態(tài)。圖形化的表示如下:

B動作狀態(tài),可以有入轉(zhuǎn)換A,出轉(zhuǎn)換C。
動作狀態(tài)必須至少有一個出轉(zhuǎn)換,轉(zhuǎn)換都是以內(nèi)部的完成為起點,與外部事件無關(guān)。
實心圓:代表起始狀態(tài)。
環(huán)形內(nèi)的實心圓:代表結(jié)束狀態(tài)。
b、動作狀態(tài)與狀態(tài)圖不同的是,動作狀態(tài)不能有入口動作與出口動作。更不能有內(nèi)部轉(zhuǎn)移。
2、活動狀態(tài):

通過二個半圓與一個長方形組合起來來標(biāo)識活動狀態(tài)。
活動狀態(tài)首先可以被分解成多個子活動或者多個子動作狀態(tài)?;顒訝顟B(tài)他不像動作狀態(tài)是原子性的?;顒訝顟B(tài)是非原子性。活動圖內(nèi)部的活動,可以用另外一個
活動圖來表示?;顒訝顟B(tài)可以看作多個動作狀態(tài)和多個子活動的組合。
活動狀態(tài)與動作狀態(tài)不同,動作狀態(tài)是活動狀態(tài)的一個特例,當(dāng)某個活動狀態(tài)只有一個動作狀態(tài)時,這個活動狀態(tài)就是一個動作狀態(tài)。活動狀態(tài)可以有入口動作
和出口動作。還可以有內(nèi)部轉(zhuǎn)移。因為活動圖是多個子活動和多個動作狀態(tài)的組合,所以本來動作狀態(tài)直接的轉(zhuǎn)向就可以看作是內(nèi)部轉(zhuǎn)移了,所以就很好理解了。

上圖已經(jīng)基本表示出來了活動狀態(tài)中的動態(tài)狀態(tài)的轉(zhuǎn)移等。我相信大家都能理解。
3、動作節(jié)點之間的關(guān)系
a、控制流:

與狀態(tài)圖中的轉(zhuǎn)向相同,活動圖也使用一個帶箭頭的線段,箭頭指向要轉(zhuǎn)入的狀態(tài)。
b、分支:

活動狀態(tài)從A分支出來活動狀態(tài)B、C,
c、合并:

活動狀態(tài)B從活動狀態(tài)A與C合并后得到。
d、泳道:泳道將活動圖中的多個活動劃分成多個組。并且把每一組活動都由對象來負(fù)責(zé)組織業(yè)務(wù),泳道區(qū)分了負(fù)責(zé)活動的對象。并且泳道明確的表
示了哪些活動是由哪些對象進(jìn)行的。泳道通過垂直線來區(qū)分。而2個垂直線分割的區(qū)域即是一個泳道。上面的解釋可能有點繞,說白了泳道即是上面說的對象,對象就是
泳道。把不同的泳道就叫一個對象。每個活動狀態(tài)在有泳道的活動圖中,只能屬于一個泳道。
下面來看有泳道的圖例:

上面有2個泳道,分別是我是泳道1,我是泳道,并且我是泳道1中的D與我
是泳道中的活動狀態(tài)A有轉(zhuǎn)向關(guān)系。
e、對象流。
對象流是對象與動作狀態(tài)或者活動狀態(tài)直間的依賴關(guān)系。表示動作使用對象或者動作對對象的影響。一般我們在使用中,我們可以把對象通過依賴關(guān)系與動作狀態(tài)或者活動狀態(tài)進(jìn)行鏈接。
對象流的幾個特點:
(1)、一般一個對象可以由多個活動狀態(tài)或動作狀態(tài)操作。
(2)、一個活動狀態(tài)或動作狀態(tài)的輸出對象可以作為另一個活動狀態(tài)或動作狀態(tài)的輸入。
(3)、一個對象可以在一個活動圖中多次出現(xiàn),但是有點需要注意,這個對象多次出現(xiàn)時表名該對象處于生命周期的不同時期。
包含對象流的活動圖:

泳道M1中出現(xiàn)了對象。并且該對象與活動狀態(tài)B有依賴關(guān)系。
總結(jié)
本節(jié)中講解了,活動圖的基本知識,下面我們以我們平時比較熟悉的B2C業(yè)務(wù),電子商城為例說明下,會員的產(chǎn)品管理流程。通過狀態(tài)圖的形式來表達(dá)。以鞏固
下我們學(xué)習(xí)的成果。
例如B2C中的產(chǎn)品管理。首先必須是會員才能登入系統(tǒng)中,然后必須是我是賣家,然后才能進(jìn)行發(fā)布產(chǎn)品的操作。

會員先要開啟店鋪,設(shè)置權(quán)限后才能進(jìn)行產(chǎn)品管理

五、本章總結(jié)
本章主要講述了部署圖與活動圖?,F(xiàn)在我們回顧下本章要點。
部署圖:主要用來描述一系列組件部署在節(jié)點上運行的結(jié)構(gòu),是系統(tǒng)運行是的結(jié)構(gòu)的描述。主要用于軟件系統(tǒng)的
活動圖:主要用來描述系統(tǒng)的動態(tài)行為,從一個活動轉(zhuǎn)換到另外一個活動狀態(tài)。通過一系列的操作將業(yè)務(wù)流程通過工作流的形式來描述。一系列操作就是一系列
的活動狀態(tài)。
后語
希望看完本章的朋友可以從本篇中學(xué)到相應(yīng)的UML建模知識,懂的人可以鞏固下UML知識,本篇希望能夠拋磚引玉,希望大家能夠多提出寶貴意見。由于是本人
平時工作中的理解與總結(jié),不足之處再所難免,還請大家批評指出!如果您有什么意見或建議,請多多提出!大家的支持就是我的***動力!
作者:CallHot-何戈洲
出處:http://www.cnblogs.com/hegezhou_hot/
關(guān)于作者:專注于微軟平臺項目架構(gòu)、管理和企業(yè)解決方案。熟悉設(shè)計模式、極限編程、架構(gòu)設(shè)計、敏捷開發(fā)和項目管理?,F(xiàn)主要從事WinForm、ASP.NET、等方面的項目開發(fā)、架構(gòu)、管理工作。如有問題或建議,請多多賜教!
【編輯推薦】
- 系統(tǒng)架構(gòu)師談企業(yè)應(yīng)用架構(gòu)之開卷有益
 - 系統(tǒng)架構(gòu)師談企業(yè)應(yīng)用架構(gòu)之系統(tǒng)建模1
 - 系統(tǒng)架構(gòu)師談企業(yè)應(yīng)用架構(gòu)之系統(tǒng)建模2
 - 系統(tǒng)架構(gòu)師談企業(yè)應(yīng)用架構(gòu)之系統(tǒng)建模3
 - 系統(tǒng)架構(gòu)師談企業(yè)應(yīng)用架構(gòu)之系統(tǒng)建模4
 
【責(zé)任編輯:彭凡 TEL:(010)68476606】















 
 
 
 
 
 
 