UML 教程

關鍵詞:部署圖, 組件圖, 包圖, 類圖, 複合結構圖, 對象圖, 活動圖, 狀態機圖, 用例圖, 通訊圖, 交互概述圖, 時序圖, 時間圖html

簡介

UML 圖類型

UML 圖類型以下圖所示:git



結構式建模圖

結構式建模圖(Structure diagrams)強調的是系統式的建模。結構圖定義了一個模型的靜態架構。它們一般被用來對那些構成模型的‘要素'建模,諸如:類,對象,接口和物理組件。另外,它們也被用來對元素間關聯和依賴關係進行建模。github

行爲式建模圖

行爲式建模圖(Behavior diagrams)強調系統模型中觸發的事。行爲圖用來記錄在一個模型內部,隨時間的變化,模型執行的交互變化和瞬間的狀態;並跟蹤系統在真實環境下如何表現,以及觀察系統對一個操做或事件的反應,以及它的結果。安全

UML 概念

UML 歷來源中使用至關多的概念。咱們將之定義於統一建模語言術語匯表。下面僅列表明性的概念。網絡

  • 對於結構而言 - 執行者,屬性,類,元件,接口,對象,包。
  • 對於行爲而言 - 活動(UML),事件(UML),消息(UML),方法(UML),操做(UML),狀態(UML),用例(UML)。
  • 對於關係而言 - 聚合,關聯,組合,相依,廣義化(or 繼承)。
  • 其餘概念
    • 構造型—這規範符號應用到的模型
    • 多重性—多重性標記法與資料庫建模基數對應,例如:1, 0..1, 1..*

部署圖

部署圖(Deployment Diagram)用於對系統的物理結構建模。部署圖將顯示系統中的軟件組件和硬件組件之間的關係以及處理工做的物理分佈。架構



節點

節點既能夠是硬件元素,也能夠是軟件元素。它顯示爲一個立方體,以下圖所示。併發



節點實例

圖能夠顯示節點實例,實例與節點的區分是:實例的名稱帶下劃線,冒號放在它的基本節點類型以前。實例在冒號以前能夠有名稱,也能夠沒有名稱。下圖顯示了一個具名的計算機實例。框架



節點構造型

爲節點提供了許多標準的構造型,分別命名爲 «cdrom», «cd-rom», «computer», «disk array», «pc», «pc client», «pc server», «secure», «server», «storage», «unix server», «user pc»。 並在節點符號的右上角顯示適當的圖標。異步



工件

工件是軟件開發過程當中的產品。包括過程模型(如:用例模型,設計模型等),源文件,執行文件,設計文檔,測試報告,構造型,用戶手冊等等。工具

工件表示爲帶有工件名稱的矩形,並顯示«artifact»關鍵字和文檔符號。



關聯

在部署圖的上下文聯繫中,關聯表明節點間的聯繫通道。下圖顯示了一個網絡系統的部署圖,描述了網絡協議爲構造型和關聯終端的多重性,



做爲容器的節點

節點能夠包含其餘元素,如組件和工件。下圖顯示了一個嵌入式系統某個部分的部署圖。描寫了一個被主板節點包含的可執行工件。



組件圖

組件圖(Component Diagram)描繪了組成一個軟件系統的模塊和嵌入控件。組件圖比類圖具備更高層次的抽象-一般運行時一個組件被一個或多個類(或對象)實現。它們象積木那樣使得組件能最終構成系統的絕大部分。



上圖演示了一些組件和它們的內部關係。裝配鏈接器(Assembly connectors)「鏈接」由"Product"和"Customer"的提供接口到由 "Order"指定的需求接口。 一個依賴關係映射了客戶相關的賬戶信息到「Order」須要的 "Payment"需求接口。

實際上,組件圖同包圖很類似,它們都有明確的界限,把元素分組到邏輯結構中。他們之間的不一樣是:組件圖提供了語義更豐富的分組機制,在組件圖中,全部的模型元素都是私有的,而包圖只顯示公有的成員。

表現組件

組件可表示爲帶關鍵字 «component»的矩形類元;也可用右上角有組件圖標的矩形表示。



裝配鏈接器

裝配鏈接器在組件 「Component1」的需求接口和另外一個組件 「Component2」的提供接口之間創建橋樑; 這個橋樑使得一個組件能提供另外一個組件所須要的服務。



帶端口組件

