在面向对象的软件分析及设计中,UML用例图是分析业务,明确需求的一种常见工具。


定义

UML用例图(Use Case Diagrams)是一种描述用户和系统之间交互的简单表达方式。它描述了特定系统(主体)同外部用户(角色)之间的一系列交互行为(用例)。

概念

在用例图中,需要明确以下几个概念:

  • 主体
  • 角色
  • 用例

主体

主体(Subject)是指被研究的系统。它限定了用例图研究对象的范围和边界。

主体使用矩形表示,左上角标明主体的名称

例如在研究一个blog时,被研究的blog就是一个主体

1559208705702

角色

角色(Actor)是指同主体有关联或者交互的外部概念,可以是人员,也可以是其他系统。

例如对于blog案例,与其相关的外部角色,就可能是网友或者技术论坛

在表示方法上没有统一规定,可以是一个小人,或者是表示简单类型的类图。

需要注意的是这里的角色是独立于主题之外存在的。

1559214522699

用例

用例(use case)是指主题能够提供的功能性单元。一般使用椭圆表示。

对于博客来说,常见的用例有提供内容阅读,文章评论,文章转载等。

1559214859113

用例的泛化(Generalization)、扩展(Extend)、包含(Include)

泛化是指从父用例派生子用例,例如博客可以有.NET博客、Python博客之分,使用带空心三角形的实线表示,空心三角形端点为父用例。例如

1559215387955

扩展是指在原有的用例之上,提供扩展的用例。注意,这两个用例都是完备的功能点。例如blog提供了谷歌在线翻译的插件,这个就是一个扩展用例。扩展用例使用虚线箭头+关键字《extend》表示,箭头从扩展用例指向原用例。可以理解为翻译博客的用例扩展了阅读博客的用例。

1559215837945

包含是指原有用例内部,存在更细致的子模块。例如,博客的评论功能需要有登入、输入等包含用例。包含用例使用虚线箭头+关键字《include》表示,箭头从原用例指向子用例。可以理解为评论博客用例包含了登入和输入评论用例

1559216310256

用例与角色的关联

用例与角色之间通过UML关联(association)进行交互,此处的关联特指二元关联。关联使用实线进行表示,实线的端点可以指定量词,以表示关联双方的数量关系。量词的格式如表所示

1559216745521

如果BBS可以转载我任意数量的blog,那么就可以使用如下关联将BBS和blog转载关联。注意下图未标明BBS的数量,说明在这个研究场景中,BBS的数量是不重要的,因此未标明细节。这也符合我们在2019-5-30-UML基础 - huangtengxiao中所说的less is more的原则

1559216962507

绘制方法

我们在绘制用例图时,可以遵循下面的步骤:确定主体,寻找角色,定义用例,建立关联的方式一步步的确定用例图。如下是用UML描述的我的blog的用例图

1559217626903

参考链接:


本文会经常更新,请阅读原文: https://xinyuehtx.github.io/post/UML%E7%94%A8%E4%BE%8B%E5%9B%BE.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。

知识共享许可协议 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名黄腾霄(包含链接: https://xinyuehtx.github.io ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系