SlideShare ist ein Scribd-Unternehmen logo
1 von 17
Downloaden Sie, um offline zu lesen
Evaluating Strategies of Sorting,
      Filtering, and Grouping API Methods
              for Code Completion

                                 Daqing Hou, David M. Pletcher

                                Clarkson University, Potsdam NY


                                              1
Wednesday, September 28, 2011                                     1
Evaluating Strategies of Sorting,
      Filtering, and Grouping API Methods
              for Code Completion




                                2
Wednesday, September 28, 2011                2
Information Overloading

                   • Large APIs
                          ex: JDK 1.6, 3,777 classes and interfaces
                   • Learning barriers [Ko et al. 2004]
                          - design
                          - selection
                          - coordination & use
                          - information & understand



                                              3
Wednesday, September 28, 2011                                         3
Evaluating Strategies of Sorting,
      Filtering, and Grouping API Methods
              for Code Completion




                                4
Wednesday, September 28, 2011                4
Code Completion as Antidote
                          current
                   • In Eclipse, completion proposals sorted
                          alphabetically or by-relevance.




                                               5
Wednesday, September 28, 2011                                  5
Evaluating Strategies of Sorting,
      Filtering, and Grouping API Methods
              for Code Completion
                   BCC: Better Code Completion




                                  6
Wednesday, September 28, 2011                    6
Code Completion as Antidote
                     new - 2 ways of sorting
                   • type-based sorting




                                          7
Wednesday, September 28, 2011                   7
Code Completion as Antidote
                     new - 2 ways of sorting
                   • use count-based sorting




                                       8
Wednesday, September 28, 2011                   8
Code Completion as Antidote
                         new - filtering
                   1. public, non-API methods
                      ex: javax.swing.JComponent.updateUI()
                   2. Visible only for limited receiver types
                      ex: JPanel.add(), but not JButton.add()
                   3. Visible in subclass only
                      ex: java.awt.Component.paint()



                                       9
Wednesday, September 28, 2011                                   9
Code Completion as Antidote
                        new - grouping
                   • Display logically related methods together
                          ex: add()/getComponent()/remove() for
                          a Container


                   • Filtering and grouping rules for each API
                          need to be specified only once.


                                            10
Wednesday, September 28, 2011                                     10
Evaluating Strategies of Sorting,
      Filtering, and Grouping API Methods
              for Code Completion




                                11
Wednesday, September 28, 2011                11
Evaluation Methodology

                   •      Compare 14 configurations with Eclipse’s by-
                          relevance as baseline in terms of rank reduction.
                          - rank reduction (7)
                          - primer (2)
                          - structuring (5)

                   •      9 open-source projects

                   •      Metric
                          - rank for an API method
                          - project-wide rank


                                                 12
Wednesday, September 28, 2011                                                 12
Evaluation Result 1: Rank Reduction




                      7 configurations ordered by rank reduction!
                      Best: regular dynamic ranking!

                                          13
Wednesday, September 28, 2011                                      13
Evaluation Result 2: Primer
      7/9 dynamic primers worse than regular dynamic ranking!




           adjusted primers mixed results!




                                        14
Wednesday, September 28, 2011                                   14
Evaluation Result 3: Structuring

                   •      Two mechanisms: grouping and static primers.


                   •      Regular dynamic ranking+grouping is the best
                          configuration for grouping.


                   •      8/9 static primers are better than type+filtering.

                   •      Static primers worse than regular dynamic ranking
                          +grouping, but can still be useful.

                                                 15
Wednesday, September 28, 2011                                                 15
Design Recommendations

                   •      Regular dynamic ranking and adjusted primers for
                          rank reduction.
                   •      Regular dynamic ranking+grouping for additional
                          benefit of API learning.
                   •      Static primers worse than regular dynamic ranking
                          +grouping, but can still be useful.

                   •      Provide multiple options for developers choose
                          from.



                                                 16
Wednesday, September 28, 2011                                                 16
Conclusion and future work

                   •      Implemented Code Completion strategies for
                          moving forward needed API methods, hiding non-
                          API public methods, and grouping API methods
                          according to their semantic relatedness.
                   •      Evaluated 14 configurations of these strategies on
                          9 projects that use AWT/Swing.
                   •      Gave design recommendations.
                   •      Future work includes user studies for features such as
                          grouping, and ways to make primers work.
                   •      Contact me for BCC source code.
                                                  17
Wednesday, September 28, 2011                                                      17

Weitere ähnliche Inhalte

