Presentation is loading. Please wait.

Presentation is loading. Please wait.

第11章 互動圖 – 循序、通訊、時序與互動概觀圖

Similar presentations


Presentation on theme: "第11章 互動圖 – 循序、通訊、時序與互動概觀圖"— Presentation transcript:

1 第11章 互動圖 – 循序、通訊、時序與互動概觀圖
11-1 互動圖的基礎 11-2 循序圖 11-3 通訊圖 11-4 時序圖 11-5 互動概觀圖 11-6 繪製互動圖 11-7 綜合練習

2 11-1 互動圖的基礎-說明 互動圖(Interaction Diagrams)如同其名是用來描述模型中不同元素之間的互動,即描述系統的動態行為,可以清楚呈現系統與使用者操作之間的互動;一組物件之間如何使用訊息互動來合作完成指定的行為。 互動圖可以用來呈現4+1觀點軟體系統模型的邏輯觀點,如下圖所示:

3 11-1 互動圖的基礎-種類 循序圖(Sequence Diagrams):使用時間軸方式描述物件之間的互動,強調物件之間訊息傳遞的時間順序。 通訊圖(Communication Diagrams):描述物件的互動,強調物件之間的關係、訊息流向和控制流程,在1.x版稱為合作圖(Collaboration Diagrams)。 時序圖(Timing Diagrams):UML 2.0版支援的圖形,描述詳細的時間資訊,互動元素之間的條件資訊和狀態改變。 互動概觀圖(Interaction Overview Diagrams):UML 2.0版支援的圖形,使用循序、通訊和時序圖以高階方式描述系統發生的重要互動。

4 11-1 互動圖的基礎-目的 互動圖的主要目的是使用視覺化方式顯示系統的互動行為,因為視覺化顯示互動是一件困難的工作,所以我們需要建立不同觀點的互動圖來描述系統的行為。基本上,互動圖的主要目的為: 捕捉系統的動態行為。 描述系統物件之間的訊息流程。 描述系統物件的結構化組織。 描述一組物件之間訊息傳遞的互動。

5 11-2 循序圖 循序圖的基本符號 循序圖的訊息 框架 複雜互動的互動片斷

6 11-2 循序圖-說明 循序圖(Sequence Diagram)是使用時間軸來描述物件之間的互動,強調物件之間訊息傳遞的時間順序,請注意是時間順序,而不是花費的時間,關於花費時間部分可以使用時序圖來描述。 在循序圖的垂直軸是時間,可以顯示時間順序的訊息傳送;水平軸是隨著訊息傳送,從一個參與者物件旅行至另一個參與者物件的互動過程。

7 11-2 循序圖-範例 例如:圖書銷售系統(Book Sales System)產生圖書銷售報表的循序圖,如下圖所示:

8 循序圖的基本符號-參與者 參與者(Participants)簡單的說就是物件,它是使用方框表示,也可以使用演員符號,參與者是位在循序圖上方且從左至右依序排列,在方框中是參與者名稱,其基本語法如下所示: 名稱:類別名稱 上述語法的「:」分號前是物件名稱;之後是類別名稱,如下圖所示:

9 循序圖的基本符號-時間與生命線 在參與者下方垂直的虛線稱為「生命線」(Lifeline),代表互動發生順序的時間軸,時間是由上而下增加,如右圖所示:

10 循序圖的基本符號-訊息(說明) 訊息(Messages)是從來源參與者(或稱送出參與者)的生命線送到目的參與者(或稱接收參與者)的生命線,可以讓接收訊息的參與者進入啟動棒來執行所需操作,如下圖所示:

11 11-2-1 循序圖的基本符號-訊息(種類) 在循序圖的訊息可以分為兩種,如下所示:
同步訊息(Synchronous Messages):當參與者送出同步訊息,必須等到回應後才會繼續執行,同步訊息是使用實心三角形箭頭線來表示,例如:上述循序圖的第1個訊息和前述gen:報表產生器物件送給report:圖書報表物件的setCreateDate()就是同步訊息。 非同步訊息(Asynchronous Messages):參與者送出非同步訊息,並不需要等到回應就可以繼續執行。非同步訊息是使用箭頭來表示,例如:上述循序圖的第2個訊息。

12 11-2-1 循序圖的基本符號-訊息(語法) 循序圖的訊息基本語法,如下所示: 傳回值 = 訊息名稱(參數列) : 傳回型態
上述訊息語法依序是傳回值、訊息名稱(通常是類別的方法名稱)、參數列和傳回型態。一些訊息的範例,如下所示: 送出訂單() setCreateDate(date) d = getReportDescription(id) d = getReportDescription(id) : ReportDescription

