Identifying inactive code in product lines with configuration-aware system dependence graphs

Application engineers frequently create customer-specific products in two stages: the required software components are first selected to create an initial product which is then evolved by refining the selected features and adapting the code to meet the customers' requirements. For instance, developers frequently set configuration options in the code to adjust the product. However, given that such changes are often necessary in the entire code base it is hard to know which part of the code is still relevant for the chosen configuration options. This means that engineers need to understand and maintain a lot of code that is potentially inactive in a particular product variant. Existing approaches provide only partial solutions: for instance, feature-to-code mappings do not adequately consider complex code dependencies of the implemented features. Static analysis techniques provide better results but usually do not consider variability aspects. We present an approach to automatically identify inactive code in product variants using a configuration-aware code analysis technique. We demonstrate the flexibility of our approach by customizing it to a product line of an industry partner in the domain of industrial automation. We further evaluate the approach to demonstrate its effectiveness, accuracy, and performance.

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

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

[3]  David W. Binkley,et al.  Interprocedural slicing using dependence graphs , 1990, TOPL.

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

[5]  Linda Badri,et al.  Supporting predictive change impact analysis: a control call graph based technique , 2005, 12th Asia-Pacific Software Engineering Conference (APSEC'05).

[6]  Paul Grünbacher,et al.  The DOPLER meta-tool for decision-oriented variability modeling: a multiple case study , 2011, Automated Software Engineering.

[7]  Gregor Kiczales,et al.  Aspect-oriented programming , 2001, ESEC/FSE-9.

[8]  Alexander Egyed,et al.  A scenario-driven approach to traceability , 2001, Proceedings of the 23rd International Conference on Software Engineering. ICSE 2001.

[9]  RothermelGregg,et al.  Efficient construction of program dependence graphs , 1993 .

[10]  Jane Huffman Hayes,et al.  Humans in the traceability loop: can't live with 'em, can't live without 'em , 2005, TEFSE '05.

[11]  Jan Bosch,et al.  Managing Variability in Software Product Lines , 2000 .

[12]  Christian Wende,et al.  FeatureMapper: mapping features to models , 2008, ICSE Companion '08.

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

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

[15]  Jane Cleland-Huang,et al.  Clustering support for automated tracing , 2007, ASE '07.

[16]  Krzysztof Czarnecki,et al.  Staged Configuration Using Feature Models , 2004, SPLC.

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

[18]  Paolo Tonella,et al.  Using a Concept Lattice of Decomposition Slices for Program Understanding and Impact Analysis , 2003, IEEE Trans. Software Eng..

[19]  Gregg Rothermel,et al.  Efficient construction of program dependence graphs , 1993, ISSTA '93.

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

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

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

[23]  Alexander Egyed,et al.  Effort and Quality of Recovering Requirements-to-Code Traces: Two Exploratory Experiments , 2010, 2010 18th IEEE International Requirements Engineering Conference.

[24]  Jussi Koskinen,et al.  Supporting Impact Analysis by Program Dependence Graph Based Forward Slicing , 2007 .

[25]  Sven Apel,et al.  Guaranteeing Syntactic Correctness for All Product Line Variants: A Language-Independent Approach , 2009, TOOLS.

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

[27]  Wolfgang Schröder-Preikschat,et al.  Dead or Alive: finding zombie features in the Linux kernel , 2009, FOSD '09.

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

[29]  Steffen Lehnert,et al.  A taxonomy for software change impact analysis , 2011, IWPSE-EVOL '11.

[30]  Jan Bosch,et al.  On the notion of variability in software product lines , 2001, Proceedings Working IEEE/IFIP Conference on Software Architecture.

[31]  Rajiv D. Banker,et al.  Software complexity and maintenance costs , 1993, CACM.

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

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

[34]  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.

[35]  Herbert Prähofer,et al.  Points-to analysis of IEC 61131-3 programs: Implementation and application , 2013, 2013 IEEE 18th Conference on Emerging Technologies & Factory Automation (ETFA).

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

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

[38]  Alexander Egyed,et al.  Recovering traceability between features and code in product variants , 2013, SPLC '13.

[39]  Václav Rajlich,et al.  Variable granularity for improving precision of impact analysis , 2009, 2009 IEEE 17th International Conference on Program Comprehension.

[40]  Mira Mezini,et al.  SPLLIFT: statically analyzing software product lines in minutes instead of years , 2013, Software Engineering.

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

[42]  Frank Tip,et al.  Chianti: a tool for change impact analysis of java programs , 2004, OOPSLA.

[43]  Frank Tip,et al.  Change impact analysis for object-oriented programs , 2001, PASTE '01.

[44]  Michal Antkiewicz,et al.  Mapping features to models: a template approach based on superimposed variants , 2005, GPCE'05.

[45]  Rainer Koschke,et al.  Locating Features in Source Code , 2003, IEEE Trans. Software Eng..

[46]  Robert E. Park,et al.  Software Size Measurement: A Framework for Counting Source Statements , 1992 .

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