Variability Abstractions: Trading Precision for Speed in Family-Based Analyses

Authors Aleksandar S. Dimovski, Claus Brabrand, Andrzej Wasowski

Thumbnail PDF


  • Filesize: 0.68 MB
  • 24 pages

Document Identifiers

Author Details

Aleksandar S. Dimovski
Claus Brabrand
Andrzej Wasowski

Cite AsGet BibTex

Aleksandar S. Dimovski, Claus Brabrand, and Andrzej Wasowski. Variability Abstractions: Trading Precision for Speed in Family-Based Analyses. In 29th European Conference on Object-Oriented Programming (ECOOP 2015). Leibniz International Proceedings in Informatics (LIPIcs), Volume 37, pp. 247-270, Schloss Dagstuhl – Leibniz-Zentrum für Informatik (2015)


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, that works on Object-Oriented Java program families, and evaluate the practicality of this approach on three Java SPL benchmarks.
  • Software Product Lines
  • Family-Based Program Analysis
  • Abstract Interpretation


  • Access Statistics
  • Total Accesses (updated on a weekly basis)
    PDF Downloads


  1. Sven Apel, Alexander von Rhein, Philipp Wendler, Armin Größlinger, and Dirk Beyer. Strategies for product-line verification: case studies and experiments. In 35th International Conference on Software Engineering, ICSE'13, pages 482-491, 2013. Google Scholar
  2. Don Batory. Feature models, grammars, and propositional formulas. In 9th Int'l Software Product Lines Conf., SPLC'05, volume 3714 of LNCS, pages 7-20. Springer, 2005. Google Scholar
  3. Thorsten Berger, Divya Nair, Ralf Rublack, Joanne M. Atlee, Krzysztof Czarnecki, and Andrzej Wasowski. Three cases of feature-based variability modeling in industry. In 17th Int'l Conf. Model-Driven Engineering Languages and Systems, MODELS'14, pages 302-319, 2014. Google Scholar
  4. Eric Bodden, Társis Tolêdo, Márcio Ribeiro, Claus Brabrand, Paulo Borba, and Mira Mezini. Spl^lift: Statically analyzing software product lines in minutes instead of years. In ACM SIGPLAN Conference on PLDI'13, pages 355-364, 2013. Google Scholar
  5. Claus Brabrand, Márcio Ribeiro, Társis Tolêdo, Johnni Winther, and Paulo Borba. Intraprocedural dataflow analysis for software product lines. Transactions on Aspect-Oriented Software Development, 10:73-108, 2013. Google Scholar
  6. Andreas Classen, Patrick Heymans, Pierre-Yves Schobbens, and Axel Legay. Symbolic model checking of software product lines. In 33th International Conference on Software Engineering, ICSE'11, pages 321-330, 2011. Google Scholar
  7. Paul Clements and Linda Northrop. Software Product Lines: Practices and Patterns. Addison-Wesley, 2001. Google Scholar
  8. Patrick Cousot. Types as abstract interpretations. In 24th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL'97, pages 316-331, 1997. Google Scholar
  9. Patrick Cousot. The calculational design of a generic abstract interpreter. In M. Broy and R. Steinbrüggen, editors, Calculational System Design. NATO ASI Series F. IOS Press, Amsterdam, 1999. Google Scholar
  10. Patrick Cousot and Radhia Cousot. Systematic design of program analysis frameworks. In 6th Annual ACM Symposium on Principles of Programming Languages, POPL'79, pages 269-282, 1979. Google Scholar
  11. Patrick Cousot and Radhia Cousot. Abstract interpretation and application to logic programs. J. Log. Program., 13(2-3):103-179, 1992. Google Scholar
  12. Patrick Cousot and Radhia Cousot. Refining model checking by abstract interpretation. Autom. Softw. Eng., 6(1):69-95, 1999. Google Scholar
  13. Patrick Cousot and Radhia Cousot. Systematic design of program transformation frameworks by abstract interpretation. In 29th SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL'02, pages 178-190, 2002. Google Scholar
  14. Aleksandar S. Dimovski, Claus Brabrand, and Andrzej Wasowski. Variability abstractions: Trading precision for speed in family-based analyses (extended version). CoRR, abs/1503.04608, 2015. Google Scholar
  15. Eric Goubault, Dominique Guilbaud, Anne Pacalet, Basile Starynkevitch, and Franck Védrine. A simple abstract interpreter for threat detection and test case generation. In WAPATV'01, with ICSE'01, Toronto, 2001. Google Scholar
  16. Christian Kästner. Virtual Separation of Concerns: Toward Preprocessors 2.0. PhD thesis, University of Magdeburg, Germany, May 2010. Google Scholar
  17. Christian Kästner, Sven Apel, and Martin Kuhlemann. Granularity in software product lines. In 30th International Conference on Software Engineering, ICSE'08, pages 311-320, Leipzig, Germany, 2008. ACM. Google Scholar
  18. Christian Kästner, Sven Apel, Thomas Thüm, and Gunter Saake. Type checking annotation-based product lines. ACM Trans. Softw. Eng. Methodol., 21(3):14, 2012. Google Scholar
  19. Jan Midtgaard, Claus Brabrand, and Andrzej Wasowski. Systematic derivation of static analyses for software product lines. In 13th International Conference on Modularity, MODULARITY'14, 2014, pages 181-192, 2014. Google Scholar
  20. Flemming Nielson, Hanne R. Nielson, and Chris Hankin. Principles of Program Analysis. Springer, Secaucus, USA, 1999. Google Scholar
  21. Thomas Reps, Susan Horwitz, and Mooly Sagiv. Precise interprocedural dataflow analysis via graph reachability. In 22nd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL'95, POPL'95, pages 49-61, 1995. Google Scholar
  22. The colt project: Open source libraries for high performance scientific and technical computing in java. CERN: European Organization for Nuclear Research. Google Scholar
  23. Thomas Thüm, Sven Apel, Christian Kästner, Ina Schaefer, and Gunter Saake. A classification and survey of analysis strategies for software product lines. ACM Comput. Surv., 47(1):6, 2014. Google Scholar
  24. Raja Vallée-Rai, Phong Co, Etienne Gagnon, Laurie J. Hendren, Patrick Lam, and Vijay Sundaresan. Soot - a java bytecode optimization framework. In Proceedings of the 1999 conference of the Centre for Advanced Studies on Collaborative Research, page 13, 1999. Google Scholar
  25. Glynn Winskel. The Formal Semantics of Programming Languages. Foundation of Computing Series. The MIT Press, 1993. Google Scholar