• markdown工具链plantuml:像写代码一样绘制 UML 模型-用例图


    对于程序员来说,为心无旁骛,全心投入到系统架构、软件、算法的设计中,通常不希望双手在键盘与鼠标之间频繁切换,导致大脑焦点不集中,影响工作效率。

    然而,在做业务建模、需求、分析、设计时,需要绘制用例图、类图、序列图等,并且绘图软件大多通过鼠标操作。那么,有没有一种绘图软件不需要通过鼠标操作呢?答案就是 plantuml 标记语言。

    plantuml 可以嵌入到 markdown 文档中,结合 vim 编辑器,真正实现键不离手。同时,plantuml 的使用者不需要关心图的布局与布线,这些由软件自动完成。相比 visio 等可视化软件,plantuml 绘图的布局布线更加高效、自然。

    推荐使用 vnote 软件,其将这上述几个软件集成在一起。

    UML模型

    UML (Unified Modeling Language, 统一建模语言) 是非专利的第三代建模和规约语言。在UML系统中有3种主要的模型:

    • 功能模型:从用户的角度展示系统的功能,包含用例图
    • 对象模型: 采用对象,属性,操作,关联等概念展示系统的结构和基础,包括类別图、对象图
    • 动态模型: 展现系统的内部行为,包括序列图,活动图,状态图

    UML 模型有9种图,包括:用例图、类图、状态图、协作图、活动图、序列图、构件图、部署图。图是模型中信息的图形表达方式,但是UML模型独立于UML图存在。

    不同的UML图使用场景不同,在软件开发的过程中,不同的阶段使用不同的图,通常,软件开发的不同阶段使用到的UML模型图如下:

    • 需求分析用例图,对外部的参与者以及其需要的系统功能建模,表示客户需求;
    • 概要设计类图、状态图、协作图、活动图,描述系统的静态结构、动态特征;
    • 详细设计状态图、协作图、活动图、序列图,产生技术解决方案;
    • 测试类图、构件图、部署图,单元测试使用类图,集成测试使用构建图、部署图。

    plantuml 软件是众多支持 UML 建模的开源软件中的一个,其允许用户从纯文本语言创建UML图。

    用例图

    用例图主要用来描述“用户、需求、系统功能单元”之间的关系。
    它展示一个外部用户能够观察到的系统功能模型图。用例图多用于静态建模阶段(主要是业务建模和需求建模),帮助开发团队以一种可视化的方式理解系统的功能需求。

    顾名思义,用例图主要由用例、角色、关系组成。

    例如,在一个论坛系统中:

    • 用例:登录论坛、发帖子、查询贴子、删除贴子、评论贴子、用户级别管理等;
    • 角色:论坛游客、论坛用户、系统管理员;
    • 关系:用例与角色之间的连接。

    用例

    plantuml 标记语言中,可以使用如下两种方式表示用例:

    • 使用(..)定义用例,即用例用圆括号括起来;
    • 使用关键字usecase声明用例

    上述两种方式都可以使用as定义别名。

    @startuml
    (登录论坛)
    (发帖子) as (tiezi_add)
    usecase 删帖子 as tiezi_del
    #enduml
    

    include 与 extend

    如果一个用例 include 一个用例可以使用.> + :include 表示;
    如果一个用例extend 一个用例可以使用.> + :extend 表示;

    @startuml
    
    (删除帖子) as (del)
    (查询帖子) as (lookup)
    
    del .> lookup : include
    
    @enduml
    

    构造类型

    可以使用 <<..>>定义用例或者角色的构造类型

    @startuml
    
    (删除帖子) as (del) << 操作 >>
    
    @enduml
    

    角色

    plantuml 标记语言中,角色的定义也有两种方法:

    • 使用:...:定义角色,即使用两个冒号将角色括起来;
    • 使用关键字actor定义角色;
    @startuml
    
    :游客:
    actor 论坛用户 as user
    actor 论坛管理者 as admin
    
    @enduml
    

    继承

    如果一个角色继承另一个,可以使用<|--符号表示;

    @startuml
    
    user <|-- admin
    
    @enduml
    

    关系

    plantuml 标记语言中,使用箭头-->连接角色与用例,表示他们之间的关系,默认是竖直方向。
    另外, 横杠-越多,表示箭头越长,可以将不同的角色在布局上分开。

    @startuml
    actor 游客 as visitor
    actor 论坛用户 as user
    
    (查询帖子) as lookup
    (发表帖子) as add
    
    user --> lookup
    user --> add
    
    visitor -> lookup
    
    @enduml
    

    注释
    plantuml 使用 note left of, note right of, note top of, note bottom of等关键字声明注释,可通过as声明注释别名,然后使用..连接其他对象。

     @startuml
    actor 论坛用户 as user
    
    (查询帖子) as lookup
    (发表帖子) as add
    
    user -> lookup
    user -> add
    
    note as note1
    发表帖子之前需要查询帖子
    end note
    
    add .. note1
    note1 .. lookup
    
    @enduml
    

    箭头方向

    plantuml 中,使用箭头-->连接角色与用例,表示他们之间的关系,默认是竖直方向。可以用一个-表示水平方向

    可以给箭头添加left, right, up, down等关键字来改变方向

    @startuml
    
    论坛用户 -left-> (查询帖子) 
    论坛用户 -right-> (发表帖子) 
    论坛用户 -up-> (删除帖子) 
    论坛用户 -down-> (更新帖子) 
    
    @enduml
    

    分割

    用 newpage 关键字将图示分解为多个页面。

    @startuml
    
    论坛用户 --> (查询帖子)
    
    newpage
    
    游客 --> (查询帖子)
    
    
    @enduml
    

    构图

    默认从上往下构建图示。
    你可以用 left to right direction 命令改变图示方向。

    @startuml
    
    left to right direction
    论坛用户 --> (查询帖子)
    
    @enduml
    

    注意:不支持 right to left direction命令。

    参考

    NFVschool 微信公共号

    NFVschool,关注最前沿的网络技术。


    原文链接

  • 相关阅读:
    【总结】搜索
    【luogu】p2296 寻找道路
    【luogu】p2058 海港
    【总结】二叉搜索树
    【总结】线段树
    【总结】矩阵快速幂
    【笔记】很基础的数论知识
    【总结】扩展欧几里得算法
    【总结】二分查找
    【高精度乘法】例1.4 课本185页
  • 原文地址:https://www.cnblogs.com/kekukele/p/13550157.html
Copyright © 2020-2023  润新知