SlideShare a Scribd company logo
Building an Eclipse plugin to
recommend changes to developers
Master thesis defense – June 2013
Snaps François – Université catholique de Louvain – EPL
Advisor & Guidance – Prof. Kim Mens & Dr. Angela Lozano

Slide 1 / 13

Master thesis defense
Context
! 

Maintenance and extension of existing systems
! 
! 

! 

Frequent and complex operations
Difficulty: developers need to interact with unfamiliar code

Before becoming productive, a developer needs to know:
! 
! 
! 

The limits and bounds of the existing system
Where and how to integrate his modifications in the system
The conventions, coding idioms, etc…

Slide 2 / 13

Master thesis defense
Solution
! 

Build a tool to facilitate this interaction between the
developer and the existing system

! 

Mendel’s approach:
! 
! 

Extract regularities from an existing system
Recommend implementation hints
as changes to the developer

Slide 3 / 13

Master thesis defense
Mendel: a Genetic Metaphor
! 

“Tell me who your family is, I will tell you what you should
look like”
! 

Select an entity

! 

Find its family members according to a family definition
! 

! 

Extract dominant and recessive traits of the family
! 

! 

Family definition (in this example):
all apples belonging to the previous picture

Dominant trait: “color: green” is shared by all other family members

Recommend family trait not implemented by the selected entity
! 

Recommendation: the selected apple should also have the color green

Slide 4 / 13

Master thesis defense
Family Definition: a Key Factor
! 

What if, instead of the previous definition, we now use
this definition:
! 

All apples belonging to the same tree as the selected apple
Ø No more “color: green” trait recommended
Ø Possible other family traits (taste, form,…)

! 
! 

Objective: supporting multiple family definitions
Study the impact of the family definition on:
! 
! 

The quality of the recommendations produced
The type of the recommendations produced

Slide 5 / 13

Master thesis defense
Predefined families
! 

Default family (Mendel definition)
! 

For classes & interfaces : all siblings and nephews of the
selected class or interface
! 

! 

+ distinction between abstract and concrete classes.

For methods : all methods with the same name as the selected
method within the siblings and nephews of the selected
method’s class.

Slide 6 / 13

Master thesis defense
Predefined families
! 

Identifiers Family
! 
! 

! 

Implements Family
! 
! 

! 

Relation: part of the entity’s
name
Parameterized family

Relation: implements and
extends links
Specialized family: classes and
interfaces

Callers Family
! 
! 
! 

Relation: method called
Parameterized family
Specialized family: methods
and constructors

Slide 7 / 13

Master thesis defence
Validation

! 

Hypothesis : a “relevant” recommendation is one that has
actually been implemented by developers

! 

Technique : analyzing multiple versions of a same project
! 
! 

Produce recommendations for each version
Verify if these recommendations are implemented in a later
version

Slide 8 / 13

Master thesis defense
Validation: implementation

! 

Multiple parsing issue
! 

! 

Particularity of Mendel’s approach

Solution used: database
! 

Extractor tool
! 

! 

Parses the entire source code of the version and stores it into the
database

Validation on the database

Slide 9 / 13

Master thesis defense
Results

! 

Some family definitions are more suited for some
recommendations types than others
! 

“Method implemented” type
! 

Implements family
23 of 1505 recommendations are actually implemented
¨  41 of 50 recommendations are rated as relevant
¨ 

! 

Identifiers family (M2)
0 of 828 recommendations are actually implemented
¨  22 of 50 recommendations are rated as relevant
¨ 

Slide 10 / 13

Master thesis defense
Future Work
! 

Improve the validation filters
! 
! 

! 
! 

Better family thresholds
Better family definitions
! 

! 

Restrict the number of entities analyzed
Restrict the number of irrelevant recommendations produced

Example: “extends” type and our Default family

Validation with real users
Slide 11 / 13

Master thesis defense
Conclusion

! 

Supporting multiple family definitions
! 
! 
! 

Allows to select the most appropriate family for a type of
recommendation
Avoids the case where a family definition struggles to produce
some recommendation types
Allows to compare recommendations from a different point of
view (different family definitions)

Slide 12 / 13

Master thesis defense

More Related Content

What's hot

Java days Lviv 2015
Java days Lviv 2015Java days Lviv 2015
Java days Lviv 2015
Alex Theedom
 
Expose Yourself! How to Leverage Plugin Extensibility to Delight your Users, ...
Expose Yourself! How to Leverage Plugin Extensibility to Delight your Users, ...Expose Yourself! How to Leverage Plugin Extensibility to Delight your Users, ...
Expose Yourself! How to Leverage Plugin Extensibility to Delight your Users, ...
Atlassian
 
The Developer Experience
The Developer ExperienceThe Developer Experience
The Developer Experience
Pamela Fox
 