使用端口的組件圖容許在它的環境指定一個服務和行爲,同時這個服務和行爲也是組件須要的。當端口進行雙向操做的時候,它能夠指定輸入和輸出。下圖詳述了用於在線服務的帶端口組件,它有兩個提供接口 「order entry」和 「tracking」,也有 「payment」 需求接口。



包圖

包圖(Package Diagram)用來表現包和它所包含元素的組織。當用來表明類元素時,包圖提供了命名空間的可視化。包圖最經常使用的用途是用來組織用例圖和類圖,儘管它不侷限於這些 UML 元素。

下面是一個包圖的例子。



包中的元素共享相同的命名空間,所以,一個指定命名空間的元素必須有惟一的名稱。

包能夠用來表明物理或邏輯關係。選擇把類包括在指定的包裏,有助於在同一個包裏賦予這些類相同繼承層次。一般認爲把經過複合相關聯的類,以及與它們相協做的類放在同一個包裏。



在 UML2.5 中,包用文件夾來表示,包中的元素共享同一個命名空間,而且必須是可識別的,所以要有惟一的名稱或類型。包必須顯示包名,在附屬方框部分有選擇的顯示包內的元素。

  • 包的合併 - 包之間的合併鏈接符«merge»定義了源包元素與目標包同名元素之間的泛化關係。源包元素的定義被擴展來包含目標包元素定義。當源包元素與目標包內沒有同名元素時,目標包元素的定義不受影響。
  • 包的導入 - 導入鏈接符 «import»代表目標包的元素,在該例中是一個類 ,在源包中被引用要用非限定修飾名。源包的命名空間得到目標類的接口,目標包的命名空間則不受影響。
  • 嵌套鏈接符 - 源包和目標包間的嵌套鏈接符說明目標包徹底包含源包。

類圖

類圖(Class Diagram)展現了面向對象系統的構造模塊。描繪了模型或部分模型的靜態視圖,顯示它包含的屬性和行爲,而不是詳細描述操做的功能或完善方法。類圖最經常使用來表達多個類和接口之間的關係。泛化(Generalizations),聚合(aggregations)和關聯(associations)分別是類之間繼承,複合或應用,及鏈接的表現。

下面的圖顯示了類之間的聚合關係。弱聚合(淺色箭頭)表如今類 "Account" 使用 "AddressBook",可是沒必要要包含它的一個實例。強聚合(圖中的黑色箭頭)表示了目標類包含源類,例如,"Contact" 和 "ContactGroup"值被包含在 "AddressBook"中。



類(Classes)

類是定義對象所具備的屬性和行爲的元素。行爲用類能理解的合適消息和適合每條消息的操做來描述。 類中也可能定義約束,標記值,構造型。

類的標柱(Class Notation)

類用矩形表示。除類的名稱外,還能夠選擇性地顯示屬性和操做。 分欄分別用來顯示類的名稱,屬性和操做。

在下面圖中,類的類名顯示在最上面的分欄,它下面的分欄顯示詳細屬性,如:"center" 屬性顯示初始化的值。最後面的分欄顯示操做,如: setWidth,setLength 和 setPosition 以及他們的參數。 屬性和操做名前的標註表示了該屬性或操做的可見性: 若是使用 "+"號,這個屬性或操做是公共的 ; "-" 號則表明這個屬性或操做是私有的。 "#"號是這個屬性或操做被定義爲保護的," ~" 號表明包的可見性。



接口(Interfaces)

接口是實施者贊成知足的行爲規範,是一種約定。實現一個接口,類必需支持其要求的行爲,使系統按照一樣的方式,即公共的接口,處理不相關的元素。



接口有類似於類的外形風格,含有指定的操做,以下圖所示。若是沒有明確的詳細操做,也能夠畫成一個圓環。當畫成圓環的時候,到這個環形標柱的實現鏈接沒有目標箭頭。



表(Tables)

表儘管不是基本 UML 的一部分,仍然是「圖型」能完成的實例用。在右上角畫一個表的小圖標來表示。表屬性用「圖型」 «column»表示。 絕大多數表單有一個主鍵,是由一個或幾個字段組成的一個惟一的字碼組合加主鍵操做來訪問表格,主鍵操做「圖型」爲«PK»。 一些表有一個或多個外鍵,使用一個或多個字段加一個外鍵操做,映射到相關表的主鍵上去,外鍵操做「圖型」爲«FK»。



關聯(Associations)

關聯代表兩個模型元素之間有關係,一般用在一個類中被實現爲一個實例變量。鏈接符能夠包含兩端的命名的角色,基數性,方向和約束。關聯是元素之間普通的關係。若是多於兩個元素,也可使用菱形的關聯關係。當從類圖生成代碼時,關聯末端的對象將變成目標類中實例變量。見下圖示例 "playsFor" 將變成"Player"類中的實例變量。



