程序员绘图指南

文章目录

  • 前言
  • 一、需求分析阶段
    • 1.结构化分析方法
      • 1.1 DFD数据流图
    • 2.面向对象分析方法
      • 2.1 UML-类图
      • 2.2 UML-状态图
      • 2.3 UML-用况图
      • 2.4 UML-时序图
    • 3.其他方法
      • 3.1 思维导图
      • 3.2 泳道图
      • 3.3 IT界常用-原型图
      • 3.4 数据库ER图
  • 二、总体设计阶段
    • 1.结构化设计
      • 1.1 MSD模块结构图
      • 1.2 层次图(软件结构图)
    • 2.面向对象设计
      • 2.1 UML-类图
      • 2.2 UML-状态图
      • 2.3 UML-时序图
      • 2.4 UML-用况图
    • 3.其他总体设计
      • 3.1 个人推荐-C4图
  • 三、详细设计阶段
    • 1.结构化设计
      • 1.1 程序流程图
    • 2.面向对象设计
      • 2.1 UML-类图
      • 2.2 UML-状态图
      • 2.3 UML-时序图
      • 2.4 UML-用况图
    • 3.其他详细设计
  • 总结

前言

程序员在软件开发中, 不可避免地要绘图, 例如, 经常可以看到软件系统, 会绘制软件架构图.
然而, 在传统软件工程领域, 其实是没有软件架构图的!
传统的软件工程领域, 一般有2种方式来分析设计:

  1. 结构化方式(Structure Analysis,SA)
  2. 面向对象方式(Object-Oriented Method,OOA)

有的图难以匹配规范, 在传统软件工程中, 就划分为示意图.
不过, 大佬们在传统软件工程领域范围外, 也制定了C4图等新的软件图规范.
下面系统化整理常用的绘图.


一、需求分析阶段

1.结构化分析方法

结构化分析方法的关注点是: 信息的流动,
它认为一切信息系统都是由信息流构成的, 信息流有起点(数据源), 有终点(数据潭), 有中间的加工.

需求分析阶段使用: 数据流图(Data Flow Diagram)

1.1 DFD数据流图

DFD用于描述数据变化, 是结构化方式的核心图.
基本符号有4种, 如下:

程序员绘图指南

第一级的DFD称为0层DFD,
继续分解, 得到1层DFD,
同时还要提供数据字典(数据字典是对数据概念的解释)。

完整示例:
0层DFD:

程序员绘图指南

数据字典如下,“{}”表示多个,“|”表示或者:
存折=户名+所号+帐号+开户日+性质+(印密)+1{存取行}50
户名=2{字母}24
所号=“001”…“999” 注:储蓄所编码,规定三位数字
帐号=“00000001”…“99999999” 注:帐号规定由八位数字组成
开户日=年+月+日
性质=“1”…“6” 注:“1“表示普通用户,“5”表示工资户等
印密=“0”
存取行=日期+(摘要)+支出+存入+余额+操作+复核
日期=年+月+日
年=“0000”…“9999”
月=“01”…“12”
日=“01“…“31”
摘要=1{字母}4 注:表明是存还是取
支出=金额
存入=金额
金额=0.01…999999.99
操作=“00001”…“99999” 注:操作、复核是银行职员代码
复合=“00001”…“99999”

2.面向对象分析方法

UML是面向对象方式的经典模型表达工具.

UML图分为静态的和动态的,
静态图, 表达了结构, 有: 类图, 构件图, 部署图, 对象图, 包图, 组合结构图
动态图, 表达了行为, 有: 用况图, 活动图, 状态图, 顺序图, 通信图, 交互概观图, 定时图

本文只介绍实际常用的几个.

2.1 UML-类图

类图(Class diagram)是可视化地表达系统静态结构模型的工具, 包含类、接口、关联、泛化和依赖等关系。
类图是面向对象方式的核心图.
例如,在设计模式中,类图是常见的表达方式。