What's new in selenium 4
What's new in selenium 4What's new in selenium 4
What's new in selenium 4
Knoldus Inc.
 
AtlasCamp US 2012 Keynote, Jean-Michel Lemieux
AtlasCamp US 2012 Keynote, Jean-Michel LemieuxAtlasCamp US 2012 Keynote, Jean-Michel Lemieux
AtlasCamp US 2012 Keynote, Jean-Michel Lemieux
Atlassian
 
Selenium IDE Tutorial For Beginners | Selenium IDE Tutorial | What Is Seleniu...
Selenium IDE Tutorial For Beginners | Selenium IDE Tutorial | What Is Seleniu...Selenium IDE Tutorial For Beginners | Selenium IDE Tutorial | What Is Seleniu...
Selenium IDE Tutorial For Beginners | Selenium IDE Tutorial | What Is Seleniu...
Simplilearn
 
Test Driven Development in CQ5/AEM
Test Driven Development in CQ5/AEMTest Driven Development in CQ5/AEM
Test Driven Development in CQ5/AEM
Sagar Sane
 
Building Rich Applications with Appcelerator
Building Rich Applications with AppceleratorBuilding Rich Applications with Appcelerator
Building Rich Applications with Appcelerator
Matt Raible
 
How to explain what JRebel does to a developer
How to explain what JRebel does to a developerHow to explain what JRebel does to a developer
How to explain what JRebel does to a developer
Bogomil Shopov
 
EECI 2010: Upgrading to EE 2
EECI 2010: Upgrading to EE 2EECI 2010: Upgrading to EE 2
EECI 2010: Upgrading to EE 2
ryanirelan
 
[Webinar] Continuous Testing Done Right: Test Automation at the World's Leadi...
[Webinar] Continuous Testing Done Right: Test Automation at the World's Leadi...[Webinar] Continuous Testing Done Right: Test Automation at the World's Leadi...
[Webinar] Continuous Testing Done Right: Test Automation at the World's Leadi...
Applitools
 
Migrating 25K lines of Ant scripting to Gradle
Migrating 25K lines of Ant scripting to GradleMigrating 25K lines of Ant scripting to Gradle
Migrating 25K lines of Ant scripting to Gradle
🎤 Hanno Embregts 🎸
 
Selenium WebDriver - Test automation for web applications
Selenium WebDriver - Test automation for web applicationsSelenium WebDriver - Test automation for web applications
Selenium WebDriver - Test automation for web applications
TSundberg
 
Tech talks (Automation on Selenium Web Driver. How to begin & implement)
Tech talks (Automation on Selenium Web Driver. How to begin & implement)Tech talks (Automation on Selenium Web Driver. How to begin & implement)
Tech talks (Automation on Selenium Web Driver. How to begin & implement)
Taras Lytvyn
 
Android voice skill sprint
Android voice skill sprintAndroid voice skill sprint
Android voice skill sprint
Jim McKeeth
 
Developing for Remote Bamboo Agents, AtlasCamp US 2012
Developing for Remote Bamboo Agents, AtlasCamp US 2012Developing for Remote Bamboo Agents, AtlasCamp US 2012
Developing for Remote Bamboo Agents, AtlasCamp US 2012
Atlassian
 
jp06_bossola
jp06_bossolajp06_bossola
jp06_bossola
Bruno Bossola
 
Containerizing legacy applications
Containerizing legacy applicationsContainerizing legacy applications
Containerizing legacy applications
Andrew Kirkpatrick
 
Write Better JavaScript
Write Better JavaScriptWrite Better JavaScript
Write Better JavaScript
Kevin Whinnery
 
Selenium WebDriver Tutorial | Selenium WebDriver Tutorial For Beginner | Sele...
Selenium WebDriver Tutorial | Selenium WebDriver Tutorial For Beginner | Sele...Selenium WebDriver Tutorial | Selenium WebDriver Tutorial For Beginner | Sele...
Selenium WebDriver Tutorial | Selenium WebDriver Tutorial For Beginner | Sele...
Simplilearn
 

What's hot (20)

Java days Lviv 2015
Java days Lviv 2015Java days Lviv 2015
Java days Lviv 2015
 
Expose Yourself! How to Leverage Plugin Extensibility to Delight your Users, ...
Expose Yourself! How to Leverage Plugin Extensibility to Delight your Users, ...Expose Yourself! How to Leverage Plugin Extensibility to Delight your Users, ...
Expose Yourself! How to Leverage Plugin Extensibility to Delight your Users, ...
 
The Developer Experience
The Developer ExperienceThe Developer Experience
The Developer Experience
 
What's new in selenium 4
What's new in selenium 4What's new in selenium 4
What's new in selenium 4
 
