SlideShare une entreprise Scribd logo
1  sur  15
The End-to-End Use of Source Code Example: An Exploratory Study Rylan Cottrell, Robert J. Walker, Jörg Denzinger University of Calgary Reid Holmes University of Washington
End-to-End Reuse Process Locate Integrate Select Use example Developer’s Context Example Repository Example Source Code
End-to-End Reuse Process [Mcilroy 68] [Fischer, et al. 91] [Dusink & Katwijk 95] [Frakes & Fox 96] Locate Integrate Select Use example Developer’s Context Example Repository Example Source Code
Example
Example  Interfaces Comments First 10 results return: 4 Interfaces. 5Implementations. 	2 were specific to a particular library. 	3 had dependencies on other classes within its system. 1Test (dependent on specific system). Only 21,690 more to go!
Example  3 out of 10 were possibly relevant. Worst case, developer could have to reuse roughly 1882 lines of code.
End-to-End Reuse Process Locate Integrate Select Use example Developer’s Context Example Repository Example Source Code
No End-to-End Tools Exist Locate Integrate Select Developer’s Context Example Repository Example Source Code Google Code Search, XFinder, XSnippet, Prospector Jigsaw PARSEWeb, Strathcona
Research Question Is pipelining existing tools enough?
Case Studies Four scenarios were chosen from the literature (PARSEWeb, Strathcona, XFinder, and XSnippet). Located examples using Strathcona and Google Code Search. Analyzed the first 5 returned results [Starke & Sillito 09]. Integrated potentially relevant examples, manually and with the Jigsaw tool.
Lessons Learned Location Results were ordered with respect to the query and not the end-to-end task. Query does not capture the developer’s reuse context.  Selection Determining example relevant is difficult.
Lessons Learned Cont’d Integration Manual. Identifying the dependencies the code example might have is non-trivial.  Jigsaw. Configuration time often took more time than the actual integration.
Moving Forward Repositories become out of date. Solution: Maintainers need to not only keep source code up-to-date, but also remove out-of-date source code. Queries need to capture the developer’s context. Solution:  Syntax and semantics should be considered. Example ordering is often ineffective. Solution: Ordered relative to their utility to the developer.
Moving Forward Cont’d Attempting multiple integrations is tedious. Solution: Integration phase should be better supported. Integration task are complex. Solution: Developer secondary goals should be considered.
Summary End-to-end reuse approach is not supported by any single tool.  Current approaches using a collection of tools can inhibit the likelihood of successfully utilizing a source code example.

Contenu connexe

Tendances

Measuring the Combinatorial Coverage of Software in Real Time
Measuring the Combinatorial Coverage of Software in Real  TimeMeasuring the Combinatorial Coverage of Software in Real  Time
Measuring the Combinatorial Coverage of Software in Real Time
Zachary Ratliff
 
Automated
AutomatedAutomated
Automated
ingveb
 
Proactive Empirical Assessment of New Language Feature Adoption via Automated...
Proactive Empirical Assessment of New Language Feature Adoption via Automated...Proactive Empirical Assessment of New Language Feature Adoption via Automated...
Proactive Empirical Assessment of New Language Feature Adoption via Automated...
Raffi Khatchadourian
 
Early Detection of Collaboration Conflicts & Risks in Software Development
Early Detection of Collaboration Conflicts & Risks in Software DevelopmentEarly Detection of Collaboration Conflicts & Risks in Software Development
Early Detection of Collaboration Conflicts & Risks in Software Development
Roopesh Jhurani
 
Programming with GUTs
Programming with GUTsProgramming with GUTs
Programming with GUTs
catherinewall
 

Tendances (15)

Applicative evaluation of bilingual terminologies
Applicative evaluation of bilingual terminologiesApplicative evaluation of bilingual terminologies
Applicative evaluation of bilingual terminologies
 
Capture A Common Vocabulary
Capture A Common VocabularyCapture A Common Vocabulary
Capture A Common Vocabulary
 
Search-based testing of procedural programs:iterative single-target or multi-...
Search-based testing of procedural programs:iterative single-target or multi-...Search-based testing of procedural programs:iterative single-target or multi-...
Search-based testing of procedural programs:iterative single-target or multi-...
 
Measuring the Combinatorial Coverage of Software in Real Time
Measuring the Combinatorial Coverage of Software in Real  TimeMeasuring the Combinatorial Coverage of Software in Real  Time
Measuring the Combinatorial Coverage of Software in Real Time
 
