软件架构评估是在对架构分析、评估的基础上,对架构策略的选取进行决策。它也可以灵活地运用于对软件架构进行评审等工作中。
一、软件架构评估的方法
业界已开发出多种软件架构评估的方法,按基于的技术手段来看,可以分为三类:基于调查问卷或检查表的方式、基于场景的方式和基于度量的方式。
(1)基于调查问卷或检查表的方式
该方式的关键是要设计好问卷或检查表,它充分 利用系统相关人员的经验和知识,获得对架构的评估。其缺点是在很大程度上依赖于评估人 员的主观推断。
(2)基于场景的方式
基于场景的方式由 SEI 首先提出并应用在架构权衡分析法 (Architecture Tradeoff Analysis Method,ATAM)和软件架构分析方法(Software Architecture Analysis Method,SAAM)中。它是通过分析软件架构对场景(也就是对系统的使用或修改 活动)的支持程度,从而判断该架构对这一场景所代表的质量需求的满足程度。
(3)基于度量的方式
它是建立在软件架构度量的基础上的,涉及三个基本活动,首 先需要建立质量属性和度量之间的映射原则,即确定怎样从度量结果推出系统具有什么样的 质量属性;然后从软件架构文档中获取度量信息;最后根据映射原则分析推导出系统的质量 属性。它能提供更为客观和量化的质量评估,但它对评估人员及其使用的技术有较高 的要求。ATAM 中也使用了度量的思想(度量效用)。
二、架构的权衡分析法
从技术角度对软件架构进行评估,旨在通过分析来预见软件的质量;通过分析来创建、 选择、评估与比较不同的架构。
ATAM 方法不但能够揭示架构如何满足特定的质量需求(例如,性能和可修改性),而且还 提供了分析这些质量需求之间交互作用的方法。使用 ATAM 方法评价一个软件架构的目的 是理解架构设计满足系统质量需求的结果。
ATAM 产生如下结果。
(1)一个简洁的架构表述:ATAM 的一个要求是在一小时内表述架构,这样就得到了 一个简洁、可理解的、面向普通项目关系人的架构表述。它是从架构文档中提炼形成的。
(2)表述清楚的业务目标。
(3)用场景集合捕获质量需求。
(4)架构决策到质量需求的映射。
(5)所确定的敏感点和权衡点集合。
(6)有风险决策和无风险决策。
(7)风险主题的集合。
(8)产生一些附属结果。
(9)还产生一些无形结果,如能够使项目关系人产生“团队感”,提供了一个交流平台和沟通渠道,使大家更好地理解架构(优势及弱点)。
ATAM 的 9 个步骤如下。
(1)ATAM 方法的表述:评估负责人向参加会议的项目代表介绍 ATAM(简要描述 ATAM步骤和评估的结果)。
(2)商业动机的表述。
(3)架构的表述。
(4)对架构方法进行分类。
(5)生成质量属性效用树。
根——质量属性——属性求精(细分)——场景(叶)。修剪这棵树,保留重要场景(不超过 50 个),再对场景按重要性给定 优先级(用 H/M/L 的形式),再按场景实现的难易度来确定优先级(用 H/M/L 的形式), 这样对所选定的每个场景就有一个优先级对(重要度,难易度),如(H,L)表示该场景重要且易实现。
(6)分析架构方法。
评估小组按优先级对上述效用树的场景进行分析(小组成员提问,设计师回答、解释),探查实现场景的架构方法。
(7)集体讨论并确定场景的优先级。
(8)分析架构方法。
(9)结果的表述。
结果的表述包括:
已编写了文档的架构方法;
经过讨论得到的场景集合及其优先级;
效用树;
所发现的有风险决策;
已编成文档的无风险决策;
所发现的敏感点和权衡点。
三、成本效益分析法
成本效益分析法(the Cost Benefit Analysis Method,CBAM)是在 ATAM 上构建,用来对架构设计决策的成本和收益进行建模,是优 化此类决策的一种手段。CBAM 的思想就是架构策略影响系统的质量属性,反过来这些质量 属性又会为系统的项目关系人带来一些收益(称为“效用”),CBAM 协助项目关系人根据其 投资回报(ROI)选择架构策略。CBAM 在 ATAM 结束时开始,它实际上使用了 ATAM 评 估的结果。
CBAM 的步骤如下。
(1)整理场景。
整理 ATAM 中获取的场景,根据商业目标确定这些场景的优先级,并 选取优先级最高的 1/3 的场景进行分析。
(2)对场景进行求精。
为每个场景获取最坏情况、当前情况、期望情况和最好情况的 质量属性响应级别。
(3)确定场景的优先级。
项目关系人对场景进行投票,其投票是基于每个场景“所期 望的”响应值,根据投票结果和票的权值,生成一个分值(场景的权值)。
(4)分配效用。
对场景的响应级别(最坏情况、当前情况、期望情况和最好情况)确 定效用表。
(5)策略—场景—响应级别
架构策略涉及哪些质量属性及响应级别,形成相关的策略—场景—响应级别的对 应关系。
(6)确定“期望的”效用表
使用内插法确定“期望的”质量属性响应级别的效用。即根据第 4 步的效用表以 及第 5 步的对应关系,确定架构策略及其对应场景的效用表。
(7)计算各架构策略的总收益。
根据第 3 步的场景的权值及第 6 步的架构策略效用 表,计算出架构策略的总收益得分。
(8)确定选取策略的优先级
根据受成本限制影响的 ROI(Return On Investment,投资报酬率)选择架构策略。 根据开发经验估算架构策略的成本,结合第 7 步的收益,计算出架构策略的 ROI,按 ROI 排 序,从而确定选取策略的优先级。