AtlasCamp US 2012 Keynote, Jean-Michel Lemieux
AtlasCamp US 2012 Keynote, Jean-Michel LemieuxAtlasCamp US 2012 Keynote, Jean-Michel Lemieux
AtlasCamp US 2012 Keynote, Jean-Michel Lemieux
 
Selenium IDE Tutorial For Beginners | Selenium IDE Tutorial | What Is Seleniu...
Selenium IDE Tutorial For Beginners | Selenium IDE Tutorial | What Is Seleniu...Selenium IDE Tutorial For Beginners | Selenium IDE Tutorial | What Is Seleniu...
Selenium IDE Tutorial For Beginners | Selenium IDE Tutorial | What Is Seleniu...
 
Test Driven Development in CQ5/AEM
Test Driven Development in CQ5/AEMTest Driven Development in CQ5/AEM
Test Driven Development in CQ5/AEM
 
Building Rich Applications with Appcelerator
Building Rich Applications with AppceleratorBuilding Rich Applications with Appcelerator
Building Rich Applications with Appcelerator
 
How to explain what JRebel does to a developer
How to explain what JRebel does to a developerHow to explain what JRebel does to a developer
How to explain what JRebel does to a developer
 
EECI 2010: Upgrading to EE 2
EECI 2010: Upgrading to EE 2EECI 2010: Upgrading to EE 2
EECI 2010: Upgrading to EE 2
 
[Webinar] Continuous Testing Done Right: Test Automation at the World's Leadi...
[Webinar] Continuous Testing Done Right: Test Automation at the World's Leadi...[Webinar] Continuous Testing Done Right: Test Automation at the World's Leadi...
[Webinar] Continuous Testing Done Right: Test Automation at the World's Leadi...
 
Migrating 25K lines of Ant scripting to Gradle
Migrating 25K lines of Ant scripting to GradleMigrating 25K lines of Ant scripting to Gradle
Migrating 25K lines of Ant scripting to Gradle
 
Selenium WebDriver - Test automation for web applications
Selenium WebDriver - Test automation for web applicationsSelenium WebDriver - Test automation for web applications
Selenium WebDriver - Test automation for web applications
 
Tech talks (Automation on Selenium Web Driver. How to begin & implement)
Tech talks (Automation on Selenium Web Driver. How to begin & implement)Tech talks (Automation on Selenium Web Driver. How to begin & implement)
Tech talks (Automation on Selenium Web Driver. How to begin & implement)
 
Android voice skill sprint
Android voice skill sprintAndroid voice skill sprint
Android voice skill sprint
 
Developing for Remote Bamboo Agents, AtlasCamp US 2012
Developing for Remote Bamboo Agents, AtlasCamp US 2012Developing for Remote Bamboo Agents, AtlasCamp US 2012
Developing for Remote Bamboo Agents, AtlasCamp US 2012
 
jp06_bossola
jp06_bossolajp06_bossola
jp06_bossola
 
Containerizing legacy applications
Containerizing legacy applicationsContainerizing legacy applications
Containerizing legacy applications
 
Write Better JavaScript
Write Better JavaScriptWrite Better JavaScript
Write Better JavaScript
 
Selenium WebDriver Tutorial | Selenium WebDriver Tutorial For Beginner | Sele...
Selenium WebDriver Tutorial | Selenium WebDriver Tutorial For Beginner | Sele...Selenium WebDriver Tutorial | Selenium WebDriver Tutorial For Beginner | Sele...
Selenium WebDriver Tutorial | Selenium WebDriver Tutorial For Beginner | Sele...
 

Viewers also liked

An easy guide to Plugin Development
An easy guide to Plugin DevelopmentAn easy guide to Plugin Development
An easy guide to Plugin Development
Shinichi Nishikawa
 
Plugin jQuery, Design Patterns
Plugin jQuery, Design PatternsPlugin jQuery, Design Patterns
Plugin jQuery, Design Patterns
Robert Casanova
 
Building GPE: What We Learned
Building GPE: What We LearnedBuilding GPE: What We Learned
Building GPE: What We Learned
rajeevdayal
 
A Simple Plugin Architecture for Wicket
A Simple Plugin Architecture for WicketA Simple Plugin Architecture for Wicket
A Simple Plugin Architecture for Wicket
nielsvk
 
jQuery Plugin Creation
jQuery Plugin CreationjQuery Plugin Creation
jQuery Plugin Creation
benalman
 
Jumping Into WordPress Plugin Programming
Jumping Into WordPress Plugin ProgrammingJumping Into WordPress Plugin Programming
Jumping Into WordPress Plugin Programming
Dougal Campbell
 
Writing your Third Plugin
Writing your Third PluginWriting your Third Plugin
Writing your Third Plugin
Justin Ryan
 
