第9章 · 播客 第12集
软件架构设计 · 架构评估:三方式、ATAM九步与CBAM八步
🎙️ 本集播客:第12集:架构评估的三大方式各自特点与缺点;ATAM 的目的、九个产出、九个步骤与效用树细节(H/M/L 优先级对);CBAM 在 ATAM 之上构建的思想与八个步骤——练习题第十、十五题原产地。 语音由微软 Edge 神经网络语音预生成(女声·晓伊,男声·云希)。点击下方任意对话可直接从该句开始播,当前句朗读时下一句已预先加载,无缝衔接。
明
阿明
师姐,架构评估这块的方法名特别多,先帮我立个总框架?
雅
小雅
先定性:软件架构评估是在对架构分析、评估的基础上,对架构策略的选取进行决策,它也可以灵活地运用于对架构进行评审等工作。按基于的技术手段来看,评估方法分三类。基于调查问卷或检查表的方式:关键是设计好问卷或检查表,充分利用系统相关人员的经验和知识,缺点是在很大程度上依赖于评估人员的主观推断。
雅
小雅
基于场景的方式:由 SEI 首先提出并应用在架构权衡分析法 ATAM 和软件架构分析方法 SAAM 中,通过分析软件架构对场景也就是对系统的使用或修改活动的支持程度,判断该架构对这一场景所代表的质量需求的满足程度。基于度量的方式:建立在软件架构度量的基础上,涉及三个基本活动——首先建立质量属性和度量之间的映射原则,然后从软件架构文档中获取度量信息,最后根据映射原则分析推导出系统的质量属性;它能提供更为客观和量化的质量评估,但对评估人员及其使用的技术有较高要求。
明
阿明
三类各自的标签:问卷检查表靠经验、主观性强;场景由 SEI 首先提出、用在 ATAM 和 SAAM;度量最客观量化但要求高。
雅
小雅
补一句:ATAM 中也使用了度量的思想,度量效用。现在进 ATAM 主场。Kazman 等人在 2000 年提出的架构的 ATAM 方法,即 Architecture Tradeoff Analysis Method,架构权衡分析法。它不但能够揭示架构如何满足特定的质量需求例如性能和可修改性,而且还提供了分析这些质量需求之间交互作用的方法。使用 ATAM 方法评价一个软件架构的目的是:理解架构设计满足系统质量需求的结果——练习题第十题就考这句,选项「计算架构的成本效益」是 CBAM 的事、「确定功能需求优先级」「生成用例模型」都是偷换。
雅
小雅
ATAM 产生的结果原文列了九条,我挑核心说全:一个简洁的架构表述——ATAM 的一个要求是在一小时内表述架构,这样就得到了一个简洁、可理解的、面向普通项目关系人的架构表述;表述清楚的业务目标;用场景集合捕获质量需求;架构决策到质量需求的映射;所确定的敏感点和权衡点集合——这个集合是一些对一个或多个质量属性具有显著影响的架构决策,例如备份数据库就是这样一个架构决策,它对可靠性产生正面影响而对系统性能产生负面影响,因此需要进行权衡;
雅
小雅
有风险决策和无风险决策;风险主题的集合,找到它们旨在采取相应措施;产生一些附属结果,评估过程形成的文档经受了评估的考验,可以作为经验保留;还产生一些无形结果,如能够使项目关系人产生「团队感」,提供了一个交流平台和沟通渠道,使大家更好地理解架构的优势及弱点。
明
阿明
「一小时内表述架构」这个数字细节和「备份数据库对可靠性正面对性能负面」这个权衡点例子,都太像选项了。
雅
小雅
都是原题级的。接着 ATAM 的 9 个步骤,这是简答级考点,逐个过。第一步,ATAM 方法的表述:评估负责人向参加会议的项目代表介绍 ATAM,简要描述 ATAM 步骤和评估的结果。第二步,商业动机的表述:项目决策者从商业角度介绍系统的概况。第三步,架构的表述:对架构进行详略适当的介绍,设计师要描述用来满足需求的架构方法或模式,还应描述技术约束条件及与其他系统的交互等。第四步,对架构方法进行分类:通过研究架构文档及倾听上一步的表述,了解系统使用的架构模式和方法,进行明确命名。
雅
小雅
第五步,生成质量属性效用树:可以选取这样一棵树,根——质量属性——属性求精即细分——场景即叶。修剪这棵树,保留重要场景,不超过 50 个,再对场景按重要性给定优先级,用 H/M/L 的形式,再按场景实现的难易度来确定优先级,也用 H/M/L,这样对所选定的每个场景就有一个优先级对,即重要度和难易度,例如 H、L 表示该场景重要且易实现。
明
阿明
效用树四层是根、质量属性、属性求精、场景;保留不超过 50 个场景;每个场景一个优先级对。
雅
小雅
第六步,分析架构方法:评估小组按优先级对效用树的场景进行分析,小组成员提问、设计师回答解释,探查实现场景的架构方法;把相关架构决策编成文档,确定其有风险决策、无风险决策、敏感点、权衡点,并对其进行分类,分别用表格列出。第七步,集体讨论并确定场景的优先级:由于项目关系人的不同角色及所关心的场景不一致,应鼓励项目关系人考虑效用树中尚未分析过的场景,集体讨论后可通过投票的方式获得各场景的优先级;
雅
小雅
通过把集体讨论确定了优先级的一组场景与效用树中的那组场景进行比较,能发现设计师所想的与项目关系人实际所要的是否存在差距,这一差距是否导致风险。第八步,分析架构方法:类似于第 6 步,这时评估小组引导设计师实现在第 7 步中得到的优先级最高的场景。第九步,结果的表述:把 ATAM 分析中得到的各种信息归纳总结并呈现给项目关系人,主要有已编写了文档的架构方法、经过讨论得到的场景集合及其优先级、效用树、所发现的有风险决策、已编成文档的无风险决策、所发现的敏感点和权衡点。
明
阿明
九步我串一遍:表述方法、商业动机、架构表述、方法分类、效用树、分析方法、集体讨论场景、再分析方法、结果表述。第六步和第八步都叫分析架构方法,中间隔一个集体讨论,这个结构记住了。
雅
小雅
串得对。最后 CBAM,成本效益分析法,the Cost Benefit Analysis Method。背景:在大型复杂系统中最大的权衡通常必须考虑经济性,因此需要从经济角度建立成本、收益、风险和进度等方面的软件「经济」模型。CBAM 是在 ATAM 上构建的,用来对架构设计决策的成本和收益进行建模,是优化此类决策的一种手段——练习题第十五题问 CBAM 在哪个方法基础上构建,答案 ATAM,别选 SAAM。
雅
小雅
CBAM 的思想就是架构策略影响系统的质量属性,反过来这些质量属性又会为系统的项目关系人带来一些收益,称为「效用」,CBAM 协助项目关系人根据其投资回报 ROI 选择架构策略。还有一句时间关系:CBAM 在 ATAM 结束时开始,它实际上使用了 ATAM 评估的结果。
雅
小雅
CBAM 的步骤八条。第一步,整理场景:整理 ATAM 中获取的场景,根据商业目标确定优先级,并选取优先级最高的 1/3 的场景进行分析——这个「三分之一」是数字考点。第二步,对场景进行求精:为每个场景获取最坏情况、当前情况、期望情况和最好情况的质量属性响应级别,四种情况一组。第三步,确定场景的优先级:项目关系人对场景进行投票,投票基于每个场景「所期望的」响应值,根据投票结果和票的权值生成一个分值即场景的权值。第四步,分配效用:对场景的响应级别确定效用表。
雅
小雅
第五步,架构策略涉及哪些质量属性及响应级别,形成相关的策略—场景—响应级别的对应关系。第六步,使用内插法确定「期望的」质量属性响应级别的效用:根据第四步的效用表以及第五步的对应关系,确定架构策略及其对应场景的效用表。第七步,计算各架构策略的总收益:根据第三步的场景权值及第六步的策略效用表,计算出总收益得分。第八步,根据受成本限制影响的 ROI 即投资报酬率选择架构策略:根据开发经验估算架构策略的成本,结合第七步的收益计算 ROI,按 ROI 排序,确定选取策略的优先级。
明
阿明
CBAM 八步的关键数字和词:选最高三分之一场景、四种情况是最坏当前期望最好、ROI 投资报酬率排序、在 ATAM 上构建且在 ATAM 结束时开始。
雅
小雅
全对。本集必背:评估三方式——调查问卷或检查表主观推断、场景由 SEI 首先提出用在 ATAM 和 SAAM、度量三活动是建映射原则取度量信息推导质量属性;ATAM 由 Kazman 等 2000 年提出,目的是理解架构设计满足系统质量需求的结果并分析质量需求间的交互作用,一小时内表述架构,产出九类含敏感点和权衡点,备份数据库例子是可靠性正、性能负;
雅
小雅
九步顺序——方法表述、商业动机、架构表述、方法分类、效用树(根-质量属性-属性求精-场景,不超过 50 个,H/M/L 优先级对)、分析方法、集体讨论定优先级、再分析方法、结果表述;CBAM 在 ATAM 上构建、ATAM 结束时开始、按 ROI 选策略,八步从整理场景选三分之一到按 ROI 排序。
明
阿明
评估通关。下一集是本章最后一集了吧?
雅
小雅
对,压轴集把剩余三块收完:构件与 CORBA/J2EE/DNA 三大商用规范、产品线与 DSSA、架构演化七步和三种视图类型,然后全章必背大清单,最后引出第 10 章设计模式——练习题第十四题 DSSA 活动阶段在下一集等你。