SlideShare ist ein Scribd-Unternehmen logo
1 von 43
Harnessing

                   for the IDE
Alberto Bacchelli, Luca Ponzanelli, and Michele Lanza
                    REVEAL @ Faculty of Informatics
                    University of Lugano, Switzerland
Who am I?
R   E   V   E   A   L
“The software
development process also
heavily relies on the
knowledge and creativity of
individual software
developers and their
intense interactions.”




    Supporting software development as knowledge-intensive and collaborative activity.
                                                                   Yunwen Ye [WISER’06]
“The software
development process also
heavily relies on the
knowledge and creativity of
individual software
developers and their
intense interactions.”




    Supporting software development as knowledge-intensive and collaborative activity.
                                                                   Yunwen Ye [WISER’06]
Developers’
knowledge
is not enough
Manuals   Documentation   Online Resources
Outdated
Documentation
“Developers’ knowledge can only be
satisfied by posing questions to other
programmers.”




                  Maintaining Mental Models: A Study of Developer Work Habits
                                                     LaToza,Venolia, DeLine [ICSE’06]
General Purpose   Technical
“Q&A online services are filling
archives with millions of entries
for software development.”




            How do programmers ask and answer questions on the web? (NIER track)
                                                      Treude, Barzilay, Storey [ICSE’11]
Q&A services are
disconnected
from the IDE
Issue Found
Research...
Resolve Issue
Context




          Switch
Developers need
suggestions
http://seahawk.inf.usi.ch
http://seahawk.inf.usi.ch


                   Apache        POST
    XML                                         POST                  Seahawk
                  Solr Search                             Query
     data
  Mbox              Engine       XML    HTTP              engine
  Mbox
   dump                                        XML
   files
  files
     files
                   Document                             Annotation      Annotation
                                                                          Cache
                    builder                              engine          (SQLite)




 XML dump              DB                              System model
  importer          PostgreSQL


Data-collection Mechanism                                               Eclipse
http://seahawk.inf.usi.ch


                                                  Apache
                                  XML            Solr Search
                                   data
                                Mbox
Data
                                Mbox               Engine
                                 dump
                                 files
                                files
                                   files


Collection
                                                  Document
                                                   builder



Mechanism                      XML dump
                                importer
                                                     DB
                                                  PostgreSQL

                              Data-collection Mechanism
http://seahawk.inf.usi.ch


                                    Query
                                              Seahawk
                                    engine


Recommendation                  Annotation
                                 engine
                                                Annotation
                                                  Cache




Engine
                                                 (SQLite)




                               System model


                                                Eclipse
Query
                              engine




  http://seahawk.inf.usi.ch




Island Parsing
Query
                                          engine




         http://seahawk.inf.usi.ch

/*Sample Class for a test*/

public class ExampleClass{
  private final List<Integer> values;

    public ExampleClass(){
      values = new ArrayList<String>();
    }

    public int doSum(){
      int sum = 0;
      for(final Integer i : values)
        sum += i;
      return i;
    }
}
Query
                                          engine




         http://seahawk.inf.usi.ch

/*Sample Class for a test*/               Comment
public class ExampleClass{
  private final List<Integer> values;              Field
    public ExampleClass(){
      values = new ArrayList<String>();        Method
    }

    public int doSum(){
      int sum = 0;
      for(final Integer i : values)
        sum += i;                              Method
      return i;
    }
}
Query
                            engine




http://seahawk.inf.usi.ch




No AST
Query
                                     engine




         http://seahawk.inf.usi.ch




Imports                             Code
define                            refines
the context                   the context
Seahawk
                                 Query
                                 engine


                               Annotation      Annotation
                                               Annotation
                                                 Cache
                                                 Cache
                                engine          (SQLite)
                                                (SQLite)




                              System model
  http://seahawk.inf.usi.ch
                                               Eclipse




Annotations
      =
Collaboration
http://seahawk.inf.usi.ch



/*!
* @documentId http://stackoverflow.com/questions/567160
* @title C++ linker problem with wrapper
* @comment check it out!
* @author Seahawk
* @creationTime 2012.04.13 16:42:52.634 CEST
*/
http://seahawk.inf.usi.ch


Integrates Stack Overflow in the IDE

Links relevant documents to code

Favors example-based programming

Automatically generates query from code
http://seahawk.inf.usi.ch


Integrates Stack Overflow in the IDE

Links relevant documents to code

Favors example-based programming

Automatically generates query from code
http://seahawk.inf.usi.ch


Integrates Stack Overflow in the IDE

Links relevant documents to code

Favors example-based programming