泛化(Generalizations)

泛化被用來講明繼承關係。鏈接從特定類元到通常類元。泛化的含義是源類繼承了目標類的特性。下圖的圖顯示了一個父類泛化一個子類, 類「Circle」的一個實例將會有屬性 「 x_position」,「 y_position」 , 「radius」 和 方法 「display()」。 注意:類 "Shape" 是抽象的,類名顯示爲斜體。



下圖顯示了與上圖相同信息的視圖。



聚合(Aggregations)

聚合一般被用來描述由更小的組件所構成的元素。聚合關係表示爲白色菱形箭頭指向目標類或父類。

聚合的更強形式 -組合聚合(強聚合) - 顯示爲黑色菱形箭頭,用來組合每次最大化的包含組件。若是一個組合聚合的父類被刪除,一般與他相關的全部部分都會被刪除,可是,若是一個部件從組合中去掉,將不用刪除整個組合。組合是可遷,非對稱的關係和遞歸的。

下面的圖示:顯示了弱聚合和強聚合的不一樣。「 address book」 由許多 「contacts」 和 「contact groups」組成。 「contact group」 是一個「contacts」的虛分組; 「contact」能夠被包含在不止一個 「 contact group」。 若是你刪除一個「 address book」,全部的 「contacts」 和 「contact groups」 也將會被刪除;若是你刪除「 contact group」, 沒有 「contacts」會被刪除。



關聯類(Association Classes)

關聯類是一個容許關聯鏈接有屬性和操做的構造。下面的示例:顯示了遠不止簡單鏈接兩個類的鏈接,如給「employee」分配項目。「 employee」在項目中所起的做用是一個複雜的實體,既有自身的也有不屬於「employee」 或 「project」 類的細節。 例如,「 employee」能夠同時爲幾個項目工做,有不一樣的職務頭銜和對應的安全權限。



依賴(Dependencies)

依賴被用來描述模型元素間普遍的依賴關係。一般在設計過程早期顯示兩個元素之間存在某種關係,由於是初期而不能肯定具體是什麼關係,在設計過程末期,該繼承關係會被納入已有構造型 (構造型 能夠是實例化 «instantiate»,跟蹤 «trace»,導入 «import», 和其它的關係),或被替換成一個更明確類型的鏈接符。

跟蹤(Traces)

跟蹤關係是一種特殊化的依賴關係。鏈接模型元素或跨模型可是具備相同概念的模型元素集。跟蹤被常常用來追蹤需求和模型的變化。因爲變化是雙向的,這種依賴關係的順序一般被忽略。這種關係的屬性能夠被指定爲單向映射,但跟蹤是雙向的,非正式的和不多可計算的。

實現(Realizations)

是源對象執行或實現目標,實現被用來表達模型的可跟蹤性和完整性-業務模型或需求被一個或多個用例實現,用例則被類實現,類被組件實現,等等。這種實現貫穿於系統設計的映射需求和類等,直至抽象建模水平級。從而確保整個系統的一張宏圖,它也反映系統的全部微小組成,以及約束和定義它的細節。實現關係用帶虛線的實箭頭表示。



嵌套(Nestings)

嵌套鏈接符用來表示源元素嵌套在目標元素中。下圖顯示「 inner class」的定義,儘管在 EA 中,更多地按照着他們在項目層次視圖中的位置來顯示這種關係。



複合結構圖

複合結構圖顯示類的內部結構,包括它與系統其餘部分的交互點。也顯示各部分的配置與關係,這些部分一塊兒執行類元的行爲。

類元素已經在類圖部分被詳細地闡述,這部分用來講明類表現複合元素的方式,如:暴露接口,包含端口和部件。



部件

部件是表明一組(一個或多個)實例的元素,這組實例的擁有者是一類元實例,例如:若是一個圖的實例有一組圖形元素,則這些圖形元素能夠被表示爲部件,並能夠對他們之間的某種關係建模。注意:一個部件能夠在它的父類被刪除以前從父類中被去掉,這樣部件就不會被同時刪除了。 部件在類或組件內部顯示爲不加修飾的方框。



端口

端口是類型化的元素,表明一個包含類元實例的外部可視的部分。端口定義了類元和它的環境之間的交互。端口顯示在包含它的部件,類或組合結構的邊緣上。端口指定了類元提供的服務,以及類元要求環境提供的服務。 端口顯示爲所屬類元邊界指定的方框。



