一张好图胜过千言万语:软件工程专业作图分享
引言
在软件工程专业的课程设计、毕业设计乃至实际项目开发中,规范作图是沟通需求、设计架构、指导开发的核心技能。然而,在面对纷繁复杂的 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):用两条平行横线表示,存放数据的位置

- 分层建模原则:从顶层上下文图开始,逐层细化到 0 层图和 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):用椭圆表示,连接在所属实体上;主键属性加下划线
- 注意区分实体属性与关系属性的归属

三、设计阶段
设计阶段将分析模型转化为可实现的方案,重点关注架构、状态和内部逻辑。
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 图、结构图、流程图)为软件工程领域通用实践。
免责声明:本文内容仅供软件工程专业作图学习交流使用。文章中涉及标准规范、示例图和作图工具等信息均来自公开资料,如有侵权行为,请联系作者删除相关内容。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)