Andere mochten auch

Tutorial 3 - Research methods - Part 2
Tutorial 3 - Research methods - Part 2Tutorial 3 - Research methods - Part 2
Tutorial 3 - Research methods - Part 2ICSM 2011
 
Tutorial 3 - Research methods - Part 1
Tutorial 3 - Research methods - Part 1Tutorial 3 - Research methods - Part 1
Tutorial 3 - Research methods - Part 1ICSM 2011
 
ERA - Measuring Disruption from Software Evolution Activities Using Graph-Bas...
ERA - Measuring Disruption from Software Evolution Activities Using Graph-Bas...ERA - Measuring Disruption from Software Evolution Activities Using Graph-Bas...
ERA - Measuring Disruption from Software Evolution Activities Using Graph-Bas...ICSM 2011
 
Industry - Precise Detection of Un-Initialized Variables in Large, Real-life ...
Industry - Precise Detection of Un-Initialized Variables in Large, Real-life ...Industry - Precise Detection of Un-Initialized Variables in Large, Real-life ...
Industry - Precise Detection of Un-Initialized Variables in Large, Real-life ...ICSM 2011
 
ERA Poster - Measuring Disruption from Software Evolution Activities Using Gr...
ERA Poster - Measuring Disruption from Software Evolution Activities Using Gr...ERA Poster - Measuring Disruption from Software Evolution Activities Using Gr...
ERA Poster - Measuring Disruption from Software Evolution Activities Using Gr...ICSM 2011
 
Migration and Refactoring - Identifying Overly Strong Conditions in Refactori...
Migration and Refactoring - Identifying Overly Strong Conditions in Refactori...Migration and Refactoring - Identifying Overly Strong Conditions in Refactori...
Migration and Refactoring - Identifying Overly Strong Conditions in Refactori...ICSM 2011
 
Industry - Testing & Quality Assurance in Data Migration Projects
Industry - Testing & Quality Assurance in Data Migration Projects Industry - Testing & Quality Assurance in Data Migration Projects
Industry - Testing & Quality Assurance in Data Migration Projects ICSM 2011
 
Industry - Estimating software maintenance effort from use cases an indu...
Industry - Estimating software maintenance effort from use cases an      indu...Industry - Estimating software maintenance effort from use cases an      indu...
Industry - Estimating software maintenance effort from use cases an indu...ICSM 2011
 
Impact Analysis - ImpactScale: Quantifying Change Impact to Predict Faults in...
Impact Analysis - ImpactScale: Quantifying Change Impact to Predict Faults in...Impact Analysis - ImpactScale: Quantifying Change Impact to Predict Faults in...
Impact Analysis - ImpactScale: Quantifying Change Impact to Predict Faults in...ICSM 2011
 
ICSM'01 Most Influential Paper - Rainer Koschke
ICSM'01 Most Influential Paper - Rainer KoschkeICSM'01 Most Influential Paper - Rainer Koschke
ICSM'01 Most Influential Paper - Rainer KoschkeICSM 2011
 
Metrics - Using Source Code Metrics to Predict Change-Prone Java Interfaces
Metrics - Using Source Code Metrics to Predict Change-Prone Java InterfacesMetrics - Using Source Code Metrics to Predict Change-Prone Java Interfaces
Metrics - Using Source Code Metrics to Predict Change-Prone Java InterfacesICSM 2011
 
ERA - Clustering and Recommending Collections of Code Relevant to Task
ERA - Clustering and Recommending Collections of Code Relevant to TaskERA - Clustering and Recommending Collections of Code Relevant to Task
ERA - Clustering and Recommending Collections of Code Relevant to TaskICSM 2011
 
Impact analysis - A Seismology-inspired Approach to Study Change Propagation
Impact analysis - A Seismology-inspired Approach to Study Change PropagationImpact analysis - A Seismology-inspired Approach to Study Change Propagation
Impact analysis - A Seismology-inspired Approach to Study Change PropagationICSM 2011
 
ERA - Tracking Technical Debt
ERA - Tracking Technical DebtERA - Tracking Technical Debt
ERA - Tracking Technical DebtICSM 2011
 
Industry - Relating Developers' Concepts and Artefact Vocabulary in a Financ...
Industry -  Relating Developers' Concepts and Artefact Vocabulary in a Financ...Industry -  Relating Developers' Concepts and Artefact Vocabulary in a Financ...
Industry - Relating Developers' Concepts and Artefact Vocabulary in a Financ...ICSM 2011
 
