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