So, you want to be a plugin developer?
So, you want to be a plugin developer?So, you want to be a plugin developer?
So, you want to be a plugin developer?
ylefebvre
 
Best Practices in Plugin Development (WordCamp Seattle)
Best Practices in Plugin Development (WordCamp Seattle)Best Practices in Plugin Development (WordCamp Seattle)
Best Practices in Plugin Development (WordCamp Seattle)
andrewnacin
 
Configuration as Code: The Job DSL Plugin
Configuration as Code: The Job DSL PluginConfiguration as Code: The Job DSL Plugin
Configuration as Code: The Job DSL Plugin
Daniel Spilker
 
Creating a Plug-In Architecture
Creating a Plug-In ArchitectureCreating a Plug-In Architecture
Creating a Plug-In Architecture
ondrejbalas
 

Viewers also liked (11)

An easy guide to Plugin Development
An easy guide to Plugin DevelopmentAn easy guide to Plugin Development
An easy guide to Plugin Development
 
Plugin jQuery, Design Patterns
Plugin jQuery, Design PatternsPlugin jQuery, Design Patterns
Plugin jQuery, Design Patterns
 
Building GPE: What We Learned
Building GPE: What We LearnedBuilding GPE: What We Learned
Building GPE: What We Learned
 
A Simple Plugin Architecture for Wicket
A Simple Plugin Architecture for WicketA Simple Plugin Architecture for Wicket
A Simple Plugin Architecture for Wicket
 
jQuery Plugin Creation
jQuery Plugin CreationjQuery Plugin Creation
jQuery Plugin Creation
 
Jumping Into WordPress Plugin Programming
Jumping Into WordPress Plugin ProgrammingJumping Into WordPress Plugin Programming
Jumping Into WordPress Plugin Programming
 
Writing your Third Plugin
Writing your Third PluginWriting your Third Plugin
Writing your Third Plugin
 
So, you want to be a plugin developer?
So, you want to be a plugin developer?So, you want to be a plugin developer?
So, you want to be a plugin developer?
 
Best Practices in Plugin Development (WordCamp Seattle)
Best Practices in Plugin Development (WordCamp Seattle)Best Practices in Plugin Development (WordCamp Seattle)
Best Practices in Plugin Development (WordCamp Seattle)
 
Configuration as Code: The Job DSL Plugin
Configuration as Code: The Job DSL PluginConfiguration as Code: The Job DSL Plugin
Configuration as Code: The Job DSL Plugin
 
Creating a Plug-In Architecture
Creating a Plug-In ArchitectureCreating a Plug-In Architecture
Creating a Plug-In Architecture
 

Similar to Building an Eclipse plugin to recommend changes to developers

Creativity vs Best Practices
Creativity vs Best PracticesCreativity vs Best Practices
Creativity vs Best Practices
Supun Dissanayake
 
Maintaining Large Scale Julia Ecosystems
Maintaining Large Scale Julia EcosystemsMaintaining Large Scale Julia Ecosystems
Maintaining Large Scale Julia Ecosystems
Chris Rackauckas
 
Design patterns
Design patternsDesign patterns
Design patterns
mudabbirwarsi
 
Reproducibility: 10 Simple Rules
Reproducibility: 10 Simple RulesReproducibility: 10 Simple Rules
Reproducibility: 10 Simple Rules
Annika Eriksson
 
01.intro
01.intro01.intro
01.intro
Philip Johnson
 
Object Oriented Approach For Software Development
Object Oriented Approach For Software DevelopmentObject Oriented Approach For Software Development
Object Oriented Approach For Software Development
Jessica Tanner
 
Refactor to the Limit!
Refactor to the Limit!Refactor to the Limit!
Refactor to the Limit!
Jim Bethancourt
 
Pragmatic programmer
Pragmatic programmerPragmatic programmer
Pragmatic programmer
Maulik Shah
 
GoF Design patterns I: Introduction + Structural Patterns
GoF Design patterns I:   Introduction + Structural PatternsGoF Design patterns I:   Introduction + Structural Patterns
GoF Design patterns I: Introduction + Structural Patterns
Sameh Deabes
 
Envisioning the Future of Language Workbenches
Envisioning the Future of Language WorkbenchesEnvisioning the Future of Language Workbenches
Envisioning the Future of Language Workbenches
Markus Voelter
 
Integrative Programming chapter 5
Integrative Programming chapter 5Integrative Programming chapter 5
Integrative Programming chapter 5
RolandoCurugan
 
Integrative Programming Technology Chapter 5 - Dr. J. VijiPriya
Integrative Programming Technology Chapter 5 - Dr. J. VijiPriyaIntegrative Programming Technology Chapter 5 - Dr. J. VijiPriya
Integrative Programming Technology Chapter 5 - Dr. J. VijiPriya
VijiPriya Jeyamani
 
