现代软件工程建模体系的演进与重构

mindmap root((现代软件工程建模体系)) 第一梯队 Mermaid Flowchart SequenceDiagram StateDiagram ERDiagram Git协同 Markdown文档化 AI生成图 C4 Model Context Container Component Code 微服务架构 云原生架构 OpenAPI RESTful API Swagger API First Schema设计 Mock SDK生成 BPMN 工作流 审批流 业务编排 Camunda Flowable 状态机设计 有限状态机FSM 订单状态 Saga 工作流状态 异步状态流转 DDD 限界上下文 聚合根 实体 值对象 领域服务 领域事件 Event-driven MQ Kafka EventBus CQRS Event Sourcing 异步解耦 第二梯队 UML时序图 调用链 RPC流程 微服务交互 Agent调用链 UML状态图 生命周期 状态迁移 系统控制流 ER建模 关系建模 范式 索引 数据约束 数据仓库建模 第三梯队 完整UML体系 类图 包图 部署图 协作图 用例图 CASE工具 RationalRose EA PowerDesigner StarUML 大型类图工程 自动生成 文档驱动开发 瀑布式工程 现代工程核心 云原生 DevOps GitOps 可观测性 Runtime架构 AI辅助开发 Infrastructure as Code Workflow Orchestration

在过去二十多年里,UML(Unified Modeling Language)几乎等同于“软件工程标准语言”。

无论是大学教材、企业开发规范,还是大型系统设计文档,UML 都长期占据核心位置:

  • 类图(Class Diagram)

  • 时序图(Sequence Diagram)

  • 用例图(Use Case)

  • 状态图(State Machine)

  • 活动图(Activity Diagram)

  • 部署图(Deployment Diagram)

曾经的软件工程体系甚至默认:

“没有 UML 的系统,不算真正完成设计。”

但近几年,一个明显趋势正在发生:

  • 大量团队不再维护 UML 文档

  • 架构设计开始全面转向 Mermaid + Markdown

  • OpenAPI 逐渐取代接口类图

  • 云原生体系几乎完全依赖 YAML / IaC

  • 微服务系统更关注 Runtime 与事件流,而不是对象结构

  • AI 工程开始使用 Workflow、Graph、DAG 描述系统行为

于是一个问题开始出现,UML 是否已经被淘汰?

答案其实比“淘汰”复杂得多。

UML 并没有消失,它只是从“核心工程语言”,退化成了“特定场景下的辅助建模工具”。

而真正发生变化的,其实是整个软件工程范式。

一、UML 为什么曾经如此成功?

UML 的成功,本质上属于“面向对象时代”的成功。

在 2000 ~ 2015 年期间,主流企业开发模式仍然是:

  • Java EE

  • .NET

  • C++

  • SOA

  • 单体架构

  • 瀑布式流程

那个时代的软件复杂度主要来自:

  • 类之间的继承关系

  • 模块之间的调用关系

  • 生命周期管理

  • 接口设计

  • 对象协作

因此 UML 非常适合表达:

  • 静态结构

  • 对象关系

  • 模块边界

  • 组件组织

典型开发流程通常是:

  1. 需求分析

  2. UML 建模

  3. 数据库设计

  4. 编码开发

  5. 测试交付

在这种模式下“先建模,再开发”是合理的。

因为系统变化速度相对可控。

二、真正变化的不是 UML,而是软件工程本身

今天很多人误以为:

Mermaid 替代了 UML。

实际上并不是。

真正发生变化的是:软件工程已经从“静态结构工程”转向了“动态系统工程”。

过去的软件复杂度主要来自代码结构

今天的软件复杂度则更多来自系统协同

现代系统真正困难的部分,已经不再是:

  • 类怎么继承

  • 接口怎么实现

  • 模块如何组织

而变成了:

  • 微服务如何协同

  • 数据如何流转

  • 事件如何传播

  • 状态如何演进

  • Runtime 如何治理

  • Workflow 如何编排

  • 云原生如何调度

这也是 UML 开始“失去中心地位”的根本原因。

因为 UML 天然偏向“静态对象建模”

而现代系统更强调“动态运行时协同”

三、为什么 UML 越来越难维护?

1. UML 过于重量级

完整 UML 体系包含大量图形:

  • 类图

  • 用例图

  • 时序图

  • 活动图

  • 部署图

  • 包图

  • 协作图

  • 状态图

  • 通信图

  • 组件图

问题在于:

现实开发里,没有团队能够长期维护这些内容。

尤其是在:

  • 敏捷开发

  • DevOps

  • 高频迭代

  • 微服务拆分

环境下。

最终往往会出现:

代码已经变了

图却还停留在半年前

于是 UML 很容易退化成“交付物文档”

而不是“真实系统描述”

2. UML 强依赖面向对象体系

UML 的核心思想来自:OO(Object-Oriented)

但现代系统越来越:

  • API-first

  • Event-driven

  • Workflow-driven

  • Data-driven

  • Function-driven

今天架构师更关注的是:

  • 服务边界

  • 数据边界

  • 事件流

  • Saga

  • Stream

  • 状态流转

而不是class UserService extends BaseService

这导致 UML 的很多建模方式开始显得“不贴近现实”。

3. 云原生系统无法被 UML 很好表达

