UML之用例图
概述
当用例视图在外部用户前出现时,它捕获到系统、子系统或类的行为。它将系统功能划分成对参与者(即系统的理想用户)有用的需求。而交互功能部分被称作用例。用例使用系统与一个或多个参与者之间的一系列消息来描述系统中的交互作用。参与者可以是人,也可以是外部计算机系统和外部进程。
参与者
参与者是与系统、子系统或类发生交互作用的外部用户、进程或其他系统的理想化概念。
作为外部用户与系统发生交互作用,这是参与者的特征。每个参与者可以参与一个或多个用例,它通过交换信息与用例发生交互作用,而参与者的内部实现与用例是不相关的。
在UML图中,参与者用一个名字写在下面的小人表示。
用例
用例是外部可见的一个系统功能单元,这些功能由系统单元所提供,并通过一系列系统单元与一个或多个参与者之间交换的消息所表达。
用例的用途是在不揭示系统内部构造的情况下定义连贯的行为。用例的定义包含用例所必需的所有行为—执行用例功能的主线次序、标准行为的不同变形、一般行为下的所有异常情况及其预期反应。
用例是对系统一部分功能的逻辑描述,它不是明显的用于系统实现的构件。非但如此,每个用例必须与实现系统的类相映射。用例的行为与类的状态转换和类所定义的操作相对应。只要一个类在系统的实现中充当多重角色,那么它将实现多个用例的一部分功能。
设计过程的一部分工作即在不引入混乱的情况下,找出具有明显的多重角色的类,以实现这些角色所涉及的用例功能。用例功能靠类间的协作来实现。
用例除了与其参与者发生关联外,还可以参与系统中的多个关系:
在UML图中,用例用一个名字在里面的椭圆表示,用例和与它通信的参与者之间用实线连接。
一个用例也可以被定义为基用例的增量扩展,这叫做扩展关系。同一个基用例的几个扩展用例可以在一起应用。基用例的扩展增加了原有的语义, 此时是基用例而不是扩展用例被作为例子使用。
包含和扩展关系可以用含有关键字《include》和《extend》的带箭头的虚线表示。包含关系箭头指向被包含的用例,扩展关系箭头指向被扩展的用例。
一个用例也可以被特别列举为一个或多个子用例,这被称做用例泛化。当父用例能够被使用时,任何子用例也可以被使用。
下图是吃饭结账的用例关系:
由于用例与参与者分别位于系统的内外,所以两者之间隐含了系统范围。我们可以在用例图面上,明显标示出系统方框,用例放置在大方框内部,参与者列在大方框外边,大方框代表我们必须细究的对象,也代表用例应用的环境。