SlideShare a Scribd company logo
1 of 15
Recommendation Systems  for Code Reuse Tao Xie Department of Computer Science North Carolina State University Raleigh, USA
Motivation ,[object Object],[object Object],[object Object],[object Object],Frame works
Example Task from Eclipse Programming Task: How to parse code in a dirty editor of Eclipse? ? Query: “ IEditorPart  -> ICompilationUnit ” Open Source Projects 1 2 N … … Extract MIS 1 MIS 2 ... … MIS k *MIS: Method-Invocation sequence, FMIS: Frequent MIS FMIS 1 FMIS 2 … FMIS n Recommend Mine PARSEWeb [Thummalapenta&Xie ASE 07]
Scenario 1 ,[object Object],[object Object],[object Object],[object Object],How to use these APIs? Prospector [Mandelin et al. PLDI 05 ],  XSnippet [ Sahavechaphan&Claypool  OOPSLA 06 ],  PARSEWeb [Thummalapenta&Xie ASE 07]
Example Task from Eclipse Programming ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Prospector [Mandelin et al. PLDI 05 ],  XSnippet [ Sahavechaphan&Claypool  OOPSLA 06 ],  PARSEWeb [Thummalapenta&Xie ASE 07]
Scenario 2 ,[object Object],[object Object],[object Object],[object Object],How to use these APIs? MAPO [Xie&Pei MSR 05]
Example Task from BCEL Programming ,[object Object],[object Object],[object Object],MAPO [Xie&Pei MSR 05]
Scenario 3 ,[object Object],[object Object],[object Object],[object Object],How to use these APIs? Strathcona [Holmes et al. 05],  XSnippet [ Sahavechaphan&Claypool  OOPSLA 06 ]
Example Task from  HttpClient  Programming ,[object Object],[object Object],[object Object],Strathcona [Holmes et al. 05],  XSnippet [ Sahavechaphan&Claypool  OOPSLA 06 ]
Steps in Recommenders ,[object Object],[object Object],[object Object],[object Object],[object Object]
Data Collection/Extraction ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Exploiting A Code Search Engine ,[object Object],[object Object],[object Object],[object Object],PARSEWeb [Thummalapenta&Xie ASE 07]
Available Code Search Engines ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Why not using just code search engines?
What are Developers Searching for? Assieme [Hoffmann et al. UIST 07] 339 sessions related to Java programming 15 million queries of Windows Live Search from May 2006. 117  API sessions (34.2%); 70 trouble-shooting sessions (20.6%)
API-related Search Sessions ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Assieme [Hoffmann et al. UIST 07]

More Related Content

What's hot

OCA Java SE 8 Exam Chapter 3 Core Java APIs
OCA Java SE 8 Exam Chapter 3 Core Java APIsOCA Java SE 8 Exam Chapter 3 Core Java APIs
OCA Java SE 8 Exam Chapter 3 Core Java APIsİbrahim Kürce
 
Automatic Migration of Legacy Java Method Implementations to Interfaces
Automatic Migration of Legacy Java Method Implementations to InterfacesAutomatic Migration of Legacy Java Method Implementations to Interfaces
Automatic Migration of Legacy Java Method Implementations to InterfacesRaffi Khatchadourian
 
JDD2015: ClassIndex - szybka alternatywa dla skanowania klas - Sławek Piotrowski
JDD2015: ClassIndex - szybka alternatywa dla skanowania klas - Sławek PiotrowskiJDD2015: ClassIndex - szybka alternatywa dla skanowania klas - Sławek Piotrowski
JDD2015: ClassIndex - szybka alternatywa dla skanowania klas - Sławek PiotrowskiPROIDEA
 
SherLog: Error Diagnosis by Connecting Clues from Run-time Logs
SherLog: Error Diagnosis by Connecting Clues from Run-time LogsSherLog: Error Diagnosis by Connecting Clues from Run-time Logs
SherLog: Error Diagnosis by Connecting Clues from Run-time LogsDacong (Tony) Yan
 
