如何画系统用例图

序言

对于用例图,主要分为业务用例图和系统用例图,两者不同之处是研究对象,业务用例图的研究对象是组织,系统用例图的研究对象是系统。

我们最常用的是系统用例图,它从用户视角描述系统功能,是用户所能观察到的系统功能的模型图,帮助开发团队以一种可视化的方式理解系统的功能需求。

系统用例图的四要素:

  • System(系统):封装了自身的数据和行为,能对外提供服务的整体,用一个矩形块表示;
  • Actor(参与者或执行者):在所研究的系统外,与该系统发生功能性交互的人或其他系统,用一个小人表示;
  • Use Case(用例):系统外部可见的系统功能,对系统提供的服务进行描述,用一个椭圆表示;
  • Relationship(关系):包括执行者与用例之间的关联关系,执行者之间或用例之间的泛化关系,还有用例之间的包含关系和扩展关系,其中关联关系用一个实线箭头表示,泛化关系用一个实线空心三角箭头表示,包含关系用一个虚线箭头+<<include>>表示,扩展关系用一个虚线箭头+<<extend>>表示。

根据四要素,我们可以通过四步法来画系统用例图:

  • 第一步:定系统;
  • 第二步:找执行者;
  • 第三步:添用例;
  • 第四步:画关系。

定系统

第一步是定系统,通常是拖出一个巨大的矩形块,并将其命名为我们的目标系统——代码打靶服务。一个系统用例图一般只会有一个 系统,之后我们会把该系统相关的功能(用例)放置在系统内部,系统的相关方(执行者)放置在系统的左右两侧。

system.png

代码打靶服务是为打靶人员提供的一个可通过Web进行代码打靶的自动化工具。打靶人员在线浏览一段称作靶子的代码片段,然后根据规范添加标准化的评审意见,待打靶完成后提交答卷,服务会根据靶标(答案)来完成阅卷,并展示打靶结果。打靶人员根据弱项进行改进,可以有效提升Code Review能力和编码能力。

找执行者

第二步是找执行者,即在所研究的系统外,与该系统发生功能性交互的人或其他系统。

对于代码打靶服务,执行者除过打靶人员,还有管理员和用户认证服务:

  • 管理员维护靶场,以便于打靶人员访问;
  • 不管是打靶人员,还是管理员,都需要登陆,而登陆不是代码打靶服务的核心功能,我们可以委托用户认证服务来完成。

打靶人员是主要的执行者,我们放在左边,而将用户认证服务和管理员放在右边:


actor.png

添用例

第三步是添用例,就是在系统内添加该系统所提供的功能,一般使用动宾短语来表达用例。

代码打靶服务对打靶人员提供的功能包括:

  • 登录;
  • 打靶;
  • 提交答卷;
  • 查看打靶结果。

代码打靶服务对管理员提供的功能包括:

  • 登录;
  • 管理靶场。

我们将识别出来的用例放在系统中:


usecase.png

第四步:画关系

第四步是画关系,我们按各种关系分别来阐述。

关联关系

执行者和用例之间是关联关系。在UML标准中,执行者和用例之间没有要求使用箭头,但笔者认为通过箭头可以明确表示出用例的执行方向,所以建议加上。

有的箭头是从执行者指向用例,这样的执行者称为用例的主执行者,有的箭头是从用例指向执行者,这样的执行者称之为用例的辅执行者。主执行者主动发起用例的交互,辅执行者在用例的交互中被动参与进来。

一般来说,辅执行者绝大多数都是外系统,人作为辅执行者的情况比较少,所以碰到辅执行者是人的时候要多留心,常见的错误是把信息的接收者或将来可能使用信息的人当成辅执行者。

我们举一个辅执行者是人的例子:营业员使用营业系统为顾客办卡,在用例交互过程中,需要顾客配合输入账户密码,否则办卡用例不能成功,这时顾客是合适的辅执行者。

还需要注意的是,主执行者和辅执行者是针对某个用例来说的,一个外系统可以是这个用例的辅执行者,也是可以是另外一个用例的主执行者。对于代码打靶服务来说,打靶人员和管理员都是登陆用例的主执行者,而用户认证服务是登陆用例的辅执行者。

我们给代码打靶服务画上关联关系:


association.png

泛化关系

泛化关系也可以称作继承关系,用一个实线空心箭头来表示。

执行者之间存在泛化关系。对于打靶人员来说,可以泛化为开发人员和架构师两个执行者。

用例之间也存在泛化关系。对于登录用例来说,可以泛化为扫码登录和手工输入登录两个用例。

