QwalKeko, a History Querying Tool

12
QwalKeko, a History Querying Tool Reinout Stevens , Coen De Roover, Carlos Noguera [email protected] @ReinoutStevens 1 Wednesday 6 March 13

Transcript of QwalKeko, a History Querying Tool

Page 1: QwalKeko, a History Querying Tool

QwalKeko,a History Querying Tool

Reinout Stevens, Coen De Roover, Carlos [email protected]@ReinoutStevens

1

Wednesday 6 March 13

Page 2: QwalKeko, a History Querying Tool

Context

2

Program Comprehension

Wednesday 6 March 13

Page 3: QwalKeko, a History Querying Tool

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

Page 4: QwalKeko, a History Querying Tool

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

Page 5: QwalKeko, a History Querying Tool

Pulled up Method

Version 1

Version 2

DerivedClass

Method()BaseClass

Method()DerivedClass

BaseClass

4

Wednesday 6 March 13

Page 6: QwalKeko, a History Querying Tool

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

Page 7: QwalKeko, a History Querying Tool

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

Page 8: QwalKeko, a History Querying Tool

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

Page 9: QwalKeko, a History Querying Tool

QwalKeko

8

Program Query

Language

Graph Query Language

Histor

yMod

el

Ekeko

Qwal

+

+

Wednesday 6 March 13

Page 10: QwalKeko, a History Querying Tool

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

Page 11: QwalKeko, a History Querying Tool

Future Work:Replaying Changes

10

...

...

12 - public int foo;12 + private int foo;37 + public getFoo(){38 + return foo; }

??

Wednesday 6 March 13

Page 12: QwalKeko, a History Querying Tool

Questions

11

Reinout [email protected]@ReinoutStevens

http://github.com/ReinoutStevens/damp.qwalhttp://github.com/cderoove/damp.ekeko

Wednesday 6 March 13