SlideShare una empresa de Scribd logo
1 de 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 specific)
                                                     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 specific)
                                                     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 modified it the latest?§                          id         X      X      X
                                                     19. Who owns this piece of code? / Who modified 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 fixed 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
Quantified 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
Quantified 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

Más contenido relacionado

Destacado

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
 

Destacado (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?
 

Último

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
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
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
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
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
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
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
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
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
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
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
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
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 

Último (20)

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
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
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
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
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
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?
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
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...
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
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
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
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
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 

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 specific) 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 specific) 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 modified it the latest?§ id X X X 19. Who owns this piece of code? / Who modified 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 fixed 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. Quantified 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. Quantified 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

Notas del editor

  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