UML核心視圖——?jiǎng)討B(tài)視圖——時(shí)序圖

介紹

  • 時(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í)慣
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對...
    cosWriter閱讀 11,648評論 1 32
  • 我們在進(jìn)行項(xiàng)目的時(shí)候,通過使用 UML 的面向?qū)ο髨D的方式來更明確、清晰的表達(dá)項(xiàng)目中的架設(shè)思想、項(xiàng)目結(jié)構(gòu)、執(zhí)行順序...
    充滿活力的早晨閱讀 5,063評論 2 34
  • 點(diǎn)擊查看原文 Web SDK 開發(fā)手冊 SDK 概述 網(wǎng)易云信 SDK 為 Web 應(yīng)用提供一個(gè)完善的 IM 系統(tǒng)...
    layjoy閱讀 14,306評論 0 15
  • 我們每一個(gè)人從小到大的成長路上身邊的父母,親戚,都在不斷的灌輸一種思想:好好學(xué)習(xí)啊,長大要當(dāng)老師啊,要當(dāng)飛...
    123重新看見閱讀 635評論 1 2
  • 我是一個(gè)不善言辭的人,每當(dāng)我想說些什么卻說不出來,對我來說最好的表達(dá)方式就是寫下來。 得到的和想要的對不...
    默陌莫閱讀 265評論 0 0

友情鏈接更多精彩內(nèi)容