Locating features in source code
Top Cited Papers
- 10 March 2003
- journal article
- Published by Institute of Electrical and Electronics Engineers (IEEE) in IEEE Transactions on Software Engineering
- Vol. 29 (3) , 210-224
- https://doi.org/10.1109/tse.2003.1183929
Abstract
Understanding the implementation of a certain feature of a system requires identification of the computational units of the system that contribute to this feature. In many cases, the mapping of features to the source code is poorly documented. In this paper, we present a semiautomatic technique that reconstructs the mapping for features that are triggered by the user and exhibit an observable behavior. The mapping is in general not injective; that is, a computational unit may contribute to several features. Our technique allows for the distinction between general and specific computational units with respect to a given set of features. For a set of features, it also identifies jointly and distinctly required computational units. The presented technique combines dynamic and static analyses to rapidly focus on the system's parts that relate to a specific set of features. Dynamic information is gathered based on a set of scenarios invoking the features. Rather than assuming a one-to-one correspondence between features and scenarios as in earlier work, we can now handle scenarios that invoke many features. Furthermore, we show how our method allows incremental exploration of features while preserving the "mental map" the analyst has gained through the analysis.Keywords
This publication has 33 references indexed in Scilit:
- Precise call graph construction in the presence of function pointersPublished by Institute of Electrical and Electronics Engineers (IEEE) ,2003
- Types and concept analysis for legacy systemsPublished by Institute of Electrical and Electronics Engineers (IEEE) ,2002
- Concept analysis for module restructuringIEEE Transactions on Software Engineering, 2001
- Using types to analyze and optimize object-oriented programsACM Transactions on Programming Languages and Systems, 2001
- Quantifying the closeness between program components and featuresJournal of Systems and Software, 2000
- The concept of dynamic analysisACM SIGSOFT Software Engineering Notes, 1999
- Object-oriented program tracing and visualizationComputer, 1997
- Reengineering of configurations based on mathematical concept analysisACM Transactions on Software Engineering and Methodology, 1996
- Software reconnaissance: Mapping program features to codeJournal of Software Maintenance: Research and Practice, 1995
- Interprocedural slicing using dependence graphsACM Transactions on Programming Languages and Systems, 1990