FHistorian: Locating Features in Version Histories

Feature location techniques aim to locate software artifacts that implement a specific program functionality, a.k.a. a feature. In this paper, we build upon the previous work of semantic history slicing to locate features in software version histories. We leverage the information embedded in version histories for identifying changes implementing features and discovering relationships between features. The identified feature changes are fully functional and guaranteed to preserve the desired behaviors. The resulting feature relationship graph is precise and can be used to assist in understanding of the underlying connections between the features. We evaluate the technique on a number of real-world case studies and compare our results with developer-specified feature annotations. We conclude that, when available, historical information of software changes can lead to precise identification of features in existing software artifacts.

[1]  Hironori Washizaki,et al.  Recovering traceability links between requirements and source code in the same series of software products , 2013, SPLC '13.

[2]  Václav Rajlich,et al.  Case study of feature location using dependence graph , 2000, Proceedings IWPC 2000. 8th International Workshop on Program Comprehension.

[3]  Houari A. Sahraoui,et al.  Recovering Architectural Variability of a Family of Product Variants , 2015, ICSR.

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

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

[6]  Marsha Chechik,et al.  A Dataset for Dynamic Discovery of Semantic Changes in Version Controlled Software Histories , 2017, 2017 IEEE/ACM 14th International Conference on Mining Software Repositories (MSR).

[7]  Yuriy Brun,et al.  Development History Granularity Transformations (N) , 2015, 2015 30th IEEE/ACM International Conference on Automated Software Engineering (ASE).

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

[9]  Jaejoon Lee,et al.  FORM: A feature-;oriented reuse method with domain-;specific reference architectures , 1998, Ann. Softw. Eng..

[10]  Denys Poshyvanyk,et al.  Feature location via information retrieval based filtering of a single scenario execution trace , 2007, ASE.

[11]  Franz Wotawa,et al.  Empirical Evaluation of Hunk Metrics as Bug Predictors , 2009, IWSM/Mensura.

[12]  Abdelhak-Djamel Seriai,et al.  Mining features from the object-oriented source code of software variants by combining lexical and structural similarity , 2013, 2013 IEEE 14th International Conference on Information Reuse & Integration (IRI).

[13]  C. Urtado,et al.  Concept lattices: A representation space to structure software variability , 2014, 2014 5th International Conference on Information and Communication Systems (ICICS).

[14]  Marsha Chechik,et al.  Precise semantic history slicing through dynamic delta refinement , 2016, 2016 31st IEEE/ACM International Conference on Automated Software Engineering (ASE).

[15]  Marsha Chechik,et al.  Cloned product variants: from ad-hoc to managed software product lines , 2015, International Journal on Software Tools for Technology Transfer.

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

[17]  Tewfik Ziadi,et al.  Feature Identification from the Source Code of Product Variants , 2012, 2012 16th European Conference on Software Maintenance and Reengineering.

[18]  Krzysztof Czarnecki,et al.  Mining configuration constraints: static analyses and empirical results , 2014, ICSE.

[19]  J. Rubin,et al.  Semantic Slicing of Software Version Histories , 2018, IEEE Transactions on Software Engineering.

[20]  Krzysztof Czarnecki,et al.  Feature Diagrams and Logics: There and Back Again , 2007, 11th International Software Product Line Conference (SPLC 2007).

[21]  Alexander Egyed,et al.  Extracting Variability-Safe Feature Models from Source Code Dependencies in System Variants , 2015, GECCO.

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

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

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

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

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

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

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

[29]  Krzysztof Czarnecki,et al.  Efficient synthesis of feature models , 2012, SPLC '12.

[30]  Andreas Zeller,et al.  Simplifying and Isolating Failure-Inducing Input , 2002, IEEE Trans. Software Eng..

[31]  Bogdan Dit,et al.  Using Data Fusion and Web Mining to Support Feature Location in Software , 2010, 2010 IEEE 18th International Conference on Program Comprehension.

[32]  Krzysztof Czarnecki,et al.  Reverse engineering feature models , 2011, 2011 33rd International Conference on Software Engineering (ICSE).

[33]  Alexander Egyed,et al.  Reverse Engineering Feature Models from Programs' Feature Sets , 2011, 2011 18th Working Conference on Reverse Engineering.

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

[35]  Marsha Chechik,et al.  Managing forked product variants , 2012, SPLC '12.

[36]  Marsha Chechik,et al.  Semantic Slicing of Software Version Histories (T) , 2015, ASE.

[37]  Klaus Kabitzsch,et al.  Extraction of feature models from formal contexts , 2011, SPLC '11.

[38]  Michael D. Ernst,et al.  Development History Granularity Transformations , 2015 .

[39]  Qing Zhang,et al.  CVSSearch: searching through source code using CVS comments , 2001, Proceedings IEEE International Conference on Software Maintenance. ICSM 2001.