现代系统的复杂度已经扩展到:

  • Kubernetes

  • Service Mesh

  • Kafka

  • Redis

  • CDC

  • ETL

  • DAG

  • GPU Scheduling

  • AI Workflow

这些运行时协同关系:

UML 的表达能力其实比较弱。

例如:

今天一个 AI Agent 系统真正复杂的部分可能是:

  • LLM 调度

  • 上下文传播

  • 工具链路

  • 事件反馈

  • 任务状态机

  • Workflow DAG

而不是类之间如何继承

四、现代软件工程到底在使用什么?

这里必须明确:

现代软件工程并不是“没有建模”。

而是建模方式发生了彻底变化。

五、Mermaid:现代团队的轻量化建模标准

如今大量团队开始使用 Mermaid。

原因很现实:

  • Markdown 原生支持

  • Git 友好

  • 文本化

  • AI 易生成

  • 易于维护

  • 与文档系统天然融合

例如:

graph TD

A[Client]
--> B[API Gateway]

B --> C[User Service]
B --> D[Order Service]

相比传统 UML 工具:

Mermaid 最大优势并不是“图更好”。

而是:它更适合现代协作体系。

尤其是在 GitHub、GitLab、Notion、Obsidian、AI 生成文档 等场景中。

六、C4 Model:现代架构设计真正的核心

传统 UML 关注:

而现代架构更关注:系统边界

于是 C4 Model 开始崛起。

它分为四层:

  • Context

  • Container

  • Component

  • Code

相比 UML:

C4 最大变化是:从“对象视角”转向“系统视角”

这对于 微服务、云原生、分布式系统来说非常重要。

如今很多大型系统设计实际上已经形成 C4 + Mermaid 的组合体系。

七、OpenAPI 为什么会彻底替代接口 UML?

过去接口通常通过 类图、时序图、文档 表达。

现在大量团队直接使用 OpenAPI:

paths:
  /users:
    get:

因为现代工程需要的已经不是“可阅读文档”,而是“可执行文档”

OpenAPI 的优势在于它不仅描述接口,还能:

  • 自动生成文档

  • 自动生成 SDK

  • 自动 Mock

  • 自动校验

  • 自动测试

这意味着:文档本身已经成为系统的一部分。

八、现代系统真正重要的能力是什么?

很多开发者仍然停留在代码结构设计阶段。

但现代系统更重要的是:

1. 系统边界

例如:

  • 用户域

  • 订单域

  • 支付域

这实际上对应 DDD(领域驱动设计)中的 Bounded Context

2. 数据流

现代系统本质上已经是:数据流系统

例如:

  • 请求流

  • 事件流

  • 缓存流

  • 日志流

  • 数据同步流

3. 状态流转

复杂系统的核心复杂度:

其实来自:状态管理

例如:

Pending
→ Running
→ Retry
→ Failed
→ Rollback
→ Success

这也是为什么:

状态机设计越来越重要。

4. Event-driven

现代系统正在从同步调用转向事件传播:

Kafka、MQ、Stream、Saga 的重要性不断提高。

5. Runtime 思维

过去关注:代码如何组织

现在关注:系统如何运行

这也是 Observability(可观测性)越来越重要的根本原因。

九、现代工程体系应该如何学习?

基于当前行业趋势,一个更合理的学习路线应该是:

第一阶段:轻量化表达能力

建议优先学习:

  • Mermaid

  • ER 建模

  • 基础时序图

目标:学会表达系统。

第二阶段:现代架构能力

重点学习:

  • OpenAPI

  • C4 Model

  • 微服务边界设计

目标:学会设计系统。

第三阶段:高级业务抽象能力

重点学习:

  • 状态机

  • DDD

  • Event-driven

目标:学会抽象复杂业务。

第四阶段:企业级协同体系

长期学习:

  • BPMN

  • Saga

  • CQRS

  • Event Sourcing

  • Workflow Orchestration

目标:掌握复杂系统协同。

十、UML 真的还有价值吗?

有。但价值已经集中在少数领域,例如:

  • 时序交互

  • 状态生命周期

  • DDD 领域建模

  • 复杂业务状态表达

特别是:UML Sequence Diagram

实际上今天仍然非常有价值。

只是很多团队已经不用传统 UML 工具,而改用 Mermaid SequenceDiagram 来表达。

十一、AI 时代会进一步削弱 UML

AI 更适合理解:

  • YAML

  • Mermaid

  • JSON Schema

  • OpenAPI

  • Workflow

  • DAG

  • Runtime Trace

因为这些内容更接近真实系统。

未来的软件工程会越来越强调可机器理解的工程描述,而不是传统静态文档。

十二、结语

UML 并没有死亡。

它只是失去了“软件工程中心”的地位。

真正改变世界的,并不是某一个替代工具。

而是整个软件工程已经从“静态结构设计”进入“动态系统协同”时代。

未来真正重要的能力,也不再是类如何设计,而是:

  • 系统如何协同

  • 状态如何流转

  • 事件如何传播

  • 数据如何演进

  • 服务如何自治

这才是现代软件工程真正的核心。


现代软件工程建模体系的演进与重构
https://blog.cikaros.cn/archives/xian-dai-ruan-jian-gong-cheng-jian-mo-ti-xi-de-yan-jin-yu-chong-gou
作者
Cikaros
发布于
2026年05月07日
许可协议