OCP Java (OCPJP) 8 Exam Quick Reference Card
OCP Java (OCPJP) 8 Exam Quick Reference CardOCP Java (OCPJP) 8 Exam Quick Reference Card
OCP Java (OCPJP) 8 Exam Quick Reference CardHari kiran G
 
JavaParser - A tool to generate, analyze and refactor Java code
JavaParser - A tool to generate, analyze and refactor Java codeJavaParser - A tool to generate, analyze and refactor Java code
JavaParser - A tool to generate, analyze and refactor Java codeFederico Tomassetti
 
Functional programming with Java 8
Functional programming with Java 8Functional programming with Java 8
Functional programming with Java 8LivePerson
 
Understanding And Using Reflection
Understanding And Using ReflectionUnderstanding And Using Reflection
Understanding And Using ReflectionGanesh Samarthyam
 
Whats New in Java 5, 6, & 7 (Webinar Presentation - June 2013)
Whats New in Java 5, 6, & 7 (Webinar Presentation - June 2013)Whats New in Java 5, 6, & 7 (Webinar Presentation - June 2013)
Whats New in Java 5, 6, & 7 (Webinar Presentation - June 2013)DevelopIntelligence
 
Playing with Java Classes and Bytecode
Playing with Java Classes and BytecodePlaying with Java Classes and Bytecode
Playing with Java Classes and BytecodeYoav Avrahami
 
Eclipse Con 2015: Codan - a C/C++ Code Analysis Framework for CDT
Eclipse Con 2015: Codan - a C/C++ Code Analysis Framework for CDTEclipse Con 2015: Codan - a C/C++ Code Analysis Framework for CDT
Eclipse Con 2015: Codan - a C/C++ Code Analysis Framework for CDTElena Laskavaia
 
On Parameterised Types and Java Generics
On Parameterised Types and Java GenericsOn Parameterised Types and Java Generics
On Parameterised Types and Java GenericsYann-Gaël Guéhéneuc
 
Code Analysis and Refactoring with CDT
Code Analysis and Refactoring with CDTCode Analysis and Refactoring with CDT
Code Analysis and Refactoring with CDTdschaefer
 

What's hot (20)

Java programming-examples
Java programming-examplesJava programming-examples
Java programming-examples
 
OCA Java SE 8 Exam Chapter 3 Core Java APIs
OCA Java SE 8 Exam Chapter 3 Core Java APIsOCA Java SE 8 Exam Chapter 3 Core Java APIs
OCA Java SE 8 Exam Chapter 3 Core Java APIs
 
1z0-808-certification-questions-sample
1z0-808-certification-questions-sample1z0-808-certification-questions-sample
1z0-808-certification-questions-sample
 
Automatic Migration of Legacy Java Method Implementations to Interfaces
Automatic Migration of Legacy Java Method Implementations to InterfacesAutomatic Migration of Legacy Java Method Implementations to Interfaces
Automatic Migration of Legacy Java Method Implementations to Interfaces
 
JDD2015: ClassIndex - szybka alternatywa dla skanowania klas - Sławek Piotrowski
JDD2015: ClassIndex - szybka alternatywa dla skanowania klas - Sławek PiotrowskiJDD2015: ClassIndex - szybka alternatywa dla skanowania klas - Sławek Piotrowski
JDD2015: ClassIndex - szybka alternatywa dla skanowania klas - Sławek Piotrowski
 
SherLog: Error Diagnosis by Connecting Clues from Run-time Logs
SherLog: Error Diagnosis by Connecting Clues from Run-time LogsSherLog: Error Diagnosis by Connecting Clues from Run-time Logs
SherLog: Error Diagnosis by Connecting Clues from Run-time Logs
 
OCP Java (OCPJP) 8 Exam Quick Reference Card
OCP Java (OCPJP) 8 Exam Quick Reference CardOCP Java (OCPJP) 8 Exam Quick Reference Card
OCP Java (OCPJP) 8 Exam Quick Reference Card
 
JavaParser - A tool to generate, analyze and refactor Java code
JavaParser - A tool to generate, analyze and refactor Java codeJavaParser - A tool to generate, analyze and refactor Java code
JavaParser - A tool to generate, analyze and refactor Java code
 
Java Tutorial
Java TutorialJava Tutorial
Java Tutorial
 
