Post on 30-Jul-2015
QwalKeko,a History Querying Tool
Reinout Stevens, Coen De Roover, Carlos Nogueraresteven@vub.ac.be@ReinoutStevens
1
Wednesday 6 March 13
Context
2
Program Comprehension
Wednesday 6 March 13
3
Was this method pulled up?Who introduced
this class?
How often is this method changed?Why were these changes
introduced?
Who has made changes to my classes?
History Questions
Using Information Fragments to Answer the Questions Developers AskThomas Fritz and Gail C. MurphyInternational Conference on Software Engineering (ICSE), p.175--184, 2010
Template-based Reconstruction of Complex RefactoringsKyle Prete, Napol Rachatasumrit, Nikita Sudan, Miryung KimInternational Conference on Software Maintenance (ICSM), p.1--10, 2010
Wednesday 6 March 13
3
Was this method pulled up?Who introduced
this class?
How often is this method changed?Why were these changes
introduced?
Who has made changes to my classes?
History Questions
Using Information Fragments to Answer the Questions Developers AskThomas Fritz and Gail C. MurphyInternational Conference on Software Engineering (ICSE), p.175--184, 2010
Template-based Reconstruction of Complex RefactoringsKyle Prete, Napol Rachatasumrit, Nikita Sudan, Miryung KimInternational Conference on Software Maintenance (ICSM), p.1--10, 2010
Wednesday 6 March 13
Pulled up Method
Version 1
Version 2
DerivedClass
Method()BaseClass
Method()DerivedClass
BaseClass
4
Wednesday 6 March 13
Pulled up Method
(ast :MethodDeclaration ?method)(declaring-class ?method ?derived) Version 1
Version 2
Template-based Reconstruction of Complex RefactoringsKyle Prete, Napol Rachatasumrit, Nikita Sudan, Miryung KimInternational Conference on Software Maintenance (ICSM), p.1--10, 2010
(method-moved ?method ?pulled)(declaring-class ?pulled ?base)(superclass ?base ?derived)
5
Wednesday 6 March 13
QwalKeko
Version 1
Version 2
(qin-current (ast :MethodDeclaration ?method) (declaring-class ?method ?derived))
(qwal graph version1 version2
q=> ;;transition to next version
(qin-current (method-moved ?method ?pulled) (declaring-class ?pulled ?base) (superclass ?base ?derived)))
6
Wednesday 6 March 13
Multiversion Refactorings
(qin-current (ast :MethodDeclaration ?method) (declaring-class ?method ?derived))
(qwal graph version1 ?versionX
(q=>+) ;;skip >= 1 versions
(qin-current (method-moved ?method ?pulled) (declaring-class ?pulled ?base) (superclass ?base ?derived)))
Version 1
Version X
...
7
Wednesday 6 March 13
QwalKeko
8
Program Query
Language
Graph Query Language
Histor
yMod
el
Ekeko
Qwal
+
+
Wednesday 6 March 13
Other Domains
• Answering Developer Questions
• Temporal Bad Smells
• Detecting Co-changing Entities
• Zombie Methods
• Verifying Design Process
Reasoning over the Evolution of Source Code using Quantified Regular Path Expressions. Reinout Stevens, Coen De Roover, Carlos Noguera and Viviane JonckersWorking Conference on Reverse Engineering (WCRE), 2011
9
Wednesday 6 March 13
Future Work:Replaying Changes
10
...
...
12 - public int foo;12 + private int foo;37 + public getFoo(){38 + return foo; }
??
Wednesday 6 March 13
Questions
11
Reinout Stevensresteven@vub.ac.be@ReinoutStevens
http://github.com/ReinoutStevens/damp.qwalhttp://github.com/cderoove/damp.ekeko
Wednesday 6 March 13