SlideShare ist ein Scribd-Unternehmen logo
1 von 12
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Ähnlich wie QwalKeko, a History Querying Tool

Bayesian network based software reliability prediction
Bayesian network based software reliability predictionBayesian network based software reliability prediction
Bayesian network based software reliability prediction
JULIO GONZALEZ SANZ
 
Interpretability and Reproducibility in Production Machine Learning Applicat...
 Interpretability and Reproducibility in Production Machine Learning Applicat... Interpretability and Reproducibility in Production Machine Learning Applicat...
Interpretability and Reproducibility in Production Machine Learning Applicat...
Swaminathan Sundararaman
 
SBST 2015 - 3rd Tool Competition for Java Junit test Tools
SBST 2015 - 3rd Tool Competition for Java Junit test ToolsSBST 2015 - 3rd Tool Competition for Java Junit test Tools
SBST 2015 - 3rd Tool Competition for Java Junit test Tools
Tanja Vos
 
A novel approach for satellite imagery storage by classify
A novel approach for satellite imagery storage by classifyA novel approach for satellite imagery storage by classify
A novel approach for satellite imagery storage by classify
iaemedu
 
A novel approach for satellite imagery storage by classifying the non duplica...
A novel approach for satellite imagery storage by classifying the non duplica...A novel approach for satellite imagery storage by classifying the non duplica...
A novel approach for satellite imagery storage by classifying the non duplica...
IAEME Publication
 

Ähnlich wie QwalKeko, a History Querying Tool (20)

Bayesian network based software reliability prediction
Bayesian network based software reliability predictionBayesian network based software reliability prediction
Bayesian network based software reliability prediction
 
教師なし画像特徴表現学習の動向 {Un, Self} supervised representation learning (CVPR 2018 完全読破...
教師なし画像特徴表現学習の動向 {Un, Self} supervised representation learning (CVPR 2018 完全読破...教師なし画像特徴表現学習の動向 {Un, Self} supervised representation learning (CVPR 2018 完全読破...
教師なし画像特徴表現学習の動向 {Un, Self} supervised representation learning (CVPR 2018 完全読破...
 
Artificial Intelligence Applications in Petroleum Engineering - Part I
Artificial Intelligence Applications in Petroleum Engineering - Part IArtificial Intelligence Applications in Petroleum Engineering - Part I
Artificial Intelligence Applications in Petroleum Engineering - Part I
 
ARIES: An Eclipse Plug-in To Support Extract Class Refactoring
ARIES: An Eclipse Plug-in To Support Extract Class RefactoringARIES: An Eclipse Plug-in To Support Extract Class Refactoring
ARIES: An Eclipse Plug-in To Support Extract Class Refactoring
 
The caret package is a unified interface to a large number of predictive mode...
The caret package is a unified interface to a large number of predictive mode...The caret package is a unified interface to a large number of predictive mode...
The caret package is a unified interface to a large number of predictive mode...
 
Three Pillars, No Answers: Helping Platform Teams Solve Real Observability Pr...
Three Pillars, No Answers: Helping Platform Teams Solve Real Observability Pr...Three Pillars, No Answers: Helping Platform Teams Solve Real Observability Pr...
Three Pillars, No Answers: Helping Platform Teams Solve Real Observability Pr...
 
Interpretability and Reproducibility in Production Machine Learning Applicat...
 Interpretability and Reproducibility in Production Machine Learning Applicat... Interpretability and Reproducibility in Production Machine Learning Applicat...
Interpretability and Reproducibility in Production Machine Learning Applicat...
 
Multimodal Residual Learning for Visual Question-Answering
Multimodal Residual Learning for Visual Question-AnsweringMultimodal Residual Learning for Visual Question-Answering
Multimodal Residual Learning for Visual Question-Answering
 
SBST 2015 - 3rd Tool Competition for Java Junit test Tools
SBST 2015 - 3rd Tool Competition for Java Junit test ToolsSBST 2015 - 3rd Tool Competition for Java Junit test Tools
SBST 2015 - 3rd Tool Competition for Java Junit test Tools
 
Practicing at the Cutting Edge: Learning and Unlearning about Java Performance
Practicing at the Cutting Edge: Learning and Unlearning about Java PerformancePracticing at the Cutting Edge: Learning and Unlearning about Java Performance
Practicing at the Cutting Edge: Learning and Unlearning about Java Performance
 
ga-2.ppt
ga-2.pptga-2.ppt
ga-2.ppt
 
Jing Ma - 2017 - Detect Rumors in Microblog Posts Using Propagation Structur...
Jing Ma - 2017 -  Detect Rumors in Microblog Posts Using Propagation Structur...Jing Ma - 2017 -  Detect Rumors in Microblog Posts Using Propagation Structur...
Jing Ma - 2017 - Detect Rumors in Microblog Posts Using Propagation Structur...
 
A novel approach for satellite imagery storage by classify
A novel approach for satellite imagery storage by classifyA novel approach for satellite imagery storage by classify
A novel approach for satellite imagery storage by classify
 
A novel approach for satellite imagery storage by classifying the non duplica...
A novel approach for satellite imagery storage by classifying the non duplica...A novel approach for satellite imagery storage by classifying the non duplica...
A novel approach for satellite imagery storage by classifying the non duplica...
 
Bug Prediction Based on Fine-Grained Module Histories
Bug Prediction Based on Fine-Grained Module HistoriesBug Prediction Based on Fine-Grained Module Histories
Bug Prediction Based on Fine-Grained Module Histories
 
cv
cvcv
cv
 
ASE02.ppt
ASE02.pptASE02.ppt
ASE02.ppt
 
50120140503004
5012014050300450120140503004
50120140503004
 
Darwin’s Magic: Evolutionary Computation in Nanoscience, Bioinformatics and S...
Darwin’s Magic: Evolutionary Computation in Nanoscience, Bioinformatics and S...Darwin’s Magic: Evolutionary Computation in Nanoscience, Bioinformatics and S...
Darwin’s Magic: Evolutionary Computation in Nanoscience, Bioinformatics and S...
 
Eeee2017 Conference - OR in the digital era - ICT challenges | Presentation
Eeee2017 Conference - OR in the digital era - ICT challenges | PresentationEeee2017 Conference - OR in the digital era - ICT challenges | Presentation
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
  • 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