SlideShare une entreprise Scribd logo
1  sur  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

Contenu connexe

En vedette

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
 

En vedette (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?
 

Dernier

Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesZilliz
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfSeasiaInfotech2
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 

Dernier (20)

Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector Databases
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdf
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 

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

Notes de l'éditeur

  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