Skip to main content
QUICK REVIEW

[論文レビュー] Fast Static Analyses of Software Product Lines -- An Example With More Than 42,000 Metrics

Sascha El-Sharkawy, Adam Krafczyk|arXiv (Cornell University)|Oct 12, 2021
Advanced Software Engineering Methodologies参考文献 28被引用数 5
ひとこと要約

本稿では、ソフトウェア製品線(SPLs)の高速でスケーラブルな静的解析を可能にする、縮小された抽象構文木(RASTs)を用いた新しい部分解析技術を提示する。この手法により、Linuxカーネルのような大規模システムにおいて、42,000以上のメトリクスバリエーション(従来の単一システム用および変数対応メトリクスを含む)を1秒未塔のメトリクス単位で処理できる。

ABSTRACT

Context: Software metrics, as one form of static analyses, is a commonly used approach in software engineering in order to understand the state of a software system, in particular to identify potential areas prone to defects. Family-based techniques extract variability information from code artifacts in Software Product Lines (SPLs) to perform static analysis for all available variants. Many different types of metrics with numerous variants have been defined in literature. When counting all metrics including such variants, easily thousands of metrics can be defined. Computing all of them for large product lines can be an extremely expensive process in terms of performance and resource consumption. Objective: We address these performance and resource challenges while supporting customizable metric suites, which allow running both, single system and variability-aware code metrics. Method: In this paper, we introduce a partial parsing approach used for the efficient measurement of more than 42,000 code metric variations. The approach covers variability information and restricts parsing to the relevant parts of the Abstract Syntax Tree (AST). Conclusions: This partial parsing approach is designed to cover all relevant information to compute a broad variety of variability-aware code metrics on code artifacts containing annotation-based variability, e.g., realized with C-preprocessor statements. It allows for the flexible combination of single system and variability-aware metrics, which is not supported by existing tools. This is achieved by a novel representation of partially parsed product line code artifacts, which is tailored to the computation of the metrics. Our approach consumes considerably less resources, especially when computing many metric variants in parallel.

研究の動機と目的

  • 数千のコードおよび変数対応メトリクスを伴う大規模なソフトウェア製品線(SPLs)の解析における高い計算コストに対処すること。
  • 従来のソフトウェアメトリクスとSPL固有の変数対応メトリクスを組み合わせるためのツール支援の欠如を克服すること。
  • メトリクス計算中のリソースオーバーヘッドを最小限に抑えることで、SPLsのスケーラブルで高性能な静的解析を可能にすること。
  • 機能レベルとコードレベルのメトリクスを任意に組み合わせられる、柔軟でカスタマイズ可能なメトリクススイートをサポートすること。
  • 実世界のシステムにおけるSPLメトリクススイート(例:MetricHaven)の体系的評価の基盤を提供すること。

提案手法

  • メトリクス計算に必要な情報を保持しつつ、関係のない構文的詳細を抽象化する、縮小された抽象構文木(RASTs)を導入する。
  • 完全なプリプロセッシングを行わず、Cプリプロセッサディレクティブなどの変数情報を保持したまま、プリプロセスされていないソースコードを直接解析する。
  • 不要な言語的構成要素を省いた粗い粒度のAST表現を構築し、メモリおよび処理のオーバーヘッドを低減する。
  • RASTを1回のスキャンでメトリクス値を計算し、CPUキャッシュの活用を図り、データ構造の再構築を最小限に抑える。
  • 特徴モデルのデータとコードレベルのASTを統合することで、機能およびコードメトリクスの統合的解析を可能にする、ハイブリッドメトリクス計算をサポートする。
  • Halsteadのような、完全なASTの忠実度を必要とするメトリクスを除き、一般的なSPLメトリクスのニーズに特化したRAST表現を設計する。

実験結果

リサーチクエスチョン

  • RQ1単一システムおよび変数対応のコードメトリクスを柔軟に測定するための要件は何か?
  • RQ2既存のコードおよび変数モデル用の変数対応メトリクスを効果的に統合する方法は何か?
  • RQ3高密度なメトリクスを有する大規模SPLsのスケーラブルな解析を実現するための抽象化は何か?

主な発見

  • 本手法は、Linuxカーネル全体の解析に約6時間20分を要し、42,000以上のメトリクスバリエーションを処理した。
  • 平均して1メトリクスあたり0.76秒の処理時間であり、29,976メトリクスの関数単位の処理時間は約0.06秒であった。
  • RASTベースの解析により、特に並列で多数のメトリクスバリエーションを解析する場合に、フルAST処理と比較してリソース消費を顕著に低減した。
  • 本フレームワークは、変数対応コードメトリクスと機能レベルメトリクスの柔軟な組み合わせを成功裏にサポートしており、既存のツールでは実現不可能な機能である。
  • 単一パスでのRAST上でのメトリクス計算により、強力なキャッシュ利用が可能となり、高いパフォーマンスとスケーラビリティを実現した。
  • 本手法は非常にカスタマイズ可能であり、解析対象のメトリクス数を減らすことで顕著なパフォーマンス向上が得られる。

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

論文設計から論文執筆まで、研究時間を劇的に削減しましょう。

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

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