UML各種檢視的簡介
UML中各種檢視並沒有明顯的概念區別,然後呢為了好講解和說明,檢視大體分為三類:結構分類,動態行為,模型管理。
結構分類主要描述了系統中的結構成員及其相互關係。類元包括類,用例,構件和節點。類元為研究系統的動態行為奠定了基礎。類元檢視包括靜態檢視,用例檢視和實現檢視。
動態行為描述了系統隨時間變化的行為。行為用從靜態檢視中抽取出來的系統的瞬間值變化來描述。動態行為檢視包括狀態機檢視,活動檢視和互動檢視。
模型管理說明了模型的分層組織結構。包是模型的基本組織單元。特殊的包還包括模型和子系統。模型管理檢視跨越了其他檢視並根據系統的開發和配置組織這些檢視。
除此之外,UML還有多種具有擴充套件能力的元件,這些擴充套件能力有限但很有用。這些元件包括約束,構造型和標記值,適用所有的檢視。
下面是一張說明的表,把它當成指導就行了:
一:靜態檢視
它對應用領域中的概念和系統實現有關的內部概念建模。它因為不描述與時間有關的系統行為被稱作靜態檢視。靜態檢視主要由類以及類之間的相互關係組成,這些關係包括:關聯,泛化和各種依賴關係,如何使用和實現關係。類是應用領域或應用解決方案中概念的描述。類圖是以類為中心組織的,類圖中的其他元素或屬於某個類或與類相關聯。靜態檢視用類圖來實現,正因為他以類為中心,所以稱其為類圖。下面是個類圖的例子:
私下裡覺得這張圖很複雜,尤其是不知道這張圖是用來幹什麼的時候!
二:用例檢視
用例檢視被稱為參與者的外部使用者所能觀察到的系統功能模型圖。用例是系統中的一個功能單元,可以描述為參與者與系統之間的一次互動。用例模型的用途是列出系統的用例和參與者,並顯示了哪個參與者參與了哪個用例的執行。下面是個用例檢視的例子:
個人觀點,這個圖很傻,不過還是很有意思的,最起碼能夠顯示正常開發中各個參與者的活動情況。
三:互動檢視
互動檢視描述了執行系統功能的各個角色之間相互傳遞資訊的順序關係。互動檢視顯示跨越了多個物件的系統控制流程。互動檢視可用兩種檢視來表示:順序圖和協作圖,它們各有不同的側重點。
1:順序圖
順序圖描述的是一個事務的流程,這個流程和麵向過程程式設計中的順序結構是一樣的,從上到下。下面是一個圖例:
這個圖讓我想起很久很久以前沒有ajax時候的網路服務,就是一直用同步的方式操作,不堪回首!
2:協作圖
協作圖是對在一次互動中有意義的物件和物件間的鏈建模,物件和關係只有在互動的語境中才有意義。協作圖用幾何排列來表示互動作用中的各角色。附在類元角色上的箭頭表示訊息,訊息的發生順序用編號數字表示。下面是一個協作圖圖例:
這個圖有個特點,與順序圖不一樣,它展示了引數,方法名稱,不是基於時間序列,是基於邏輯序列。
四:狀態機檢視
狀態機檢視是一個類物件可能經歷的的所有歷程的模型圖。狀態機由物件的各個狀態和連線這些狀態的轉換組成。每個狀態對一個物件在其生命週期中滿足某種條件的一段時間段建模。當一個事件發生時觸發狀態的轉換,從一個狀態轉化為另一個狀態。下面是一個圖例:
這個狀態機我認為最好參考一下設計模式裡面的狀態模式,狀態模式的實現就是這個狀態圖的程式碼描述。
五:活動檢視
活動檢視是狀態機的一種變體,用來描述執行演算法的工作流程中涉及到的活動。活動狀態代表了一個活動:一個工作流執行步驟或一個操作的執行。活動圖描述了一組順序的或併發的活動。活動檢視用活動來體現。下面是一個圖例:
這個與狀態機還是有很大的變化的,它是一個線性的執行步驟,狀態機是一種環形觸發的情況。狀態機是每種情況很複雜,有一定觸發狀態存在於其中。活動圖可能沒有這些,但是符合現實的工作流程。
六:物理檢視
物理檢視對應自身的結構實現建模,圖中的類將會對映稱為物理結構中的節點。物理檢視分為實現檢視和部署檢視。實現檢視為系統中的構件建模,以及構件之間的依賴關係,通過對依賴關係修改評估對系統可能帶來的影響。下面是一個實現檢視的圖例:
這個圖很有意思吧,剛開始我還以為是電路板之類的圖呢。接下來是一個部署圖,仔細找找區別:
六:模型管理檢視
它是對模型自身組織的建模。模型是從某一觀點以一定精確度對系統所進行的完整性描述。下面是一個圖例:
這樣的系統圖看著非常的不錯,很容易理解和接受。
七:擴充套件元件
元件作為一種提供特定功能的模型存在,包含約束,構造型和標記值。約束是用某種形式化的語言或者自然語言表達的語義關係的文字說明。構造型是指建模者設計的新的模型元素,但是它要在已有的UML模型基礎上。標記值是附加到任何模型元素上的命名的資訊塊。下面是例圖:
八:各種檢視之間的關係
九:個人學習經驗分享
有些東西是很簡單的,關鍵是沒有了去學習的動力,沒有了自己前進的方向。我一直覺得能夠只需要背誦下來的東西是最簡單,需要理解並推陳出新的是最難的。每一次推陳出新都是自己能力進步的體現,要不進步也太平凡了,不值得自己去歡呼雀躍了。學習,哪怕是僅僅只是源於對一句話的感悟,也是進步。