SlideShare a Scribd company logo
1 of 16
Mining Jungloids to Cure  Programmer Headaches Dave Mandelin, Ras Bodik UC Berkeley Doug Kimelman IBM
Motivation: the price of code reuse ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],ICompilationUnit cu = JavaCore.createCompilationUnitFrom( javaFile ); CompilationUnit  ASTroot  = AST.parseCompilationUnit(cu, false);
First key observation ,[object Object],[object Object],[object Object],[object Object],[object Object],ICompilationUnit cu = JavaCore.createCompilationUnitFrom( javaFile ); CompilationUnit  ASTroot  = AST.parseCompilationUnit(cu, false);
First key observation (contā€™d) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],ICompilationUnit cu = JavaCore.createCompilationUnitFrom( javaFile ); CompilationUnit  ASTroot  = AST.parseCompilationUnit(cu, false);
Prospector: a jungloid assistant tool ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Demo ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Demo
Program representation ,[object Object],[object Object],[object Object],[object Object],[object Object],JavaEditor IWorkbenchPartSite Shell ISourceViewer StyledText .getSite() .getShell() .getTextWidget() .getViewer() .getShell()
Second key observation ,[object Object],[object Object],[object Object],[object Object],[object Object],JavaEditor IWorkbenchPartSite Shell .getSite() .getShell() ISourceViewer StyledText .getTextWidget() .getViewer() .getShell() IViewPartInputProvider UserInputWizardPage String JFormattedTextField Object MouseMotionListener EventListenerProxy
Experiment (shortest-path jungloids) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
The downcast problem ,[object Object],[object Object],[object Object],IStructuredSelection ssel =  (IStructuredSelection)  sel; ICompilationUnit cu =  (ICompilationUnit)  sel.getFirstElement(); CompilationUnit ast = AST.parseCompilationUnit(cu, false); CompilationUnit ICompilationUnit IStructuredSelection Object .getFirstElement() AST.parseCompilationUnit(_, false) .getFirstElement() ActionContext ac = new ActionContext(startVar); char[] char_ary = ac.toString().toCharArray(); CompilationUnit resultVar = AST.parseCompilationUnit(char_ary);
The subtype mining algorithm ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
The big picture  ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Summary ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Future work ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Future work ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]

More Related Content

What's hot

Generic Programming seminar
Generic Programming seminarGeneric Programming seminar
Generic Programming seminar
Gautam Roy
Ā 
Aligning OCL and UML
Aligning OCL and UMLAligning OCL and UML
Aligning OCL and UML
Edward Willink
Ā 
Writing Node.js Bindings - General Principles - Gabriel Schulhof
Writing Node.js Bindings - General Principles - Gabriel SchulhofWriting Node.js Bindings - General Principles - Gabriel Schulhof
Writing Node.js Bindings - General Principles - Gabriel Schulhof
WithTheBest
Ā 
Finding bugs that matter with Findbugs
Finding bugs that matter with FindbugsFinding bugs that matter with Findbugs
Finding bugs that matter with Findbugs
Carol McDonald
Ā 
Python Programming - VI. Classes and Objects
Python Programming - VI. Classes and ObjectsPython Programming - VI. Classes and Objects
Python Programming - VI. Classes and Objects
Ranel Padon
Ā 
Constructor and desturctor
Constructor and desturctorConstructor and desturctor
Constructor and desturctor
Somnath Kulkarni
Ā 

What's hot (20)

