系统架构设计(一):UML与软件架构

什么是系统架构设计?

系统架构设计是对系统高层结构和行为的描述,包括:

  • 系统的各个模块(组件)
  • 模块之间的交互方式
  • 数据流动、控制流动
  • 技术选型与部署策略

系统架构常见的风格有:

  • 分层架构(Layered Architecture)
  • 微服务架构(Microservice Architecture)
  • 客户端-服务器(Client-Server)
  • 事件驱动架构(EDA)
  • 面向服务架构(SOA)

UML在系统架构设计中的作用

UML 提供了一整套图形符号来帮助我们表达系统的不同层次结构。主要包括以下几种图:

UML图类型 用途
用例图(Use Case Diagram) 描述系统与用户之间的交互
类图(Class Diagram) 描述系统中的类、接口及其关系
组件图(Component Diagram) 描述系统中各个软件组件及其依赖
部署图(Deployment Diagram) 描述系统的物理部署结构,如服务器、网络节点等
时序图(Sequence Diagram) 描述对象之间按时间顺序的消息交换
活动图(Activity Diagram) 描述业务流程或算法流程
状态图(State Diagram) 描述对象在不同状态之间的变化

系统架构设计流程 + UML 图组合实践

需求分析阶段

  • 主要产出:用例图
  • 目标:了解系统角色、功能、边界

系统架构设计阶段

  • 产出:
    • 分层结构草图(可以使用类图或组件图)
    • 技术选型(框架、数据库、消息队列等)
    • 微服务划分图(组件图 + 部署图)

模块设计阶段

  • 产出:
    • 类图(定义类、继承、接口)
    • 时序图(描述接口或服务之间的调用流程)
    • 状态图(用于处理复杂状态机逻辑)

系统部署阶段

  • 产出:
    • 部署图(展示微服务部署在哪些服务器上、如何通信)

一个完整系统示例

假设我们设计一个视频监控系统,包含如下部分:

  • 前端 Web 页面
  • 后端服务(用户认证、录像管理、实时预览)
  • 媒体服务(RTSP 转 WebRTC)
  • 数据库与存储
  • SRS 流媒体服务器

我们可以这样用 UML 来描述架构:

用例图

  • 用户 -> 登录
  • 用户 -> 预览实时视频
  • 用户 -> 查询回放录像
  • 管理员 -> 设备管理

组件图

  • 用户服务
  • 视频管理服务
  • 媒体网关(转码、拉流)
  • 存储模块
  • SRS 服务(独立组件)

部署图

text 复制代码
[客户端浏览器]
      |
   [Nginx 反向代理]
      |
[后端 API 服务群] --连接--> [数据库]
          |
       调用
          |
     [媒体网关服务] --连接--> [SRS 服务]

时序图

  • 用户点击播放 -> API 服务 -> 媒体网关 -> SRS 拉流 -> 返回 WebRTC 地址 -> 前端播放

总结

设计层级 推荐 UML 图
系统级功能 用例图、组件图
逻辑结构 类图、时序图
流程控制 活动图、状态图
运维部署 部署图
相关推荐
掘金-我是哪吒11 小时前
分布式微服务系统架构第131集:fastapi-python
分布式·python·微服务·系统架构·fastapi
flying robot12 小时前
小结:Android系统架构
android·系统架构
递归尽头是星辰15 小时前
开发者的测试复盘:架构分层测试策略与工具链闭环设计实战
系统架构·集成测试·契约测试·测试复盘·分层测试策略
蓝天居士16 小时前
软考 系统架构设计师系列知识点之杂项集萃(58)
系统架构
晗晗老板儿1 天前
系统架构设计-真题2024下半年总结
系统架构
chennalC#c.h.JA Ptho2 天前
lubuntu 系统详解
linux·经验分享·笔记·系统架构·系统安全
北漂老男孩2 天前
网络协议与系统架构分析实战:工具与方法全解
网络·网络协议·系统架构
愚公搬代码2 天前
【愚公系列】《Manus极简入门》036-物联网系统架构师:“万物互联师”
人工智能·物联网·系统架构·agi·ai agent·智能体·manus
chennalC#c.h.JA Ptho2 天前
Bodhi linux 系统详解
linux·经验分享·笔记·系统架构·系统安全
martian6652 天前
信创生态核心技术栈:数据库与中间件
开发语言·中间件·系统架构·系统安全·创业创新