介紹
- 時(shí)序圖用于描述按時(shí)間順序排列的對象之間的交互模式;它按照參與交互的對象所具有的“生命線”和它們相互發(fā)送的消息來顯示這些對象
- 時(shí)序圖描述了在參與交互的對象中所發(fā)生的事件(從激活的角度來說明),以及這些對象如何通過相互發(fā)送消息進(jìn)行通信??梢詾橛美录鞯母鞣N不同形式制作時(shí)序圖。
- 使用時(shí)序圖來描述用例實(shí)現(xiàn)是一種從現(xiàn)實(shí)世界到對象世界的映射方法,它對我們確定對象職責(zé)和接口有著顯著的作用。而對象的核心就是職責(zé)和接口。
- 時(shí)序圖強(qiáng)調(diào)消息事件的發(fā)生順序,更方便于闡述事件流的過程;但是時(shí)序圖卻難以表達(dá)對象之間的關(guān)系
- 類的三個(gè)層次
- 概念層——業(yè)務(wù)建模階段——業(yè)務(wù)實(shí)體對象——業(yè)務(wù)模型時(shí)序圖
- 說明層——概念建模階段——分析類對象——概念模型時(shí)序圖
- 實(shí)現(xiàn)層——設(shè)計(jì)建模階段——設(shè)計(jì)類對象——設(shè)計(jì)模型時(shí)序圖
業(yè)務(wù)模型時(shí)序圖
業(yè)務(wù)模型時(shí)序圖用于為領(lǐng)域模型中的業(yè)務(wù)實(shí)體交互建模,其目標(biāo)是實(shí)現(xiàn)業(yè)務(wù)用例。
-
圖展示業(yè)務(wù)實(shí)體如何實(shí)現(xiàn)網(wǎng)上購物過程的時(shí)序圖。這個(gè)時(shí)序圖對這些業(yè)務(wù)實(shí)體對象如何參與業(yè)務(wù)提供了非常直觀的描述,從圖中我們可以非常容易地分辨出對象的職責(zé)、生命周期和會(huì)話過程。對業(yè)務(wù)模型時(shí)序圖的理解將有助于我們了解業(yè)務(wù)架構(gòu)
image -
時(shí)序圖中常用的UML元素解釋
對象:表示參與交互的對象。每個(gè)對象都帶有一條生命周期線,對象被激活(創(chuàng)建或者被引用)時(shí),生命周期線上會(huì)出現(xiàn)一個(gè)長條(會(huì)話),表示對象的存在。
生命周期線:生命周期線表示對象的存在,當(dāng)對象被激活(創(chuàng)建或者被引用)時(shí),生命周期線上出現(xiàn)會(huì)話,表示對象參與了這個(gè)會(huì)話。
-
消息
介紹:由一個(gè)對象的生命周期線指向另一個(gè)對象的生命周期線。如果消息指到空白的生命周期線,將創(chuàng)建一個(gè)新的會(huì)話;如果消息指到已有的會(huì)話,表示該對象延續(xù)已有會(huì)話。 與實(shí)際的編程環(huán)境相似,消息有許多不同的類型
-
類型
-
簡單消息:適用于大多數(shù)情況。它不強(qiáng)調(diào)消息的類型,僅表示一個(gè)交互。一般情況下使用簡單消息就足夠了
image -
返回消息:返回消息為源消息的返回體,而非新的消息。一般來說不需要為每個(gè)源消息都繪制返回消息,一方面因?yàn)槟J(rèn)情況下源消息都有返回,另一方面太多的返回消息會(huì)使圖變得更復(fù)雜
image -
同步消息:表示發(fā)出消息的對象將停止所有后續(xù)動(dòng)作一起等到接收消息方響應(yīng)
image -
限時(shí)消息:是同步消息的一種特殊情況。源消息對象發(fā)出消息后將等待響應(yīng)一段時(shí)間,在限定時(shí)間內(nèi)還沒有響應(yīng)時(shí),源消息對象將取消阻塞狀態(tài)而執(zhí)行后續(xù)操作
image -
異步消息:源消息對象發(fā)出消息后不等待響應(yīng)
image
-
會(huì)話:會(huì)話表示一次交互,在會(huì)話過程中所有對象共享一個(gè)上下文環(huán)境。例如事務(wù)上下文、安全上下文等。
銷毀: 銷毀繪制在生命周期線上,表示對象生命周期的終止。雖然示例圖中繪制了,但銷毀也沒有必要強(qiáng)調(diào)。
-
繪制業(yè)務(wù)模型時(shí)序圖時(shí)要注意
- 第一,時(shí)序圖以達(dá)成業(yè)務(wù)目標(biāo)為準(zhǔn)則;
- 第二,這個(gè)階段處于業(yè)務(wù)階段,使用的描述語言應(yīng)當(dāng)采用業(yè)務(wù)術(shù)語;
- 第三,時(shí)序圖表達(dá)的內(nèi)容會(huì)對將來的分析設(shè)計(jì)帶來幫助,但是相對于編碼實(shí)現(xiàn)來講由于太粗略而不能夠作為依據(jù)
?
概念模型時(shí)序圖
概念階段的時(shí)序圖采用分析類來繪制,代表了系統(tǒng)原型,所以這個(gè)階段的時(shí)序圖已經(jīng)帶有計(jì)算機(jī)理解
-
它將業(yè)務(wù)模型場景用分析類重新繪制一遍,這樣,既保留了實(shí)際業(yè)務(wù)需求,又得到了計(jì)算機(jī)實(shí)現(xiàn)的基本理念
image 請注意其中的計(jì)算機(jī)實(shí)現(xiàn)理念的引入
這時(shí)的時(shí)序圖依稀已經(jīng)有了實(shí)現(xiàn)的影子。實(shí)際上,分析類所展示出來的已經(jīng)是系統(tǒng)實(shí)現(xiàn)的原型
設(shè)計(jì)模型時(shí)序圖
設(shè)計(jì)模型時(shí)序圖使用設(shè)計(jì)類作為對象繪制。目標(biāo)是實(shí)現(xiàn)概念模型中的某個(gè)事件流,一般以一個(gè)完整交互為單位,消息細(xì)致到方法級別
顯然,在實(shí)際工作中我們很難為所有的交互都繪制時(shí)序圖,那將是一個(gè)巨大的工作量
所以筆者建議在設(shè)計(jì)模型階段,只需要用框架中的關(guān)鍵類描述典型的交互場景即可,不需要為每一個(gè)交互都繪制時(shí)序圖
為了保證軟件實(shí)現(xiàn)滿足需求,省略了大量設(shè)計(jì)模型時(shí)序圖的同時(shí),要求有更多的概念模型時(shí)序圖,這樣才能保留足夠的信息來說明需求與實(shí)現(xiàn)之間的過渡
-
所有的類和方法都與實(shí)際編程無異,已經(jīng)可以看作是偽代碼了
image
小結(jié)
- 時(shí)序圖的三種應(yīng)用場合是在建模過程中經(jīng)常使用的動(dòng)態(tài)視圖
- 在任何時(shí)候需要表達(dá)對象間的交互時(shí),或者想分析對象的職責(zé)和接口時(shí)都可以使用時(shí)序圖
- 在建立軟件架構(gòu)時(shí),為了說明架構(gòu)中的關(guān)鍵對象交互場景,或者為了說明應(yīng)用程序如何使用架構(gòu)的編程模型,也可以使用時(shí)序圖來說明。這些時(shí)序圖可以作為架構(gòu)文檔的一部分,也可用作編程規(guī)范和指南使用
- 在非正式建模工作中,例如一時(shí)不能確定如何設(shè)計(jì)接口,或者不能確定設(shè)計(jì)是否合理時(shí)都可以用時(shí)序圖幫助分析。時(shí)序圖是十分有用的工具,掌握并隨時(shí)使用它是很好的分析設(shè)計(jì)習(xí)慣







