实验三时序图和协作图[实验目的]1.掌握时序图、协作图的绘制方法。
2.验证Rose的交互图自动生成功能。
[实验内容]1.用Rose绘制图书馆管理系统的时序图与协作图。
2.利用Rose的交互图自动生成功能,将已经设计好的时序图转换成协作图。
[实验要点及说明]一、时序图建模技术按时间顺序对控制流建模,要遵循如下策略。
①设置交互的语境。
②通过识别对象在交互中扮演的角色,设置交互的场景。
③为每个对象设置生命线。
④从引发某个消息的信息开始,在生命线之间画出从顶到底依次展开的消息,显示每个消息的特性(如参数)。
⑤如果需要可视化消息的嵌套或实际计算发生时的时间点,可以用激活修饰每个对象的生命期。
⑥如果需要说明时间或空间的约束,可以用时间标记修饰每个消息,并附上合适的时间和空间约束。
⑦如果需要更形式化的说明某控制流,可以为每个消息附上前置和后置条件。
实例1——图书馆管理系统的时序图1.使用Rational Rose绘制时序图的步骤。
①创建时序图。
在浏览器窗口中,在“Use Case View”的图标上单击鼠标右键,在弹出的菜单中选择New →Sequence Diagram。
此时,在“Use Case View”树形结构下多了一个名为“New Diagram”的图标,右键单击此图标,在弹出的菜单中选择Rename菜单项,可以更改新创建的时序图的名字。
双击时序图图标,出现时序图的编辑区和编辑工具栏。
②时序图工具栏按钮简介。
时序图工具栏中各个按钮的图标及其作用如图3-1所示。
③添加对象。
向时序图添加对象。
首先点击工具栏中的对象图标按钮,然后在编辑区要放置对象的位置单击鼠标左键。
图3-1 时序图工具栏各个按钮的图标及作用⏹设置对象属性。
可以双击相应的对象图标,弹出对象属性设置对话框。
也可以选中要改变属性的对象,单击右键,在弹出的菜单中选择“Open Specification...”,打开属性设置对话框。
⏹设置对象持续性。
可以设置每个对象的持续性,Rose中提供了3个选项。
“持续(Persistent)”对象保存到数据库或其他形式的永久存储体中,即使程序终止,对象依然存在。
“静态(Static)”对象保存在内存中直到程序终止。
“临时(Transient)”对象只是在短时间内保存在内存中。
要设置对象的持续性,右键单击要设置持续性的对象,从弹出菜单中选择“Open Specification...”,打开属性设置对话框,即可进行设置。
④添加消息消息是对象间的通信,一个对象可以请求另一个对象做某件事。
在时序图中,消息用两个对象生命线之间的箭头表示。
⏹增加对象间的消息。
首先点击工具栏中的图标按钮→,然后将鼠标从发送消息的对象或角色的生命线拖动到接收消息的对象或角色的生命线。
消息绘制出来以后,还要输入消息文本。
双击表示消息的箭头,在弹出的对话框的Name 字段里输入要添加的文本。
⏹显示或取消消息编号。
消息编号在时序图中是可选的,选择菜单栏的Tools→Options 菜单项,在出现的对话框中选择Diagram选项卡,将“Sequence numbering”复选框勾选,就可以显示消息编号;如果不勾选,消息编号不会显示在时序图中。
⏹显示或取消激活显示。
选择菜单栏的Tools→Options菜单项,在出现的对话框中选择Diagram选项卡,将“Focus of control”复选框勾选,就可以显示激活;如果不勾选,激活不会显示在时序图中。
2.图书馆管理系统的时序图。
在图书馆管理系统中,每个用例都可以建立一个时序图,将用例执行中各个参与的对象之间的消息传递过程表现出来。
由于图书馆管理系统中用例很多,此处只介绍几个重要的时序图。
①系统管理员添加书籍的时序图(如图3-2)。
图3-2 系统管理员添加书籍的时序图[时序图说明]⏹add Item():添加书籍函数。
⏹find(String):根据书籍查找相应书目的函数。
⏹create(Integer, Title):修改书籍数目的函数。
②图书管理员处理借书的时序图(不包括预留书籍的情况)。
图3-3 图书管理员处理借书的时序图[时序图说明]⏹find(String):查找书目的函数。
⏹find_item():查找所要书籍的函数。
⏹find_on_title(Title):根据书目名从数据库中找到书目信息的函数。
⏹identify_borrower():验证借阅者身份的函数。
⏹find(Sting):根据借阅者的登陆账号找到借阅者信息的函数。
⏹create(Borrower, item):修改借阅信息的函数。
③系统管理员删除书目的时序图(如图3-4)。
[时序图说明]⏹find(String):书目类的查找函数。
⏹find_on_title(Title):查找此书目下书籍信息的函数。
⏹destroy:删除书籍信息的函数。
⏹destroy:删除书目信息的函数。
图3-4 系统管理员删除书目的时序图④借阅者预留书籍的时序图(如图3-5)。
图3-5借阅者预留书籍的时序图[时序图说明]⏹Login:登陆系统的函数。
⏹find(string):查找相应书目的函数。
⏹reserve():预订书籍的函数。
二、协作图建模技术利用协作图对控制流建模,要遵循如下策略。
①设置交互的语境。
②通过识别对象在交互中扮演的角色,设置交互的场景。
③对每个对象设置初始特性。
④描述对象之间可能有信息沿着它传递的链。
⑤从引起交互的消息开始,适当地设置其顺序号,然后将随后的每个消息附到适当的链上。
⑥如果需要说明时间或空间约束,可以用时间标记修饰这个消息,并附上合适的时间和空间约束。
⑦如果需要更形式化地说明这个控制流,可以为每个消息附上前置和后置条件。
实例——图书馆管理系统的协作图1.使用Rational Rose绘制协作图的步骤。
①创建协作图。
在浏览器窗口中,在“Use Case View”的图标上单击鼠标右键,在弹出的菜单中选择New →Collaboration Diagram。
此时,在“Use Case View”树形结构下多了一个名为“New Diagram”的图标,右键单击此图标,在弹出的菜单中选择Rename菜单项,可以更改新创建的协作图的名字。
双击协作图图标,出现协作图的编辑区和编辑工具栏。
②协作图工具栏按钮简介。
协作图工具栏中各个按钮的图标及其作用如图3-6所示。
③添加对象。
首先点击工具栏中的图标按钮,然后在绘制区要放置对象的位置单击鼠标左键。
协作图中对象的属性及持续性的设置方法见时序图。
④添加消息⏹添加对象间的消息。
在将消息添加到两个对象之间前,首先要建立对象间的通信路径。
单击工具栏中的图标按钮,在两个目标对象之间拖动一条直线,就在对象间增加了通信路径。
有了通信路径,就可以在路径上增加对象之间的消息了。
增加对象间消息的步骤如下:选择工具栏中的图标按钮或,单击两个对象之间的通信路径,就会画出消息箭头。
消息绘制出来以后,还要输入消息文本。
双击表示消息的箭头,在弹出的对话框的Name 字段里输入要添加的文本。
⏹添加反身消息。
选择工具栏中的图标按钮,然后单击收发消息的对象,为此对象增加一个到它自身的通信路径。
反身通信路径在对象上方,显示为半圆形。
图3-6 协作图工具栏各个按钮的图标及作用选择工具栏中的图标按钮,然后在对象的反身通信路径上单击,Rose就会为对象添加消息。
新增加的消息的属性值可以按照前面介绍的方法修改。
⑤添加数据流。
数据流描述一个对象向另一个对象发送消息时返回的消息。
一般来说,对协作图的每个消息都加上数据流是没有必要的,这样做只会使图中堆满价值不大的信息。
只要在一些重要消息上附加数据流即可。
数据流的添加步骤如下:选择工具栏的图标按钮或,单击要返回数据的消息,Rose 就会在协作图中添加数据流箭头。
2.图书馆管理系统的协作图。
同时序图类似,在图书馆管理系统中,每个用例也可以建立一个协作图。
此处只介绍几个重要的协作图。
①系统管理员添加书籍的协作图(如图3-7)。
[协作图说明]⏹add Item():添加书籍函数。
⏹find(String):根据书籍名查找相应书目的函数。
⏹update():修改某类书目下书籍数量的函数。
图3-7 系统管理员添加书籍的协作图②图书管理员处理借书的协作图(如图3-8)。
图3-8 图书管理员处理借书的协作图[协作图说明]⏹identify_borrower():验证借阅者身份的函数。
⏹find_reservation():查找预订信息的函数。
⏹find(Borrow, Title):根据借阅者和借阅的书籍名找到相应预订信息的函数。
⏹borrow():处理借书的函数。
⏹update():更新某一书目下书籍数量的函数。
⏹check_if_max():检查借阅凭证所借书籍数目是否已经超过最大限额的函数。
③借阅者预订书籍的协作图(如图3-9)。
图3-9 借阅者预订书籍的协作图[协作图说明]⏹identify_borrower():验证借阅者身份的函数。
⏹find(String):根据书籍名称查找书目信息的函数。
⏹reserve():预订某一书目下的书籍的函数。
⏹create(Title, Borrower):修改预订信息的函数。