Functional programming with Java 8
Functional programming with Java 8Functional programming with Java 8
Functional programming with Java 8
 
Invoke dynamics
Invoke dynamicsInvoke dynamics
Invoke dynamics
 
Exception handling
Exception handlingException handling
Exception handling
 
Introduction to Java Programming Part 2
Introduction to Java Programming Part 2Introduction to Java Programming Part 2
Introduction to Java Programming Part 2
 
Understanding And Using Reflection
Understanding And Using ReflectionUnderstanding And Using Reflection
Understanding And Using Reflection
 
Whats New in Java 5, 6, & 7 (Webinar Presentation - June 2013)
Whats New in Java 5, 6, & 7 (Webinar Presentation - June 2013)Whats New in Java 5, 6, & 7 (Webinar Presentation - June 2013)
Whats New in Java 5, 6, & 7 (Webinar Presentation - June 2013)
 
Playing with Java Classes and Bytecode
Playing with Java Classes and BytecodePlaying with Java Classes and Bytecode
Playing with Java Classes and Bytecode
 
Java reflection
Java reflectionJava reflection
Java reflection
 
Eclipse Con 2015: Codan - a C/C++ Code Analysis Framework for CDT
Eclipse Con 2015: Codan - a C/C++ Code Analysis Framework for CDTEclipse Con 2015: Codan - a C/C++ Code Analysis Framework for CDT
Eclipse Con 2015: Codan - a C/C++ Code Analysis Framework for CDT
 
On Parameterised Types and Java Generics
On Parameterised Types and Java GenericsOn Parameterised Types and Java Generics
On Parameterised Types and Java Generics
 
Code Analysis and Refactoring with CDT
Code Analysis and Refactoring with CDTCode Analysis and Refactoring with CDT
Code Analysis and Refactoring with CDT
 

Viewers also liked

Transcoding of MPEG Compressed Bitstreams: Techniques and ...
Transcoding of MPEG Compressed Bitstreams: Techniques and ...Transcoding of MPEG Compressed Bitstreams: Techniques and ...
Transcoding of MPEG Compressed Bitstreams: Techniques and ...Videoguy
 
Scheduling for VBR Video Streaming
Scheduling for VBR Video StreamingScheduling for VBR Video Streaming
Scheduling for VBR Video StreamingVideoguy
 
Randy Bellinger
Randy BellingerRandy Bellinger
Randy BellingerVideoguy
 
Distributed Video Streaming over Internet
Distributed Video Streaming over InternetDistributed Video Streaming over Internet
Distributed Video Streaming over InternetVideoguy
 
Streaming Video over a Wireless Network.ppt
Streaming Video over a Wireless Network.pptStreaming Video over a Wireless Network.ppt
Streaming Video over a Wireless Network.pptVideoguy
 
Streaming Media over the Internet
Streaming Media over the InternetStreaming Media over the Internet
Streaming Media over the InternetVideoguy
 
Providing Controlled Quality Assurance in Video Streaming ...
Providing Controlled Quality Assurance in Video Streaming ...Providing Controlled Quality Assurance in Video Streaming ...
Providing Controlled Quality Assurance in Video Streaming ...Videoguy
 

Viewers also liked (10)

Transcoding of MPEG Compressed Bitstreams: Techniques and ...
Transcoding of MPEG Compressed Bitstreams: Techniques and ...Transcoding of MPEG Compressed Bitstreams: Techniques and ...
Transcoding of MPEG Compressed Bitstreams: Techniques and ...
 
DVSS.ppt
DVSS.pptDVSS.ppt
DVSS.ppt
 
Scheduling for VBR Video Streaming
Scheduling for VBR Video StreamingScheduling for VBR Video Streaming
Scheduling for VBR Video Streaming
 
DRM
DRMDRM
DRM
 
Randy Bellinger
Randy BellingerRandy Bellinger
Randy Bellinger
 
Distributed Video Streaming over Internet
Distributed Video Streaming over InternetDistributed Video Streaming over Internet
Distributed Video Streaming over Internet
 
