跳转至

2016 年软件系统设计考题解答

来源:综合自 exams/软件系统设计-复习-EagleBear.pdf 中标记为【2016A】【2016B】的考题 注:2016 年存在 A/B 两套试卷,本题集将两套试卷合并整理。题目具体编排可能与真实考卷有差异。


Part A (2016A)

1. Architecture, Structure 和 Design 的区别?

  1. Design 包含 Architecture,Architecture 包含 Structure
  2. 体系结构是关于软件设计的——所有体系结构都是设计,但不是所有的设计都是体系结构,体系结构是软件设计的一个部分
  3. 结构(Structure)是静态的、逻辑的,是关于系统如何构成的
  4. 架构(Architecture)除包含结构,还会包含组件之间的相关关系结构,并定义一些动态的行为
  5. 程序或计算系统的软件架构是系统的一个或多个结构,包括软件元素、这些元素的外部可见属性以及它们之间的关系

参考课件slides/2026SUG_SysArch1_introduction.pdf

2. 简要描述软件架构过程中的一般活动,以及每个活动的主要输入和输出

活动 输入 输出
识别 ASR 需求文档、业务目标 ASR 列表
架构设计 ASR、约束 架构设计方案
架构文档化 设计决策 多视图文档包
架构评估 架构文档、ASR 评估报告(风险、敏感点、权衡点)
实现与维护 最终设计 可运行系统

参考课件slides/Lecture 01 - Attributes Driven Design.pdf

3. 哪些主要需求类型被认为会影响架构设计决策?

影响架构设计决策的需求类型: 1. 功能需求(Functional Requirements):说明系统必须做什么,并说明系统如何为利益相关者提供价值 2. 质量需求(Quality Requirements):系统应该提供的整个系统的理想特征(性能、可用性、安全性等) 3. 约束条件(Constraints):预先指定的设计决策,包括行业规则、法律法规、技术限制等

这些需求通常通过以下方式指定:需求文档、质量属性场景(Stimulus-Response 格式)、效用树(Utility Tree)。

参考课件slides/2026SUG_SysArch2_quality attributes.pdf

4. 解释分层架构风格的上下文、优点和局限性

上下文(Context):分层模式定义层(提供一组内聚服务的模块分组)和层之间的单向允许使用关系。

优点: - 可以将一个复杂的问题分成几个部分(关注点分离) - 具有很高的可扩展性和复用性 - 每层可以独立开发和测试 - 支持增量式开发

局限性: - 层间调用可能带来性能开销 - 层的粒度划分需要经验 - 不是所有系统都适合分层 - 可能导致层间耦合过紧

参考课件slides/软件架构模式_update_2.pdf(分层模式)

5. 简要描述 SOA 的基本原则,并讨论 SOA 对互操作性、可伸缩性和安全性的影响

SOA 六大原则:服务契约、服务封装、服务重用、服务组合、服务自治、服务无状态。

对质量属性的影响

质量属性 影响
互操作性 正向:符合开放标准,更好重用服务;支持自动识别、发现、注册和调用
可伸缩性 正向:服务高内聚、松耦合。但会增加系统复杂度
安全性 负面影响:ESB 等中间件可能成为性能瓶颈和攻击目标

参考课件slides/软件架构模式_update_2.pdf(SOA)

6. 描述架构设计中架构模式和决策(战术)之间的关系。给出四种决策的名称及目的

关系: 1. 决策比模式更简单,仅有单一的结构或机制来应对单一的架构驱动 2. 决策是构成架构模式的重要组成部分 3. 架构模式通常将许多个决策组合在一起 4. 决策和架构模式共同构成了软件设计时的工具

四种决策(战术)

决策名称 目的
心跳(Heartbeat) 可用性:定期检测组件故障
冗余(Redundancy) 可用性:多实例部署,故障切换
负载均衡(Load Balancing) 性能:分发请求到多节点
加密(Encryption) 安全性:保护数据机密性

参考课件slides/Lecture 01 - Attributes Driven Design.pdfslides/2026SUG_SysArch2_quality attributes.pdf

7. 为什么软件系统架构需要使用不同视图来文档化?给出4种示例视图

原因

  1. 不同视图支持不同的目标和用户(different goals and stakeholders),突出不同的系统元素和关系
  2. 不同视图将不同质量属性暴露到不同程度(expose different quality attributes to different degrees)

