软考高级系统架构设计师知识精要-系统建模与UML设计

系统建模与UML设计

本章聚焦于系统分析与设计的核心工具,包括统一建模语言 (UML (Unified Modeling Language, 统一建模语言)) 的图表与关系、数据流图 (DFD (Data Flow Diagram, 数据流图)) 以及各种先进的系统建模方法论。

1. UML 的四种事物

【考试要点解析】 UML 就是架构师画图用的“世界语”。要画图,先得有“积木”,这就是事物。考试常考怎么分类。结构事物就是静态的零件,像类、接口、构件,它们就在那儿不动;行为事物就是动起来的逻辑,像交互、状态机;分组事物就是包,用来把一堆东西归类;注释事物就是便签条,用来写说明的。

  1. 结构事物(静态部分):类、接口、协作、用例、活动类、构件、节点。
  2. 行为事物(动态部分):

  3. 交互:对象间为达到目的进行的消息交换。

  4. 状态机:对象的状态序列。

  5. 分组事物(组织部分):包 (Package)。包纯粹是概念事物,存在于开发阶段;构件可存在于运行阶段。

  6. 注释事物:模型的解释部分。

2. UML 图分类

【考试要点解析】 UML 2.0 有 14 种图,考试不用全背,但得会分两大类:静态图和动态图。静态图是“拍照片”,看的是结构,比如类图、部署图;动态图是“录像”,看的是过程,比如顺序图、状态图。考试常给你个场景,比如“描述订单从创建到发货的状态变化”,让你选图,那肯定是状态图。

  • 静态图 (结构图):类图、对象图、构件图、部署图、制品图、包图、组合结构图。
  • 动态图 (行为图):用例图、顺序图、通信图 (协作图)、定时图、交互概览图、活动图、状态图。

3. UML 用例图关系

【考试要点解析】 用例图是画给客户看的,讲的是“系统能干啥”。这里面有三个关系最容易晕:包含、扩展、泛化。简单说,包含就是“非你不可”,比如“取款”一定要“验证密码”,这就是包含;扩展就是“锦上添花”,比如“查询余额”时如果余额不足可以“打印通知”,不打印也不影响查询,这就是扩展;泛化就是“子承父业”,比如“支付”是父用例,“微信支付”是子用例。

  • 包含关系 (Include):提取公共行为(抽象用例),基础用例包含抽象用例。
  • 扩展关系 (Extend):处理可选或异常场景,将扩展用例插入基础用例。
  • 泛化关系 (Generalization):子用例继承父用例的结构、行为和关系,是父用例的特殊形式。

4. UML 类图/对象图关系

【考试要点解析】 类图是给程序员看的,讲的是“代码怎么写”。关系有强弱之分:依赖最弱,就是“用到你”;关联稍强,是“认识你”;聚合是“聚在一起”,像大雁和雁群,散了也还是大雁;组合最强,是“长在一起”,像翅膀和鸟,鸟死了翅膀也就废了。泛化和实现就是继承接口那一套。Liskov 替换原则也常在这里考,意思是子类必须能无缝替换父类,不能“坑爹”。

  • 依赖:一个事物变化影响另一个。
  • 泛化 (继承):特殊/一般关系。
  • 关联:对象之间的连接链。
  • 聚合:整体与部分,生命周期不同(弱拥有)。
  • 组合:整体与部分,生命周期相同(强拥有)。
  • 实现:接口与类之间的关系。

继承关系的细分:

  • 取代继承:子类可替换父类 (Liskov 原则),能力通常相同或兼容。
  • 受限继承:子类限制父类功能,能力小于父类。
  • 特化继承:子类继承并添加新特性,能力大于或等于父类 (is-a)。
  • 包含继承:侧重类型包含,不强调添加新内容。

5. 数据流图 (DFD) 元素

