Change impact analysis for maintenance and evolution of variable software systems

Understanding variability is essential to allow the configuration of software systems to diverse requirements. Variability-aware program analysis techniques have been proposed for analyzing the space of program variants. Such techniques are highly beneficial, e.g., to determine the potential impact of changes during maintenance. This article presents an interprocedural and configuration-aware change impact analysis (CIA) approach for determining the possibly impacted source code elements when changing the source code of a product family. The approach also supports engineers, who are adapting the code of specific product variants after an initial pre-configuration. The approach can be adapted to work with different variability mechanisms, it is more precise than existing CIA approaches, and it can be implemented using standard control flow and data flow analysis. We report evaluation results on the benefit and performance of the approach using industrial product lines.

[1]  Jan Bosch,et al.  A taxonomy of variability realization techniques , 2005, Softw. Pract. Exp..

[2]  Niklaus Wirth,et al.  The programming language oberon , 1988, Softw. Pract. Exp..

[3]  Gregor Snelting,et al.  Combining Slicing and Constraint Solving for Validation of Measurement Software , 1996, SAS.

[4]  Klaus Pohl,et al.  Software Product Line Engineering , 2005 .

[5]  Sven Apel,et al.  Granularity in software product lines , 2008, 2008 ACM/IEEE 30th International Conference on Software Engineering.

[6]  Robert S. Arnold,et al.  Software Change Impact Analysis , 1996 .

[7]  Michael D. Ernst,et al.  Automated diagnosis of software configuration errors , 2013, 2013 35th International Conference on Software Engineering (ICSE).

[8]  Ken Kennedy,et al.  Optimizing Compilers for Modern Architectures: A Dependence-based Approach , 2001 .

[9]  Sven Apel,et al.  Exploring feature interactions in the wild: the new feature-interaction challenge , 2013, FOSD '13.

[10]  Eric Bodden,et al.  Tracking Load-Time Configuration Options , 2014, IEEE Transactions on Software Engineering.

[11]  Krzysztof Czarnecki,et al.  Generative programming - methods, tools and applications , 2000 .

[12]  Sven Apel,et al.  Scalable analysis of variable software , 2013, ESEC/FSE 2013.

[13]  Claus Brabrand,et al.  Systematic derivation of static analyses for software product lines , 2014, MODULARITY.

[14]  Marsha Chechik,et al.  A framework for managing cloned product variants , 2013, 2013 35th International Conference on Software Engineering (ICSE).

[15]  Sue Black,et al.  Computing ripple effect for software maintenance , 2001, J. Softw. Maintenance Res. Pract..

[16]  Tsong Yueh Chen,et al.  An effective testing method for end-user programmers , 2005, ACM SIGSOFT Softw. Eng. Notes.

[17]  Andreas Grimmer,et al.  Identifying inactive code in product lines with configuration-aware system dependence graphs , 2014, SPLC.

[18]  Paul Grünbacher,et al.  Custom-developed vs. model-based configuration tools: experiences from an industrial automation ecosystem , 2013, SPLC '13 Workshops.

[19]  Sebastian Erdweg,et al.  Variability-aware parsing in the presence of lexical macros and conditional compilation , 2011, OOPSLA '11.

[20]  Krzysztof Czarnecki,et al.  Variability modeling in the real: a perspective from the operating systems domain , 2010, ASE '10.

[21]  Gregor Snelting,et al.  Information Flow Control for Java Based on Path Conditions in Dependence Graphs , 2006, ISSSE.

[22]  Andreas Grimmer,et al.  Configuration-Aware Change Impact Analysis (T) , 2015, 2015 30th IEEE/ACM International Conference on Automated Software Engineering (ASE).

[23]  Yuanyuan Zhou,et al.  Do not blame users for misconfigurations , 2013, SOSP.

[24]  Christian Kästner,et al.  Variability Mining: Consistent Semi-automatic Detection of Product-Line Features , 2014, IEEE Transactions on Software Engineering.

[25]  Alexander Egyed,et al.  Recovering Feature-to-Code Mappings in Mixed-Variability Software Systems , 2014, 2014 IEEE International Conference on Software Maintenance and Evolution.

[26]  Sven Apel,et al.  Variational Data Structures: Exploring Tradeoffs in Computing with Variability , 2014, Onward!.