Automatically generates query from code
http://seahawk.inf.usi.ch


Integrates Stack Overflow in the IDE

Links relevant documents to code

Favors example-based programming

Automatically generates query from code
Interfaces and
well-known topics
Badly written code
Your personal
“Alfred”
Harnessing Stack Overflow for the IDE - RSSE 2012

Weitere ähnliche Inhalte

Was ist angesagt?

A Brief Introduce to WSGI
A Brief Introduce to WSGIA Brief Introduce to WSGI
A Brief Introduce to WSGI
Mingli Yuan
 

Was ist angesagt? (20)

DevOps Enabling Your Team
DevOps Enabling Your TeamDevOps Enabling Your Team
DevOps Enabling Your Team
 
XML-Motor
XML-MotorXML-Motor
XML-Motor
 
GoDocker presentation
GoDocker presentationGoDocker presentation
GoDocker presentation
 
Server Side? Swift
Server Side? SwiftServer Side? Swift
Server Side? Swift
 
Taking advantage of the Amazon Web Services (AWS) Family
Taking advantage of the Amazon Web Services (AWS) FamilyTaking advantage of the Amazon Web Services (AWS) Family
Taking advantage of the Amazon Web Services (AWS) Family
 
Getting Started with Ansible
Getting Started with AnsibleGetting Started with Ansible
Getting Started with Ansible
 
AWS ECSを用いてbatchを動かそう
AWS ECSを用いてbatchを動かそうAWS ECSを用いてbatchを動かそう
AWS ECSを用いてbatchを動かそう
 
Managing Infrastructure as Code
Managing Infrastructure as CodeManaging Infrastructure as Code
Managing Infrastructure as Code
 
Creating a modern web application using Symfony API Platform, ReactJS and Red...
Creating a modern web application using Symfony API Platform, ReactJS and Red...Creating a modern web application using Symfony API Platform, ReactJS and Red...
Creating a modern web application using Symfony API Platform, ReactJS and Red...
 
URLProtocol
URLProtocolURLProtocol
URLProtocol
 
An intro to Docker, Terraform, and Amazon ECS
An intro to Docker, Terraform, and Amazon ECSAn intro to Docker, Terraform, and Amazon ECS
An intro to Docker, Terraform, and Amazon ECS
 
SenchaCon 2016: Upgrading an Ext JS 4.x Application to Ext JS 6.x - Mark Linc...
SenchaCon 2016: Upgrading an Ext JS 4.x Application to Ext JS 6.x - Mark Linc...SenchaCon 2016: Upgrading an Ext JS 4.x Application to Ext JS 6.x - Mark Linc...
SenchaCon 2016: Upgrading an Ext JS 4.x Application to Ext JS 6.x - Mark Linc...
 
Ansible modules 101
Ansible modules 101Ansible modules 101
Ansible modules 101
 
A Brief Introduce to WSGI
A Brief Introduce to WSGIA Brief Introduce to WSGI
A Brief Introduce to WSGI
 
