IBM Rational Rose读书笔记 (2)

来源:互联网 发布:史崔克 知乎 编辑:程序博客网 时间:2024/05/21 09:09

 

第四章 用例和角色
用例包括系统内的一切,角色包括系统外的一切
业务用例模型和系统用例模型的区别
1.       用例在业务模型中描述业务的工作,在系统模型中描述业务中系统的工作。
2.       角色在业务模型中是在机构之外,在系统模型中是在系统之外,但可能在结构之内。
3.       业务工人在业务模型中在机构之内,在系统模型中不使用。
4.       业务用例跟系统用例并非一对一。业务用例一般是高级的,一个业务用例经常对应多个系统用例。每个系统用例都可以回溯到一个业务用例,而不是所有业务用例都有系统用例支持。
系统用例模型中的主要概念
角色
角色是与所建系统交互的人或物,描述系统范围外的一切。角色有三大类:系统用户、与所建系统交互的其它系统和时间。
用例
      用例是系统提供的功能块,它演示人们如何使用系统。通过用例,能够将系统实现和系统目标分开。开发人员可以了解用户的需求和期望,用户可以了解系统提供的功能。

      用例独立于实现、是系统的高级视图、只关心系统外的用户。

事件流
      事件流用来描述用例的细节,建档用例的逻辑流程。它详细描述了系统用户的工作和系统本身的工作。它虽很详细,但独立于实现方法。
      事件流通常包括:
1.       简要说明
描述了该用例的作用,应包含执行用例的不同类型用户和用户通过这个用例要达到的最终结果。
2.       前提条件
列出开始用例之前必须满足的条件。因为Use Case框图并不描述用例执行的顺序,前提条件可以描述这种顺序。
3.       主事件流
4.       其它事件流
事件流可以使用文本方式、表格方式和活动框图的方式。事件流的模式:用户进行操作,系统作出响应;然后用户再操作,系统再响应;一直重复下去。
5.       事后条件
是用例执行完毕后必须为真的条件。和前提条件一样,事后条件可以增加用例顺序方面的信息。
关系
      描述角色和用例之间的关系。分为下列关系
1.       包含关系
是一个用例的功能可以在另一个用例中使用。表示为虚箭头加<<include>>字样。
2.       扩展关系
允许一个用例(可选)扩展另一个用例的功能。表示为虚箭头加<<extend>>字样。
3.       泛化关系
Use Case框图
显示了系统中用例与角色及其相互关系。
      有下列注意事项:
1.       不要建模角色与角色之间的关系。
2.       不要在两个用例之间直接画箭头。
3.       每个用例都应该由角色启动。
4.       可以把数据库成整个Use Case框图下面的层。
活动框图
      用来建模用例的事件流。类似于前一章业务建模中的活动框图。
使用Rose创建系统用例模型的几个技巧
1.       浏览角色实例的方法:选中一个角色,然后Report->Show Instances。会列出角色所在的Sequence框图和Collaboration框图。
2.       浏览用例关系的方法:选中一个用例,然后Report->Show Usage,会列出关系名和关系连接的项名。
3.       浏览用例参与者的方法:选中一个用例,然后Report->Show Participants in UC,列出用例包含的类。

4.       活动框图一般在用例下面创建,即作为用例的枝叶。

第五章 对象交互
      介绍如何建模系统对象之间的交互。
Interaction框图
      它一步一步显示用例的流程。包括:流中需要什么对象;对象相互发送什么消息;什么角色启动流;消息按什么顺序发送。每个用例一般对应多个Interaction框图,每一个对应事件流中的一种情形。事件流的信息可以从用例模型中的Activity框图获得。
Interaction框图包含角色、对象和交互的消息。有两种Interaction框图:Sequence框图和Collaboration框图。前者按时间排序,用于通过情形检查逻辑流程;后者平铺对象,很容易看出哪个对象和哪个对象进行通信。前者可以显示控制焦点,后者可以显示数据流。二者功能基本相同,只是表现形式不同。

 

 

    创建Interaction框图的流程:
