程序员必备画图技能,你必须得会

文章目录

  • 前言
  • 一、系统架构图
    • 1.1 系统架构图是什么?
    • 1.2 系统架构图的作用
    • 1.3 架构图分类
      • 1.3.1 场景视图
      • 1.3.2 逻辑视图
      • 1.3.3 物理视图
      • 1.3.4 处理流程视图
      • 1.3.5 开发视图
  • 二、时序图
    • 2.1 系统架构图是什么?
    • 2.1 使用场景
  • 三、流程图
    • 3.1 什么是程序流程图
    • 3.2 程序流程图的标准符号
    • 3.3 为什么要画流程图?
    • 3.4 画流程图时需要注意哪些问题?
  • 四、数据流图
    • 4.1 什么是数据流图
    • 4.2 数据流图四大要素
    • 4.3 数据流图怎么画?
    • 4.3.1、确定系统的输入输出
    • 4.3.2、由外向里画系统的顶层数据流图
    • 4.3.3、自顶向下逐层分解,绘出分层数据流图
  • 五、ER模型图
    • 5.1 什么是ER模型图
    • 5.2 ER模型常见用途
  • 六、思维导图
    • 6.1 什么是ER模型图
  • 总结


前言

做个程序员日常工作有很多,写代码、对需求、写方案等等,还包括画图:流程图、架构图、交互图、功能模块图、UML 类图、部署图、各种可视化图表等等五花八门。通过图的形式,可以更好地展示系统、更清晰地表达自己的思路,便于理解;还能锻炼自己的画功,真是一举多得的事。


一、系统架构图

1.1 系统架构图是什么?

系统架构图是为了抽象的表示软件系统的整体轮廓和各个组件之间的相互关系和约束边界,以及软件系统的物理部署和软件系统的演进方向的整体视图。

1.2 系统架构图的作用

一图胜千言。要让干系人理解、遵循架构决策,就需要把架构信息传递出去。架构图就是一个很好的载体。那么,画架构图是为了:

  • 解决沟通障碍
  • 达成共识
  • 减少歧义

1.3 架构图分类

搜集了很多资料,分类有很多,有一种比较流行的是 4+1 视图,分别为场景视图、逻辑视图、物理视图、处理流程视图和开发视图。

1.3.1 场景视图

场景视图用于描述系统的参与者与功能用例间的关系,反映系统的最终需求和交互设计,通常由用例图表示。
程序员必备画图技能,你必须得会_第1张图片

1.3.2 逻辑视图

逻辑视图用于描述系统软件功能拆解后的组件关系,组件约束和边界,反映系统整体组成与系 统如何构建的过程,通常由 UML 的组件图和类图来表示。
程序员必备画图技能,你必须得会_第2张图片
程序员必备画图技能,你必须得会_第3张图片
程序员必备画图技能,你必须得会_第4张图片

1.3.3 物理视图

物理视图用于描述系统软件到物理硬件的映射关系,反映出系统的组件是如何部署到一组可 计算机器节点上,用于指导软件系统的部署实施过程。
程序员必备画图技能,你必须得会_第5张图片

1.3.4 处理流程视图

处理流程视图用于描述系统软件组件之间的通信时序,数据的输入输出,反映系统的功能流程 与数据流程,通常由时序图和流程图表示。
程序员必备画图技能,你必须得会_第6张图片

1.3.5 开发视图

开发视图用于描述系统的模块划分和组成,以及细化到内部包的组成设计,服务于开发人员,反映系统开发实施过程。
程序员必备画图技能,你必须得会_第7张图片

二、时序图

2.1 系统架构图是什么?

时序图(Sequence Diagram),又名序列图、循序图,是一种UML交互图。它通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作。

2.1 使用场景

一般的软件开发都是为了支撑某个具体的业务。有时候业务的流程会比较复杂,涉及到多种角色,这时就可以使用时序图来梳理这个业务逻辑。这样会使业务看起来非常清晰,代码写起来也是水到渠成的事情了。
程序员必备画图技能,你必须得会_第8张图片
程序员必备画图技能,你必须得会_第9张图片

三、流程图

3.1 什么是程序流程图

流程图是对过程、算法、流程的一种图像表示,在技术设计、交流及商业简报等领域有广泛的应用。通常用一些图框来表示各种类型的操作,在框内写出各个步骤,然后用带箭头的线把它们连接起来,以表示执行的先后顺序。用图形表示算法,直观形象,易于理解。有时候也被称之为输入-输出图。顾名思义,就是用来直观地描述一个工作过程的具体步骤。这种过程既可以是生产线上的工艺流程,也可以是完成一项任务所必需的管理过程。

3.2 程序流程图的标准符号

程序员必备画图技能,你必须得会_第10张图片
如上表所示,流程图有一套标准的符号,每个符号代表特定的含义。举个例子,一个公司的产品检验流程可以用如下的流程图来表示:

程序员必备画图技能,你必须得会_第11张图片

3.3 为什么要画流程图?

一张简明的流程图,不仅能促进产品经理与设计师、开发者的交流,还能帮助我们查漏补缺,避免功能流程、逻辑上出现遗漏,确保流程的完整性。流程图能让思路更清晰、逻辑更清楚,有助于程序的逻辑实现和有效解决实际问题。

