Code search & recommendation engines

Slides:



Advertisements
Similar presentations
Personalized Presentation in Web-Based Information Systems Institute of Informatics and Software Engineering Faculty of Informatics and Information Technologies.
Advertisements

Haystack: Per-User Information Environment 1999 Conference on Information and Knowledge Management Eytan Adar et al Presented by Xiao Hu CS491CXZ.
Search in Source Code Based on Identifying Popular Fragments Eduard Kuric and Mária Bieliková Faculty of Informatics and Information.
Introduction to Information Retrieval
CHAPTER 1 SOFTWARE DEVELOPMENT. 2 Goals of software development Aspects of software quality Development life cycle models Basic concepts of algorithm.
Developing and Evaluating a Query Recommendation Feature to Assist Users with Online Information Seeking & Retrieval With graduate students: Karl Gyllstrom,
Dialogue – Driven Intranet Search Suma Adindla School of Computer Science & Electronic Engineering 8th LANGUAGE & COMPUTATION DAY 2009.
The Experience Factory May 2004 Leonardo Vaccaro.
A Quality Focused Crawler for Health Information Tim Tang.
July 11 th, 2005 Software Engineering with Reusable Components RiSE’s Seminars Sametinger’s book :: Chapters 16, 17 and 18 Fred Durão.
Software Testing and Quality Assurance
Overview of Web Data Mining and Applications Part I
High Level: Generic Test Process (from chapter 6 of your text and earlier lesson) Test Planning & Preparation Test Execution Goals met? Analysis & Follow-up.
Introduction to Software Testing
Zichao Qi, Fan Long, Sara Achour, and Martin Rinard MIT CSAIL
A Social Help Engine for Online Social Network Mobile Users Tam Vu, Akash Baid WINLAB, Rutgers University May 21,
The Project AH Computing. Functional Requirements  What the product must do!  Examples attractive welcome screen all options available as clickable.
CS598CXZ Course Summary ChengXiang Zhai Department of Computer Science University of Illinois, Urbana-Champaign.
Software Quality Chapter Software Quality  How can you tell if software has high quality?  How can we measure the quality of software?  How.
Search Engines and Information Retrieval Chapter 1.
Multi-agent Research Tool (MART) A proposal for MSE project Madhukar Kumar.
Chapter 6 Supplement Knowledge Engineering and Acquisition Chapter 6 Supplement.
1 PARSEWeb: A Programmer Assistant for Reusing Open Source Code on the Web Suresh Thummalapenta and Tao Xie Department of Computer Science North Carolina.
CERN IT Department CH-1211 Genève 23 Switzerland t Internet Services Job Monitoring for the LHC experiments Irina Sidorova (CERN, JINR) on.
Personalized Search Xiao Liu
Introduction to Software Testing. Types of Software Testing Unit Testing Strategies – Equivalence Class Testing – Boundary Value Testing – Output Testing.
Data Mining By Dave Maung.
Yazd University, Electrical and Computer Engineering Department Course Title: Advanced Software Engineering By: Mohammad Ali Zare Chahooki 1 Machine Learning.
Automatically Repairing Broken Workflows for Evolving GUI Applications Sai Zhang University of Washington Joint work with: Hao Lü, Michael D. Ernst.
Individualized Knowledge Access David Karger Lynn Andrea Stein Mark Ackerman Ralph Swick.
Xusheng Xiao North Carolina State University CSC 720 Project Presentation 1.
Search Result Interface Hongning Wang Abstraction of search engine architecture User Ranker Indexer Doc Analyzer Index results Crawler Doc Representation.
Intelligent Agents. 2 What is an Agent? The main point about agents is they are autonomous: capable of acting independently, exhibiting control over their.
TRAC Software for creation of supplier contract risk profile
Navigation Aided Retrieval Shashank Pandit & Christopher Olston Carnegie Mellon & Yahoo.
Multi-cellular paradigm The molecular level can support self- replication (and self- repair). But we also need cells that can be designed to fit the specific.
Information Retrieval in Practice
The Emergent Structure of Development Tasks
Presented by Archana Kumari ( ) | Supervised By Mr Vikram Singh
Software Configuration Management
Regression Testing with its types
Improving searches through community clustering of information
Machine Learning overview Chapter 18, 21
The Development Process of Web Applications
Topic for Presentaion-2
Requirements analysis, representation and validation
David Shepherd, Zachary P. Fry, Emily Hill, Lori Pollock, and K
A Contextual Computing approach towards Personalized Search
Towards Trustworthy Program Repair
Presented by: Edfan Tjandra Alireza Behrouzi Shad
Prepared by Rao Umar Anwar For Detail information Visit my blog:
A Case Study for Adaptive News Systems with Open User Model
Applied Software Implementation & Testing
Project Implementation for ITCS4122
Model-Driven Analysis Frameworks for Embedded Systems
Object Oriented Analysis and Design
Search Techniques and Advanced tools for Researchers
Introduction to Software Testing
Author: Kazunari Sugiyama, etc. (WWW2004)
Changyoon Lee, Donghoon Han, Hyoungwook Jin
Contextual Content Delivery
Software Engineering Practice: A Generic View
The Vision of Self-Aware Performance Models
Privacy Protection for Social Network Services
Automated Analysis and Code Generation for Domain-Specific Models
Precise Condition Synthesis for Program Repair
Bug Localization with Combination of Deep Learning and Information Retrieval A. N. Lam et al. International Conference on Program Comprehension 2017.
Presentation transcript:

