Feature trace recording

Tracing requirements to their implementation is crucial to all stakeholders of a software development process. When managing software variability, requirements are typically expressed in terms of features, a feature being a user-visible characteristic of the software. While feature traces are fully documented in software product lines, ad-hoc branching and forking, known as clone-and-own, is still the dominant way for developing multi-variant software systems in practice. Retroactive migration to product lines suffers from uncertainties and high effort because knowledge of feature traces must be recovered but is scattered across teams or even lost. We propose a semi-automated methodology for recording feature traces proactively, during software development when the necessary knowledge is present. To support the ongoing development of previously unmanaged clone-and-own projects, we explicitly deal with the absence of domain knowledge for both existing and new source code. We evaluate feature trace recording by replaying code edit patterns from the history of two real-world product lines. Our results show that feature trace recording reduces the manual effort to specify traces. Recorded feature traces could improve automation in change-propagation among cloned system variants and could reduce effort if developers decide to migrate to a product line.

[1]  Jacques Klein,et al.  Bottom-up adoption of software product lines: a generic and extensible approach , 2015, SPLC.

[2]  Wolfram Fenske,et al.  Synchronizing software variants with variantsync , 2016, SPLC.

[3]  Alfred V. Aho,et al.  Compilers: Principles, Techniques, and Tools (2nd Edition) , 2006 .

[4]  Neil Walkinshaw,et al.  Feature Location and Extraction using Landmarks and Barriers , 2007, 2007 IEEE International Conference on Software Maintenance.

[5]  Don S. Batory,et al.  Feature Models, Grammars, and Propositional Formulas , 2005, SPLC.

[6]  Marsha Chechik,et al.  A Survey of Feature Location Techniques , 2013, Domain Engineering, Product Lines, Languages, and Conceptual Models.

[7]  Andrzej Wasowski,et al.  Concepts, Operations, and Feasibility of a Projection-Based Variation Control System , 2016, 2016 IEEE International Conference on Software Maintenance and Evolution (ICSME).

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

[9]  Goetz Botterweck,et al.  Evolution of Software Product Lines , 2014, Evolving Software Systems.

[10]  Thomas G. Szymanski,et al.  A fast algorithm for computing longest common subsequences , 1977, CACM.

[11]  Bogdan Dit,et al.  Feature location in source code: a taxonomy and survey , 2013, J. Softw. Evol. Process..

[12]  Alexander Egyed,et al.  The ECCO Tool: Extraction and Composition for Clone-and-Own , 2015, 2015 IEEE/ACM 37th IEEE International Conference on Software Engineering.

[13]  Martin Erwig,et al.  #ifdef confirmed harmful: Promoting understandable software variation , 2011, 2011 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC).

[14]  Udo Kelter,et al.  A rule-based approach to the semantic lifting of model differences in the context of model versioning , 2011, 2011 26th IEEE/ACM International Conference on Automated Software Engineering (ASE 2011).

[15]  Janet Siegmund,et al.  Program Comprehension: Past, Present, and Future , 2016, 2016 IEEE 23rd International Conference on Software Analysis, Evolution, and Reengineering (SANER).

[16]  Gunter Saake,et al.  Feature-Oriented Software Product Lines , 2013, Springer Berlin Heidelberg.

[17]  Yann-Gaël Guéhéneuc,et al.  Feature Location Using Probabilistic Ranking of Methods Based on Execution Scenarios and Information Retrieval , 2007, IEEE Transactions on Software Engineering.

[18]  Arie van Deursen,et al.  FEVER: An approach to analyze feature-oriented changes and artefact co-evolution in highly configurable systems , 2018, Empirical Software Engineering.

[19]  Zhenchang Xing,et al.  Feature Location in a Collection of Product Variants , 2012, 2012 19th Working Conference on Reverse Engineering.

[20]  Krzysztof Czarnecki,et al.  Coevolution of variability models and related artifacts: a case study from the Linux kernel , 2013, SPLC '13.

[21]  Rainer Koschke,et al.  Survey of Research on Software Clones , 2006, Duplication, Redundancy, and Similarity in Software.

[22]  Jennifer Widom,et al.  Change detection in hierarchically structured information , 1996, SIGMOD '96.

[23]  Klaus Pohl,et al.  Software Product Line Engineering - Foundations, Principles, and Techniques , 2005 .

[24]  Paul Maximilian Bittner Semi-Automated Inference of Feature Traceability During Software Development: Master's Thesis , 2020 .

[25]  Peter H. Feiler,et al.  An Incremental Programming Environment , 1981, IEEE Transactions on Software Engineering.

[26]  Hoan Anh Nguyen,et al.  Clone Management for Evolving Software , 2012, IEEE Transactions on Software Engineering.

[27]  Sholom Cohen,et al.  Domain Engineering: Product Lines, Languages, and Conceptual Models , 2013 .

[28]  Alessandro F. Garcia,et al.  The Discipline of Preprocessor-Based Annotations - Does #ifdef TAG n't #endif Matter , 2017, 2017 IEEE/ACM 25th International Conference on Program Comprehension (ICPC).