Writting Better Software
Writting Better SoftwareWritting Better Software
Writting Better Software
svilen.ivanov
 
TechLogic 2014 Keynote on Inverting an Algorithms Class (Extended Version)
TechLogic 2014 Keynote on Inverting an Algorithms Class (Extended Version)TechLogic 2014 Keynote on Inverting an Algorithms Class (Extended Version)
TechLogic 2014 Keynote on Inverting an Algorithms Class (Extended Version)
suthers
 
Soft Eng 1st PPT
Soft Eng 1st PPTSoft Eng 1st PPT
Soft Eng 1st PPT
Carlo Miguel Arca
 
130531 francis nahm - on the evolution of antipatterns genealogies
130531   francis nahm - on the evolution of antipatterns genealogies130531   francis nahm - on the evolution of antipatterns genealogies
130531 francis nahm - on the evolution of antipatterns genealogies
Ptidej Team
 
Module 2 design patterns-2
Module 2   design patterns-2Module 2   design patterns-2
Module 2 design patterns-2
Ankit Dubey
 
java oops and java very important for .pptx
java oops and java very important for .pptxjava oops and java very important for .pptx
java oops and java very important for .pptx
cherukuriyuvaraju9
 
java oops compilation object class inheritance.pptx
java oops compilation object class inheritance.pptxjava oops compilation object class inheritance.pptx
java oops compilation object class inheritance.pptx
CHERUKURIYUVARAJU209
 
Ready, Set, Refactor
Ready, Set, RefactorReady, Set, Refactor
Ready, Set, Refactor
Jim Bethancourt
 

Similar to Building an Eclipse plugin to recommend changes to developers (20)

Creativity vs Best Practices
Creativity vs Best PracticesCreativity vs Best Practices
Creativity vs Best Practices
 
Maintaining Large Scale Julia Ecosystems
Maintaining Large Scale Julia EcosystemsMaintaining Large Scale Julia Ecosystems
Maintaining Large Scale Julia Ecosystems
 
Design patterns
Design patternsDesign patterns
Design patterns
 
Reproducibility: 10 Simple Rules
Reproducibility: 10 Simple RulesReproducibility: 10 Simple Rules
Reproducibility: 10 Simple Rules
 
01.intro
01.intro01.intro
01.intro
 
Object Oriented Approach For Software Development
Object Oriented Approach For Software DevelopmentObject Oriented Approach For Software Development
Object Oriented Approach For Software Development
 
Refactor to the Limit!
Refactor to the Limit!Refactor to the Limit!
Refactor to the Limit!
 
Pragmatic programmer
Pragmatic programmerPragmatic programmer
Pragmatic programmer
 
GoF Design patterns I: Introduction + Structural Patterns
GoF Design patterns I:   Introduction + Structural PatternsGoF Design patterns I:   Introduction + Structural Patterns
GoF Design patterns I: Introduction + Structural Patterns
 
Envisioning the Future of Language Workbenches
Envisioning the Future of Language WorkbenchesEnvisioning the Future of Language Workbenches
Envisioning the Future of Language Workbenches
 
Integrative Programming chapter 5
Integrative Programming chapter 5Integrative Programming chapter 5
Integrative Programming chapter 5
 
Integrative Programming Technology Chapter 5 - Dr. J. VijiPriya
Integrative Programming Technology Chapter 5 - Dr. J. VijiPriyaIntegrative Programming Technology Chapter 5 - Dr. J. VijiPriya
Integrative Programming Technology Chapter 5 - Dr. J. VijiPriya
 
Writting Better Software
Writting Better SoftwareWritting Better Software
Writting Better Software
 
TechLogic 2014 Keynote on Inverting an Algorithms Class (Extended Version)
TechLogic 2014 Keynote on Inverting an Algorithms Class (Extended Version)TechLogic 2014 Keynote on Inverting an Algorithms Class (Extended Version)
TechLogic 2014 Keynote on Inverting an Algorithms Class (Extended Version)
 
Soft Eng 1st PPT
Soft Eng 1st PPTSoft Eng 1st PPT
Soft Eng 1st PPT
 
130531 francis nahm - on the evolution of antipatterns genealogies
130531   francis nahm - on the evolution of antipatterns genealogies130531   francis nahm - on the evolution of antipatterns genealogies
130531 francis nahm - on the evolution of antipatterns genealogies
 
Module 2 design patterns-2
Module 2   design patterns-2Module 2   design patterns-2
Module 2 design patterns-2
 
java oops and java very important for .pptx
java oops and java very important for .pptxjava oops and java very important for .pptx
java oops and java very important for .pptx
 
