### 一、上章回顧
??????? 首先、我們先來回顧下,上篇講解的內容,加深下印象。上篇我們主要講解了3個建模圖形分別是:順序圖(序列圖)、組件圖、狀態圖。
??????? 具體功能描述如下圖:這里不詳細解釋,如果不清楚請看:[系統架構師-基礎到企業應用架構-系統建模[中篇](上)](http://www.cnblogs.com/hegezhou_hot/archive/2010/09/11/1824084.html)
????????[](http://images.cnblogs.com/cnblogs_com/hegezhou_hot/WindowsLiveWriter/45870215679f_F638/image_2.png)
???????? 由于全部放在一篇中篇幅太長了,所以分開講解。
### 二、摘要
?????? 本文主要講解:UML建模圖中的活動圖、部署圖等
???????[](http://images.cnblogs.com/cnblogs_com/hegezhou_hot/WindowsLiveWriter/45870215679f_F638/image_4.png)
?????? 上圖中就是本章要講解的內容,本質將仔細的剖析,部署圖與組件圖的關系與區別,活動圖與狀態圖的關系與區別。
### 三、本章內容
?????? 1、上章回顧。
?????? 2、摘要。
?????? 3、本章內容。
?????? 4、建模中的抽象模型圖之部署圖、活動圖。
?????? 5、本章總結。
?????? 6、系列進度。
?????? 7、下篇預告。
### 四、抽象模型圖之部署圖、活動圖
#### 部署圖
????? 首先,我們先來講解部署圖。部署圖主要是用來描述一系列組件部署到節點運行的結構。部署圖顯示了系統運行時的結構。一般情況下部署圖幫助我們來理解分布
式應用系統。同時部署圖還傳達了構建應用系統的軟件與硬件元素的配置及部署方式。
????? 部署圖中的基本元素:
????? 1、節點:這里就是指組件運行的環境。可以是軟件(操作系統、其他等)或硬件資源(計算機,其他硬件)。
????? UML建模語言中的通用圖形化表示為:
??????[](http://images.cnblogs.com/cnblogs_com/hegezhou_hot/WindowsLiveWriter/45870215679f_F638/image_8.png)
?????? 2、節點實例:節點實例與節點的區別就是有下劃線和冒號,節點實例必須緊跟冒號,當然這個節點實例名稱可以為空,節點必須要有。
??????[](http://images.cnblogs.com/cnblogs_com/hegezhou_hot/WindowsLiveWriter/45870215679f_F638/image_10.png)?
????? 3、組件容器:一個節點可以包含其他節點,可以是組件,也可以是節點。
??????[](http://images.cnblogs.com/cnblogs_com/hegezhou_hot/WindowsLiveWriter/45870215679f_F638/image_14.png)
????? 4、節點之間的關系
??????? (1)、單向依賴:
??????????[](http://images.cnblogs.com/cnblogs_com/hegezhou_hot/WindowsLiveWriter/45870215679f_F638/image_16.png)
???????? 上圖表示 查詢統計組件,通過.net提供的ADO.NET訪問SQLServer2005數據庫。
???????? (2)、雙向依賴:
??????????[](http://images.cnblogs.com/cnblogs_com/hegezhou_hot/WindowsLiveWriter/45870215679f_F638/image_18.png)
????????? 上圖表示:產品管理模塊會把數據寫入到數據庫中,同時產品管理中的信息會從數據庫中讀取,雙向依賴。
???????? (3)、通信:
??????????[](http://images.cnblogs.com/cnblogs_com/hegezhou_hot/WindowsLiveWriter/45870215679f_F638/image_20.png)
????????? 上圖表示:應用軟件系統與數據庫通過.NET提供的方式相互通信,個人理解任務就是雙向通信(雙向依賴)[錯誤之處,還請高人指出]。
??????? 5、實例講解:
??????? 下面我們已一個簡單的系統B2C來進行講解:
??????? 我們先來看看B2C系統中的相應節點:
????????[](http://images.cnblogs.com/cnblogs_com/hegezhou_hot/WindowsLiveWriter/45870215679f_F638/image_26.png)
??????? 客戶端通過瀏覽器訪問B2C站點,首先進入會員管理,如果注冊,則進入到注冊系統。會員管理中完成對采購的管理、支付、發布等。
??????? 節點描述:
??????? 瀏覽器:通過鍵入網站地址訪問B2C站點。這是與B2C系統交互的唯一入口。
??????? 注冊系統:完成用戶的注冊與數據庫通信。圖上并未畫出,所有的節點除了瀏覽器不需要直接與數據庫交互外,其他的模塊都需要與數據庫通信。
??????? 會員管理:完成會員中心的管理。會員的個人信息,開店的店鋪信息,收貨地址等等信息的管理,我的采購,我發布的產品等等。
??????? 采購系統:系統中的子功能,用于完成買家的產品采購。
??????? 發布系統:主要為賣家提供服務,發布產品信息等。與數據庫通信
??????? 支付系統:完成支付交易的操作。與個人賬戶進行通信。
??????? 當然這里只是舉個簡單的例子,其他的內容,比如前臺的展示等等,這些目前都沒有考慮其中,也沒有仔細分析,這里只是達到介紹的目的。
??????? 6、總結
?????? 通過上面的講解相信大家對部署圖已經有了基本的認識,部署圖主要是用來完成將組件部署到節點上運行的結構。從整體上描述了,系統運行時的結構。部署圖是
必須要掌握的建模圖。
#### 活動圖
??????? 活動圖主要是用來描述系統的動態行為,從一個活動到另一活動的控制流。活動圖的本質是流程圖,但是與流程圖又有所不同。在本小節中將會詳細的講解活動
圖與流程圖的本質的區別及活動圖與狀態圖的區別。
??????? 按照慣例,我們先來看看活動圖的元素:
??????? 1、動作狀態:
????????[](http://images.cnblogs.com/cnblogs_com/hegezhou_hot/WindowsLiveWriter/45870215679f_F638/image_28.png)
??????? 通過用圓形邊的長方形來表示一個動作狀態。動作狀態有幾個特點:原子性(要么執行,要么不執行)、不可中斷的操作,并且此次動作完成后一定轉向到另外一種
狀態。 動作狀態是構造活動圖的最小單位。
??????? 狀態圖區別:
??????? a、活動圖中動作狀態可以有入轉換與出轉換,意思就是說可以從當前狀態轉向到另外一個狀態,也可以從另外一個狀態轉換到當前狀態。圖形化的表示如下:
????????[](http://images.cnblogs.com/cnblogs_com/hegezhou_hot/WindowsLiveWriter/45870215679f_F638/image_32.png)?B動作狀態,可以有入轉換A,出轉換C。
???????? 動作狀態必須至少有一個出轉換,轉換都是以內部的完成為起點,與外部事件無關。
???????? 實心圓:代表起始狀態。
???????? 環形內的實心圓:代表結束狀態。
???????? b、動作狀態與狀態圖不同的是,動作狀態不能有入口動作與出口動作。更不能有內部轉移。
??????? 2、活動狀態:
????????[](http://images.cnblogs.com/cnblogs_com/hegezhou_hot/WindowsLiveWriter/45870215679f_F638/image_34.png)
??????? 通過二個半圓與一個長方形組合起來來標識活動狀態。
??????? 活動狀態首先可以被分解成多個子活動或者多個子動作狀態。活動狀態他不像動作狀態是原子性的。活動狀態是非原子性。活動圖內部的活動,可以用另外一個
活動圖來表示。活動狀態可以看作多個動作狀態和多個子活動的組合。
??????? 活動狀態與動作狀態不同,動作狀態是活動狀態的一個特例,當某個活動狀態只有一個動作狀態時,這個活動狀態就是一個動作狀態。活動狀態可以有入口動作
和出口動作。還可以有內部轉移。因為活動圖是多個子活動和多個動作狀態的組合,所以本來動作狀態直接的轉向就可以看作是內部轉移了,所以就很好理解了。
????????[](http://images.cnblogs.com/cnblogs_com/hegezhou_hot/WindowsLiveWriter/45870215679f_F638/image_38.png)
??????? 上圖已經基本表示出來了活動狀態中的動態狀態的轉移等。我相信大家都能理解。
??????? 3、動作節點之間的關系
??????? a、控制流:[](http://images.cnblogs.com/cnblogs_com/hegezhou_hot/WindowsLiveWriter/45870215679f_F638/image_40.png)?與狀態圖中的轉向相同,活動圖也使用一個帶箭頭的線段,箭頭指向要轉入的狀態。
??????? b、分支:[](http://images.cnblogs.com/cnblogs_com/hegezhou_hot/WindowsLiveWriter/45870215679f_F638/image_46.png)?? 活動狀態從A分支出來活動狀態B、C,
??????? c、合并:[](http://images.cnblogs.com/cnblogs_com/hegezhou_hot/WindowsLiveWriter/45870215679f_F638/image_48.png)?活動狀態B從活動狀態A與C合并后得到。
??????? d、泳道:泳道將活動圖中的多個活動劃分成多個組。并且把每一組活動都由對象來負責組織業務,泳道區分了負責活動的對象。并且泳道明確的表
示了哪些活動是由哪些對象進行的。泳道通過垂直線來區分。而2個垂直線分割的區域即是一個泳道。上面的解釋可能有點繞,說白了泳道即是上面說的對象,對象就是
泳道。把不同的泳道就叫一個對象。每個活動狀態在有泳道的活動圖中,只能屬于一個泳道。
??????? 下面來看有泳道的圖例:
????????[](http://images.cnblogs.com/cnblogs_com/hegezhou_hot/WindowsLiveWriter/45870215679f_F638/image_50.png)?上面有2個泳道,分別是我是泳道1,我是泳道,并且我是泳道1中的D與我
是泳道中的活動狀態A有轉向關系。
?????? e、對象流。
??????? 對象流是對象與動作狀態或者活動狀態直間的依賴關系。表示動作使用對象或者動作對對象的影響。一般我們在使用中,我們可以把對象通過依賴關系與動作狀態或者活動狀態進行鏈接。
??????? 對象流的幾個特點:
??????? (1)、一般一個對象可以由多個活動狀態或動作狀態操作。
??????? (2)、一個活動狀態或動作狀態的輸出對象可以作為另一個活動狀態或動作狀態的輸入。
??????? (3)、一個對象可以在一個活動圖中多次出現,但是有點需要注意,這個對象多次出現時表名該對象處于生命周期的不同時期。
??????? 包含對象流的活動圖:
????????[](http://images.cnblogs.com/cnblogs_com/hegezhou_hot/WindowsLiveWriter/45870215679f_F638/image_52.png)
??????? 泳道M1中出現了對象。并且該對象與活動狀態B有依賴關系。
#### ?? 總結
??????? 本節中講解了,活動圖的基本知識,下面我們以我們平時比較熟悉的B2C業務,電子商城為例說明下,會員的產品管理流程。通過狀態圖的形式來表達。以鞏固
下我們學習的成果。
??????? 例如B2C中的產品管理。首先必須是會員才能登入系統中,然后必須是我是賣家,然后才能進行發布產品的操作。
????????[](http://images.cnblogs.com/cnblogs_com/hegezhou_hot/WindowsLiveWriter/45870215679f_F638/image_56.png)?會員先要開啟店鋪,設置權限后才能進行產品管理
????????[](http://images.cnblogs.com/cnblogs_com/hegezhou_hot/WindowsLiveWriter/45870215679f_F638/image_58.png)
### 五、本章總結
??????? 本章主要講述了部署圖與活動圖。現在我們回顧下本章要點。
??????? 部署圖:主要用來描述一系列組件部署在節點上運行的結構,是系統運行是的結構的描述。主要用于軟件系統的
??????? 活動圖:主要用來描述系統的動態行為,從一個活動轉換到另外一個活動狀態。通過一系列的操作將業務流程通過工作流的形式來描述。一系列操作就是一系列
的活動狀態。
### 六、系列進度。
##### 前篇
?????? 1、[系統架構師-基礎到企業應用架構系列之--開卷有益](http://www.cnblogs.com/hegezhou_hot/archive/2010/09/07/1821012.html)
?????? 2、[系統架構師-基礎到企業應用架構-系統建模[上篇]](http://www.cnblogs.com/hegezhou_hot/archive/2010/09/10/1822887.html)
?????? 3、[系統架構師-基礎到企業應用架構-系統建模[中篇](上)](http://www.cnblogs.com/hegezhou_hot/archive/2010/09/11/1824084.html)
?????? 4、[系統架構師-基礎到企業應用架構-系統建模[中篇](下)](http://www.cnblogs.com/hegezhou_hot/archive/2010/09/14/1826314.html)
?????? 5、系統架構師-基礎到企業應用架構-系統建模[下篇]
????? 6、系統架構師-基礎到企業應用架構-系統設計規范與原則[上篇]
????? 7、系統架構師-基礎到企業應用架構-系統設計規范與原則[下篇]
????? 8、系統架構師-基礎到企業應用架構-設計模式[上篇]
????? 9、系統架構師-基礎到企業應用架構-設計模式[中篇]
????? 10、系統架構師-基礎到企業應用架構-設計模式[下篇]
##### 中篇
????? 11、系統架構師-基礎到企業應用架構-企業應用架構
????? 12、系統架構師-基礎到企業應用架構-分層[上篇]
????? 13、系統架構師-基礎到企業應用架構-分層[中篇]
????? 14、系統架構師-基礎到企業應用架構-分層[下篇]
????? 15、系統架構師-基礎到企業應用架構-表現層
????? 16、系統架構師-基礎到企業應用架構-服務層
????? 17、系統架構師-基礎到企業應用架構-業務邏輯層
????? 18、系統架構師-基礎到企業應用架構-數據訪問層
????? 19、系統架構師-基礎到企業應用架構-組件服務
????? 20、系統架構師-基礎到企業應用架構-安全機制
##### 后篇
????? 21、單機應用、客戶端/服務器、多服務、企業數據總線全解析
????? 22、系統架構師-基礎到企業應用架構-單機應用(實例及demo)
????? 23、系統架構師-基礎到企業應用架構-客戶端/服務器(實例及demo)
????? 24、系統架構師-基礎到企業應用架構-多服務(實例及demo)
????? 25、系統架構師-基礎到企業應用架構-企業數據總線(實例及demo)
????? 26、系統架構師-基礎到企業應用架構-性能優化(架構瓶頸)
????? 27、系統架構師-基礎到企業應用架構-完整的架構方案實例[上篇]
????? 28、系統架構師-基礎到企業應用架構-完整的架構方案實例[中篇]
????? 29、系統架構師-基礎到企業應用架構-完整的架構方案實例[下篇]
????? 30、系統架構師-基礎到企業應用架構-總結及后續
### 七、下篇預告。
???????? 下一篇中我們將會講述:簡單講述其他的UML建模圖,并且結合B2C實例,詳細分析B2C系統應該具有的功能模塊。及每個模塊通過不同的建模圖形的表示方
法,及如何在功能分析時使用恰當的建模圖。
### 后語
????? 希望看完本章的朋友可以從本篇中學到相應的UML建模知識,懂的人可以鞏固下UML知識,本篇希望能夠拋磚引玉,希望大家能夠多提出寶貴意見。由于是本人
平時工作中的理解與總結,不足之處再所難免,還請大家批評指出!如果您有什么意見或建議,請多多提出!大家的支持就是我的最大動力!