第 11 章
互動圖
– 循序、通訊、時序與互動概觀 圖 11-1 互動圖的基礎 11-2 循序圖 11-3 通訊圖 11-4 時序圖 11-5 互動概觀圖 11-6 繪製互動圖 11-7 綜合練習11-1 互動圖的基礎 - 說明
互動圖( Interaction Diagrams )如同其名是用來描述模型 中不同元素之間的互動,即描述系統的動態行為,可以清 楚呈現系統與使用者操作之間的互動;一組物件之間如何 使用訊息互動來合作完成指定的行為。 互動圖可以用來呈現 4+1 觀點軟體系統模型的邏輯觀點, 如下圖所示:11-1 互動圖的基礎 - 種類
循序圖( Sequence Diagrams ):使用時間軸方式描述物 件之間的互動,強調物件之間訊息傳遞的時間順序。 通訊圖( Communication Diagrams ):描述物件的互動, 強調物件之間的關係、訊息流向和控制流程,在 1.x 版稱 為合作圖( Collaboration Diagrams )。 時序圖( Timing Diagrams ): UML 2.0 版支援的圖形,描
述詳細的時間資訊,互動元素之間的條件資訊和狀態改變 。
互動概觀圖( Interaction Overview Diagrams ): UML 2.0
版支援的圖形,使用循序、通訊和時序圖以高階方式描述 系統發生的重要互動。
11-1 互動圖的基礎 - 目的
互動圖的主要目的是使用視覺化方式顯示系統的 互動行為,因為視覺化顯示互動是一件困難的工 作,所以我們需要建立不同觀點的互動圖來描述 系統的行為。基本上,互動圖的主要目的為: • 捕捉系統的動態行為。 • 描述系統物件之間的訊息流程。 • 描述系統物件的結構化組織。 • 描述一組物件之間訊息傳遞的互動。11-2
循序圖
11-2-1 循序圖的基本符號 11-2-2 循序圖的訊息
11-2-3 框架
11-2 循序圖 - 說明
循序圖( Sequence Diagram )是使用時間軸來描 述物件之間的互動,強調物件之間訊息傳遞的時 間順序,請注意是時間順序,而不是花費的時間 ,關於花費時間部分可以使用時序圖來描述。 在循序圖的垂直軸是時間,可以顯示時間順序的 訊息傳送;水平軸是隨著訊息傳送,從一個參與 者物件旅行至另一個參與者物件的互動過程。11-2 循序圖 - 範例
例如:圖書銷售系統( Book Sales System )產生圖書銷售
11-2-1 循序圖的基本符號 - 參與者
參與者( Participants )簡單的說就是物件,它是使用方框 表示,也可以使用演員符號,參與者是位在循序圖上方且 從左至右依序排列,在方框中是參與者名稱,其基本語法 如下所示: 名稱 : 類別名稱 上述語法的「 : 」分號前是物件名稱;之後是類別名稱, 如下圖所示:11-2-1 循序圖的基本符號 - 時間與生命線
在參與者下方垂直的虛線 稱為「生命線」( Lifeline ),代表互動發生順序的 時間軸,時間是由上而下 增加,如右圖所示:11-2-1 循序圖的基本符號 - 訊息 ( 說明 )
訊息( Messages )是從來源參與者(或稱送出參與者)
的生命線送到目的參與者(或稱接收參與者)的生命線, 可以讓接收訊息的參與者進入啟動棒來執行所需操作,如 下圖所示:
11-2-1 循序圖的基本符號 - 訊息 ( 種類 )
在循序圖的訊息可以分為兩種,如下所示: • 同步訊息( Synchronous Messages ):當參與者送出同 步訊息,必須等到回應後才會繼續執行,同步訊息是 使用實心三角形箭頭線來表示,例如:上述循序圖的 第 1 個訊息和前述 gen: 報表產生器物件送給 report: 圖 書報表物件的 setCreateDate() 就是同步訊息。 • 非同步訊息( Asynchronous Messages ):參與者送出 非同步訊息,並不需要等到回應就可以繼續執行。非 同步訊息是使用箭頭來表示,例如:上述循序圖的第 2 個訊息。11-2-1 循序圖的基本符號 - 訊息 ( 語法 )
循序圖的訊息基本語法,如下所示: 傳回值 = 訊息名稱 ( 參數列 ) : 傳回型態 上述訊息語法依序是傳回值、訊息名稱(通常是 類別的方法名稱)、參數列和傳回型態。一些訊 息的範例,如下所示: 送出訂單 () setCreateDate(date) d = getReportDescription(id) d = getReportDescription(id) : ReportDescription11-2-2 循序圖的訊息 - 呼叫訊息
呼叫訊息( Call Message )是循序圖最常用的訊息,它是
呼叫目標參與者的操作,例如:客人( Customer )在自 動販賣機面板投錢操作的循序圖,如下圖所示:
11-2-2 循序圖的訊息 - 回傳訊息
回傳訊息是表示呼叫訊息的傳回值,一般來說,它並非必 須符號,因為可以使用啟動棒結束來隱含代表。循序圖的 回傳訊息是使用虛線→表示呼叫訊息的操作結束,在上方 是傳回值的描述。 例如:客戶在自動販賣機的面板投錢後,操作面板送出檢 查金額 () 訊息至記錄器物件,可以傳回可選擇產品的清單 ,如下圖所示:11-2-2 循序圖的訊息 - 巢狀訊息
巢狀訊息( Nested Message )就是當呼叫訊息送至目的參 與者後,就會進一步觸發目的參與者送出更多的訊息,這 些訊息稱為原觸發訊息的巢狀訊息。 例如:當客戶在自動販賣機的面板投錢後,在操作面板可 以顯示可購買的產品,以便讓客戶選擇購買的產品,如下 圖所示:11-2-2 循序圖的訊息 - 自身訊息
自身訊息( Self Message )就是送出呼叫訊息給 自己,以 Java 語言來說 ,就是呼叫同一個物件 的方法(通常是一些宣 告成 private 的工具方法 )。例如:旅館 aHotel 物件送出自身訊息檢查 指定日期是否有空房間 ,如右圖所示:11-2-2 循序圖的訊息 - 遞迴訊息
訊息還可以遞迴將訊 息傳送至物件自己的 同一個操作,稱為遞 迴訊息( Recursion Messages )。例如: 計算階層 N! 的 Factorial 物件 f ,如 右圖所示:11-2-2 循序圖的訊息 - 產生訊息與消滅訊息
在循序圖的物件可以送出產生訊息 <<create>> 建立其他實
例( Instances );或送出消滅訊息 <<destroy>> 表示物件 生命周期的結束。例如:從購物車新增和刪除訂單項目的 循序圖,如下圖所示:
11-2-3 框架
UML 2.x 版的框架( Frame )提供 UML 圖形一個
圖形邊界,它是一個大型的長方形框,在框架左 上角顯示框架名稱,實際 UML 圖形是位在長方形 框的範圍之內,如下圖所示:
1124 複雜互動的互動片斷
-說明
對於循序圖複雜互動的條件與迴圈,舊版 UML 1.x
版在此部分並沒有明確的定義,所以可以使用多 種表示方法來呈現。
UML 2.0 版是使用組合片斷( Combined Fragment
)來處理複雜互動,它是由一至多個互動片斷 ( Interaction Fragment )組成,通常我們是將組 合片斷置於一個框架中。
1124 複雜互動的互動片斷
1124 複雜互動的互動片斷
-互動運算子
UML 2.x 版常用的互動運算子,如下表所示:
互動運算子 說明
opt 當防衛條件為真 true 時才執行;偽 false 就不執行此框架的互 動,相當於 Java 語言的 if 條件
alt 指防衛條件為互斥選擇條件( Mutually Exclusive Choice ), 相當於 Java 語言的 if/else 、 if/else if 或 switch 的二選一或多選
一條件敘述
loop 當防衛條件為真 true 時就重複執行此片斷的互動,我們可以 指明 loop(n) 表示執行 n 次迴圈,相當於 Java 語言的 for 迴圈
ref 參考其他互動的 sd 互動片斷(即循序圖片斷) par 並行執行的互動片斷
1124 複雜互動的互動片斷
-Opt 片斷
Opt 片斷是建立條件訊息,只有當防衛條件為真
true 時,才執行互動運算元。例如:使用者從 ATM 自動櫃員機提款的循序圖,如下圖所示:
1124 複雜互動的互動片斷
-Alt 片斷
Alt 片斷是互斥條件的訊息,可以依據防衛條件,執行其 中之一的互動運算元,例如:繼續之前的 ATM 提款範例 ,如果通過驗證,就可以送出現金;反之顯示錯誤訊息, 如下圖所示:1124 複雜互動的互動片斷
-Loop 片斷
Loop 片斷就是迴圈,可以重複執行片斷的互動運算元,例 如:繼續之前的 ATM 提款範例, ATM 會重複送出 3 次驗 證請求,如果都無法通過驗證,才會顯示錯誤訊息,如下 圖所示:1124 複雜互動的互動片斷
-Ref 片斷 ( 說明 )
Ref 片斷可以參考其他互動的 sd 框架,以便在複 雜循序圖中,簡化部分循序圖來強調所需的互動 ,另一種 Ref 片斷的應用如同函數,可以讓我們 在循序圖重複使用 sd 框架。1124 複雜互動的互動片斷
-Ref 片斷 ( 範例 1)
例如:在網站選擇建立不同種類帳戶的循序圖, 此循序圖分為兩部分,如下所示: • Ref 片斷:在循序圖參考名為選擇帳戶種類的循序圖, 如下圖所示:1124 複雜互動的互動片斷
-Ref 片斷 ( 範例 2)
• Sd 框架:一個框架的循序圖,它是被 Ref 片斷參考的 循序圖,如下圖所示:
11-3 通訊圖
11-3-1 通訊圖的基本符號 11-3-2 通訊圖的訊息
11-3 通訊圖 - 說明
通訊圖( Communication Diagrams )可以描述物 件之間的互動,不過,通訊圖強調的是物件之間 的關係和訊息流向,可以顯示多個物件如何一起 合作來完成指定工作的行為。 通訊圖和循序圖的主要差異,在於循序圖是以時 間軸顯示物件之間的訊息傳遞;通訊圖則是以空 間角度顯示物件之間訊息傳遞的路徑,換句話說 ,相同資訊的循序圖可以轉換成通訊圖。11-3 通訊圖 - 範例
將第 11-2-1 節循序圖轉換成通訊圖,如下圖所示
11-3-1 通訊圖的基本符號 - 參與者
通訊圖的參與者( Participants )符號是長方形, 中間是名稱,其基本語法如下所示: 名稱 : 類別名稱 上述語法的「 : 」分號前是物件名稱;之後是類 別名稱,和循序圖相同,我們也可以省略之前的 名稱來建立匿名物件。11-3-1 通訊圖的基本符號 - 連接
在通訊圖的連接( Links )是一條沒有箭頭的直線
,可以連接 2 位參與者,表示之間擁有傳送訊息 的管道,可以傳送訊息;反之如果沒有建立連接 ,就表示這 2 位參與者之間不允許傳送訊息。
11-3-1 通訊圖的基本符號 - 訊息
通訊圖的訊息格式和循序圖相似,其基本語法如下所示: 循序編號 : 訊息名稱 ( 參數列 ): 傳回型態 在第一層的第 1 個訊息編號是 1 ,第 2 個是 2 、 3 、 4 , 依序增加代表其時間順序,如下所示: 1: 2: 3: 4: 下一層訊息擁有相同字首編號,訊息編號 1 的下一層循序 編號擁有字首 1. ,每一個 . 小數點代表一個階層,依序為 1.1 、…、 1.4 ,如下所示: 1.1: 1.2: 1.3: 1.4:1132 通訊圖的訊息
-建立物件實例的訊息
在通訊圖建立物件實例的訊息是 create() ,當訊息名稱為
create 時,就表示它是建立物件實例的訊息,我們也可以 使用模版 <<create>> 來表示,如下圖所示:
1132 通訊圖的訊息
-同步訊息
同步訊息在循序圖需要使用 Par 片斷來建立,通
訊圖就只需在循序編號加上英文字母的字尾來表 示是同步訊息,如下圖所示:
1132 通訊圖的訊息
-重複訊息
在通訊圖的訊息後方可以加上防衛條件表示當條 件成立時,就重複送出訊息,如下圖所示:
1132 通訊圖的訊息
-條件訊息
在通訊圖的訊息後加上防衛條件( Guard
Condition )就成為條件訊息,只有當防衛條件為 真 true 時才送出訊息,如下圖所示:
1132 通訊圖的訊息
-將訊息送給自己
如同循序圖,通訊圖也可以將訊息傳送給自己, 如下圖所示:
11-3-3 將循序圖轉換成通訊圖 - 循序圖
將第 11-2 節範例的循序圖一步一步轉換成通訊圖
。例如: Loop 片斷洗車服務的循序圖,如下圖所 示:
11-3-3 將循序圖轉換成通訊圖 - 步驟一
Step 1 :將循序圖的
參與者一一新增至通 訊圖,如右圖所示:
11-3-3 將循序圖轉換成通訊圖 - 步驟二
Step 2 :建立參與者
之間的連接,如右圖 所示:
11-3-3 將循序圖轉換成通訊圖 - 步驟三 ( 訊
息 )
Step 3 :新增參與者之間傳送的訊息,如下表所示: 參與者 層數 訊息 說明 使用者 -> 洗車服務 1 1: 洗車 ( 方式 ) 第 1 層只有 1 個訊息所以是 1 ,如有 2 個,就是 1 和 2 , 以此類推 洗車服務 -> 車 2 1.1: 洗車 ( 方式 ) 在第 2 層也只有 1 個訊息, 所以是 1.1 ,如有 2 個,就是 1.1 和 1.2 ,以此類推 車 -> 水洗 3 1.1.1a 洗車 ( 車 ) 在第三層有 2 個訊息,正常 的編號是 1.1.1 和 1.1.2 ,不 過因為是互斥選擇條件,所 以是同步訊息 1.1.1a 和 1.1.1b 車 -> 泡沫洗 3 1.1.1b 洗車 ( 車 ) 其說明同上11-3-3 將循序圖轉換成通訊圖 - 步驟三 ( 圖
11-3-3 將循序圖轉換成通訊圖 - 步驟四
Step 4 :最後在訊息
上加上重複和互斥選 擇條件訊息的防衛條 件,如右圖所示:
11-4 時序圖 - 說明
時序圖( Timing Diagrams )是 UML 2.x 版新增的
圖形,可以顯示一段時間內,參與者狀態或值的 改變,和進一步標示互動的持續限制與什麼事件 驅動狀態的改變。 當使用循序圖和通訊圖描述的互動有時間限制時 ,例如:互動需要在 5 秒之內完成,和訊息需要 在不超過互動時間 1/3 來回傳等,我們就可以使 用時序圖來進一步描述互動的時間限制。
11-4 時序圖 - 生命線與時間刻記
時序圖的生命線 ( Lifeline )和循序 圖相同,它是參與者 參與互動的時間軸, 通常是從左至右增加 ,在時序圖是使用長 方形框架來表示,同 一個框架中允許多個 參與者的生命線,如 右圖所示:11-4 時序圖 - 狀態生命線
狀態生命線( State Lifeline )顯示生命線的狀態因時間而 改變,在時序圖的 Y 軸是狀態清單, X 軸顯示時間,以時 間刻記為單位來增加。例如:洗衣機洗衣服時有 4 個狀態 :浸泡、洗滌、洗淨和脫水,使用狀態生命線建立的時序 圖,如下圖所示:11-4 時序圖 - 值生命線
值生命線( Value Lifeline )顯示項目值因時間而改變, X 軸顯示的時間如同狀態生命線,它是使用一對水平線交叉 來表示值的改變。例如:洗衣機洗衣服時有 4 個狀態:浸 泡、洗滌、洗淨和脫水,使用值生命線建立的時序圖,如 下圖所示:11-4 時序圖 - 持續限制與事件
持續限制( Duration Constraints )是在描述這部分的互動
會持續多久,我們也可以延著時間線( Timeline )上,標 示驅動狀態改變的事件( Event ),如下圖所示:
11-5 互動概觀圖
11-5-1 互動概觀圖的基本符號 11-5-2 互動概觀圖的範例
11-5 互動概觀圖
互動概觀圖( Interaction Overview Diagram )可以
描述高階控制流程和之間的互動,它是一種活動 圖的特殊版本,只是將活動圖中的動作改為互動 圖來呈現。 互動概觀圖類似活動圖都可以視覺化呈現活動的 流程,只不過互動概觀圖的每一個動作是一個互 動圖,包含:循序、通訊、時序和互動概觀圖。
11-5-1 互動概觀圖的基本符號 - 互動使用
互動使用( Interaction Use )如同觸發動作,它是
參考已經存在的互動圖,使用名為 ref 的框架,在 中間顯示名稱,這就是對應的互動圖名稱,如下 圖所示:
11-5-1 互動概觀圖的基本符號 - 內建互動
內建互動( Inline Interaction )或稱為互動元素
( Interaction Element ),也可以直接稱為互動, 它是一個使用框架包圍的互動圖,我們可以替框 架命名或使用匿名,如下圖所示:
11-5-2 互動概觀圖的範例
學生選課的互動概 觀圖是從選擇科系 開始,然後選擇課 程且檢查是否擋修 ,如果允許選課, 就可以選擇哪一位 老師開的課,和檢 查開課是否已經額 滿,如果沒有,就 建立選課資料;否 則加入等待清單, 如右圖所示:11-6 繪製互動圖
11-6-1 繪製循序圖 11-6-2 繪製通訊圖 11-6-3 繪製時序圖
11-6-1 繪製循序圖 - 新增參與者
SIM 的生命線代表循序圖中參與互動的參與者,
請從「工具箱」視窗拖拉【生命線】至編輯區域 來新增參與者,如下圖所示:
11-6-1 繪製循序圖 - 建立訊息
在循序圖新增生命線且調整生命線長度後,就可以在生命 線之間建立訊息。請在「工具箱」視窗選擇訊息種類,然 後從開始的生命線按一下,拖拉至結束生命線且放開滑鼠 按鍵,就可以建立訊息,如下圖所示:
11-6-1 繪製循序圖 - 輸入訊息內容
在循序圖上按二下訊息的箭頭線,可以輸入訊息內容,因 為 SIM 預設靠左對齊,基於編排考量,可以在之前加上一 些空白字元。另一種方式是選訊息,開啟「屬性」對話方 塊來輸入訊息,如下圖所示:
11-6-1 繪製循序圖 - 產生與消滅訊息
在 SIM 建立產生訊息仍然需要先建立欲建立物件的生命線 ,然後在「工具箱」視窗選【產生訊息】,即可拖拉建立 產生訊息,消滅訊息的建立稍有不同,請先選【消滅訊 息】,然後拖拉至欲消滅物件生命線上,可以建立一個大 X 符號,如下圖所示:11-6-1 繪製循序圖 - 組合片斷
循序圖的組合片斷是由互動運算子和運算元組成,在 SIM
是先從「工具箱」視窗拖拉長方形的片斷框,例如: Alt 片斷,如下圖所示:
11-6-2 繪製通訊圖 - 參與者
在通訊圖新增參與者是從「工具箱」視窗拖拉【 生命線】至編輯區域,如下圖所示:
11-6-2 繪製通訊圖 - 連接
在通訊圖的參與者之間建立連接,就是在「工具 箱」視窗選【連接】,如果訊息是從參與者 A 傳 遞至參與者 B ,在建立連接時請從參與者 A 拖拉 至參與者 B ,如下圖所示:
11-6-2 繪製通訊圖 - 訊息
在通訊圖的連接新增訊息有兩種方式,一是按下 方【新增循序訊息】鈕,如下圖所示:
1163 繪製時序圖
-建立時序圖框架
在「工具箱」視窗拖拉【框架】項目,就可以建 立時序圖的框架,如下圖所示:
1163 繪製時序圖
-建立時間刻記
按二下框架,可以在「屬性」對話方塊【一般】 標籤的名稱欄輸入名稱,選【時間刻記值】標籤 可以輸入時間刻記的標籤值,如下圖所示:
1163 繪製時序圖
-新增生命線
選框架,按下方第 1 個按鈕可以建立狀態生命線
1163 繪製時序圖
-輸入持續限制與事件
在「屬性」對話方塊選【事件】標籤,可以在【 持續限制】和【事件】欄輸入持續限制與事件。
1164 繪製互動概觀圖
-新增互動使用
在「工具箱」視窗拖拉【互動使用】項目,可以 建立名為 ref 的框架,按二下就可以更改名稱和調 整尺寸,如下圖所示:
1164 繪製互動概觀圖
-新增內建互動
在「工具箱」視窗拖拉【內建互動】項目,就可 以建立名為 sd 的框架,按二下可以更改名稱和調 整尺寸,如下圖所示: