Eeee2017 Conference - OR in the digital era - ICT challenges | Presentation
QwalKeko, a History Querying Tool
1. QwalKeko,
a History Querying Tool
Reinout Stevens, Coen De Roover, Carlos Noguera
resteven@vub.ac.be
@ReinoutStevens
1
Wednesday 6 March 13
2. Context
Program
Comprehension
2
Wednesday 6 March 13
3. Was this method pulled up?
Who introduced
this class?
Who has made changes to
my classes?
History Questions
How often is this method
Why were these changes changed?
introduced? Template-based Reconstruction of Complex Refactorings
Kyle Prete, Napol Rachatasumrit, Nikita Sudan, Miryung Kim
International Conference on Software Maintenance (ICSM), p.1--10, 2010
Using Information Fragments to Answer the Questions Developers Ask
Thomas Fritz and Gail C. Murphy
International Conference on Software Engineering (ICSE), p.175--184, 2010
3
Wednesday 6 March 13
4. Was this method pulled up?
Who introduced
this class?
Who has made changes to
my classes?
History Questions
How often is this method
Why were these changes changed?
introduced? Template-based Reconstruction of Complex Refactorings
Kyle Prete, Napol Rachatasumrit, Nikita Sudan, Miryung Kim
International Conference on Software Maintenance (ICSM), p.1--10, 2010
Using Information Fragments to Answer the Questions Developers Ask
Thomas Fritz and Gail C. Murphy
International Conference on Software Engineering (ICSE), p.175--184, 2010
3
Wednesday 6 March 13
5. Pulled up Method
BaseClass
Version 1
DerivedClass
Method()
BaseClass
Method()
Version 2
DerivedClass
4
Wednesday 6 March 13
6. Pulled up Method
(ast :MethodDeclaration ?method)
Version 1 (declaring-class ?method ?derived)
(method-moved ?method ?pulled)
Version 2 (declaring-class ?pulled ?base)
(superclass ?base ?derived)
Template-based Reconstruction of Complex Refactorings
Kyle Prete, Napol Rachatasumrit, Nikita Sudan, Miryung Kim
International Conference on Software Maintenance (ICSM), p.1--10, 2010
5
Wednesday 6 March 13
7. QwalKeko
(qwal graph version1 version2
(qin-current
Version 1 (ast :MethodDeclaration ?method)
(declaring-class ?method ?derived))
q=> ;;transition to next version
(qin-current
(method-moved ?method ?pulled)
Version 2 (declaring-class ?pulled ?base)
(superclass ?base ?derived)))
6
Wednesday 6 March 13
8. Multiversion Refactorings
(qwal graph version1 ?versionX
Version 1
(qin-current
(ast :MethodDeclaration ?method)
(declaring-class ?method ?derived))
... (q=>+) ;;skip >= 1 versions
(qin-current
Version X (method-moved ?method ?pulled)
(declaring-class ?pulled ?base)
(superclass ?base ?derived)))
7
Wednesday 6 March 13
9. QwalKeko
Pr Graph Query
og Language
ra
La m
od ry
ng Q Qwal
sto
el
ua ue
Hi
ge ry
M
Ekeko +
+
8
Wednesday 6 March 13
10. 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 Jonckers
Working Conference on Reverse Engineering (WCRE), 2011
9
Wednesday 6 March 13
11. Future Work:
Replaying Changes
...
??
...
12 - public int foo;
12 + private int foo;
37 + public getFoo(){
38 + return foo; }
10
Wednesday 6 March 13