ICSE '94 Proceedings of the 16th international conference on Software engineering
Software product-line engineering: a family-based software development process
Software product-line engineering: a family-based software development process
Experimentation in software engineering: an introduction
Experimentation in software engineering: an introduction
Reverse Engineering and Design Recovery: A Taxonomy
IEEE Software
CCFinder: a multilinguistic token-based code clone detection system for large scale source code
IEEE Transactions on Software Engineering
Locating Features in Source Code
IEEE Transactions on Software Engineering
ConcernMapper: simple view-based separation of scattered concerns
eclipse '05 Proceedings of the 2005 OOPSLA workshop on Eclipse technology eXchange
Representing concerns in source code
ACM Transactions on Software Engineering and Methodology (TOSEM)
IEEE Transactions on Software Engineering
On the Design and Development of Program Families
IEEE Transactions on Software Engineering
Comparison and Evaluation of Clone Detection Tools
IEEE Transactions on Software Engineering
A Data Mining Approach for Detecting Higher-Level Clones in Software
IEEE Transactions on Software Engineering
Combating architectural degeneration: a survey
Information and Software Technology
Identifying crosscutting concerns using historical code changes
Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 1
FLAT3: feature location and textual tracing tool
Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 2
History-sensitive recovery of product line features
ICSM '10 Proceedings of the 2010 IEEE International Conference on Software Maintenance
Aspect recommendation for evolving software
Proceedings of the 33rd International Conference on Software Engineering
Hi-index | 0.00 |
A program family might degenerate due to unplanned changes in its implementation, thus hindering the maintenance of family members. This degeneration is often induced by feature code that is changed individually in each member without considering other family members. Hence, as a program family evolves over time, it might no longer be possible to distinguish between common and variable features. One of the imminent activities to address this problem is the history-sensitive recovery of program family's features in the code. This recovery process encompasses the analysis of the evolution history of each family member in order to classify the implementation elements according to their variability nature. In this context, this paper proposes history-sensitive heuristics for the recovery of features in code of degenerate program families. Once the analysis of the family history is carried out, the feature elements are structured as Java project packages; they are intended to separate those elements in terms of their variability degree. The proposed heuristics are supported by a prototype tool called RecFeat. We evaluated the accuracy of the heuristics in the context of 33 versions of 2 industry program families. They presented encouraging results regarding recall measures that ranged from 85% to 100%; whereas the precision measures ranged from 71% to 99%.