Code search & recommendation engines A summary of some results from research Robert Feldt 2016-11-14

Overview Lots of research on Code Search & Recommendation Engines in last 5-10 years This is quite a general overview of some relevant results; you already know some of it Recent trend is Program Repair based on code search (history- or semantics-driven)

Goal is to make developers more effective We want them to more efficiently: Reuse code that already does what they need Find similar code they can change Find examples of how to use similar code Find test code for related code Help them adapt the code Find similar code, doc & bugs for fixing new bugs Help them automatically repair code (fix bugs)

Recommendation engines “Recommendation systems are software applications that aim to support users in their decision-making while interacting with large information spaces. They provide information items estimated to be valuable for a software engineering task in a given context.” Proactively tailor suggestions to meet developers (& testers) current needs and preferences Help find right & relevant info when developers: Lack experience Can’t consider all relevant info at the same time Important, basic/overview work: [Robillard2010] M. Robillard et al ,”Recommendation Systems for Software Engineering”, IEEE Software, 2010.

RSSE design dimensions

Portfolio: Finding Relevant Functions and their Use

Portfolio Interface

Portfolio: Evaluation Results Portfolio was better than Google Code Search and Koders engines Higher confidence, precision and gain Improves ranking of functions: higher in list Half of relevant functions did not contain keyword from Q Call graph analysis required, keyword search not enough Needed both Keywords, PageRank and SAN algorithm for best results

Active Code Search: Improve Ranking based on Feedback Wang, Shaowei et al, “Active Code Search: Incorporating User Feedback to Improve Code Search Relevance”, ASE ’14, 2014, Västerås, Sweden.

Active Code Search: Results 10-15% better than Portfolio (PageRank + SAN) They use it online for one user but Can also be saved for future use Nice way for you to get this information back from plug-in: Add REST function: rerank_result(resultID, [(resultNum1, “NotInteresting”), (resultNum2, “Interesting”)]) it returns a new result, and saves the feedback to improve future search It is a general solution regardless of how you produce result lists, feedback can always improve it

Mining StackOverflow Ponzanelli et al, “Mining StackOverflow to Turn the IDE into a Self-Confident Programming Prompter”, MSR’12, 2012.

PROMPTER: Architecture Ponzanelli et al, “Mining StackOverflow to Turn the IDE into a Self-Confident Programming Prompter”, MSR’12, 2012.

Repairing bugs based on semantic code search SearchRepair: Semantic Code Search = Encode/index based on its constraints on input-output behavior Localize a defect to buggy part of program Construct input-output profile for buggy code Search database for fragments with similar profiles Generate patch based on similar code and validate against test suite Results: Repaired programs passed 97.3% of tests while other techniques reached only 64-72% correctness Quite involved technique since it involves constraint solving Ke et al, “Repairing Programs with Semantic Code Search”, ASE’15, 2015.

Thank you! robert.feldt@huawei.com xiaoming.duan@huawei.com