因为涉及到众多变量和场景,所以评估一个复杂技术系统的质量并不是一件容易的事情。业界有以下三种评估方法:
- 第一是基于问卷的方式,通过问卷调查对系统比较熟悉的相关人员得到结论,这种方式主观性很强。
- 第二是基于度量的方式,对系统指标完全量化,基于量化指标评价系统,这种方式需要评估者对系统非常熟悉。
- 第三种是基于场景的方式,筛选出系统的关键场景,根据系统在不同场景中的表现进行评估,这种方式具有一定的主观性,需要评估者对系统较为熟悉,这也是目前较为流行的架构评估方法。
架构权衡评估方法(ATAM)全称是 Architecture Tradeoff Analysis Method,由卡梅隆大学软件工程协会提出,是一种基于场景的架构评估方法,核心是结合质量属性效用树对系统进行评价,确定风险点、敏感点、权衡点,并对系统架构做出决策和折中。它是在SAAM的基础发展起来的,主要针对性能、实用性、安全性和可修改性,在系统开发之前,对这些质量属性进行评价和折中。
(1)特定目标。
ATAM的目标是在考虑多个相互影响的质量属性的情况下,从原则上提供一种理解软件架构的能力的方法。对于特定的软件架构,在系统开发之前,可以使用ATAM方法确定在多个质量属性之间折中的必要性。
(2)质量属性。
ATAM方法分析多个相互竞争的质量属性。开始时考虑的是系统的可修改性、安全性、性能和可用性。
(3)风险承担者。
在场景、需求收集相关活动中,ATAM方法需要所有系统相关人员的参与。
(4)架构描述。
架构空间受到历史遗留系统、互操作性和以前失败的项目约束。架构描述基于5种基本结构来进行,这5种结构是从Kruchten的4+1视图派生而来的。其中逻辑视图被分为功能结构和代码结构。这些结构加上它们之间适当的映射可以完整地描述一个架构。
用一组消息顺序图表示运行时的交互和场景,对架构描述加以注解。ATAM方法被用于架构设计中,或被另一组分析人员用于检查最终版本的架构。
(5)评估技术。
可以把ATAM方法视为一个框架,该框架依赖于质量属性,可以使用不同的分析技术。它集成了多种优秀的单一理论模型,其中每种都够高效、实用地处理属性。该方法使用了场景技术。从不同的架构角度,有3种不同类型的场景,分别是用例(包括对系统典型的使用、引出信息)、增长场景(用于涵盖那些对它的系统的修改)、探测场景(用于涵盖那些可能会对系统造成过载的极端修改)。
ATAM还使用定性的启发式分析方法(Qualitative Analyse Heuristics),在对一个质量属性构造了一个精确分析模型时要进行分析,定性的启发式分析方法就是这种分析的粗粒度版本。
(6)方法的活动。
ATAM被分为4个主要的活动领域(或阶段),分别是场景和需求收集、架构视图和场景实现、属性模型构造和折中。图1描述了与每个阶段相关的步骤,还描述了架构设计和分析改进中可能存在的迭代。
(7)领域知识库的可重用性。
领域知识库通过基于属性的架构风格(Attribute Based Architecture Style)维护。ABAS有助于从架构风格的概念转向基于特定质量属性模型的推理能力。
(8)方法验证。
该方法已经应用到多个软件系统,但仍处在研究之中。虽然软件架构分析与评价已经取得了很大的进步,但是在某些方面也存在一些问题。例如,架构的描述、质量特征的分析、场景不确定性的处理、度量的应用架构分析和评价支持工具等,这些都影响和制约着分析评估技术的发展。
ATAM方法采用效用树(Utility tree)这一工具来对质量属性进行分类和优先级排序。效用树的结构包括:树根——质量属性——属性分类——质量属性场景(叶子节点)。需要注意的是,ATAM主要关注4类质量属性:性能、安全性、可修改性和可用性,这是因为这4个质量属性是利益相关者最为关心的。
举例
第一阶段是描述和介绍阶段,首先由评估小组负责人(比如架构师)向大家介绍什么是ATAM方法,其次由项目决策者(比如产品经理)从业务角度介绍开发足球运动员信息管理系统商业动机,最后由架构师介绍系统整体架构,例如怎样划分领域,系统分为持久层、缓存层、中间件、业务中台、服务层、网关层、客户端和代理层等等。以及体系结构,满足体系结构的质量要求,定义场景:首先,需要定义一组场景,这些场景代表了系统的主要功能和特性。场景应该覆盖系统的各个方面,包括正常情况、异常情况、性能要求、安全要求等。
第二阶段是调查和分析阶段,不同需求方均提出了相关需求,所涉及质量场景如下:
-
- (1) 在100毫秒内响应用户请求
- (2) 主数据库发生故障后,10秒内自动切换至从库
- (3) 主机房发生故障后,5分钟内请求重定向至灾备机房
- (4) 新增球员比赛和训练指标,开发工作在5人日内完成
- (5) 使用包含SSL数字证书的HTTPS访问协议
- (6) 球员信息管理界面要求简单易用
- (7) 出现异常引导用户至错误页面,不能展示异常栈信息
- (8) 对于球员信息配置功能的灵活度尚未达成共识,影响了系统可修改性
- (9) 对于球员比赛实时收集响应时间的要求,影响了系统数据存储设计
- (10) 主教练提出了训练指标新模式,影响了系统性能和可修改性
根据上述场景生成质量属性效用树,(1)属于性能,(2)(3)属性可用性,(4)属于可修改性,(5)属于安全性,(6)属于易用性,(7)属于可靠性:
根据质量属性效用树,进行彻底调查和分析,找出处理质量属性的架构的方法
我们再根据这些场景分析架构的风险点、敏感点、权衡点。
- 风险点是指某些操作会给系统带来隐患和风险,(8)属于风险点。
- 敏感点是指为了实现某个特定质量属性,一个或多个系统组件所具有的特性,(9)属于敏感点。
- 权衡点是指某些操作会影响系统的多个质量属性,(10)属于权衡点。
第三个阶段是测试阶段,根据足球运动员信息管理系统特性,我们首先确定场景优先级,由高到低分别是:性能、可靠性、可修改性、安全性、可用性、易用性。
架构权衡分析方法所谓权衡在此得到了体现,质量属性每个都很重要,但是根据系统特点需要对质量属性有优先级排序,架构设计时需要所有权衡和折中。
确定了优先级之后,我们需要具体阐述针对每个质量属性系统采取了哪些方案,例如提升性能使用了缓存,提升可修改性使用了策略模式,提升可靠性使用了统一异常处理框架等等,具体方案可以参考本文第一章节。
第四个阶段是报告阶段,我们将评估过程和结果都汇总整理成文档,其中包括质量属性效用树、风险点、敏感点、权衡点和每次评估会议纪要,以及最终的架构决策。
ATAM方法
架构权衡分析方法(ATAM)是评价软件构架的一种综合全面的方法。
主要针对性能、可用性、安全性和可修改性,在系统开发之前,可以使用ATAM方法在多个质量属性之间进行评价和折中。
---------------------------------------------------------------------------------
ATAM 分为4个主要的活动领域(阶段)
场景和需求收集
架构视图和场景实现
属性模型构造和分析
折中
ATAM方法采用效用树 (Utility tree) 这一工具来对质量属性进行分类和优先级排序。效用树的结构包括:树根→质量属性→属性分类→质量属性场景 (叶子节点)。
ATAM 主要关注4 类质量属性:性能、安全性、可修改性和可用性,因为这4 个质量属性是利益相关者最为关心的。
得到初始的效用树后,需要修剪这棵树,保留重要场景(不超过50个),再对场景按重要性给定优先级(用H/M/L 的形式),再按场景实现的难易度来确定优先级(用H/M/L的形式),这样对所选定的每个场景就有一个优先级对(重要度、难易度),如 (H、L)表示该场景重要且易实现。
例:
效用树是采用架构权衡分析方法(Architecture TradeoffAnalysis Method,ATAM)进行架构评估的工具之一,其树形结构从根部到叶子节点依次为( )。
A.树根、属性分类、优先级,质量属性场景
B.树根、质量属性、属性分类,质量属性场景
C.树根、优先级、质量属性、质量属性场景
D.树根、质量属性、属性分类,优先级
答案: B
解析:效用树的结构包括:树根→质量属性→属性分类→质量属性场景 (叶子节点)。
CBAM方法
成本效益分析法 (CBAM)是在ATAM上构建,用来对架构设计决策的成本和收益进行建模,是优化此类决策的一种手段。CBAM 的思想就是架构策略影响系统的质量属性,反过来这些质量属性又会为系统的项目干系人带来一些收益(称为效用),CBAM 协助项目干系人根据其投资回报(ROI)选择架构策略。CBAM在ATAM结束时开始,它实际上使用了 ATAM评估的结果。
CBAM 方法分为以下8个步骤:
(1)整理场景。
(2)对场景进行求精。
(3)确定场景的优先级。
(4)分配效用。
(5)架构策略涉及哪些质量属性及响应级别,形成"策略一场景一响应级别"的对应关系。
(6)使用内插法确定"期望的"质量属性响应级别的效用。
(7)计算各架构策略的总收益
(8)根据受成本影响的ROI选择架构策略
3、ATAM方法架构评估实践
ATAM方法评估软件体系结构,分为4个基本阶段:
描述和介绍阶段(演示)
调查和分析阶段
测试阶段
报告阶段
阶段1–演示
是ATAM 评估软件体系结构的初始阶段。
此阶段有3个主要步骤。
第1步:介绍ATAM
涉及 ATAM 评估过程的描述。在此步骤中,评估负责人向所有相关参与者提供有关 ATAM过程的一般信息。领导者说明评估中使用的分析技术以及评估的预期结果。领导者解决小组成员的任何疑虑、期望或问题
第2步:介绍业务驱动因素
在这一步中,提到了系统体系结构驱动程序的业务目标。这一步着重于系统的业务视角。它提供了有关系统功能、主要利益相关
方、业务目标和系统其他限制的更多信息。主要利益相关方:最终用户、架构师、应用程序开发人员。
第3步:介绍要评估的体系结构
在这一步中,架构团队描述要评估的架构。它侧重于体系结构、时间可用性以及体系结构的质量要求。此步骤中的体系结构演示非常重要,因为它会影响分析的质量。这里涉及的关键问题包括技术约束,与正在评估的系统交互的其他系统,以及为满足质量属性而实施的架构方法。
阶段2–调查和分析
在这个阶段,对评估期间需要重点关注的一些关键问题进行彻底调查。
这个阶段细分为3 个步骤。
第4步:确定架构方法
这一步涉及能够理解系统关键需求的关键架构方法。在这一步中,架构团队解释架构的流程控制,并提供关于如何达成关键目标以及是否达到关键目标的适当解释。
第5步:生成质量属性效用树
在评估阶段,确定系统最重要的质量属性目标,并确定优先次序和完善。这一步至关重要,通过建立效用树,将所有利益相关方
和评估人员的注意力集中在关系到体系成功至关重要的体系结构的不同方面。
第6步:分析体系结构方法
这是"调查和分析"阶段的最后一步。
在这一步中,分析前一步生成的效用树的输出并进行彻底调查和分析,找出处理相应质量属性架构的方法。这里还要确定每种架构方法的风险、非风险、敏感点和权衡点。
阶段3–测试
第7步:头脑风暴和优先场景
这是 ATAM测试阶段的第一步。前者代表利益相关者的利益,用于理解质量属性要求。在效用树生成步骤中,主要结果是从架构师的角度来理解质量属性。在这一步中,目标是让更大的利益相关者参与其中。
第8步:分析架构方法
这是测试阶段的最后一步。
在这一步中,我们分析上一步中高优先级的质量属性。找到了处理这些质量属性的架构设计方案,并检查相应的架构设计方案是否可支持满足这些属性。这一步重复“调查和分析”阶段的第6步。唯一的区别在于,在步骤6 中,高优先级质量属性来自效用树,而这一步需要考虑在头脑风暴投票中,高得票数的质量属性。
阶段4–报告ATAM
这是 ATAM 评估的最后阶段,其中提供了评估期间收集的所有信息。ATAM 团队将他们的发现呈现给利益相关者。ATAM团队的主要发现通常包括:
一种效用树;
一组生成的场景;
一组分析问题;
一套确定的风险和非风险;
确定的架构方法。
---------------------------------------
一. 为什么要评估?
⼤型项⽬经常迟交和超支
项目进行过程中有时候要重新设计
能够帮助尽早发现问题,尽早发现的解决成本是很低的
传播架构设计的最佳实践
提供优秀项目技术管理
二. 如何评估?
发现风险点
识别出错误的架构选择
保证解决了质量属性
有很多成型的方法来解决这个问题,大部分都是基于场景进行的。
可以帮助涉众(stakeholder)去尽早的问出合适的问题来:
找到风险, 找到对所需质量属性有消极影响的架构决定
找到敏感点: 对于特定质量属性敏感的架构决定(小改动、造成很大影响)
找到权衡点(tradeoffs): 影响多个质量属性的架构决定
三. ATAM过程:
Phase 0 :参与者和准备阶段
参与者: 评估小组长和关键的项⽬决策者
输⼊:架构文档
输出: 评估计划: 谁、什么时间、提供什么样子的评估报告
Phase 1:评估(1)
参与者:评估小组和项目设计决策者(肯定包括了项目经理和架构师)
输出: 架构简要展示、业务目标、质量属性和相关场景、效用树、风险和非风险点、敏感点、权衡点
Step 1: 介绍ATAM方法(评估小组长)
Step 2: 介绍商业动机(项目经理或系统客户)
Step 3: 介绍架构(首席架构师)
Step 4:识别使用的架构方法(评估小组)
Step 5:生成质量属性效用树(评估小组和项目设计决策者) 决定性的一步
Step 6:分析架构方法(评估小组) 确保方法是正确的 获得风险点、非风险点、敏感点和权衡点列表
Phase 2:评估(2)
参与者: 评估小组、项目设计决策者和架构涉众
输出: 从涉众群体获得的一个优先级场景列表、风险主题和商业动机
Step 1: 介绍ATAM方法和之前的结果(评估小组长) 重复以确保涉众也知道方法并回顾分享之前2~6步的结果
Step 7:头脑风暴、场景划分优先级(评估小组问涉众) 与质量属性效用树进行比对
Step 8:分析架构方法(评估小组、架构师) 使用新产生的优先级靠前的场景、架构师解释与之相关的架构决定
Step 9:展示结果(评估小组)
Phase 3:后续工作 Follow up
参与者:评估小组和主要涉众
输出:最终的评估报告
ATAM 输出
架构简要介绍
业务目标
以质量属性场景表示的带优先级的质量属性需求
效用树
一系列风险点和非风险点
风险主题
架构决定与质量需求之间的映射
敏感点、权衡点
最终评估报告