接口

接口與類類似,可是有一些限制,全部的接口操做都是公共和抽象的,不提供任何默認的實現。全部的接口屬性都必須是常量。然而,當一個類從一個單獨的超級類繼承而來,它能夠實現多個接口。 當一個接口在圖中單列出來,它既能夠顯示爲類元素的方框,帶 «interface» 關鍵字和代表它是抽象的斜體名稱,也能夠顯示爲圓環。



注意:圓環標註不顯示接口操做。當接口顯示爲類全部的接口,它們會被看成暴露接口引用。暴露接口能夠定義爲是提供的,仍是需求的。提供接口確認包含它的類元提供指定接口元素定義的操做,可經過類和接口間實現的鏈接來定義。需求接口說明該類元能與其餘類元進行通訊,這些類元提供了指定接口元素所定義的操做。需求接口可經過在類和接口間創建依賴鏈接來定義。 提供接口顯示爲「帶棒球體」,依附在類元邊緣。需求接口顯示爲「帶棒杯體」,也是依附在類元邊緣。



委託

委託鏈接器用來定義組件外部端口和接口的內部工做方式。委託鏈接器表示爲帶有 «delegate» 關鍵字的箭頭。它鏈接組件的外部約定,表現爲它的端口,到組件部件行爲的內部實現。



協做

協做定義了一系列共同協做的角色,它們集體展現一個指定的設計功能。協做圖應僅僅顯示完成指定任務或功能的角色與屬性。隔離主要角色是用來簡化結構和澄清行爲,也用於重用。一個協做一般實現一個模式。 協做元素顯示爲橢圓。



角色綁定

角色綁定鏈接器是一條從鏈接協做到所要完成該任務類元的連線。它顯示爲虛線,並在類元端顯示做用名。



表現

表現鏈接器用於鏈接協做到類元來表示此類元中使用了該協做。顯示爲帶關鍵字 «represents»的虛線箭頭。



發生 發生鏈接器用於鏈接協做到類元來表示此協做表現了(同原文)該類元;顯示爲帶關鍵字«occurrence»的虛線箭頭。



對象圖

對象圖(Object Diagram)能夠認爲是類圖的特殊情形,是類圖元素子集,被用來及時強調在某些點,類的實例間的關係。這對理解類圖頗有幫助。他們在構造上與類圖顯示沒有不一樣,可是反映出多樣性和做用。

類和對象元素

下面的圖顯示了類元素和對象元素外觀上的不一樣。注意:類元素包括三個部分,分別是名字欄,屬性欄和操做欄;對象元素默認爲沒有分欄。名稱顯示也有不一樣:對象名稱有下劃線,並可能顯示該對象實例化所用類元的名稱。



運行狀態

類元元素能夠有任意數量的屬性和操做。在對象實例中不會被顯示出來。但可能定義對象的運行狀態,顯示特殊實例的屬性設置值。



類和對象圖示例

下圖是一個對象圖,其中插入了類定義圖。它例示如何用對象圖來測試類圖中任務多重性的方法。「car」 類對 「wheel」 類有「1 對多」 的多重性,可是若是已經選擇用「1 對 4」 來替代,那樣就不會在對象圖顯示「3 個輪子」的汽車。



活動圖

UML 中,活動圖用來展現活動的順序。顯示了從起始點到終點的工做流,描述了活動圖中存在於事件進程的判斷路徑。活動圖能夠用來詳細闡述某些活動執行中發生並行處理的狀況。活動圖對業務建模也比較有用,用來詳細描述發生在業務活動中的過程。 一個活動圖的示例以下所示。



下面描述組成活動圖的元素。

活動

活動是行爲參數化順序的規範。活動被表示爲圓角矩形,內含所有的動做,工做流和其餘組成活動的元素。



動做

一個動做表明活動中的一個步驟。動做用圓角矩形表示。



動做約束

動做能夠附帶約束,下圖顯示了一個帶前置條件和後置條件的動做。



控制流

控制流顯示一個動做到下一個動做的流。表示爲帶箭頭實線



初始節點

一個開始或起始點用大黑圓點表示,以下圖。



結束節點

結束節點有兩種類型:活動結束節點和流結束節點。活動結束節點表示爲中心帶黑點的圓環。



流結束節點表示爲內部爲叉號的圓環。



這兩種不一樣類型節點的區別爲:流結束節點代表單獨的控制流的終點。活動結束終點是活動圖內全部控制流的結束。