ERA - A Comparison of Stemmers on Source Code Identifiers for Software Search
ERA - A Comparison of Stemmers on Source Code Identifiers for Software SearchERA - A Comparison of Stemmers on Source Code Identifiers for Software Search
ERA - A Comparison of Stemmers on Source Code Identifiers for Software SearchICSM 2011
 
Postdoc symposium - A Logic Meta-Programming Foundation for Example-Driven Pa...
Postdoc symposium - A Logic Meta-Programming Foundation for Example-Driven Pa...Postdoc symposium - A Logic Meta-Programming Foundation for Example-Driven Pa...
Postdoc symposium - A Logic Meta-Programming Foundation for Example-Driven Pa...ICSM 2011
 
Richard Kemmerer Keynote icsm11
Richard Kemmerer Keynote icsm11Richard Kemmerer Keynote icsm11
Richard Kemmerer Keynote icsm11ICSM 2011
 
Lionel Briand ICSM 2011 Keynote
Lionel Briand ICSM 2011 KeynoteLionel Briand ICSM 2011 Keynote
Lionel Briand ICSM 2011 KeynoteICSM 2011
 
Faults and Regression testing - Localizing Failure-Inducing Program Edits Bas...
Faults and Regression testing - Localizing Failure-Inducing Program Edits Bas...Faults and Regression testing - Localizing Failure-Inducing Program Edits Bas...
Faults and Regression testing - Localizing Failure-Inducing Program Edits Bas...ICSM 2011
 

Andere mochten auch (20)

Tutorial 3 - Research methods - Part 2
Tutorial 3 - Research methods - Part 2Tutorial 3 - Research methods - Part 2
Tutorial 3 - Research methods - Part 2
 
Tutorial 3 - Research methods - Part 1
Tutorial 3 - Research methods - Part 1Tutorial 3 - Research methods - Part 1
Tutorial 3 - Research methods - Part 1
 
ERA - Measuring Disruption from Software Evolution Activities Using Graph-Bas...
ERA - Measuring Disruption from Software Evolution Activities Using Graph-Bas...ERA - Measuring Disruption from Software Evolution Activities Using Graph-Bas...
ERA - Measuring Disruption from Software Evolution Activities Using Graph-Bas...
 
Industry - Precise Detection of Un-Initialized Variables in Large, Real-life ...
Industry - Precise Detection of Un-Initialized Variables in Large, Real-life ...Industry - Precise Detection of Un-Initialized Variables in Large, Real-life ...
Industry - Precise Detection of Un-Initialized Variables in Large, Real-life ...
 
ERA Poster - Measuring Disruption from Software Evolution Activities Using Gr...
ERA Poster - Measuring Disruption from Software Evolution Activities Using Gr...ERA Poster - Measuring Disruption from Software Evolution Activities Using Gr...
ERA Poster - Measuring Disruption from Software Evolution Activities Using Gr...
 
Migration and Refactoring - Identifying Overly Strong Conditions in Refactori...
Migration and Refactoring - Identifying Overly Strong Conditions in Refactori...Migration and Refactoring - Identifying Overly Strong Conditions in Refactori...
Migration and Refactoring - Identifying Overly Strong Conditions in Refactori...
 
Industry - Testing & Quality Assurance in Data Migration Projects
Industry - Testing & Quality Assurance in Data Migration Projects Industry - Testing & Quality Assurance in Data Migration Projects
Industry - Testing & Quality Assurance in Data Migration Projects
 
Industry - Estimating software maintenance effort from use cases an indu...
Industry - Estimating software maintenance effort from use cases an      indu...Industry - Estimating software maintenance effort from use cases an      indu...
Industry - Estimating software maintenance effort from use cases an indu...
 
Impact Analysis - ImpactScale: Quantifying Change Impact to Predict Faults in...
Impact Analysis - ImpactScale: Quantifying Change Impact to Predict Faults in...Impact Analysis - ImpactScale: Quantifying Change Impact to Predict Faults in...
Impact Analysis - ImpactScale: Quantifying Change Impact to Predict Faults in...
 
ICSM'01 Most Influential Paper - Rainer Koschke
ICSM'01 Most Influential Paper - Rainer KoschkeICSM'01 Most Influential Paper - Rainer Koschke
ICSM'01 Most Influential Paper - Rainer Koschke
 
Metrics - Using Source Code Metrics to Predict Change-Prone Java Interfaces
Metrics - Using Source Code Metrics to Predict Change-Prone Java InterfacesMetrics - Using Source Code Metrics to Predict Change-Prone Java Interfaces
Metrics - Using Source Code Metrics to Predict Change-Prone Java Interfaces
 