我们给代码打靶服务画上泛化关系:


generalization.png

包含关系

包含是用例之间的一种关系,其中一个用例(称为基本用例)的行为包含了另一个用例(称为包含用例)的行为,用虚线箭头+<<include>>表示,箭头指向包含用例。

包含关系意味着包含用例是基本用例中不可缺少的一个执行步骤,如果缺少了该包含用例,基本用例就会变得不完整。倘若熟悉面向对象设计与分析方法,可以将包含关系类比为对象之间的组合关系,如汽车与轮胎,是一种 must have 关系。

使用包含关系的两个场景:

  • 当基本用例较复杂时,可以分解出一些包含用例
  • 当两个或以上的基本用例存在一些重复行为时,可以提炼出一个包含用例

对于打靶人员,在打靶前先要获取靶场,所以获取靶场可以作为打靶这个基本用例的包含用例。同样,在提交答卷后,代码打靶服务只有在阅卷成功后才给予正常响应,所以阅卷可以作为提交答卷这个基本用例的包含用例。

对于管理员来说,管理靶场这个功能比较复杂:

  • 一个靶场可以组合多个靶子,一个靶子可以同时被多个靶场选择,可见靶子也需要独立的生命周期管理,将管理靶子作为管理靶场这个基本用例的包含用例;
  • 打靶人员打靶时,需要根据规范来添加标准化的评审意见,而每个靶子绑定的规范可能不同,即使对于相同的规范,其版本也可能会升级演进,可见规范也需要独立的生命周期管理,将管理规范作为管理靶场这个基本用例的包含用例。

我们给代码打靶服务画上包含关系:


include.png

扩展关系

扩展是用例之间的一种关系,其中一个用例(称为扩展用例)的行为增强了另一个用例(称为基本用例)的行为,用虚线箭头+<<extend>>表示,箭头指向基本用例。

扩展用例是对基本用例的一种补充或强化,即使没有该扩展用例,对基本用例也不会产生直接影响,基本用例自身仍然是完整的。倘若熟悉面向对象设计与分析方法,可以将扩展关系类比为对象之间的聚合关系,如汽车与车载音响,是一种 nice to have 关系。

如果一个基本用例还有其他动作,但该动作在一定条件下才执行,可以将它放在扩展用例中。

当打靶人员查看打靶结果时,如果靶标已过脱敏期,则靶标信息会附加到打靶结果中,所以展示靶标可以作为查看打靶结果这个基本用例的扩展用例。

我们给代码打靶服务画上扩展关系:


extend.png

小结

用例图属于UML图的行为图类别,是一种描述业务功能的动态视图:


uml.png

根据研究对象的不同,用例图分为业务用例图和系统用例图,我们平常用的比较多的是系统用例图。系统用例图包括系统、执行者、用例和关系四要素,说明谁要使用系统,以及使用这个系统干什么。系统用例图展示了一个外部用户能够观察到的系统功能模型图,帮助开发团队以一种可视化的方式理解系统的功能需求。

我们推荐使用四步法来画系统用例图:

  • 第一步:定系统;
  • 第二步:找执行者;
  • 第三步:添用例;
  • 第四步:画关系。

希望读者掌握四步法,帮助开发团队以一种可视化的方式理解系统的功能需求。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,126评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,254评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,445评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,185评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,178评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,970评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,276评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,927评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,400评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,883评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,997评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,646评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,213评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,204评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,423评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,423评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,722评论 2 345

推荐阅读更多精彩内容

  • UML(Unified Modeling Language),统一建模语言,又称标准建模语言,是为软件系统建立可视...
    eichi阅读 475评论 0 1
  • 1.认识 用例图第一次遇到它的时候印象就是一个个的小人,很好看但是有什么卵用,可以用功能描述为什么要画“小人”(用...
    多了去的YangXuLei阅读 6,914评论 0 2
  • 概念 所谓用例,是对一组动作对象的抽象描述,系统执行这些操作,产生相应的结果。而所谓的用例图就是由参与者(Acto...
    淡定丶说的是阅读 1,569评论 0 0
  • 用例图用于需求分析阶段,描述了一个待开发系统的功能需求,用例视图强调的是系统的功能,是软件开发设计过程第一个设计的...
    纪同学说阅读 4,941评论 0 2
  • UML图系列文章目录 UML图系列——UML概要 UML图系列——建模和面向对象 UML图系列——UML模型图的构...
    C语言中文社区阅读 2,209评论 2 22