Modern C++
Modern C++Modern C++
Modern C++
Ā 
Generic Programming seminar
Generic Programming seminarGeneric Programming seminar
Generic Programming seminar
Ā 
Aligning OCL and UML
Aligning OCL and UMLAligning OCL and UML
Aligning OCL and UML
Ā 
Introduction to c_plus_plus (6)
Introduction to c_plus_plus (6)Introduction to c_plus_plus (6)
Introduction to c_plus_plus (6)
Ā 
About Python
About PythonAbout Python
About Python
Ā 
Writing Node.js Bindings - General Principles - Gabriel Schulhof
Writing Node.js Bindings - General Principles - Gabriel SchulhofWriting Node.js Bindings - General Principles - Gabriel Schulhof
Writing Node.js Bindings - General Principles - Gabriel Schulhof
Ā 
Object Oriented Programming using C++ Part I
Object Oriented Programming using C++ Part IObject Oriented Programming using C++ Part I
Object Oriented Programming using C++ Part I
Ā 
Finding bugs that matter with Findbugs
Finding bugs that matter with FindbugsFinding bugs that matter with Findbugs
Finding bugs that matter with Findbugs
Ā 
C++ Interview Questions
C++ Interview QuestionsC++ Interview Questions
C++ Interview Questions
Ā 
Constructors and destructors
Constructors and destructorsConstructors and destructors
Constructors and destructors
Ā 
Generic Programming in java
Generic Programming in javaGeneric Programming in java
Generic Programming in java
Ā 
Inheritance
InheritanceInheritance
Inheritance
Ā 
Python Programming - VI. Classes and Objects
Python Programming - VI. Classes and ObjectsPython Programming - VI. Classes and Objects
Python Programming - VI. Classes and Objects
Ā 
Java Basics
Java BasicsJava Basics
Java Basics
Ā 
Compiler2016 by abcdabcd987
Compiler2016 by abcdabcd987Compiler2016 by abcdabcd987
Compiler2016 by abcdabcd987
Ā 
Constructors destructors
Constructors destructorsConstructors destructors
Constructors destructors
Ā 
Beyond PITS, Functional Principles for Software Architecture
Beyond PITS, Functional Principles for Software ArchitectureBeyond PITS, Functional Principles for Software Architecture
Beyond PITS, Functional Principles for Software Architecture
Ā 
C# in depth
C# in depthC# in depth
C# in depth
Ā 
Xtext: code generation
Xtext: code generationXtext: code generation
Xtext: code generation
Ā 
Constructor and desturctor
Constructor and desturctorConstructor and desturctor
Constructor and desturctor
Ā 

Viewers also liked (20)

Chi Vuol Essere Un Ladrone
Chi Vuol Essere Un LadroneChi Vuol Essere Un Ladrone
Chi Vuol Essere Un Ladrone
Ā 
Welcome to Gonzalez UMC
Welcome to Gonzalez UMCWelcome to Gonzalez UMC
Welcome to Gonzalez UMC
Ā 
Internet e EducaĆ§Ć£o - GEPETE
Internet e EducaĆ§Ć£o - GEPETEInternet e EducaĆ§Ć£o - GEPETE
Internet e EducaĆ§Ć£o - GEPETE
Ā 
Israeli Painters
Israeli PaintersIsraeli Painters
Israeli Painters
Ā 
111a
111a111a
111a
Ā 
102a
102a102a
102a
Ā 
124a
124a124a
124a
Ā 
Que pastel te gusta mas
Que pastel te gusta masQue pastel te gusta mas
Que pastel te gusta mas
Ā 
Venciendo El Fracaso
Venciendo El FracasoVenciendo El Fracaso
Venciendo El Fracaso
Ā 
Cnc Mill
Cnc MillCnc Mill
Cnc Mill
Ā 
194a
194a194a
194a
Ā 
De Que Te Sirve
De Que Te SirveDe Que Te Sirve
De Que Te Sirve
Ā 
105a
105a105a
105a
Ā 
123a
123a123a
123a
Ā 
158
158158
158
Ā 
Final Fungi
Final FungiFinal Fungi
Final Fungi
Ā 
Eportfolios and WebCT
Eportfolios and WebCTEportfolios and WebCT
Eportfolios and WebCT
Ā 
Kpm Symposium
Kpm SymposiumKpm Symposium
Kpm Symposium
Ā 
051a
051a051a
051a
Ā 
Top 10 Reasons Obama Is The Man
Top 10 Reasons Obama Is The ManTop 10 Reasons Obama Is The Man
Top 10 Reasons Obama Is The Man
Ā 

Similar to Prospector Osq 2004 Final

Similar to Prospector Osq 2004 Final (20)