ERA - Clustering and Recommending Collections of Code Relevant to Task
ERA - Clustering and Recommending Collections of Code Relevant to TaskERA - Clustering and Recommending Collections of Code Relevant to Task
ERA - Clustering and Recommending Collections of Code Relevant to Task
 
Impact analysis - A Seismology-inspired Approach to Study Change Propagation
Impact analysis - A Seismology-inspired Approach to Study Change PropagationImpact analysis - A Seismology-inspired Approach to Study Change Propagation
Impact analysis - A Seismology-inspired Approach to Study Change Propagation
 
ERA - Tracking Technical Debt
ERA - Tracking Technical DebtERA - Tracking Technical Debt
ERA - Tracking Technical Debt
 
Industry - Relating Developers' Concepts and Artefact Vocabulary in a Financ...
Industry -  Relating Developers' Concepts and Artefact Vocabulary in a Financ...Industry -  Relating Developers' Concepts and Artefact Vocabulary in a Financ...
Industry - Relating Developers' Concepts and Artefact Vocabulary in a Financ...
 
ERA - A Comparison of Stemmers on Source Code Identifiers for Software Search
ERA - A Comparison of Stemmers on Source Code Identifiers for Software SearchERA - A Comparison of Stemmers on Source Code Identifiers for Software Search
ERA - A Comparison of Stemmers on Source Code Identifiers for Software Search
 
Postdoc symposium - A Logic Meta-Programming Foundation for Example-Driven Pa...
Postdoc symposium - A Logic Meta-Programming Foundation for Example-Driven Pa...Postdoc symposium - A Logic Meta-Programming Foundation for Example-Driven Pa...
Postdoc symposium - A Logic Meta-Programming Foundation for Example-Driven Pa...
 
Richard Kemmerer Keynote icsm11
Richard Kemmerer Keynote icsm11Richard Kemmerer Keynote icsm11
Richard Kemmerer Keynote icsm11
 
Lionel Briand ICSM 2011 Keynote
Lionel Briand ICSM 2011 KeynoteLionel Briand ICSM 2011 Keynote
Lionel Briand ICSM 2011 Keynote
 
Faults and Regression testing - Localizing Failure-Inducing Program Edits Bas...
Faults and Regression testing - Localizing Failure-Inducing Program Edits Bas...Faults and Regression testing - Localizing Failure-Inducing Program Edits Bas...
Faults and Regression testing - Localizing Failure-Inducing Program Edits Bas...
 

Ähnlich wie Program Comprehension - An Evaluation of the Strategies of Sorting, Filtering, and Grouping API Methods for Code Completion

Gap assessment kubernetes
Gap assessment   kubernetesGap assessment   kubernetes
Gap assessment kubernetesMarc Hornbeek
 
Integrating Quality into Project Portfolio Management
Integrating Quality into Project Portfolio ManagementIntegrating Quality into Project Portfolio Management
Integrating Quality into Project Portfolio ManagementChris Sterling
 
TEA Presentation V 0.3
TEA Presentation V 0.3TEA Presentation V 0.3
TEA Presentation V 0.3Ian McDonald
 
CSED - Manel Grichi
CSED - Manel GrichiCSED - Manel Grichi
CSED - Manel GrichiPtidej Team
 
Sustainability Evaluation of Software Architectures: A Systematic Review
Sustainability Evaluation of Software Architectures: A Systematic ReviewSustainability Evaluation of Software Architectures: A Systematic Review
Sustainability Evaluation of Software Architectures: A Systematic ReviewHeiko Koziolek
 
Alliance Successful Selenium Automation
Alliance Successful Selenium AutomationAlliance Successful Selenium Automation
Alliance Successful Selenium Automationsadams22
 
Framework Engineering_Final
Framework Engineering_FinalFramework Engineering_Final
Framework Engineering_FinalYoungSu Son
 
Agile Product Line Engineering Literature Review
Agile Product Line Engineering Literature ReviewAgile Product Line Engineering Literature Review
Agile Product Line Engineering Literature ReviewHeba Elshandidy
 
Product quality in agile project
Product quality in agile projectProduct quality in agile project
Product quality in agile projectNhan Nguyen
 
Code Craftsmanship Checklist
Code Craftsmanship ChecklistCode Craftsmanship Checklist
Code Craftsmanship ChecklistRyan Polk
 
