Skip to main content
QUICK REVIEW

[论文解读] MetricHaven -- More Than 23,000 Metrics for Measuring Quality Attributes of Software Product Lines

Sascha El-Sharkawy, Adam Krafczyk|arXiv (Cornell University)|Oct 19, 2021
Software Engineering Research参考文献 17被引用 4
一句话总结

MetricHaven 是一个可扩展的开源工具,可灵活计算软件产品线(SPLs)的超过 23,000 种组合度量,整合了传统代码度量、感知可变性的度量以及特征模型度量。它使用统一的抽象语法树(AST)解析带有预处理指令的 C 代码,并支持并行执行,使得在不到 3.5 小时内完成对 Linux 内核所有 23,342 种度量变体的测量成为可能——平均每种度量耗时约 0.5 秒。

ABSTRACT

Variability-aware metrics are designed to measure qualitative aspects of software product lines. As we identified in a prior SLR \cite{El-SharkawyYamagishi-EichlerSchmid19}, there exist already many metrics that address code or variability separately, while the combination of both has been less researched. MetricHaven fills this gap, as it extensively supports combining information from code files and variability models. Further, we also enable the combination of well established single system metrics with novel variability-aware metrics, going beyond existing variability-aware metrics. Our tool supports most prominent single system and variability-aware code metrics. We provide configuration support for already implemented metrics, resulting in 23,342 metric variations. Further, we present an abstract syntax tree developed for MetricHaven, that allows the realization of additional code metrics. Tool: https://github.com/KernelHaven/MetricHaven Video: https://youtu.be/vPEmD5Sr6gM

研究动机与目标

  • 为解决在软件产品线(SPLs)中缺乏公开可用、可扩展的工具套件的问题,这些工具套件可结合代码和可变性信息来度量质量属性。
  • 在单一分析框架中支持传统代码度量、感知可变性的代码度量以及特征模型度量的灵活组合。
  • 为研究人员提供一个可重用、可扩展的基础设施,用于开发、评估和实验新的感知可变性的度量。
  • 在大规模 SPLs(如 Linux 内核)上实现高效、并行化的度量计算,将所有度量变体的分析时间缩短至 3.5 小时以内。
  • 通过直接使用工具,支持开发人员在基于注解的 SPLs 中检测代码异味和质量缺陷。

提出的方法

  • 该工具作为 KernelHaven 的插件构建,重用了其数据模型和并行执行管道,以实现可扩展的度量分析。
  • 设计了一种自定义的统一抽象语法树(AST),用于表示编程语言结构(如 C 语句)和预处理指令(如 #if、#ifdef),从而在带注解的代码上实现一致的度量计算。
  • AST 支持细粒度的函数级别度量计算,允许在多个线程之间高效并行化。
  • MetricHaven 通过允许特征度量(如每个特征的约束数量)作为输入用于感知可变性的代码度量(如 McCabe 的圈复杂度),实现度量的任意组合。
  • 系统通过属性文件支持配置驱动的度量选择,允许用户运行全部 23,342 种度量变体或特定子集。
  • 该工具重用了现有的可变性和构建模型提取器,并可通过添加新的提取器来扩展以支持新的 SPLs。

实验结果

研究问题

  • RQ1如何有效结合传统代码度量与感知可变性的度量,以度量软件产品线的质量属性?
  • RQ2支持大规模 SPLs 上超过 23,000 种度量变体的统一度量计算框架在可扩展性和性能方面表现如何?
  • RQ3特征模型度量(如每个特征的约束数量)在多大程度上可以整合到代码复杂度度量中,以反映可变性引起的复杂度?
  • RQ4共享的 AST 表示是否能有效建模源代码和预处理注解,而无需完全满足语法正确性?
  • RQ5可扩展的开源工具基础设施在多大程度上能够同时支持研究实验和工业级代码质量分析?

主要发现

  • MetricHaven 通过结合传统代码度量、感知可变性的代码度量以及特征模型度量,支持总共 23,342 种不同的度量变体。
  • 该工具实现了高性能,在配备 128 GB 内存的双 Xeon 系统上,对 Linux 内核(版本 4.15)的所有 23,342 种度量变体的测量耗时约 3.5 小时。
  • 平均而言,每个度量在整个 Linux 内核源码上的计算时间少于 1 秒,相当于每函数约 40ms。
  • 统一的 AST 能够准确建模预处理指令和代码元素,形成单一且一致的结构,从而促进复杂度量的组合。
  • 该系统表现出强大的并行化效率,函数级别的度量计算高度可并行化,并可在多个线程间可扩展。
  • 该框架支持新颖的度量组合,例如将特征模型复杂度(如 NoC 度量)作为权重用于圈复杂度计算,以反映可变性引起的复杂度。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。