UML顺序图顺序图是强调消息时间顺序的交互图。顺序图描述了对象之间传送消息的时间顺序,用来表示用例中的行为顺序。顺序图将交互关系表示为一个二维图。纵向是时间轴,时间自上而下。横向显示了代表协作中单个对象的分类角色。顺序图用来建模以时间顺序安排的对象交互,并且把用例行为分配给类。它是用来显示参与者如何采用若干步骤与系统对象交互的模型。一、定义顺序图顺序图的一个用途是显示用例的行为序列。当行为被实现时,每个顺序图中的消息同对象的操作或状态机中迁移上的事件触发相一致。任何用例都可以使用顺序图进一步阐明和实现。二、为什么要建模顺序图顺序图主要有两个主要的助记符:活动对象和这些活动对象之间的通信消息。活动对象可以是任何在系统中扮演角色的对象,不管它是对象实例还是参与者,每个分类角色显示为一条生命线,代表整个交互期间上的角色。如下图所示。三、顺序图的标记符1.活动对象活动对象可以是系统的参与者或者任何有效的系统对象。对象是类的实例,它使用包围名称的矩形框来标记。名称带下划线,顺序图中对象的标记符如下图所示。每个分类角色表现为垂直列-生命线。在角色存在的时间内,生命线显示为虚线;在角色的过程激活时间内,生命线显示为双线。2.消息2.消息消息用来说明顺序图中不同活动对象之间的通信。它可以在一个对象需要取消不同对象的进程时或者需要向另一个对象提供服务时,使用消息。消息从活动对象生命线到接收对象生命线的箭头表示。箭头以时间顺序在图中从上到下排列。箭头上面标记要发送的消息,如下图所示。把参与者表示为活动对象的建模可以说明参与者如何与系统交互,以及系统如何与用户交互。参与者可以调用对象,对象也可以通知参与者,如下图所示。四、如何使用消息进行通信消息是顺序图活动对象之间通信的惟一方式。UML中消息使用了一些简介的标记符。消息可以包含条件以便限制它们只有满足条件时才能发送。条件显示在消息名称上面的方括号中,如下图所示:在UML中,总共有4种类型的消息,如下图所示。到目前为止只看到了一种消息,即简单消息(flatmessage)1.同步消息同步消息(synchronousmessage)代表一个操作调用的控制流。同步消息的发送者把控制传递给消息的接收者。然后暂停活动,等待消息接收者的应答,收到应答后才继续自己的操作。2.异步消息异步消息(asynchronousmessage)用于控制流在完成前不需要中断的情况3.简单消息五、用例上图表示处理请求用例的顺序图。图中五个方框分别表示五个对象:ProcessMonitor、EngineManager、Engine、EntactmentDB、Logfiles。这个用例是由ProcessMonitor接收用户操作,再将这些操作转换成固定的请求,发送给引擎执行而产生的。当ProcessMonitor接收到用户在界面上所作的操作后,将这些操作转换为固定的命令请求,发送给EngineManager。EngineManager再根据接收到命令的类别,将命令分发给不同的Engine。Engine则具体执行相应的命令。Engine执行完命令后,通知EntactmentDB修改相应的数据。接下来,Engine再通知Logfiles将所作的操作记录下来,以供以后查询。最后,Engine直接将结果返回给ProcessMonitor,由ProcessMonitor将结果包装,显示给用户。创建顺序图包含四项任务:•1)确定需要建模的工作流。•2)从左到右布置对象。•3)添加消息和条件以便创建每一个工作流。•4)绘制总图以便连接各个分图。六、学习如何建模顺序图1.确定工作流建模顺序图的第一步是确定将要建模的工作流。对于这个练习,我们将要建模Gradingsystem的ViewGrades用例。为此,需要至少标识出3个要建模的工作流:教师成功地检查学生分数教师试图检查某个学生的分数,但是该学生在系统中不存在。教师试图检查某个学生的分数,但是该学生分数在系统中不存在。2.布置对象•建模顺序图的下一步是从左到右布置所有的参与者和对象,包含要添加消息的对象生命线。3.添加消息和条件接下来,对每一个工作流作为独立的顺序图建模。从基本的工作流开始,它是没有出错条件,并且需要最少决策的工作流。在本例中,基本工作流是教师成功地检查某个学生的分数。如下图所示。注意选择适当的消息类型(异步、同步、简单和返回)。接下来以独立的顺序图建模从属工作流。此处只建模否定的条件,如下图所示。注意使用条件来指示在什么时候发送什么消息,如下图所示现在已经完成了每一个工作流的顺序图。4.绘制总图建模顺序图的最后一步是把所有独立的工作流连接为一个总图。