软考-系统架构设计师 系统架构评估详细讲解
个人博客:blogs.wurp.top
一、核心概念:为什么需要架构评估?
1. 定义
系统架构评估是在系统构建之前,通过系统化的方法,分析软件架构是否满足特定质量属性目标(如性能、安全、可用性),并识别潜在风险、敏感点和权衡点的过程。
2. 目的与价值
- 降低风险:在投入大量开发和运维成本之前,发现架构设计中的重大缺陷。
- 验证决策:确认架构决策能够支持关键的非功能需求。
- 促进沟通:为所有利益相关者(管理者、客户、开发、测试、运维)提供一个讨论架构和达成共识的平台。
- 指导改进:为架构的改进和优化提供明确的方向。
核心思想:“早发现,早治疗”。在架构阶段修复一个问题的成本,远低于在编码、测试甚至上线后修复的成本。
二、架构评估方法论
评估不是随意的评审,而是有严格流程和方法的。最著名和常用的方法是 ATAM。
1. ATAM - 架构权衡分析方法 (Architecture Tradeoff Analysis Method)
这是软考中要求掌握的重点方法。ATAM 的核心是 “权衡”,它承认没有完美的架构,任何决策都是在不同质量属性之间进行取舍。
ATAM 的参与角色:
- 评估小组:由外部或内部架构专家组成,负责引导评估过程。
- 项目决策者:包括项目经理、首席架构师、产品经理等,有权做出项目决策。
- 架构涉众:包括开发、测试、运维、用户代表等,他们的利益与架构密切相关。
ATAM 的九个步骤(四阶段):
第一阶段:演示与评估
- ATAM方法演示:评估小组向项目参与者介绍ATAM的过程和目标。
- 业务动机演示:项目决策者介绍系统的业务目标、主要功能和最重要的质量属性目标。
- 架构演示:首席架构师详细阐述当前的架构设计,包括关键决策和设计思路。
第二阶段:调查与分析
4. 确定架构方法:评估小组基于架构师的演示,识别并记录出架构中使用的主要架构模式、风格和技术(如微服务、缓存、负载均衡)。
5. 生成质量属性效用树:这是ATAM的核心步骤。
- 效用:代表系统对涉众的整体价值。
- 效用树:一个分层结构,用于细化、排序和量化质量属性目标。
- 根节点:系统的总体效用。
- 质量属性节点:第一层子节点(如性能、安全性、可用性)。
- 细化场景节点:第二层子节点,将质量属性细化为更具体的场景(如“在高并发下保持低延迟”)。
- 叶子节点:每个场景都被赋予一个优先级(高、中、低) 和一个支持该场景的难度/风险估计(高、中、低)。
- 作用:效用树帮助团队聚焦于高优先级、高风险的场景,这些是评估的重点。
第三阶段:测试
6. 分析架构方法:评估小组针对效用树中高优先级的场景,逐一拷问架构设计。
- 问题示例:“为了实现‘5秒内完成订单’这个性能场景,架构中采用了哪些具体机制?(如数据库分库分表、异步消息队列)这些机制是否足够?”
- 头脑风暴并确定场景优先级:邀请所有涉众提出更多他们关心的场景(不限于已列出的),然后通过投票方式确定这些新场景的优先级。
- 再次分析架构方法:对投票产生的高优先级新场景,重复第6步的分析过程。
第四阶段:报告
9. 结果展示:评估小组向项目决策者展示最终的评估结果。核心输出包括:
- 已文档化的架构方法。
- 已确定并设置优先级的场景(来自效用树和头脑风暴)。
- 效用树。
- 风险决策:指那些可能无法满足某个重要质量属性的架构决策。
- 非风险决策:指那些经过分析被认为是良好的、能有效支持某个质量属性的决策。
- 敏感点:指一个或多个组件的属性,它对某个质量属性有显著影响。(例如,缓存大小是性能的敏感点)。
- 权衡点:指影响多个质量属性的架构决策,通常是权衡发生的地方。(例如,引入数据加密提高了安全性,但可能降低了性能;采用强一致性协议提高了一致性,但牺牲了可用性)。
2. SAAM - 软件架构分析方法 (Software Architecture Analysis Method)
- 特点:比ATAM更早、更简单,是ATAM的前身。
- 关注点:主要评估架构的可修改性(可维护性)。
- 核心过程:
- 开发场景(描述可能发生的变更)。
- 对场景进行分类(直接场景 vs. 间接场景)。
- 执行场景评估(评估变更所需的工作量)。
- 揭示交互(评估场景之间的耦合程度)。
三、架构评估中的核心概念(必考)
在评估过程中,会提炼出以下几个关键概念,用于描述架构的特性:
- 场景 (Scenario):评估的基本单位,用于具体化质量属性需求(如前文所述的质量属性场景)。
- 敏感点 (Sensitivity Point):
- 定义:架构中一个或多个组件的属性,当它发生变化时,会对一个质量属性产生显著影响。
- 例子:“缓存的大小是系统响应时间的敏感点。” 增大缓存可能显著提高响应速度。
- 权衡点 (Trade-off Point):
- 定义:架构中的一个属性,它与多个质量属性密切相关,并且这些影响是相互冲突的。
- 例子:“是否对数据库连接进行加密是一个权衡点。” 加密提高了安全性,但增加了CPU开销,可能降低性能。
- 风险 (Risk):
- 定义:根据当前架构设计,某个重要的质量属性目标可能无法实现的决策。
- 例子:“为了追求开发速度,系统没有设计容灾方案,这是一个风险,威胁到系统的可用性。”
- 非风险 (Non-Risk):
- 定义:经过评估,被认为是良好的、能有效支持某个质量属性的架构决策。
- 例子:“使用负载均衡器来分发Web请求,这是一个非风险决策,它很好地支持了系统的可扩展性和可用性。”
四、软考考点总结与应用
-
选择题:
- 直接考查架构评估的目的和价值。
- 考查 ATAM 和 SAAM 方法的定义、特点和区别。
- 考查 ATAM 的九个步骤,特别是效用树的作用。
- 考查敏感点、权衡点、风险、非风险的定义和区别,并能根据小案例进行判断。
- 考查评估中的参与角色及其职责。
-
案例分析题:
- 题目描述一个架构设计,并给出一些质量属性要求。
- 问题:请使用ATAM方法,对该架构进行评估,并说明评估的重点和可能输出的结果。
- 答题套路:
- 阐述ATAM流程:简述将按照演示、调查、测试、报告四个阶段进行。
- 构建效用树:根据案例中的质量要求,虚拟一个简单的效用树(例如,性能-高并发场景-高优先级/高风险)。
- 识别关键概念:
- 敏感点:指出案例中影响某个质量属性的关键参数(如数据库连接池大小)。
- 权衡点:指出案例中存在的架构决策冲突(如为了数据一致性采用分布式事务,牺牲了性能与可用性)。
- 风险:指出案例中可能无法满足需求的决策(如单点数据库设计对可用性构成风险)。
- 提出建议:基于评估结果,提出架构改进方向。
-
论文题:
- 可能围绕“论软件架构评估在某项目中的应用”、“ATAM方法与软件质量保证”、“架构设计中的权衡策略”等主题。
- 写作时,必须:
- 清晰描述项目背景和关键的架构决策。
- 详细论述你如何组织或参与一次ATAM评估(角色、步骤)。
- 重点分析评估中发现的权衡点和风险,以及你是如何决策和解决这些问题的。
- 总结架构评估为项目带来的实际价值(如避免了哪些潜在问题)。
总结
对于软考架构师,掌握系统架构评估的关键在于:
- 树立评估意识:将架构评估视为与架构设计同等重要的必备环节。
- 精通核心方法:深刻理解并能阐述 ATAM 的全过程,特别是效用树的分析。
- 清晰辨析概念:能准确区分敏感点、权衡点、风险和非风险,这是分析问题的语言。
- 具备实践能力:能将理论方法应用于实际案例,进行分析、诊断和提出改进建议。