用例图是用来描述系统功能的技术,表示一个系统中用例与参与者及其关系的图,主要用于需求分析阶段,同时它由参与者(actor)、用例(case)和容器(container) 三部分组成,并具有关联(Association)、泛化(Generalization)、包含(Include)和扩展(Extend) 四种关系。
在网上看了许多同学画的用例图,有几个共性的问题,和大家探讨一下。
1、用例图的基本画法:
用例图中人物线条图代表参与者, 椭圆形代表用例本身, 连线说明哪个参与者参与了用例,长方形表示系统边界,它定义了应用的计算机部分和操作者之间边界,如下图所示。
2、参与者与用例之间是否应该有箭头?
很多同学在画用例图的时候,都会使用箭头,但严格意义上,这种用例图是不准确的。
根据《系统分析与设计-敏捷迭代方法》和《UML Reference Manual by James Rambaugh》2本书上提供的示例,参与者与用例之间是没有箭头的。正确的画法如下:
使用不带箭头连线的原因是,参与者与用例之间是双向互动,如果画箭头应该是双向的箭头。为简化用例图,采用不带箭头的方式。
3、用例的“四轮马车”问题
我们先来看个例子理解一下,什么是用例的“四轮马车”问题,假如有一个在线商城系统,管理员可以登录后台管理商品,管理商品功能包括新建商品、修改商品信息、删除商品、查看商品。使用用例图表示时,很多同学会用下图表示:
这个是用例常见的“四轮马车”错误(即CRUD错误:Create,Read,Update,Delete),管理员的目的不是为了CRUD,他的需求是能对商品进行日常的管理。过多的增删改查,会掩盖了用户需求,而蜕变成为了关系数据库的建模。如果CRUD不涉及复杂的交互,一个用例“管理××”即可,如下图。