跳转至

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

来源:exams/2015、2017、2018、2019押题、2019.pdf 第 1.1 节「15年考题」


1. Where do software architecture come from? List five possible sources of software architecture.

软件架构的来源可分为三大类:

三种需求: 1. NFRs(Non-Functional Requirements,非功能需求):一般包括约束和质量属性 2. ASRs(Architecturally Significant Requirements,架构攸关需求):对架构有重大影响的需求 3. 质量需求(Quality Requirements):在功能需求的基础上需要满足的特征

业务面: 4. 涉众和组织(Stakeholders & Organisations):系统的利益相关者和开发组织 5. 业务目标(Business Goals):组织的商业目标

技术面: 6. 技术环境(Technical Environments):可用的技术栈和环境 7. 商业与技术决策组合:不局限于需求,可能是商业和技术决定的集合

参考课件slides/2026SUG_SysArch1_introduction.pdf(软件架构介绍)


2. What distinguishes an architecture for a software product line from an architecture for a simple product?

  1. 产品线的目的:实现高可重用性、高可修改性。
  2. 产品线之所以有效是因为通过重用可以充分利用产品的共性,从而产生经济性(规模效应)。
  3. 关键区别:在产品线架构中有一组明确允许发生的变化(variation points),架构需要识别允许的变化并提供内建机制来实现它们。然而对于常规(单一产品)架构来说,只要满足了单个系统的行为和质量目标,几乎任何实例都是可以的。
  4. 产品线架构强调共性和可变性管理,通过核心资产(core assets)和变体点(variation points)来支持一族产品。

参考课件slides/2026SUG_SysArch1_introduction.pdf(软件产品线)


3. How to model quality attribute scenarios? Graphically model two quality attributes in "stimulus-response" format: availability and performance.

质量属性场景建模方法

质量属性场景(Quality Attribute Scenario)由六部分组成:

部分 说明
刺激源(Source of Stimulus) 产生刺激的实体(人、系统或任何其他触发)
刺激(Stimulus) 到达系统时需要考虑的条件
环境(Environment) 发生刺激时系统的状况(正常运行、过载、攻击中、网络故障等)
工件(Artifact) 完成需求的整个系统或系统的一部分
响应(Response) 刺激到来后工件开展的行为
响应度量(Response Measure) 对响应的可量化测量,以便测试需求

Availability(可用性)刺激-响应图

┌──────────────┐    ┌──────────────┐    ┌──────────────┐    ┌──────────────┐    ┌──────────────┐    ┌──────────────┐
│ Source of    │    │              │    │              │    │              │    │              │    │ Response     │
│ Stimulus     │───▶│  Stimulus    │───▶│  Artifact    │───▶│  Environment │───▶│  Response    │───▶│  Measure     │
├──────────────┤    ├──────────────┤    ├──────────────┤    ├──────────────┤    ├──────────────┤    ├──────────────┤
│ Heartbeat    │    │ 服务器无响应  │    │ 监视器进程    │    │ 正常操作      │    │ 通知操作者    │    │ 没有停机时间  │
│ monitor      │    │              │    │              │    │              │    │ 继续操作      │    │              │
└──────────────┘    └──────────────┘    └──────────────┘    └──────────────┘    └──────────────┘    └──────────────┘

Performance(性能)刺激-响应图

┌──────────────┐    ┌──────────────┐    ┌──────────────┐    ┌──────────────┐    ┌──────────────┐    ┌──────────────┐
│ Source of    │    │              │    │              │    │              │    │              │    │ Response     │
│ Stimulus     │───▶│  Stimulus    │───▶│  Artifact    │───▶│  Environment │───▶│  Response    │───▶│  Measure     │
├──────────────┤    ├──────────────┤    ├──────────────┤    ├──────────────┤    ├──────────────┤    ├──────────────┤
│ 用户         │    │ 发起事务      │    │ 系统         │    │ 正常操作      │    │ 事务被处理    │    │ 平均延迟      │
│              │    │              │    │              │    │              │    │              │    │ 不超过 2 秒   │
└──────────────┘    └──────────────┘    └──────────────┘    └──────────────┘    └──────────────┘    └──────────────┘

参考课件slides/2026SUG_SysArch2_quality attributes.pdf(质量属性建模)


4. Describe relationships between architecture patterns and tactics. List four tactics names and describe their usage.