Writing Ansible Modules (CLT'19)
Writing Ansible Modules (CLT'19)Writing Ansible Modules (CLT'19)
Writing Ansible Modules (CLT'19)
 
Django Celery - A distributed task queue
Django Celery - A distributed task queueDjango Celery - A distributed task queue
Django Celery - A distributed task queue
 
Quick Fetch API Introduction
Quick Fetch API IntroductionQuick Fetch API Introduction
Quick Fetch API Introduction
 
Vagrant for real (codemotion rome 2016)
Vagrant for real (codemotion rome 2016)Vagrant for real (codemotion rome 2016)
Vagrant for real (codemotion rome 2016)
 
Hibernate java and_oracle
Hibernate java and_oracleHibernate java and_oracle
Hibernate java and_oracle
 
Ansible presentation
Ansible presentationAnsible presentation
Ansible presentation
 

Andere mochten auch

【2014年第2回】キャリア教育研究会
【2014年第2回】キャリア教育研究会【2014年第2回】キャリア教育研究会
【2014年第2回】キャリア教育研究会
human-edu
 

Andere mochten auch (20)

"El Auge del Reconocimiento Facial y los nuevos desafíos en cuanto a Privacid...
"El Auge del Reconocimiento Facial y los nuevos desafíos en cuanto a Privacid..."El Auge del Reconocimiento Facial y los nuevos desafíos en cuanto a Privacid...
"El Auge del Reconocimiento Facial y los nuevos desafíos en cuanto a Privacid...
 
Matrices
MatricesMatrices
Matrices
 
Linda Swanholm Harassment of Ayres Hotels
Linda Swanholm Harassment of Ayres HotelsLinda Swanholm Harassment of Ayres Hotels
Linda Swanholm Harassment of Ayres Hotels
 
【2014年第2回】キャリア教育研究会
【2014年第2回】キャリア教育研究会【2014年第2回】キャリア教育研究会
【2014年第2回】キャリア教育研究会
 
Συμπληρωματικό Φύλλο Εργασίας 2+ plus: "Μετρήσεις Χρόνου-Ακρίβεια" Χωρίς Απαν...
Συμπληρωματικό Φύλλο Εργασίας 2+ plus: "Μετρήσεις Χρόνου-Ακρίβεια" Χωρίς Απαν...Συμπληρωματικό Φύλλο Εργασίας 2+ plus: "Μετρήσεις Χρόνου-Ακρίβεια" Χωρίς Απαν...
Συμπληρωματικό Φύλλο Εργασίας 2+ plus: "Μετρήσεις Χρόνου-Ακρίβεια" Χωρίς Απαν...
 
Τομέας Πληροφορικής-ΕΠΑΛ Διδυμοτείχου
Τομέας Πληροφορικής-ΕΠΑΛ ΔιδυμοτείχουΤομέας Πληροφορικής-ΕΠΑΛ Διδυμοτείχου
Τομέας Πληροφορικής-ΕΠΑΛ Διδυμοτείχου
 
Industry
IndustryIndustry
Industry
 
Cars
CarsCars
Cars
 
Silabus nabi muhammad saw berdakwah islam dimekkah
Silabus nabi  muhammad saw berdakwah islam dimekkahSilabus nabi  muhammad saw berdakwah islam dimekkah
Silabus nabi muhammad saw berdakwah islam dimekkah
 
Πληροφοριακά Συστήματα
Πληροφοριακά ΣυστήματαΠληροφοριακά Συστήματα
Πληροφοριακά Συστήματα
 
AMENORREA HIPOTALAMICA ENDO PERU 2013
AMENORREA HIPOTALAMICA ENDO PERU 2013AMENORREA HIPOTALAMICA ENDO PERU 2013
AMENORREA HIPOTALAMICA ENDO PERU 2013
 
Python - Bασικές Aρχές Προγραμματισμού - Κεφ. 3
Python - Bασικές Aρχές Προγραμματισμού - Κεφ. 3Python - Bασικές Aρχές Προγραμματισμού - Κεφ. 3
Python - Bασικές Aρχές Προγραμματισμού - Κεφ. 3
 
Digital Draft Catherine W
Digital Draft Catherine WDigital Draft Catherine W
Digital Draft Catherine W
 
プロモーション最前線 -人の心を動かす仕掛け-
プロモーション最前線 -人の心を動かす仕掛け-プロモーション最前線 -人の心を動かす仕掛け-
プロモーション最前線 -人の心を動かす仕掛け-
 
Silabus memahami iman ,islam,dan ihsan
Silabus memahami iman ,islam,dan ihsanSilabus memahami iman ,islam,dan ihsan
Silabus memahami iman ,islam,dan ihsan
 
Φύλλο Εργασίας 2: "Μετρήσεις Χρόνου-Ακρίβεια" με Απαντήσεις / Α΄Γυμνασίου/Μιχ...
Φύλλο Εργασίας 2: "Μετρήσεις Χρόνου-Ακρίβεια" με Απαντήσεις / Α΄Γυμνασίου/Μιχ...Φύλλο Εργασίας 2: "Μετρήσεις Χρόνου-Ακρίβεια" με Απαντήσεις / Α΄Γυμνασίου/Μιχ...
Φύλλο Εργασίας 2: "Μετρήσεις Χρόνου-Ακρίβεια" με Απαντήσεις / Α΄Γυμνασίου/Μιχ...
 
媒介分析について
媒介分析について媒介分析について
媒介分析について
 
B kat
B katB kat
B kat
 
(νεο) ιδιότητες συναρτήσεων προτεινόμενες ασκήσεις
(νεο) ιδιότητες συναρτήσεων προτεινόμενες ασκήσεις(νεο) ιδιότητες συναρτήσεων προτεινόμενες ασκήσεις
(νεο) ιδιότητες συναρτήσεων προτεινόμενες ασκήσεις
 
2016 年の抱負
2016 年の抱負2016 年の抱負
2016 年の抱負
 

Ähnlich wie Harnessing Stack Overflow for the IDE - RSSE 2012

C# and ASP.NET Code and Data-Access Security
C# and ASP.NET Code and Data-Access SecurityC# and ASP.NET Code and Data-Access Security
C# and ASP.NET Code and Data-Access Security
Darren Sim
 
Apache Web Server Architecture Chaitanya Kulkarni
Apache Web Server Architecture Chaitanya KulkarniApache Web Server Architecture Chaitanya Kulkarni
Apache Web Server Architecture Chaitanya Kulkarni
webhostingguy
 
Cannibalising The Google App Engine
Cannibalising The  Google  App  EngineCannibalising The  Google  App  Engine
Cannibalising The Google App Engine
catherinewall
 
OpenStack at Xen summit Asia
OpenStack at Xen summit Asia OpenStack at Xen summit Asia
OpenStack at Xen summit Asia
Jaesuk Ahn
 

Ähnlich wie Harnessing Stack Overflow for the IDE - RSSE 2012 (20)

Apache web-server-architecture
Apache web-server-architectureApache web-server-architecture
Apache web-server-architecture
 
C# and ASP.NET Code and Data-Access Security
C# and ASP.NET Code and Data-Access SecurityC# and ASP.NET Code and Data-Access Security
C# and ASP.NET Code and Data-Access Security
 
Apache Web Server Architecture Chaitanya Kulkarni
Apache Web Server Architecture Chaitanya KulkarniApache Web Server Architecture Chaitanya Kulkarni
Apache Web Server Architecture Chaitanya Kulkarni
 
Reactive integrations with Akka Streams
Reactive integrations with Akka StreamsReactive integrations with Akka Streams
Reactive integrations with Akka Streams
 
Leveraging Hadoop in Polyglot Architectures
Leveraging Hadoop in Polyglot ArchitecturesLeveraging Hadoop in Polyglot Architectures
Leveraging Hadoop in Polyglot Architectures
 
Windows Azure Interoperability
Windows Azure InteroperabilityWindows Azure Interoperability
Windows Azure Interoperability
 
(DEV309) From Asgard to Zuul: How Netflix’s Proven Open Source Tools Can Help...
(DEV309) From Asgard to Zuul: How Netflix’s Proven Open Source Tools Can Help...(DEV309) From Asgard to Zuul: How Netflix’s Proven Open Source Tools Can Help...
(DEV309) From Asgard to Zuul: How Netflix’s Proven Open Source Tools Can Help...
 
06 integrate elasticsearch
06 integrate elasticsearch06 integrate elasticsearch
06 integrate elasticsearch
 
How To Implement a CMS
How To Implement a CMSHow To Implement a CMS
How To Implement a CMS
 
Intro to Rails Give Camp Atlanta
Intro to Rails Give Camp AtlantaIntro to Rails Give Camp Atlanta
Intro to Rails Give Camp Atlanta
 
Web Application Frameworks - Lecture 05 - Web Information Systems (4011474FNR)
Web Application Frameworks - Lecture 05 - Web Information Systems (4011474FNR)Web Application Frameworks - Lecture 05 - Web Information Systems (4011474FNR)
Web Application Frameworks - Lecture 05 - Web Information Systems (4011474FNR)
 
Cannibalising The Google App Engine
Cannibalising The  Google  App  EngineCannibalising The  Google  App  Engine
Cannibalising The Google App Engine
 
Learn you some Ansible for great good!
Learn you some Ansible for great good!Learn you some Ansible for great good!
Learn you some Ansible for great good!
 
Apache Camel Introduction
Apache Camel IntroductionApache Camel Introduction
Apache Camel Introduction
 
OpenStack at Xen summit Asia
OpenStack at Xen summit Asia OpenStack at Xen summit Asia
OpenStack at Xen summit Asia
 
Azure deployments and ARM templates
Azure deployments and ARM templatesAzure deployments and ARM templates
Azure deployments and ARM templates
 
Cross-Platform Native Mobile Development with Eclipse
Cross-Platform Native Mobile Development with EclipseCross-Platform Native Mobile Development with Eclipse
Cross-Platform Native Mobile Development with Eclipse
 
ASP, ASP.NET, JSP, COM/DCOM
ASP, ASP.NET, JSP, COM/DCOMASP, ASP.NET, JSP, COM/DCOM
ASP, ASP.NET, JSP, COM/DCOM
 
StrongLoop Overview
StrongLoop OverviewStrongLoop Overview
StrongLoop Overview
 
Developing Java Web Applications
Developing Java Web ApplicationsDeveloping Java Web Applications
Developing Java Web Applications
 

Kürzlich hochgeladen

Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 

Kürzlich hochgeladen (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
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
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
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
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...
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
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, ...
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 

Harnessing Stack Overflow for the IDE - RSSE 2012