【考试要点解析】 DFD 是老古董了,但它是结构化分析的神器。它只关心“数据怎么流”。有四个基本元素:外部实体是数据的源头或终点,比如“用户”或“银行系统”;加工是处理数据的动作,比如“计算利息”;数据存储是存数据的地方,比如“账本”;数据流就是连线。考试常让你找图里少了哪条线,或者问你父图和子图是不是“平衡”的(输入输出要对得上)。

  • 数据流:数据的流向,通常有名词名称。
  • 加工:输入数据流到输出数据流的变换。
  • 数据存储 (文件):暂时存储的数据。
  • 外部实体:系统外的人员或组织。

6. 系统建模方法

【考试要点解析】 这里是讲建模的三大流派。结构化方法就是画 DFD,关注功能;信息工程方法就是画 ER (Entity-Relationship, 实体关系) 图,关注数据库;面向对象方法就是画 UML,关注对象交互。现在大家基本都用面向对象了,但在处理遗留系统或者纯数据系统时,前两种方法还是很管用的。

  1. 结构化建模方法:以过程为中心,产物为 DFD。适合流程稳定的系统。
  2. 信息工程建模方法 (数据库建模):以数据为中心,产物为 ERD。
  3. 面向对象建模方法:将数据和过程集成在对象中,产物为 UML 模型。是目前主流方法。

7. MDA (Model Driven Architecture, 模型驱动架构) 核心模型

【考试要点解析】 MDA 是个很理想化的愿景:写代码太累,不如画图,让图自动生成代码。它把模型分三层:CIM (Computation Independent Model, 计算无关模型) 是最顶层,只讲业务需求,不管技术;PIM (Platform Independent Model, 平台独立模型) 是中间层,讲逻辑设计,但还没定用 Java 还是 C#;PSM (Platform Specific Model, 平台相关模型) 是最底层,确定了技术细节,可以直接生成代码了。现在的低代码平台其实就是这个思路的延续。

  • CIM (计算无关模型):业务需求分析。
  • PIM (平台独立模型):高层抽象,不依赖具体技术。
  • PSM (平台相关模型):特定技术实现 (如 J2EE, .NET)。
  • Code (代码):最终源代码。

8. ADL (Architecture Description Language, 架构描述语言)

【考试要点解析】 ADL 是一种专门用来写架构的“编程语言”。它不写业务逻辑,只写架构结构。它有三要素:构件(砖头)、连接件(水泥)、配置(怎么砌)。虽然咱们平时很少真写 ADL,但考试会问你它包含啥,以及常见的 ADL 名字(如 C2, ACME)。

用于建模软件系统概念体系结构的形式化语言。 三要素:

  1. 构件:计算或存储单元。
  2. 连接件:交互规则。
  3. 架构配置:连接图。

常见 ADL:C2SADL, Wright, ACME, UniCon, Rapide。

9. 基于架构的软件设计 (ABSD)

【考试要点解析】 ABSD (Architecture-Based Software Design, 基于架构的软件设计) 的核心思想是“架构先行”。别急着写代码,也别急着抠细节,先把架构定下来。它认为架构不仅要满足功能,更要满足质量属性(如性能、安全)。它是一个反复迭代的过程,从需求直接推导出架构,再用架构去指导详细设计。

架构驱动,由业务、质量和功能需求组合驱动。 三个基础:功能分解、架构风格选择、软件模板使用。 视图:用例捕获功能需求,特定场景捕获质量需求。

预览时标签不可点

Close

更多

Name cleared

微信扫一扫赞赏作者

Like the AuthorOther Amount

赞赏后展示我的头像

作品

暂无作品

Like the Author

Other Amount

¥

最低赞赏 ¥0

OK

Back

Other Amount

更多

赞赏金额

¥

最低赞赏 ¥0

1

2

3

4

5

6

7

8

9

0

.

二手架构师杂谈 · 目录

二手架构师杂谈

上一篇软考高级系统架构设计师知识精要-软件工程与开发方法下一篇软考高级系统架构设计师知识精要-软件架构设计与评估

Close

更多

搜索「」网络结果

Close

调整当前正文文字大小

更多

100%