2016 年软件系统设计考题解答¶
来源:综合自
exams/软件系统设计-复习-EagleBear.pdf中标记为【2016A】【2016B】的考题 注:2016 年存在 A/B 两套试卷,本题集将两套试卷合并整理。题目具体编排可能与真实考卷有差异。
Part A (2016A)¶
1. Architecture, Structure 和 Design 的区别?¶
- Design 包含 Architecture,Architecture 包含 Structure
- 体系结构是关于软件设计的——所有体系结构都是设计,但不是所有的设计都是体系结构,体系结构是软件设计的一个部分
- 结构(Structure)是静态的、逻辑的,是关于系统如何构成的
- 架构(Architecture)除包含结构,还会包含组件之间的相关关系结构,并定义一些动态的行为
- 程序或计算系统的软件架构是系统的一个或多个结构,包括软件元素、这些元素的外部可见属性以及它们之间的关系
参考课件:
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.pdf,slides/2026SUG_SysArch2_quality attributes.pdf
7. 为什么软件系统架构需要使用不同视图来文档化?给出4种示例视图¶
原因:
- 不同视图支持不同的目标和用户(different goals and stakeholders),突出不同的系统元素和关系
- 不同视图将不同质量属性暴露到不同程度(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. 软件架构来自哪里?列举五种可能的来源¶
- NFRs(非功能需求):约束和质量属性
- ASRs(架构攸关需求):对架构有重大影响的需求
- 质量需求(Quality Requirements)
- 涉众和组织(Stakeholders & Organisations)
- 技术环境(Technical Environments)
- 商业与技术决策组合
参考课件:
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。
参考课件:
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(综合复习资料)