SlideShare ist ein Scribd-Unternehmen logo
1 von 15
Reasoning over the
 evolution of source
 code using QRPEs
Andy Kellens, Coen De Roover, Carlos Noguera,
      Reinout Stevens, Viviane Jonckers




                      1
Context
Where is this method
      called?


                       How often was this
                       method changed?




                                     2
Context                      Table 1: Developers’ Questions and the Operators and Domains for Desired Answers (*: question explicitly
                                                    stated by a developer, id : identif ier matching, t: text matching)




                                                                                                                                                                                    Stack Traces
                                                                                                                                                        Source Code
                                                                                                                                                        Change Sets

                                                                                                                                                                      Work Items




                                                                                                                                                                                    Test Cases
                                                                                                                                                                      Comments
                                                                                                                                                                      Web/Wiki
                                                                                                                                             Operator



                                                                                                                                                                      Teams
                                                     Question


Where is this method                                 Who is working on what (people speciïŹc)
                                                     1. Who is working on what?§
                                                     2. What are they [coworkers] working on right now?§
                                                                                                                                             id
                                                                                                                                             id
                                                                                                                                                        X
                                                                                                                                                        X
                                                                                                                                                               X
                                                                                                                                                               X
                                                                                                                                                                      X
                                                                                                                                                                      X
                                                                                                                                                                          X
                                                                                                                                                                          X
                                                     3. How much work [have] people done?§
      called?
                                                                                                                                             id         X      X      X   X
                                                     4. Who changed this [code], focused on person?§                                         id         X      X      X   X
                                                     5. Who to assign a code review to? / Who has the knowledge to do the code review?       id         X      X      X   X
                                                     6. What have people been working on?§                                                   id                       X   X
                                                     7. Which code reviews have been assigned to which person?§                              id                       X   X
                                                     Changes to the code (code speciïŹc)
                                                     8. What is the evolution of the code?                                                   id         X      X      X   X
                                                     9. Why were they [these changes] introduced?§                                           id         X      X      X   X
                                                     10. Who made a particular change and why?                                               id         X      X      X   X
                                                     11. What classes has my team been working on?§
                       How often was this            12. What are the changes on newly resolved work items related to me?
                                                     13. Who is working on the same classes as I am and for which work item?
                                                                                                                                             id
                                                                                                                                             id
                                                                                                                                             id
                                                                                                                                                        X
                                                                                                                                                        X
                                                                                                                                                        X
                                                                                                                                                               X
                                                                                                                                                               X
                                                                                                                                                               X
                                                                                                                                                                      X
                                                                                                                                                                      X
                                                                                                                                                                      X
                                                                                                                                                                          X
                                                                                                                                                                          X
                                                                                                                                                                          X
                                                     14. What has changed between two builds [and] who has changed it?§                      id         X      X      X
                       method changed?               15. Who has made changes to my classes?
                                                     16. Who is using that API [that I am about to change]?§
                                                                                                                                             id
                                                                                                                                             id
                                                                                                                                                        X
                                                                                                                                                        X
                                                                                                                                                               X
                                                                                                                                                               X
                                                                                                                                                                      X
                                                                                                                                                                      X
                                                     17. Who created the API [that I am about to change]?§                                   id         X      X      X
                                                     18. Who owns this piece of code? / Who modiïŹed it the latest?§                          id         X      X      X
                                                     19. Who owns this piece of code? / Who modiïŹed it most?§                                id         X      X      X
                                                     20. Who to talk to if you have to work with packages you haven’t worked with?           id         X      X      X
                                                     21. What classes have been changed?§                                                    id         X      X
                                                     22. [Which] API has changed (to see which methods are not supported any more)?§         id         X      X
                                                     23. What’s the most popular class? [Which class has been changed most?]§                id         X      X
                                                     24. Which other code that I worked on uses this code pattern / utility function?        id         X      X
                                                     25. Which code has recently changed that is related to me?                              id         X      X
                                                     26. How do recently delivered changes aÆect changes that I am working on?§              id         X      X
                                                     27. What code is related to a change?                                                   id         X      X
                                                     Work item progress
                                                     28. What is the recent activity on a plan item?                                         id                           X X
                                                     29. Which features and functions have been changing?§                                   id                           X X
                                                     30. Has progress been made on blockers (blocking work items) in your milestone?         id                           X X
                                                     31. Is progress (changes) being made on plan items?                                     id                X          X
                                                     Broken builds
                                                     32. What caused this build to break? (Which change caused the stack trace?)             id         X      X                    X
                                                     33. Who caused this build to break? (Who owns the broken tests?)                        id         X      X X                    X
                                                     34. Who changed the test case most recently that caused the build to fail?              id         X      X X                    X
                                                     35. Which changes caused the tests to fail and thus the build to break?                 id         X      X                    X X
                                                     Test cases
                                                     36. Who owns a test case? (Who resolved the last work item that ïŹxed the test case?)    id X X X X                                    X
                                                     37. How do test cases relate to packages/classes?                                       id X                                          X
                                                     References on the web
                                                     38. Which API has changed (check on web site)?                                            t        X                       X
                                                     39. [Is an entry] in newsgroup forum addressed to me because of the class mentioned?§     t        X                       X
                                                     40. What is coming up next week [for my team]? [What is my team doing?]§                  t                      X         X
                                                     41. What am I supposed to work on [plan on wiki]?§                                        t                      X         X
                                                     Other Questions
                                                     42. How is the team organized?§                                                          id X X X
                                                     43. Who has made changes to [a] defect?§                                                 id   X X X
                                                     44. Who has made comments in defect?§                                                    id     X X X
                                                     45. [What is] the collaboration tree around a feature?§                                  id     X X X
                                                     46. Which conversations in work items have I been mentioned?§                           t,id    X X X




                               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
                                      2