java oops compilation object class inheritance.pptx
java oops compilation object class inheritance.pptxjava oops compilation object class inheritance.pptx
java oops compilation object class inheritance.pptx
 
Ready, Set, Refactor
Ready, Set, RefactorReady, Set, Refactor
Ready, Set, Refactor
 

More from kim.mens

Software Maintenance and Evolution
Software Maintenance and EvolutionSoftware Maintenance and Evolution
Software Maintenance and Evolution
kim.mens
 
Context-Oriented Programming
Context-Oriented ProgrammingContext-Oriented Programming
Context-Oriented Programming
kim.mens
 
Software Reuse and Object-Oriented Programming
Software Reuse and Object-Oriented ProgrammingSoftware Reuse and Object-Oriented Programming
Software Reuse and Object-Oriented Programming
kim.mens
 
Bad Code Smells
Bad Code SmellsBad Code Smells
Bad Code Smells
kim.mens
 
Object-Oriented Design Heuristics
Object-Oriented Design HeuristicsObject-Oriented Design Heuristics
Object-Oriented Design Heuristics
kim.mens
 
Software Patterns
Software PatternsSoftware Patterns
Software Patterns
kim.mens
 
Code Refactoring
Code RefactoringCode Refactoring
Code Refactoring
kim.mens
 
Domain Modelling
Domain ModellingDomain Modelling
Domain Modelling
kim.mens
 
Object-Oriented Application Frameworks
Object-Oriented Application FrameworksObject-Oriented Application Frameworks
Object-Oriented Application Frameworks
kim.mens
 
Towards a Context-Oriented Software Implementation Framework
Towards a Context-Oriented Software Implementation FrameworkTowards a Context-Oriented Software Implementation Framework
Towards a Context-Oriented Software Implementation Framework
kim.mens
 
Towards a Taxonomy of Context-Aware Software Variabilty Approaches
Towards a Taxonomy of Context-Aware Software Variabilty ApproachesTowards a Taxonomy of Context-Aware Software Variabilty Approaches
Towards a Taxonomy of Context-Aware Software Variabilty Approaches
kim.mens
 
Breaking the Walls: A Unified Vision on Context-Oriented Software Engineering
Breaking the Walls: A Unified Vision on Context-Oriented Software EngineeringBreaking the Walls: A Unified Vision on Context-Oriented Software Engineering
Breaking the Walls: A Unified Vision on Context-Oriented Software Engineering
kim.mens
 
Context-oriented programming
Context-oriented programmingContext-oriented programming
Context-oriented programming
kim.mens
 
Basics of reflection
Basics of reflectionBasics of reflection
Basics of reflection
kim.mens
 
Advanced Reflection in Java
Advanced Reflection in JavaAdvanced Reflection in Java
Advanced Reflection in Java
kim.mens
 
Basics of reflection in java
Basics of reflection in javaBasics of reflection in java
Basics of reflection in java
kim.mens
 
Reflection in Ruby
Reflection in RubyReflection in Ruby
Reflection in Ruby
kim.mens
 
Introduction to Ruby
Introduction to RubyIntroduction to Ruby
Introduction to Ruby
kim.mens
 
Introduction to Smalltalk
Introduction to SmalltalkIntroduction to Smalltalk
Introduction to Smalltalk
kim.mens
 
A gentle introduction to reflection
A gentle introduction to reflectionA gentle introduction to reflection
A gentle introduction to reflection
kim.mens
 

More from kim.mens (20)

Software Maintenance and Evolution
Software Maintenance and EvolutionSoftware Maintenance and Evolution
Software Maintenance and Evolution
 
Context-Oriented Programming
Context-Oriented ProgrammingContext-Oriented Programming
Context-Oriented Programming
 
Software Reuse and Object-Oriented Programming
Software Reuse and Object-Oriented ProgrammingSoftware Reuse and Object-Oriented Programming
Software Reuse and Object-Oriented Programming
 
Bad Code Smells
Bad Code SmellsBad Code Smells
Bad Code Smells
 
Object-Oriented Design Heuristics
Object-Oriented Design HeuristicsObject-Oriented Design Heuristics
Object-Oriented Design Heuristics
 
Software Patterns
Software PatternsSoftware Patterns
Software Patterns
 
Code Refactoring
Code RefactoringCode Refactoring
Code Refactoring
 
Domain Modelling
Domain ModellingDomain Modelling
Domain Modelling
 
Object-Oriented Application Frameworks
Object-Oriented Application FrameworksObject-Oriented Application Frameworks
Object-Oriented Application Frameworks
 
Towards a Context-Oriented Software Implementation Framework
Towards a Context-Oriented Software Implementation FrameworkTowards a Context-Oriented Software Implementation Framework
Towards a Context-Oriented Software Implementation Framework
 
