第七章序列图学习内容序列图的基本概念序列图的组成序列图中的项目相关概念使用Rose创建序列图使用Rose创建序列图案例分析序列图的基本概念1.序列图的定义在UML的表示中,序列图将交互关系表示为一个二维图。其中,纵向是时间轴,时间沿竖线向下延伸。横向代表了在协作中各独立对象的角色。角色使用生命线进行表示,当对象存在时,生命线用一条虚线表示,此时对象不处于激活状态,当对象的过程处于激活状态时,生命线是一个双道线。序列图中的消息使用从一个对象的生命线到另一个对象生命线的箭头表示,箭头以时间顺序在图中从上到下排列。序列图的基本概念2.序列图在项目开发里的作用序列图作为一种描述在给定语境中消息是如何在对象间传递的图形化方式,在使用其进行建模时,主要可以将其用途分为以下三个方面:(1)确认和丰富一个使用语境的逻辑表达。一个系统的使用情境就是系统潜在的使用方式的描述,也就是它的名称所要描述的。一个使用情境的逻辑可能是一个用例的一部分,或是一条控制流。(2)细化用例的表达。我们前面已经提到,序列图的主要用途之一,就是把用例表达的需求,转化为进一步、更加正式层次的精细表达。用例常常被细化为一个或者更多的序列图。(3)有效地描述如何分配各个类的职责以及各类具有相应职责的原因。我们可以根据对象之间的交互关系来定义类的职责,各个类之间的交互关系构成一个特定的用例。例如,“Customer对象向Address对象请求其街道名称”指出Customer对象应该具有“知道其街道名”这个职责。序列图的组成1.对象•序列图中的对象可以是系统的参与者或者任何有效的系统对象。对象的表示形式也和对象图中的对象的表示方式一样,使用包围名称的矩形框来标记,所显示的对象及其类的名称带有下划线,二者用冒号隔开,使用“对象名:类名”的形式,对象的下部有一条被成为“生命线”的垂直虚线。序列图的组成2.生命线生命线(Lifeline)是一条垂直的虚线,用来表示序列图中的对象在一段时间内的存在。每个对象的底部中心的位置都带有生命线。生命线是一个时间线,从序列图的顶部一直延伸到底部,所用时间取决于交互持续的时间,也就是说生命线表现了对象存在的时段。对象与生命线结合在一起称为对象的生命线。对象的对象存在的时段包括对象在拥有控制线程时或被动对象在控制线程通过时存在。当对象在拥有控制线程时,对象被激活,作为线程的根。序列图的组成3.激活序列图可以描述对象的激活(Activation),激活是对象操作的执行,它表示一个对象直接地或通过从属操作完成操作的过程。它对执行的持续时间和执行与其调用者之间的控制关系进行建模。激活在序列图中用一个细长的矩形框表示,它的顶端与激活时间对齐而底端与完成时间对齐。被执行的操作根椐不同风格表示成一个附在激活符号旁或在左边空白处的文字标号。序列图的组成4.消息消息(Messages)是从一个对象(发送者)向另一个或几个其他对象(接收者)发送信号,或由一个对象(发送者或调用者)调用另一个对象(接收者)的操作。它可以有不同的实现方式,比如过程调用、活动线程间的内部通讯、事件的发生等。序列图中的项目相关概念1.创建与销毁对象创建一个对象指的是发送者发送一个实例化消息后实例化对象的结果。销毁对象指的是将对象销毁并回收其拥有的资源,它通常是一个明确的动作,也可以是其它动作、约束或垃圾回收机制的结果。在序列图中,创建对象操作的执行使用消息的箭头表示,箭头指向被创建对象的框。在序列图中,对象被销毁是使用在对象的生命线上画大×表示,在销毁新创建的对象,或者序列图中的任何其他对象时,都可以使用。它的位置是在导致对象被销毁的信息上,或者在对象自我终结的地方。序列图中的项目相关概念2.分支与从属流在UML中,存在两种方式可以来修改序列图中消息的控制流,分别是:分支和从属流。分支是指的是从同一点发出多个消息的并指向不同的对象,根据条件是否互斥,可以有条件和并行两种结构。由于序列图只表示某一个活动按照时间顺序的经历过程,所以在RationalRose2003中,对序列图的分支画法没有明显的支持。从属流指的是从同一点发出多个消息指向同一个对象的不同生命线。从属流在RationalRose2003中不支持,因为添加从属流以后会明显增加序列图的复杂度。使用Rose创建序列图1.创建对象创建一个新的类图,可以通过以下方式进行。(1)右键单击浏览器中的UseCaseView(用例视图)、LogicalView(逻辑视图)或者位于这两种视图下的包。(2)在弹出的菜单中,选中“New”(新建)下的“SequenceDiagram”(序列图)选项。(3)输入新的序列名称。(4)双击打开浏览器中的序列图。使用Rose创建序列图2.创建生命线当对象被创建后,生命线便存在。当对象被激活后,生命线的一部分虚线变成细长的矩形框。在RationalRose2003中,是否将虚线变成矩形框是可选的,我们可以通过菜单栏设置是否显示对象生命线被激活时的矩形框。设置是否显示对象生命线被激活的矩形框步骤为:在菜单栏中选择“Tools”(工具)下的“Options”(选项)选项,在弹出的对话框中选择“Diagram”(图)选项卡,选择或取消“Focusofcontrol”选项。使用Rose创建序列图3.创建消息在序列图中添加对象与对象之间的简单消息的步骤如下:(1)选择序列图的图形编辑工具栏中的图标,或者选择菜单栏“Tools”(工具)中“Create”(新建)下的“ObjectMessage”选项,此时的光标变为“↑”符号。(2)单击需要发送消息的对象。(3)将消息的线段拖动到接收消息的对象中。(4)在线段中输入消息的文本内容。(5)双击消息的线段,弹出设置消息规范的对话框,在弹出的对话框中,在“General”选项卡中可以设置消息的名称或等,消息的名称也可以是消息接收对象的一个执行操作,我们在名称的下列菜单中选择一个或从新创建一个即可,我们称之为消息的绑定操作。(6)如果需要设置消息的同步信息,也就是说设置消息成为简单消息、同步消息、异步消息、返回消息、过程调用、阻止消息和超时消息等,可以在“Detail”选项卡中进行设置,还可以设置以消息的频率。使用Rose创建序列图4.创建对象与销毁对象由于创建对象操作也是消息的一种,我们仍然可以通过发送消息的方式创建对象。在序列图的图形表示中,和其它对象不一样的是,其它对象通常唯一图的顶部,被创建的对象通常位于图的中间部位。使用Rose创建序列图销毁对象表示对象生命线的结束,在对象生命线中使用一个“X”来进行标识。给对象生命线中添加销毁标记的步骤如下:(1)在序列图的图形编辑工具栏中选择按钮,此时的光标变为“+”符号。(2)单击欲销毁对象的生命线,此时该标记在对象生命线中标识。该对象生命线自销毁标记以下的部分消失。使用Rose创建序列图案例分析1.需求分析我们可以通过更加具体的描述来确定工作流程,基本工作流程如下:(1)李老师希望通过系统查询某名学生的学科成绩。(2)李老师通过用户界面录入学生的学号以及学科科目请求学生信息。(3)用户界面根据学生的学号向数据库访问层请求学生信息。(4)数据库访问层根据学生的学号加载学生信息。(5)数据库访问层根据学生信息和学科科目获取该名学生的分数信息。(6)数据库访问层将学生信息和分数信息提供给用户界面。(7)用户界面将学生信息和分数信息显示出来。使用Rose创建序列图案例分析2.确定序列对象建模序列图的下一步是从左到右布置在该工作流程中所有的参与者和对象,同时也包含要添加消息的对象生命线。使用Rose创建序列图案例分析3.创建序列图练习题(1)以“远程网络教学系统”为例,在该系统中,系统管理员需要登录系统才能进行系统维护工作,如添加教师信息、删除教师信息等。根据系统管理员添加教师信息用例,创建相关序列图。练习题(2)在“远程网络教学系统”中,如果我们单独抽象出来一个数据访问类来进行数据访问。那么,根据系统管理员添加教师信息用例,重新创建相关序列图。