Framework engineering JCO 2011
Framework engineering JCO 2011Framework engineering JCO 2011
Framework engineering JCO 2011
Ā 
Java generics final
Java generics finalJava generics final
Java generics final
Ā 
Cross Platform App Development with C++
Cross Platform App Development with C++Cross Platform App Development with C++
Cross Platform App Development with C++
Ā 
2. Design patterns. part #2
2. Design patterns. part #22. Design patterns. part #2
2. Design patterns. part #2
Ā 
C# Unit 2 notes
C# Unit 2 notesC# Unit 2 notes
C# Unit 2 notes
Ā 
JavaScript Miller Columns
JavaScript Miller ColumnsJavaScript Miller Columns
JavaScript Miller Columns
Ā 
Clojure Fundamentals Course For Beginners
Clojure Fundamentals Course For Beginners Clojure Fundamentals Course For Beginners
Clojure Fundamentals Course For Beginners
Ā 
iPhone development from a Java perspective (Jazoon '09)
iPhone development from a Java perspective (Jazoon '09)iPhone development from a Java perspective (Jazoon '09)
iPhone development from a Java perspective (Jazoon '09)
Ā 
A Survey of Concurrency Constructs
A Survey of Concurrency ConstructsA Survey of Concurrency Constructs
A Survey of Concurrency Constructs
Ā 
Core Java Tutorials by Mahika Tutorials
Core Java Tutorials by Mahika TutorialsCore Java Tutorials by Mahika Tutorials
Core Java Tutorials by Mahika Tutorials
Ā 
Java Performance Tuning
Java Performance TuningJava Performance Tuning
Java Performance Tuning
Ā 
Symbolic Execution And KLEE
Symbolic Execution And KLEESymbolic Execution And KLEE
Symbolic Execution And KLEE
Ā 
Developing android apps with java 8
Developing android apps with java 8Developing android apps with java 8
Developing android apps with java 8
Ā 
A brief overview of java frameworks
A brief overview of java frameworksA brief overview of java frameworks
A brief overview of java frameworks
Ā 
OCL'16 slides: Models from Code or Code as a Model?
OCL'16 slides: Models from Code or Code as a Model?OCL'16 slides: Models from Code or Code as a Model?
OCL'16 slides: Models from Code or Code as a Model?
Ā 
Scala(e) to the large. Concurrent programming in Scala and relevant Frameworks
Scala(e) to the large. Concurrent programming in Scala and relevant FrameworksScala(e) to the large. Concurrent programming in Scala and relevant Frameworks
Scala(e) to the large. Concurrent programming in Scala and relevant Frameworks
Ā 
Design patterns in javascript
Design patterns in javascriptDesign patterns in javascript
Design patterns in javascript
Ā 
Eclipse OCL Summary
Eclipse OCL SummaryEclipse OCL Summary
Eclipse OCL Summary
Ā 
20 intro-to-csharp
20 intro-to-csharp20 intro-to-csharp
20 intro-to-csharp
Ā 
What is Java Technology (An introduction with comparision of .net coding)
What is Java Technology (An introduction with comparision of .net coding)What is Java Technology (An introduction with comparision of .net coding)
What is Java Technology (An introduction with comparision of .net coding)
Ā 

Recently uploaded

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(ā˜Žļø+971_581248768%)**%*]'#abortion pills for sale in dubai@
Ā 

Recently uploaded (20)

Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
Ā 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
Ā 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
Ā 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
Ā 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
Ā 
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
Ā 
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...
Ā 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
Ā 
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
Ā 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Ā 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Ā 
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
Ā 
Navi Mumbai Call Girls šŸ„° 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls šŸ„° 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls šŸ„° 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls šŸ„° 8617370543 Service Offer VIP Hot Model
Ā 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
Ā 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
Ā 
"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 ...
Ā 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
Ā 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
Ā 
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu SubbuApidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Ā 
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
Ā 

Prospector Osq 2004 Final

  • 1. Mining Jungloids to Cure Programmer Headaches Dave Mandelin, Ras Bodik UC Berkeley Doug Kimelman IBM
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.