SlideShare a Scribd company logo
QwalKeko,
              a History Querying Tool
                       Reinout Stevens, Coen De Roover, Carlos Noguera
                                     resteven@vub.ac.be
                                       @ReinoutStevens




                                              1
Wednesday 6 March 13
Context




                  Program
                Comprehension

                                2
Wednesday 6 March 13
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
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
Pulled up Method
                                      BaseClass


                       Version 1

                                     DerivedClass
                                    Method()



                                       BaseClass
                                    Method()
                       Version 2




                                     DerivedClass

                                           4
Wednesday 6 March 13
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
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
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
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
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
Future Work:
                       Replaying Changes
                              ...




                                                                ??
                              ...



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




                                    10
Wednesday 6 March 13
Questions

                                      Reinout Stevens
                                    resteven@vub.ac.be
                                      @ReinoutStevens
                       http://github.com/ReinoutStevens/damp.qwal
                         http://github.com/cderoove/damp.ekeko




                                           11
Wednesday 6 March 13

More Related Content

PDF
Querying the History of Software Projects using QwalKeko
KEY
QwalKeko, a History Querying Tool
KEY
Query History of a Software Project
KEY
Reasoning over the evolution of source code using QRPE
PDF
QwalKeko, a History Querying Tool
PDF
SEO: Getting Personal
PDF
Lightning Talk #9: How UX and Data Storytelling Can Shape Policy by Mika Aldaba
PDF
Succession “Losers”: What Happens to Executives Passed Over for the CEO Job?
Querying the History of Software Projects using QwalKeko
QwalKeko, a History Querying Tool
Query History of a Software Project
Reasoning over the evolution of source code using QRPE
QwalKeko, a History Querying Tool
SEO: Getting Personal
Lightning Talk #9: How UX and Data Storytelling Can Shape Policy by Mika Aldaba
Succession “Losers”: What Happens to Executives Passed Over for the CEO Job?

Similar to QwalKeko, a History Querying Tool (20)

PDF
Mining Development Repositories to Study the Impact of Collaboration on Softw...
PDF
Refactoring
PDF
Ruby & Machine Vision - Talk at Sheffield Hallam University Feb 2009
PDF
Bug Prediction Based on Fine-Grained Module Histories
PDF
SCAM 2012 Keynote Slides on Cooperative Testing and Analysis by Tao Xie
PDF
2010.10.30 steven sustaining tdd agile tour shenzhen
PDF
Boost your-oop-with-fp
PDF
Measuring
PDF
Effective Scala @ Jfokus
PDF
Experiments with Pro-Active Declarative Meta-Programming
PDF
Code Inspection
PDF
ERA - Clustering and Recommending Collections of Code Relevant to Task
PDF
Solving the XP Legacy Problem with (Extreme) Meta-Programming
PDF
Evolving systems and the link to service orientation
PDF
Ruby World
PDF
Appengine ja-night-10
PDF
Where User Experience And Software Engineering Meet
PDF
Program Comprehension - An Evaluation of the Strategies of Sorting, Filtering...
PDF
Recording Finer-Grained Software Evolution with IDE: An Annotation-Based Appr...
PDF
Less-Dumb Fuzzing and Ruby Metaprogramming
Mining Development Repositories to Study the Impact of Collaboration on Softw...
Refactoring
Ruby & Machine Vision - Talk at Sheffield Hallam University Feb 2009
Bug Prediction Based on Fine-Grained Module Histories
SCAM 2012 Keynote Slides on Cooperative Testing and Analysis by Tao Xie
2010.10.30 steven sustaining tdd agile tour shenzhen
Boost your-oop-with-fp
Measuring
Effective Scala @ Jfokus
Experiments with Pro-Active Declarative Meta-Programming
Code Inspection
ERA - Clustering and Recommending Collections of Code Relevant to Task
Solving the XP Legacy Problem with (Extreme) Meta-Programming
Evolving systems and the link to service orientation
Ruby World
Appengine ja-night-10
Where User Experience And Software Engineering Meet
Program Comprehension - An Evaluation of the Strategies of Sorting, Filtering...
Recording Finer-Grained Software Evolution with IDE: An Annotation-Based Appr...
Less-Dumb Fuzzing and Ruby Metaprogramming
Ad

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
  • 12. Questions Reinout Stevens resteven@vub.ac.be @ReinoutStevens http://github.com/ReinoutStevens/damp.qwal http://github.com/cderoove/damp.ekeko 11 Wednesday 6 March 13