對象和對象流

對象流是對象和數據轉遞的通道。對象顯示爲矩形。



對象流顯示爲帶箭頭的鏈接器,代表方向和經過的對象。



一個對象流在它的至少一個終端有一個對象。在上圖中,能夠採用帶輸入輸出引腳的速記標柱表示。



數據存儲顯示爲帶 «datastore» 關鍵字的對象。



判斷節點和合並節點

判斷節點和合並節點是相同標註:菱形。它們能夠被命名。從判斷節點出來的控制流有監護條件,當監護條件知足時,能夠對流控制。下圖顯示了判斷節點和合並節點的使用。



分叉和結合節點

分叉和結合節點有一樣的標柱:垂直或水平條(方向取決於工做流從左到右,仍是從上到下)。它們說明了控制的併發線程的起始和終點,下圖顯示他們的使用示例。



結合節點與合併節點不一樣之處在於:結合節點同步兩個輸入量,產生一個單獨的輸出量。來自結合節點的輸出量要接收到全部的輸入量後才能執行。合併節點直接將控制流傳遞經過。若是兩個或更多的輸入量到達合併節點。則它的輸出流指定的動做會被執行兩次或更屢次。

擴展域

擴展域是會執行屢次的結構活動域。輸入輸出擴展節點表示爲一組「3 廂」 ,表明多個選擇項。關鍵詞 "iterative", "parallel" 或 "stream"顯示在區域的左上角



異常處理器

異常處理器在活動圖中能夠建模。



可中斷活動區

可中斷活動區環繞一組能夠中斷的動做。在下面很是簡單的例子中: 當控制被傳遞到結束訂單 "Close Order" 動做,定單處理"Process Order" 動做會執行直到完成,除非"Cancel Request"取消請求中斷被接受,這會將控制傳遞給"Cancel Order"動做。



分割

一個活動分割顯示爲垂直或水平泳道。在下圖中,分割被用來在活動圖中分隔動做,有在 "accounting department"中執行的,有在 "customer"中執行的。



狀態機圖

狀態機圖(state-machine-diagram)對一個單獨對象的行爲建模,指明對象在它的整個生命週期裏,響應不一樣事件時,執行相關事件的順序。

以下示例, 下列的狀態機圖顯示了門在它的整個生命週期裏如何運做。



門能夠處於如下的三種狀態之一: "Opened"打開狀態, "Closed"關閉狀態,或者"Locked"鎖定狀態。 它分別響應事件:「Open」開門, 「Close」關門, 「Lock」鎖門 和 「Unlock」解鎖。 注意:不是全部的事件,在全部的狀態下都是有效的。如:一個門打開的時候是不可能鎖定的,除非你關上門。而且,狀態轉移可能有附加監護條件:假設門是開的,若是「doorWay->isEmpty」(門是空的)被知足,那麼它只能響應關門事件。狀態機圖使用的語法和約定將在下面的部分進行討論。

狀態

狀態被表示爲圓角矩形,狀態名寫在裏面。



起始和結束狀態

初始狀態表示爲實心黑圓環,能夠標註名稱。結束狀態表示爲中心帶黑點圓環,也能夠被標註名稱。



轉移

一個狀態到下一個狀態的轉移表示爲帶箭頭實線。轉移能夠有一個「Trigger」觸發器,一個「Guard」監護條件和一個「effect」效果。以下所示:



"Trigger"觸發器是轉移的原由,它能夠是某個條件下的一個信號,一個事件,一個變化或一個時間通路。"Guard"監護是一個條件,並且必須爲真,以便於讓觸發器引發轉移。效果"Effect"是直接做用到對象上的一個動做,該對象具備作爲轉移結果的狀態機。

狀態活動

在上面的狀態轉移示例中,一個效果與該轉移相關聯。若是目標狀態有多個轉移到達,而且每個轉移都有相同的效果與它相關聯,那最好將該效果與目標狀態相關聯,而不與轉移相關聯。你能夠經過爲這個狀態定義初始動做來實現。下圖顯示了一個帶入口動做和出口動做的狀態。



能夠定義發生在事件上的動做或一直髮生的動做。每一種類型的動做是能夠定義任意數量的。

自轉移

一個狀態可能有一個返回到自身的轉移,以下圖。效果與轉移關聯是十分有幫助。



複合狀態

一個狀態機圖能夠有子狀態機圖,以下圖所示:



可選擇不一樣方式顯示相同信息,以下圖所示:



