Slide 1

Slide 1 text

June 3rd, 2013 Quinten David Soetens Javier Pérez Serge Demeyer Change-Based Refactoring Mining

Slide 2

Slide 2 text

Echelon Formation Wedge Formation

Slide 3

Slide 3 text

Mining Refactorings Move Method Rename Method Extract M ethod Extract Superclass Inline Method Hide Delegate Inline Temp M ove Field Pull Up Method Rem ove Param eter Identify which refactorings were performed during evolution of a software system.

Slide 4

Slide 4 text

State of the Art All these are Snapshot Based

Slide 5

Slide 5 text

Snapshots are Coarse Grained A F J

Slide 6

Slide 6 text

Fine Grained Code Changes A B D E G H I J L M N P Q R S

Slide 7

Slide 7 text

SVNKit Change Distiller Model Logger Distiller ChEOPSJ ChangeRecorders Applications TestSelection ChEOPSJ: Change-Based Test Optimization
 Quinten David Soetens and Serge Demeyer
 In "Proceedings of 16th European Conference on Software Maintenance and Reengineering, CSMR 2012
 Change-Based Test Selection in the Presence of Developer Tests
 Quinten David Soetens, Serge Demeyer and Andy Zaidman
 In "Proceedings of 17th European Conference on Software Maintenance and Reengineering, CSMR 2013


Slide 8

Slide 8 text

First Class Change Objects Changes act on Source Code (FAMIX) Entities (e.g. AddClassChange, AddMethodChange, etc.)

Slide 9

Slide 9 text

First Class Change Objects Changes have Structural Dependencies (e.g. AddMethod ---> AddClass--->AddPackage etc.)

Slide 10

Slide 10 text

Change Graphs Move Method foo Rename foo to boo

Slide 11

Slide 11 text

Refactoring Patterns FamixClass FamixMethod FamixMethod string name name RenameMethod Refactoring string ≠ FamixClass FamixMethod FamixMethod string name name string ≠ From To FamixClass FamixClass ≠ FamixMethod FamixMethod string name name FamixClass FamixClass ≠ FamixMethod FamixMethod string name name MoveMethod Refactoring From To

Slide 12

Slide 12 text

Results

Slide 13

Slide 13 text

Future Directions • Implement and evaluate this approach • Use Groove as Graph Transformation Engine • Compare with RefFinder • Extend with more Refactoring Patterns • Industrial Case Study

Slide 14

Slide 14 text

Conclusions