乐于分享
好东西不私藏

【软件系统架构】系列十一:面向对象技术—UML

【软件系统架构】系列十一:面向对象技术—UML

一、UML(统一建模语言)概述

  • 定义:UML 是一种可视化建模语言,而非程序设计语言,支持从需求分析到系统设计的全过程。

  • 总体结构:由三部分组成:

  • 构造块(Building Blocks):事物(Thing)、关系(Relationship)、图(Diagram)

  • 公共机制(Common Mechanisms):实现特定目标的 UML 公共方法

  • 规则(Rules):规定构造块如何组合

二、UML 构造块

1.事物(Thing)

  • 结构事物:模型的静态部分
  • 类(Class)、接口(Interface)、用例(Use Case)、构件(Component)
  • 行为事物:模型的动态部分
  • 交互(Interaction)、活动(Activity)、状态机(State Machine)
  • 分组事物:组织模型的部分
  • 包(Package)
  • 注释事物:解释模型或约束
  • 文本注释、约束条件

说明:

  • 使用 包(package) 表示 UML 事物的分类。
  • 用 类(class) 表示具体事物。
  • 用 箭头关系 表示事物之间的依赖或说明关系。

2.关系(Relationship)

  • 依赖(Dependency):一个事物的变化可能影响另一个事物
  • 关联(Association):对象之间的结构性连接,可分为:
  • 聚合(Aggregation):整体与部分关系,较松散
  • 组合(Composition):整体与部分关系,更强绑定
  • 泛化(Generalization):继承关系,子类 → 父类
  • 实现(Realization):类实现接口或契约

说明:

  • 关联(Association) 是对象间的结构性连接,聚合/组合 是其特殊类型。
  • 泛化(Generalization) 表示继承关系,实现(Realization) 表示接口实现。
  • 依赖(Dependency) 表示弱耦合影响,可能作用于关联或泛化。

3.图(Diagram)

  • 多个事物及其关系的集合,可分为静态图和动态图。

三、UML 图分类

1. 静态图

类图(Class Diagram):

显示类、接口及其关系

说明:

  • User 是基类,Customer 继承 User(泛化)。
  • Customer 实现了 Payable 接口(实现关系)。
  • Order 与 Product 是组合关系(Composition),整体强绑定。
  • Customer 与 Order 是一般关联(Association)。
  • 最后展示了 Product 对另一个 Product 的依赖示例(虚线箭头)。

构件图(Component Diagram):

显示系统构件及其依赖关系

说明:

  • 使用 component 定义系统构件。
  • 使用箭头表示 依赖关系(哪个构件调用或依赖哪个构件)。
  • 可以通过 package 对整个系统进行分组,增强可读性。

部署图(Deployment Diagram):

显示物理节点和构件的分布

说明:

  • 使用 node 表示 物理节点(服务器、设备等)。
  • 使用 component 表示节点上部署的构件。
  • 箭头表示 节点间的通信或依赖
  • 数据库用 database 表示物理存储节点。

对象图(Object Diagram):

类的实例结构

说明:

  • object 表示 类的实例,包含实例属性值。
  • 对象间的箭头表示实例之间的关系,例如 拥有 或 包含
  • 可以用对象图直观展示某一时刻系统的对象实例状态和关系。

2. 动态图

序列图(Sequence Diagram)

  • 描述对象间按时间顺序的交互
  • 消息类型
  • 同步消息(实心三角箭头,阻塞调用)
  • 异步消息(空心箭头,非阻塞)
  • 返回消息(虚线箭头,从右到左)

说明:

  • 同步消息(->):实心箭头,调用方阻塞等待返回。
  • 异步消息(->> 或 ++):空心箭头,调用方可继续执行,不阻塞。
  • 返回消息(–>):虚线箭头,从被调用对象返回给调用对象。
  • 序列图按垂直时间顺序排列,越往下表示时间越晚。

通信图(Communication Diagram)

  • 强调对象间交互的组织结构

说明:

  • 通信图强调对象之间的 消息传递结构,同时用 编号表示消息顺序
  • 与 序列图不同,通信图更关注 对象之间的关系和交互网络,而不是严格的时间线。
  • 可以用这种图快速展示系统中对象间的消息流动及交互层次。

状态图(State Machine Diagram)

  • 描述对象在不同状态下的行为
  • 包含状态、转换、事件触发器、监护条件

活动图(Activity Diagram)

  • 展示系统活动流和并发流程
  • 特殊符号:
  • 并发分岔/汇合线(水平粗线)
  • 分支、流、监护表达式

说明:

  • start / stop 表示活动图的起点和终点。
  • if (…) then (…) else (…) endif 表示分支,括号内可写 监护条件(guard)
  • fork / fork again / end fork 表示 并发分岔与汇合
  • 每个 :动作; 表示一个活动。

