知识卡片

SAEM、信念网与图核:三种度量建模视角

普通读书笔记卡

内容

书中介绍的多种典型架构度量方法中,SAEM、SAABNet、SACMM三者代表了三种截然不同的建模视角,分别回答”评估框架该怎么搭”“不确定的专家知识该怎么用”“版本间差异该怎么量化”三个不同问题。SAEM(软件架构评估模型)把架构同时看作最终产品和设计过程中的中间产品,从外部质量属性(用户定义)和内部质量属性(开发者决定)两个角度建模:先参照ISO/IEC 9126-1标准从用户角度描述外部质量属性,再基于外部质量属性规约从开发者角度描述内部质量属性;接着从评估目的(如架构比较、质量预测)、评估角度(开发者/用户/维护者)、评估环境(最终产品或中间产品)出发定义评估目标,创建度量准则;最后做数据收集、度量、结果分析三步评估——这套框架的核心贡献是把”外部质量属性”和”内部质量属性”这两层容易混为一谈的东西显式拆开,用规约把两者的映射关系说清楚。SAABNet针对的是另一个问题:架构定性评估依赖专家知识(特定问题的解法、可能诱因、统计经验、审美判断),这类知识含糊、难以文档化——SAABNet用贝叶斯信念网(BBN)把这些定性知识结构化:先识别架构中的相关变量、定义变量间的概率依赖与独立性(定性描述)、评估条件概率(定量描述)、再测试BBN输出是否正确;变量分三层——架构质量属性变量(如可维护性)分解为质量准则变量(如错误容忍性),再分解为架构特征变量(如继承深度);由于难以获取足够架构信息,SAABNet的定量规约本身并不精确,但因为它的目的是辅助定性评估,这一点被认为是可以接受的。SACMM解决的是”如何量化两个架构版本之间的差异”这个问题:把架构建模成带标签节点和连接的图,借用”图内核”思想——把结构化对象描述为其子结构的集合,通过子结构配对比较分析相似性;由于子结构数量可能是指数级的,实践中用”图上随机游走”来近似计算相似度,避免指数级枚举;这个方法特别解决了传统结构比较方法中”组件被重命名后无法匹配”的稳定性问题,且已在Azureus等4个开源项目上验证。三者合在一起说明:架构度量领域没有一种”万能”的建模范式,评估框架、定性知识利用、版本差异量化,各自需要专门设计的数学工具。

参考来源

- 位置:《软件架构理论与实践》第13章《软件架构度量和评估》"13.2.1 SAEM方法""13.2.2 SAABNet方法""13.2.3 SACMM方法"节(源文件:_epub-src/OEBPS/text00105.html) - 结论依据:原文说明SAEM"从外部质量属性和内部质量属性两个角度来阐述它的评估模型",SAABNet"使用BBN来表示和使用开发过程中的知识,包含定性和定量的描述",SACMM"基于图内核定义差异度量准则来计算两个软件架构之间的距离……解决了传统软件结构比较方法中重命名组件的匹配问题",直接支撑本卡片结论。 - 原始内容:该方法考虑了软件架构中组件之间连接件的修改,适用于任何图描述的软件架构,解决了传统软件结构比较方法中重命名组件的匹配问题以及比较结果的稳定性问题……高层抽象的质量属性变量分解为低层抽象的度量准则变量,度量准则变量则分解为更低层抽象的架构特征变量。