时序图

以下内容出至博客园coolstream,主要是自己懒得写了,部分做了修改。
时序图(Sequence Diagram),又名序列图、循序图、顺序图,是一种UML交互图。
它通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作。

它可以表示用例的行为顺序,当执行一个用例行为时,其中的每条消息对应一个类操作或状态机中引起转换的触发事件。
官方图
链接

捕获.PNG

时序图建模步骤

(1)确定系统需要和哪些外部参与者交互
(2)确定系统内哪些主要对象之间需要创建时序图
(3)确定外部参与者与系统对象之间、系统内部对象与对象之间的调用关系、消息类型和消息时序
(4)确定参与者与对象之间、对象与对象之间的约束条件,并细化为组合片段
从全流程的角度梳理典型业务场景,并精化相应的时序图

时序图主要元素
  • 参与者(Actor):参与系统的角色,可以是人、物或其它系统

    image

  • 对象(Object):类的实例

    1. 三种命名方式:
      一般表示法:包括对象名、冒号、类名和下划线


      image

      只包括类名、冒号和下划线:表示适用于该类的所有实例,这种方式称为匿名对象


      image

      只包括对象名和下划线
      image
    2. 创建对象:发送者发送一个实例化消息后触发的操作。用执行消息的箭头标识,指向被创建对象的表示框


      image
    3. 销毁对象:将对象销毁并回收其拥有的资源。在对象生命线上用X标识

      image

      在EA中只有被创建的对象才会有销毁
      new.PNG

    4. 三种状态:
      激活:当一条消息被传递给某个对象时会触发该对象的某个操作,此时该对象被激活,生命线的一部分竖直虚线变成上下细长矩形
      运行:当一个对象处于激活器并正在执行某个操作时,该对象处于运行状态
      销毁:对象被销毁并被回收资源

  • 边界(Boundary):捕捉用户交互、屏幕流和元素交互。

    Boundary.PNG

  • 控制(Control):组织和调度其他活动和元素。

    Control.PNG

  • 实体(Entity):原型对象,存储或者持久化系统中的信息。

    entity.PNG

  • 生命线(Lifeline):标识从对象图标向下延伸的一条虚线,标识对象存在的时间线。用垂直虚线标识,对象被创建后,生命线便存在。

    image

    部分分解
    一个对象可以引出多条生命线,使得对象内部和对象之间的消息显示在同一图上。
    seq11.gif

    在EA中设置instance classifier引用类或者组件时,如果类有多个part或者组件有多个port和interface就会出现多条线
    多线条.PNG

  • 控制焦点(Focus of Control):表示时间段的符号。用小矩形标识

    image

  • 消息(Message):不同对象之间的交流载体,从一个对象的生命线指向另一个对象的生命线。用实线箭头标识。消息包括很多种:

    1. 同步消息(Synchronous Message):消息被发送后,发送者停止活动等待反馈


      sequence.PNG
    2. 异步消息(Asynchronous Message):消息被发送后,发送者继续自己的活动不等待反馈


      image
    3. 返回消息(Return Message):从过程调用返回


      image
    4. 自关联消息(Self-Message):对象方法的自身调用以及对象内方法之间的相互调用(箭头类型不是固定的)


      image
    5. Change Timing:
      在EA中右击Message选择timing details
      timing.PNG

      seqtiming.png

      在此图表中,在“Open Order”消息上:
      “持续时间限制(Duration Constraint)”已设置为0…13 在“Get Cart ”消息中:
      “消息之间的持续时间限制(Duration Constraint Between Messages)”已设置为d…d*3
      “持续时间观察(Duration Observation)”已设置为d=持续时间
      “定时约束(Timing Constraint)”已设置为t…t+3
      “计时观察(Timing Observation)”已设置为t=现在
  • 激活(Activation):对象执行操作时的状态。用上下细长矩形标识,矩形的高度与对象处于运行状态的时段对应

    image

  • 约束(Constraint):有时候对象交互必须满足特定的条件才会发送相应的消息,这些条件就成为约束。UML1.x与UML2.0中约束的标识有所不同。
    UML1.x:一个约束只能被分配到一个消息上,且需要把约束条件放在消息线上、消息名之前

    image

    UML2.0:增加了组合片段的特性,取消了UML1.x中的约束格式。参见组合片段(Combined Fragments)部分

  • 结束点(End Point)
    结束点一般用于迷路消息和拾取消息。
    迷路消息是那些发送了却没有到达指定接收者,或者到达的接收者不再当前图中。
    拾取消息是收到来自那些未知的发送者,或者来自没有显示在当前图的发送者的消息。它们都表明是去往或来自一个终点元素。

    End Point.gif

  • 通信(Communication):对象交互时的通信路径

  • 组合片段(Combined Fragments[EA中Fragment]):描述交互执行的条件与方式。
    UML表示法

    image

    交互操作符(interaction Operators,十二种):时序图中画出循环和条件的运算子。这里只介绍常用的运算子,全部运算子参考官网

    1. alt(Alternative):与if...else...或switch对应


      alt.PNG
    2. opt(Optional):可能发生也可能不发生的片段


      opt.PNG
    3. par(Parallel):并行发生


      par.PNG
    4. loop [value]:与for 或foreach对应,[value]表示循环次数


      loop.PNG
    5. critical
      指示不能被其他处理中断的序列。
    6. neg
      断言片段无效,并表示所有其他交互都有效。
    7. assert
      指定要出现的唯一有效片段。此运算符通常包含在考虑或忽略操作数中。
    8. strict
      指示必须严格按顺序处理操作数的行为。
    9. seq
      表明组合片段的序列很弱。这意味着,只要第一个操作数的事件发生在第二个操作数之前,如果事件发生在同一条生命线上,则保持操作数内的顺序,但操作数之间的顺序未定义。
    10. ignore
      指示在执行期间应忽略哪些消息,或者哪些消息可以出现在执行跟踪中的任何位置。
    11. consider
      指定跟踪中应考虑的消息。这通常用于使用assert运算符指定结果事件的出现。
    12. ref
      提供对其他图表的引用。
  • 门(DiagramGate):门是连接片段内消息和片段外消息的连接点。 在EA中,门显示为片段框架上的小正方形。作用为顺序图与页面外的连接器。 用来表示进来的消息源,或者出去消息的终点。下面两个图显示它们在实践中的使用。注意:" top level diagram"中的门用消息箭头指向参考片段,在这里没有必要把它画成方块。

    DiagramGate.gif

    DiagramGate.gif

  • 状态 / 延续(State/Continuation)
    状态常量是生命线的约束,运行时始终为"真"。显示为两侧半圆的矩形,如下图:
    延续虽与状态常量有同样的标注,但是被用于复合片段,并可以延伸跨越多条生命线。

    image

  • 引用(Interaction ):功能上和组合片段(Combined Fragments)的ref类似。
    可以使用交互元素将交互关系图作为类元素的子元素插入。
    包含以下任何类型的关系图:
    Sequence Diagram
    Communication Diagram
    Timing Diagram

    Parent.PNG

    child.PNG

时序图示例

以ATM取款为例


image
时序图注意事项
  1. 在时序图中根据重要性将对象从左到右排列,也可使用类来标识匿名对象
  2. 对象在交互过程中可以新建和销毁
  3. 时序图的解读方式为从上到下、从左到右
  4. 注意区分消息的不同类型及应用场景
  5. 对象处于激活期时顶部代表操作的开始,底部代表操作的结束,中间部分表示操作过程中的调用
  6. 对于复杂的消息注意相关的约束及在UML不同版本中的区别,如前置条件、后置条件、组合片段等
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 193,495评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,469评论 2 369
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 140,825评论 0 318
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 51,974评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,849评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 45,990评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,415评论 3 380
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,125评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,351评论 1 288
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,474评论 2 307
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,249评论 1 324
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,119评论 3 310
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,496评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,838评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,118评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,366评论 2 340
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,573评论 2 335