前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一文掌握UML用例图和时序图:PlantUML实操分享

一文掌握UML用例图和时序图:PlantUML实操分享

作者头像
唔仄lo咚锵
发布2021-09-14 11:02:04
2.6K0
发布2021-09-14 11:02:04
举报
文章被收录于专栏:blog(为什么会重名,真的醉了)

文章目录

用例图


前置博客:一文掌握UML类图:PlantUML实操分享

用例图是指由参与者(Actor)、用例(Use Case),边界以及它们之间的关系构成的用于描述系统功能的视图。用例图(User Case)是外部用户(被称为参与者)所能观察到的系统功能的模型图。用例图是系统的蓝图。用例图呈现了一些参与者,一些用例,以及它们之间的关系,主要用于对系统、子系统或类的功能行为进行建模。

用例图主要的作用有三个:1. 获取需求;2. 指导测试;3. 还可在整个过程中的其它工作流起到指导作用。

画图基本步骤:

  1. 确定系统边界
  2. 确定主要参与者和目标
  3. 定义用例和关系

参与者


参与者不是特指人,是指系统以外的,在使用系统或与系统交互中所扮演的角色。因此参与者可以是人,可以是事物,也可以是时间或其他系统等等。还有一点要注意的是,参与者不是指人或事物本身,而是表示人或事物当时所扮演的角色。比如小明是图书馆的管理员,他参与图书馆管理系统的交互,这时他既可以作为管理员这个角色参与管理,也可以作为借书者向图书馆借书,在这里小明扮演了两个角色,是两个不同的参与者。参与者在画图中用简笔人物画来表示,人物下面附上参与者的名称。

PlantUML中用两个冒号::定义,也可以用actor关键字定义参与者/角色,还可以用关键字as定义别名,如下图所示:

此外还可以使用skinparam actorStyle风格的角色图标,在定义角色前加上语句skinparam actorStyle awesome即可:

以及用户间的继承关系表示(用箭头-|>同类图)

用例


用例是对包括变量在内的一组动作序列的描述,系统执行这些动作,并产生传递特定参与者的价值的可观察结果。这是UML对用例的正式定义,对我们初学者可能有点难懂。我们可以这样去理解,用例是参与者想要系统做的事情。对于对用例的命名,我们可以给用例取一个简单、描述性的名称,一般为带有动作性的词。用例在画图中用椭圆来表示,椭圆下面附上用例的名称。

PlantUML用两个圆括号()定义,也可以使用关键字usecase定义用例,同样的也能用as起别名。

继承同理

当需要自定义跨越多行的用例描述时,可以用双引号将其裹起来。然后可使用分隔符:–…==__适当划分和放置标题。

系统边界


系统边界是用来表示正在建模系统的边界。边界内表示系统的组成部分,边界外表示系统外部。系统边界在画图中用方框来表示,同时附上系统的名称,参与者画在边界的外面,用例画在边界里面。因为系统边界的作用有时候不是很明显,所以我个人理解,在画图时可省略。

PlantUML中使用关键字package定义包来表示系统边界;

也可以使用关键字rectangle用矩形风格的包。

此外还可用<<和>>定义角色或用例的构造类型,定义颜色等等。

花里胡哨的,默认不香吗

举例:

时序图


时序图,又名序列图、循序图,是一种UML交互图。它通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作。它可以表示用例的行为顺序,当执行一个用例行为时,其中的每条消息对应一个类操作或状态机中引起转换的触发事件。采用时序图可以更方便地表示调用流的顺序,仅需要由上至下阅读即可。

时序图包括:角色、对象、生命线、控制焦点、消息。

创建步骤

  1. 确定交互过程的上下文;
  2. 识别参与过程的交互对象;
  3. 为每个对象设置生命线;
  4. 从初始消息开始,依次画出随后消息;
  5. 考虑消息的嵌套,标示消息发生时的时间点,则采用FOC(focus of control)
  6. 说明时间约束的地点。

角色


角色(Actor)系统角色或参与者,可以是人或者其他系统,子系统。

关键字participant定义参与者,也可用于改变参与者的先后顺序。此外也可以使用其它关键字来声明具体参与者类型:actor、boundary、control、entity、database、collections。

此外关键字as可以给角色起别名;

在定义角色时#加RGB值或者颜色名可以自定义颜色;

关键字order可以进行排序。

插播反爬信息 )博主CSDN地址:https://wzlodq.blog.csdn.net/

对象


对象(Object)代表时序图中的对象在交互中所扮演的角色,位于时序图顶部和对象代表类角色。

  • 处于顶部 : 如果对象的位置在时序图顶部, 说明在交互开始的时候对象就已经存在了
  • 不在顶部 : 如果对象的位置不在顶部, 那么对象在交互过程中创建的(create关键字)

对象一般包含以下三种命名方式:

第一种方式包含对象名和类名;

第二种方式只显示类名不显示对象名,即为一个匿名对象;

第三种方式只显示对象名不显示类名。

也可以使用<<和>>添加构造类型,并使用(X,color)格式的语法添加一个圆圈圈起来的字符。

生命线


生命线(Lifeline)代表时序图中的对象在一段时期内的存在。时序图中每个对象和底部中心都有一条垂直的虚线,这就是对象的生命线,对象间 的消息存在于两条虚线间。

并可以使用|||增加空间(生命线长度)

延迟:可以用…在生命线上表示延迟

分隔符:使用 == 关键词来将图表分割多个步骤

注释:关键字note,加方向位置

控制焦点


控制焦点(Activation)代表时序图中的对象执行一项操作的时期,在时序图中每条生命线上的窄的矩形代表活动期。它可以被理解成C语言语义中一对花括号“{}”中的内容。

关键字activate和deactivate用来表示参与者的生命活动。

一旦参与者被激活,它的生命线(条形框)就会显示出来。activate和deactivate适用于以上情形,destroy表示一个参与者的生命线的终结。

还可以使用嵌套的生命线,并且运行给生命线添加颜色:

消息


消息(Message)是定义交互和协作中交换信息的类,用于对实体间的通信内容建模,信息用于在实体间传递信息。允许实体请求其他的服务,类角色通过发送和接受信息进行通信。

用箭头表示发送消息,可以给自己发消息,消息文字可以用\n实现换行,虚线代表控制返回,一般可以省略。需要强调控制转移地时候画出:

关键字autonumber用于自动对消息编号

autonumber //start //increment// 可以同时指定编号的初始值和每次增加的值:

autonumber stop// resume //increment// //format//表示停止、暂停、继续使用自动编号

组合消息

常用图框,可以通过以下关键词将组合消息

  • opt:当保护信息为真时执行的可选片段,相当于if
  • alt/else:选择性的片段,用于表示保护信息所表达的互斥条件逻辑,相当于if…else if…else
  • loop:用于表示保护信息为真的循环片段,相当于循环for
  • par:并行执行的并行片段,相当于多线程

嵌套使用:

最后可以用关键字box设定填充区包裹起来,及样式参数配置等


参考PlantUML文档:

https://plantuml.com/zh/use-case-diagram

https://plantuml.com/zh/sequence-diagra

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/10/22 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 用例图
    • 参与者
      • 用例
        • 系统边界
        • 时序图
          • 角色
            • 对象
              • 生命线
                • 控制焦点
                  • 消息
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档