• 软技能之UML图


    软技能之UML图

    工欲善其事必先利其器,程序员建模过程中需要用到的建模工具UML。

    UML:Unified Modeling Language 统一建模语言。目标是以对象图的方式来描述任何类型的系统。

    UML可分为两类:结构型(描述某种结构)、行为型(描述某种行为)

    • 结构性的UML有:类图、对象图、构件图、部署图、包图。

    • 行为型的UML有: 活动图、状态机图、顺序图、通信图、用例图、时间图。

    软件开发的各个阶段

    需求分析阶段:

    • 用例图:由参与者、用例、边界及它们之间的关系构成描述系统功能的视图。

    • 流程图:面向过程,描述处理过程。

    概要设计阶段:

    • 类图:模型的静态结构,类之间的关系。

    • 对象图:作为系统在某一个时刻的快照,是类图中的各个类在某一个时刻点上的实例及其关系的静态写照。用于描述某一时刻的一组对象及它们之间的关系。

    详细设计阶段:

    • 时序图:描述对象之间发送消息的时间顺序显示多个对象之间的动态协作。

    • 状态图:描述一个实体基于事件反应的动态行为。侧重从行为的结果来描述。

    • 活动图:阐明业务用例的工作流程。侧重从行为的结果来描述,面向对象,着重表现系统行为。

    • 顺序图:将交互关系表示为一个二维图。

    • 通信图:表现对象交互关系的图。

    部署阶段:

    • 部署图。

    常用的几种图

    类图

    类图是描述业务概念的一种图。

    类之间关系主要分为六种:

    • 继承:子类继承父类。

    • 实现:实现类与接口。

    • 关联:类对象与另一类对象有联系。(组合、聚合也属于关联关系)

    • 依赖:某个类方法使用另一个类对象作为参数。(单向)

    • 组合:类之间整体与部分的关系,整体与部分有一致的生命周期。

    • 聚合:类之间整体与部分的关系,但成员对象可以脱离整体对象独立存在。

    各关系从强到弱:继承->实现->组合->聚合->关联->依赖。(DDD中的聚合和UML中的组合关系是一致的)

    类图属性表示法:

    + public
    - private
    # protected
    ~ default
    抽象类或抽象方法用斜体表示
    静态类或静态方法加下划线
    如果是接口在类上加<<>>

    UML图中画一个类使用分割线的矩阵表示:

    • 最上面为类名。

    • 中间为类属性。

    • 下面为类方法。

    完整类图例子:

    部署图

    部署图用来描述系统如何部署,以及系统之间的关系的一种图。

    18年画了一张,后面分享出来了。

    流程图

    流程图:面向过程,描述处理过程的一种图。

    常用的基本符号:

    • 开始/结束:表示流程的开始或结束符号。一个流程图只有一个开始,可能有多个结束。

    • 过程:流程中要处理的一个步骤。

    • 数据:表示数据的输入或者输出。

    • 判定:用来表示过程中的一项判定。

    • 文档:表示属于该过程的书面信息。

    • 流向:箭头表示一个过程的流程方向。

    本人之前画的ForkjoinPool执行流程图,最左侧ForkJoinWorkerThread#run 其实是由main方法启动后续执行的,为了方便理解,画了两个开始。

    活动图和流程图对比:

    • 活动图更侧重某一体系中各个对象之间的行为联系,活动顺序。而流程图可以指某一算法的具体实现步骤,侧重处理过程。

    • 活动图可以并发执行,而流程图是依次执行,有时间顺序。

    • 活动图是面向对象的,流程图是面向过程的。

    时序图

    组成元素:

    1. 角色 Actor:系统角色,可以是人或者其它系统和子系统。

    2. 对象 Object:对象代表时序图中的对象在交互中所扮演的角色。

    3. 生命线 Lifeline:生命线代表时序图中的对象在一段时期内的存在。

    4. 控制焦点 Activation:代表时序图中的对象执行一项操作的时期。

    5. 消息 Message:定义交互和协作中交换信息的类。

  • 相关阅读:
    算法练习(三)井字棋
    JS高级:js是单线程的原因
    dreamweaver作业静态HTML网页设计——摩尔庄园7页HTML+CSS+JS DW大学生网页作业制作设计 Dreamweaver简单网页
    【ASM】字节码操作 工具类与常用类 LocalVariablesSorter 类 简单介绍与使用
    Ansible学习笔记09-剧本中使用变量2
    k8s之pod控制器
    语雀/markdown文档编写常用快捷键
    mobaxterm会话同步
    MySQL 教程:MySQL IN 语句(高级)
    架构漫谈 - 如何设计高性能、高可用、高扩展架构
  • 原文地址:https://blog.csdn.net/u011385940/article/details/126060302