《第13讲-UML详细设计-顺序图PPT.ppt》由会员分享,可在线阅读,更多相关《第13讲-UML详细设计-顺序图PPT.ppt(39页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第13讲讲 详细设计之详细设计之UML建模建模n n动态动态模型交互模型交互模型交互模型交互图图1 交互图表示类(对象)如何交互来实现系统行为。交互图具有如下两种形式。1)顺序图(时序图)它描述对象按时间顺序的消息交换过程,它体现出系统用例的行为。2)协作图 它描述对象间的组织协作关系,它也可体现出系统用例的行为。引言引言 UMLUML交互图交互图2 一、一、顺序图的概念顺序图的概念 顺序图是两种类型的交互图之一。顺序图用来建模顺序图是两种类型的交互图之一。顺序图用来建模以时以时间顺序安排的对象交互间顺序安排的对象交互,并且把用例行为分配给类,并且把用例行为分配给类(对象对象)。它是用来显示
2、。它是用来显示参与者如何采用若干顺序步骤与系统对参与者如何采用若干顺序步骤与系统对象交互的模型象交互的模型。n顺序图样式顺序图样式对象对象对象对象消息消息消息消息生命线生命线生命线生命线激活期激活期激活期激活期顺序图建模顺序图建模3二、为什么要建模顺序图 建模顺序图有许多理由,顺序图与活动图具有类似的作用。其中重要的理由就是实现用例。任何用例都可以使用顺序图进一步阐明和实现。顺序图刻画了用例具体实现的流程,比活动图更能够表示细节,因此适用于详细设计。4UML-5-顺序图与用例图和类图的关系顺序图与用例图和类图的关系5 三、顺序图的标记符 顺序图有两个主要的标记符:活动对象和这些活动对象之间的通
3、信消息。活动对象可以是任何在系统中扮演角色的对象,不管它是对象实例还是参与者,如下图所示。61活动对象 活动对象可以是系统的参与者或者任何有效的系统对象。对象是类的实例,它使用包围名称的矩形框来标记。名称带下划线,顺序图中对象的标记符如下图所示。7(1 1)对对象的命名象的命名象的命名象的命名对象名:类名对象名:类名:类名:类名:对象名:对象名匿名对象匿名对象对象的左右排列位置对象的左右排列位置对象的左右顺序并不重要,但是为了图面的清晰整洁起见,通常应遵循以下两个原则:对象的左右顺序并不重要,但是为了图面的清晰整洁起见,通常应遵循以下两个原则:(1)把交互频繁的对象尽可能地靠拢)把交互频繁的对
4、象尽可能地靠拢(2)把初始化整个交互活动的对象(有时是一个参与者)放置在最左边)把初始化整个交互活动的对象(有时是一个参与者)放置在最左边8 生命线生命线 表示对象存在的时间,对象下面一条虚线表示。表示对象存在的时间,对象下面一条虚线表示。生命线从对象创建开始到对象销毁时终止。生命线从对象创建开始到对象销毁时终止。对象生命线对象生命线 表示对象表示对象的撤销的撤销对象在生命线上的两对象在生命线上的两种状态种状态:休眠状态休眠状态激活状态激活状态9 控制焦点控制焦点/激活期激活期 小矩形,表示这个时间对象将执行操作。小矩形,表示这个时间对象将执行操作。当一个对象没有被激活期时,该对象处于休眠状态
5、,当一个对象没有被激活期时,该对象处于休眠状态,什么事都不做,但它仍然存在,等待新的消息来激活它。什么事都不做,但它仍然存在,等待新的消息来激活它。当一条消息被传递给对象的时候,它会触发该对象的某当一条消息被传递给对象的时候,它会触发该对象的某个行为,这是就说该对象被激活了。个行为,这是就说该对象被激活了。当一个对象处于激活期时,表明该对象正在执行某个动当一个对象处于激活期时,表明该对象正在执行某个动作。作。.激活期激活期矩形框的高度表示对象执矩形框的高度表示对象执行一个操作所经历的时间行一个操作所经历的时间段,矩形的顶部表示动作段,矩形的顶部表示动作的开始,底部表示动作的的开始,底部表示动作
6、的结束。结束。对象接收消息后可以由自对象接收消息后可以由自己的某个操作来完成,也己的某个操作来完成,也可以通过其他对象的操作可以通过其他对象的操作来完成。来完成。10 把参与者表示为活动对象参与者表示为活动对象的建模可以说明参与者如何与系统交互,以及系统如何与用户交互。参与者可以调用对象,对象也可以通知参与者,如下图所示。可以把消息发送给不是其直接相邻的参与者或者对象。可以把消息发送给不是其直接相邻的参与者或者对象。112消息 消息用来说明顺序图中不同活动对象之间的通信。消息从活动对象生命线到接收对象生命线的箭头表示。箭头上面标记要发送的消息,如下图所示。活动对象之间发送的消息是顺序图的关键。
7、消息说明了对象之间的控制流,对象是如何交互的。12带箭头的连线,表示对象之间传输的信息。带箭头的连线,表示对象之间传输的信息。对象之间的交互是通过互发消息来实现的。一个对象可对象之间的交互是通过互发消息来实现的。一个对象可以请求(要求)另一个对象做某件事件。以请求(要求)另一个对象做某件事件。消息从源对象指向目标对象。消息一旦发送便将控制从消息从源对象指向目标对象。消息一旦发送便将控制从源对象转移到目标对象。源对象转移到目标对象。消息消息13时序图中,消息的阅读顺序是严格自上而下的时序图中,消息的阅读顺序是严格自上而下的14消息的类型:在UML中,总共有4种类型的消息,如下图所示。到目前为止只
8、看到了一种消息,即简单消息(flat message)。15(1).同步消 息 同步消息(synchronous message)代表一个操作调用的控制流。同步消息的发送者把控制传递给消息的接收者,然后暂停活动,等待消息接收者的应答,收到应答后才继续自己的操作。16(2)异步消息 异步消息(Asynchronous message)用于控制流在完成前不需要中断的情况。异步消息的发送者把控制传递给消息的接收者,然后继续自己的活动,不需等待接收者返回信息或控制。下面示例演示了如何在登录文件的情况下使用异步消息。17(3)简单消 息 如果所有的消息都是同步或者异步消息,那么为什么还要简单消息呢?因为
9、有时候我们不关心消息是同步还是异步,此外在高层分析中,有时候没有必要指定一个消息是同步的还是异步的。如下面的示例所示。18四、如何使用消息进行通信 消息是顺序图活动对象之间通信的惟一方式。UML中的消息使用了一些简洁的标记符。消息可以包含条件以便限制它们只在满足条件时才能发送消息可以包含条件以便限制它们只在满足条件时才能发送。条件显示在消息名称上面的方括号中,如下图所示。19 下面示例演示了如何建模一个顺序图来显示登录尝试。如果登录失败,会在放弃登录之前重试一次,如下图所示。20 这个顺序图中有4个活动对象:Developer、Compiler、Linker和FileSystem。Develo
10、per是系统的参与者。Compiler是Developer交互的应用程序。Linker是一个用来链接对象文件的独立进程。FileSystem是系统层功能的包装器,用来执行文件的输人和输出例程。Compile Application用例的顺序图操作:Developer请求Compiler执行编译 Compiler请求FileSystem 加载文件 Compiler通知自己执行编译 Compiler请求FileSystem 保存对象代码 Compiler请求Linker链接对象代码 Linker请求 FileSystem加载对象代码 Liker通知自己执行链接 Linker请求FileSystem
11、保存编译的结果下面看一个意义更加丰富的示例。对于Compile Application用例,我们可以创建一个成功编译工作流的顺序图。21一个成功编译工作流的顺序图22五、顺序图的其他技术1创建对象 创建对象的标记符如下图中的示例所示。有一个主要步骤用来把“create”消息发送给对象实例。对象创建之后就会具有生命线,就像顺序图中的任何其他对象一样。现在可以像顺序图中的其他对象那样来使用该对象发送和接收消息。在处理新创建的对象,或者处理顺序图中的任何其他对象时,都可以发送“destroys”消息来删除对象。若要想说明某个对象被销毁,需要在被销毁对象的生命线上放一个X字符。23243分支和从属流
12、有两种方式来修改顺序图的控制流:使用分支和使用从属流。控制流的改变是由于不同的条件导致控制流走向不同的道路。分支是指从同一点分支是指从同一点分支是指从同一点分支是指从同一点发发出的多个消息并指向不同的出的多个消息并指向不同的出的多个消息并指向不同的出的多个消息并指向不同的对对象,根据条象,根据条象,根据条象,根据条件是否互斥,可以有条件和并行两种件是否互斥,可以有条件和并行两种件是否互斥,可以有条件和并行两种件是否互斥,可以有条件和并行两种结结构。构。构。构。25 注意消息的开始位置是相同的,分支消息的结束“高度”也是相等的。这说明在下一步中,其中之一将会执行,如下图所示。26从属流指的是从同
13、一点从属流指的是从同一点从属流指的是从同一点从属流指的是从同一点发发出多个消息指向同一个出多个消息指向同一个出多个消息指向同一个出多个消息指向同一个对对象的不象的不象的不象的不同生命同生命同生命同生命线线27 在下面的示例中,Editor在用户删除文件或者保存文件时向Filesystem发送一条消息。显然,Filesystem将会执行两种完全不同的活动,并且每一个工作流都需要独立的生命线,如下图 所示。28六、学习如何建模顺序图 创建顺序图包含4项任务:1)确定需要建模的工作流。2)从左到右布置对象。3)添加消息和条件以便创建每一个工作流。4)绘制总图以便连接各个分图。例子:建模“教师查询学生
14、分数”1确定工作流 建模顺序图的第一步是确定将要建模的工作流。为此,需要至少标识出3个要建模的工作流:教师成功地检查学生分数 教师试图检查某个学生分数,但是该学生在系统中不存在。教师试图检查某个学生分数,但是该学生分数在系统中不存在。292布置对象 建模顺序图的下一步是从左到右布置所有的参与者和对象,包含要添加消息的对象生命线,如下图所示。303添加消息和条件 接下来,对每一个工作流作为独立的顺序图建模。从基本的工作流开始,它是没有出错条件,并且需要最少决策的工作流。在本例中,基本工作流是教师成功地检查某个学生的分数,如下图所示。31 注意选择适当的消息类型(异步、同步、简单和返回)。接下来以
15、独立的顺序图建模从属工作流。此处只建模否定的条件,如下图所示。32 学生没分数,注意使用条件来指示在什么时候发送什么消息,如下图所示。334绘制总图 建模顺序图的最后一步是把所有独立的工作流连接为一个总图,如下图所示。在此阶段,如果觉得前面的消息和交互对于当前的顺序图过于详细,可以让它们更加泛化一些,但是在软件建模的下一个阶段,就会觉得初始的各个顺序图越详细越好。34351使用控制矩形 控制矩形是一种用来帮助读者理解消息序列中对象涉及时间的标记符。在大多数情况下,某一时刻有一个对象活动焦点,但是,在带有同步功能的事件驱动的应用程序中,情况并非总是如此。例如下面这个对前节顺序图增强了的顺序图示例,如下图所示。36372指定活动期间 控制矩形不必总是扩展到对象生命线的末端,也不必连续不断,如下图中的示例所示。这个标记符演示了当消息处理完成之后对象完全丧失控制权的情况。这表示对象没有在等待进一步的指令。38练习:建模在图书馆网上借书和续借书的顺序图 包括:登陆、个人借阅信息界面、续借(图书是否过期,是否续借过)39