概念
用例图(User Case)是被称为参与者的外部用户所能观察到的系统功能的模型图,呈现了一些参与者和一些用例,以及它们之间的关系,主要用于对系统、子系统或类的功能行为进行建模。是从用户的角度描述系统。
元素
用例图的基本元素有四点,分别是参与者、用例、系统边界、关系。
参与者(Actor):是指系统以外的,在使用系统或与系统交互中所扮演的角色。需要注意的是,并不特指人,也可以是事物或者其他的系统。
用例(Use Case):UML对用例的正式定义是对包括变量在内的一组动作序列的描述,系统执行这些动作,并产生传递特定参与者的价值的可观察结果。通俗的理解就是外部可见的系统功能,对系统提供的服务提供描述,是系统的功能模块。
系统边界:表示正在建模系统的边界,边界内表示系统的组成部分,边界外表示系统外部。
关系:用例图中涉及到的关系有关联(Association)、泛化(generalization)、包含(Include)、扩展(Extend)。
关系
关联(Association):表示参与者与用例之间的通信,是常见的关系。
泛化(generalization):代表一般与特殊的关系,和面向对象程序设计中的继承类似,不同的是继承使用在实施阶段,泛化使用在分析、设计阶段。
包含(Include):把一个较复杂的用例所表示的功能分解成较小的步骤。
扩展(Extend):用例功能的延伸,为用例提供了一个附加功能,不是必须的。
分析
下面以机房收费系统的管理员的用例图为例:
在管理员的“用户管理”功能中,如果仅仅使用一个“用户管理”用例,那么“添加”、“修改”、“删除”都要在用例详述中描述,过于复杂。如果分成“添加”用例、“修改”用例和“删除”用例,则划分太细。这时包含关系可以用来理清关系。如图所示:把“添加”、“修改”、“删除”包含在“用户管理”用例中。
在“日结”用例中,“刷新”和“打印”都是相对独立和可选的动作,是否打印对于“日结”功能都是一样的。
在“结账”、“日结”、“周结”这三者之间,使用了泛化关系,可以理解为“日结”继承了结账的方法,并且拥有自己的方法和属性,而“周结”又继承了“日结”。
小结
用例图主要用来描述客户的需求,由客户和开发者共同探讨,最后达成共识,用在需求分析阶段。用例图关注的是系统的外在表现,系统与人的交互,系统与系统的交互。