上面版本的標註說明"Check PIN"的子狀態機圖顯示在單獨的圖中。

入口點

有時,你不想在正常的初始狀態進入子狀態機。例以下面的子狀態機,它一般從"初始化"狀態開始,可是若是由於某些緣由,它沒必要執行初始化,可能靠轉移到指定的入口點來從 "Ready" 狀態開始。



下圖顯示了狀態機的上一層。



出口點

有與入口點相相似的方式,它可能也指定可選擇的出口點。下圖給出了主處理狀態執行後,所執行狀態的去向將取決於該狀態轉移時所使用的路徑。



選擇僞狀態

選擇僞狀態顯示爲菱形,有一個轉移輸入,兩個或多個輸出。下圖顯示無論到達哪個狀態,通過選擇僞狀態後的去向,取決於在僞狀態中執行時所選擇的消息格式。



鏈接僞狀態

鏈接僞狀態用來將多個狀態轉移連接在一塊兒。一個單獨的鏈接僞狀態能夠有一個或多個輸入和一個或多個輸出,監護可能應用於每個轉移,鏈接是沒有語義的。鏈接能夠把一個輸入轉移分紅多個輸出轉移來實現一個靜態分支。與之對照的是選擇僞狀態實現一個動態條件分支。



終止僞狀態

進入終止僞狀態是指狀態機生命線已經終止。終止僞狀態表示爲叉號。



歷史狀態

歷史狀態用來當狀態機中斷時,恢復狀態機以前狀態。下面例圖說明了歷史狀態的使用。這個例子是關於洗衣機的狀態機。

在這個狀態機中,當洗衣機運行時,它會按照"Washing" 到 Rinsing"再到"Spinning"來進行。若是電源被切斷 ,洗衣機會中止運行並進入"Power Off" 狀態。當電源恢復,運行狀態在"History State"符號處進入,表示它會從上次離開的地方恢復。

併發區

一個狀態能夠被分紅幾個不一樣的區,包含同時存在和執行的子狀態。下面的例子顯示狀態 "Applying Brakes", "front brake"和"rear brakes" 將同時獨立運做。注意使用了分叉和結合僞狀態而不是選擇和合並僞狀態。這些符號用來同步併發的線程。



用例圖

用例圖用來記錄系統的需求,它提供系統與用戶及其餘參與者的一種通訊手段。

執行者

用例圖顯示了系統和系統外實體之間的交互。這些實體被引用爲執行者。執行者表明角色,能夠包括:用戶,外部硬件和其餘系統。執行者每每被畫成簡筆畫小人。也能夠用帶«actor»關鍵字的類矩形表示。



在下圖中,執行者能夠詳細的泛化其餘執行者:



用例

用例是有意義的單獨工做單元。它向系統外部的人或事提供一個易於觀察的高層次行爲視圖。 用例的標註符號是一個橢圓。



使用用例的符號是帶可選擇箭頭的鏈接線,箭頭顯示控制的方向。下圖說明執行者 "Customer"使用 "Withdraw"用例。



用途鏈接器(uses connector)能夠有選擇性的在每個端點有多重性值,以下圖,顯示客戶一次可能只執行一次取款交易。可是銀行能夠同時執行許多取款交易。



用例定義

一個典型的用例包括:

  • 名稱和描述 - 用例一般用一個動詞詞組定義,並且有一個簡短的文字說明。
  • 需求 - 需求定義了一個用例必須提供給終端用戶的正式功能性需求。它們符合構造方法創建的功能性規範。一個需求是用例將執行一個動做或提供多個值給系統的約定或承諾。
  • 約束 - 一個約束是一個用例運行的條件或限制。它包括:前置條件,後置條件和不變化條件 。前置條件指明瞭用例在發生以前須要符合的條件。後置條件用來講明在用例執行以後一些條件必須爲"真"。不變化條件說明用例整個執行過程當中該條件始終爲"真"。
  • 情形 - 情形是用例的實例在執行過程當中,事件發生流程的形式描述。它定義了系統和外部執行者之間的事件指定順序。一般用文本方式來表示,並對應時序圖中的文字描述。
  • 情形圖
  • 附加信息

包含用例

用例可能包含其餘用例的功能來做爲它正常處理的一部分。一般它假設,任何被包含的用例在基本程序運行時每一次都會被調用。下面例子:用例「卡的確認」 在運行時,被用例「取錢」看成一個子部分。



用例能夠被一個或多個用例包含。經過提煉通用的行爲,將它變成能夠屢次重複使用的用例。有助於下降功能重複級別。

