级别: 初级 陈 樟洪, 高级软件工程师, IBM
2009 年 5 月 06 日
IBM Rational Software Architect (RSA) 是 IBM 公司推出的从设计到开发的完整的集成开发环境。它支持 UML 建模、模型驱动开发等多种建模相关的活动。本书由浅入深地介绍怎样使用 RSA 进行软件建模,包括:安装使用 RSA、创建 UML 模型、与 RUP 相关的建模活动、创建数据模型、模型驱动开发、可重用模型和服务模型。
本书的介绍篇和 RSA 建模入门篇适合 RSA 的初级和中级用户。本书的 RSA 建模高级篇适合有一定 RSA 使用经验的高级用户,或者已经阅读入门篇的读者。
在此我们推出了本书的 前言 和第 1、5、8 章供大家在线浏览。更多推荐书籍请访问 developerWorks 图书频道。
5.3 业务需求建模阶段的UML图
这一节介绍在业务需求阶段生成的UML元素,它们分别是用例图和活动图。在画这些图之前,在RSA中需要建立一个用例模型(读者可以参见第4章中对开发过程和各个阶段所产生的模型的介绍)。
5.3.1 用例图
 | |
|
|
书名:IBM Rational Software Architect 建模
作者:陈樟洪、金发华、李嘉涛、赵雄伟 等编著
出版社:电子工业出版社
出版日期:2008 年 6 月
ISBN:978-7-121-06332-9
购买:
中国互动出版网、当当网、卓越网
| |
推荐章节:
更多推荐书籍,请访问 developerWorks 图书频道。
欢迎您对本书提出宝贵的反馈意见。您可以通过本页面最下方的 建议 栏目为本文打分,并反馈您的建议和意见。
如果您对 developerWorks 图书频道有什么好的建议,欢迎您将建议发给我们。
|
|
|
RSA用例图可以使用下列UML元素:用例(Use Cases)、参与者(Actors)、包(Packages)、子系统(Subsystems)、注释(Note)和注释连接(Note attachment)等。这些元素都可以在RSA的“用例”抽取器上找到,如图5.13所示。
图5.13 用例图抽取器
1.用例
用例代表一个系统、或者组件,甚至可以指的是一个类的功能。每个用例都用一个名字来标识,这个名字概括了这个用例的功能。用例图包含了系统、参与者,以及系统和参与者之间关系的详细信息,但是用例不应该去描述如何实现这些功能。
创建一个用例
-
在待创建用例的包中右击,选择“添加UML”,下一级菜单中选择“用例”;或者打开一个已经创建好的用例图,在右边的“选用板”视图,单击“用例”抽取器,选择“用例”。
-
在用例图中单击即可。在RSA中生成的用例如图5.14所示。
图5.14 RSA中生成的用例
RSA中可以很方便地为每个用例添加文档。选中“用例1”,在“属性”视图中选择“文档”,在这里输入该用例的详细描述。用户可以使用任何喜欢的文本编辑工具来写用例文档(IBM也提供了Rational RequisitePro 注
8 http://www-306.ibm.com/software/awdtools/reqpro/: IBM Rational RequisitePro主页。8来管理需求和用例),如Word等。一般来说用例文档应该包含以下一些内容:
用概括性的几句话说明这个用例所提供的功能。
用例在什么时候、怎么开始和结束的。
参与者和用户之间是怎么交互的。
该用例需要的输入数据。
该用例需要的输出数据。
该用例的基本事件流。
该用例的可选流和异常流。
该用例的前置条件(在该用例开始之前发生了什么)。
该用例的后置条件(在该用例结束之后发生了什么)。
该用例的扩展点(在后面的高级用例建模部分有更加详细的介绍)。
下面列出了RUP的用例文档模板,读者可以作为借鉴:
1.0 用例名
1.1 概要介绍
2.0 事件流
2.1 基本事件流
2.2 可选事件流
2.2.x <可选事件流x >
3.0 特殊需求
3.x <特殊需求x >
4.0 前置条件
4.x <前置条件x >
5.0 后置条件
5.x <后置条件x >
6.0 扩展点
|
6.x <扩展点x >
图5.15是RSA中一个正在写的用例文档。
图5.15 给某个用例添加文档
2.参与者
用例是由某人或者用例之外的实体发起的,这个对该用例感兴趣的一方就叫做参与者。参与者可以是一个人、一个组织、一台机器或者是一个外部系统。多个人可以是同一个参与者,同一个人也可以具有多个参与者的身份。
RSA中创建参与者的方法与创建用例类似,不同的是在创建的时候选择“参与者”即可。图5.16是RSA中创建好的一个参与者。
图5.16 参与者
3.包
包可以将各种各样的建模元素进行分组,也包含包本身,包的主要功能在第4章的RSA UML模型概述这一节中已经做了介绍,这里就不再详细描述了。图5.17是RSA中创建好的一个包。
图5.17 包
4.子系统
子系统是已经做好的组件,在系统中是一个独立的单元,它代表的是系统里大规模的组件集合。通常子系统都有一个名字来表明它的职责和所做的事情。正如图5.18所示,子系统通过在矩形里包含子系统的名字来表示,在名字的上方有关键字“<<子系统>>”;另外在矩形下面的隔间里可以表示该子系统提供的属性、操作、提供的接口和需要的接口等。
图5.18 子系统
5.注释和注释连接
注释是一段针对某建模元素的描述性文本,注释连接将注释与目标建模元素连接起来。如图5.19所示就是对“组件1”子系统的注释。
图5.19 注释和注释连接
上面介绍了基本的用例建模元素,下面对用例高级建模功能做详细介绍。
5.3.2 高级用例建模
在UML中,
可以通过泛化(Generalization)来增加某参与者的功能,或者用它替换某个用例
从一些用例中抽取出一些公共的用例,然后在这些公共的用例中包含(include)它
在基础用例上加入一些功能可以加以扩展(extension),称为扩展用例
下面对它们分别做详细介绍。
1.泛化
用例图中的泛化包含了参与者的泛化和用例的泛化。
2.参与者泛化
为了简化建模,从几个不同的参与者中抽取出公共的需求,建立起一个通用的参与者。比如对于某系统需要有“数据库管理员”,“备份管理员”和“部署管理员”等参与者,每种参与者的区别并不太大,这时候可以把“系统管理员”作为一个通用的参与者,通过泛化来得到具体的管理员参与者。
RSA中的参与者泛化
-
在RSA的“选用板”视图中,单击“用例”抽取器。
-
选择“泛化关系”将两个参与者连接起来,如图5.20所示。
图5.20 参与者泛化
3.用例的泛化
有时候需要在系统的高层次、比较抽象的情况下去描述用例,然后通过泛化这个高层次的用例来引入特殊的用例。比如某系统提供了高层次的“认证”用例,具体的用例有“通过密码认证”和“通过指纹认证”。RSA用例的泛化与参与者泛化的画法一样,与参与者泛化不同的是,在泛化关系两头的是用例,如图5.21所示。
4.包含
可以从多个用例中找出共同的功能,并把这部分功能作为一个被包含的用例。在这里先提一下用例包含跟用例扩展的区别(下面即将讨论到),那些包含别的用例的用例并不是自己完成这些功能,被包含的用例并不是可选的,它被抽取出来完全是基于被别的用例重用的目的。比如某银行系统的建模中,有“查看账户余额”用例和“转账”用例,都需要包含“登录”用例。RSA中画包含关系的用例与泛化类似,只需在最后选用例关系那里选择“包含”即可。如图5.22所示。
图5.21 用例的泛化
5.用例扩展
用例可以在满足指定的条件的情况下,往基础用例上加入特定的功能。基础用例自己能够单独完成,然而扩展用例的范围比基础用例要小,甚至在某些情况下,如果没有基础用例,扩展用例就没有意义。如果想在用例中扩展,必须在基础用例上加入一些扩展点,这些扩展点就是被用来扩展子用例的。带有扩展用例的用例图,被分成上下两部分,上面是基础用例名,下面是该用例的扩展点。
图5.22 用例的包含关系
RSA中生成有扩展关系的两个用例
-
选择用例,在“属性”视图中,选择“扩展点”。
-
单击右边的“输入新的扩展点”按钮,如5.23所示。
-
在增加的扩展点中输入相应的信息,如5.24所示(默认情况下在用例图中并不会把扩展点显示出来,可以通过“属性”视图,选择“外观”,在“显示部分”选项组中把“扩展点”选中;如果想显示“扩展点”关键字,则在“显示部分标题”选项组中把“扩展点”选中)。
图5.23 添加扩展点
图5.24 添加了一个“外币查询”扩展点
-
加入子用例:创建一个用例,在“选项板”视图中,单击“用例”抽取器,选择“扩展”,将两个用例通过依赖线联系起来。
-
在连线完成后,RSA会提示“创建扩展点”还是利用“现有元素”,如果选择了现有元素则表示先前已经创建了扩展点,在“选择元素”的对话框中,可以搜索或者浏览定位扩展点;如果选择“创建扩展点”则会给用户生成一个默认名字的扩展点,然后需要用户去更改名称等,如图5.25所示。
图5.25 用扩展点连接两个用例
-
编辑依赖线属性:选中依赖线,在“属性”视图中,单击“常规”可以查看扩展
点,也可以单击“文档”,为这个扩展输入说明性的文档等。
例如在某银行系统中,有一个“查询账号余额”用例,但是对于双币支持的卡来说除了显示人民币余额之外还需要显示外币的余额。如图5.26所示。
图5.26 扩展用例
如图5.27所示是一个画好的某银行系统的用例图。其中银行客户和银行职员是两个参与者。图中有5个用例,其中认证用例是基础用例,密码认证和指纹认证是认证用例的子用例。另外在图中还有一个注释对认证用例进行说明。
图5.27 某银行系统的用例图
本章小结
这一节介绍了如何在业务需求阶段生成 UML元素,它们分别是用例图和活动图。
读者反馈
欢迎您对本书提出宝贵的反馈意见。您可以通过本页面最下方的 建议 栏目为本文打分,并反馈您的建议和意见。
如果您对 developerWorks 图书频道有什么好的建议,欢迎您将建议发给我们。
参考资料
关于作者  | |  | 陈樟洪是 IBM 中国软件开发中心(CSDL)的一位高级软件工程师,在电子商务,企业软件开发,第四代开发语言,开发工具和流程方面有一定研究。 |
对本文的评价
|