Automated
AutomatedAutomated
Automated
 
Resume1
Resume1Resume1
Resume1
 
Priti-3
Priti-3Priti-3
Priti-3
 
Model Driven Method Engineering. A Supporting Infrastructure
Model Driven Method Engineering. A Supporting InfrastructureModel Driven Method Engineering. A Supporting Infrastructure
Model Driven Method Engineering. A Supporting Infrastructure
 
Proactive Empirical Assessment of New Language Feature Adoption via Automated...
Proactive Empirical Assessment of New Language Feature Adoption via Automated...Proactive Empirical Assessment of New Language Feature Adoption via Automated...
Proactive Empirical Assessment of New Language Feature Adoption via Automated...
 
Early Detection of Collaboration Conflicts & Risks in Software Development
Early Detection of Collaboration Conflicts & Risks in Software DevelopmentEarly Detection of Collaboration Conflicts & Risks in Software Development
Early Detection of Collaboration Conflicts & Risks in Software Development
 
SciForge Workshop@Potsdam Institute for Climate Impact Reserach; Nov 2014
SciForge Workshop@Potsdam Institute for Climate Impact Reserach; Nov 2014SciForge Workshop@Potsdam Institute for Climate Impact Reserach; Nov 2014
SciForge Workshop@Potsdam Institute for Climate Impact Reserach; Nov 2014
 
Programming with GUTs
Programming with GUTsProgramming with GUTs
Programming with GUTs
 
Keyphrase Extraction And Source Code Similarity Detection- A Survey
Keyphrase Extraction And Source Code Similarity Detection- A Survey Keyphrase Extraction And Source Code Similarity Detection- A Survey
Keyphrase Extraction And Source Code Similarity Detection- A Survey
 
Mapping and visualization of source code a survey
Mapping and visualization of source code a surveyMapping and visualization of source code a survey
Mapping and visualization of source code a survey
 
Cser13.ppt
Cser13.pptCser13.ppt
Cser13.ppt
 

Similaire à The End-to-End Use of Source Code Example: An Exploratory Study ICSM'09

12266422.ppt
12266422.ppt12266422.ppt
12266422.ppt
CSEC5
 
Code Review
Code ReviewCode Review
Code Review
Ravi Raj
 

Similaire à The End-to-End Use of Source Code Example: An Exploratory Study ICSM'09 (20)

Clean Code V2
Clean Code V2Clean Code V2
Clean Code V2
 
Code quality
Code quality Code quality
Code quality
 
How Do I Refactor This? An Empirical Study on Refactoring Trends and Topics i...
How Do I Refactor This? An Empirical Study on Refactoring Trends and Topics i...How Do I Refactor This? An Empirical Study on Refactoring Trends and Topics i...
How Do I Refactor This? An Empirical Study on Refactoring Trends and Topics i...
 
Advantages and Disadvantages of a Monolithic Repository
Advantages and Disadvantages of a Monolithic RepositoryAdvantages and Disadvantages of a Monolithic Repository
Advantages and Disadvantages of a Monolithic Repository
 
Refactoring, Therapeutic Attitude to Programming.
Refactoring, Therapeutic Attitude to Programming.Refactoring, Therapeutic Attitude to Programming.
Refactoring, Therapeutic Attitude to Programming.
 
Writing code for people
Writing code for peopleWriting code for people
Writing code for people
 
Design Patterns - General Introduction
Design Patterns - General IntroductionDesign Patterns - General Introduction
Design Patterns - General Introduction
 
Top tips from what we've learned from our 10 years experience
Top tips from what we've learned from our 10 years experienceTop tips from what we've learned from our 10 years experience
Top tips from what we've learned from our 10 years experience
 
Coding standards
Coding standardsCoding standards
Coding standards
 
12266422.ppt
12266422.ppt12266422.ppt
12266422.ppt
 
Capella Days 2021 | How much time does modeling take? Experiences from modeli...
Capella Days 2021 | How much time does modeling take? Experiences from modeli...Capella Days 2021 | How much time does modeling take? Experiences from modeli...
Capella Days 2021 | How much time does modeling take? Experiences from modeli...
 
The recommendations system for source code components retrieval
The recommendations system for source code components retrievalThe recommendations system for source code components retrieval
The recommendations system for source code components retrieval
 