用例图(Use Case Diagram)

  • 描述系统功能及参与者关系

四、UML 5 种视图(4+1视图模型)

1. 逻辑视图(Logical View)

设计模型中类、子系统、包、用例实现的子集

  • 目的:面向用户和设计人员,主要体现系统的功能需求
  • 内容
  • 系统的关键类(Class)、对象(Object)、接口(Interface)
  • 子系统划分、包结构(Package Diagram)
  • 用例实现的映射
  • 常用UML图
  • 类图(Class Diagram)
  • 对象图(Object Diagram)
  • 包图(Package Diagram)
  • 状态图、活动图(描述对象行为)
  • 示例:银行系统中的”账户类”、”客户类”、”交易类”,以及它们之间的继承、关联、聚合关系。

2. 进程视图(Process View)

描述线程与进程的并发与同步

  • 目的:面向系统集成商和开发人员,关注并发、进程间通信、同步机制
  • 内容
  • 线程、进程划分
  • 并发机制、通信机制(消息队列、共享内存)
  • 系统的性能、吞吐量、可伸缩性
  • 常用UML图
  • 活动图(Activity Diagram,带并发分支/同步)
  • 时序图(Sequence Diagram)
  • 通信图(Communication Diagram)
  • 示例:智能门锁系统中,进程 A(指纹识别)、进程 B(网络通信)、进程 C(日志存储)如何并行并通过消息队列同步。

3. 实现视图(Implementation View)

显示物理代码文件和构件

  • 目的:面向程序员,强调代码结构与物理实现
  • 内容
  • 源代码文件、库文件、可执行文件
  • 模块划分(Java 包结构、C++ 命名空间)
  • 版本管理与构建方式
  • 常用UML图
  • 组件图(Component Diagram)
  • 包图(Package Diagram)
  • 示例:智能挂锁系统中,auth-service.jar、mqtt-driver.so、ui-app.apk 构件之间的依赖关系。

4. 部署视图(Deployment View)

显示软件与硬件的映射和分布

  • 目的:面向运维和架构师,描述软件到硬件的映射
  • 内容
  • 硬件节点(服务器、设备、移动端)
  • 软件组件的部署位置
  • 通信协议与网络拓扑
  • 常用UML图
  • 部署图(Deployment Diagram)
  • 示例:智能挂锁系统:
  • ESP32 设备(运行固件)
  • 云端 MQTT Broker(运行在阿里云 ECS)
  • 移动 App(部署在 Android / iOS)

5. 用例视图(Use Case View)

  • 基本需求分析模型
  • 目的:面向用户和需求分析人员,体现系统的功能需求和外部交互
  • 内容
  • 参与者(Actor)
  • 系统的用例(Use Case)
  • 用户与系统的交互场景
  • 常用UML图
  • 用例图(Use Case Diagram)
  • 活动图(Activity Diagram,描述场景流程)
  • 示例:智能挂锁系统:
  • 参与者:用户、管理员、访客
  • 用例:指纹解锁、远程授权、日志查询、一次性密码开锁。

6.4+1 模型关系

(1)关系说明表

用例视图是中心,驱动四大视图,逻辑视图 → 实现视图 → 部署视图 是功能落地的链路,进程视图 → 部署视图 是性能落地的链路。

视图 面向对象 作用 与其他视图的关系
用例视图
用户、需求分析人员
定义系统的功能需求和交互场景,是核心驱动力(+1)
驱动逻辑、进程、实现、部署四个视图
逻辑视图
系统设计师、开发人员
描述系统的类、对象、功能结构
指导 实现视图
进程视图
架构师、性能工程师
描述并发、进程通信、同步
与 部署视图 紧密相关
实现视图
程序员
展示代码结构、组件依赖、版本
部署到 部署视图
部署视图
运维人员
软件与硬件的映射、运行环境
接收 进程视图 和 实现视图 的支撑
(2)UML 4+1 视图模型

说明:

  • 用例视图:定义需求,贯穿始终(+1)。
  • 逻辑视图:功能设计(面向开发)。
  • 进程视图:并发性能(面向架构师)。
  • 实现视图:代码实现(面向程序员)。
  • 部署视图:运行环境(面向运维)。
(3)UML 4+1 视图流程

说明:

  • 用例视图 在需求阶段生成,驱动后续所有视图。
  • 逻辑视图 和 进程视图 属于系统设计阶段,分别解决功能结构与并发性能。
  • 实现视图 对应开发落地,描述代码和构件。
  • 部署视图 对应运维阶段,描述运行环境和部署关系。
本站文章均为手工撰写未经允许谢绝转载:夜雨聆风 » 【软件系统架构】系列十一:面向对象技术—UML

猜你喜欢

  • 暂无文章