引言

在软件工程专业的课程设计、毕业设计乃至实际项目开发中,规范作图是沟通需求、设计架构、指导开发的核心技能。然而,在面对纷繁复杂的 UML 图、流程图、数据流图时,往往感到无从下手,或画出的图不符合标准,导致评审不通过、文档返工。

本文面向软件工程专业的学生、刚入行的开发人员以及需要撰写技术文档的从业者,旨在系统性地梳理软件工程常用图表类型,并提供清晰、可操作的绘制教程。通过本文,你将掌握从需求分析到系统设计阶段最核心的图表绘制方法,让你的文档更专业、沟通更高效。


主要内容

一、需求阶段

需求阶段的核心任务是搞清楚"系统要做什么"。以下两种图是此阶段最常用的工具。

1. 用例图(Use Case Diagram)

用例图描述系统外部参与者可见的系统功能。

绘制规范

  • 参与者(Actor):用人形图标表示,可以是人、外部系统或硬件设备
  • 用例(Use Case):用椭圆表示,名称使用动宾短语(如"提交订单",而非"订单提交")

Tip:
下述示例图用例名称未按此规范作图

  • 关系类型:
    • 关联:参与者和用例之间的连线
    • 泛化:参与者或用例之间的父子关系(空心三角箭头)
    • 包含(include):一个用例必然包含另一个用例的行为
    • 扩展(extend):一个用例在特定条件下扩展另一个用例
      用例图示例
2. 数据流图(Data Flow Diagram,DFD)

数据流图描述系统的数据输入、处理和输出,常用于结构化需求分析。

绘制规范(Yourdon/DeMarco 表示法):

  • 外部实体(External Entity):用矩形表示,是数据的来源或终点
  • 处理(Process):用圆形表示,对输入数据进行加工,产生输出
  • 数据流(Data Flow):带箭头实线,标注数据名称
  • 数据存储(Data Store):用两条平行横线表示,存放数据的位置
    Yourdon/DeMarco(YD)DFD 标准符号示例图
  • 分层建模原则:从顶层上下文图开始,逐层细化到 0 层图和 1 层图
    顶层数据流图示例
    1 层数据流图示例

二、分析阶段

分析阶段将需求转化为更精确的模型,是理解"系统内部如何运作"的关键。

3. 类图(Class Diagram)

类图描述系统的静态结构,展示类、接口及其之间的关系。

绘制规范

  • 类用三层矩形框表示,从上到下依次为类名、属性、方法
  • 可见性:+ 公开、- 私有、# 保护
  • 关系(从弱到强):依赖(虚线箭头)→ 关联(实线,可标多重性)→ 聚合(空心菱形)→ 组合(实心菱形)→ 泛化(空心三角箭头实线)→ 实现(空心三角箭头虚线)
    类图示例
4. 顺序图(Sequence Diagram)

顺序图强调对象间消息交互的时间顺序,用于描述一个用例中多个对象如何协作。

绘制规范

  • 生命线:垂直虚线,表示对象在时间轴上的存在
  • 激活条:生命线上的矩形,表示对象执行操作的时间段
  • 消息类型:同步消息(实心实线箭头)、异步消息(开放实线箭头)、返回消息(虚线箭头)
  • 组合片段:alt(条件分支)、opt(可选)、loop(循环)、par(并行)
    顺序图示例
5. 协作图(Communication Diagram)

协作图展示对象间的组织结构和消息传递,强调整体结构而非时间线。

