知识卡片

架构演化度量的三类技术路径

普通读书笔记卡

内容

架构度量传统上主要关注某方面质量属性(复杂度、可维护性、可靠性),把度量技术应用到演化领域的研究相对较少,但随着软件规模扩张、演化成为常态,这个方向变得越来越重要——可预测、可重复、准确地控制软件开发过程和产品,需要能追踪多个历史版本、归纳和预测演化趋势的度量手段(例如对架构混乱、扩展性差的遗留系统,度量评估能帮助比较其架构与目标架构的差异,有针对性地修改并提取可复用模块)。近年出现的软件演化分析技术分三类,共同的基本步骤是先获取各版本分析模型、确定不同版本模型元素间的对应关系、发现差异,再据此得到高层演化模式或趋势分析结果,但三类方法各自的分析对象和目标不同。基于代码层的演化评估:讨论代码中增加/修改/删除属性方法类接口等操作对软件结构的影响,度量结果精确,但需要系统已有可执行代码,评估粒度太细、不适合宏观把握系统框架,也不适用于架构设计初始阶段(即还没有源代码的阶段)。基于模型的演化评估:比较不同版本架构模型的结构差异(如用UMLDiff比较面向对象系统逻辑结构差异、用图内核度量架构距离),能从高层跟踪演化情况和趋势,但对模型要求严格——模型必须正确完整、能充分反映架构设计;对开发早期只有高层设计、没有完整可度量源代码的系统,这类方法可以先做高层粗粒度建模评估;但对已经在演化中的系统,往往缺少详细的演化后模型文档,还需要额外用适当方法从系统中提取架构。基于版本管理信息的评估:借助版本演化中的软件制品(文档、设计图、规约等)进行评估,具有每个版本详细过程制品和统一组织编排方式,是有效的版本控制手段,但对数据信息的严格程度要求相较另两种方法更高,数据采集需要合理管理。三类方法呈现出一条清晰的取舍链:越贴近代码的方法越精确但适用阶段越窄,越贴近模型/文档的方法适用阶段越早但对数据质量的依赖越高。

参考来源

- 位置:《软件架构理论与实践》第13章《软件架构度量和评估》"13.1.2 多版本的软件架构度量和评估"节(源文件:_epub-src/OEBPS/text00104.html) - 结论依据:原文说明基于代码层的度量"需要系统已经具有可执行代码……评估方法的粒度较细,不适合于从宏观把握系统框架,且不适合于架构设计初始阶段",基于模型的方法"对模型有比较严格的要求,模型需要正确、完整",基于版本管理信息的方法"对于架构版本的数据信息相较其他两种方法更为严格",直接支撑本卡片结论。 - 原始内容:基于代码层的度量需要系统已经具有可执行代码,从修改影响分析的角度评估系统局部的修改对其他部分所产生的影响。由于该评估基于具体代码,其度量结果较为精确,然而该评估方法的粒度较细,不适合于从宏观把握系统框架。