13 循序圖的訊息-呼叫訊息 呼叫訊息(Call Message)是循序圖最常用的訊息,它是呼叫目標參與者的操作,例如:客人(Customer)在自動販賣機面板投錢操作的循序圖,如下圖所示:

14 循序圖的訊息-回傳訊息 回傳訊息是表示呼叫訊息的傳回值,一般來說,它並非必須符號,因為可以使用啟動棒結束來隱含代表。循序圖的回傳訊息是使用虛線→表示呼叫訊息的操作結束,在上方是傳回值的描述。 例如:客戶在自動販賣機的面板投錢後,操作面板送出檢查金額()訊息至記錄器物件,可以傳回可選擇產品的清單,如下圖所示:

15 循序圖的訊息-巢狀訊息 巢狀訊息(Nested Message)就是當呼叫訊息送至目的參與者後,就會進一步觸發目的參與者送出更多的訊息,這些訊息稱為原觸發訊息的巢狀訊息。 例如:當客戶在自動販賣機的面板投錢後,在操作面板可以顯示可購買的產品,以便讓客戶選擇購買的產品,如下圖所示:

16 循序圖的訊息-自身訊息 自身訊息(Self Message)就是送出呼叫訊息給自己,以Java語言來說,就是呼叫同一個物件的方法(通常是一些宣告成private的工具方法)。例如:旅館aHotel物件送出自身訊息檢查指定日期是否有空房間,如右圖所示:

17 循序圖的訊息-遞迴訊息 訊息還可以遞迴將訊息傳送至物件自己的同一個操作,稱為遞迴訊息(Recursion Messages)。例如:計算階層N!的Factorial物件f,如右圖所示:

18 循序圖的訊息-產生訊息與消滅訊息 在循序圖的物件可以送出產生訊息<<create>>建立其他實例(Instances);或送出消滅訊息<<destroy>>表示物件生命周期的結束。例如:從購物車新增和刪除訂單項目的循序圖,如下圖所示:

19 框架 UML 2.x版的框架(Frame)提供UML圖形一個圖形邊界,它是一個大型的長方形框,在框架左上角顯示框架名稱,實際UML圖形是位在長方形框的範圍之內,如下圖所示:

20 複雜互動的互動片斷- 說明 對於循序圖複雜互動的條件與迴圈,舊版UML 1.x版在此部分並沒有明確的定義,所以可以使用多種表示方法來呈現。 UML 2.0版是使用組合片斷(Combined Fragment)來處理複雜互動,它是由一至多個互動片斷(Interaction Fragment)組成,通常我們是將組合片斷置於一個框架中。

21 複雜互動的互動片斷- 圖例

22 11-2-4 複雜互動的互動片斷- 互動運算子 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 並行執行的互動片斷 neg 無效的互動片斷,即不會執行的互動片斷

23 複雜互動的互動片斷- Opt片斷 Opt片斷是建立條件訊息,只有當防衛條件為真true時,才執行互動運算元。例如:使用者從ATM自動櫃員機提款的循序圖,如下圖所示:

24 複雜互動的互動片斷- Alt片斷 Alt片斷是互斥條件的訊息,可以依據防衛條件,執行其中之一的互動運算元,例如:繼續之前的ATM提款範例,如果通過驗證,就可以送出現金;反之顯示錯誤訊息,如下圖所示:

25 複雜互動的互動片斷- Loop片斷 Loop片斷就是迴圈,可以重複執行片斷的互動運算元,例如:繼續之前的ATM提款範例,ATM會重複送出3次驗證請求,如果都無法通過驗證,才會顯示錯誤訊息,如下圖所示:

26 11-2-4 複雜互動的互動片斷- Ref片斷(說明)
Ref片斷可以參考其他互動的sd框架,以便在複雜循序圖中,簡化部分循序圖來強調所需的互動,另一種Ref片斷的應用如同函數,可以讓我們在循序圖重複使用sd框架。

27 11-2-4 複雜互動的互動片斷- Ref片斷(範例1)
例如:在網站選擇建立不同種類帳戶的循序圖,此循序圖分為兩部分,如下所示: Ref片斷:在循序圖參考名為選擇帳戶種類的循序圖,如下圖所示:

28 11-2-4 複雜互動的互動片斷- Ref片斷(範例2)
Sd框架:一個框架的循序圖,它是被Ref片斷參考的循序圖,如下圖所示:

29 11-3 通訊圖 通訊圖的基本符號 通訊圖的訊息 將循序圖轉換成通訊圖

