通信图

作者: ArcherZang | 来源:发表于2019-12-03 12:57 被阅读0次

以下内容部分出至博客园coolstream,主要是自己懒得写了,部分做了修改。

简介

通信图表示对象之间的消息往来,是表述时序图中信息交互的另一种UML图,介绍完时序图就要对照学习一下通信图,二者是一体两面的。

通信图和时序图可以相互转换,二者的侧重点不同,通信图侧重哪些对象发送或接收了哪些消息,时序图侧重对象之间消息交互的时间顺序。

通信图建模步骤
  1. 确定系统需要和哪些外部参与者交互通信
  2. 确定系统内哪些主要对象之间有发送或接收消息的需求
  3. 确定外部参与者与系统对象之间、系统内部对象与对象之间的消息内容和消息类型
  4. 用相应的链将参与者和对象、对象和对象或对象自身连起来
  5. 确定参与者与对象之间、对象与对象之间的约束条件
通信图主要元素
  • 对象:通信图中交互的主体

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


      image

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


      image
      只包括对象名
      image
    2. 添加对象:
      添加参与者:Actor拖到通信图中


      Actor.PNG

      添加普通对象:直接点击工具栏中的图标,在Name处输入“对象名”


      object.PNG
      添加类信息:右击对象或者actor选择高级的intanceClassifier
      class.png
  • 链接:让消息在不同的对象间传递
    UML表示法

    1. 不同对象之间通信路径


      image
    2. 调用自身属性,会根据情况显示不同效果


      linestyle.png
    3. 添加链接:直接点击工具栏中的图标,选中要关联的对象或者选中自己两次


      associate.PNG
  • 消息:不同对象之间通信的内容。分为链接消息(Link Message)和数据标记(Data Token)两种

    1. UML消息表示法
      不同对象之间或对象自身增加链接消息;分同步和异步

      同向.PNG
      不同对象之间或对象自身反向增加链接消息
      反向.PNG
      不同对象之间的数据标记(EA中没有)
      image
      不同对象之间的反向数据标记(EA中没有)
      image
    2. 消息标签格式:[前置消息号列表] [条件] 消息序列表达式 [返回值 :=] 消息名([参数列表])

      • 前置消息号列表
        消息号:有两种,一种是无层次编号;另一种是嵌套的编号,表示消息的包含层次
        语法规则:消息号,消息号,……,消息号 /(EA中只有一个)
        作用:用来同步线程,表示在发送当前消息之前[前置消息号列表]中各消息号指代的消息被处理
      • 条件
        语法规则:[条件语句]
        作用:当条件满足时才进行通信
      • 消息序列表达式
        语法规则:[消息号|name][recurrence]:
          消息号:参见[前置消息号列表]处解释
          name:同时发送的并发消息
          recurrence:一个条件或循环的执行,有两种选择
            -*[循环语句]:循环用*标识,如 *[x = 1...100]
            -[条件语句]:这里的条件表示分支,如[x > 0]
      • 返回值:操作调用的结果
      • 消息名:消息的名字
      • 参数列表:所需参数列表
      • 示例:
        简单消息:       1: run()
        带返回值的消息:    1: p:=query()
        嵌套消息:       2.2.2: action()
        循环消息:       1.4 *[x = 1...100]: execute()
        条件消息:       3[x > 0]: drive(source, dest)
        带前置消息号列表的消息:2.1, 2.2/2.3: test()  #在发送消息2.3之前先发送消息2.1和2.2
        在EA中默认消息2.1、2.2、2.3是有顺序的,如果要表示2.2和2.3之间没有关联(2.1、2.1.1、2.1.1.1 和 2.2、2.2.1、2.2.1.1使用Sequence Communications Messages的向左向右按钮),但是两者和2.0还是有顺序关系的
    3. 添加链接消息(Add Link Message):

      • 进入添加链接消息操作框:点击两个对象之间的链接,右击后选择要新建的消息


        addmessage.png
      • 设置链接消息的类型:双击链接消息,右侧Properties设置


        Properties.PNG
通信图与时序图的关系
  • 联系
    都是交互图,都描述了参与者与对象之间、对象与对象之间的消息通信过程
    都需要消息编号来标识顺序
    二者可以相互转化

  • 区别
    侧重点:通信图侧重哪些对象交互了哪些消息;时序图侧重不同对象间交互消息的时间顺序
    创建和销毁对象:通信图中无法创建和销毁对象;时序图中可以明确标识对象的创建和销毁
    激活与去激活:通信图无法标识对象的激活与去激活;时序图中可以明确标识对象的激活与去激活

  • 转化
    时序图转化为通信图:在EA中打开时序图,然后选择菜单Design > Tools > Transform > Transform Selection【Ctrl+Shift+H (transform current Package)、Ctrl+H (transform selected elements)】,选择apply Transformations,然后在Transformations里面选择类型Sequence和目标包。
    原时序图

    communication.PNG
    转化后的通信图(move后)
    transSequence .PNG
    通信图转化为时序图:在EA中打开时序图,然后选择菜单Design > Tools > Transform > Transform Selection【Ctrl+Shift+H (transform current Package)、Ctrl+H (transform selected elements)】,选择apply Transformations,然后在Transformations里面选择类型Communication和目标包。
    原通信图
    alt.PNG
    转化后的时序图(move后)
    tramCommunication.PNG
  • 通信图示例
    以图书馆新书采购流程为例

    image
  • 通信图注意事项
    侧重消息的调用顺序,就使用时序图;侧重参与者之间的链接,就使用通信图。
    通信图中表示对象的方法与对象图中表示对象的方法一致。
    通信图交互过程中可能会创建新对象、销毁已有对象、创建并销毁新对象。
    通信图中的消息较为复杂,需要区分嵌套、条件及循环等消息的应用场景,尤其是多级消息号的使用。

相关文章

  • 通信图

    以下内容部分出至博客园coolstream,主要是自己懒得写了,部分做了修改。 简介 通信图表示对象之间的消息往来...

  • Spark学习笔记三_下 Spark 核心原理

    架构简要介绍在前几片博客提过了 Spark的消息通信原理 通信模块类图 首先看一下Spark的消息通信的类图 最核...

  • KMS音视频架构图

    KMS音视频通信架构图如下 : 图1: 图 2 :

  • Binder机制

    进程间通信方式 Android Binder框架图 Android系统框架 IPC 进程通信原理 Binder原理...

  • vue组件父子组件通信

    父子组件通信添加效果: 效果图:

  • Android Binder通信

    下面先看看Binder通信的模型图: Binder是Android系统进程间通信(IPC)方式之一。Linux已经...

  • dicom

    C-Move 服务两方通信流程图如下:

  • Netty学习内容

    java中的几种I/O模型 BIO通信模型 BIO通信模型图 网络编程的基本模型是C/S模型,两个进程之间进行通信...

  • Android ParcelFileDescriptor实现进程

    需求 一个通信通道,实现跨进程的的Socket网络通信。具体的通信通道的图如下。 需求分析 我们需要一个进程一直做...

  • PackageManager-概述

    1- 总体流程图 2- binder 通信PackageManager 与PackageManagerServic...

网友评论

      本文标题:通信图

      本文链接:https://www.haomeiwen.com/subject/pbaqgctx.html