程序员绘图指南
  • 实现(realization)
    常见的是接口的实现, 示例:

    程序员绘图指南
    嘴组合于头, 不能没有头的概念而单独存在, 部分指向整体.
  • 聚合(aggregation)
    聚合是松散聚合, 表达了整体/部分的关系, 但是部分可脱离整体而单独存在. 示例:

    程序员绘图指南
    1. 依赖(dependency)
      依赖表示了使用的关系, 如果A指向B, 说明A在局部使用了B,
      一般是局部变量、方法参数和静态方法这样的局部引用。示例:
      程序员绘图指南

      2.3 UML-用况图

      用况图(use case diagram), 有时也被称为用例图, 是一种表达系统功能模型的图形化工具.
      用况图是各个开发阶段都使用的UML图形.
      用况图包含6个元素:
      1.主题(subject)
      主题是由一组用况锁描述的一个类, 通常是一个系统或者子系统, 示例:

      程序员绘图指南

      3.参与者(actor)
      参与者表达了一组高内聚的角色, 一般就是系统用户, 示例:

      程序员绘图指南

      5.泛化(generalization)
      在用况图中, 用况之间有三种关系: 泛化, 扩展, 包含.
      泛化类似于继承, 例如, 个人客户和企业客户泛化于客户, 示例:

      程序员绘图指南

      2.4 UML-时序图

      时序图(Sequence Diagram), 也被称为顺序图, 是一种交互图,
      由一组对象以及按照时间顺序组织的对象直接的关系组成, 其中还包含对象之间发送的消息.

      程序员绘图指南

      3.2 泳道图

      参照百度经验, 泳道图(Swimlane Diagram),也叫跨职能流程图。旨在分析和展示各个部门在同一任务流程上的不同进程,明确流程环节所属的阶段、流程环节负责人、组织机构或部门。泳道图的名称由来,是流程图中对职能部门的划分像游泳池泳道相类似比拟而来。

      程序员绘图指南

      3.4 数据库ER图

      E-R图(Entity Relationship Diagram),提供了表示实体类型、属性和联系的方法,用来描述现实世界的概念模型。
      它也是结构化方式常用的图, 面向对象也可以使用它.
      本文特指数据库的ER图, 因为一般只有数据库用ER图.

      数据库ER图中有3个关系:
      1对1(1:1)
      1对多(1:N)
      多对多(M:N)

      实体的表示:方形
      属性的表示:椭圆
      联系的表示:菱形

      示例:

      程序员绘图指南
      在初始的模块结构图后, 可以对”变换数据”(即c变换成d)部分, 继续模块分解, 示例:
      程序员绘图指南

      2.面向对象设计

      2.1 UML-类图

      参照需求分析阶段, 是各个阶段图的细化

      2.2 UML-状态图

      参照需求分析阶段, 是各个阶段图的细化

      2.3 UML-时序图

      参照需求分析阶段, 是各个阶段图的细化

      2.4 UML-用况图

      参照需求分析阶段, 是各个阶段图的细化

      3.其他总体设计

      3.1 个人推荐-C4图

      C4模型是个理解门槛很低的可视化架构设计模型, 对软件从业者很简洁友好, 这也是我个人推荐的主要理由.
      C4是指System Context(系统上下文), Container(容器), Component(组件), Code(代码).
      假设从从高空俯瞰软件系统, 系统会从System Context逐渐细化到Code.

      外部系统使用灰色背景, 系统本身使用蓝色背景.
      注意, C4图中的箭头, 一般表示的是调用, 而不是数据流向

      1. System Context(系统上下文)
        描述角色和各个系统的关系.

        程序员绘图指南
      2. Component(组件)
        容器由组件构成, 有工具组件, 共享组件等.

        程序员绘图指南

      三、详细设计阶段

      1.结构化设计

      详细设计阶段有多种图, 例如: 程序流程图, 盒图(N-S图), PAD图等, 实际很少见到用盒图和PAD图的.

      详细设计阶段使用: 程序流程图

      1.1 程序流程图

      程序流程图是一种历史悠久且使用广泛的工具, 主要优点是对控制流程的描绘很直观, 便于初学者掌握.
      有多直观呢, 掌握以下3个图形, 一般就够用了:

      程序员绘图指南

      2.面向对象设计

      2.1 UML-类图

      参照需求分析阶段, 是各个阶段图的细化

      2.2 UML-状态图

      参照需求分析阶段, 是各个阶段图的细化

      2.3 UML-时序图

      参照需求分析阶段, 是各个阶段图的细化

      2.4 UML-用况图

      参照需求分析阶段, 是各个阶段图的细化

      3.其他详细设计


      总结

      结构化和面向对象的区别:
      结构化:任何模块都可以控制数据,随着软件规模增大,软件复杂度难以控制,偏向于函数式编程的思想
      面向对象:用对象控制数据,最终控制软件复杂度

      1. 结构化开发流程的各个阶段图
      需求分析:
      功能模型 结构化方式的核心-DFD (0层和1层等+数据字典)
      数据模型-ER图
      行为模型-推荐使用UML状态图

      总体设计:
      层次图(不关心模块间的关系,即软件结构图,常用它)
      模块结构图(关心模块间的关系)

      详细设计:
      程序流程图

      2. 面向对象开发流程的各个阶段图
      需求分析:
      功能模型-用例图
      数据模型 面向对象方式的核心-类图
      行为模型-时序图

      总体设计:
      UML的总体设计,是对类图等图的不断细化

      详细设计:
      UML的详细设计,是对类图等图的不断细化

      来源:lic721

      声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

  • 上一篇 2022年9月12日
    下一篇 2022年9月12日

    相关推荐