A Case Study Of A Reusable Component Collection
A Case Study Of A Reusable Component CollectionA Case Study Of A Reusable Component Collection
A Case Study Of A Reusable Component Collection
 
The challenge of putting software sustainability research into practice
The challenge of putting software sustainability research into practiceThe challenge of putting software sustainability research into practice
The challenge of putting software sustainability research into practice
 
Why We Refactor? Confessions of GitHub Contributors
Why We Refactor? Confessions of GitHub ContributorsWhy We Refactor? Confessions of GitHub Contributors
Why We Refactor? Confessions of GitHub Contributors
 
Code Review
Code ReviewCode Review
Code Review
 
Coding standards
Coding standardsCoding standards
Coding standards
 
Reduce Reuse Refactor
Reduce Reuse RefactorReduce Reuse Refactor
Reduce Reuse Refactor
 
Refactoring
RefactoringRefactoring
Refactoring
 
Test Driven Development - Overview and Adoption
Test Driven Development - Overview and AdoptionTest Driven Development - Overview and Adoption
Test Driven Development - Overview and Adoption
 

Dernier

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 

Dernier (20)

MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
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
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
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
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
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...
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
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
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
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
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
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
 

The End-to-End Use of Source Code Example: An Exploratory Study ICSM'09

  • 1. The End-to-End Use of Source Code Example: An Exploratory Study Rylan Cottrell, Robert J. Walker, Jörg Denzinger University of Calgary Reid Holmes University of Washington
  • 2. End-to-End Reuse Process Locate Integrate Select Use example Developer’s Context Example Repository Example Source Code
  • 3. End-to-End Reuse Process [Mcilroy 68] [Fischer, et al. 91] [Dusink & Katwijk 95] [Frakes & Fox 96] Locate Integrate Select Use example Developer’s Context Example Repository Example Source Code
  • 5. Example Interfaces Comments First 10 results return: 4 Interfaces. 5Implementations. 2 were specific to a particular library. 3 had dependencies on other classes within its system. 1Test (dependent on specific system). Only 21,690 more to go!
  • 6. Example 3 out of 10 were possibly relevant. Worst case, developer could have to reuse roughly 1882 lines of code.
  • 7. End-to-End Reuse Process Locate Integrate Select Use example Developer’s Context Example Repository Example Source Code
  • 8. No End-to-End Tools Exist Locate Integrate Select Developer’s Context Example Repository Example Source Code Google Code Search, XFinder, XSnippet, Prospector Jigsaw PARSEWeb, Strathcona
  • 9. Research Question Is pipelining existing tools enough?
  • 10. Case Studies Four scenarios were chosen from the literature (PARSEWeb, Strathcona, XFinder, and XSnippet). Located examples using Strathcona and Google Code Search. Analyzed the first 5 returned results [Starke & Sillito 09]. Integrated potentially relevant examples, manually and with the Jigsaw tool.
  • 11. Lessons Learned Location Results were ordered with respect to the query and not the end-to-end task. Query does not capture the developer’s reuse context. Selection Determining example relevant is difficult.
  • 12. Lessons Learned Cont’d Integration Manual. Identifying the dependencies the code example might have is non-trivial. Jigsaw. Configuration time often took more time than the actual integration.
  • 13. Moving Forward Repositories become out of date. Solution: Maintainers need to not only keep source code up-to-date, but also remove out-of-date source code. Queries need to capture the developer’s context. Solution: Syntax and semantics should be considered. Example ordering is often ineffective. Solution: Ordered relative to their utility to the developer.
  • 14. Moving Forward Cont’d Attempting multiple integrations is tedious. Solution: Integration phase should be better supported. Integration task are complex. Solution: Developer secondary goals should be considered.
  • 15. Summary End-to-end reuse approach is not supported by any single tool. Current approaches using a collection of tools can inhibit the likelihood of successfully utilizing a source code example.

Notes de l'éditeur

  1. We have access to a vast amount of source code
  2. W
  3. W
  4. Developers can quickly investigate potentially relevant examples.Investigate more examples.Discover better functionalityIdentify issues that are not easily apparent.
  5. Developers can quickly investigate potentially relevant examples.Investigate more examples.Discover better functionalityIdentify issues that are not easily apparent.
  6. Answer research questions
  7. 3. (not necessarily to how well they fulfill the original match)5. (like reducing code duplication and eliminating dangling references)
  8. 3. (not necessarily to how well they fulfill the original match)5. (like reducing code duplication and eliminating dangling references)