Variability Abstractions:在基于族的分析中以精度换取速度(扩展版)
Variability Abstractions: Trading Precision for Speed in Family-Based Analyses (Extended Version)
摘要:
软件产品线(SPL)的基于族(提升)的数据流分析能够分析所有有效的产品(变体),而无需显式生成任何产品。它只将公共代码库作为输入,该公共代码库对SPL的所有变体进行编码,并产生对应于所有变体的分析结果。然而,提升分析的计算成本仍然固有地取决于变体的数量(在最坏的情况下,其在特征的数量上是指数的)。对于大量的特征,提升分析可能成本太高,甚至不可行。在本文中,我们引入定义为伽罗瓦连接的变化抽象,并使用抽象的解释作为一种正式的方法,计算为基础的推导近似(抽象)解除分析SPL程序,这是健全的建设。此外,给定一个抽象,我们定义了一个语法转换,将任何SPL程序转换为它的抽象版本,这样,对抽象SPL的分析与对原始SPL的相应抽象分析相一致。我们实现了转换的工具,重配置器,面向对象的Java程序的家庭,并评估这种方法的实用性上的三个Java SPL基准。
英文摘要:
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.
机构、总结、中文摘要均由AI分析而来,可能存在错误,请以论文正文为准。