APIEvolutionMiner: Keeping API evolution under control

During software evolution, source code is constantly refactored. In real-world migrations, many methods in the newer version are not present in the old version (e.g.,60% of the methods in Eclipse 2.0 were not in version 1.0). This requires changes to be consistently applied to reflect the new API and avoid further maintenance problems. In this paper, we propose a tool to extract rules by monitoring API changes applied in source code during system evolution. In this process, changes are mined at revision level in code history. Our tool focuses on mining invocation changes to keep track of how they are evolving. We also provide three case studies in order to evaluate the tool.

[1]  Stéphane Ducasse,et al.  Distribution Map , 2006, 2006 22nd IEEE International Conference on Software Maintenance.

[2]  Sunghun Kim,et al.  Memories of bug fixes , 2006, SIGSOFT '06/FSE-14.

[3]  Stéphane Ducasse,et al.  Seaside: A Flexible Environment for Building Dynamic Web Applications , 2007, IEEE Software.

[4]  Miryung Kim,et al.  Discovering and representing systematic code changes , 2009, 2009 IEEE 31st International Conference on Software Engineering.

[5]  Oscar Nierstrasz,et al.  Pharo by Example , 2010 .

[6]  Miryung Kim,et al.  A graph-based approach to API usage adaptation , 2010, OOPSLA.

[7]  Yana Momchilova Mileva,et al.  Mining Evolution of Object Usage , 2011, ECOOP.

[8]  Nicolas Anquetil,et al.  Domain specific warnings: Are they any better? , 2012, 2012 28th IEEE International Conference on Software Maintenance (ICSM).

[9]  Marco Tulio Valente,et al.  Bug Maps: A Tool for the Visual Exploration and Analysis of Bugs , 2012, 2012 16th European Conference on Software Maintenance and Reengineering.

[10]  Marco Tulio Valente,et al.  Mining system specific rules from change patterns , 2013, 2013 20th Working Conference on Reverse Engineering (WCRE).

[11]  Miryung Kim,et al.  Lase: Locating and applying systematic edits by learning from examples , 2013, 2013 35th International Conference on Software Engineering (ICSE).