Streaming Video over a Wireless Network.ppt
Streaming Video over a Wireless Network.pptStreaming Video over a Wireless Network.ppt
Streaming Video over a Wireless Network.ppt
 
Streaming Media over the Internet
Streaming Media over the InternetStreaming Media over the Internet
Streaming Media over the Internet
 
ppt
pptppt
ppt
 
Providing Controlled Quality Assurance in Video Streaming ...
Providing Controlled Quality Assurance in Video Streaming ...Providing Controlled Quality Assurance in Video Streaming ...
Providing Controlled Quality Assurance in Video Streaming ...
 

Similar to Slides

Mining Code Examples with Descriptive Text from Software Artifacts
Mining Code Examples with Descriptive Text from Software ArtifactsMining Code Examples with Descriptive Text from Software Artifacts
Mining Code Examples with Descriptive Text from Software ArtifactsPreetha Chatterjee
 
Advanced java jee material by KV Rao sir
Advanced java jee material by KV Rao sirAdvanced java jee material by KV Rao sir
Advanced java jee material by KV Rao sirAVINASH KUMAR
 
Java findamentals1
Java findamentals1Java findamentals1
Java findamentals1Todor Kolev
 
Java findamentals1
Java findamentals1Java findamentals1
Java findamentals1Todor Kolev
 
Java findamentals1
Java findamentals1Java findamentals1
Java findamentals1Todor Kolev
 
Advance java kvr -satya
Advance java  kvr -satyaAdvance java  kvr -satya
Advance java kvr -satyaSatya Johnny
 
Patterns in Python
Patterns in PythonPatterns in Python
Patterns in Pythondn
 
Laurens Van Den Oever Xopus Presentation
Laurens Van Den Oever Xopus PresentationLaurens Van Den Oever Xopus Presentation
Laurens Van Den Oever Xopus PresentationAjax Experience 2009
 
Introduction
IntroductionIntroduction
Introductionrichsoden
 
C# .NET: Language Features and Creating .NET Projects, Namespaces Classes and...
C# .NET: Language Features and Creating .NET Projects, Namespaces Classes and...C# .NET: Language Features and Creating .NET Projects, Namespaces Classes and...
C# .NET: Language Features and Creating .NET Projects, Namespaces Classes and...yazad dumasia
 
4CS4-25-Java-Lab-Manual.pdf
4CS4-25-Java-Lab-Manual.pdf4CS4-25-Java-Lab-Manual.pdf
4CS4-25-Java-Lab-Manual.pdfamitbhachne
 
Chapter 2.4
Chapter 2.4Chapter 2.4
Chapter 2.4sotlsoc
 
Xopus Application Framework
Xopus Application FrameworkXopus Application Framework
Xopus Application FrameworkJady Yang
 
Java 8 presentation
Java 8 presentationJava 8 presentation
Java 8 presentationVan Huong
 

Similar to Slides (20)

Mining Code Examples with Descriptive Text from Software Artifacts
Mining Code Examples with Descriptive Text from Software ArtifactsMining Code Examples with Descriptive Text from Software Artifacts
Mining Code Examples with Descriptive Text from Software Artifacts
 
Advanced java jee material by KV Rao sir
Advanced java jee material by KV Rao sirAdvanced java jee material by KV Rao sir
Advanced java jee material by KV Rao sir
 
Java findamentals1
Java findamentals1Java findamentals1
Java findamentals1
 
Java findamentals1
Java findamentals1Java findamentals1
Java findamentals1
 
Java findamentals1
Java findamentals1Java findamentals1
Java findamentals1
 
Java Basics
Java BasicsJava Basics
Java Basics
 
Adv kvr -satya
Adv  kvr -satyaAdv  kvr -satya
Adv kvr -satya
 
Advance java kvr -satya
Advance java  kvr -satyaAdvance java  kvr -satya
Advance java kvr -satya
 
Patterns in Python
Patterns in PythonPatterns in Python
Patterns in Python
 
Laurens Van Den Oever Xopus Presentation
Laurens Van Den Oever Xopus PresentationLaurens Van Den Oever Xopus Presentation
Laurens Van Den Oever Xopus Presentation
 