绘制规范

  • 对象用"对象名:类名"格式的矩形框表示
  • 链(Link)用对象间连线表示
  • 消息流在链旁标注,用编号体现时序(1:1.1:2:
  • 协作图与顺序图是同构的,展示同一场景的两种视角
6. 活动图(Activity Diagram)

活动图是广义的流程图,描述一个过程或操作中的活动序列,强调并发和协作。

绘制规范

  • 动作状态:圆角矩形
  • 初始节点(实心圆)和终节点(实心圆外加圆环)
  • 决策和合并用菱形
  • 分叉(Fork)和结合(Join)用粗实线,表示并发
  • 泳道(Swimlane)纵向分割区域,按角色划分责任
    活动图示例
7. ER 图(实体关系图)

ER 图用于数据库概念设计,描述实体及其之间的关系。

绘制规范

  • 实体(Entity):用矩形表示,名称使用名词单数形式
  • 关系(Relationship):用菱形表示,两侧标注对应实体的基数(1:1、1:N、M:N)
  • 属性(Attribute):用椭圆表示,连接在所属实体上;主键属性加下划线
  • 注意区分实体属性与关系属性的归属
    E-R 图示例

三、设计阶段

设计阶段将分析模型转化为可实现的方案,重点关注架构、状态和内部逻辑。

8. 状态图(Statechart Diagram)

状态图描述单个对象在外部激励下的状态变迁过程,适合建模具有明确状态的生命周期。

绘制规范

  • 状态用圆角矩形表示,分简单状态和组合状态
  • 初始伪状态用实心圆,终态用空心圆内嵌实心圆
  • 转换用带箭头实线,格式为"事件[监护条件]/动作"
  • 入口动作:entry/动作;出口动作:exit/动作
9. 构件图(Component Diagram)

构件图描述软件物理模块(构件)及其之间的依赖关系,用于架构层面的设计。

绘制规范

  • 构件用矩形框带两个小标签表示,代表物理模块
  • 提供接口用小圆圈表示,依赖接口用半圆表示(球-插座)
  • 构件实现接口用实线空心三角箭头,构件间的使用依赖用虚线箭头
10. 结构图(Structure Chart)

结构图描述系统功能的模块层次和调用关系,在结构化设计中与流程图配合使用。

绘制规范

  • 矩形框表示模块,名称放在框内
  • 上层调用下层用带箭头连线表示
  • 数据传递用空心圆箭头,控制信息用实心圆箭头
  • 常见形态:事务型(按事务类型调度下层)和变换型(输入→处理→输出)
11. 程序流程图(Program Flowchart)

流程图描述模块内部的处理逻辑,是各类设计中通用的过程描述工具。

绘制规范

  • 起止框用圆角矩形,标识开始和结束
  • 处理框用矩形,表示赋值、计算等操作
  • 判断框用菱形,表示条件分支,通常有两个出口
  • 连接符用圆形,用于跨页连接
  • 坚持单入口单出口原则

四、部署阶段

部署阶段解决"系统如何运行在真实环境中"的问题。

12. 部署图(Deployment Diagram)

部署图描述软件在硬件节点上的物理分布,连接开发与运维视角。

绘制规范

  • 节点用立方体表示,代表物理或虚拟机器
  • 构件实例放在节点内部
  • 通信关联用节点间实线表示

总结

规范作图是软件工程专业的基本功,从需求阶段的用例图和数据流图,到分析阶段的类图、顺序图、活动图、ER 图,再到设计阶段的构件图、状态图、结构图和流程图,最后到部署阶段的部署图,每种图在对应阶段解决特定问题。
目前主流的绘图工具包括 Draw.io(免费轻量、支持 VS Code 集成)、ProcessOn(在线协作、模板丰富)、PlantUML(代码化作图、Git 友好)、StarUML(专业建模、支持代码生成)以及 Visio(企业级 Office 生态)。
关于 AI 制作图形,当前常见通用AI工具 等可辅助生成 Mermaid / PlantUML 草图模板,在起稿效率上有部分提升,但复杂布局控制、行业标准遵从、大型模型拆分、团队风格统一等方面仍存在局限,直至截稿时间更适合作为起稿助手而非完整交付的工具。


本文 UML 部分参考 GB/T 8567-2006《计算机软件文档编制规范》附录 A。其他图型(数据流图、ER 图、结构图、流程图)为软件工程领域通用实践。

免责声明:本文内容仅供软件工程专业作图学习交流使用。文章中涉及标准规范、示例图和作图工具等信息均来自公开资料,如有侵权行为,请联系作者删除相关内容。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