Skip to main content
QUICK REVIEW

[論文レビュー] Variability Abstractions: Trading Precision for Speed in Family-Based Analyses (Extended Version)

Aleksandar S. Dimovski, Claus Brabrand|arXiv (Cornell University)|Mar 16, 2015
Advanced Software Engineering Methodologies参考文献 18被引用数 4
ひとこと要約

本稿では、ガロア接続と抽象解釈を用いたばらつき抽象化を導入し、ソフトウェア製品線(SPLs)の高速で近似可能なファミリベースのデータフロー解析を可能にする。解析の前段階で抽象的SPLに構文的変換を適用することにより、正確性を保ちつつ計算速度を向上させる。この手法は、reconfiguratorと呼ばれるツールを用いて3つのJava SPLベンチマークで成功裏に評価された。

ABSTRACT

Family-based (lifted) data-flow analysis for Software Product Lines (SPLs) is capable of analyzing all valid products (variants) without generating any of them explicitly. It takes as input only the common code base, which encodes all variants of a SPL, and produces analysis results corresponding to all variants. However, the computational cost of the lifted analysis still depends inherently on the number of variants (which is exponential in the number of features, in the worst case). For a large number of features, the lifted analysis may be too costly or even infeasible. In this paper, we introduce variability abstractions defined as Galois connections and use abstract interpretation as a formal method for the calculational-based derivation of approximate (abstracted) lifted analyses of SPL programs, which are sound by construction. Moreover, given an abstraction we define a syntactic transformation that translates any SPL program into an abstracted version of it, such that the analysis of the abstracted SPL coincides with the corresponding abstracted analysis of the original SPL. We implement the transformation in a tool, reconfigurator that works on Object-Oriented Java program families, and evaluate the practicality of this approach on three Java SPL benchmarks.

研究の動機と目的

  • ソフトウェア製品線(SPLs)におけるバリアント数の増加に伴う解析コストの指数関数的増加に対処すること、特に機能数が多い場合に有効である。
  • すべてのバリアントを明示的に生成せずにSPLの効率的解析を可能にするために、構成空間の抽象化を実現すること。
  • 正確な近似解析を形式的で計算可能な方法で導出するための、抽象解釈を用いた形式的かつ体系的な手法を提供すること。
  • 抽象化と解析導出が可換であることを保証し、解析の前段階でSPLに直接抽象化を適用できるようにすること。
  • 実世界のJava SPLベンチマークを用いたプロトタイプツールを用いて、このアプローチの実用性を評価すること。

提案手法

  • ガロア接続を用いて、精度と計算効率のトレードオフを実現するばらつき抽象化を定義する。
  • 抽象解釈を用いて、元の解析から整合的な抽象化された上昇解析を形式的に導出する。
  • 2つの基本的抽象化演算子(projectとjoin)と、2つの合成的演算子(直列合成と並列合成)を導入する。
  • SPLを抽象化されたバージョンにマッピングする構文的変換(reconfiguratorツールを介して)を開発し、抽象化されたSPLを解析することで、元のSPLの解析を抽象化した結果と同一の結果が得られることを保証する。
  • 抽象化と解析導出が可換であることを保証し、解析導出の後にではなく、プログラムレベルで直接抽象化を適用できるようにする。
  • SPLにおける条件付き構文(例:#if)の形式的意味論を定義し、抽象化された構成と抽象化されたドメイン上の上昇解析を扱う。

実験結果

リサーチクエスチョン

  • RQ1ガロア接続を用いて、SPLの正確で近似可能な解析を可能にするばらつき抽象化を形式的に定義できるか?
  • RQ2抽象解釈を用いて、正確な解析から体系的に抽象化された上昇解析を導出できるか?
  • RQ3構文的変換によりSPLに直接抽象化を適用することで、導出された解析を抽象化した結果と同一の抽象化解析が得られるか?
  • RQ4実際の現場で、このアプローチが解析時間を著しく短縮しながらも、整合性と使いやすさを維持する程度はどの程度か?
  • RQ5多くの機能を有する実世界のSPLにこのアプローチがスケーラブルであり、実行不可能だった解析を実行可能にするか?

主な発見

  • 構成空間の抽象化により、SPLの整合的で近似可能な解析が可能となり、正しさを損なうことなく計算コストが削減された。
  • reconfiguratorツールは、SPLを抽象化されたバージョンに変換することで、実用的な妥当性を示した。この変換により、抽象化された解析結果が元の解析結果と同等になることが保証された。
  • 本稿では、抽象化と解析導出が可換であることを証明し、プログラムレベルでの早期抽象化により効率的な解析が可能であることを示した。
  • project、join、直列合成、並列合成の演算子を通じて、モジュラーかつ合成的な抽象化を実現し、柔軟な精度-速度トレードオフを可能にした。
  • 3つのJava SPLベンチマークにおける評価により、このアプローチが解析時間を顕著に短縮する一方で、静的解析に必要な情報を保持していることが確認された。
  • 抽象化された解析は構成上、整合的であるため、すべての結果が正確な解析の保守的近似であることが保証された。

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

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

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

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