目录
用例图
用例图展现了一组用例、参与者以及它们之间的关系。
用例图主要包含以下内容:
1、用例;
2、参与者;
3、用例之间的扩展关系(<<extends>>);
4、用例之间的包含关系(<<include>>);
5、用例之间的泛化关系;
用例图用于对系统的静态用例视图进行建模。这个视图主要支持系统的行为,即该系统在它的周边环境的语境中所提供的外部可见服务。
当对系统的静态用例视图建模时,可以用下列两种方式来使用用例图。
(1)、对系统的语境建模。对一个系统的语境进行建模,包括围绕整个系统画一条线,并声明有哪些参与者位于系统之外并与系统进行交互。在这里,用例图说明了参与者以及它们所扮演的角色含义。
(2)、对系统的需求建模。对一个系统的需求进行建模,包括说明这个系统要做什么,即从系统外部的一个视点出发,而不是考虑系统怎么做。用例图说明了系统想要的行为。通过这种方式,用例图使我们能够把整个系统看作一个黑盒子,采用矩形框表示系统边界;可以观察到系统外部有什么,系统怎样与哪些外部事物相互作用,但却看不到系统内部如何工作的。
我的理解是,用例一定是一个动词,即某个动作,参与者通过系统能做什么,达到什么目的。
用例图涉及的关系
用例图中关系有:关联、泛化、包含、扩展。
关联关系
关联关系表示参与者与用例之间的关系,参与者与用例之间的通信,两者之间可以互相接收消息。
其中,关联关系使用一条没有箭头的实线表示。
泛化关系
泛化关系是一种继承关系,描述的是一般用例与特殊用例之间的关系,子用例继承基用例的所有结构、行为和关系。子用例可以新增新的行为、结构,或者重载父类的行为。
其中,泛化关系使用表示,空心箭头指向父用例。
包含关系
当两个或多个用例中共用一组相同的动作,这时可以将这组相同的动作抽出来作为一个独立的子用例,供多个基用例所共享。因为子用例被抽出,基用例并非一个完整的用例,所以包含关系中的用例必须和子用例一起使用才够完整,子用例也必然被执行。
+
其中,包含关系使用表示,由虚线、<<include>>以及箭头组成,箭头指向被包含的用例。
扩展关系
扩展关系是对基用例的扩展,基用例是一个完整的用例,即使没有子用例的参与,也可以完成一个完整的功能。扩展的基用例中将存在一个扩展点,只有当扩展点被激活时,子用例才会被执行。
其中,扩展关系用 表示,由虚线、<<extend>>以及箭头组成,箭头指向基础用例。
包含关系和扩展关系的区别
- 扩展关系中基本用例的基本流执行时,扩展用例不一定执行,只有在基本用例满足某种特定条件时才会执行;
- 包含关系中基本用例基本流执行时,包含用例一定执行。
- 两者都是从原来用例中抽取出来公共行为封装起来作为一个新的用例,供基本用例重用,提高模型的重用性。