1-用例圖
概述
-
展現了一組用例、參與者以及他們之間的關系。
-
用例圖從用戶角度描述系統的靜態使用情況,用於建立需求模型。
用例特征
- 保證用例能夠正確捕捉功能性需求,判斷用例是否准確的依據。
-
用例是動賓短語
-
用例是相互獨立的
-
用例是由用戶參與者啟動的
-
用例要有可觀測的執行結果
-
一個用例是一個單元
參與者 Actor
- UML中,參與者使用一個小人表示:
-
參與者為系統外部與系統直接交互的人或事務,於系統外部與系統發生交互作用
-
參與者是角色而不是具體的人
-
代表參與者在與系統打交道時所扮演的角色
-
系統實際運作中,一個實際用戶可能對應系統的多個參與者。不同角色也可以只對應一個參與者,從而代表同一參與者的不通實例
用例 Use Case
系統外部可見的一個系統功能單元。系統的功能由系統單元所提供,並通過一系列系統單元與一個或多個參與者之間交換的消息所表達。
系統單元用橢圓表示,橢圓中的文字簡述系統功能:
關系 Relationship
常見關系類型有關聯、泛化、包含和擴展
關聯 Association
表示參與者與用例之間的通信,任何一方都可發送或接受消息。
箭頭指向:指向消息接收方:
子系統 SubSystem
- 用來展示系統的一部分功能(緊密聯系)
泛化 Inheritance
繼承關系,子用例和父用例相似,但表現出更特別的行為;子用例將繼承父用例的所有結構、行為和關系。子用例可以使用父用例的一段行為,也可以重載它。父用例通常是抽象。。
箭頭指向:指向父用例
2-類圖
- 描述系統中的類,以及各個類之間的關系的靜態試圖。
- 表示類、接口以及它們之間的協作關系,用於程序設計階段。
注意:
- 抽象類或抽象方法用斜體表示
- 如果是接口,則在類名上方加 <<Interface>>
- 字段和方法返回值的數據類型非必需
- 靜態類或靜態方法加下划線
類圖實例:
類圖中的事務及解釋
如圖,類圖從上到下分為三部分,分別為類名、屬性和操作
- 屬性:如果有屬性,則每一個屬性都必須有一個名字,另外還可以有其它的描述信息,如可見性、數據類型、缺省值等
- 操作:如果有操作,則每一個操作也都有一個名字,其它可選的信息包括可見性、參數的名字、參數類型、參數缺省值和操作的返回值的類型等
類圖中的六種關系
1.實現關系 implements (類實現接口)
- 用空心三角虛線表示
2.泛化關系 extends (表示一般與特殊的關系) is-a
- 用空心三角實線表示
3.組合關系 (整體與部分的關系) contains-a
- 實心菱形實現表示
eg.有頭類、身體類與人類類三個類,則人類類中應包含頭類及身體類這兩個屬性,則人類類與頭類和身體的關系即為組合關系。
注: 在組合關系中,整體對象可以控制部分對象的生命周期,一旦整體對象不存在,部分對象也將不存在,部分對象不能脫離整體對象而存在。例如,頭和嘴的關系,沒有了頭,嘴也就不存在了。
4.聚合關系 (整體與部分的關系) has-a
- 空心菱形實線表示
eg.BusDriver類有Hat類與Clothes屬性,BusDriver類沒了Hat與Clothes仍可存在
注:聚合關系也是通過成員對象來實現的,其中成員對象是整體對象的一部分,但是成員對象可以脫離整體對象而獨立存在。
5.關聯關系(一般關聯關系) (對象之間的一種引用關系)
- 關聯可以是雙向的,也可以是單向的。在 UML 類圖中,雙向的關聯可以用帶兩個箭頭或者沒有箭頭的實線來表示,單向的關聯用帶一個箭頭的實線來表示,箭頭從使用類指向被關聯的類。也可以在關聯線的兩端標注角色名,代表兩種不同的角色。
關聯關系是類與類之間最常用的一種關系,分為一般關聯關系、聚合關系和組合關系。
6.依賴關系
- 依賴關系使用帶箭頭的虛線來表示,箭頭從使用類指向被依賴的類。
類關系的記憶
3-時序圖
時序圖將交互關系表示為一個二維圖
注:
- 主要用於展示對象之間交互的順序。
- 縱向代表時間軸,時間沿豎線向下延伸。
- 橫向代表了在協作中各獨立對象的類元角色。
- 類元角色用生命線表示。
- 當對象存在時,角色用一條虛線表示。
- 當對象的過程處於激活狀態時,生命線是一個雙道線。
- 消息用從一個對象的生命線到另一個對象生命線的箭頭表示。箭頭以時間順序在圖中從上到下排列。
生命線
- 生命線可帶下划線
- 當使用下划線時意味着序列圖中的生命線代表一個類的特定實體。
同步消息&
同步消息: 發送人再它繼續之前將等待同步消息相應
異步消息:在發送方繼續之前無需等待相應的消息
注釋
虛線引出一條說明注釋
約束
約束格式: [Boolean Test]
組合片段
用來解決交互執行的條件和方式,它允許在時序圖中直接表示邏輯組件,用於通過指定條件或子進程的應用區域。
類型與說明如下:
抉擇Alt:抉擇用來指明在兩個或更多的消息序列之間的互斥的選擇,相當於經典的if..else..。
選項Opt:包含一個可能發生或不發生的序列
循環Loop:片段重復一定次數。 可以在臨界中指示片段重復的條件。
時序圖的畫法及應用實踐
- 繪制交互場景中的角色及對象梳理出來
- 從出發某個交互的某個消息開始,在生命線之間從上到下依次畫出所有消息。
eg.學生在教務系統中查詢其課程的成績
在本例中,角色有學生,對象有教務系統、課程、成績。
對象的梳理是一個相對主觀的過程,比如本例中,課程以及成績分別作為了對象存在,也可以合並為數據庫這一個對象。請注意:角色以及對象,都為名詞,動詞不可作為角色和對象,如“成績查詢”不可作為對象。
學生的登錄驗證作為本時序圖的前置行為,可直接引用到本時序圖中,也可忽略不畫;學生進入成績查詢頁面后,頁面會加載本學生的成績查詢課程列表,並顯示出課程對應的成績。