Introduction
IntroductionIntroduction
Introduction
 
JVM
JVMJVM
JVM
 
C# .NET: Language Features and Creating .NET Projects, Namespaces Classes and...
C# .NET: Language Features and Creating .NET Projects, Namespaces Classes and...C# .NET: Language Features and Creating .NET Projects, Namespaces Classes and...
C# .NET: Language Features and Creating .NET Projects, Namespaces Classes and...
 
4CS4-25-Java-Lab-Manual.pdf
4CS4-25-Java-Lab-Manual.pdf4CS4-25-Java-Lab-Manual.pdf
4CS4-25-Java-Lab-Manual.pdf
 
Chapter 2.4
Chapter 2.4Chapter 2.4
Chapter 2.4
 
Java
JavaJava
Java
 
Xopus Application Framework
Xopus Application FrameworkXopus Application Framework
Xopus Application Framework
 
Java 8 presentation
Java 8 presentationJava 8 presentation
Java 8 presentation
 
Colloquium Report
Colloquium ReportColloquium Report
Colloquium Report
 
Java 8
Java 8Java 8
Java 8
 

More from Videoguy

Energy-Aware Wireless Video Streaming
Energy-Aware Wireless Video StreamingEnergy-Aware Wireless Video Streaming
Energy-Aware Wireless Video StreamingVideoguy
 
Microsoft PowerPoint - WirelessCluster_Pres
Microsoft PowerPoint - WirelessCluster_PresMicrosoft PowerPoint - WirelessCluster_Pres
Microsoft PowerPoint - WirelessCluster_PresVideoguy
 
Proxy Cache Management for Fine-Grained Scalable Video Streaming
Proxy Cache Management for Fine-Grained Scalable Video StreamingProxy Cache Management for Fine-Grained Scalable Video Streaming
Proxy Cache Management for Fine-Grained Scalable Video StreamingVideoguy
 
Free-riding Resilient Video Streaming in Peer-to-Peer Networks
Free-riding Resilient Video Streaming in Peer-to-Peer NetworksFree-riding Resilient Video Streaming in Peer-to-Peer Networks
Free-riding Resilient Video Streaming in Peer-to-Peer NetworksVideoguy
 
Instant video streaming
Instant video streamingInstant video streaming
Instant video streamingVideoguy
 
Video Streaming over Bluetooth: A Survey
Video Streaming over Bluetooth: A SurveyVideo Streaming over Bluetooth: A Survey
Video Streaming over Bluetooth: A SurveyVideoguy
 
Video Streaming
Video StreamingVideo Streaming
Video StreamingVideoguy
 
Reaching a Broader Audience
Reaching a Broader AudienceReaching a Broader Audience
Reaching a Broader AudienceVideoguy
 
Considerations for Creating Streamed Video Content over 3G ...
Considerations for Creating Streamed Video Content over 3G ...Considerations for Creating Streamed Video Content over 3G ...
Considerations for Creating Streamed Video Content over 3G ...Videoguy
 
ADVANCES IN CHANNEL-ADAPTIVE VIDEO STREAMING
ADVANCES IN CHANNEL-ADAPTIVE VIDEO STREAMINGADVANCES IN CHANNEL-ADAPTIVE VIDEO STREAMING
ADVANCES IN CHANNEL-ADAPTIVE VIDEO STREAMINGVideoguy
 
Impact of FEC Overhead on Scalable Video Streaming
Impact of FEC Overhead on Scalable Video StreamingImpact of FEC Overhead on Scalable Video Streaming
Impact of FEC Overhead on Scalable Video StreamingVideoguy
 
Application Brief
Application BriefApplication Brief
Application BriefVideoguy
 
Video Streaming Services – Stage 1
Video Streaming Services – Stage 1Video Streaming Services – Stage 1
Video Streaming Services – Stage 1Videoguy
 
Streaming Video into Second Life
Streaming Video into Second LifeStreaming Video into Second Life
Streaming Video into Second LifeVideoguy
 
Flash Live Video Streaming Software
Flash Live Video Streaming SoftwareFlash Live Video Streaming Software
Flash Live Video Streaming SoftwareVideoguy
 
