UML图-用例图
用例图的介绍和组成元素
用例图(Use Case Digram):用来直观的描述系统对外提供的功能。
用例图包含三个主要的元素:角色、系统、用例。
- 角色:图中的小人
- 系统:图中的边框
- 用例:图中的椭圆
如何识别角色
并不是只有真正的人才是角色,只要和系统有交互的外部实体都是角色。
常见的角色如下:
- 使用者:使用系统服务的人和系统。以微博为例,微博用户就是使用者
- 维护者:维护和管理系统的人和系统。以微博为例,运维人员,微博小秘书等都是维护者
- 监管者。以微博为例,安全部门、政府人员、绿网等。
- 依赖者。以微博为例:其他网站、基于微博API开发的APP
注意,虽然在现实生活中一个人可以同时承担多个角色的职责,但在用例图中,一个角色应该只承担一个职责,否则系统提供的能力与角色的对应关系就无法清晰地表达。
如何识别系统边界
收银机的条码扫描仪是否属于收银机系统的一部分?
站在客户的角度,对于客户来说,他不会管条码扫描仪是哪一部分,他只管能够快速完成买单。这里的买单就是一个业务功能,为了完成这个业务功能,要提供条码扫描仪,所以条码仪是业务系统的一部分。
站在开发者的角度,对于收银机的软件系统来说,条码扫描仪只是输入条码的一种方式,是系统外的一个外部输入设备。所以,条码扫描仪只是输入条码的一种方式,是系统外的一个外部输入设备。所以条码扫描仪并不是软件系统的一部分。
但对于用例图来说,第一种说法应该是正确的,因此此时软件系统还没有,只有业务系统,客户此时看到的也只有业务系统。
用例图的关系
角色和用例的关系有两种:无关系和关联关系
用例和用例的关系
- 泛化,其实就是继承,子用例是父用例的一个特殊实现,泛华是通过一条带三角箭头的连接线表示的,箭头指向的一端是父用例,另一端是子用例。
- 包含:就是某一个用例又包含更多的小用例。包含是通过一条带箭头的虚线表示的,并且会有一个关键标识
<<include>>
,箭头所指的用例是小用例,另一端是大用例。
- 扩展:是指在原有用例功能上的一个扩展和延伸。扩展通过一条带箭头的虚线表示,并且有一个关键标识
<<extend>>
,箭头所指的用例是基础用例,另一端是扩展用例。(可有可无的功能,比如修改密码,没有这个功能系统也可以用)
- 依赖:是指某个用例功能必须依赖另一个用例才能完成(这个关系不是UML的标准关系),但其实在实际应用中是很常见的,例如,发微博之前要登录。