1. 一文读懂 UML 用例图
当你脑子里有一个商业案例时,你该怎么向老板介绍呢?一大段文字,或是动手写个 Demo?老板很忙,老板也不见得懂你所说的“高大上”技术,有没有那种实现成本较低但又包含较多信息的表现方式呢?有,画张图呗!
今天起再开个专题,谈谈我们开发中常用到的一些图形建模手段。前言结束,我们从 UML 视图启航。
UML——Unified Modeling Language——统一建模语言,是业务建模阶段最常用和最重要的一种视图。由于它简单易懂,常常用于跨组织的文档或演示的说明中;这里所谓的跨组织指的不仅仅是开发部门间,而是指跨产品、设计、测试、运维等等部门的业务交流中。UML 设计中,第一张图一般都是用例图:是的,就是那个有“小人”的图。
用例图主要有三个部分组成:用例(Use Case)、参与者(Actor),以及它们互相间的关系(Relationship);形式上就是用椭圆、小人,以及箭头的连线组合。
我们先不细说椭圆或是箭头的具体含义。我觉得讲用例图最好还是从具体的 Use case 入手为好。我们试着设计一款简单的银行 APP,它包含注册、登陆、交易等等操作。我们一步步拆解挥着用例图的过程。
画用例图的第一步通常是拖出一个巨大的矩形块,并将其命名为我们的目标系统——Banking App。一个用例图一般只会有一个 System,之后我们会把所有该系统相关的是功能(“用例”)放置在系统内部,系统的相关方(“参与者”)放置在系统的左右两侧。
第二个绘制元素就是参与者,即系统相关方,可以是人、组织、外部设备,或是其他系统。在我们这个银行案例里,该 App 的相关方有两个:就是客户(Customer)和银行(Bank)。
通常来说,一个用例图中会有两三个参与者,我们会把主要参与者放在系统左侧,次要参与者(主要参与者的回应方)放在右侧;显然我们的 App 主要是面向客户的,所以把客户放在了左边。
第三步就是在系统内添加具体的用例,也就是该系统所提供的功能或是业务块。我们的银行 APP 比较简单,只提供如下业务:
第四步,我们再把参与者与用例串联起来,就是我们所说的关系(Relationships)。用例图中,关系还可以继续细分:
最后,所有 UML 视图事实上都可以加注释,专业术语叫延伸(Extension points)和批注(Note);这两种注释性质形同,都是起说明作用:
好了,UML 用例图大体就讲完了。我们再回顾一下用例图的使用场景,在产品设计阶段,我们可以使用用例图为用户、系统和功能服务建立起抽象关系,以便描述产品所呈现的外部动态特征。在一些大厂中,通常由产品经理或是设计师来首先绘制 UML 用例图,再交于开发团队实现。
我们举了一个银行 App 的例子,事实上有点大了;现实开发中,一个 Use Case 图通常只对应的一个简单的业务流而已。我们自己在写用例图时,也要注意在宏观层面将联系紧密的功能模块抽象为一个简单的 Case,然后逐步地为这些较大的功能模块画出细分 Case 的用例图。
2. UML用例图
UML(Unified Modeling Language),统一建模语言,又称标准建模语言,是为软件系统建立可视化模型。主要包括用例图、时序图、协作图、活动图、部署图、构件图、类图、状态图等等。
之前有写过UML时序图: 产品经理必备之UML时序图
用例图(Use Case Diagrame)是UML的一种,主要用来描述用户、需求、系统功能之间的关系,能够充分展示一个外部用户能够观察的系统功能模型图,以一种可视化的直观方式理解系统的功能需求,以便使系统用户更容易理解这些元素的用途,也便于开发人员最终实现这些元素。
用例图是跳出当前系统,站在用户的角度去看系统,思考系统功能,这样我们能更加理解业务,表达清楚需求。从用户的视角,我们不会使用专业术语去进行业务的沟通,可以做到真正以用户为中心去获取需求,转化为产品服务。
用例图可以帮助我们更全面的考虑系统内事物之间的互相影响,关注整体的运行规律,而不是只考虑个别事物的情况。
1、参与者 :是系统外部的一个实体,它以某种方式参与了用例的执行过程。参与者不一定是人,也可以是部门,也可以是外部系统,也可以是其他事物。通常用人形图标表示。
2、用例 :是对系统的用户需求(主要是功能需求)的描述,用例表达了系统的功能和所提供的服务,说明了系统是如何与最终用户或其它系统互动,也就是谁可以用系统做什么,从而获得一个明确的业务目标。通常用椭圆表示。
用例注意事项:
用例粒度的确定,没有标准,只能根据实际情况分析。一个大型系统,可能会有上百个用例,一个小产品,也许只有几个用例。
一个用例是一个完整的使用场景,不是零散的动作步骤。比如,拿起手机打电话是个完整的场景,拿起手机只是一个步骤。
一个用例有一个明确、独立的目标,如果一个用例包括多个目标,则可再逐层细化出子用例。
3、系统边界 :将系统内外分开,参与者在外面,用例在里面。边界内的用例,就是系统要实现的事情。通常用矩形框表示。
4、关系:
(1)关联关系:用一条实线表示,这条实线一般有三种形式:无箭头、有指向用例的箭头、有指向执行者的箭头。箭头的方向代表了数据流向或谁启动谁。
(2)归纳(泛化)关系:表示参与者与参与者之间、用例与用例之间的关系。一个用例可以被特别列举为一个或多个子用例,这被称为用例泛化。
用带空心箭头的实线表示,箭头指向被泛化的用例,即子用例指向父用例,泛化是从下到上的过程。(子用例继承父用例所有的结构、行为和关系,是父用例的一种特殊形式。)
(3)包含关系:表示用例与用例之间的关系,其中一个用例(父用例)的行为包含了另一个用例(子用例)的行为。
用虚线箭头+表示,箭头指向被包含的用例。一般是父用例包含很大的范围,专门抽出子用例来着重表达,又或者是复用用例。
(4)扩展关系:表示用例与用例之间的关系,是在特定条件下,由扩展用例指向被扩展用例。
用虚线箭头+>字样,箭头指向被扩展的用例。拓展用例是在特定条件出现时,才会被执行的用例。
1、不是每个需求都要画用例图,要视情况而定,简单的需求完全可以不用画。
2、画图是为了表达、传递信息,当我们画用例图时,不管画的多么酷炫,本质都是在分析业务场景、系统功能性需求,并描述出来。
阅读原文
对产品经理感兴趣的朋友,可以移步“ 需求管理 ”,期待共同交流。
3. 画UML用例图
下面是我的答案:
4. UML图总结-需求分析阶段用例图的使用
最近过年因为新冠病毒的肆虐各公司都开始放长假了,初步估计都是要出了元宵才能回成都上班,虽然返岗之前要在家办公(上班),但是还是得做点欠着的事情舍,其中比较重要的一个就是我的毕业设计嘞,一两个月就要交初稿了,但是我还没开始嘞
由于毕业设计需要用到各种UML图,所以就趁这个机会好好复习和总结一下软件工程课程有关UML图的相关内容吧,毕竟这个在软件设计和分析的流程中还是占据比较重要的地位,也是软件分析的利器,能帮助我们快速分析我们要做的事情,也能使我们要做的东西一目了然,接下来就直接开始总结和复习吧,就以我的毕业设计——一个简单的在线考试系统为例开始我们的学习之旅
用例图(User Case)是外部用户(被称为参与者)所能观察到的系统功能的模型图。用例图是系统的蓝图。用例图呈现了一些参与者,一些用例,以及它们之间的关系,主要用于对系统、子系统或类的功能行为进行建模。 例如我们在线考试系统的业务用例图:
简单来说就是:用例图是由参与者(Actor)、用例( Use Case )、 系统边界 、箭头组成,用画图的方法来完成的一个表达系统功能的图示。 接下来分别介绍其成分。
参与者(Actor)是指存在于系统外部并直接与系统进行交互的人、系统、子系统或类的外部实体的抽象。
简单来说就是: 一个系统的使用者,可能涉及的角色就是一个参与者
每个参与者可以参与一个或多个用例,每个用例也可以有一个或多个参与者。 在用例图中使用一个人形图标来表示参与者,参与者的名字写在人形图标下面。
简单来说就是: 用例 是对包括变量在内的一组动作序列的描述,系统执行这些动作,并产生传递特定参与者的价值的可观察结果。
系统边界 是用来表示正在 建模 系统的边界。边界内表示系统的组成部分,边界外表示系统外部。系统边界在画图中用方框来表示,同时附上系统的名称,参与者画在边界的外面, 用例 画在边界里面。因为系统边界的作用有时候不是很明显,所以我个人理解,在画图时可省略。
要创建用例,我们需要分析哪些可以作为用例,如何识别,可以从以下几点来确定用例:
简单来说就是:如果用例的粒度很小,得到的用例数就会太多。反之,如果用例的粒度很大,那么得到的用例数就会很少。
比如在我们的考试系统中:我们的老师可以对试卷进行管理,那么展示出来的粒度较大的用例可以是这样:
如果我们按照具体的操作把它抽象成多个用例(粒度变小),它也可以是这样的:
它展示的系统需求和单个用例是完全一样的。
用例之间的关系包括以下几种:
5. UML用例图、类图
首先需要先了解一下对象之间的关系,以及它们对应的符号
通常对象之间的关系可以分为以下几类:
1、泛化/继承(Generalization):实线+三角形空心 相当于类继承,父参与者可以是抽象的,即不能创建一个父参与者的直接实例,这就要求属于抽象父参与者的外部对象一定能够属于其子参与者之一。
2、关联关系(association) :实线箭头 关联关系:指的是类与类之间的联接,它使一个类知道另一个类的属性和方法(实例变量体现)。A类依赖于B对象,并且把B作为A的一个成员变量, 则A和B存在关联关系. 关联可以是双向的,也可以是单向的。两个类之前是一个层次的,不存在部分跟整体之间的关系。 单向:只能从A通过属性导航到B,B不能导航到A。 双向:A可以通过属性导航到B,B也可以通过属性导航到(双向即为嵌套)
3、聚合关系(aggregtion)棱形空心+实线 聚合(aggregation)关系是关联关系的一种,是强关联关系,是整合和部分的关系,是has-a的关系. 聚合关系也是通过成员对象来实现,其中成员对象是整体对象的一部分,但是成员对象可以脱离整体对象单独存在.(可替换)
4、依赖(Dependency) 虚线+箭头 依赖关系:指的是类与类之间的联接。依赖关系表示一个类依赖于另一个类的定义。 动物依赖氧气和水。调用新陈代谢方法需要氧气类与水类的实例作为参数
5、实现关系(realization)虚线三角形空心 实现关系:指的是一个class类实现 interface接口(可以实现多个接口)的功能;实现是类与接口之间最常见的关系; 在Java中此关系通过关键字implements明确标识。
6,组合关系(composition) 组合是一种强的‘拥有’关系,是一种contains-a的关系,体现了严格的部分和整体关系,部分和整体的生命周期一样。 示例: 鸟和翅膀就是组合关系,因为它们是部分和整体的关系,并且翅膀和鸟的生命周期是相同的。
一张完整的类图:
参考: UML用例图 , UML类图 , UML中的类图及常见类图关系
6. UML之我做分析与设计时常用到的2种图
【跟老婆吵架千金劝我:“爸爸,别跟妈妈一般见识,女人都是惯出来的,打一顿就好了!” “我不敢啊!”,我说。 千金横眉冷对地对我说:“可以让妈妈打你,这不是经常的事吗?这都是惯的。” 唉!不说了,疗伤中】
工作中常用的UML图有哪些???
需要准备工具:SmartUML软件
A & D
A是Analyse的缩写,即我们所说的“分析”; D是Design的缩写,即“设计”。
一个系统在编码前,都要经过分析与设计两个步骤。分析师绘制的类图叫做“领域类图”,而设计师绘制的类图叫做“实现类图”。
领域类图 :产生于分析阶段,由系统分析师绘制,主要作用是描述业务实体的静态结构,包括业务实体、各个业务实体所具有的业务属性及业务操作、业务实体之间具有的关系。
例如:
这是一个选课系统的简单领域分析类图。可以看到,主要实体有教师、学生、课程和开课安排。每个实体标注了其在业务上具有的属性和方法。而且图中还标明了实体间的关系。
分析仅与业务有关,而与技术无关。
实现类图: 产生于设计阶段,由系统设计师绘制,其作用是描述系统的架构结构、指导程序员编码。它包括系统中所有有必要指明的实体类、控制类、界面类及与具体平台有关的所有技术性信息。例如:
上面图形就是根据领域模型所画出的实现类图。
来自达夫妮·杜穆里埃《蝴蝶梦》
【猴画狐狸】 猴子发现狐狸在鸡窝前鬼鬼祟祟,立刻提笔画了一幅速写,贴在鸡窝前的大树上。 貉、狼和老虎看了,不约而同地把猴子围了起来。 貉怒视着猴子说:"你这是别有用心!看你给狐狸画的那嘴,简直与我的嘴一模一样!" 狼逼视着猴说:"你这是指桑骂槐!"为什么偏偏画我老朋友的速写?" 老虎怒气最大,它一边将速写扯碎,一边对猴子吼道:"你这是影射!狐和虎读音相近。你的矛头是对着我的!" 猴无法申辩,它糊涂了:我明明画的是狐狸,可貉、狼和虎为何要发火呢? 据说,猴之所以常常抓耳挠腮,就是因为没有弄明白这个问题。
【如何点菜-来自知乎】
【1】 UML类图与类的关系详解 【2】 领域模型和设计类图的区别 【3】 UML常用图的几种关系的总结 【4】 基于UML的需求分析和系统设计个人体会 【5】 UML的面向对象分析设计过程浅析 【6】 例解基于UML的面向对象分析与设计 【7】 UML系统分析与设计
如果有带给你一丝丝小快乐,就让快乐继续传递下去,欢迎点赞、顶、欢迎留下宝贵的意见、多谢支持!
7. 用例建模如何进行?uml用例图的要素有哪些
UML用例图最简单了,一般表达使用者和系统功能之间的关系。也就是角色和用例之间的关系。如下图。基本元素就是角色,用例,扩展关系,包含关系,用例主题,扩展点等几项。
更多用例图案例可以参考trufun plato uml2建模工具的帮助系统。
8. uml用例图怎么创建
方法/步骤
首先就是安装rose这个工具,这里我用的是“IBM Rational Rose Enterprise Edition”。
打开软件之后,界面有这个默认选项,点击“OK”就可以了。
在界面左边有一个“use case view”,可以在这里新建一个用例图。
鼠标放在“use case view ”上面,单击右键,选择“new”下的“use case diagram”。
如图所示,用例图建好了,可以命名,这里我选择的是默认的名字。
双击之前建好的用例图,右边就会弹出这样的窗口,有工具栏,有白色画布。
接着鼠标点一下人形图标,再在右边的空白处点一下就会得到一个参与者了。
鼠标点击左边的椭圆形图标,然后再在右边点击一下就可以得到一个参与者的活动了。