架构视图按"回答的根本问题"分为三大风格类别(Views & Styles 体系),从中任取 4 种示例视图作答:

风格类别 回答的问题 示例视图
模块风格 Module Styles(结构视图) 系统如何被组织为一组实现单元? 分解视图(Decomposition)、使用视图(Uses)、泛化视图(Generalization)、分层视图(Layered)、领域视图(Domain)、数据模型视图(Data Model)
组件-连接器风格 C&C Styles 系统如何被组织为一组具有运行时行为和交互的元素? 管道-过滤器(Pipe-Filter)、客户端-服务器(Client-Server)、点对点(Peer-to-Peer)、面向服务(SOA)、发布-订阅(Publish-Subscribe)
分配风格 Allocation Styles 系统如何与其环境中的非软件结构相关联? 部署视图(Deployment)、安装视图(Installation)、工作分配视图(Work Assignment)

此外还有 质量视图 Quality Views(安全视图、性能视图、可靠性视图、通信视图、异常/错误处理视图)和 组合视图,也可作为示例。

⚠️ 易错提示:本题的"4 种示例视图"属于 Views & Styles(Module/C&C/Allocation) 体系,不是 Kruchten 的 4+1 视图。后者(逻辑/过程/开发/物理 + 用例)是另一道独立考题,参见第 2 题。两者分类维度不同(前者按"回答什么问题/风格",后者按"面向哪类涉众"),数量也对不上(4+1 是 5 种)。

参考课件slides/2026SUG_SysArch1_introduction.pdf(Module View & Styles、Architecture Documentation 章节,p20–p33);exams/软件系统设计-复习-EagleBear.pdf §1.5

8. Map each question to the architectural style/view that solves it (连线题)

问题 解决该问题的架构风格/视图
系统需要支持不同平台的部署 分配视图(Allocation View)→ 物理视图
系统需要模块化以便独立开发 模块风格(Module Style)→ 分解视图
系统需要高性能的流式数据处理 C&C 风格 → 管道-过滤器(Pipe-Filter)
系统需要处理运行时组件的动态交互 C&C 风格 → 客户端-服务器或发布-订阅

参考课件slides/2026SUG_SysArch1_introduction.pdf

9. 描述在 ATAM 的每一个过程中有哪些 Stakeholder 和他们的职责

阶段 Stakeholder 职责
阶段-0 评估团队领导、关键项目决策者 生成评估计划(人员、时间、地点、报告呈递对象)
阶段-1 评估团队、项目决策者、首席架构师 介绍 ATAM 方法 → 介绍业务驱动因素 → 介绍体系结构 → 确定架构方法 → 生成效用树 → 分析架构方法
阶段-2 评估团队、项目决策者、项目涉众 涉众头脑风暴确定场景优先级 → 分析架构方法 → 展示评估结果
阶段-3 评估团队、主要涉众 制作最终评估报告,审核后呈递给委托评估者

参考课件slides/Lecture 01 - Attributes Driven Design.pdf

10. Distributed Cache Updates 设计题

参见 2022 年考卷设计题第 3 题(相同题目)。

参考src/2022.md 设计题第 3 题

11. Design a simple architecture for an Automated Teller Machine (ATM)

ATM 系统架构设计

使用分层架构 + 组件-连接器风格

┌────────────────────────────────────┐
│          Presentation Layer         │
│  ┌──────────┐    ┌──────────────┐  │
│  │ ATM GUI  │    │ Printer/     │  │
│  │ (Screen) │    │ Card Reader  │  │
│  └────┬─────┘    └──────┬───────┘  │
├───────┼─────────────────┼──────────┤
│       │   Business Logic Layer      │
│  ┌────┴─────────────────┴───────┐  │
│  │    Transaction Processor     │  │
│  │  (withdraw/deposit/transfer) │  │
│  └────────────┬─────────────────┘  │
├───────────────┼────────────────────┤
│       │   Data Access Layer    │    │
│  ┌────┴─────────────────┐     │    │
│  │   Account Service    │     │    │
│  │   (Balance/History)  │     │    │
│  └──────────┬───────────┘     │    │
├─────────────┼──────────────────────┤
│             │   Database Layer     │
│  ┌──────────┴───────────┐         │
│  │   Bank Database      │         │
│  │   (Accounts/Logs)    │         │
│  └──────────────────────┘         │
└────────────────────────────────────┘