架构模式与战术(决策)的关系

  1. 战术(决策)比模式更简单,仅有单一的结构或机制来应对单一的架构驱动。
  2. 战术是构成架构模式的重要组成部分
  3. 架构模式通常将许多个战术组合在一起
  4. 战术和架构模式共同构成了软件设计时的工具。
  5. 大多数架构模式都包含不同的战术,这些战术可能有共同的目的或者常被用于实现不同的质量属性。

四种战术及其用途

战术名称 用途
心跳(Heartbeat) 可用性战术:通过定期发送心跳信号检测组件故障,实现故障检测
冗余(Redundancy) 可用性战术:部署多个相同的组件实例,当一个实例故障时其他实例接管
负载均衡(Load Balancing) 性能战术:将请求分发到多个处理节点,提高系统吞吐量
加密(Encryption) 安全性战术:对数据进行加密处理,保护数据的机密性和完整性

参考课件slides/2026SUG_SysArch2_quality attributes.pdf(架构战术),slides/Lecture 01 - Attributes Driven Design.pdf(ADD 方法)


5. Briefly describe the general activities involved in a software architecture process.

软件架构过程的一般活动包括:

  1. 识别架构攸关需求(Identify ASRs):从需求中提取对架构有重大影响的需求
  2. 架构设计(Architecture Design):基于 ASRs 进行架构决策和设计
  3. 架构文档化(Architecture Documentation):使用多视图记录架构设计决策
  4. 架构评估(Architecture Evaluation):验证架构是否满足 ASRs
  5. 架构实现与维护(Architecture Implementation & Maintenance):确保实现遵循架构设计

主要输入:需求文档、业务目标、约束条件、技术环境 主要输出:架构设计文档、架构视图、评估报告

参考课件slides/Lecture 01 - Attributes Driven Design.pdf(ADD 过程),slides/Lecture 02 - Attributes Driven Design - Case Study.pdf


6. Mapping, and list 4 views for each style (sa07, p.9)

将每个架构风格映射到其适合的视图类型,并为每种风格列出四种视图:

架构风格 适合的视图类型 四种具体视图
Module Style(模块风格) 模块视图 分解视图(Decomposition)、使用视图(Uses)、分层视图(Layered)、类视图(Class)
Component-Connector Style(组件-连接器风格) C&C 视图 管道-过滤器(Pipe-Filter)、客户端-服务器(Client-Server)、对等(Peer-to-Peer)、发布-订阅(Publish-Subscribe)
Allocation Style(分配风格) 分配视图 部署视图(Deployment)、安装视图(Install)、工作分配视图(Work Assignment)、实现视图(Implementation)

参考课件slides/2026SUG_SysArch1_introduction.pdf(架构风格与视图分类)


7. Explain the context, benefits and limitations of Broker Architecture Pattern.

上下文(Context)

多个同步或异步交互的远程对象组成的系统。Broker 模式定义了运行时组件 broker(代理者),它协调多个客户机(Client)和服务器(Server)之间的通讯。

优点(Benefits)

  1. 提高了 Client 和 Server 之间的交互性:客户端无需知道服务器的具体位置
  2. 提高可伸缩性和可扩展性:可以动态添加新的服务器
  3. 解决了单体应用的性能瓶颈:通过分布式架构分散负载
  4. 大规模集群的性能提高:但单点性能会下降

局限性(Limitations)

  1. 增加了前期复杂度:需要额外的 Broker 组件设计
  2. 可能成为通信的屏障:所有通信经过 Broker 可能成为瓶颈
  3. 可能成为攻击的目标:Broker 是系统的单点故障和攻击面
  4. 难以测试:分布式系统的测试复杂度更高
  5. 单点性能下降:Broker 自身可能成为性能瓶颈

:SOA 延续了 Broker 的思想,但有所改进——查找服务和使用服务都要通过 Broker,而 SOA 只在查找时通过 Registry,分散了 Broker 的职责,降低了单点风险。

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


8. Why should a software architecture be documented using different views? Give the name and purposes of 4 example views.

为什么需要使用不同的视图

软件架构是复杂的,每个视图关注架构的不同方面。不同利益相关者(stakeholders)关注架构的不同维度。使用多视图可以: - 分离关注点(Separation of Concerns) - 针对不同受众提供合适的信息 - 管理架构的复杂性

四种视图及其目的

