09-软件架构概念

09-软件架构概念(基于第9小时)

软考-系统架构设计师 | 第3篇 架构设计高级知识 出题形式:单项选择题 + 下午案例分析题 分值占比:约 3-5 分(选择),案例题常涉及


0. 考点分析

本小时是软考系统架构设计师考试最核心、最常考的基础章节。主要内容涵盖:

  • 软件架构定义与重要性
  • 软件架构设计与生命周期
  • 基于架构的软件开发方法(ABSD / ABSDM)
  • 软件架构风格(核心重点)
  • 软件架构复用
  • 特定领域软件架构(DSSA)

考试特点

  • 选择题必考(架构风格、ADL、视图模型等概念)
  • 案例分析题高频考点(架构风格选择、复用策略)
  • 论文题素材来源(ABSDM 六过程、风格选择)

1. 核心知识点

1.1 软件架构定义

  • 定义:系统的一个或多个结构,包括构件(程序模块/类/中间件)、构件的外部可见属性及其相互关系
  • 架构设计包括:数据库设计 + 软件结构设计
  • 关注点:通过多种视图全面描述

1.2 软件架构与生命周期

阶段作用和意义
需求分析阶段有利于各阶段参与者的交流,易于维护可追踪性
设计阶段关注的最早和最多的阶段
实现阶段有效实现从架构设计向实现的转换
构件组装阶段可复用构件组装提高实现效率
部署阶段组织和展示部署软硬件架构,评估部署方案
后开发阶段主要围绕维护、演化、复用

设计阶段重点

  • 组成 SA 模型的基本概念(构件和连接子建模)
  • 体系结构描述语言 ADL:Unicon、Rapide、Darwin、Wright、C2SADL、Acme、XADLOL、XYZ/ADL、ABC/ADL
  • 多视图模型:4+1 模型、Hofmesiter 的 4 视图模型、CMU-Sei 的 Views and Beyond 模型
  • 视图标准:IEEE 1471-2000、RM-ODP、UML、IBM Zachman

部署阶段两大作用

  1. 提供高层体系结构视图描述部署阶段的软硬件模型
  2. 基于架构模型分析部署方案的质量属性

后开发阶段研究方向

  • 动态软件体系结构
  • 体系结构恢复与重建(手工重建、工具支持、查询语言、数据挖掘)

1.3 软件架构重要性(8 大作用)

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

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

  • 全称:Architecture-Based Software Design
  • 驱动:构成体系结构的商业、质量和功能需求的组合驱动
  • 三大基础
    • 功能的分解
    • 通过选择体系结构风格来实现质量和商业需求
    • 软件模板的使用
  • 特点:自顶向下、递归细化、迭代每步定义清晰,降低随意性

1.5 ABSDM 开发模型(六子过程)

1
体系结构需求 → 体系结构设计 → 体系结构文档化 → 体系结构复审 → 体系结构实现 → 体系结构演化

各子过程要点

子过程关键活动
体系结构需求需求获取(来自质量目标/商业目标/开发人员商业目标)+ 标识构件(生成类图→分组→打包)
体系结构设计提模型→映射构件→分析相互作用→设计评审(必须有外部人员)
体系结构文档化输出:体系结构规格说明 + 测试质量设计说明书
体系结构复审外部人员(用户代表、领域专家)参与,标识风险,可搭最小化系统评估
体系结构实现分析与设计→构件实现→构件组装→系统测试
体系结构演化需求变化归类→演化计划→构件变动→更新相互作用→组装测试→技术评审→演化后体系结构

1.6 软件架构风格(⭐⭐⭐ 核心重点)

风格定义要素

  • 词汇表:包含构件和连接件
  • 约束:定义构件和连接件的组合方式

数据流风格

风格特点
批处理每个处理步骤是独立程序,必须前一步结束后才能开始,数据以整体方式传递
管道-过滤器系统分为序贯处理步骤,步骤间通过数据流连接,前一步输出是后一步输入

