用例图(UseCaseDiagram):主要用于描述系统的行为及各种功能之间的关系,是描述参与者(Actor)与用例以及用例与用例之间关系的图。
用例图=参与者+用例+关系
通俗的来说:用例图与具体实现并不关联,从用户和外部系统的角度,分析和考察系统的行为,并通过参与者者与系统之间的交互关系描述系统对外提供的功能特性。
表示方式:
UML2.O表示参与者的方法:
发现参与者,可以根据以下问题来寻找系统的参与者:
识别用例的方法:从分析系统的参与者开始,考虑每个参与者是怎样使用系统的。
以下几个问题可以帮助识别用例:<1>特定参与者希望系统提供什么功能;<2>系统是否存储和检索信息,若是,这个行为由哪个参与者触发;<3>当系统改变状态时,通知参与者吗;<4>存在影响系统的外部事件吗;<5>是哪个参与者通知系统这些事。
是参与者与用例之间最简单常用的关系
把几个用例的公共步骤分离成一个单独被包含用例;包含用例称为客户用例,被包含用例称为提供者用例。
用例A包含用例B,将A称为基用例,B称为被包含用例。
包含关系表示基用例会用到被包含用例。被包含用例的事件流在基用例的某个点处插入到基用例的事件流中。
包含关系表示:
基用例被连接在虚线箭头的尾部,箭头指向被包含用例,并在虚线处添加一个《include》标签以表示扩展关系。
使用场景:
扩展使得每个用例可以通过扩展用例向基用例中添加额外的行为来扩展基用例的功能。
用例A扩展了用例B,那么A称为扩展用例或子用例,B表示为基用例。
扩展用例A的事件流在一定的条件下按照相应的扩展点插入到及用例中,这就需要在及用例中定义一至多个已命名的扩展点。(这和继承关系不一样)
选用扩展关系可以把一些可选的操作独立封装在另外的用例中,避免基用例过于复杂。
扩展用例被连接在虚线箭头的尾部,箭头指向基用例,并在虚线处添加一个《extend》表示扩展关系。
泛化关系是两个用例或两个参与者之间的关系。
泛化关系其实可以通俗理解为面向对象关系中的继承。将拥有一种类似的结构和行为的多个用例中的共性抽象为父用例,子用例继承父用例中的所有。
用实线加上空心的箭头表示,其中子用例被连接在箭头的尾部,箭头指向父用例。
相同点:
不同点:
(1)条件性:
(2)插入原则:
(3)插入点:
需求:一个系统中的每个功能都有它的所属范围。并且在决定参与者、设计一个系统、子系统或某个部件的时候,划分系统边界对于决定系统的规模和分配责任是十分重要的。
系统边界(SystemBoundary)的表示:
UML中使用矩形框来表达系统的边界,在矩形框的左上方防止系统的名字。