课件

11.1 顺序图概念.pdf

模型驱动的开发对提高软件生产过程的自动化程度有着重要的意义,本章讲解使用 UML 模型来描述软件系统的行为。

UML 2.0 中图的分类

image.png
除了图中红圈的类图外,UML 的图系中组件图、 对象图、组成结构图、部署图、包图以及轮廓图都是对结构进行建模的图模型。

本章学习的是是对软件系统的行为进行建模的一些图,包括描述交互行为的顺序图、通信图、描述对象状态变迁的状态基图、描述过程的活动图。这些图用于定义对象的操作、生命周期、彼此之间的消息交互、对象在自身状态切换的时候发出的行为、切换前后的状态变化。

顺序图(交互行为建模)

交互是指对象为实现某个目标而在彼此之间传递消息的行为。交互行为建模目标就是为了描述对象之间如何进行协作,在 UML 中定义了多种交互图,其中应用最广的就是顺序图,有时我们也将其称为时序图、序列图。

顺序图作为交互图的一种,是对系统的一个执行过程中的交互活动场景进行建模的方法,是在类图之外最常用的一种UML图形化方法之一。

顺序图按时间的次序表示对象之间的消息,它能够指出有哪些对象参与了交互,以及它们之间消息传递的序列。顺序图的建模元素主要包括对象、生命线、控制焦点、消息。

下图给出的是一个学生在线选课的过程:
image.png
这个学生名字叫马小跳,他准备选择线性代数这门课,在这个过程中,他首先要在选课登记表单中填写个人信息,然后提交,选课登记表对象作为一个界面类会将这个申请转给选课管理员对象,要求他将马小跳加入到线性代数的选课名单当中,选课管理员又会将这个消息转发线性代数这个实体对象,告诉他要在名单中添加马小跳,线性代数这个对象又会将这个请求转发给线性代数A段这个对象,问你的这个段里还有位置吗,如果有空位的话请添加马小跳,这里无疑它的回答是有位置,我们就成功的将马小跳添加到线性代数A段的选课名单当中。

通过这个过程我们可以看到,可以用顺序图来对之前学过的用例图中的每个交互序列进行建模,就不用再继续撰写文字形式的描述了。

顺序图建模元素

顺序图建模元素中最重要的就是对象和它的生命线。在顺序图中我们刻划对象是以何种角色参与到交互场景中来,无论它是人、物还是其它的系统以及子系统。

对象 Object

image.png
对象的命名有三种方式,在图中可以看到,方框中标明的就是对象的不同类别:

  • 第一种表示的是完整命名的方法,其命名包括对象名、冒号和类名;
  • 第二种是所谓的匿名对象表示方法,此时在冒号后面写上类名,表示是任意一个这一类的对象;
  • 第三种表示的是未知类的对象,此时只显示对象名而不显示类名;

生命线 Lifeline

image.png
对象的生命线则是在这些方框的下面,用一个虚线表示,在画出对象的生命线以后,如果我们需要对对象的操作时间、片断进行区分的话,也可以定义控制焦点(也就是激活期),来表明对象拥有控制线索处在活动状态。

消息 Message

UML顺序图中另外一个核心的建模元素就是消息的表达。消息用于描述对象间的交互操作和值传递的过程。消息的类型主要有:

  • Synchronous 同步消息(有时也叫做过程调用消息)
  • Asynchronous 异步消息
  • Return 返回消息
  • Self-message 自关联消息
  • Time-out 超时等待
  • Uncommitted / Balking 阻塞

image.png
其中最常用的就是同步和异步消息。同步消息有时我们需要给它指回返回消息,返回消息用虚线箭头表明。消息通过用指向对象的水平箭头表示,在上面有时候要写出消息的名称、参数,箭头的不同用于区分不同的消息类型。在消息的定义过程中,随着问题理解的深入,再逐步添加消息的细节,而没必要在一开始就把消息的所有细节定义出来。

消息的表示形式:
image.png
上图是早期几种消息表示形式的例子,其中简单的消息一般就是包括消息的名称、标号和它的参数,嵌套消息可以是带返回值的消息,条件消息则是在消息的前边用方括号将该消息发出的必要条件标注出来,循环消息以及同步消息等则是用表达式来表明这个消息执行的控制逻辑。

顺序图基本结构

image.png
顺序图的基本控制结构在出现框之前都是采用添加条件表达式的方式来进行,包括循环、有条件的执行、返回消息以及创建对象,上图给出的是顺序图中的基本的建模结构。

顺序图中消息的循环发送

顺序图建模中的常见问题主要有消息的循环发送,我们需要在消息的名字之前添加「循环条件/添加循环框」或「带有循环控制条件的循环框」,这是两种对循环消息的建模方法。
image.png

顺序图中带条件消息的发送

在顺序图中带条件消息的发送可以通过以下几种手段完成:

  • 在消息的名字之前加条件表达式、条件子向的方式
  • 使用附加文字说明
  • 添加条件控制框
  • 将顺序图分成多个顺序图的子图,并建立带条件的关联关系,定义入口条件

image.png