CHAPTER · 09 · ARCHITECTURE

系统架构设计基础知识

— 软考重点章节 · 复习笔记 —
单选 8-15 分 含案例题 教程第七章 ⭐⭐⭐⭐⭐

软件架构概念

1.1 软件架构定义

软件架构(Software Architecture)软件体系结构

指系统的一个或多个结构,包括软件的构件、构件的外部可见属性,以及构件之间的相互关系

体系结构设计包含两部分:

软件架构三要素 = 构件 + 外部可见属性 + 相互关系

1.2 软件架构设计与生命周期

阶段核心关注点关键产出 / 技术
需求分析关注问题空间(架构关注解空间)需求模型→架构模型的转换、可追踪性
设计SA 模型描述、设计与分析、SA 设计ADL、多视图、4+1 模型
实现基于 SA 的开发、向实现过渡、测试从 SA 到代码
构件组装支持可复用构件互联失配问题的检测与消除
部署部署阶段软硬件高层视图基于 SA 分析部署方案质量属性
后开发维护、演化、复用动态软件体系结构、体系结构恢复与重建

设计阶段三大要点(必背)

① SA 模型描述
  • ADL:UniCon、Rapide、Darwin、Wright、C2 SADL、Acme、xADL、XYZ/ADL、ABC/ADL
  • 多视图:4+1 模型、Hofmeister 4 视图、CMU-SEI Views and Beyond
  • 视图标准:IEEE 1471-2000、RM-ODP、UML、IBM Zachman
② SA 模型设计与分析方法
③ SA 设计
6 阶段口诀:需求 → 设计 → 实现 → 组装 → 部署 → 后开发

1.3 软件架构的重要性(8 点)

口诀:品质 · 目标 · 计划 · 指导 · 复杂 · 复用 · 维护 · 冲突
#重要性
1架构设计能够满足系统的品质
2使受益人达成一致的目标
3支持计划编制过程
4对系统开发的指导性
5有效管理复杂性
6复用奠定基础
7降低维护费用
8支持冲突分析

基于架构的软件开发方法(ABSD)

2.1 ABSD 方法概述

ABSD(Architecture-Based Software Design)= 基于体系结构的软件设计

ABSD 由构成体系结构的商业、质量和功能需求的组合驱动。三大驱动是高频考点:商业需求 + 质量需求 + 功能需求。

三大设计工具

工具描述对象
视角与视图软件架构
用例(Use Case)功能需求
质量场景(Quality Scenario)质量需求

ABSD 三大基础

  1. 功能的分解
  2. 通过选择体系结构风格实现质量和商业需求
  3. 软件模板的使用
ABSD 是自顶向下、递归细化的、迭代的,每一步都有清晰的定义 → 有助于降低体系结构设计的随意性

2.2 基于体系结构的开发模型(6 步骤)

需求 设计 文档化 复审 实现 演化

① 体系结构需求

需求获取:质量目标 + 系统的商业目标 + 系统开发人员的商业目标

标识构件三步法:

生成类图 对类进行分组 把类打包成构件

架构需求评审重点:

② 体系结构设计(5 步)

  1. 提出软件体系结构模型
  2. 把已标识的构件映射到软件体系结构中
  3. 分析构件之间的相互作用
  4. 产生软件体系结构
  5. 设计评审
体系结构设计是一个迭代过程。若要开发的系统能够从已有的系统中导出大部分,则可以使用已有系统的设计过程。

③ 体系结构文档化 — 主要输出

④ 体系结构复审

⑤ 体系结构实现(4 步)

分析与设计 构件实现 构件组装 系统测试

实现过程以复审后的文档化的体系结构说明书为基础,每个构件必须满足软件体系结构中说明的对其他构件的责任。

⑥ 体系结构演化(7 步)

  1. 需求变化归类
  2. 体系结构演化计划
  3. 构件变动
  4. 更新构件的相互作用
  5. 构件组装与测试
  6. 技术评审
  7. 演化后的体系结构

软件架构风格 重中之重

3.1 架构风格概述

软件体系结构设计的核心目标是重复的体系结构模式(软件复用/重用)。

架构风格 = 描述某一特定应用领域中系统组织方式的惯用模式

体系结构风格定义一个系统家族,即定义一个词汇表和一组约束

词汇表

包含构件连接件

约束

定义构件和连接件的组合

3.2 五大架构风格分类(必背框架)

大类子风格
数据流批处理、管道-过滤器
调用 / 返回主程序/子程序、面向对象、层次型、C/S、B/S
以数据为中心仓库、黑板
虚拟机解释器、规则系统
独立构件进程通信、事件系统
其他C2 风格

3.3 数据流体系架构风格

批处理(Batch Sequential)
  • 每个处理步骤是独立程序
  • 每一步必须在前一步结束后才能开始
  • 数据必须完整,以整体方式传递
管道-过滤器(Pipe and Filter)
  • 系统分为序贯处理步骤
  • 步骤间通过数据流连接
  • 一步的输出 = 另一步的输入
  • 每个步骤都有输入和输出
高频对比:批处理 vs 管道过滤器
维度批处理管道-过滤器
数据传递整体传递流式传递
步骤启动串行(前完后启)可并发
数据完整性必须完整增量处理

3.4 调用 / 返回体系结构风格

① 主程序/子程序

② 面向对象(OO)

③ 层次型

④ 客户端/服务端(C/S)

两层 C/S — 主要组成:数据库服务器 + 客户应用程序 + 网络

