怎樣才能畫(huà)出清晰明了的時(shí)序圖

      網(wǎng)友投稿 1121 2022-05-30

      1 前言

      在定義系統(tǒng)間接口或模塊間接口時(shí),時(shí)序圖使用起來(lái)非常方便,工作中經(jīng)常涉及要與第三方系統(tǒng)協(xié)商定義接口,或者定義系統(tǒng)內(nèi)多模塊間接口的情況,經(jīng)常會(huì)看到很多時(shí)序圖。有的時(shí)序圖畫(huà)的很漂亮,很好的幫助讀者準(zhǔn)確理解業(yè)務(wù)和實(shí)現(xiàn)方法,而有的時(shí)序圖則讀起來(lái)人云山霧罩,痛苦不已。本文不打算再說(shuō)一遍時(shí)序圖的結(jié)構(gòu)和步驟,只想說(shuō)明時(shí)序圖中經(jīng)常遇到主要問(wèn)題,并許下一個(gè)美好的愿望:希望以后的工作中再也不要遇到難讀的時(shí)序圖。

      時(shí)序圖是統(tǒng)一模型語(yǔ)言UML(Unified Model Language)中一種用來(lái)表示實(shí)體間交互關(guān)系的圖,英文Sequence Diagram,有的人把它稱為序列圖、順序圖、循序圖,個(gè)人習(xí)慣于稱為時(shí)序圖,下文都以這個(gè)名字來(lái)稱呼。

      畫(huà)時(shí)序圖的工具非常多,從早期的Rational Rose、Sybase Power Designer、Visio,到Enterprise Architect、StarUML,甚至用Typora來(lái)畫(huà)Markdown風(fēng)格時(shí)序圖也不錯(cuò),再到現(xiàn)在按公司的要求換用億圖圖示Edraw,這些工具都不錯(cuò),稍微適應(yīng)下就能畫(huà)出漂亮的時(shí)序圖了。

      值得推薦的是,公司CloudDesign在線設(shè)計(jì)工具提供的CloudModeling繪圖工具用起來(lái)也相當(dāng)舒服,既便于在團(tuán)隊(duì)分享,又提供了Word插件便于導(dǎo)入設(shè)計(jì)文檔,如果修改了時(shí)序圖也只需要在word文檔中更新一下就自動(dòng)刷新了,非常方便,強(qiáng)烈推薦使用。網(wǎng)址:https://clouddragon.huawei.com/uadp/home

      下面進(jìn)入正題。

      2 ?關(guān)鍵點(diǎn)1:必須明確上下文

      掌握了這一點(diǎn)就成功了一大半,沒(méi)有做到這一點(diǎn)就基本畫(huà)不清楚了。

      為什么這句話說(shuō)這么狠?不就畫(huà)個(gè)時(shí)序圖嘛,關(guān)上下文什么事?因?yàn)榭催^(guò)太多讓人痛恨的時(shí)序圖都栽在這個(gè)問(wèn)題上。

      為說(shuō)明這個(gè)問(wèn)題,以車聯(lián)網(wǎng)的場(chǎng)景舉個(gè)例子,比如遠(yuǎn)程控制特性的交互時(shí)序圖。

      車輛授權(quán)交互時(shí)序圖

      遠(yuǎn)程開(kāi)車窗交互時(shí)序圖

      遠(yuǎn)程開(kāi)車門交互時(shí)序圖

      如圖所示,我們看到交互實(shí)體中出現(xiàn)了多個(gè)類似但又不同的表述,例如“車主”、“被授權(quán)用戶”、“被分享用戶”這一組,“手機(jī)App”和“車主App”這一組,“TSP平臺(tái)”、“TSP系統(tǒng)”和“車云”這一組,而在車輛方面,有時(shí)稱為“車輛”這么大的粒度,有時(shí)又稱細(xì)分為“TBox”、“車身控制模塊”、“PEPS”。

      解決辦法:很簡(jiǎn)單,畫(huà)出一個(gè)上下文圖,把所有時(shí)序圖中涉及的交互實(shí)體都放進(jìn)去,規(guī)定它們的名字,要求所有時(shí)序圖中的實(shí)體必須與上下文圖中保持一致,不得自己定義新的。如果確實(shí)需要增加新的實(shí)體,那么首先更新上下文,在上下文圖中把實(shí)體定義進(jìn)去才能使用。

      例如針對(duì)上述車聯(lián)網(wǎng)的場(chǎng)景,增加一個(gè)這樣的上下文就可以更加清晰:

      在實(shí)際項(xiàng)目中,可以利用工具來(lái)實(shí)現(xiàn)這個(gè)一致性。例如CloudModeling繪圖工具中,我們會(huì)定義完整的系統(tǒng)上下文和系統(tǒng)邏輯架構(gòu)視圖,要求所有的交互時(shí)序圖必須從這里面鏈接引用角色和,而不是自己新建一個(gè)。

      3 ?關(guān)鍵點(diǎn)2:決定該不該把某個(gè)實(shí)體放進(jìn)時(shí)序圖

      在上面的例子中,在車輛相關(guān)實(shí)體中,有時(shí)稱為“車輛”這么大的粒度,有時(shí)又稱細(xì)分為“TBox”、“車身控制模塊”、“PEPS”。事實(shí)上,“TBox”、“車身控制模塊”、“PEPS”都是車輛內(nèi)部模塊的一部分,那么究竟什么情況下該把“車輛”這么大的粒度放入時(shí)序圖,什么情況下該把“TBox”、“車身控制模塊”、“PEPS”這樣的內(nèi)部模塊展示出來(lái)呢?

      個(gè)人理解是這樣的:實(shí)體是否展示與業(yè)務(wù)場(chǎng)景和所設(shè)計(jì)的對(duì)象密切關(guān)聯(lián),只有在業(yè)務(wù)場(chǎng)景中與所設(shè)計(jì)對(duì)象有直接交互的實(shí)體才有必要放入時(shí)序圖中,間接交互實(shí)體則應(yīng)當(dāng)去掉。

      在上面的例子中,如果我們?cè)O(shè)計(jì)的對(duì)象是TSP及車主手機(jī)App,那么車輛內(nèi)部的實(shí)體部分就不需要展開(kāi),只需要展示與車云直接交互的TBox模塊即可,如下:

      遠(yuǎn)程開(kāi)車門交互時(shí)序圖

      但是,如果我們?cè)O(shè)計(jì)的對(duì)象換成了車身控制模塊,那么交互的實(shí)體就應(yīng)當(dāng)省略TSP及車主手機(jī)App相關(guān)的實(shí)體,把關(guān)注點(diǎn)調(diào)整到與車身控制模塊直接交互的實(shí)體上來(lái),例如:

      遠(yuǎn)程開(kāi)車門交互時(shí)序圖

      4 ?關(guān)鍵點(diǎn)3:響應(yīng)消息要與請(qǐng)求消息分開(kāi)

      時(shí)序圖中交互實(shí)體間水平的線條用來(lái)表示消息,最常見(jiàn)的有三種:

      4.1??????同步消息(Synchronous Message)與返回消息(Return Message)

      同步消息(也稱為調(diào)用消息)一定要與返回消息成對(duì)使用,特別要強(qiáng)調(diào)的是:返回消息樣式不得使用同步消息的樣式,這是兩個(gè)完全不同的事情。同步消息表示一個(gè)實(shí)體對(duì)另一個(gè)實(shí)體的一個(gè)接口調(diào)用,被調(diào)用方要按流程實(shí)現(xiàn)提供接口的編碼,并按返回消息內(nèi)容要求進(jìn)行返回;調(diào)用方需要按流程實(shí)現(xiàn)調(diào)用接口的編碼,并對(duì)返回消息內(nèi)容進(jìn)行處理。為了更清楚的說(shuō)明問(wèn)題,往往會(huì)在消息中注明關(guān)鍵的參數(shù)。

      4.2??????異步消息(Asynchronous Message)

      消息發(fā)送者通過(guò)消息把信息發(fā)給消息接收者,然后繼續(xù)自己的活動(dòng),不等待接收者返回消息。

      怎樣才能畫(huà)出清晰明了的時(shí)序圖

      4.3??????自關(guān)聯(lián)消息(Self-Message)

      表示實(shí)體自身需要實(shí)現(xiàn)一個(gè)處理過(guò)程,也可以調(diào)用一個(gè)外部實(shí)體的消息。

      同樣以上面車聯(lián)網(wǎng)場(chǎng)景為例,假定設(shè)計(jì)的對(duì)象是TSP及車主手機(jī)App,那么我們只能對(duì)這兩個(gè)實(shí)體分解開(kāi)發(fā)任務(wù),如圖,我們要求“車主手機(jī)App”實(shí)現(xiàn)“提供開(kāi)車門功能”,具體包含向TSP的請(qǐng)求開(kāi)車門消息調(diào)用及返回結(jié)果的處理;“TSP”要實(shí)現(xiàn)“提供開(kāi)車門接口”,具體包含向TBox的下發(fā)開(kāi)車門指令及返回結(jié)果的處理,還包含一個(gè)發(fā)送短信通知的異步消息,TSP提供的開(kāi)車門接口請(qǐng)求參數(shù)中應(yīng)包含關(guān)鍵的用戶token、車輛ID信息,返回結(jié)果中應(yīng)包含關(guān)鍵的成功/失敗、錯(cuò)誤信息。

      注意:這里引入了一個(gè)新的實(shí)體“短信中心”,也應(yīng)當(dāng)在上下文圖中先加進(jìn)去才能使用。

      遠(yuǎn)程開(kāi)車門交互時(shí)序圖

      5 總結(jié)

      三個(gè)關(guān)鍵點(diǎn):所有交互實(shí)體放進(jìn)上下文,不直接交互的實(shí)體去掉,響應(yīng)消息要與請(qǐng)求消息分開(kāi)。如果你畫(huà)的時(shí)序圖確保以上三個(gè)關(guān)鍵點(diǎn)都做到了,我想至少拿出去給大家看的時(shí)候會(huì)少挨一點(diǎn)抱怨。

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:postman使用post方法向華為云obs桶上傳文件和圖片
      下一篇:linux gdb快速入門教程
      相關(guān)文章
      国产精品亚洲一区二区麻豆| 亚洲成aⅴ人片久青草影院按摩| 亚洲色欲色欲www| 亚洲真人无码永久在线 | 国内成人精品亚洲日本语音| 亚洲综合偷自成人网第页色| 亚洲人成影院77777| 亚洲一区二区久久| 亚洲国产精品久久人人爱| 亚洲视频一区二区三区| 亚洲最大的成网4438| 久久夜色精品国产噜噜噜亚洲AV| 亚洲AV无码乱码在线观看富二代| 国产精品亚洲а∨无码播放| 亚洲毛片αv无线播放一区| 亚洲乱码中文字幕综合| 亚洲熟妇av一区二区三区| 亚洲AV午夜成人片| 亚洲一区二区成人| 中文字幕亚洲精品| 亚洲第一永久在线观看| 亚洲国产成人精品无码一区二区| 亚洲成av人片在线看片| 亚洲av成人一区二区三区| 91丁香亚洲综合社区| 亚洲人成电影网站色| 亚洲精品永久在线观看| AV激情亚洲男人的天堂国语| 国产精品亚洲一区二区无码| 亚洲人成人网站在线观看| 成人午夜亚洲精品无码网站| 亚洲色大成网站WWW久久九九| 日本亚洲视频在线| 久久精品亚洲中文字幕无码麻豆| 亚洲国产成人精品无码区在线秒播 | 亚洲AV无码乱码在线观看性色扶| 亚洲国产精品成人久久蜜臀| 久久亚洲中文字幕精品一区| 亚洲人成网站在线播放vr| 亚洲网址在线观看你懂的| jlzzjlzz亚洲jzjzjz|