[29]  Andrew David Eisenberg,et al.  Dynamic feature traces: finding features in unfamiliar code , 2005, 21st IEEE International Conference on Software Maintenance (ICSM'05).

[30]  Michal Antkiewicz,et al.  Maintaining feature traceability with embedded annotations , 2015, SPLC.

[31]  Timo Kehrer,et al.  Software Evolution in Time and Space: Unifying Version and Variability Management (Dagstuhl Seminar 19191) , 2019, Dagstuhl Reports.

[32]  Yann-Gaël Guéhéneuc,et al.  Trustrace: Mining Software Repositories to Improve the Accuracy of Requirement Traceability Links , 2013, IEEE Transactions on Software Engineering.

[33]  Eugene W. Myers,et al.  A file comparison program , 1985, Softw. Pract. Exp..

[34]  Ralf Lämmel,et al.  Seamless Variability Management with the Virtual Platform , 2021, 2021 IEEE/ACM 43rd International Conference on Software Engineering (ICSE).

[35]  Rainer Koschke,et al.  Extending the reflexion method for consolidating software variants into product lines , 2007, 14th Working Conference on Reverse Engineering (WCRE 2007).

[36]  Udo Kelter,et al.  Consistency-preserving edit scripts in model versioning , 2013, 2013 28th IEEE/ACM International Conference on Automated Software Engineering (ASE).

[37]  Stéphane Ducasse,et al.  Tool Support for Refactoring Duplicated OO Code , 1999, ECOOP Workshops.

[38]  Alexander Egyed,et al.  Locating feature revisions in software systems evolving in space and time , 2020, SPLC.

[39]  Krzysztof Czarnecki,et al.  An Exploratory Study of Cloning in Industrial Software Product Lines , 2013, 2013 17th European Conference on Software Maintenance and Reengineering.

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

[41]  Alexander Egyed,et al.  Using Traceability for Incremental Construction and Evolution of Software Product Portfolios , 2015, 2015 IEEE/ACM 8th International Symposium on Software and Systems Traceability.

[42]  Sven Apel,et al.  Analyzing the discipline of preprocessor annotations in 30 million lines of C code , 2011, AOSD '11.

[43]  Philip Bille,et al.  A survey on tree edit distance and related problems , 2005, Theor. Comput. Sci..

[44]  Thomas W. Reps,et al.  The synthesizer generator , 1984, SDE 1.

[45]  Bernhard Westfechtel,et al.  SuperMod: Tool support for collaborative filtered model-driven software product line engineering , 2016, 2016 31st IEEE/ACM International Conference on Automated Software Engineering (ASE).

[46]  Henry Spencer,et al.  #ifdef Considered Harmful, or Portability Experience with C News , 1992, USENIX Summer.

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

[48]  Sven Apel,et al.  Discipline Matters: Refactoring of Preprocessor Directives in the #ifdef Hell , 2018, IEEE Transactions on Software Engineering.

[49]  David Notkin The GANDALF project , 1985, J. Syst. Softw..

[50]  Akira Mori,et al.  Diff/TS: A Tool for Fine-Grained Structural Change Analysis , 2008, 2008 15th Working Conference on Reverse Engineering.

[51]  Yves Le Traon,et al.  Towards a language-independent approach for reverse-engineering of software product lines , 2014, SAC.

[52]  Matús Sulír,et al.  Recording concerns in source code using annotations , 2016, Comput. Lang. Syst. Struct..

[53]  Markus Völter,et al.  Towards User-Friendly Projectional Editors , 2014, SLE.

[54]  Jacob Krüger,et al.  Features and How to Find Them , 2019, Software Engineering for Variability Intensive Systems.

[55]  Nikolaus Augsten,et al.  RTED: A Robust Algorithm for the Tree Edit Distance , 2011, Proc. VLDB Endow..

[56]  Adele E. Howe,et al.  Program understanding behaviour during enhancement of large-scale software , 1997, J. Softw. Maintenance Res. Pract..

[57]  Andreas Burger,et al.  FLOrIDA: Feature LOcatIon DAshboard for extracting and visualizing feature traces , 2017, VaMoS.

[58]  Alexander Egyed,et al.  A Hybrid Feature Location Technique for Re-engineeringSingle Systems into Software Product Lines , 2021, VaMoS.

[59]  Andreas Winter,et al.  Special issue on the 12th conference on software maintenance and reengineering (CSMR 2008) , 2009, J. Softw. Maintenance Res. Pract..

[60]  Andreas Burger,et al.  Semi-Automated Feature Traceability with Embedded Annotations , 2018, 2018 IEEE International Conference on Software Maintenance and Evolution (ICSME).

[61]  Andrzej Wasowski,et al.  Forked and integrated variants in an open-source firmware project , 2015, 2015 IEEE International Conference on Software Maintenance and Evolution (ICSME).

[62]  Arie van Deursen,et al.  Managing code clones using dynamic change tracking and resolution , 2009, 2009 IEEE International Conference on Software Maintenance.

[63]  Timo Kehrer,et al.  Calculation and propagation of model changes based on user-level edit operations: a foundation for version and variant management in model-driven engineering , 2015 .

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

[65]  Alexander Egyed,et al.  Variability extraction and modeling for product variants , 2016, Software & Systems Modeling.

[66]  Ted J. Biggerstaff,et al.  The concept assignment problem in program understanding , 1993, [1993] Proceedings Working Conference on Reverse Engineering.

[67]  Alexander Egyed,et al.  Mining Feature Revisions in Highly-Configurable Software Systems , 2020, SPLC.

[68]  Maninder Singh,et al.  Software clone detection: A systematic review , 2013, Inf. Softw. Technol..

[69]  Reidar Conradi,et al.  Version models for software configuration management , 1998, CSUR.

[70]  Timo Kehrer,et al.  Bridging the Gap Between Clone-and-Own and Software Product Lines , 2021, 2021 IEEE/ACM 43rd International Conference on Software Engineering: New Ideas and Emerging Results (ICSE-NIER).

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

[72]  Sebastian Krieter,et al.  A conceptual model for unifying variability in space and time , 2020, SPLC.

[73]  Zhenchang Xing,et al.  How developers perform feature location tasks: a human‐centric and process‐oriented exploratory study , 2013, J. Softw. Evol. Process..

[74]  Marsha Chechik,et al.  Managing cloned variants: a framework and experience , 2013, SPLC '13.

[75]  Thorsten Berger,et al.  Visualization of Feature Locations with the Tool FeatureDashboard , 2019, SPLC.

[76]  Márcio Ribeiro,et al.  Investigating preprocessor-based syntax errors , 2014, GPCE '13.

[77]  Benjamin Klatt,et al.  A Graph-Based Analysis Concept to Derive a Variation Point Design from Product Copies , 2013 .

[78]  Matias Martinez,et al.  Fine-grained and accurate source code differencing , 2014, ASE.

[79]  Norman Wilde,et al.  Software reconnaissance: Mapping program features to code , 1995, J. Softw. Maintenance Res. Pract..

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

[81]  Harald C. Gall,et al.  Change Distilling:Tree Differencing for Fine-Grained Source Code Change Extraction , 2007, IEEE Transactions on Software Engineering.

[82]  Ettore Merlo,et al.  Assessing the benefits of incorporating function clone detection in a development process , 1997, 1997 Proceedings International Conference on Software Maintenance.

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

[84]  Andrew Begel,et al.  Managing Duplicated Code with Linked Editing , 2004, 2004 IEEE Symposium on Visual Languages - Human Centric Computing.

[85]  Andreas Classen,et al.  A code tagging approach to software product line development , 2012, International Journal on Software Tools for Technology Transfer.

[86]  Ralf Lämmel,et al.  Similarity management of 'cloned and owned' variants , 2016, Softwaretechnik-Trends.

[87]  Jia Liu,et al.  Feature oriented refactoring of legacy applications , 2006, ICSE.

[88]  Denys Poshyvanyk,et al.  Integrating conceptual and logical couplings for change impact analysis in software , 2013, Empirical Software Engineering.

[89]  N. Rescher Many Valued Logic , 1969 .

[90]  Chanchal Kumar Roy,et al.  LHDiff: A Language-Independent Hybrid Approach for Tracking Source Code Lines , 2013, 2013 IEEE International Conference on Software Maintenance.

[91]  Gunter Saake,et al.  Variant-preserving refactorings for migrating cloned products to a product line , 2017, 2017 IEEE 24th International Conference on Software Analysis, Evolution and Reengineering (SANER).

[92]  Sven Apel,et al.  Does the discipline of preprocessor annotations matter?: a controlled experiment , 2014, GPCE '13.

[93]  Sandro Schulze,et al.  Custom-Tailored Variability Mining for Block-Based Languages , 2016, 2016 IEEE 23rd International Conference on Software Analysis, Evolution, and Reengineering (SANER).

[94]  Rainer Koschke,et al.  An evaluation of code similarity identification for the grow-and-prune model , 2009, CSMR 2009.

[95]  Marsha Chechik,et al.  What is a feature?: a qualitative study of features in industrial software product lines , 2015, SPLC.

[96]  Miguel A. Laguna,et al.  A systematic mapping study on software product line evolution: From legacy system reengineering to product line refactoring , 2013, Sci. Comput. Program..

[97]  Carlos Cetina,et al.  Towards clone-and-own support: locating relevant methods in legacy products , 2016, SPLC.

[98]  Ralf Lämmel,et al.  Flexible product line engineering with a virtual platform , 2014, ICSE Companion.

[99]  Alexander Egyed,et al.  A Variability Aware Configuration Management and Revision Control Platform , 2016, 2016 IEEE/ACM 38th International Conference on Software Engineering Companion (ICSE-C).

[100]  Abdelhak-Djamel Seriai,et al.  Feature Location in a Collection of Software Product Variants Using Formal Concept Analysis , 2013, ICSR.

[101]  Paul Grünbacher,et al.  A classification of variation control systems , 2017, GPCE.

[102]  Martin P. Robillard,et al.  Clone region descriptors: Representing and tracking duplication in source code , 2010, TSEM.

[103]  Sven Apel,et al.  Does the discipline of preprocessor annotations matter?: a controlled experiment , 2014 .

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