🎯 一、概述:架构设计的"体检报告"
软件架构评估是指对软件系统的架构设计进行系统性分析,以评估其是否能够满足预期的质量属性,识别潜在的设计风险,并发现需要在不同质量目标之间做出的权衡。它是确保架构设计质量的关键环节,在架构设计完成后、系统详细设计和实现之前进行。
对于系统分析师而言,架构评估是你从"设计者"向"质量把关者"角色延伸的重要能力。架构设计的好坏不能仅凭"感觉",而需要通过系统化的评估方法来验证。一个未经评估的架构,就像未经体检的人------看似健康,却可能暗藏隐患。
架构评估的核心问题:
· 这个架构能满足性能、安全、可用性等质量要求吗? · 哪些设计决策是关键的敏感点? · 哪些地方需要在不同质量目标之间做出权衡? · 存在哪些潜在的风险?
架构评估在架构设计中的位置:
``` [架构设计] → [架构评估] → [架构优化/决策] → [详细设计] ↑ "质量把关"的关键环节 ```
🏗️ 二、详细讲解:三大核心内容
1️⃣ 架构评估的核心概念
在进行架构评估时,需要掌握几个关键概念:
概念 定义 示例 敏感点 为了实现某种特定的质量属性,一个或多个构件所具有的特性。敏感点是实现质量目标时应特别注意的点,对某个质量属性有显著影响。 查询请求处理时间的要求会影响系统的数据传输协议和处理过程的设计 权衡点 指影响多个质量属性的特性,是多个质量属性的敏感点。改变某个权衡点会同时影响多个质量属性,需要做出取舍。 改变业务数据编码方式会对系统性能和安全同时产生影响 风险点 架构设计中潜在的、可能导致问题或项目失败的设计决策所带来的隐患。 对系统某业务逻辑的描述尚未达成共识,可能导致部分业务功能模块重复,影响系统可修改性 非风险点 不会带来隐患的、可行的做法。 业务响应小于30ms,则请求响应超时设定为1秒是可以接受的
风险点与非风险点的关系:风险点是需要特别关注和处理的,而非风险点则是可接受的。
敏感点与权衡点的关系:权衡点是特殊的敏感点------它同时是多个质量属性的敏感点,因此在设计时必须在这些属性间做出权衡。
📌 速记口诀:"敏感点是特性,权衡点要取舍,风险点有隐患,非风险可接受"。
2️⃣ 架构评估的核心质量属性
架构评估关注的主要是软件系统的架构设计是否能够满足特定的质量属性要求。常见质量属性包括:
质量属性 定义 设计策略举例 性能 系统的响应能力,即要经过多长时间才能对某个事件做出响应,或者在某段时间内系统所能处理的事件的个数 优先级队列、增加计算资源、引入并发机制 可靠性 软件系统在应用或系统错误面前,在意外或错误使用的情况下维持软件系统的功能特性的基本能力 心跳、冗余、选举 可用性 系统能够正常运行的时间比例,常用两次故障之间的时间长度或在出现故障时系统能够恢复正常的速度来表示 心跳、Ping/Echo、冗余、选举 安全性 系统在向合法用户提供服务的同时能够阻止非授权用户使用的企图或拒绝服务的能力 入侵检测、用户认证、用户授权、追踪审计 可修改性 能够快速地以较高的性能价格比对系统进行变更的能力 接口实现分离、抽象、信息隐藏 功能性 系统所能完成所期望的工作的能力 - 可变性 体系结构经扩充或变更而成为新体系结构的能力 - 互操作性 作为系统组成部分的软件与其他系统或自身环境的相互作用能力 -
ATAM主要关注的四类质量属性:性能、可用性、安全性和可修改性,因为这些是利益相关者最为关心的。
📌 速记口诀:"性能可靠可用安,可修改功能可变互操,八大属性要记全"。
3️⃣ 架构评估的三种主要方式
根据评估方法和视角的不同,架构评估主要分为以下三种方式:
评估方式 核心方法 特点 适用阶段 客观性 基于调查问卷(检查表) 设计问卷或检查表,收集相关人员经验和意见 通用性强,依赖主观判断 早期 主观 基于度量 建立定量指标(代码行数、响应时间等),从架构文档获取度量信息 客观量化,对评估者技术要求高 中期 较客观 基于场景 分析架构对特定使用或修改场景的支持程度 特定系统,中等了解程度 中期 较主观
三种方式的比较:
· 调查问卷:通用性强,只需粗略了解架构,实施早,但主观性强 · 度量:通用或特定领域,需精确了解架构,较客观 · 场景:特定系统,需中等了解架构,较主观
基于场景的评估是当前最主流的方法,因为它能够具体化质量属性,让评估更有针对性。场景描述了从风险承担者的角度对系统交互的简单描述,包含三个方面:
· 刺激(事件):触发架构响应的事件 · 环境(事件发生的环境):事件发生的背景条件 · 响应(架构响应刺激的过程):系统如何应对刺激
4️⃣ ATAM(架构权衡分析方法)
ATAM是SEI(软件工程研究所)在SAAM基础上发展起来的一种系统架构评估方法,主要在系统开发之前,针对性能、可用性、安全性和可修改性等质量属性进行评价和折中。
(1)ATAM的目标
ATAM的目标是在考虑多个相互影响的质量属性的情况下,从原则上提供一种理解软件体系结构的能力的方法。对于特定的软件体系结构,在系统开发之前,可以使用ATAM方法确定在多个质量属性之间的折衷的必要性。
(2)ATAM的四个主要活动阶段
阶段 活动内容 场景和需求收集 收集并定义系统的使用场景和需求,确保所有相关利益方的需求都被考虑 体系结构视图和场景实现 通过不同的架构视图展示系统的设计,并演示如何在这些视图中实现收集的场景 属性模型构造和分析 为每个质量属性构造模型,并进行分析以评估系统在这些属性上的表现 架构评审与折中 对架构进行评审,识别并讨论各质量属性之间的折中关系,以确定最优的架构设计方案
(3)ATAM的九大步骤
步骤 描述 参与者 1 陈述ATAM方法 评估小组负责人 2 陈述业务驱动因素 项目决策者 3 陈述体系结构 首席设计师 4 确定体系结构方法 架构设计师 5 生成质量属性效用树 评估小组、设计小组、管理人员和客户代表 6 分析体系结构方法 评估小组 7 自由讨论并优先安排场景 项目干系人 8 分析体系结构方法(针对新场景) 架构设计师 9 陈述结果 评估小组负责人
(4)效用树
ATAM方法采用效用树(Utility Tree)对质量属性进行分类和优先级排序。效用树的结构包括:
· 树根:质量属性 · 属性分类:对质量属性进行详细分类 · 质量属性场景:具体的应用场景(叶子节点)
得到初始的效用树后,需要对这棵树进行修剪,保留重要场景(通常不超过50个),再对这些场景按重要性和实现难度进行优先级排序,形成优先级对(如H/M/L)。
5️⃣ SAAM(软件架构分析方法)
SAAM是最早形成文档并得到广泛使用的软件体系结构分析方法,由卡耐基梅隆大学SEI的Kazman等人于1983年提出。
(1)SAAM的特定目标
SAAM的目标是对描述应用程序属性的文档进行验证,验证基本的体系结构假设和原则,评估体系结构固有的风险。
(2)SAAM的评估过程
步骤 活动内容 1 场景开发:通过各类风险承担者协商讨论,开发任务场景 2 体系结构描述:描述系统的架构,包括功能、结构和分配 3 单个场景评估:对每个场景进行评估,分为直接场景和间接场景 4 场景交互评估:分析多个场景之间的交互和冲突 5 总体评估:对整个架构进行综合评估,形成最终报告
SAAM的核心特点:将任何形式的质量属性都具体化为场景,可修改性是SAAM分析的主要质量属性。
SAAM vs ATAM:SAAM考察的是软件体系结构单独的质量属性,而ATAM提供从多个竞争的质量属性方面来理解软件体系结构的方法。
6️⃣ CBAM(成本效益分析法)
CBAM是在ATAM上构建的,用来对架构设计决策的成本和收益进行建模。CBAM协助项目关系人根据其投资回报选择架构策略,在ATAM结束时开始,实际上使用了ATAM评估的结果。
CBAM的步骤:
- 整理场景 2. 对场景进行求精 3. 确定场景的优先级 4. 分配效用 5. 形成策略-场景-响应级别的对应关系 6. 使用"内插法"确定期望的质量属性响应级别的效用 7. 计算架构策略的总收益 8. 根据受成本限制影响的ROI选择架构策略
📝 三、重点总结与速记方法
✅ 核心重点
- 四个核心概念:敏感点、权衡点、风险点、非风险点------必须能准确区分和识别。 2. 质量属性:性能、可靠性、可用性、安全性、可修改性是ATAM主要关注的五类属性。 3. 三种评估方式:调查问卷、度量、场景------场景方式最主流,需掌握其内涵。 4. ATAM九步法:从陈述ATAM到陈述结果,共九个步骤,核心是效用树生成和架构方法分析。 5. 效用树:用于对质量属性分类和优先级排序的工具,叶子节点是具体的质量属性场景。 6. SAAM vs ATAM:SAAM关注单一质量属性(主要是可修改性),ATAM关注多个质量属性的权衡。 7. CBAM:在ATAM基础上增加成本和收益分析,用于选择投资回报率最高的架构策略。
⚡ 速记口诀大全
1️⃣ 四个概念"一字诀"
"敏、权、风、非"(敏感点、权衡点、风险点、非风险点)
2️⃣ 质量属性"五字诀"
"性、可、安、用、改"(性能、可靠、安全、可用、可修改)
3️⃣ 三种评估方式"三选"口诀
"问卷主观早,度量客观中,场景最常用"
4️⃣ ATAM九步"顺口溜"
"一述ATAM二述业,三述架构四定法;五生效用树六析,七讨场景八再析,九述结果评估毕"
5️⃣ 效用树"三层"口诀
"根是质量属性,枝是细分类别,叶是具体场景"
6️⃣ SAAM五步"流程"口诀
"场景开发先,架构描述连;单场景评估,交互再分析;总体做权衡,SAAM流程完"
7️⃣ 一句话总纲
软件架构评估 = (敏感点+权衡点+风险点识别) + (性能/安全/可用/可修改等质量属性分析) + (ATAM/SAAM/CBAM等方法应用),是架构设计的"体检报告",确保系统在构建之前就能预见并规避潜在问题。
掌握12.5节,意味着你具备了系统化评估软件架构的核心能力,能够在架构设计完成后、投入大量开发资源之前,发现设计中的风险、识别关键的权衡点、验证质量属性的满足程度。这是系统分析师从"设计者"向"质量把关者"角色跃升的重要能力体现。