调用/返回风格

风格特点
主程序/子程序单线程控制,构件即主程序和子程序
面向对象构件是对象(抽象数据类型的实例)
层次型每层为上层服务并作为下层接口,仅相邻层间具有层接口
二层 C/S客户应用程序 + 数据库服务器 + 网络;缺点:开发成本高、移植困难、维护升级难
三层 C/S表示层 + 功能层 + 数据层(瘦客户端)
B/S浏览器 + Web 服务器 + 数据库服务器(三层应用结构实现)

B/S 相对 C/S 的不足:动态页面支持弱、扩展能力差、安全难控、响应速度不足、数据交互性不强

以数据为中心风格

风格特点
仓库中央数据结构(说明当前数据状态)+ 一组独立构件(对中央数据操作)
黑板问题求解模型,组织推理步骤、控制状态数据和问题求解知识;典型应用:信号处理(语音识别、模式识别)

虚拟机风格

风格特点
解释器构建虚拟机弥合程序语义与硬件语义差异;缺点是执行效率较低;典型:专家系统
规则系统知识库 + 规则解释器 + 规则/数据选择器 + 工作内存

独立构件风格

  • 进程通信:构件是独立过程,连接件是消息传递
  • 事件系统:构件不直接调用过程,而是触发或广播一个或多个事件

C2 风格

  • 通过连接件连接构件或构件组
  • 构件与构件之间无直接连接

1.7 软件架构复用

维度要点
复用类型机会复用(开发中发现可复用就复用) / 系统复用(开发前规划决定复用)
复用原因减少开发工作/时间、降低成本、提高生产力、提高产品质量、更好互操作性
可复用资产需求、架构设计、元素、建模分析、测试、项目规划、过程+方法+工具、人员、样本系统、缺陷消除
复用形式函数复用、库复用、面向对象中的类/接口/包复用
复用基本过程构建/获取可复用资产→管理可复用资产→使用可复用资产

1.8 特定领域软件架构(DSSA)

维度要点
定义特定应用领域中为一组应用提供组织结构参考的标准软件体系结构
特征领域性、普遍性、抽象性、可复用性
三大基本活动领域分析、领域设计、领域实现
参与人员领域专家、领域分析师、领域设计人员、领域实现人员
三层系统模型① 领域开发环境 ② 领域特定应用开发环境(应用工程师在此工作) ③ 应用执行环境
建立过程(5 阶段)① 定义领域范围 ② 定义领域特定元素 ③ 定义领域特定设计和实现约束 ④ 定义领域模型和体系结构 ⑤ 产生、搜集可重用的单元

2. 关键概念速查

