《软件工程与UML..ppt》由会员分享,可在线阅读,更多相关《软件工程与UML..ppt(44页珍藏版)》请在第壹文秘上搜索。
1、软件工程与UML今天的工作任务1. 完成系统行为交互建模:时序图建模提交内容1. 系统时序图我们的进度,在这里工作任务1:完成系统行为交互建模时序图建模我们的进度,在这里知识点:第9章 动态视图时序图 9.1 时序图的相关概念 9.3 时序图的用途 9.4 时序图的建模技术我们的进度,在这里9.1 时序图的相关概念 UML的交互图是用户系统动态方面的建模,交互图可分为时序图和协作图。 时序图(Sequence Diagram)描述了对象之间传递消息的时间顺序,它用来表示用例中的行为顺序,是强调消息时间顺序的交互图。时序图描述类系统中类和类之间的交互,它将这些交互建模成消息交换,也就是说,时序图
2、描述了类以及类间相互交换以完成期望行为的消息。 时序图包括了4个元素,分别是对象(Object)、生命线(Lifeline)、激活(Activation)和消息(Message)。我们的进度,在这里时序图符号表示生命线生命线 : Actorobject11: operation激活激活消息消息我们的进度,在这里对象对象一个旅客到机场换登机牌的情况 : 旅客 : 登记处柜台1: 出示机票2: 存放行李3: 征询旅客选择4: 旅客收到登机牌1.1.交互的对象交互的对象2.2.消息交互的时间顺序消息交互的时间顺序时序图阅读练习1: : 学生 : 课表 : 书 : 笔记本电脑1: 今天上什么课()2:
3、 软件工程与UML3: 拿书()4: 拿笔记本电脑()时序图阅读练习2: : 论坛管理员登录系统帖子管理模块数据库模块相关处理1: 输入账号和密码2: 提交管理员ID3: 显示帖子处理信息4: 提交删除、置顶帖、精华帖的ID5: 数据库处理,并更新数据6: 提示成功7: 提示成功信息时序图阅读练习3: : 管理员登录系统档案管理模块添加档案数据库模块1: 输入用户名和密码2: 提交用户ID3: 提交添加档案命令4: 提示添加档案信息列表5: 输入待添加档案的信息6: 提交档案信息,并存入数据库7: 显示添加档案成功信息给客户端时序图阅读练习4:请描述该时序图表达的含义 : 案卷输入人员登录系统
4、案卷管理模块案卷录入数据库模块1: 输入用户名和密码2: 提交用户ID3: 提交案卷录入命令4: 提示输入案卷的相关信息5: 显示输入的案卷相关信息6: 提交案卷列表7: 提交成功8: 显示案卷录入成功信息9.3 时序图的用途 时序图强调按时间展开的消息传送按时间展开的消息传送,这在一个用例脚本的语境中对动态行为的可视化非常有效。 UML的交互图是用于对系统的动态方面的建模,交互图又可分为时序图和协作图,时序图用于描述对象之间消息的时间顺序,协作图用于描述对象间的交互关系,以致它们的用途有所差别。 以下是时序图有别于协作图的特性:(1)时序图有生命线(2)时序图有激活期我们的进度,在这里时序图
5、可以用于软件开发的不同阶段和不同情况下:1. 当不同类之间存在多个简短的方法时,描述控制流的整体序列。2. 显示并发进程和激活。3. 显示在协作图中难以描述的时间序列。4. 显示涉及类交互与对象无关的一般形式。9.4 时序图的建模技术对系统动态行为建模,当强调按时间展开信息的传送时,一般使用时序图。使用时序图对系统建模时,可以遵循如下策略。(1)设置交互的语境,这些语境可以是系统、子系统、操作、类、用例和协作的一个脚本。(2)通过识别对象在交互中扮演的角色,根据对象的重要性,将其从左向右的方向放在时序图中。(3)设置每个对象的生命线。一般情况下,对象存在于交互的整个过程,但它也可以在交互过程中
6、创建和撤销。(4)从引发某个交互的信息开始,在生命线之间按从上向下的顺序画出随后的消息。(5)设置对象的激活期,这可以可视化实际计算发生时的时间点、可视化消息的嵌套。(6)如果需要设置时间或空间的约束,可以为每个消息附上合适的时间和空间约束。(7)给某控制流的每个消息附上前置或后置条件,这可以更详细地说明这个控制流。我们的进度,在这里创建时序图 创建方法 单击Browse Interaction Diagram,弹出Select Interaction Diagram对话框;在对话框左边选择预建立时序图的包,单击OK。弹出New Interaction Diagram对话框;在Title字段输
7、入新框图的名字,单击diagram type中的Sequence,单击OK。 在左边浏览器Use Case View或Logical View上右键单击,选择“new”,选择“Sequence Diagram”。 我们的进度,在这里时序图工具箱我们的进度,在这里消息 将消息加进将消息加进时序图 单击工具箱中的 按钮; 将鼠标从发送消息的对象或参与者的生命线拖动到接受消息的对象或参与者的生命线; 输入消息文本。 我们的进度,在这里消息 将反身消息加进将反身消息加进时序图 单击工具箱中的 按钮; 单击收发消息的对象生命线; 输入消息名。 我们的进度,在这里为消息分配操作 要给消息分配操作: 右键单
8、击框图中的消息; 从弹出的列表中选择一个操作;或者单击 定义一个新操作。 改变消息指定的操作: 右键单击框图中的消息; 从弹出的列表中选择新的操作名 。 我们的进度,在这里对象规范映射类(映射类(Class) 在Class下拉列表框中选择类名; 或者, 将浏览器中的类拖动到框图中的对象上。对象持续性(对象持续性(Persistence) Persistent:对象保存到数据库或者其他形式的永久存储体中 Static:对象保存在内存中直到程序中止 Transient:对象只在短时间内保存在内存中多实例(多实例(Multiple instances) 选中该复选框之后,协作图中的对象图标将显示为多
9、实例图标。但在时序图中,对象图标仍然是单个对象的图标。我们的进度,在这里消息规范 General标签标签 Name:消息名 Documentation:对消息的附加说明我们的进度,在这里消息规范Detail标签标签 消息同步类型(Synchronization)选项选项含义含义SimplySimply简单消息。简单消息。SynchronousSynchronous同步。客户(发送消息的对象)发出消息后,同步。客户(发送消息的对象)发出消息后,等待供应者(即消息接收者,或操作提供者)等待供应者(即消息接收者,或操作提供者)响应消息。客户等供应者执行完操作之后才响应消息。客户等供应者执行完操作之后
10、才能继续其本身的进程,在执行操作的这段时能继续其本身的进程,在执行操作的这段时间内,客户一直处于等待状态,直到它收到间内,客户一直处于等待状态,直到它收到从操作提供者那里返回的消息。从操作提供者那里返回的消息。BalkingBalking阻止。客户只能在操作提供者能立即接收消阻止。客户只能在操作提供者能立即接收消息的情况下发送消息。如果操作提供者没有息的情况下发送消息。如果操作提供者没有准备好接收消息,则客户将放弃该消息。准备好接收消息,则客户将放弃该消息。TimeoutTimeout超时。客户发出消息并指定等待时间,如果超时。客户发出消息并指定等待时间,如果供应者不能在指定时间内处理消息,则
11、客户供应者不能在指定时间内处理消息,则客户将放弃该消息。将放弃该消息。AsynchronousAsynchronous异步。客户发出消息后,不等待消息是否接异步。客户发出消息后,不等待消息是否接收,无需等待供应者的应答,可以直接继续收,无需等待供应者的应答,可以直接继续自身的操作。自身的操作。Procedure Procedure CallCall过程调用。客户发出消息,等待处理消息的过程调用。客户发出消息,等待处理消息的整个嵌套顺序完成之后才能继续。整个嵌套顺序完成之后才能继续。ReturnReturn返回。从过程调用返回。返回箭头可以省略,返回。从过程调用返回。返回箭头可以省略,因为这种消
12、息隐式地表示一个活动的结束。因为这种消息隐式地表示一个活动的结束。我们的进度,在这里消息规范 Detail标签标签 消息频率(Frequency) 消息频率可以让消息按规定的时间间隔发送 不定期(Aperiodic):将消息设定为不定期发送的消息、只发送一次,或者不规则时间间隔发送 定期(Periodic):将消息设定为定期发送的消息 我们的进度,在这里消息编号 消息根据对象生命线从上往下从1开始进行编号。删除消息时,Rose自动将其余消息重新编号。 打开或关闭消息编号: 选择Tools Options; 选择Diagram标签; 复选或取消Sequence Numbering。 在时序图中,
13、消息可以按两种方式编号: 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标签; 选中Sequence Numbering复选框。我们的进度,在这
14、里消息编号 Hierarchical编号 定义 即等级编号,Hierarchical 编号使用带小数点的号码,方便显示消息嵌套。 举例 如1表示第一个消息,1.1表示嵌套在消息中的第一个消息,1.2表示嵌套在消息中的第二个消息。注意:如果删除消息1,则嵌套在消息1中的其他消息也将同时被删除。 要对消息进行等级编号: 选择Tools Options; 单击Diagram标签; 同时选中Sequence Numbering和Hierarchical Messages复选框。 我们的进度,在这里消息编号 Hierarchical编号我们的进度,在这里控制焦点 显示或关闭控制焦点 单击Tools Op
15、tions; 单击Diagram标签; 选中“Focus of Control”左边的复选框,表示在时序图中显示控制焦点;否则,在时序图中不显示控制焦点。 控制焦点着色 单击箭头指向控制焦点的消息。 选择Format Fill Color; 在颜色框中单击要选择的填充颜色; 单击OK。 我们的进度,在这里控制焦点 控制焦点的嵌套 嵌套的控制焦点依附在另外一个控制焦点之上,它可以确切地区分一个消息开始和终止的具体位置。 要显示嵌套的控制焦点,必须同时选中Options对话框中Diagram标签中的Hierarchical Messages和Focus of Control两个选项。我们的进度,在
16、这里练习一下:使用ROSE画出一下时序图 : 学生 : 课表 : 书 : 笔记本电脑1: 今天上什么课()2: 软件工程与UML3: 拿书()4: 拿笔记本电脑()时序图的补充关于控制结构的表示 在UML2.0规范中,引入了组合碎片的概念(Combined Fragment) ,在时序图中加入一些方框标记,来表示控制结构。这样的时序图,我们把它称作为帧化时序图 ref标记:简化表示重复的内容或子活动的引用。 alt标记:条件执行(if-else)。 par标记:并行执行。 loop标记:循环执行(while/for)。 opt标记:可选执行(if单条件)。我们的进度,在这里完成实验6:系统行为建模技术1时序图 我们的进度,在这里图书管理系统中的一个时序图 : 图书馆工作员u1 : UserLogins1 : SysMainl1 : Lendr1 : Return1: login2: loginSucces4: openLend6: openReturn3: lendbook5: returnbook我们的进度,在这里实验报告书写注意:姓名xx学号xxxxxxxx年级07实验日期09.1