[27]  Hanspeter Mössenböck,et al.  LL(1) Conflict Resolution in a Recursive Descent Compiler Generator , 2003, JMLC.

[28]  Shawn A. Bohner,et al.  Extending software change impact analysis into COTS components , 2002, 27th Annual NASA Goddard/IEEE Software Engineering Workshop, 2002. Proceedings..

[29]  Sven Apel,et al.  An analysis of the variability in forty preprocessor-based software product lines , 2010, 2010 ACM/IEEE 32nd International Conference on Software Engineering.

[30]  Mark Weiser,et al.  Program Slicing , 1981, IEEE Transactions on Software Engineering.

[31]  David W. Binkley,et al.  Interprocedural slicing using dependence graphs , 1988, SIGP.

[32]  Gregor Kiczales,et al.  Aspect-oriented programming , 1996, CSUR.

[33]  Adam A. Porter,et al.  Using symbolic evaluation to understand behavior in configurable software systems , 2010, 2010 ACM/IEEE 32nd International Conference on Software Engineering.

[34]  Paul Grünbacher,et al.  Software Evolution in an Industrial Automation Ecosystem: An Exploratory Study , 2014, 2014 40th EUROMICRO Conference on Software Engineering and Advanced Applications.

[35]  Karl J. Ottenstein,et al.  The program dependence graph in a software development environment , 1984, SDE 1.

[36]  Viviana Bono,et al.  Delta-Oriented Programming of Software Product Lines , 2010, SPLC.

[37]  Patrick Cousot,et al.  Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints , 1977, POPL.

[38]  Panagiotis Louridas,et al.  Static code analysis , 2006, IEEE Software.

[39]  Sven Apel,et al.  Variability encoding: From compile-time to load-time variability , 2016, J. Log. Algebraic Methods Program..

[40]  Sven Apel,et al.  An Overview of Feature-Oriented Software Development , 2009, J. Object Technol..

[41]  Flemming Nielson,et al.  Principles of Program Analysis , 1999, Springer Berlin Heidelberg.

[42]  Andreas Grimmer,et al.  Supporting Program Analysis for Non-Mainstream Languages: Experiences and Lessons Learned , 2016, 2016 IEEE 23rd International Conference on Software Analysis, Evolution, and Reengineering (SANER).

[43]  Jordi Cabot,et al.  MoDisco: A model driven reverse engineering framework , 2014, Inf. Softw. Technol..

[44]  Brian W. Kernighan,et al.  The C Programming Language , 1978 .

[45]  Claus Brabrand,et al.  Intraprocedural dataflow analysis for software product lines , 2012, AOSD.

[46]  Paul Grünbacher,et al.  A case study on software ecosystem characteristics in industrial automation software , 2014, ICSSP 2014.

[47]  Christian Kästner,et al.  Virtual Separation of Concerns: Toward Preprocessors 2.0 , 2010, it Inf. Technol..

[48]  Florian Angerer Variability-aware change impact analysis of multi-language product lines , 2014, ASE.

[49]  Paul Grünbacher,et al.  An Experiment Comparing Lifted and Delayed Variability-Aware Program Analysis , 2017, 2017 IEEE International Conference on Software Maintenance and Evolution (ICSME).

[50]  Gunter Saake,et al.  A Classification and Survey of Analysis Strategies for Software Product Lines , 2014, ACM Comput. Surv..

[51]  Baowen Xu,et al.  A brief survey of program slicing , 2005, SOEN.

[52]  Ondrej Lhoták,et al.  The Soot framework for Java program analysis: a retrospective , 2011 .

[53]  Tibor Gyimóthy,et al.  Static Execute After/Before as a replacement of traditional software dependencies , 2008, 2008 IEEE International Conference on Software Maintenance.

[54]  Joe D. Warren,et al.  The program dependence graph and its use in optimization , 1984, TOPL.

[55]  Václav Rajlich,et al.  RIPPLES: tool for change in legacy software , 2001, Proceedings IEEE International Conference on Software Maintenance. ICSM 2001.

[56]  Kerstin Mueller,et al.  Software Product Line Engineering Foundations Principles And Techniques , 2016 .

[57]  Steven S. Muchnick,et al.  Advanced Compiler Design and Implementation , 1997 .

[58]  Paul Clements,et al.  Software product lines - practices and patterns , 2001, SEI series in software engineering.