视图名称 目的
逻辑视图(Logical View) 描述对架构而言重要的元素及其关系(功能需求)。向最终用户展示系统功能。
过程视图(Process View) 描述元素之间的并发和交互,包括进程、线程、同步等。向系统集成者展示运行时行为。
开发视图(Development View) 描述软件模块的内部组织联系(如配置管理存储结构)。向程序员和开发团队展示代码组织。
物理视图(Physical View) 描述主要过程和组件如何映射到硬件上。向系统工程师展示部署拓扑。

参考课件slides/2026SUG_SysArch1_introduction.pdf(4+1 视图),slides/Lecture 01 - Attributes Driven Design.pdf


9. Briefly describe the fundamental principles of SOA and discuss the impact of SOA on quality attributes like interoperability, scalability and security.

SOA 的基本原则

  1. 服务契约(Service Contract):服务按照描述文档所定义的服务契约行事
  2. 服务封装(Service Encapsulation):除了服务契约所描述内容,服务将对外部隐藏实现逻辑
  3. 服务重用(Service Reuse):将逻辑分布在不同的服务中,以提高服务的重用性
  4. 服务组合(Service Composition):一组服务可以协调工作,组合起来形成定制组合业务需求
  5. 服务自治(Service Autonomy):服务对所封装的逻辑具有控制权
  6. 服务无状态(Service Statelessness):服务将一个活动所需保存的资讯最小化

SOA 对质量属性的影响

质量属性 影响
互操作性(Interoperability) 正向影响:符合开放标准,可以更好的重用服务;支持服务的自动识别、发现、注册和调用
可伸缩性(Scalability) 正向影响:服务自身高内聚、服务间松耦合,最小化维护的影响。但也会带来系统复杂度较高的问题
安全性(Security) 负面影响:中间件(如 ESB)可能成为性能瓶颈和被攻击的目标

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


10. Describe outputs generated from each phase of ATAM process.

ATAM(Architecture Tradeoff Analysis Method,架构权衡分析方法)各阶段的输出:

阶段 输出 参与者
阶段 -0:准备和建立团队(Partnership & Preparation) 评估计划(包括谁参与、何时何地进行评估) 评估团队领导、项目决策者
阶段 -1:评估(Evaluation) 架构方法描述、质量属性效用树(Utility Tree)、风险列表(Risks)、敏感点(Sensitivity Points)、权衡点(Trade-off Points) 评估团队、项目决策者、架构师
阶段 -2:评估(Evaluation) 对架构方法的分析结果、优先级排序的场景、更详细的风险/非风险列表 评估团队、利益相关者
阶段 -3:后续(Follow-up) 最终评估报告、改进建议 评估团队、项目团队

参考课件slides/Lecture 01 - Attributes Driven Design.pdf(ATAM),slides/Lecture 02 - Attributes Driven Design - Case Study.pdf


11. Why SPL and MDA have high reusability? Compare and discuss their commonality and differences.

为什么 SPL 和 MDA 具有高重用性

  • SPL(Software Product Line,软件产品线):通过使代码可变来最大化重用,变体(variation)是大规模软件重用的关键。核心资产支持可变功能,通过变体点提供可配置性。
  • MDA(Model Driven Architecture,模型驱动架构):鼓励重用模型、模型中的最佳实践和模型转换映射。创建应用程序家族(families of applications),PIM(Platform Independent Model)可通过映射到不同的 PSM(Platform Specific Model)来实现重用。

共同点

  1. SPL 和 MDA 都认为变体/大规模定制机制(variation or mass-customization mechanisms)是必要的
  2. 通常都以平台无关的方式(UML 模型)表示
  3. 都旨在通过系统化的方式实现大规模复用

区别

维度 SPL MDA
核心机制 通过变体点(variation points)和核心资产实现代码可变性 通过模型转换(model transformation)和映射实现重用
关注层面 关注代码层面的可变性和复用 关注模型层面的抽象和转换
实现方式 通过架构中的变体机制支持不同产品 通过 PIM→PSM 映射生成不同平台的实现
关系 MDA 可用于有效管理 SPL——整个 SPL 可以从单一可配置模型表达和创建,模型可以显式显示 SPL 设计的共同和变化部分

参考课件slides/2026SUG_SysArch1_introduction.pdf(SPL),slides/Lecture 01 - Attributes Driven Design.pdf(MDA/SPL)


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