3.4 画流程图时需要注意哪些问题?

  1. 绘制流程图时,为了提高流程图的逻辑性,应遵循从左到右、从上到下的顺序排列,而且可以在每个元素上用阿拉伯数字进行标注。
  2. 从开始符开始,以结束符结束。开始符号只能出现一次,而结束符号可出现多次。若流程足够清晰,可省略开始、结束符号。
  3. 当各项步骤有选择或决策结果时,需要认真检查,避免出现漏洞,导致流程无法形成闭环。
  4. 处理符号应为单一入口、单一出口。
  5. 连接线不要交叉。
  6. 如果两个同一路径的下的指示箭头应只有一个。
  7. 相同流程图符号大小需要保持一致。
  8. 处理为并行关系,可以放在同一高度。
  9. 必要时应采用标注,以此来清晰地说明流程。
  10. 流程图中,如果有参考其他已经定义的流程,不需重复绘制,直接用已定义流程符号即可。

四、数据流图

4.1 什么是数据流图

数据流图(Data Flow Diagram):简称DFD,它从数据传递和加工角度,以图形方式来表达系统的逻辑功能、数据在系统内部的逻辑流向和逻辑变换过程,是结构化系统分析方法的主要表达工具及用于表示软件模型的一种图示方法。
这样的解释听起来太端着了,我还是喜欢拆词然后用大白话来理解:
数据流图=数据流+图
所谓数据流,是由一组固定成分的数据组成,表示数据的流向。这里的数据流向,不仅指数据的输入、输出,还包括中间的加工、储存等环节。

4.2 数据流图四大要素

程序员必备画图技能,你必须得会_第12张图片

  1. 外部实体:指系统之外、又与系统有联系的人或事物,它表达了该系统数据的外部来源和去处;

  2. 数据加工:描述输入数据流到输出数据之间的变换,也就是输入数据流经过什么处理后变成了输出数据。
    注意事项:每个加工都有一个名字和编号。编号能反映该加工位于分层的数据流图的哪个层次和哪张图中,能够看出它是由哪个加工分解出来的子加工。
    程序员必备画图技能,你必须得会_第13张图片

  3. 数据存储:某种数据保存后的逻辑统称,不是指保存数据的物理地点和物理介质。每个数据存储都有一个名字。

  4. 数据流:处理功能的输入/输出,箭头表示数据流向。

4.3 数据流图怎么画?

理解了数据流图的概念、组成要素,我们回到最开始给出的答案,也是题主想知道的重点——如何绘制数据流图:

4.3.1、确定系统的输入输出

由于系统究竟包括哪些功能可能一时难于弄清楚,可使范围尽量大一些,把可能有的内容全部都包括进去。
这个阶段,应该充分了解“系统从哪些外部实体接受什么数据”、“系统向哪些外部实体送出什么数据”等信息,这将是第二步绘制顶层数据流程的关键。

4.3.2、由外向里画系统的顶层数据流图

确定系统的输入输出后,我们将可以将它们用“加工”连接起来,“加工”用以表示被开发的整个系统,也是数据流组成或值变化的地方。下图为销售管理系统的顶层图:
程序员必备画图技能,你必须得会_第14张图片

4.3.3、自顶向下逐层分解,绘出分层数据流图

对于大型的系统,为了控制复杂性,便于理解,需要采用自顶向下逐层分解的方法进行,即用分层的方法将一个数据流图分解成几个数据流图来分别表示。

0层图:就是把顶层图的“加工”分解成若干个“子加工”,并用数据流将这些“子加工”连接起来,使得顶层图的输入数据经过若干“子加工”处理后,变成顶层图的输出数据流。
程序员必备画图技能,你必须得会_第15张图片
(1)确认“加工”方法

其实我前面也简单提到,“加工”用以表示被开发的整个系统,也是数据流组成或值变化的地方。因此,0层图数据流的组成或值变化的地方可以变成若干“子加工”。

(2)确定数据流的方法

一起到达、一起处理的数据可看成数据流。

(3)关于数据存储

对于以后要使用的数据,可以组织成为一个数据存储来表示。

注意事项:0层图只有一张,图中的加工号分别是0.1、0.2、…,或者1、 2 、…
接下来,就是对其他“子加工”重复拆解,直至“子加工”无法被拆解。
程序员必备画图技能,你必须得会_第16张图片

五、ER模型图

5.1 什么是ER模型图

ER模型的英文全称为Entity-relationship model,又称实体-联系模型、实体关系模型或实体联系模式图,是指一类概念数据模型的高层描述所使用的数据模型或模式图。简单来说,ER模型是帮助把现实世界的数据内容映射成模型,然后从模型转化到具体的数据库设计。

5.2 ER模型常见用途

  1. 数据库建模 在数据库设计中,ER模型可以提供不受任何DBMS约束的面向用户的表达方法,因此,ER模型被广泛用作数据建模的一类工具。
  2. 构建现实世界和程序数据世界的桥梁
    ER图可以帮助理解程序的业务关系,在工程设计中,只有先把业务关系搞清楚,才可设计数据库,进行相应的编码工作。
  3. 是描述现实世界关系概念模型的有效方法
    在信息系统设计中,ER模型是表示概念关系的一类模型,在概念结构设计阶段用来描述信息需求和存储在数据库中的信息类型。
    程序员必备画图技能,你必须得会_第17张图片

六、思维导图

6.1 什么是ER模型图

思维导图又叫“心智图”、“脑图”,是一种把抽象概念转为图像化的思考方法。思维导图一般从一个核心主题出发,再连线延展出出与之关联的子级概念或内容,由子级概念再引申出下一个子级,最后形成树状或网状的图结构。
程序员必备画图技能,你必须得会_第18张图片


总结

作为一个研发菜鸟,在阅读大型系统的源码时碰上了很多问题,很多时候并不是语法层面的问题,反而是因为快速迭代开发和系统的庞大性给我梳理系统架构和模块功能带来较大的挑战。通过简单绘制系统的架构图、各模块之间的接口交互和时序图等,我可以更加直观地理解整个系统的运作模式,大概就是所谓的磨刀不误砍柴工。

你可能感兴趣的:(代码管控,uml)