擴展用例

一個用例能夠被用來擴展另外一個用例的行爲,一般使用在特別狀況下。例如:假設在修改一個特別類型的客戶訂單以前,用戶必須獲得某種更高級別的許可,而後「得到許可」用例將有選擇的擴展常規的「修改訂單」用例。



擴展點 - 擴展用例的加入點被定義爲擴展點。



系統邊界 - 它用來顯示用例在系統內部,執行者在系統的外部。



通訊圖

通訊圖,之前稱之爲協做圖,是一種交互圖,所顯示消息與時序圖類似,可是它更側重於對象間的聯繫

在通訊圖中,對象之間顯示關聯鏈接器。消息附加到這些關聯上,顯示短箭頭指向消息流的方向。消息的順序經過編號碼顯示。

下面的兩個圖用通訊圖和時序圖分別顯示相同的信息。儘管咱們可能從通訊圖的編號碼獲得消息順序,但它不是當即可見的。通訊圖十分清楚的顯示了鄰近對象間所有完整的消息傳遞。





交互概述圖

一個交互概覽圖是活動圖的一種形式,它的節點表明交互圖。交互圖包含時序圖,通訊圖,交互概覽圖和時間圖。 大多數交互概覽圖標註與活動圖同樣。例如:起始,結束,判斷,合併,分叉和結合節點是徹底相同。而且,交互概覽圖介紹了兩種新的元素:交互發生和交互元素。

交互發生

交互發生引用現有的交互圖。顯示爲一個引用框,左上角顯示 "ref" 。被引用的圖名顯示在框的中央。



交互元素

交互元素與交互發生類似之處在於都是在一個矩形框中顯示一個現有的交互圖。不一樣之處在內部顯示參考圖的內容不一樣。



將它們放在一塊兒

全部的活動圖控件,均可以相同地被使用於交互概覽圖,如:分叉,結合,合併等等。它把控制邏輯放入較低一級的圖中。下面的例子就說明了一個典型的銷售過程。子過程是從交互發生抽象而來。



時序圖

時序圖是交互圖的一種形式,它顯示對象沿生命線發展,對象之間隨時間的交互表示爲從源生命線指向目標生命線的消息。時序圖能很好地顯示那些對象與其它那些對象通訊,什麼消息觸發了這些通訊,時序圖不能很好顯示覆雜過程的邏輯。

生命線

一條生命線在時序圖中表明一個獨立的參與者。表示爲包含對象名的矩形,若是它的名字是"self",則說明該生命線表明控制帶時序圖的類元。



有時,時序圖會包含一個頂端是執行者的生命線。這狀況說明掌握這個時序圖的是用例。健壯圖中的邊界,控制和實體元素也能夠有生命線。



消息

消息顯示爲箭頭。消息能夠完成傳輸,也可能丟失和找回,它能夠是同步的,也能夠是異步的,便可以是調用,也能夠是信號。在下圖中,第一條消息是同步消息(標爲實箭頭)完成傳輸,並隱含一條返回消息。第二條消息是異步消息 (標爲實線箭頭),第三條是異步返回消息(標爲虛線)。



執行發生

向下延伸的細條狀矩形表示執行事件或控制焦點的激活。在上圖中有三個執行事件。第一個是源對象發送兩條消息和收到兩條回覆。第二個是目標對象收到一條同步消息並返回一條回覆。第三個是目標對象收到一條異步消息並返回一條回覆。

內部通訊

內部消息表現爲一個操做的遞歸調用,或一個方法調用屬於同一個對象的其餘方法。顯示爲生命線上執行事件的嵌套控制焦點。



迷路消息和拾取消息

迷路消息是那些發送了卻沒有到達指定接收者,或者到達的接收者再也不當前圖中。拾取消息是收到來自那些未知的發送者,或者來自沒有顯示在當前圖的發送者的消息。它們都代表是去往或來自一個終點元素。



生命線開始與結束

生命線能夠在時序圖時間刻度範圍內建立和銷燬,在下面的例子中,生命線被中止符號(叉號)終止。在前面的例子中,生命線頂端的符號(Child)顯示在比建立它的對象符號(parent)沿頁面要低的位置上。下圖顯示建立和終止對象。



時間和期限約束

消息默認顯示爲水平線。由於生命線顯示爲沿屏幕向下的時間通道,因此當給實時系統建模,或是有時間約束的業務過程建模,考慮執行動做所需時間長度是很重要的。所以能夠給消息設置一個期限約束,這樣的消息顯示爲下斜線。



