序列图

  序列图主要用于按照交互发生的一系列顺序,显示对象之间的这些交互。很象类图,开发者一般认为序列图只对他们有意义。然而,在一个组织中,业务人员会发现序列图显示不同的业务对象如何交互,对于交流当前业务如何进行很有用;在项目的需求阶段,用例常常被细化为一个或者更多的序列图。在设计阶段,架构师和开发者能使用图,挖掘出系统对象间的交互,这样充实整个系统设计。
  图的主要用途之一,是把用例表达的需求,转化为进一步、更加正式层次的精细表达。用例常常被细化为一个或者更多的序列图。序列图除了在设计开发中使用以外,它们还能用来记录一个存在系统的对象现在如何交互。
  学习序列图需要学习序列图的基本概念,它的组成和相关的概念,当然最重要的是如通过需求分析各个对象之间的时序关系。具体的实例通过一个简单的成绩的录入和查询的栗子说明。

序列图的基本概念

1. 序列图的定义
  在UML的表示中,序列图将交互关系表示为一个二维图。其中,纵向是时间轴,时间沿竖线向下延伸。横向代表了在协作中各独立对象的角色。角色使用生命线进行表示,当对象存在时,生命线用一条虚线表示,此时对象不处于激活状态,当对象的过程处于激活状态时,生命线是一个双道线。序列图中的消息使用从一个对象的生命线到另一个对象生命线的箭头表示,箭头以时间顺序在图中从上到下排列。
  
2. 序列图在项目开发里的作用
  序列图作为一种描述在给定语境中消息是如何在对象间传递的图形化方式,在使用其进行建模时,主要可以将其用途分为以下三个方面:
  (1)确认和丰富一个使用语境的逻辑表达。一个系统的使用情境就是系统潜在的使用方式的描述,也就是它的名称所要描述的。一个使用情境的逻辑可能是一个用例的一部分,或是一条控制流。
   (2)细化用例的表达。我们前面已经提到,序列图的主要用途之一,就是把用例表达的需求,转化为进一步、更加正式层次的精细表达。用例常常被细化为一个或者更多的序列图。
   (3)有效地描述如何分配各个类的职责以及各类具有相应职责的原因。我们可以根据对象之间的交互关系来定义类的职责,各个类之间的交互关系构成一个特定的用例。例如,“Customer对象向Address对象请求其街道名称”指出Customer对象应该具有“知道其街道名”这个职责。

序列图的组成

1. 对象
  序列图中的对象可以是系统的参与者或者任何有效的系统对象。对象的表示形式也和对象图中的对象的表示方式一样,使用包围名称的矩形框来标记,所显示的对象及其类的名称带有下划线,二者用冒号隔开,使用“对象名 :类名”的形式,对象的下部有一条被成为“生命线”的垂直虚线。
这里写图片描述

2. 生命线
  生命线(Lifeline)是一条垂直的虚线,用来表示序列图中的对象在一段时间内的存在。
  每个对象的底部中心的位置都带有生命线。生命线是一个时间线,从序列图的顶部一直延伸到底部,所用时间取决于交互持续的时间,也就是说生命线表现了对象存在的时段。
  对象与生命线结合在一起称为对象的生命线。对象的对象存在的时段包括对象在拥有控制线程时或被动对象在控制线程通过时存在。当对象在拥有控制线程时,对象被激活,作为线程的根。
这里写图片描述

3. 激活
  序列图可以描述对象的激活(Activation),激活是对象操作的执行,它表示一个对象直接地或通过从属操作完成操作的过程。它对执行的持续时间和执行与其调用者之间的控制关系进行建模。
激活在序列图中用一个细长的矩形框表示,它的顶端与激活时间对齐而底端与完成时间对齐。被执行的操作根椐不同风格表示成一个附在激活符号旁或在左边空白处的文字标号。
这里写图片描述

4. 消息
  消息(Messages)是从一个对象(发送者)向另一个或几个其他对象(接收者)发送信号,或由一个对象(发送者或调用者)调用另一个对象(接收者)的操作。
  它可以有不同的实现方式,比如过程调用、活动线程间的内部通讯、事件的发生等。
这里写图片描述

序列图中的项目相关概念