Context

                          What code accesses
Where is this method      the database outside   How often was this
  being called?              the persistence     method changed?
                              infrastructure?




                       Program Querying
      IDE                                               ??
                             Tools


                                   3
History Querying


    Version
   Repository




SVN, Monticello
                  4
Absinthe



{
    QRPEs as Temporal Query
           Language

    Repository Representation

    SOUL as Program Query
          Language


     5
QRPE


                     SOUL                   Representation

                                                SOUL




      Which methods are being called by a method
              covered in this unit test?


1   if ?test isTestFor: ?caller,
2      ?caller methodSendsMessage: ?name,
3      ?method isMethodWithName: ?name

                          6
QRPE


        Version Graph                             Representation

                                                      SOUL




                        Version   Version
                          3a        4a




                                            Version
Version 1   Version 2                          5




                        Version   Version
                          3b        4b




                        7
QuantiïŹed Regular Path                                      QRPE

                                                       Representation


     Expressions                                            SOUL




  1   e(
  2        ...
  3        )
  4


  5    matches: ?path
  6    start: ?startVersion
  7    end: ?endVersion
                       Universal regular path queries
                       Oege De Moor and David Lacey and Eric Van Wyk


                   8
QuantiïŹed Regular Path                                      QRPE

                                                       Representation


     Expressions                                            SOUL




  1   e(
  2        ...
  3        )
  4


  5    matches: ?path
  6    start: ?startVersion
  7    end: ?endVersion
                       Universal regular path queries
                       Oege De Moor and David Lacey and Eric Van Wyk


                   8
Zombie Methods

1   if e(
2        ? methodSendsMessage: ?zombie,
3        not(? methodSendsMessage: ?zombie)+<,
4        ?m methodSendsMessage: ?zombie )
5       matches: ?path
6       start: ?start
7       end: ?end



                         9
QRPE Primitives
“aabbbe” =~ /a+b*(c|d|e)f*$/

 Regular Expressions             QRPEs

      expr*                     (goal)*<
      expr+                     (goal)+<
         $                      terminal
 (exprA|exprB)              or(goalA, goalB)
                       10
TDD
1   if e(
2        (and(?m isMethod,
3            not(? isTestFor:?m)))+<,
4        or(not(?m isMethod),
5          terminal,
6          ?test isTestFor:?m))
7       matches: ?path
8       start: ?start
9       end: ?end
                  11
Conclusion & Future Work
     Versions      Classes      Methods


       179           244          2369




 ‱ Include other sources of information

                      12
Extra Information




  http://soft.vub.ac.be/SOUL
     resteven@vub.ac.be
              13

Weitere Àhnliche Inhalte

Andere mochten auch

Querying the History of Software Projects using QwalKeko
Querying the History of Software Projects using QwalKekoQuerying the History of Software Projects using QwalKeko
Querying the History of Software Projects using QwalKekostevensreinout
 
QwalKeko, a History Querying Tool
QwalKeko, a History Querying ToolQwalKeko, a History Querying Tool
QwalKeko, a History Querying Toolstevensreinout
 
Query History of a Software Project
Query History of a Software ProjectQuery History of a Software Project
Query History of a Software Projectstevensreinout
 
QwalKeko, a History Querying Tool
QwalKeko, a History Querying ToolQwalKeko, a History Querying Tool
QwalKeko, a History Querying Toolstevensreinout
 
SEO: Getting Personal
SEO: Getting PersonalSEO: Getting Personal
SEO: Getting PersonalKirsty Hulse
 
Lightning Talk #9: How UX and Data Storytelling Can Shape Policy by Mika Aldaba
Lightning Talk #9: How UX and Data Storytelling Can Shape Policy by Mika AldabaLightning Talk #9: How UX and Data Storytelling Can Shape Policy by Mika Aldaba
Lightning Talk #9: How UX and Data Storytelling Can Shape Policy by Mika Aldabaux singapore
 

Andere mochten auch (7)

Querying the History of Software Projects using QwalKeko
Querying the History of Software Projects using QwalKekoQuerying the History of Software Projects using QwalKeko
Querying the History of Software Projects using QwalKeko
 
QwalKeko, a History Querying Tool
QwalKeko, a History Querying ToolQwalKeko, a History Querying Tool
QwalKeko, a History Querying Tool
 
Query History of a Software Project
Query History of a Software ProjectQuery History of a Software Project
Query History of a Software Project
 
QwalKeko, a History Querying Tool
QwalKeko, a History Querying ToolQwalKeko, a History Querying Tool
QwalKeko, a History Querying Tool
 
SEO: Getting Personal
SEO: Getting PersonalSEO: Getting Personal
SEO: Getting Personal
 
Lightning Talk #9: How UX and Data Storytelling Can Shape Policy by Mika Aldaba
Lightning Talk #9: How UX and Data Storytelling Can Shape Policy by Mika AldabaLightning Talk #9: How UX and Data Storytelling Can Shape Policy by Mika Aldaba
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?
Succession “Losers”: What Happens to Executives Passed Over for the CEO Job? Succession “Losers”: What Happens to Executives Passed Over for the CEO Job?
Succession “Losers”: What Happens to Executives Passed Over for the CEO Job?
 

KĂŒrzlich hochgeladen

Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vĂĄzquez
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesBoston Institute of Analytics
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 

KĂŒrzlich hochgeladen (20)

Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 

Reasoning over the evolution of source code using QRPE

  • 1. Reasoning over the evolution of source code using QRPEs Andy Kellens, Coen De Roover, Carlos Noguera, Reinout Stevens, Viviane Jonckers 1
  • 2. Context Where is this method called? How often was this method changed? 2
  • 3. Context Table 1: Developers’ Questions and the Operators and Domains for Desired Answers (*: question explicitly stated by a developer, id : identif ier matching, t: text matching) Stack Traces Source Code Change Sets Work Items Test Cases Comments Web/Wiki Operator Teams Question Where is this method Who is working on what (people speciïŹc) 1. Who is working on what?§ 2. What are they [coworkers] working on right now?§ id id X X X X X X X X 3. How much work [have] people done?§ called? id X X X X 4. Who changed this [code], focused on person?§ id X X X X 5. Who to assign a code review to? / Who has the knowledge to do the code review? id X X X X 6. What have people been working on?§ id X X 7. Which code reviews have been assigned to which person?§ id X X Changes to the code (code speciïŹc) 8. What is the evolution of the code? id X X X X 9. Why were they [these changes] introduced?§ id X X X X 10. Who made a particular change and why? id X X X X 11. What classes has my team been working on?§ How often was this 12. What are the changes on newly resolved work items related to me? 13. Who is working on the same classes as I am and for which work item? id id id X X X X X X X X X X X X 14. What has changed between two builds [and] who has changed it?§ id X X X method changed? 15. Who has made changes to my classes? 16. Who is using that API [that I am about to change]?§ id id X X X X X X 17. Who created the API [that I am about to change]?§ id X X X 18. Who owns this piece of code? / Who modiïŹed it the latest?§ id X X X 19. Who owns this piece of code? / Who modiïŹed it most?§ id X X X 20. Who to talk to if you have to work with packages you haven’t worked with? id X X X 21. What classes have been changed?§ id X X 22. [Which] API has changed (to see which methods are not supported any more)?§ id X X 23. What’s the most popular class? [Which class has been changed most?]§ id X X 24. Which other code that I worked on uses this code pattern / utility function? id X X 25. Which code has recently changed that is related to me? id X X 26. How do recently delivered changes aÆect changes that I am working on?§ id X X 27. What code is related to a change? id X X Work item progress 28. What is the recent activity on a plan item? id X X 29. Which features and functions have been changing?§ id X X 30. Has progress been made on blockers (blocking work items) in your milestone? id X X 31. Is progress (changes) being made on plan items? id X X Broken builds 32. What caused this build to break? (Which change caused the stack trace?) id X X X 33. Who caused this build to break? (Who owns the broken tests?) id X X X X 34. Who changed the test case most recently that caused the build to fail? id X X X X 35. Which changes caused the tests to fail and thus the build to break? id X X X X Test cases 36. Who owns a test case? (Who resolved the last work item that ïŹxed the test case?) id X X X X X 37. How do test cases relate to packages/classes? id X X References on the web 38. Which API has changed (check on web site)? t X X 39. [Is an entry] in newsgroup forum addressed to me because of the class mentioned?§ t X X 40. What is coming up next week [for my team]? [What is my team doing?]§ t X X 41. What am I supposed to work on [plan on wiki]?§ t X X Other Questions 42. How is the team organized?§ id X X X 43. Who has made changes to [a] defect?§ id X X X 44. Who has made comments in defect?§ id X X X 45. [What is] the collaboration tree around a feature?§ id X X X 46. Which conversations in work items have I been mentioned?§ t,id X X X 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 2
  • 4. Context What code accesses Where is this method the database outside How often was this being called? the persistence method changed? infrastructure? Program Querying IDE ?? Tools 3
  • 5. History Querying Version Repository SVN, Monticello 4
  • 6. Absinthe { QRPEs as Temporal Query Language Repository Representation SOUL as Program Query Language 5
  • 7. QRPE SOUL Representation SOUL Which methods are being called by a method covered in this unit test? 1 if ?test isTestFor: ?caller, 2 ?caller methodSendsMessage: ?name, 3 ?method isMethodWithName: ?name 6
  • 8. QRPE Version Graph Representation SOUL Version Version 3a 4a Version Version 1 Version 2 5 Version Version 3b 4b 7
  • 9. QuantiïŹed Regular Path QRPE Representation Expressions SOUL 1 e( 2 ... 3 ) 4 5 matches: ?path 6 start: ?startVersion 7 end: ?endVersion Universal regular path queries Oege De Moor and David Lacey and Eric Van Wyk 8
  • 10. QuantiïŹed Regular Path QRPE Representation Expressions SOUL 1 e( 2 ... 3 ) 4 5 matches: ?path 6 start: ?startVersion 7 end: ?endVersion Universal regular path queries Oege De Moor and David Lacey and Eric Van Wyk 8
  • 11. Zombie Methods 1 if e( 2 ? methodSendsMessage: ?zombie, 3 not(? methodSendsMessage: ?zombie)+<, 4 ?m methodSendsMessage: ?zombie ) 5 matches: ?path 6 start: ?start 7 end: ?end 9
  • 12. QRPE Primitives “aabbbe” =~ /a+b*(c|d|e)f*$/ Regular Expressions QRPEs expr* (goal)*< expr+ (goal)+< $ terminal (exprA|exprB) or(goalA, goalB) 10
  • 13. TDD 1 if e( 2 (and(?m isMethod, 3 not(? isTestFor:?m)))+<, 4 or(not(?m isMethod), 5 terminal, 6 ?test isTestFor:?m)) 7 matches: ?path 8 start: ?start 9 end: ?end 11
  • 14. Conclusion & Future Work Versions Classes Methods 179 244 2369 ‱ Include other sources of information 12
  • 15. Extra Information http://soft.vub.ac.be/SOUL resteven@vub.ac.be 13

Hinweis der Redaktion

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n