QwalKeko, a History Querying Tool

Post on 30-Jul-2015

1.263 views 0 download

Tags:

Transcript of QwalKeko, a History Querying Tool

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