A software product line for static analyses: the OPAL framework

Implementations of static analyses are usually tailored toward a single goal to be efficient, hampering reusability and adaptability of the components of an analysis. To solve these issues, we propose to implement static analyses as highly-configurable software product lines (SPLs). Furthermore, we also discuss an implementation of an SPL for static analyses -- called OPAL -- that uses advanced language features offered by the Scala programming language to get an easily adaptable and (type-)safe software product line. OPAL is a general purpose library for static analysis of Java Bytecode that is already successfully used. We present OPAL and show how a design based on software produce line engineering benefits the implementation of static analyses with the framework.

[1]  Michael Eichberg,et al.  Reify your collection queries for modularity and speed! , 2012, AOSD.

[2]  Eric Bodden,et al.  Inter-procedural data-flow analysis with IFDS/IDE and Soot , 2012, SOAP '12.

[3]  Michael Eichberg,et al.  Automatic Incrementalization of Prolog Based Static Analyses , 2007, PADL.

[4]  David Grove,et al.  A framework for call graph construction algorithms , 2001, TOPL.

[5]  Mark N. Wegman,et al.  Efficiently computing static single assignment form and the control dependence graph , 1991, TOPL.

[6]  Michael Eichberg,et al.  Modular specification and checking of structural dependencies , 2013, AOSD.

[7]  Frank Yellin,et al.  The Java Virtual Machine Specification , 1996 .

[8]  Frank van der Linden,et al.  Software product lines in action , 2007 .

[9]  Thomas W. Reps,et al.  Precise interprocedural dataflow analysis via graph reachability , 1995, POPL '95.

[10]  Martin Odersky,et al.  Scalable component abstractions , 2005, OOPSLA '05.

[11]  Jacques Klein,et al.  Highly precise taint analysis for Android applications , 2013 .

[12]  Jacques Klein,et al.  Dexpler: converting Android Dalvik bytecode to Jimple for static analysis with Soot , 2012, SOAP '12.

[13]  Klaus Schmid,et al.  Software product lines in action - the best industrial practice in product line engineering , 2007 .

[14]  Michael Eichberg,et al.  Model-Driven Engineering of Machine Executable Code , 2010, ECMFA.

[15]  Laurie Hendren,et al.  Soot: a Java bytecode optimization framework , 2010, CASCON.

[16]  Mira Mezini,et al.  An Overview of CaesarJ , 2006, LNCS Trans. Aspect Oriented Softw. Dev..

[17]  Laurie Hendren,et al.  Soot---a java optimization framework , 1999 .

[18]  Fausto Spoto,et al.  Information Flow Analysis for Java Bytecode , 2005, VMCAI.

[19]  David M. Weiss,et al.  Software Product Line Engineering , 2005, SEKE.