前言
在我的工作中,用的最多的就是時序圖了。可能由於工作的原因,我也是最喜歡畫時序圖了,很清楚,很明了,什么時候發送什么消息,到達什么狀態,一下子就展示在你的腦海里,對於消息驅動的程序來說,是再好不過的了。
時序圖簡介
首先,時序圖用來表示用例中的行為順序,當執行一個用例行為時,順序圖中的每條消息對應了一個類操作或者狀態機中引起轉換的事件;
其次,時序圖展示對象之間的交互,這些交互是指在場景或用例的事件流中發生的。時序圖屬於動態建模;
最后,時序圖的重點在消息序列上,也就是說,描述消息是如何在對象間發送和接收的。表示了對象之間傳遞消息的時間順序。
還有,別忘了,瀏覽時序圖的方法是,從上到下查看對象間交換的消息。
時序圖中的元素
時序圖中包括的建模元素主要有:角色、對象、生命線、控制焦點、消息和Combined Fragments。接下來,分別介紹每一個元素,以及展現它們在Astah中的表現形式。
角色
如下圖:
圖中的小人,就表示一個角色,這里的角色,可以是人,或者是其它的子系統或者系統。
對象
如下圖:
每條生命線上都關聯着一個對象,上圖中有三條生命線,可以看到有三個對象,但是三個對象的命名方式都是不一樣的。在使用Astah畫時序圖時,選擇一個對象,在屬性中可以更改這種命名,分別介紹一下這三種命名方式:
- 顯示實例名和類名,方式:實例名:類名;
- 只顯示類名,方式::類名;
- 只顯示實例名,方式:實例名。
其實,三種命名方式,沒有特別的要求,哪一種能讓閱讀該時序圖的人一眼就能看明白,就使用哪種,而我一般使用的是第一種和第二種,第一種信息量多,在單例時,可以用來表示;第二種,畫時序圖時不用刻意的去強調實例名,只需要作出類名就好了;但是,第三種,我一直不知道存在的意義,給你一個實例名,其實從圖中真的看不出其的類名。所以,我個人還是建議大家使用第一種和第二種。
生命線
沒有什么多說的,從上面的兩張圖中,我們都可以看到一條向下延伸的虛線,而這條虛線就是表示的生命線,表示一個對象存在的時間。
控制焦點
控制焦點是順序圖中表示時間段的符號,在這個時間段內對象將執行相應的操作。用小矩形表示。如下圖表示:
消息
消息一般分為同步消息、異步消息和返回消息;如下圖表示。
同步消息就是指消息的發送者把控制傳遞給消息的接收者,然后停止活動,等待消息的接收者放棄或者返回控制。用來表示同步的意義。
異步消息就是指消息發送者通過消息把信號傳遞給消息的接收者,然后自己繼續活動,不等待接收者返回消息或者控制。異步消息的接收者和發送者是並發工作的。
返回消息就是指消息從過程調用返回。
自關聯消息
表示方法的自身調用以及一個對象內的一個方法調用另外一個方法,如下圖:
Combined Fragments
表示帶有一些特定條件發送的消息。
https://images0.cnblogs.com/blog/405273/201307/06155657-732b73868c65429f8fba164931377107.png
如上圖,就表示,循環(loop)發送GetProperty消息獲得屬性。在使用Astah畫時序圖時,選擇一個Combined Fragments之后,可以在其對應的屬性面板更改對應的發送條件。里面介紹了很多,此處列舉一二:
- Alternative fragment(denoted “alt”) 與 if…then…else對應
- Option fragment (denoted “opt”) 與 Switch對應
- Parallel fragment (denoted “par”) 表示同時發生
- Loop fragment(denoted “loop”) 與 for 或者 Foreach對應
總結
關於時序圖,就到此為止,講的不深,主要是一些關於時序圖的概念,沒有涉及到應用,以及實際案例的分析,總是覺得缺點什么,是吧。沒有關系,大家可以參考這里:這里。我的這篇博文中的很多內容也是參考這里的。希望大家滿意。也希望大家有所收獲,下一篇博文再見。
2013/7/6 於東軟-大連
=====================================================================
如果喜歡,請關注:JellyThink | 思想的果凍
更多原創精彩博文,盡在www.jellythink.com
還可以關注新浪微博:http://weibo.com/u/1887014677
=====================================================================