概念定义/说明常见考点
软件架构构件 + 外部可见属性 + 相互关系概念辨析
ABSD基于架构的软件设计方法方法论三基础
ABSDMABSD 的六子过程开发模型六过程名称与顺序
架构风格描述特定领域中系统组织方式的惯用模式(词汇表 + 约束风格三要素(约束
批处理数据必须整体传递,串行无并发与管道-过滤器区别
管道-过滤器数据流式,步骤间通过数据流连接Unix Shell 是经典例子
二层 C/S客户应用 + 数据库服务器缺点:维护升级难
三层 C/S表示层 + 功能层 + 数据层瘦客户端
B/S浏览器 + Web 服务器 + 数据库相对 C/S 的不足
仓库风格中央数据 + 独立构件数据为中心
黑板风格知识源 + 黑板 + 控制信号处理应用
解释器风格虚拟机,执行效率低专家系统
规则系统风格知识库 + 规则解释器 + 工作内存包含要素
事件系统风格触发或广播事件,不直接调用与调用-返回区别
C2 风格通过连接件连接,构件间无直接连接关键特征
ADL体系结构描述语言,关注构件间互联机制(连接子)与建模语言区别
4+1 视图多视图模型代表视图名称
DSSA特定领域软件架构三大活动、特征、参与人员
机会复用开发中发现可复用就复用vs 系统复用
体系结构恢复手工/工具/查询语言/数据挖掘四种方法

3. 典型例题

例题 1(架构风格定义)

题目:软件架构风格是描述某一特定应用领域中系统组织方式的惯用模式。架构风格定义了一类架构所共有的特征,主要包括架构定义、架构词汇表和架构( )。

  • A. 描述
  • B. 组织
  • C. 约束
  • D. 接口

答案:C

解析:软件架构风格三要素:架构定义、架构词汇表、架构约束。约束定义构件和连接件的组合方式。


例题 2(软件架构作用)

题目:以下叙述中,( )不是软件架构的主要作用。

  • A. 在设计变更相对容易的阶段,考虑系统结构的可选方案
  • B. 便于技术人员与非技术人员就软件设计进行交互
  • C. 展现软件的结构、属性与内部交互关系
  • D. 表达系统是否满足用户的功能性需求

答案:D

解析:软件架构与用户的功能性需求没有直接的对应关系。功能性需求由需求分析决定,架构关注质量属性和非功能特性。


例题 3(DSSA 三层模型)

题目:DSSA 通常是一个具有三个层次的系统模型,包括(1)环境、领域特定应用开发环境和应用执行环境,其中(2)主要在领域特定应用开发环境中工作。

(1)A. 领域需求 B. 领域开发 C. 领域执行 D. 领域应用 (2)A. 操作员 B. 领域架构师 C. 应用工程师 D. 程序员

答案:B(领域开发环境)、C(应用工程师)

解析:DSSA 三层为:① 领域开发环境 ② 领域特定应用开发环境(应用工程师在此工作) ③ 应用执行环境。


例题 4(ABSDM 过程)

题目:在 ABSDM 模型中,把整个基于体系结构的软件开发过程划分为六个子过程,正确的顺序是:

  • A. 需求→设计→实现→文档化→复审→演化
  • B. 需求→设计→文档化→复审→实现→演化
  • C. 设计→需求→文档化→复审→实现→演化
  • D. 需求→设计→复审→文档化→实现→演化

答案:B

解析:ABSDM 六过程顺序:需求→设计→文档化→复审→实现→演化。复审必须在文档化之后、实现之前。

4. 高频考点

4.1 必须记住的核心要点

  1. 架构风格三要素:架构定义、词汇表、约束(必考)
  2. ABSDM 六过程顺序:需求→设计→文档化→复审→实现→演化(必考)
  3. DSSA 三层模型 + 人员对应:领域开发环境、领域特定应用开发环境(应用工程师)、应用执行环境
  4. C2 风格关键特征:连接件连接、构件间无直接连接
  5. 黑板风格典型应用:信号处理(语音识别、模式识别)
  6. 解释器风格缺点:执行效率低
  7. ADL 关注点:构件间互联机制(连接子)
  8. 常用多视图模型:4+1、4 视图、Views and Beyond
  9. 视图标准:IEEE 1471-2000、RM-ODP、UML、Zachman
  10. 后开发阶段研究方向:动态软件体系结构、体系结构恢复与重建

4.2 易混淆对比

对比项区别
批处理 vs 管道-过滤器批处理是整体传递,管道是流式处理
二层 C/S vs 三层 C/S二层无功能层,三层分表示/功能/数据层
C/S vs B/SB/S 浏览器作为客户端,跨平台但交互性差
仓库 vs 黑板仓库是数据存储,黑板是问题求解(带控制)
解释器 vs 规则系统解释器是通用虚拟机,规则系统包含知识库和工作内存
机会复用 vs 系统复用机会是开发中发现,系统是开发前规划
进程通信 vs 事件系统进程通信是消息传递,事件系统是广播/触发
使用 Hugo 构建
主题 StackJimmy 设计