Visionbi Quality Gates
Visionbi Quality GatesVisionbi Quality Gates
Visionbi Quality GatesRam Yonish
 
Software test automation_overview
Software test automation_overviewSoftware test automation_overview
Software test automation_overviewRohan Bhattarai
 
Benchmarking Automated Machine Learning For Clustering
Benchmarking Automated Machine Learning For ClusteringBenchmarking Automated Machine Learning For Clustering
Benchmarking Automated Machine Learning For Clusteringbiagiolicari7
 
Agile vs. DevOps for Continuous Testing: How to Optimize Your Pipeline
Agile vs. DevOps for Continuous Testing: How to Optimize Your PipelineAgile vs. DevOps for Continuous Testing: How to Optimize Your Pipeline
Agile vs. DevOps for Continuous Testing: How to Optimize Your PipelinePerfecto by Perforce
 
Web App Testing - A Practical Approach
Web App Testing - A Practical ApproachWeb App Testing - A Practical Approach
Web App Testing - A Practical ApproachWalter Mamed
 
Agile Mumbai 2022 - Rohit Handa | Combining Human and Artificial Intelligence...
Agile Mumbai 2022 - Rohit Handa | Combining Human and Artificial Intelligence...Agile Mumbai 2022 - Rohit Handa | Combining Human and Artificial Intelligence...
Agile Mumbai 2022 - Rohit Handa | Combining Human and Artificial Intelligence...AgileNetwork
 

Ähnlich wie Program Comprehension - An Evaluation of the Strategies of Sorting, Filtering, and Grouping API Methods for Code Completion (20)

Gap assessment kubernetes
Gap assessment   kubernetesGap assessment   kubernetes
Gap assessment kubernetes
 
Integrating Quality into Project Portfolio Management
Integrating Quality into Project Portfolio ManagementIntegrating Quality into Project Portfolio Management
Integrating Quality into Project Portfolio Management
 
TEA Presentation V 0.3
TEA Presentation V 0.3TEA Presentation V 0.3
TEA Presentation V 0.3
 
CSED - Manel Grichi
CSED - Manel GrichiCSED - Manel Grichi
CSED - Manel Grichi
 
Sustainability Evaluation of Software Architectures: A Systematic Review
Sustainability Evaluation of Software Architectures: A Systematic ReviewSustainability Evaluation of Software Architectures: A Systematic Review
Sustainability Evaluation of Software Architectures: A Systematic Review
 
Alliance Successful Selenium Automation
Alliance Successful Selenium AutomationAlliance Successful Selenium Automation
Alliance Successful Selenium Automation
 
Framework Engineering_Final
Framework Engineering_FinalFramework Engineering_Final
Framework Engineering_Final
 
Agile Product Line Engineering Literature Review
Agile Product Line Engineering Literature ReviewAgile Product Line Engineering Literature Review
Agile Product Line Engineering Literature Review
 
Product quality in agile project
Product quality in agile projectProduct quality in agile project
Product quality in agile project
 
Code Craftsmanship Checklist
Code Craftsmanship ChecklistCode Craftsmanship Checklist
Code Craftsmanship Checklist
 
OpenStack Extensions
OpenStack ExtensionsOpenStack Extensions
OpenStack Extensions
 
03 Living Labs and Smart Cities Pieter Ballon
03 Living Labs and Smart Cities Pieter Ballon03 Living Labs and Smart Cities Pieter Ballon
03 Living Labs and Smart Cities Pieter Ballon
 
Visionbi Quality Gates
Visionbi Quality GatesVisionbi Quality Gates
Visionbi Quality Gates
 
Tcoe team
Tcoe teamTcoe team
Tcoe team
 
Software test automation_overview
Software test automation_overviewSoftware test automation_overview
Software test automation_overview
 
Benchmarking Automated Machine Learning For Clustering
Benchmarking Automated Machine Learning For ClusteringBenchmarking Automated Machine Learning For Clustering
Benchmarking Automated Machine Learning For Clustering
 
Agile vs. DevOps for Continuous Testing: How to Optimize Your Pipeline
Agile vs. DevOps for Continuous Testing: How to Optimize Your PipelineAgile vs. DevOps for Continuous Testing: How to Optimize Your Pipeline
Agile vs. DevOps for Continuous Testing: How to Optimize Your Pipeline
 
Web App Testing - A Practical Approach
Web App Testing - A Practical ApproachWeb App Testing - A Practical Approach
Web App Testing - A Practical Approach
 