Videoconference Streaming Solutions Cookbook
Videoconference Streaming Solutions CookbookVideoconference Streaming Solutions Cookbook
Videoconference Streaming Solutions CookbookVideoguy
 
Streaming Video Formaten
Streaming Video FormatenStreaming Video Formaten
Streaming Video FormatenVideoguy
 
iPhone Live Video Streaming Software
iPhone Live Video Streaming SoftwareiPhone Live Video Streaming Software
iPhone Live Video Streaming SoftwareVideoguy
 
Glow: Video streaming training guide - Firefox
Glow: Video streaming training guide - FirefoxGlow: Video streaming training guide - Firefox
Glow: Video streaming training guide - FirefoxVideoguy
 

More from Videoguy (20)

Energy-Aware Wireless Video Streaming
Energy-Aware Wireless Video StreamingEnergy-Aware Wireless Video Streaming
Energy-Aware Wireless Video Streaming
 
Microsoft PowerPoint - WirelessCluster_Pres
Microsoft PowerPoint - WirelessCluster_PresMicrosoft PowerPoint - WirelessCluster_Pres
Microsoft PowerPoint - WirelessCluster_Pres
 
Proxy Cache Management for Fine-Grained Scalable Video Streaming
Proxy Cache Management for Fine-Grained Scalable Video StreamingProxy Cache Management for Fine-Grained Scalable Video Streaming
Proxy Cache Management for Fine-Grained Scalable Video Streaming
 
Adobe
AdobeAdobe
Adobe
 
Free-riding Resilient Video Streaming in Peer-to-Peer Networks
Free-riding Resilient Video Streaming in Peer-to-Peer NetworksFree-riding Resilient Video Streaming in Peer-to-Peer Networks
Free-riding Resilient Video Streaming in Peer-to-Peer Networks
 
Instant video streaming
Instant video streamingInstant video streaming
Instant video streaming
 
Video Streaming over Bluetooth: A Survey
Video Streaming over Bluetooth: A SurveyVideo Streaming over Bluetooth: A Survey
Video Streaming over Bluetooth: A Survey
 
Video Streaming
Video StreamingVideo Streaming
Video Streaming
 
Reaching a Broader Audience
Reaching a Broader AudienceReaching a Broader Audience
Reaching a Broader Audience
 
Considerations for Creating Streamed Video Content over 3G ...
Considerations for Creating Streamed Video Content over 3G ...Considerations for Creating Streamed Video Content over 3G ...
Considerations for Creating Streamed Video Content over 3G ...
 
ADVANCES IN CHANNEL-ADAPTIVE VIDEO STREAMING
ADVANCES IN CHANNEL-ADAPTIVE VIDEO STREAMINGADVANCES IN CHANNEL-ADAPTIVE VIDEO STREAMING
ADVANCES IN CHANNEL-ADAPTIVE VIDEO STREAMING
 
Impact of FEC Overhead on Scalable Video Streaming
Impact of FEC Overhead on Scalable Video StreamingImpact of FEC Overhead on Scalable Video Streaming
Impact of FEC Overhead on Scalable Video Streaming
 
Application Brief
Application BriefApplication Brief
Application Brief
 
Video Streaming Services – Stage 1
Video Streaming Services – Stage 1Video Streaming Services – Stage 1
Video Streaming Services – Stage 1
 
Streaming Video into Second Life
Streaming Video into Second LifeStreaming Video into Second Life
Streaming Video into Second Life
 
Flash Live Video Streaming Software
Flash Live Video Streaming SoftwareFlash Live Video Streaming Software
Flash Live Video Streaming Software
 
Videoconference Streaming Solutions Cookbook
Videoconference Streaming Solutions CookbookVideoconference Streaming Solutions Cookbook
Videoconference Streaming Solutions Cookbook
 
Streaming Video Formaten
Streaming Video FormatenStreaming Video Formaten
Streaming Video Formaten
 
iPhone Live Video Streaming Software
iPhone Live Video Streaming SoftwareiPhone Live Video Streaming Software
iPhone Live Video Streaming Software
 