30 11-3 通訊圖-說明 通訊圖(Communication Diagrams)可以描述物件之間的互動,不過,通訊圖強調的是物件之間的關係和訊息流向,可以顯示多個物件如何一起合作來完成指定工作的行為。 通訊圖和循序圖的主要差異,在於循序圖是以時間軸顯示物件之間的訊息傳遞;通訊圖則是以空間角度顯示物件之間訊息傳遞的路徑,換句話說,相同資訊的循序圖可以轉換成通訊圖。

31 11-3 通訊圖-範例 將第11-2-1節循序圖轉換成通訊圖,如下圖所示:

32 11-3-1 通訊圖的基本符號-參與者 通訊圖的參與者(Participants)符號是長方形,中間是名稱,其基本語法如下所示:
名稱:類別名稱 上述語法的「:」分號前是物件名稱;之後是類別名稱,和循序圖相同,我們也可以省略之前的名稱來建立匿名物件。

33 通訊圖的基本符號-連接 在通訊圖的連接(Links)是一條沒有箭頭的直線,可以連接2位參與者,表示之間擁有傳送訊息的管道,可以傳送訊息;反之如果沒有建立連接,就表示這2位參與者之間不允許傳送訊息。

34 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:

35 通訊圖的訊息- 建立物件實例的訊息 在通訊圖建立物件實例的訊息是create(),當訊息名稱為create時,就表示它是建立物件實例的訊息,我們也可以使用模版<<create>>來表示,如下圖所示:

36 通訊圖的訊息- 同步訊息 同步訊息在循序圖需要使用Par片斷來建立,通訊圖就只需在循序編號加上英文字母的字尾來表示是同步訊息,如下圖所示:

37 通訊圖的訊息- 重複訊息 在通訊圖的訊息後方可以加上防衛條件表示當條件成立時,就重複送出訊息,如下圖所示:

38 通訊圖的訊息- 條件訊息 在通訊圖的訊息後加上防衛條件(Guard Condition)就成為條件訊息,只有當防衛條件為真true時才送出訊息,如下圖所示:

39 通訊圖的訊息- 將訊息送給自己 如同循序圖,通訊圖也可以將訊息傳送給自己,如下圖所示:

40 將循序圖轉換成通訊圖-循序圖 將第11-2節範例的循序圖一步一步轉換成通訊圖。例如:Loop片斷洗車服務的循序圖,如下圖所示:

41 將循序圖轉換成通訊圖-步驟一 Step 1:將循序圖的參與者一一新增至通訊圖,如右圖所示:

42 將循序圖轉換成通訊圖-步驟二 Step 2:建立參與者之間的連接,如右圖所示:

43 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 車->泡沫洗 1.1.1b 洗車(車) 其說明同上

44 11-3-3 將循序圖轉換成通訊圖-步驟三(圖例)

45 將循序圖轉換成通訊圖-步驟四 Step 4:最後在訊息上加上重複和互斥選擇條件訊息的防衛條件,如右圖所示:

46 11-4 時序圖-說明 時序圖(Timing Diagrams)是UML 2.x版新增的圖形,可以顯示一段時間內,參與者狀態或值的改變,和進一步標示互動的持續限制與什麼事件驅動狀態的改變。 當使用循序圖和通訊圖描述的互動有時間限制時,例如:互動需要在5秒之內完成,和訊息需要在不超過互動時間1/3來回傳等,我們就可以使用時序圖來進一步描述互動的時間限制。

47 11-4 時序圖-生命線與時間刻記 時序圖的生命線(Lifeline)和循序圖相同,它是參與者參與互動的時間軸,通常是從左至右增加,在時序圖是使用長方形框架來表示,同一個框架中允許多個參與者的生命線,如右圖所示:

48 11-4 時序圖-狀態生命線 狀態生命線(State Lifeline)顯示生命線的狀態因時間而改變,在時序圖的Y軸是狀態清單,X軸顯示時間,以時間刻記為單位來增加。例如:洗衣機洗衣服時有4個狀態:浸泡、洗滌、洗淨和脫水,使用狀態生命線建立的時序圖,如下圖所示:

49 11-4 時序圖-值生命線 值生命線(Value Lifeline)顯示項目值因時間而改變,X軸顯示的時間如同狀態生命線,它是使用一對水平線交叉來表示值的改變。例如:洗衣機洗衣服時有4個狀態:浸泡、洗滌、洗淨和脫水,使用值生命線建立的時序圖,如下圖所示:

50 11-4 時序圖-持續限制與事件 持續限制(Duration Constraints)是在描述這部分的互動會持續多久,我們也可以延著時間線(Timeline)上,標示驅動狀態改變的事件(Event),如下圖所示:

51 11-5 互動概觀圖 互動概觀圖的基本符號 互動概觀圖的範例