Agile Mumbai 2022 - Rohit Handa | Combining Human and Artificial Intelligence...
Agile Mumbai 2022 - Rohit Handa | Combining Human and Artificial Intelligence...Agile Mumbai 2022 - Rohit Handa | Combining Human and Artificial Intelligence...
Agile Mumbai 2022 - Rohit Handa | Combining Human and Artificial Intelligence...
 
Software process
Software processSoftware process
Software process
 

Kürzlich hochgeladen

Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
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
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
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
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
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
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
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
 

Kürzlich hochgeladen (20)

Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
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
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
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
 
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!
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
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
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
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?
 

Program Comprehension - An Evaluation of the Strategies of Sorting, Filtering, and Grouping API Methods for Code Completion

  • 1. Evaluating Strategies of Sorting, Filtering, and Grouping API Methods for Code Completion Daqing Hou, David M. Pletcher Clarkson University, Potsdam NY 1 Wednesday, September 28, 2011 1
  • 2. Evaluating Strategies of Sorting, Filtering, and Grouping API Methods for Code Completion 2 Wednesday, September 28, 2011 2
  • 3. Information Overloading • Large APIs ex: JDK 1.6, 3,777 classes and interfaces • Learning barriers [Ko et al. 2004] - design - selection - coordination & use - information & understand 3 Wednesday, September 28, 2011 3
  • 4. Evaluating Strategies of Sorting, Filtering, and Grouping API Methods for Code Completion 4 Wednesday, September 28, 2011 4
  • 5. Code Completion as Antidote current • In Eclipse, completion proposals sorted alphabetically or by-relevance. 5 Wednesday, September 28, 2011 5
  • 6. Evaluating Strategies of Sorting, Filtering, and Grouping API Methods for Code Completion BCC: Better Code Completion 6 Wednesday, September 28, 2011 6
  • 7. Code Completion as Antidote new - 2 ways of sorting • type-based sorting 7 Wednesday, September 28, 2011 7
  • 8. Code Completion as Antidote new - 2 ways of sorting • use count-based sorting 8 Wednesday, September 28, 2011 8
  • 9. Code Completion as Antidote new - filtering 1. public, non-API methods ex: javax.swing.JComponent.updateUI() 2. Visible only for limited receiver types ex: JPanel.add(), but not JButton.add() 3. Visible in subclass only ex: java.awt.Component.paint() 9 Wednesday, September 28, 2011 9
  • 10. Code Completion as Antidote new - grouping • Display logically related methods together ex: add()/getComponent()/remove() for a Container • Filtering and grouping rules for each API need to be specified only once. 10 Wednesday, September 28, 2011 10
  • 11. Evaluating Strategies of Sorting, Filtering, and Grouping API Methods for Code Completion 11 Wednesday, September 28, 2011 11
  • 12. Evaluation Methodology • Compare 14 configurations with Eclipse’s by- relevance as baseline in terms of rank reduction. - rank reduction (7) - primer (2) - structuring (5) • 9 open-source projects • Metric - rank for an API method - project-wide rank 12 Wednesday, September 28, 2011 12
  • 13. Evaluation Result 1: Rank Reduction 7 configurations ordered by rank reduction! Best: regular dynamic ranking! 13 Wednesday, September 28, 2011 13
  • 14. Evaluation Result 2: Primer 7/9 dynamic primers worse than regular dynamic ranking! adjusted primers mixed results! 14 Wednesday, September 28, 2011 14
  • 15. Evaluation Result 3: Structuring • Two mechanisms: grouping and static primers. • Regular dynamic ranking+grouping is the best configuration for grouping. • 8/9 static primers are better than type+filtering. • Static primers worse than regular dynamic ranking +grouping, but can still be useful. 15 Wednesday, September 28, 2011 15
  • 16. Design Recommendations • Regular dynamic ranking and adjusted primers for rank reduction. • Regular dynamic ranking+grouping for additional benefit of API learning. • Static primers worse than regular dynamic ranking +grouping, but can still be useful. • Provide multiple options for developers choose from. 16 Wednesday, September 28, 2011 16
  • 17. Conclusion and future work • Implemented Code Completion strategies for moving forward needed API methods, hiding non- API public methods, and grouping API methods according to their semantic relatedness. • Evaluated 14 configurations of these strategies on 9 projects that use AWT/Swing. • Gave design recommendations. • Future work includes user studies for features such as grouping, and ways to make primers work. • Contact me for BCC source code. 17 Wednesday, September 28, 2011 17