《软件工程8 动态设计——2.交互图》由会员分享,可在线阅读,更多相关《软件工程8 动态设计——2.交互图(97页珍藏版)》请在金锄头文库上搜索。
1、图书管理系统第6次课1.完成系统行为交互建模:时序图建模今天的工作任务提交内容1. 系统时序图我们的进度,在这里1 时序图的相关概念3 时序图的用途4 时序图的建模技术知识点:动态视图时序图我们的进度,在这里通过RUP方法开发软件时,我们是以用 例为材料来构造交互图的,交互图通常是对用 例的实现。即,交互图中的对象相互协作,完 成用例的功能。交互图的概念1. 交互图的概念交互图(interaction): 用来描述对象之间、对象与参与者之间的动态协作关系,以及协作过程中行为次序 的图形。2.交互图的类型 顺序图( Sequence diagram )又称为时序图 协作图( Collaborat
2、ion diagram ) 用例图、类图、活动图、时序图之间是什么 关系?时序图有什么作用?一个旅客到机场换登机牌的情况1.交互的对象 2.消息交互的时间顺序赤壁之战的时序图Public class 刘备 public void 应战(); Public class 孔明 public void 拟定策略();public void 联合孙权();private void 借东风火攻(); Public class 关羽 Public void 防守荊州(); Public class 张飞 public void 防守荆州前线(); Public class 孙权 public void 领
3、兵相助(); 活动图(从用户的角度描述用例)用例 时序图(从计算机的角度描述用例)对象间的交互分析1:用例图、活动图、时序图之间的关系分析2:类图与时序图之间的关系思考:消息是什么?与类是什么关系?类图时序图 类对象 操作消息类图描述系统的静态结构,时序图描述系统的动态行为需要在类C中添加操作“K”若出现了一个新的消息(不是类中的操作),则需要为类添加一个新的操作。小结:时序图的作用n用对象间的交互来描述用例n寻找类的操作1 时序图的概念时序图描述了对象之间传递消息的时间顺序,它用来 表示用例的行为顺序。时序图的作用:n用对象间的交互来描述用例n寻找类的操作时序图符号表示生命线激活消息我们的进
4、度,在这里对象时序图包括了4个元素 ,分别是 对象(Object)、 生命线(Lifeline)、 激活(Activation )和消息(Message )。一、对象对象是类的实例,对象是通过类来创建的,我们可以把类看作是创建对象的模板。1、对象的符号时序图中的每个对象显示在单独的列里。匿名对象2、对象的左右排列位置对象的左右顺序并不重要,但是为了图面的清晰整洁起见 ,通常应遵循以下两个原则:(1)把交互频繁的对象尽可能地靠拢(2)把初始化整个交互活动的对象(有时是一个参与者) 放置在最左边二、生命线(lifeline)表示对象的生存时间。生命线从对象创建开始到对象销毁 时终止。对象在生命线上
5、的两种状态:休眠状态激活状态三、消息1、消息的概念对象之间的交互是通过互发消息来实现的。一个对象可以 请求(要求)另一个对象做某件事件。消息从源对象指向目标对象。消息一旦发送便将控制从源 对象转移到目标对象。时序图中,消息的阅读顺序是严格自上而下的2、消息的类型与符号简单消息(包括反身消息)同步消息异步消息返回消息(可选)实例:同步与异步你叫我去吃饭,我听到了就和你去吃饭;如果没有听到, 你就不停的叫,直到我告诉你听到了,才一起去吃饭。你叫我去吃饭,然后自己去吃饭,我得到消息后可能立即 走,也可能等到下班才去吃饭。所以,要我请你吃饭就用同步的方法,要请我吃饭就用异步的方法,这样你可以省钱。_!
6、(1)简单消息简单消息是没有区分同步和异步的消息。 简单消息用从一对象的生命线指向另一个对象的生命线的直线 箭头来表示,箭头上面标出消息名。(2)同步消息消息的发送者把进程控制传递给消息的接收者,然后暂停 活动,等待消息接收者的回应消息。你叫我去吃饭,我听到了就和你去吃饭;如果没有听到, 你就不停的叫,直到我告诉你听到了,才一起去吃饭。(3)异步消息消息的发送者将消息发送给消息的接收者后,不用等 待回应的消息,即可开始另一个活动。你叫我去吃饭,然后自己去吃饭,我得到消息后可能立即 走,也可能等到下班才去吃饭。四、激活1、激活的概念当一个对象没有被激活期时,该对象处于休眠状态,什么 事都不做,但
7、它仍然存在,等待新的消息来激活它。当一条消息被传递给对象的时候,它会触发该对象的某个 行为,这是就说该对象被激活了。当一个对象处于激活期时,表明该对象正在执行某个动 作。 2、激活的符号激活用一个细长的矩阵框(在生命线上)表示。矩形框的高度表示对象执 行一个操作所经历的时间 段,矩形的顶部表示动作 的开始,底部表示动作的 结束。对象接收消息后可以由自 己的某个操作来完成,也 可以通过其他对象的操作 来完成。三个图有什么区别?4.建立顺序图 从用例中识别交互过程;4.建立顺序图 从用例中识别交互过程; 识别参与交互过程的对象;4.建立顺序图 从用例中识别交互过程; 识别参与交互过程的对象; 为每
8、一个对象设置生命线,并确定对象的存在期限;4.建立顺序图 从用例中识别交互过程; 识别参与交互过程的对象; 为每一个对象设置生命线,并确定对象的存在期限; 从引发交互的初始消息开始,在对象生命线上依次画出交互的消息;4.建立顺序图 从用例中识别交互过程; 识别参与交互过程的对象; 为每一个对象设置生命线,并确定对象的存在期限; 从引发交互的初始消息开始,在对象生命线上依次画出交互的消息;如果需要,可以给消息增加时间约束,以及前置条件和后置条件。用例描述:注册用户在官方网站帐户登陆页面上输入ID和密码登陆管理个 人帐户。 主事件流: 1用户点击主页上的登陆按钮,开始用例。 2系统显示登陆页面。
9、3用户输入ID和密码,然后点击登陆。 4系统验证登陆信息和数据库一致,然后回到主页。 5用例结束。 其他事件流A1: 如果用户点击登陆页面上的提示词按钮,系统在一个单独的对话框里显示 为用户储存的提示词,用户点击确定按钮,系统页面回到登陆页。 其他事件流A2: 如果用户输入了一个系统无法识别的ID,系统显示错误信息并提示用户输 入一个不同的ID。 其他事件流A3: 如果用户输入了一个不正确的密码,系统显示错误信息并提示用户输入正 确的密码。 其他事件流A4: 如果用户连续3次输入错误的密码,系统显示消息告诉用户无法再连接服 务器,并且冻结登陆页。工作任务1:完成系统行为 交互建模时序图建模我们
10、的进度,在这里工具应用在rose中如何画时序图创建方法 单击Browse Interaction Diagram,弹出Select Interaction Diagram对话框;在对话框左边选择预建立 时序图的包,单击OK。弹出New Interaction Diagram 对话框;在Title字段输入新框图的名字,单击diagram type中的Sequence,单击OK。 在左边浏览器Use Case View或Logical View上右键单击 ,选择“new”,选择“Sequence Diagram”。 创建时序图我们的进度,在这里一、新建一个时序图方法1:方法2:右击某个用例,如下图
11、所示这种便于将用例图与时序图衔接起来二、重命名并双击该时序图对象消息三、添加对象方法1:利用已经存在(创建)的类 a.从浏览器中将类(事先已创建)拖到时序图中 b. 双击该对象以设置对象的名称方法2:新建对象,然后给该对象指定一个类a.通过工具栏的对象按纽在时序图中添加一个对象b.双击对象,给该对象指定一个类或新建一个类四、添加消息1、添加简单消息a.使用此按纽在两个对象之间拖动b.双击消息,在弹出的窗口中设置消息的名称2、添加同步消息 方法:双击简单消息,在弹出的对话框选择“detail”选 项 卡,选中”procedure a call”3、添加异步消息 方法:双击简单消息,在弹出的对话框
12、选择“detail”选 项 卡,选中”Asynchronous”Detail标签 消息同步类型( Synchronization)选项含义Simply简单消息。Synchronous同步。客户(发送消息的对象)发出消息后 ,等待供应者(即消息接收者,或操作提供 者)响应消息。客户等供应者执行完操作之 后才能继续其本身的进程,在执行操作的这 段时间内,客户一直处于等待状态,直到它 收到从操作提供者那里返回的消息。Balking阻止。客户只能在操作提供者能立即接收消 息的情况下发送消息。如果操作提供者没有 准备好接收消息,则客户将放弃该消息。Timeout超时。客户发出消息并指定等待时间,如果 供
13、应者不能在指定时间内处理消息,则客户 将放弃该消息。Asynchronous异步。客户发出消息后,不等待消息是否接 收,无需等待供应者的应答,可以直接继续 自身的操作。Procedure Call过程调用。客户发出消息,等待处理消息的 整个嵌套顺序完成之后才能继续。Return返回。从过程调用返回。返回箭头可以省略 ,因为这种消息隐式地表示一个活动的结 束。4、删除对象方法1:在”edit”菜单中选择“Delete from Model”方法2:ctrl+D5、时序图中的常用设置以嵌套的形式显示消息的序号取消或隐藏消息的编号显示或隐藏激活条(1)以嵌套的形式显示消息的序号选择菜单【 Tools
14、-Options 】,弹出以下对话框,选择 Diagram选项卡,选中Hierarchical Message(2)取消或隐藏消息的编号选择菜单【 Tools-Options 】,弹出以下对话框,选择 Diagram选项卡,选中或取消Sequence numbering(3)显示或隐藏激活条选择菜单【 Tools-Options 】,弹出以下对话框,选择 Diagram选项卡,选中或取消Focus of control消息根据对象生命线从上往下从1开始进行编号。删除 消息时,Rose自动将其余消息重新编号。打开或关闭消息编号: 选择Tools Options; 选择Diagram标签; 复选或
15、取消Sequence Numbering。在时序图中,消息可以按两种方式编号: Top-Level (顶级编号)方式,如1、2、3;或者Hierarchical( 等级编号)方式,如1.1、1.1.2、1.1.3。 消息编号我们的进度,在这里Top-Level 编号 定义 顶级编号。编号由1开始,后续消息的编号单调递增,消息编号 只有一个单一的数字,没有数字子集。 举例 如用户设定了编号为1.,1.1.,1.2.和1.2.1.的消息,在顶级编 号时将被编号为1,2,3和4 一般用于对象和消息很少的时序图中 要对消息进行顶级编号: 单击Tools Options; 单击Diagram标签; 选中
16、Sequence Numbering复选框。消息编号我们的进度,在这里Hierarchical编号 定义 即等级编号,Hierarchical 编号使用带小数点的号码,方便显 示消息嵌套。 举例 如1表示第一个消息,1.1表示嵌套在消息中的第一个消息,1.2 表示嵌套在消息中的第二个消息。注意:如果删除消息1,则嵌 套在消息1中的其他消息也将同时被删除。 要对消息进行等级编号: 选择Tools Options; 单击Diagram标签; 同时选中Sequence Numbering和Hierarchical Messages复 选框。 消息编号我们的进度,在这里Hierarchical编号消息编号我们的进度,在这里显示或关闭控制焦点