de_DEen_USfa_IRfr_FRhi_INjapl_PLpt_PTru_RUvizh_CNzh_TW

1. 什么是模型?

模型是一种 从特定视角对系统的完整描述 并作为 现实的简化表示。你构建模型是因为复杂的系统无法被完全理解。

建模的四个核心目标:

  1. 可视化 一个系统原本应有的样子。

  2. 指定 系统的结构或行为。

  3. 提供一个模板 以指导系统构建。

  4. 记录 设计决策。

建模的四个原则

  • 你选择的模型会直接影响问题的解决方式。

  • 每个模型都可以以不同精度来表达。

  • 最有效的模型始终与现实紧密相连。

  • 单一模型不足以胜任;复杂系统需要多种视角。

什么是UML?

 统一建模语言(UML) 是一种由 对象管理组(OMG)管理的标准化图形语言。它明确地 不是一种方法论或流程,而是一种技术性和图形化的规范,用于:

“可视化、规范、构建并记录软件密集型系统的各种构件。”

UML 为概念元素(业务流程、系统功能)和具体实现(代码语句、数据库模式、可重用组件)提供了一种通用的蓝图格式。

Foundations of Modeling & UML

UML 的四大支柱

目的 描述
可视化 确保所有利益相关者使用相同的语言。明确的模型可以消除沟通错误,并揭示在没有建模的情况下无法看到的系统方面。
规范 创建精确、无歧义且完整的系统定义。
构建 可直接映射到编程语言(Java、C++、VB)、关系数据库管理系统表或对象数据库管理系统存储。支持正向工程(模型 → 代码)以及逆向工程(代码 → 模型)。
文档化 记录系统架构、需求、测试计划、项目进度安排和发布管理。

2. UML 图表生态系统

UML 2.2 定义了14 种图表类型,分为两大类:

  1. 结构模型(静态架构)

  2. 行为与交互模型(动态过程)

不同的图表服务于不同的利益相关者视角:

  • 用例视图:用户端功能

  • 逻辑视图:分析人员与设计师(系统结构)

  • 过程视图: 软件管理(性能、可扩展性、吞吐量)

  • 实现视图: 程序员(具体组件)

  • 部署视图: 系统集成商(拓扑结构、安装、通信)


3. 核心UML图解

🔹 用例图

  • 目的: 描述系统的预期功能及其环境。作为客户与开发人员之间的契约。

  • 组件: 参与者、用例及其关系。

  • 支持性图示: 活动图(用例内的流程)、顺序图(对象协作以实现用例)。

🔹 活动图

  • 目的: 可视化流程或用例内事件的逐步流程。

  • 关键元素:

    • 动作:工作流中的一个独立步骤。

    • 流程:活动的顺序。

    • 决策:根据守卫条件分割流程[条件].

    • 分叉:开始并发线程。

    • 合并:结束并发线程(同步)。

  • 示例:课程注册流程,包含检查、冲突解决和并发时间表更新。

🔹 时序图

  • 目的:展示对象如何在时间内交互以实现用例。

  • 关键元素:

    • 生命线:垂直线,表示对象在时间上的存在。

    • 对象/类:交互中的参与者。

    • 消息:对象之间交换的数据或方法调用。

    • 执行出现:细长矩形,表示对象正在积极处理的时刻。

    • 组合片段opt(可选执行)(可选执行),loop(重复执行)(重复执行),ref(引用另一个交互)(引用另一个交互)。

🔹 通信图

  • 目的:时序图的替代方案。强调对象之间的结构关系,而非时间顺序。

  • 关键元素:对象通过链接连接在一起,编号的消息表示沿链接的交互顺序。

🔹 组件图

  • 目的:显示软件组件级别的运行时结构。

  • 关键元素:隐藏在外部接口之后的模块化系统部分。通常包括类以显示实现关系。

🔹 部署图

  • 目的:将软件构件映射到物理硬件。

  • 关键元素:

    • 节点:表示物理机器或执行环境。

    • 构件:表示物理文件或可部署单元。

    • 拥有元素:显示嵌套或包含关系。


4. 掌握类图与关系

类图描述了 静态结构 的系统。它们是数据规范(例如,INSPIRE)的基础,并且不显示时间信息。 显示时间信息。

类的结构

分隔区 描述
名称 类的标识符(例如, CadastralParcel)。通常包括如 «FeatureType».
属性 具有数据类型的命名属性(例如:- 地址 : 字符- 树龄 : 整数)。支持的类型:整数、长整数、双精度、字符、日期、布尔值、字符串、几何类型等。
操作 类的行为/方法。格式:+ 操作名称(输入类型) : 返回类型.

关系类型

关系 符号 含义
关联 ─────── 类之间的通用链接。包括角色名称、导航箭头和基数(1..*0..*1..2,等)。
泛化 ─────▷ 继承。子类(源)继承父类(目标)的所有特性。
聚合 ◇───── “部分-整体”关系。部分可以独立存在整体的一部分。(空菱形)
组合 ◆───── 强烈的“部分-整体”关系。部分的存在完全依赖于整体。(实心菱形)

来自培训材料的示例:

  • 人员 → 伐木工(泛化:伐木工继承姓名性别)

  • 森林 ◇─ 树木(聚合:树木可以独立于特定森林存在)

  • 伐木工 ◆─ 员工(组合:在此上下文中,员工无法独立于伐木工实体存在)


5. 实际应用:INSPIRE地籍建模

培训材料使用了INSPIRE地籍数据规范来展示现实世界中的UML应用。

练习1:建模一个核心类

任务:创建地籍地块类。
解决方案结构:

«要素类型» 地籍地块
- 地址:字符
- APN(地块编号):字符
- 边界:GM_Surface
- 中心点:GM_Point
- 标签:字符
- 国家地籍参考:字符串
- 面积值:双精度(可选)
- 参考点:GM_Point(可选)

注意:存在多种有效的解决方案。属性应反映常见的现实世界特征。

练习2:建模关系

任务:连接地籍地块地籍边界,以及行政区域.
关键建模决策:

  • 地籍地块 ──── 地籍边界关联/组合(边界定义地块;通常为1..11..*的基数)。角色:+是边界 / +拥有边界.

  • 地籍地块 ◇── 行政区域聚合/关联。该区域的存在并不依赖于于地块。地块属于多个层级的区域(1..*0..*).

  • 经验教训:根据生命周期依赖关系和业务规则选择关系类型。图表应反映现实情况,而非强加人为约束。


6. 有效UML建模的最佳实践

  1. 战略性地使用图表:图表用于展现特定视角。没有一个复杂系统能仅通过单一图表完全理解。

  2. 在不同图表中复用元素:一个类可能出现在类图、状态机、顺序图和部署视图中,每种图表突出展示其不同方面。

  3. 根据受众匹配精确度:根据查看者是最终用户、开发人员、系统集成人员还是项目经理,调整图表的复杂程度。

  4. 与现实进行验证:持续验证模型元素、关系和基数是否真实反映系统行为和领域规则。

  5. 利用工具支持:使用符合UML标准的工具(例如Sparx Systems)进行正向/逆向工程、一致性检查和代码生成。


结论

UML是一种强大且标准化的语言,用于交流、设计和记录软件及数据密集型系统。通过掌握核心图表(尤其是类图、顺序图、活动图和用例图)并理解关系语义(关联、泛化、聚合、组合),从业者能够创建精确且与现实一致的蓝图,弥合概念需求与技术实现之间的差距。