ATAM的九个步骤:
(1)ATAM 方法的表述:评估负责人向参加会议的项目代表介绍ATAM(简要描述 ATAM 步骤和评估的结果)。
(2)商业动机的表述。项目决策者从商业角度介绍系统的概况。
(3)架构的表述。对架构进行详略适当的介绍。设计师要描述用来满足需求的架构方法或模式,还应描述技术约束条件及与其他系统的交互等。
(4)对架构方法进行分类。通过研究架构文档及倾听上一步的表述,了解系统使用的架构模式和方法(进行明确命名)。
(5)生成质量属性效用树。可以选取这样一棵树:根——质量属性——属性求精(细分)——场景(叶)。修剪这棵树,保留重要场景(不超过 50 个),再对场景按重要性给定优先级(用 H/M/L 的形式),再按场景实现的难易度来确定优先级(用 H/M/L 的形式),这样对所选定的每个场景就有一个优先级对(重要度,难易度),如(H,L)表示该场景重要且易实现。
(6)分析架构方法。评估小组按优先级对上述效用树的场景进行分析(小组成员提问,设计师回答、解释),探查实现场景的架构方法。评估小组把相关架构决策编成文档,确定其有风险决策、无风险决策、敏感点、权衡点,并对其进行分类(分别用表格列出)。
(7)集体讨论并确定场景的优先级。由于项目关系人的不同角色及所关心的场景不一致,因此,应鼓励项目关系人考虑效用树中尚未分析过的场景。集体讨论后,可通过投票的方式获得各场景的优先级。通过把集体讨论确定了优先级的一组场景与效用树中的那组场景进行比较,能发现设计师所想的与项目关系人实际所要的是否存在差距,这一差距是否导致风险。
(8)分析架构方法。类似于第 6 步,这时,评估小组引导设计师实现在第7 步中得到的优先级最高的场景。
(9)结果的表述。把在 ATAM 分析中得到的各种信息进行归纳总结,并呈现给项目关系人。主要有:
已编写了文档的架构方法;
经过讨论得到的场景集合及其优先级;
效用树;
所发现的有风险决策;
已编成文档的无风险决策;
所发现的敏感点和权衡点。
ATAM的九个结果:
(1)一个简洁的架构表述:ATAM 的一个要求是在一小时内表述架构,这样就得到了一个简洁、可理解的、面向普通项目关系人的架构表述。它是从架构文档中提炼形成的。
(2)表述清楚的业务目标。
(3)用场景集合捕获质量需求。
(4)架构决策到质量需求的映射。
(5)所确定的敏感点和权衡点集合:这个集合是一些对一个或多个质量属性具有显著影响的架构决策。如:备份数据库就是这样一个架构决策,它对可靠性产生正面影响,而对系统性能产生负面影响,因此需要进行权衡。
(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 排序,从而确定选取策略的优先级。
- 上一篇: 论软件的组件式开发
- 下一篇: 系统架构设计师知识导图
评论