SlideShare a Scribd company logo
1 of 30
Thiago Colares
@thicolares
UFBA / UEFS
Motivation
APIs
Evolution
Usability
Final thoughts
http://net.tutsplus.com/articles/news/the-increasing-importance-of-apis-in-web-development/
http://net.tutsplus.com/articles/news/the-increasing-importance-of-apis-in-web-development/
http://net.tutsplus.com/articles/news/the-increasing-importance-of-apis-in-web-development/
String locale =
 String locale =
context.getResources()
 context.getResources()
.getConfiguration()
 .getConfiguration()
..
locale.getDisplayName(
 locale.getDisplayName(
);
 );
What this API does?
Main entities?
How those entities communicates?
AbstractFactory f =
AbstractFactory.getDefault();
Widget w = f.createWidget();


Widget w = Widget.create();
Widget w = Widget.create();
Browse
Select
Read
Navigate
Search
Switch
Use
Backtrack
Discovering Relevant Dependencies
Query Formulation
Exceptions
Web versus Documentation
…To regard the design refactoring
…To review documentation
…To improve de development tools


 “Usability of software tools impacts developer
 efficiency”
                   Steven Clarke
 The results also suggest the need of new software en-
  gineering tools that detect and correct inconsistent
  program updates when developers apply refactorings.
 Number of bug fixes increases after refactorings while
  the time taken to fix bugs decreases after refactorings.
 API usability can be a significant barrier for programmers
 Scenario-based design / User-centered design
 You don’t need expensive usability labs
 But time, patience, willing participants, and a framework
  with which to understand the results of your analysis.
 Kim, Miryung, Dongxiang Cai, and Sunghun Kim. "An empirical investigation into the
    role of API-level refactorings during software evolution." Software Engineering (ICSE),
    2011 33rd International Conference on. IEEE, 2011.
   Brian Ellis, Jeffrey Stylos, and Brad Myers. 2007. The Factory Pattern in API Design:
    A Usability Evaluation. In Proceedings of the 29th international conference on
    Software Engineering (ICSE '07). IEEE Computer Society, Washington, DC, USA, 302-
    312. DOI=10.1109/ICSE.2007.85 http://dx.doi.org/10.1109/ICSE.2007.85
   Jeffrey Stylos and Steven Clarke. 2007. Usability Implications of Requiring Parameters
    in Objects' Constructors. In Proceedings of the 29th international conference on
    Software Engineering (ICSE '07). IEEE Computer Society, Washington, DC, USA, 529-
    539. DOI=10.1109/ICSE.2007.92 http://dx.doi.org/10.1109/ICSE.2007.9
   J. Stylos and S. Clarke, “Usability implications of requir- ing parameters in objects’
    constructors,” in Proceedings of the 29th International Conference on Software
    Engineering, 2007, pp. 529–539.
   Ubo Icons Theme 0.1alpha, http://gnome-
    look.org/content/show.php/Ubo+Icons+Theme?content=122078
@thicolares

More Related Content

Similar to API Evolution and Usability

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 EclipsePeter Friese
 
Developing Distributed Web Applications, Where does REST fit in?
Developing Distributed Web Applications, Where does REST fit in?Developing Distributed Web Applications, Where does REST fit in?
Developing Distributed Web Applications, Where does REST fit in?Srinath Perera
 
Recovery of Traceability Links and Behavior Models for Software Maintenance,...
Recovery of Traceability Links and Behavior Models for Software Maintenance,...Recovery of Traceability Links and Behavior Models for Software Maintenance,...
Recovery of Traceability Links and Behavior Models for Software Maintenance,...Hironori Washizaki
 
Eclipse DemoCamp Budapest 2016 November: Best of EclipseCon Europe 2016
Eclipse DemoCamp Budapest 2016 November: Best of EclipseCon Europe 2016Eclipse DemoCamp Budapest 2016 November: Best of EclipseCon Europe 2016
Eclipse DemoCamp Budapest 2016 November: Best of EclipseCon Europe 2016Istvan Rath
 
30 Years of Refactoring Research and Practice: A Large Scale Refactoring Infr...
30 Years of Refactoring Research and Practice: A Large Scale Refactoring Infr...30 Years of Refactoring Research and Practice: A Large Scale Refactoring Infr...
30 Years of Refactoring Research and Practice: A Large Scale Refactoring Infr...Marouane Kessentini
 
IRJET- Hosting NLP based Chatbot on AWS Cloud using Docker
IRJET-  	  Hosting NLP based Chatbot on AWS Cloud using DockerIRJET-  	  Hosting NLP based Chatbot on AWS Cloud using Docker
IRJET- Hosting NLP based Chatbot on AWS Cloud using DockerIRJET Journal
 
Component Search and Retrieval
Component Search and RetrievalComponent Search and Retrieval
Component Search and RetrievalEduardo Cruz
 
Maturation of the Twitter Ecosystem
Maturation of the Twitter EcosystemMaturation of the Twitter Ecosystem
Maturation of the Twitter EcosystemKevin Makice
 
myEquivalents, aka a new cross-reference service
myEquivalents, aka a new cross-reference servicemyEquivalents, aka a new cross-reference service
myEquivalents, aka a new cross-reference serviceRothamsted Research, UK
 
BioThings API: Promoting Best-practices via a Biomedical API Development Ecos...
BioThings API: Promoting Best-practices via a Biomedical API Development Ecos...BioThings API: Promoting Best-practices via a Biomedical API Development Ecos...
BioThings API: Promoting Best-practices via a Biomedical API Development Ecos...Chunlei Wu
 
UMLassure: An approach to model software security
UMLassure: An approach to model software securityUMLassure: An approach to model software security
UMLassure: An approach to model software securitymanishthaper
 
ACS 248th Paper 146 VIVO/ScientistsDB Integration into Eureka
ACS 248th Paper 146 VIVO/ScientistsDB Integration into EurekaACS 248th Paper 146 VIVO/ScientistsDB Integration into Eureka
ACS 248th Paper 146 VIVO/ScientistsDB Integration into EurekaStuart Chalk
 
BioThings API: Building a FAIR API Ecosystem for Biomedical Knowledge
BioThings API: Building a FAIR API Ecosystem for Biomedical KnowledgeBioThings API: Building a FAIR API Ecosystem for Biomedical Knowledge
BioThings API: Building a FAIR API Ecosystem for Biomedical KnowledgeChunlei Wu
 
Intelligent Software Engineering: Synergy between AI and Software Engineering...
Intelligent Software Engineering: Synergy between AI and Software Engineering...Intelligent Software Engineering: Synergy between AI and Software Engineering...
Intelligent Software Engineering: Synergy between AI and Software Engineering...Tao Xie
 
Adcom2006 Full 6
Adcom2006 Full 6Adcom2006 Full 6
Adcom2006 Full 6umavanth
 
SETTA'18 Keynote: Intelligent Software Engineering: Synergy between AI and So...
SETTA'18 Keynote: Intelligent Software Engineering: Synergy between AI and So...SETTA'18 Keynote: Intelligent Software Engineering: Synergy between AI and So...
SETTA'18 Keynote: Intelligent Software Engineering: Synergy between AI and So...Tao Xie
 
Build and Modernize Intelligent Apps​
Build and Modernize Intelligent Apps​Build and Modernize Intelligent Apps​
Build and Modernize Intelligent Apps​Lorenzo Barbieri
 

Similar to API Evolution and Usability (20)

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
 
Developing Distributed Web Applications, Where does REST fit in?
Developing Distributed Web Applications, Where does REST fit in?Developing Distributed Web Applications, Where does REST fit in?
Developing Distributed Web Applications, Where does REST fit in?
 
Recovery of Traceability Links and Behavior Models for Software Maintenance,...
Recovery of Traceability Links and Behavior Models for Software Maintenance,...Recovery of Traceability Links and Behavior Models for Software Maintenance,...
Recovery of Traceability Links and Behavior Models for Software Maintenance,...
 
Eclipse DemoCamp Budapest 2016 November: Best of EclipseCon Europe 2016
Eclipse DemoCamp Budapest 2016 November: Best of EclipseCon Europe 2016Eclipse DemoCamp Budapest 2016 November: Best of EclipseCon Europe 2016
Eclipse DemoCamp Budapest 2016 November: Best of EclipseCon Europe 2016
 
30 Years of Refactoring Research and Practice: A Large Scale Refactoring Infr...
30 Years of Refactoring Research and Practice: A Large Scale Refactoring Infr...30 Years of Refactoring Research and Practice: A Large Scale Refactoring Infr...
30 Years of Refactoring Research and Practice: A Large Scale Refactoring Infr...
 
Integration visualization
Integration visualizationIntegration visualization
Integration visualization
 
IRJET- Hosting NLP based Chatbot on AWS Cloud using Docker
IRJET-  	  Hosting NLP based Chatbot on AWS Cloud using DockerIRJET-  	  Hosting NLP based Chatbot on AWS Cloud using Docker
IRJET- Hosting NLP based Chatbot on AWS Cloud using Docker
 
Component Search and Retrieval
Component Search and RetrievalComponent Search and Retrieval
Component Search and Retrieval
 
Maturation of the Twitter Ecosystem
Maturation of the Twitter EcosystemMaturation of the Twitter Ecosystem
Maturation of the Twitter Ecosystem
 
myEquivalents, aka a new cross-reference service
myEquivalents, aka a new cross-reference servicemyEquivalents, aka a new cross-reference service
myEquivalents, aka a new cross-reference service
 
BioThings API: Promoting Best-practices via a Biomedical API Development Ecos...
BioThings API: Promoting Best-practices via a Biomedical API Development Ecos...BioThings API: Promoting Best-practices via a Biomedical API Development Ecos...
BioThings API: Promoting Best-practices via a Biomedical API Development Ecos...
 
Codeigniter
CodeigniterCodeigniter
Codeigniter
 
UMLassure: An approach to model software security
UMLassure: An approach to model software securityUMLassure: An approach to model software security
UMLassure: An approach to model software security
 
ACS 248th Paper 146 VIVO/ScientistsDB Integration into Eureka
ACS 248th Paper 146 VIVO/ScientistsDB Integration into EurekaACS 248th Paper 146 VIVO/ScientistsDB Integration into Eureka
ACS 248th Paper 146 VIVO/ScientistsDB Integration into Eureka
 
BioThings API: Building a FAIR API Ecosystem for Biomedical Knowledge
BioThings API: Building a FAIR API Ecosystem for Biomedical KnowledgeBioThings API: Building a FAIR API Ecosystem for Biomedical Knowledge
BioThings API: Building a FAIR API Ecosystem for Biomedical Knowledge
 
Archonnex at ICPSR
Archonnex at ICPSRArchonnex at ICPSR
Archonnex at ICPSR
 
Intelligent Software Engineering: Synergy between AI and Software Engineering...
Intelligent Software Engineering: Synergy between AI and Software Engineering...Intelligent Software Engineering: Synergy between AI and Software Engineering...
Intelligent Software Engineering: Synergy between AI and Software Engineering...
 
Adcom2006 Full 6
Adcom2006 Full 6Adcom2006 Full 6
Adcom2006 Full 6
 
SETTA'18 Keynote: Intelligent Software Engineering: Synergy between AI and So...
SETTA'18 Keynote: Intelligent Software Engineering: Synergy between AI and So...SETTA'18 Keynote: Intelligent Software Engineering: Synergy between AI and So...
SETTA'18 Keynote: Intelligent Software Engineering: Synergy between AI and So...
 
Build and Modernize Intelligent Apps​
Build and Modernize Intelligent Apps​Build and Modernize Intelligent Apps​
Build and Modernize Intelligent Apps​
 

More from Thiago Colares

O básico que ainda deveríamos entender sobre Unicode e encondings
O básico que ainda deveríamos entender sobre Unicode e encondingsO básico que ainda deveríamos entender sobre Unicode e encondings
O básico que ainda deveríamos entender sobre Unicode e encondingsThiago Colares
 
The Pragmatic Agilist: estimating, improving quality, and communication with...
The Pragmatic Agilist: estimating, improving quality, and communication  with...The Pragmatic Agilist: estimating, improving quality, and communication  with...
The Pragmatic Agilist: estimating, improving quality, and communication with...Thiago Colares
 
Getting started with GraphQL
Getting started with GraphQLGetting started with GraphQL
Getting started with GraphQLThiago Colares
 
Domain-Driven Design com PHP
Domain-Driven Design com PHPDomain-Driven Design com PHP
Domain-Driven Design com PHPThiago Colares
 
Aplicações Híbridas para Dispositivos Móveis com AngularJS e PhoneGap
Aplicações Híbridas para Dispositivos Móveis com AngularJS e PhoneGapAplicações Híbridas para Dispositivos Móveis com AngularJS e PhoneGap
Aplicações Híbridas para Dispositivos Móveis com AngularJS e PhoneGapThiago Colares
 
eBook: Como abrir uma empresa em Salvador, Bahia?
eBook: Como abrir uma empresa em Salvador, Bahia?eBook: Como abrir uma empresa em Salvador, Bahia?
eBook: Como abrir uma empresa em Salvador, Bahia?Thiago Colares
 
Processos de Negócio e Colaboração
Processos de Negócio e ColaboraçãoProcessos de Negócio e Colaboração
Processos de Negócio e ColaboraçãoThiago Colares
 
Como NÃO transformar sua startup em uma tragédia
Como NÃO transformar sua startup em uma tragédiaComo NÃO transformar sua startup em uma tragédia
Como NÃO transformar sua startup em uma tragédiaThiago Colares
 
Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperl...
Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperl...Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperl...
Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperl...Thiago Colares
 
Colaboração em Projetos FLOSS: CakePHP
Colaboração em Projetos FLOSS: CakePHPColaboração em Projetos FLOSS: CakePHP
Colaboração em Projetos FLOSS: CakePHPThiago Colares
 
Usability (and some thoughts on mobile)
Usability (and some thoughts on mobile)Usability (and some thoughts on mobile)
Usability (and some thoughts on mobile)Thiago Colares
 
Apresentação sobre Árvores B
Apresentação sobre Árvores BApresentação sobre Árvores B
Apresentação sobre Árvores BThiago Colares
 
O não e o empreendedor
O não e o empreendedorO não e o empreendedor
O não e o empreendedorThiago Colares
 
Startups como meio de inovação
Startups como meio de inovaçãoStartups como meio de inovação
Startups como meio de inovaçãoThiago Colares
 

More from Thiago Colares (16)

O básico que ainda deveríamos entender sobre Unicode e encondings
O básico que ainda deveríamos entender sobre Unicode e encondingsO básico que ainda deveríamos entender sobre Unicode e encondings
O básico que ainda deveríamos entender sobre Unicode e encondings
 
The Pragmatic Agilist: estimating, improving quality, and communication with...
The Pragmatic Agilist: estimating, improving quality, and communication  with...The Pragmatic Agilist: estimating, improving quality, and communication  with...
The Pragmatic Agilist: estimating, improving quality, and communication with...
 
Getting started with GraphQL
Getting started with GraphQLGetting started with GraphQL
Getting started with GraphQL
 
The Pragmatic Agilist
The Pragmatic AgilistThe Pragmatic Agilist
The Pragmatic Agilist
 
Domain-Driven Design com PHP
Domain-Driven Design com PHPDomain-Driven Design com PHP
Domain-Driven Design com PHP
 
Mobile Usability
Mobile UsabilityMobile Usability
Mobile Usability
 
Aplicações Híbridas para Dispositivos Móveis com AngularJS e PhoneGap
Aplicações Híbridas para Dispositivos Móveis com AngularJS e PhoneGapAplicações Híbridas para Dispositivos Móveis com AngularJS e PhoneGap
Aplicações Híbridas para Dispositivos Móveis com AngularJS e PhoneGap
 
eBook: Como abrir uma empresa em Salvador, Bahia?
eBook: Como abrir uma empresa em Salvador, Bahia?eBook: Como abrir uma empresa em Salvador, Bahia?
eBook: Como abrir uma empresa em Salvador, Bahia?
 
Processos de Negócio e Colaboração
Processos de Negócio e ColaboraçãoProcessos de Negócio e Colaboração
Processos de Negócio e Colaboração
 
Como NÃO transformar sua startup em uma tragédia
Como NÃO transformar sua startup em uma tragédiaComo NÃO transformar sua startup em uma tragédia
Como NÃO transformar sua startup em uma tragédia
 
Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperl...
Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperl...Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperl...
Aplicação da Teoria dos Grafos e Algoritmos na Engenharia de Software: Hyperl...
 
Colaboração em Projetos FLOSS: CakePHP
Colaboração em Projetos FLOSS: CakePHPColaboração em Projetos FLOSS: CakePHP
Colaboração em Projetos FLOSS: CakePHP
 
Usability (and some thoughts on mobile)
Usability (and some thoughts on mobile)Usability (and some thoughts on mobile)
Usability (and some thoughts on mobile)
 
Apresentação sobre Árvores B
Apresentação sobre Árvores BApresentação sobre Árvores B
Apresentação sobre Árvores B
 
O não e o empreendedor
O não e o empreendedorO não e o empreendedor
O não e o empreendedor
 
Startups como meio de inovação
Startups como meio de inovaçãoStartups como meio de inovação
Startups como meio de inovação
 

Recently uploaded

Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Neo4j
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentationphoebematthew05
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraDeakin University
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Science&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfScience&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfjimielynbastida
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxnull - The Open Security Community
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 

Recently uploaded (20)

E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentation
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning era
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Science&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfScience&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdf
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 

API Evolution and Usability

Editor's Notes

  1. API, de Application Programming Interface (ou Interface de Programação de Aplicativos) é um conjunto de rotinas e padrões estabelecidos por um software para a utilização das suas funcionalidades por aplicativos que não pretendem envolver-se em detalhes da implementação do software, mas apenas usar seus serviços.[1] De modo geral, a API é composta por uma série de funções acessíveis somente por programação, e que permitem utilizar características do software menos evidentes ao utilizador tradicional.[2]
  2. Que são APIs? conjunto de funções para que um aplicativo execute funcionalidades de um programa Vantagens: Developers can speed up the application development Companies don't have to pay for several different software n hardwares By integrating conferencing functionality into existing applications, companies don't have to train IT staff and employees on how to administer and use new software. The company who releases the API allows its customers to access their conferencing services in new, more efficient ways, increasing brand recognition and customer loyalty.
  3. http://blog.programmableweb.com/2012/04/11/what-kinds-of-apis-do-developers-most-love/ Mapping, social, search, photos, shopping, video, music telephony… Web Developers: Web APIs allow advanced functionality and features to be integrated into the websites that they create. There is also greater customization and flexibility with Web APIs than standard “copy and paste” widgets. End Users: A good Web API can help increase the usefulness of a website and make the site interactive and more enjoyable. API Providers: A well built API that is widely used by the web development community can be a powerful marketing tool because it can: Help build brand loyalty Increase interest in the company’s products and services Increase website traffic Provide useful tools to consumers Convey company messaging.
  4. Não existe só API para web Mas web são as mais famosas Twitter cresceu por isto Tem também em SO Android: várias versões Evolução
  5. Visão rápida da API do android VÁRIOS metodos
  6. Exemplo: API interface
  7. Há várias formas de evoluir Corrigir bug, inserir feature (funcionalidade), modificar arquitetura, refatorar… modificar estrutura interna sem alterar seu comportamento externo Quando fazer? Extract Method, Move Method, Move Fiel, Extract Class… Em API: MÉTODOS
  8. FOCO: MÉTODOS! Evolução APIS: dois lados quem consome quem desenvole
  9. Lado consumidor Twitter restricting terms of use of its API Twitter is ecosystem. killing itself by killing the ecosystem that made Twitter Twitter… Não são neutras, podem ser trusts? Como o Windows fez? TIRAR?
  10. Controlando impacto H1: Após a refatoração, há um aumento a curto prazo do número de correções de bugs . H2: Durante a correção de bugs introduzidos perto do momento da refatoração, o tempo médio de correção tente a diminuir após as refatorações. H3 : Correções e refatoração geralmente aparecem na mesma revisão. Além disto, é mais provável que uma revisão de refatoração seja seguida de correção bugs do que outro tipo de revisão H4: Existem relativamente menos refatorações da API antes de grandes publicações de versão? H4 : Existem mais retaforações e correção de bugs imediatamente antes de um grande lançamento de versão.
  11. Ao modificar assinaturas, fazer refactoring etc. OS MÉTODOS ESTÃO FÁCEIS DE ENTENDER? Como garantir?? Usabilidade é otodo!
  12. Que é usabilidade? User Experience é o todo UX não melhora produtos que sucks We need to create stuff thay want to use too ...just about usability “People often think that [UX design] is a way to make products that suck into products that don't suck by d edicating resources to the product's design,” says Chris Fahey, founding partner and principal of Behavior. Making stuff easy and intuitive is far from our only goal. In order to get people to change their behavior, we need to create stuff they want to use, too. ----- Meeting Notes (10/01/13 17:34) ----- iso
  13. Por isto, várias decis`oes de design são importantísstimas. Exemplo do construtor EXEMPLO: For instance, Ellis et al. observed that the Factory pattern hinders API learning [1], and a study by Stylos et al. observed that method placement — for instance, placing a “send” method on a convenience class such as EmailTransport.send(EmailMessage), instead of hav- ing it on the main-type such as EmailMessage.send() — hinders API learning because convenience methods are difficult to discover when learning to use an API [
  14. Por isto, várias decis`oes de design são importantísstimas. Exemplo do construtor convenience methods are difficult to discover when learning to use an API Demoravam mais apara aprender
  15. Steve Jobs NÃO sabia as coisas do nada; Frase de Henry Ford sobre os cavalos: É PRECISO INTERPRETAR!!; Ouvir usuários é importante, Experiência é um caminho de mão única Info importantes para desenvolvedores ao aprender APIS
  16. Para entender isto, um processo igual a de construção de interface Escolha AS PESsoas certas. Tente pegar pessosas representativas. Gente até paga. Pessoas experiente, inexperientes… Existem personas Atividades Escolher APIS (preferência, código aberto, com larga documentação) Escolha as bem feitas Dá uma tarefa Envolver múltiplas tarefas, pois as tarefas comuns dos usuários sempre envolvem pequenas atividades[2] Ambientes iguqias para todos Insumos: documentação e internet (tem histórico) Coleta dos dados: Camtasia (video e audio); Think-aloud protocol, screen capturevideos e entrevistas (5 minutos)
  17. As questões foram organizadas e agrupadas, umas tiveram mais ocorrências que outras. How do I create an object of a given type without a public constructor? “ the constructor is protected; so how do I create a Graphics2D object?” Cada atividade pode ser divida em várias ações Ações agrupadas Entrevistas; Carolyne
  18. As ações ou sequencias de ações, mostravam as dificuldades Browse (looked throught a list of API elements) Select (select a item from the list) Read (lendo parte de código ou texto d api) Navigate (seguindo das dependências) Search (procurando pelo nome do elemento) Switch (Documention and Web, sempre variando) Use (tentou usar um elemento da wbe ou código da API) Backtrack (volta para um lugar a partir do qual ele tem certeza e tenta outro caminho)
  19. 1 (maior) tipos relevantes não acessíveis através do tipo em questão (não acessível através de método público) 2 Utilizar o elemento em dúvida como parte da query de busca na web ajuda ( “java xml processing tutorials” sem esquema não trouxa nada) 3 exceptions 4 Quem é melhor? Quem trabalha com ou sem web? Tempo de minerar coisas da web é relavante. Exemplo: código em outro contexto
  20. Discovering Relevant API Elements not Accessible from the Type a Programmer is Working With
  21. Alguma dúvida disto? Talvez o impacto diminua com o tempo (suposição)