Glow: Video streaming training guide - Firefox
Glow: Video streaming training guide - FirefoxGlow: Video streaming training guide - Firefox
Glow: Video streaming training guide - Firefox
 

Slides

  • 1. Recommendation Systems for Code Reuse Tao Xie Department of Computer Science North Carolina State University Raleigh, USA
  • 2.
  • 3. Example Task from Eclipse Programming Task: How to parse code in a dirty editor of Eclipse? ? Query: “ IEditorPart -> ICompilationUnit ” Open Source Projects 1 2 N … … Extract MIS 1 MIS 2 ... … MIS k *MIS: Method-Invocation sequence, FMIS: Frequent MIS FMIS 1 FMIS 2 … FMIS n Recommend Mine PARSEWeb [Thummalapenta&Xie ASE 07]
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14. What are Developers Searching for? Assieme [Hoffmann et al. UIST 07] 339 sessions related to Java programming 15 million queries of Windows Live Search from May 2006. 117 API sessions (34.2%); 70 trouble-shooting sessions (20.6%)
  • 15.
  • 16.
  • 17. Why Not Use Web Search Engines? Only compatible with new Java versions Requires installation of external library, but no link Code on pages essentially the same Contains no code examples parse xml java ©Raphael Hoffmann Assieme [Hoffmann et al. UIST 07]
  • 18. Code Search Engines import javax.xml.parsers.*; import org.w3c.dom.*; public class JAXPSample {   public static void main(String[] args) {      String filename = "sample.xml";              try {        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();        DocumentBuilder parser = factory.newDocumentBuilder();        Document d = parser.parse(filename);     } catch ( Exception e ) {       System.err.println("Exception: " + e.getMessage());     }   } } Index source code of open-source Projects (from compressed archive Files and CVS repositories) Code is parsed and terms in type names, variable names, etc. are weighted differently. ©Raphael Hoffmann Assieme [Hoffmann et al. UIST 07]
  • 19. Why not use code search engines only? Irrelevant (An Emacs Lisp File!?!) Code is complicated, contains no comments related to query, and is more than 300(!) lines long Requires installation of external library, but no link Code on pages essentially the same parse xml java ©Raphael Hoffmann Assieme [Hoffmann et al. UIST 07]
  • 20. Why not use code search engines only? MAPO [Xie&Pei MSR 06]
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30. Jungloids with Downcasts IDebugView debugger = ... Viewer viewer = debugger.getViewer(); IStructuredSelection sel = (IStructuredSelection) viewer.getSelection(); JavaInspectExpression expr = (JavaInspectExpression) sel.getFirstElement(); Prospector [Mandelin et al. PLDI 05 ] IDebugView Viewer ISelection IStructuredSelection JavaInspectExpression Object getViewer() getSelection() getFirstElement() getInput() downcast downcast
  • 31.
  • 32.
  • 33. Association Rules KApplication reuse patterns CodeWeb [Michail ICSE 00]
  • 34. #include <abcdef.h> void p ( ) { b ( ) ; c ( ) ; } void q ( ) { c ( ) ; b ( ) ; } void r ( ) { e ( ) ; f ( ) ; } void s ( ) { f ( ) ; e ( ) ; } int main ( ) { int i, j, k; a ( ); if ( i == 1) { f ( ) ; e ( ) ; c ( ) ; exit ( ); } else { if ( j == 1 ) p ( ); else q ( ); d ( ) ; if ( k == 1 ) r ( ); else s ( ); } } Frequent SubSeq/Partial Order Consider APIs a, b, c, d, e, and f Apiator [ Acharya et al. FSE 07 ]
  • 35. #include <abcdef.h> void p ( ) { b ( ) ; c ( ) ; } void q ( ) { c ( ) ; b ( ) ; } void r ( ) { e ( ) ; f ( ) ; } void s ( ) { f ( ) ; e ( ) ; } int main ( ) { int i, j, k; a ( ); if ( i == 1) { f ( ) ; e ( ) ; c ( ) ; exit ( ); } else { if ( j == 1 ) p ( ); else q ( ); d ( ) ; if ( k == 1 ) r ( ); else s ( ); } } 1 a  f  e  c 2 a  b  c  d  e  f 3 a  c  b  d  e  f 4 a  b  c  d  f  e 5 a  c  b  d  f  e a d c e b f a  b  d  e a  b  d  f a  c  d  e a  c  d  f (b) Static program traces (c) Frequent sequential patterns Support 4/5 (d) Frequent partial order R (a) Example code Consider APIs a, b, c, d, e, and f Frequent SubSeq/Partial Order Apiator [ Acharya et al. FSE 07 ]
  • 36. #include <abcdef.h> void p ( ) { b ( ) ; c ( ) ; } void q ( ) { c ( ) ; b ( ) ; } void r ( ) { e ( ) ; f ( ) ; } void s ( ) { f ( ) ; e ( ) ; } int main ( ) { int i, j, k; a ( ); if ( i == 1) { f ( ); e ( ); c ( ); exit ( ); } else { if ( j == 1 ) p ( ); else q ( ); d ( ) ; if ( k == 1 ) r ( ); else s ( ); } } 1 a  f  e  c 2 a  b  c  d  e  f 3 a  c  b  d  e  f 4 a  b  c  d  f  e 5 a  c  b  d  f  e a d c e b f a  b  d  e a  b  d  f a  c  d  e a  c  d  f (b) Static program traces (c) Frequent sequential patterns support, 4/5 (d) Frequent partial order R (a) Example code Frequent SubSeq/Partial Order Consider APIs a, b, c, d, e, and f Apiator [ Acharya et al. FSE 07 ]
  • 37. 1 a  f  e  c 2 a  b  c  d  e  f 3 a  c  b  d  e  f 4 a  b  c  d  f  e 5 a  c  b  d  f  e a d c e b f a  b  d  e a  b  d  f a  c  d  e a  c  d  f (b) Static program traces (c) Frequent sequential patterns support, 4/5 (d) Frequent partial order R (a) Example code #include <abcdef.h> void p ( ) { b ( ) ; c ( ) ; } void q ( ) { c ( ) ; b ( ) ; } void r ( ) { e ( ) ; f ( ) ; } void s ( ) { f ( ) ; e ( ) ; } int main ( ) { int i, j, k; a ( ); if ( i == 1) { f ( ); e ( ); c ( ); exit ( ); } else { if ( j == 1 ) p ( ); else q ( ); d ( ) ; if ( k == 1 ) r ( ); else s ( ); } } Frequent SubSeq/Partial Order Apiator [ Acharya et al. FSE 07 ] MAPO [Xie&Pei MSR 05] MAPO Apiator
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 49. XSnippet XSnippet [ Sahavechaphan&Claypool OOPSLA 06 ]
  • 52. MAPO (new) MAPO [Xie&Pei MSR 06]
  • 53. MAPO (new) MAPO [Xie&Pei MSR 06]
  • 54.
  • 55.
  • 56. Assieme Assieme [Hoffmann et al. UIST 07] links to pages with snippets group pages with similar snippets links to required libraries
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
  • 67.
  • 68. Comparison with Other Tools Percentage of tasks successfully completed by PARSEWeb, Prospector, and XSnippet
  • 69. Significance of Internal Techniques *Legend: Method inline: Method inlining Post Process: Sequence Post Processor Query Split: Query Splitter
  • 70.
  • 71. Mining Partial Orders Consider APIs a, b, c, d, e, and f Partial Order Partial Order with Transitive Reduction The extracted scenarios are fed to a partial order miner The partial order miner mines frequent closed partial order Closed Partial Order Apiator [ Acharya et al. FSE 07 ]
  • 72. XOpenDisplay XCloseDisplay XCreateWindow XGetWindowAttributes XCreateGC XSetForeground XGetBackground XMapWindow XChageWindowAttributes XMapWindow XSelectInput XGetAtomName XFreeGC XNextEvent Example Partial Order A usage scenario around XOpenDisplay API as a partial order. Specifications are shown with dotted lines. Apiator [ Acharya et al. FSE 07 ]

Editor's Notes

  1. The frequency domain equalizer is just a complex division per subchannel Channel shortening equalizer is an 20-30 tap FIR filter My focus is on channel shortening