1.       寻找对象
对象包括以下类型
1)       实体对象。这些对象保存信息,并最终可能映射数据库中的表和字段。
2)       边界对象。位于系统和外部世界之间的边界上。它包括系统的窗口/窗体和对外界的接口。
3)       控制对象。控制用例的流程,协调其它对象和控制总体逻辑流程。
可以看出,这是一种基于MVC的寻找对象方式。
2.       寻找角色
Interaction框图中的角色时对事件流启动工作流的外部刺激。每个在特定情形下接收和发送系统消息的角色都在该情形的框图中显示。
3.       将消息加进框图
包括对象之间的交互消息和对象与角色之间的交互消息。
Interaction框图的两步法
第一步,关注客户关心的高级信息,消息不映射操作,对象不映射类。只是为了让分析人员、客户和对业务流程感兴趣的其他人了解系统的逻辑流程。

第二步,客户同一第一步框图的流程之后,小组加进更多细节。消息映射操作,对象映射类。并设置一些详细的对象和消息的属性。对开发人员、测试人员和项目组其他人员作用比较大。

Sequence框图
      每个用例有几个流程,每个Sequence框图对应用例的一个流程。
      每个对象都有一条生命线,就是对象下面的竖虚线。初始化对象时生命线开始,删除时生命线结束。两个对象的生命线之间画一条消息,表示对象通信。每个消息表示一个对象向另一个对象进行函数调用。消息可以自反。
      生命线可以通过“X”结束。
      一般而言,一个流程对应着一个Sequence框图。但有时为了减少框图数量,在框图中使用脚本指定if和else。但太多if,else会导致不明了,所以还是尽量不用。脚本在rose中就是一个text框。
Collaboration框图
      相对Sequence框图,容易看出对象之间的关系,但对象顺序信息不明显。
关于对象的说明
      每个对象可以指定一个类,而且应该指定一个类。
      对象的持续性可以有三种选择:
1.       持续,表示对象保存在数据库或其它形式的永久存储体中。
2.       静态,表示对象在程序运行期间一直保存在内存中。
3.       临时,表示对象只是短时间保存在内存中。
Rose可以用一个图标表示同一个类的多个实例,在Sequence框图中使用单图标实例,在Collaboration中可以使用多图标实例。
关于消息的说明
消息可以指定一个类的操作。如果要指定,之前必须确保接收对象映射为一个类。
消息有如下同步选项:
1.       简单。用于单控制线程。
2.       同步,客户发出消息后,等待供应者响应该消息。
3.       阻止:客户发出消息给供应者,如果供应者无法立即接收消息,则客户放弃该消息。
4.       超时:客户发出消息给供应者并等待指定时间。如果供应者无法在指定时间内接收消息,则客户放弃该消息。
5.       异步:客户发出消息给供应者,然后客户继续处理。
6.       过程调用:客户向供应者发消息,然后客户机等待处理消息的整个嵌套顺序完成之后才能继续(???)
7.       返回:表示从过程返回调用。
消息频率有两个选项:
1.       定期发送

2.       不定期发送,即只发送一次。

使用Rose操作Interaction框图的技巧
1.       加入对象有两种方法:一是将框图工具栏中的对象图标拖拉入框图;二是将浏览区中的类直接拖入框图,会产生一个该类的匿名对象。
2.       删除对象:使用Ctrl+D。
3.       加减角色:将流量区中的对象拖入框图和Ctrl+D。
4.       将对象映射为类的两种方法:一是在Specification中指定class,二是直接将class拖到对象中。
5.       确保所有对象映射类:Report->Show Unresolved Objects。
6.       使用F5保持Sequence框图和Collaboration框图的同步。
7.       设置框图属性:Tools->Options->Diagram。