A Fast Algorithm to Locate Concepts in Execution Traces

The identification of cohesive segments in execution traces is an important step in concept location which, in turns, is of paramount importance for many program-comprehension activities. In this paper, we reformulate concept location as a trace segmentation problem solved via dynamic programming. Differently to approaches based on genetic algorithms, dynamic programming can compute an exact solution with better performance than previous approaches, even on long traces. We describe the new problem formulation and the algorithmic details of our approach. We then compare the performances of dynamic programming with those of a genetic algorithm, showing that dynamic programming reduces dramatically the time required to segment traces, without sacrificing precision and recall; even slightly improving them.

[1]  Martin F. Porter,et al.  An algorithm for suffix stripping , 1997, Program.

[2]  Giuliano Antoniol,et al.  Concept Location with Genetic Algorithms: A Comparison of Four Distributed Architectures , 2010, 2nd International Symposium on Search Based Software Engineering.

[3]  Spiros Mancoridis,et al.  On the automatic modularization of software systems using the Bunch tool , 2006, IEEE Transactions on Software Engineering.

[4]  Yann-Gaël Guéhéneuc,et al.  Identification of behavioural and creational design motifs through dynamic analysis , 2010, J. Softw. Maintenance Res. Pract..

[5]  K. Goulden,et al.  Effect Sizes for Research: A Broad Practical Approach , 2006 .

[6]  Paolo Nesi,et al.  Proceedings of the Third European Conference on Software Maintenance and Reengineering, Cahapel of St. Agnes, University of Amsterdam, the Netherlands, March 3-5, 1999 , 1999 .

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

[8]  Andrian Marcus,et al.  An information retrieval approach to concept location in source code , 2004, 11th Working Conference on Reverse Engineering.

[9]  Mariano Ceccato,et al.  Aspect mining through the formal concept analysis of execution traces , 2004, 11th Working Conference on Reverse Engineering.

[10]  Denys Poshyvanyk,et al.  Using Relational Topic Models to capture coupling among classes in object-oriented software systems , 2010, 2010 IEEE International Conference on Software Maintenance.

[11]  Giuliano Antoniol,et al.  Towards employing use-cases and dynamic analysis to comprehend Mozilla , 2005, 21st IEEE International Conference on Software Maintenance (ICSM'05).

[12]  T. Landauer,et al.  Indexing by Latent Semantic Analysis , 1990 .

[13]  Rudolf Ferenc,et al.  Using the Conceptual Cohesion of Classes for Fault Prediction in Object-Oriented Systems , 2008, IEEE Transactions on Software Engineering.

[14]  Yann-Gaël Guéhéneuc,et al.  Feature identification: a novel approach and a case study , 2005, 21st IEEE International Conference on Software Maintenance (ICSM'05).

[15]  Tibor Gyimóthy,et al.  Modeling class cohesion as mixtures of latent topics , 2009, 2009 IEEE International Conference on Software Maintenance.

[16]  R. L. Krikhaar Proceedings of 11th European Conference on Software Maintenance and Reengineering , 2007 .

[17]  Yann-Gaël Guéhéneuc,et al.  A Heuristic-Based Approach to Identify Concepts in Execution Traces , 2010, 2010 14th European Conference on Software Maintenance and Reengineering.

[18]  Yann-Gaël Guéhéneuc,et al.  Feature Identification: An Epidemiological Metaphor , 2006, IEEE Transactions on Software Engineering.

[19]  Letha H. Etzkorn,et al.  Bug localization using latent Dirichlet allocation , 2010, Inf. Softw. Technol..

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

[21]  Wojtek Kozaczynski,et al.  Program Concept Recognition and Transformation , 1992, IEEE Trans. Software Eng..

[22]  Nicolas Anquetil,et al.  Extracting concepts from file names; a new file clustering criterion , 1998, Proceedings of the 20th International Conference on Software Engineering.

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

[24]  Ronald L. Rivest,et al.  Introduction to Algorithms , 1990 .

[25]  Stuart E. Dreyfus,et al.  Applied Dynamic Programming , 1965 .

[26]  Alfred V. Aho,et al.  CERBERUS: Tracing Requirements to Source Code Using Information Retrieval, Dynamic Analysis, and Program Analysis , 2008, 2008 16th IEEE International Conference on Program Comprehension.

[27]  P. Jaccard,et al.  Etude comparative de la distribution florale dans une portion des Alpes et des Jura , 1901 .

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