关键设计决策: - 用策略模式处理不同的交易类型(取款、存款、转账) - 用状态模式管理 ATM 会话状态(空闲、卡已插入、PIN已验证、交易中) - 用单例模式确保 ATM 硬件的唯一访问

参考课件slides/软件架构模式_update_2.pdf(分层模式),slides/02策略模式.pdf


Part B (2016B)

1. 软件架构来自哪里?列举五种可能的来源

  1. NFRs(非功能需求):约束和质量属性
  2. ASRs(架构攸关需求):对架构有重大影响的需求
  3. 质量需求(Quality Requirements)
  4. 涉众和组织(Stakeholders & Organisations)
  5. 技术环境(Technical Environments)
  6. 商业与技术决策组合

参考课件slides/2026SUG_SysArch1_introduction.pdf

2. 描述 4+1 视图

五种视图:逻辑视图(功能需求)、过程视图(并发交互)、开发视图(代码组织)、物理视图(硬件部署)、+1 场景/用例视图(架构验证)。

参考课件slides/2026SUG_SysArch1_introduction.pdf

3. 什么区分了软件产品线架构和单个软件产品架构?

产品线架构有明确允许的变体点(variation points),通过核心资产(core assets)和变体机制支持一族产品,目的为实现高可重用性和经济性。

参考课件slides/2026SUG_SysArch1_introduction.pdf

4. 解释 Broker 架构模式的上下文、好处和局限性

上下文:多个同步或异步交互的远程对象组成的系统。

好处:提高交互性、可伸缩性和可扩展性;解决单体性能瓶颈。

局限性:增加复杂度、可能成为通信屏障和攻击目标、难以测试、单点性能下降。

参考课件slides/软件架构模式_update_2.pdf(Broker 模式)

5. C&C 样式(组件-连接器)的本质是什么?

C&C 风格关注运行时行为——组件是计算主体,连接器是交互机制。描述的是动态的、行为的视图。

参考课件slides/2026SUG_SysArch1_introduction.pdf(C&C 风格)

6. 软件需求、质量属性、ASR 的区别和联系

软件需求 ⊃ 非功能需求 ⊃ 质量属性 → 重要的QA → ASR

质量属性由业务目标决定,困难的/重要的 QA 最可能成为 ASR。

参考课件slides/2026SUG_SysArch2_quality attributes.pdf

7. 典型的软件架构文档包中应该包含哪些内容?

Beyond 部分:文档路线图、视图组织方式、系统概述、视图间映射、系统原理、目录/索引/词汇表。

View 部分:体系结构风格和视图(Styles and Views)、结构视图(Structural Views)。

参考课件slides/2026SUG_SysArch1_introduction.pdf

8. 描述 ATAM 各阶段的输出

阶段 输出
阶段-0 评估计划
阶段-1 架构介绍、业务目标、优先级列表、效用树、风险/非风险、敏感点/权衡点
阶段-2 涉众优先级场景列表、风险主题
阶段-3 最终评估报告

参考课件slides/Lecture 01 - Attributes Driven Design.pdf

9. 描述 SOA、Web 服务和 ESB 的用途,并讨论它们的区别和联系

概念 用途 关系
SOA 设计原则:让应用程序调用其他应用程序提供的功能,创建业务流程 SOA 是设计思想
Web Service 实现技术:一组集成技术标准(SOAP、WSDL、UDDI),满足 SOA 需求 Web Service 是 SOA 的实现技术之一
ESB 中间件基础设施:通过事件驱动和基于标准的消息传递引擎为复杂架构提供基础服务 ESB 是实现 SOA 的中间件平台,利用 Web Service 提供服务

关键区别:SOA 是设计原则,Web Service 是实现技术,ESB 是中间件基础设施。

参考课件slides/软件架构模式_update_2.pdf(SOA),slides/Microservices Patterns.pdf

10. 软件产品线架构如何实现可变性?描述可变性机制的工作方式

SPL 可变性:核心资产通过变体点(Variation Points)支持可变功能,PLA(产品线架构)使用变体机制实现。

绑定时间:创建编码工作区时 → 构建目标代码时 → 创建应用程序时 → 应用程序启动时 → 应用程序运行时。

参考课件slides/2026SUG_SysArch1_introduction.pdf

11. Design a simple architecture for an ATM

参见 Part A 第 11 题(相同题目)。


综合参考exams/软件系统设计-复习-EagleBear.pdf(综合复习资料)