複合片斷

如前面所說,時序圖不適合表達複雜的過程邏輯。在一種狀況下,有許多機制容許把必定程度的過程邏輯加入到圖中,並把它們放到複合片斷的標題下。複合片斷是一個或多個處理順序被包含在一個框架中,並在指定名稱的環境下執行。片斷能夠是:

  • 選擇性片斷 (顯示 「alt」) 爲 if…then…else 結構建模。
  • 選項片斷 (顯示 「opt」) 爲 "switch"(開關) 結構建模。
  • 中斷片斷對被處理事件的可選擇順序建模,而不是該圖的其餘部分。
  • 並行片斷(顯示 「par」) 爲併發處理建模。
  • 弱順序片斷 (顯示 「seq」) 包含了一組消息,這組消息必須在後繼片斷開始以前被處理。但不會把片斷內消息的前後順序強加到不共享同一條生命線的消息上。
  • 嚴格順序片斷 (顯示 「strict」) 包含了一系列須要按照給定順序處理的消息。
  • 非片斷 (顯示 「neg」) 包含了一系列不可用的消息。
  • 關鍵片斷 具備關鍵部分。
  • 忽略片斷 聲明一個沒有意義的消息,若是它出如今當前上下文中。
  • 考慮片斷與忽略片斷相反,不包含在考慮片斷內的消息都應該被忽略。
  • 斷言片斷 (顯示 「assert」)標明任何沒有顯示爲聲明操做數的順序都是無效的。
  • 循環片斷 包含一系列被重複的消息。

下圖顯示的是循環片斷:



這也是一個相似於複合片斷的交互發生。 交互發生被其餘圖參考,顯示爲左上角帶"ref",將被參考圖名顯示在方框的中間。

門是鏈接片斷內消息和片斷外消息的鏈接點。 在 EA 中,門顯示爲片斷框架上的小正方形。做用爲時序圖與頁面外的鏈接器。 用來表示進來的消息源,或者出去消息的終點。下面兩個圖顯示它們在實踐中的使用。注意:" top level diagram"中的門用消息箭頭指向參考片斷,在這裏沒有必要把它畫成方塊。





部分分解

一個對象能夠引出多條生命線,使得對象內部和對象之間的消息顯示在同一圖上。



狀態常量/延續

狀態常量是生命線的約束,運行時始終爲"真"。顯示爲兩側半圓的矩形,以下圖:



延續雖與狀態常量有一樣的標註,可是被用於複合片斷,並能夠延伸跨越多條生命線。

時間圖

UML 時間圖被用來顯示隨時間變化,一個或多個元素的值或狀態的更改。也顯示時控事件之間的交互和管理它們的時間和期限約束。

狀態生命線

狀態生命線顯示隨時間變化,一個單項狀態的改變。不論時間單位如何選擇,X 軸顯示通過的時間,Y 軸被標爲給出狀態的列表。狀態生命線以下所示:



值生命線

值生命線顯示隨時間變化,一個單項的值的變化。X 軸顯示通過的時間,時間單位爲任意,和狀態生命線同樣。平行線之間顯示值,每次值變化,平行線交叉。以下圖所示。



將它們放在一塊兒

狀態和值的生命線能疊加組合。它們必須有相同的 X 軸。 消息能夠從一個生命線傳遞到另外一個。每個狀態和值的變換能有一個定義的事件,一個時間限制是指一個事件什麼時候必須發生,和一個期限限制說明狀態或值多長時間必須有效。一旦這些已經被應用,其時間圖可能顯示以下。



UML 工具

UML 工具很是多,到底哪一種工具好,真的是仁者見仁智者見智。這裏列舉一些我接觸過的 UML 工具:

億圖

國內開發的、收費的繪圖工具。圖形模板、素材很是全面,樣式也很精美,能夠導出爲 word、pdf、圖片。

億圖官網



Visio

Office 的繪圖工具,特色是簡單、清晰。

Visio 官網



StarUML

樣式精美,功能全面的 UML 工具。

StarUML 官網



Astah

樣式不錯,功能全面的繪圖工具。

Astah 官網



ArgoUML

UML 工具。

ArgoUML 官網



ProcessOn

在線繪圖工具,特色是簡潔、清晰。

ProcessOn 官網

drawio

開源的在線繪圖工具,特色是簡潔、清晰。

drawio 官網

更多內容

:notebook: 本文已歸檔到:「notes

參考資料

相關文章
相關標籤/搜索