Towards a Taxonomy of Context-Aware Software Variabilty Approaches
Towards a Taxonomy of Context-Aware Software Variabilty ApproachesTowards a Taxonomy of Context-Aware Software Variabilty Approaches
Towards a Taxonomy of Context-Aware Software Variabilty Approaches
 
Breaking the Walls: A Unified Vision on Context-Oriented Software Engineering
Breaking the Walls: A Unified Vision on Context-Oriented Software EngineeringBreaking the Walls: A Unified Vision on Context-Oriented Software Engineering
Breaking the Walls: A Unified Vision on Context-Oriented Software Engineering
 
Context-oriented programming
Context-oriented programmingContext-oriented programming
Context-oriented programming
 
Basics of reflection
Basics of reflectionBasics of reflection
Basics of reflection
 
Advanced Reflection in Java
Advanced Reflection in JavaAdvanced Reflection in Java
Advanced Reflection in Java
 
Basics of reflection in java
Basics of reflection in javaBasics of reflection in java
Basics of reflection in java
 
Reflection in Ruby
Reflection in RubyReflection in Ruby
Reflection in Ruby
 
Introduction to Ruby
Introduction to RubyIntroduction to Ruby
Introduction to Ruby
 
Introduction to Smalltalk
Introduction to SmalltalkIntroduction to Smalltalk
Introduction to Smalltalk
 
A gentle introduction to reflection
A gentle introduction to reflectionA gentle introduction to reflection
A gentle introduction to reflection
 

Recently uploaded

HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
panagenda
 
Choosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptxChoosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptx
Brandon Minnick, MBA
 
Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024
Jason Packer
 
Programming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup SlidesProgramming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup Slides
Zilliz
 
Fueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte WebinarFueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte Webinar
Zilliz
 
“How Axelera AI Uses Digital Compute-in-memory to Deliver Fast and Energy-eff...
“How Axelera AI Uses Digital Compute-in-memory to Deliver Fast and Energy-eff...“How Axelera AI Uses Digital Compute-in-memory to Deliver Fast and Energy-eff...
“How Axelera AI Uses Digital Compute-in-memory to Deliver Fast and Energy-eff...
Edge AI and Vision Alliance
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
panagenda
 
"Frontline Battles with DDoS: Best practices and Lessons Learned", Igor Ivaniuk
"Frontline Battles with DDoS: Best practices and Lessons Learned",  Igor Ivaniuk"Frontline Battles with DDoS: Best practices and Lessons Learned",  Igor Ivaniuk
"Frontline Battles with DDoS: Best practices and Lessons Learned", Igor Ivaniuk
Fwdays
 
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
Alex Pruden
 
GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)
Javier Junquera
 
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
Jason Yip
 
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-EfficiencyFreshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
ScyllaDB
 
Northern Engraving | Nameplate Manufacturing Process - 2024
Northern Engraving | Nameplate Manufacturing Process - 2024Northern Engraving | Nameplate Manufacturing Process - 2024
Northern Engraving | Nameplate Manufacturing Process - 2024
Northern Engraving
 
Skybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoptionSkybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoption
Tatiana Kojar
 
JavaLand 2024: Application Development Green Masterplan
JavaLand 2024: Application Development Green MasterplanJavaLand 2024: Application Development Green Masterplan
JavaLand 2024: Application Development Green Masterplan
Miro Wengner
 
Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |
AstuteBusiness
 
Mutation Testing for Task-Oriented Chatbots
Mutation Testing for Task-Oriented ChatbotsMutation Testing for Task-Oriented Chatbots
Mutation Testing for Task-Oriented Chatbots
Pablo Gómez Abajo
 
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
saastr
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
Zilliz
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
ssuserfac0301
 

Recently uploaded (20)

HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
 
Choosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptxChoosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptx
 
Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024
 
Programming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup SlidesProgramming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup Slides
 
Fueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte WebinarFueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte Webinar
 
“How Axelera AI Uses Digital Compute-in-memory to Deliver Fast and Energy-eff...
“How Axelera AI Uses Digital Compute-in-memory to Deliver Fast and Energy-eff...“How Axelera AI Uses Digital Compute-in-memory to Deliver Fast and Energy-eff...
“How Axelera AI Uses Digital Compute-in-memory to Deliver Fast and Energy-eff...
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
 
"Frontline Battles with DDoS: Best practices and Lessons Learned", Igor Ivaniuk
"Frontline Battles with DDoS: Best practices and Lessons Learned",  Igor Ivaniuk"Frontline Battles with DDoS: Best practices and Lessons Learned",  Igor Ivaniuk
"Frontline Battles with DDoS: Best practices and Lessons Learned", Igor Ivaniuk
 
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...
 
GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)
 
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
[OReilly Superstream] Occupy the Space: A grassroots guide to engineering (an...
 
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-EfficiencyFreshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
 
Northern Engraving | Nameplate Manufacturing Process - 2024
Northern Engraving | Nameplate Manufacturing Process - 2024Northern Engraving | Nameplate Manufacturing Process - 2024
Northern Engraving | Nameplate Manufacturing Process - 2024
 
Skybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoptionSkybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoption
 
JavaLand 2024: Application Development Green Masterplan
JavaLand 2024: Application Development Green MasterplanJavaLand 2024: Application Development Green Masterplan
JavaLand 2024: Application Development Green Masterplan
 
Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |
 
Mutation Testing for Task-Oriented Chatbots
Mutation Testing for Task-Oriented ChatbotsMutation Testing for Task-Oriented Chatbots
Mutation Testing for Task-Oriented Chatbots
 
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
 

Building an Eclipse plugin to recommend changes to developers

  • 1. Building an Eclipse plugin to recommend changes to developers Master thesis defense – June 2013 Snaps François – Université catholique de Louvain – EPL Advisor & Guidance – Prof. Kim Mens & Dr. Angela Lozano Slide 1 / 13 Master thesis defense
  • 2. Context !  Maintenance and extension of existing systems !  !  !  Frequent and complex operations Difficulty: developers need to interact with unfamiliar code Before becoming productive, a developer needs to know: !  !  !  The limits and bounds of the existing system Where and how to integrate his modifications in the system The conventions, coding idioms, etc… Slide 2 / 13 Master thesis defense
  • 3. Solution !  Build a tool to facilitate this interaction between the developer and the existing system !  Mendel’s approach: !  !  Extract regularities from an existing system Recommend implementation hints as changes to the developer Slide 3 / 13 Master thesis defense
  • 4. Mendel: a Genetic Metaphor !  “Tell me who your family is, I will tell you what you should look like” !  Select an entity !  Find its family members according to a family definition !  !  Extract dominant and recessive traits of the family !  !  Family definition (in this example): all apples belonging to the previous picture Dominant trait: “color: green” is shared by all other family members Recommend family trait not implemented by the selected entity !  Recommendation: the selected apple should also have the color green Slide 4 / 13 Master thesis defense
  • 5. Family Definition: a Key Factor !  What if, instead of the previous definition, we now use this definition: !  All apples belonging to the same tree as the selected apple Ø No more “color: green” trait recommended Ø Possible other family traits (taste, form,…) !  !  Objective: supporting multiple family definitions Study the impact of the family definition on: !  !  The quality of the recommendations produced The type of the recommendations produced Slide 5 / 13 Master thesis defense
  • 6. Predefined families !  Default family (Mendel definition) !  For classes & interfaces : all siblings and nephews of the selected class or interface !  !  + distinction between abstract and concrete classes. For methods : all methods with the same name as the selected method within the siblings and nephews of the selected method’s class. Slide 6 / 13 Master thesis defense
  • 7. Predefined families !  Identifiers Family !  !  !  Implements Family !  !  !  Relation: part of the entity’s name Parameterized family Relation: implements and extends links Specialized family: classes and interfaces Callers Family !  !  !  Relation: method called Parameterized family Specialized family: methods and constructors Slide 7 / 13 Master thesis defence
  • 8. Validation !  Hypothesis : a “relevant” recommendation is one that has actually been implemented by developers !  Technique : analyzing multiple versions of a same project !  !  Produce recommendations for each version Verify if these recommendations are implemented in a later version Slide 8 / 13 Master thesis defense
  • 9. Validation: implementation !  Multiple parsing issue !  !  Particularity of Mendel’s approach Solution used: database !  Extractor tool !  !  Parses the entire source code of the version and stores it into the database Validation on the database Slide 9 / 13 Master thesis defense
  • 10. Results !  Some family definitions are more suited for some recommendations types than others !  “Method implemented” type !  Implements family 23 of 1505 recommendations are actually implemented ¨  41 of 50 recommendations are rated as relevant ¨  !  Identifiers family (M2) 0 of 828 recommendations are actually implemented ¨  22 of 50 recommendations are rated as relevant ¨  Slide 10 / 13 Master thesis defense
  • 11. Future Work !  Improve the validation filters !  !  !  !  Better family thresholds Better family definitions !  !  Restrict the number of entities analyzed Restrict the number of irrelevant recommendations produced Example: “extends” type and our Default family Validation with real users Slide 11 / 13 Master thesis defense
  • 12. Conclusion !  Supporting multiple family definitions !  !  !  Allows to select the most appropriate family for a type of recommendation Avoids the case where a family definition struggles to produce some recommendation types Allows to compare recommendations from a different point of view (different family definitions) Slide 12 / 13 Master thesis defense