1. 创建与销毁对象
  创建一个对象指的是发送者发送一个实例化消息后实例化对象的结果。
  销毁对象指的是将对象销毁并回收其拥有的资源,它通常是一个明确的动作,也可以是其它动作、约束或垃圾回收机制的结果。
  在序列图中,创建对象操作的执行使用消息的箭头表示,箭头指向被创建对象的框。
  在序列图中,对象被销毁是使用在对象的生命线上画大×表示,在销毁新创建的对象,或者序列图中的任何其他对象时,都可以使用。它的位置是在导致对象被销毁的信息上,或者在对象自我终结的地方。
这里写图片描述

2. 分支与从属流
  在UML中,存在两种方式可以来修改序列图中消息的控制流,分别是:分支和从属流。
  分支是指的是从同一点发出多个消息的并指向不同的对象,根据条件是否互斥,可以有条件和并行两种结构。由于序列图只表示某一个活动按照时间顺序的经历过程,所以在Rational Rose 2003中,对序列图的分支画法没有明显的支持。
  从属流指的是从同一点发出多个消息指向同一个对象的不同生命线。从属流在Rational Rose 2003中不支持,因为添加从属流以后会明显增加序列图的复杂度。

使用Rose创建序列图

1. 创建对象
  创建一个新的类图,可以通过以下方式进行。
   (1)右键单击浏览器中的Use Case View(用例视图)、Logical View(逻辑视图)或者位于这两种视图下的包。
   (2)在弹出的菜单中,选中“New”(新建)下的“Sequence Diagram”(序列图)选项。
   (3)输入新的序列名称。
   (4)双击打开浏览器中的序列图。

2. 创建生命线
  当对象被创建后,生命线便存在。当对象被激活后,生命线的一部分虚线变成细长的矩形框。
  在Rational Rose 2003中,是否将虚线变成矩形框是可选的,我们可以通过菜单栏设置是否显示对象生命线被激活时的矩形框。
  设置是否显示对象生命线被激活的矩形框步骤为:在菜单栏中选择“Tools”(工具)下的“Options”(选项)选项,在弹出的对话框中选择“Diagram”(图)选项卡,选择或取消“Focus of control”选项。
这里写图片描述

3. 创建消息
  在序列图中添加对象与对象之间的简单消息的步骤如下:
    (1)选择序列图的图形编辑工具栏中的图标,或者选择菜单栏“Tools”(工具)中“Create”(新建)下的“Object Message”选项,此时的光标变为“↑”符号。
   (2)单击需要发送消息的对象。
   (3)将消息的线段拖动到接收消息的对象中。
   (4)在线段中输入消息的文本内容。
   (5)双击消息的线段,弹出设置消息规范的对话框,在弹出的对话框中,在“General”选项卡中可以设置消息的名称或等,消息的名称也可以是消息接收对象的一个执行操作,我们在名称的下列菜单中选择一个或从新创建一个即可,我们称之为消息的绑定操作。
   (6)如果需要设置消息的同步信息,也就是说设置消息成为简单消息、同步消息、异步消息、返回消息、过程调用、阻止消息和超时消息等,可以在“Detail”选项卡中进行设置,还可以设置以消息的频率。
4. 创建对象与销毁对象
  由于创建对象操作也是消息的一种,我们仍然可以通过发送消息的方式创建对象。在序列图的图形表示中,和其它对象不一样的是,其它对象通常唯一图的顶部,被创建的对象通常位于图的中间部位。
这里写图片描述
  销毁对象表示对象生命线的结束,在对象生命线中使用一个“X”来进行标识。给对象生命线中添加销毁标记的步骤如下:
   (1)在序列图的图形编辑工具栏中选择 按钮,此时的光标变为“+”符号。
   (2)单击欲销毁对象的生命线,此时该标记在对象生命线中标识。该对象生命线自销毁标记以下的部分消失。
这里写图片描述

使用Rose创建序列图案例分析

1. 需求分析
  我们可以通过更加具体的描述来确定工作流程,基本工作流程如下:
   (1)李老师希望通过系统查询某名学生的学科成绩。
  (2)李老师通过用户界面录入学生的学号以及学科科目请求学生信息。
   (3)用户界面根据学生的学号向数据库访问层请求学生信息。
   (4)数据库访问层根据学生的学号加载学生信息。
   (5)数据库访问层根据学生信息和学科科目获取该名学生的分数信息。
   (6)数据库访问层将学生信息和分数信息提供给用户界面。
   (7)用户界面将学生信息和分数信息显示出来。
  
2. 确定序列对象
  建模序列图的下一步是从左到右布置在该工作流程中所有的参与者和对象,同时也包含要添加消息的对象生命线。
这里写图片描述

3. 创建序列图
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值