✅ 优点
  • 客户应用与服务器构件分别运行在不同的计算机上
❌ 缺点
  • 开发成本高
  • 客户端设计复杂
  • 信息内容和形式单一
  • 不利于推广
  • 软件移植困难
  • 软件维护和升级困难

三层 C/S — 在两层基础上增加应用服务器

⑤ 浏览器/服务器(B/S)

B/S 风格是三层应用结构的实现方式

浏览器 Web 服务器 数据库服务器
B/S 相比 C/S 的不足(高频 5 点):
  1. 动态页面的支持能力弱
  2. 系统拓展能力差
  3. 安全性难以控制
  4. 响应速度不足
  5. 数据交互性不强

3.5 以数据为中心的体系结构风格

① 仓库(Repository)
  • 存储和维护数据的中心场所
  • 中央数据结构一组独立构件组成
② 黑板(Blackboard)
  • 一种问题求解模型
  • 组织:推理步骤、控制状态数据、问题求解
  • 由黑板、知识源、控制模块构件组成
黑板风格典型应用:信号处理领域,如语音识别模式识别

3.6 虚拟机体系结构风格

核心思想:人为构建一个运行环境,可以解析与运行自定义的一些语言 → 增加架构的灵活性

① 解释器(Interpreter)

解释器风格典型应用:专家系统

② 规则系统(Rule-Based System)

四大组成:知识库 + 规则解释器 + 规则/数据选择器 + 工作内存

3.7 独立构件体系结构风格

核心思想:每个构件相对独立,构件之间不直接通信 → 降低耦合度,提升灵活度。
① 进程通信
  • 构件 = 独立的过程
  • 连接件 = 消息传递
② 事件系统(Event-Based)
  • 构件不直接调用过程
  • 而是触发或广播一个或多个事件

3.8 C2 风格

C2 风格通过连接件连接构件或某个构件组,构件与构件之间无连接(必考点)。

软件架构复用

4.1 定义

软件复用是系统化的软件开发过程:开发一组基本的软件构件模块,以覆盖不同的需求/体系结构之间的相似性,提高系统开发的效率、质量和性能

4.2 复用的原因(6 点)

口诀:少工作 · 少时间 · 低成本 · 高生产力 · 高质量 · 好互操作
  1. 减少开发工作
  2. 减少开发时间
  3. 降低开发成本
  4. 提高生产力
  5. 提高产品质量
  6. 更好的互操作性

4.3 复用的对象与形式

可复用资产(10 项):

需求 · 架构设计 · 元素 · 建模分析 · 测试 · 项目规划 · 过程+方法+工具 · 人员 · 样本系统 · 缺陷消除

一般形式:函数、库、面向对象开发中的类、接口、包。

4.4 复用的基本过程(3 步)

构建/获取可复用资产 管理可复用资产 使用可复用资产

特定领域软件体系结构(DSSA)

5.1 DSSA 定义

DSSA(Domain Specific Software Architecture)是在一个特定应用领域中为一组应用提供组织结构参考的标准软件体系结构,即用于某一类特定应用领域的标准软件构件集合

5.2 四大特征

口诀:领普抽复(领域性、普遍性、抽象性、可复用性)
特征含义
领域性限定在特定应用领域
普遍性适用于领域内的所有应用
抽象性抽象出共性的标准结构
可复用性用于复用

5.3 DSSA 三大基本活动

活动内容
领域分析通过分析领域中系统的共性需求,建立领域模型
领域设计设计 DSSA,且需具备对领域需求变化的适应性
领域实现获取可重用信息

5.4 参与人员(4 类)

口诀:专家 · 分析师 · 设计员 · 实现员

5.5 DSSA 建立过程

DSSA 的建立过程是并发的、递归的、反复的螺旋模型(高频考点)。

五个阶段:

  1. 定义领域范围
  2. 定义领域特定元素
  3. 定义领域特定的设计和实现约束
  4. 定义领域模型和体系结构
  5. 产生、搜集可重用的单元

高频考点速查 必背

考点答案要点
软件架构三要素构件、外部可见属性、相互关系
软件架构生命周期需求-设计-实现-组装-部署-后开发
ABSD 三大驱动商业、质量、功能需求
ABSD 三大工具视图、用例、质量场景
ABSD 三大基础功能分解、选择架构风格、软件模板
标识构件三步生成类图 → 类分组 → 打包成构件
架构开发模型 6 步需求-设计-文档化-复审-实现-演化
架构风格定义词汇表(构件+连接件)+ 约束
C2 风格特点构件之间无连接,通过连接件
黑板典型应用信号处理(语音识别、模式识别)
解释器典型应用专家系统
解释器缺点执行效率低
规则系统四组成知识库、规则解释器、规则/数据选择器、工作内存
B/S 三层浏览器、Web 服务器、数据库服务器
三层 C/S 划分表示层、功能层、数据层(瘦客户机)
层次型架构特征仅相邻层间具有层接口
仓库风格组成中央数据结构 + 一组独立构件
事件系统特征不直接调用,触发/广播事件
DSSA 四特征领域性、普遍性、抽象性、可复用性
DSSA 建立模型并发、递归、反复的螺旋模型
DSSA 三大活动领域分析、领域设计、领域实现
DSSA 五阶段范围→元素→约束→模型与架构→搜集
失配问题出现在构件组装阶段
后开发阶段研究方向动态软件体系结构、架构恢复与重建