52 11-5 互動概觀圖 互動概觀圖(Interaction Overview Diagram)可以描述高階控制流程和之間的互動,它是一種活動圖的特殊版本,只是將活動圖中的動作改為互動圖來呈現。 互動概觀圖類似活動圖都可以視覺化呈現活動的流程,只不過互動概觀圖的每一個動作是一個互動圖,包含:循序、通訊、時序和互動概觀圖。

53 互動概觀圖的基本符號-互動使用 互動使用(Interaction Use)如同觸發動作,它是參考已經存在的互動圖,使用名為ref的框架,在中間顯示名稱,這就是對應的互動圖名稱,如下圖所示:

54 互動概觀圖的基本符號-內建互動 內建互動(Inline Interaction)或稱為互動元素(Interaction Element),也可以直接稱為互動,它是一個使用框架包圍的互動圖,我們可以替框架命名或使用匿名,如下圖所示:

55 互動概觀圖的範例 學生選課的互動概觀圖是從選擇科系開始,然後選擇課程且檢查是否擋修,如果允許選課,就可以選擇哪一位老師開的課,和檢查開課是否已經額滿,如果沒有,就建立選課資料;否則加入等待清單,如右圖所示:

56 11-6 繪製互動圖 繪製循序圖 繪製通訊圖 繪製時序圖 繪製互動概觀圖

57 繪製循序圖-新增參與者 SIM的生命線代表循序圖中參與互動的參與者,請從「工具箱」視窗拖拉【生命線】至編輯區域來新增參與者,如下圖所示:

58 繪製循序圖-建立訊息 在循序圖新增生命線且調整生命線長度後,就可以在生命線之間建立訊息。請在「工具箱」視窗選擇訊息種類,然後從開始的生命線按一下,拖拉至結束生命線且放開滑鼠按鍵,就可以建立訊息,如下圖所示:

59 繪製循序圖-輸入訊息內容 在循序圖上按二下訊息的箭頭線,可以輸入訊息內容,因為SIM預設靠左對齊,基於編排考量,可以在之前加上一些空白字元。另一種方式是選訊息,開啟「屬性」對話方塊來輸入訊息,如下圖所示:

60 繪製循序圖-產生與消滅訊息 在SIM建立產生訊息仍然需要先建立欲建立物件的生命線,然後在「工具箱」視窗選【產生訊息】,即可拖拉建立產生訊息,消滅訊息的建立稍有不同,請先選【消滅訊息】,然後拖拉至欲消滅物件生命線上,可以建立一個大X符號,如下圖所示:

61 繪製循序圖-組合片斷 循序圖的組合片斷是由互動運算子和運算元組成,在SIM是先從「工具箱」視窗拖拉長方形的片斷框,例如:Alt片斷,如下圖所示:

62 繪製通訊圖-參與者 在通訊圖新增參與者是從「工具箱」視窗拖拉【生命線】至編輯區域,如下圖所示:

63 繪製通訊圖-連接 在通訊圖的參與者之間建立連接,就是在「工具箱」視窗選【連接】,如果訊息是從參與者A傳遞至參與者B,在建立連接時請從參與者A拖拉至參與者B,如下圖所示:

64 繪製通訊圖-訊息 在通訊圖的連接新增訊息有兩種方式,一是按下方【新增循序訊息】鈕,如下圖所示:

65 繪製時序圖- 建立時序圖框架 在「工具箱」視窗拖拉【框架】項目,就可以建立時序圖的框架,如下圖所示:

66 繪製時序圖- 建立時間刻記 按二下框架,可以在「屬性」對話方塊【一般】標籤的名稱欄輸入名稱,選【時間刻記值】標籤可以輸入時間刻記的標籤值,如下圖所示:

67 繪製時序圖- 新增生命線 選框架,按下方第1個按鈕可以建立狀態生命線,第2個按鈕是值生命線,如下圖所示:

68 繪製時序圖- 輸入持續限制與事件 在「屬性」對話方塊選【事件】標籤,可以在【持續限制】和【事件】欄輸入持續限制與事件。

69 繪製互動概觀圖- 新增互動使用 在「工具箱」視窗拖拉【互動使用】項目,可以建立名為ref的框架,按二下就可以更改名稱和調整尺寸,如下圖所示:

70 繪製互動概觀圖- 新增內建互動 在「工具箱」視窗拖拉【內建互動】項目,就可以建立名為sd的框架,按二下可以更改名稱和調整尺寸,如下圖所示:

71 11-7 綜合練習-病人預約的循序圖

72 11-7 綜合練習-驗證租片客戶等級的通訊圖

73 End


Download ppt "第11章 互動圖 – 循序、通訊、時序與互動概觀圖"

Similar presentations


Ads by Google