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 コードを解析し、並列実行をサポートすることで、Linux カーネルの全 23,342 種類のメトリクスバリエーションを 3.5 時間未塔で測定可能であり、平均して 1 メトリクスあたり約 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)における品質属性を測定するための、公開可能で拡張可能なツールスイートが、従来のコード情報と変動性情報を統合して不足している点を補う。
  • 従来のコードメトリクス、変動性に配慮したコードメトリクス、および機能モデルメトリクスを、1 つの分析フレームワーク内で柔軟に組み合わせることを可能にする。
  • 研究者が新しい変動性に配慮したメトリクスを開発・評価・実験するために再利用可能で拡張可能なインfrastrutureを提供する。
  • Linux カーネルのような大規模な SPL に対して、効率的かつ並列化されたメトリクス計算を可能にし、全メトリクスバリエーションの分析時間を 3.5 時間未塔に短縮する。
  • 直接ツールを使用することで、実務家がアノテーションベースの SPL におけるコードスモットや品質問題を検出できるように支援する。

提案手法

  • ツールは KernelHaven のプラグインとして構築され、データモデルと並列実行パイプラインを再利用することで、スケーラブルなメトリクス分析を実現する。
  • プログラミング言語構文(例:C ステートメント)とプリプロセッサディレクティブ(例:#if, #ifdef)の両方を表現できる独自の統一抽象構文木(AST)を設計し、アノテートされたコードにおける一貫したメトリクス計算を可能にする。
  • AST は関数レベルでの細粒度のメトリクス計算をサポートしており、複数スレッド間での効率的な並列化を可能にする。
  • MetricHaven は、機能メトリクス(例:1 機能あたりの制約数)を変動性に配慮したコードメトリクス(例: McCabe の巡回的複雑度)の入力として使用できるようにすることで、任意のメトリクスの組み合わせを可能にする。
  • プロパティファイルによる構成駆動型のメトリクス選択をサポートし、全 23,342 種類のメトリクスバリエーションまたは特定のサブセットを実行可能にする。
  • 既存の変動性およびビルドモデル抽出器を活用しており、追加の抽出器を追加することで、新たな SPL への対応が可能である。

実験結果

リサーチクエスチョン

  • RQ1従来のコードメトリクスを変動性に配慮したメトリクスと効果的に組み合わせることで、ソフトウェア製品線における品質属性を測定する方法は何か?
  • RQ2大規模な SPL において 23,000 を超えるメトリクスバリエーションをサポートする統一されたメトリクス計算フレームワークのスケーラビリティとパフォーマンスはどの程度か?
  • RQ3機能モデルメトリクス(例:1 機能あたりの制約数)をコード複雑度メトリクスに統合することで、変動性に起因する複雑度をどの程度反映できるか?
  • RQ4完全な文法的正しさを必要とせずに、共通の AST 表記によってソースコードとプリプロセッサアノテーションの両方を効果的にモデル化できるか?
  • RQ5拡張可能でオープンソースのツールインfrastruture は、SPL における研究の実験と産業界のコード品質分析をどの程度効果的に支援できるか?

主な発見

  • MetricHaven は、従来のコードメトリクス、変動性に配慮したコードメトリクス、および機能モデルメトリクスを組み合わせることで、合計 23,342 種類の異なるメトリクスバリエーションをサポートする。
  • 高いパフォーマンスを達成しており、Linux カーネル(バージョン 4.15)の全 23,342 種類のメトリクスバリエーションを、128 GB RAM のデュアル Xeon システムで約 3.5 時間で測定した。
  • 平均して、Linux カーネル全体の全ソースコードに対して 1 メトリクスあたり 1 秒未塔の計算時間であり、関数あたり約 40 ms に相当する。
  • 統一された AST により、プリプロセッサディレクティブとコード要素が一貫した構造で正確にモデル化され、複雑なメトリクスの組み合わせが容易になる。
  • システムは優れた並列処理効率を示しており、関数ごとのメトリクス計算は複数スレッドにわたって非常に並列化可能でスケーラブルである。
  • フレームワークにより、新しいメトリクスの組み合わせが可能になり、例えば機能モデルの複雑度(例:NoC メトリック)を巡回的複雑度の計算に重みとして使用することで、変動性に起因する複雑度を反映できるようになった。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。