Type relationship graphs for exploring APIs

Detalhes bibliográficos
Autor(a) principal: Ferreira, Henrique Manuel da Costa Gomes
Data de Publicação: 2017
Tipo de documento: Dissertação
Idioma: eng
Título da fonte: Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos)
Texto Completo: http://hdl.handle.net/10071/14851
Resumo: In the present day, the use of APIs, varying in complexity, size and design are pervasive, in the development of software. They are used to communicate, to log information, to draw charts and a myriad of other purposes. With this increasing importance in API usage, developers often struggle when using an API for the first time and are faced with various API discoverability problems. We propose an approach that aims to help mitigate the discoverability problems by providing code suggestions based on data extracted from structurally analyzing APIs for type relationships. The relationships are stored in a graph, which is used to navigate between the API types. The first steps when using an API are often one of the difficulties that developers face. For this reason, our approach provides API starting points to help the developer kick-start the use of the API. The next stage in API usage usually consists in using API types to access or create other API types. Our approach suggests possible type compositions based on the types available in the current development context. Depending on the API, the amount of extracted relationships can be overwhelming if directly suggested to the developer and for this reason a filtering mechanism and ranking heuristic were created, in order to provide more meaningful suggestions. Our approach was tested by analyzing 5 different APIs and simulating suggestions from the extracted data, comparing those suggestions to API usage examples. The results provide some evidence that our approach is a possible solution to the API discoverability problems and that the structural analysis to a given API can provide considerable amount of the information required to create and deliver suggestions to developers.
id RCAP_9965edc7b3cd021016f3d9f1bb1b3586
oai_identifier_str oai:repositorio.iscte-iul.pt:10071/14851
network_acronym_str RCAP
network_name_str Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos)
repository_id_str 7160
spelling Type relationship graphs for exploring APIsEngenharia da programaçãoModelos de linguagemModelos gráficosAnálise estruturalSoftwareAplicação informáticaAPI UsabilityCode completionIDEStructural analysisUsabilidade APISugestões de códigoIn the present day, the use of APIs, varying in complexity, size and design are pervasive, in the development of software. They are used to communicate, to log information, to draw charts and a myriad of other purposes. With this increasing importance in API usage, developers often struggle when using an API for the first time and are faced with various API discoverability problems. We propose an approach that aims to help mitigate the discoverability problems by providing code suggestions based on data extracted from structurally analyzing APIs for type relationships. The relationships are stored in a graph, which is used to navigate between the API types. The first steps when using an API are often one of the difficulties that developers face. For this reason, our approach provides API starting points to help the developer kick-start the use of the API. The next stage in API usage usually consists in using API types to access or create other API types. Our approach suggests possible type compositions based on the types available in the current development context. Depending on the API, the amount of extracted relationships can be overwhelming if directly suggested to the developer and for this reason a filtering mechanism and ranking heuristic were created, in order to provide more meaningful suggestions. Our approach was tested by analyzing 5 different APIs and simulating suggestions from the extracted data, comparing those suggestions to API usage examples. The results provide some evidence that our approach is a possible solution to the API discoverability problems and that the structural analysis to a given API can provide considerable amount of the information required to create and deliver suggestions to developers.Actualmente, o uso de APIs, com diferentes graus de complexidade, tamanho e estrutura, é inevitável no desenvolvimento de software. As APIs são usadas para comunicação, registar informação, desenhar gráficos entre uma miríade de outras funcionalidades. Com este aumento na importância do uso de APIs, os programadores são muitas vezes confrontados com vários problemas de usabilidade quando usam uma API pela primeira vez. Propomos uma abordagem que visa ajudar na mitigação destes problemas através de sugestões de código, obtidas a partir da informação proveniente de uma análise estrutural a APIs que tem como objectivo encontrar relações entre tipos. Estas relações são armazenadas em grafos que irão ser usados para navegar entre os diversos tipos da API. Os primeiros passos de um programador quando usa uma API são, numa boa parte das vezes, uma das fontes de dificuldade. Por esta razão, a nossa abordagem disponibiliza um conjunto de pontos iniciais da API, de forma a auxiliar o programador no uso inicial da mesma. A fase seguinte no uso de uma API normalmente consiste na utilização de tipos da API, de forma a aceder ou criar outros tipos da API. A nossa abordagem sugere possíveis composições de tipos com base na informação do contexto actual de desenvolvimento. Dependendo da API, a quantidade de relações extraídas pode ser avassaladora, se sugeridas directamente ao programador. Para conseguir oferecer sugestões significativas, foi criado um sistema de filtragem e uma heurística de ordenação. A nossa abordagem foi testada analisando 5 diferentes API e simulando sugestões através da informação extraída. Estas sugestões foram comparadas com exemplos de utilização destas APIs. Os resultados evidenciam que a nossa abordagem é uma solução possível para os problemas de usabilidade de APIs, e que a análise estrutural a uma API permite obter o conjunto de informação necessária para gerar e disponibilizar sugestões a programadores2018-01-04T15:37:27Z2017-01-01T00:00:00Z20172017-06info:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesisapplication/pdfapplication/octet-streamhttp://hdl.handle.net/10071/14851TID:201738627engFerreira, Henrique Manuel da Costa Gomesinfo:eu-repo/semantics/openAccessreponame:Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos)instname:Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informaçãoinstacron:RCAAP2023-11-09T17:49:38Zoai:repositorio.iscte-iul.pt:10071/14851Portal AgregadorONGhttps://www.rcaap.pt/oai/openaireopendoar:71602024-03-19T22:24:23.630747Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) - Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informaçãofalse
dc.title.none.fl_str_mv Type relationship graphs for exploring APIs
title Type relationship graphs for exploring APIs
spellingShingle Type relationship graphs for exploring APIs
Ferreira, Henrique Manuel da Costa Gomes
Engenharia da programação
Modelos de linguagem
Modelos gráficos
Análise estrutural
Software
Aplicação informática
API Usability
Code completion
IDE
Structural analysis
Usabilidade API
Sugestões de código
title_short Type relationship graphs for exploring APIs
title_full Type relationship graphs for exploring APIs
title_fullStr Type relationship graphs for exploring APIs
title_full_unstemmed Type relationship graphs for exploring APIs
title_sort Type relationship graphs for exploring APIs
author Ferreira, Henrique Manuel da Costa Gomes
author_facet Ferreira, Henrique Manuel da Costa Gomes
author_role author
dc.contributor.author.fl_str_mv Ferreira, Henrique Manuel da Costa Gomes
dc.subject.por.fl_str_mv Engenharia da programação
Modelos de linguagem
Modelos gráficos
Análise estrutural
Software
Aplicação informática
API Usability
Code completion
IDE
Structural analysis
Usabilidade API
Sugestões de código
topic Engenharia da programação
Modelos de linguagem
Modelos gráficos
Análise estrutural
Software
Aplicação informática
API Usability
Code completion
IDE
Structural analysis
Usabilidade API
Sugestões de código
description In the present day, the use of APIs, varying in complexity, size and design are pervasive, in the development of software. They are used to communicate, to log information, to draw charts and a myriad of other purposes. With this increasing importance in API usage, developers often struggle when using an API for the first time and are faced with various API discoverability problems. We propose an approach that aims to help mitigate the discoverability problems by providing code suggestions based on data extracted from structurally analyzing APIs for type relationships. The relationships are stored in a graph, which is used to navigate between the API types. The first steps when using an API are often one of the difficulties that developers face. For this reason, our approach provides API starting points to help the developer kick-start the use of the API. The next stage in API usage usually consists in using API types to access or create other API types. Our approach suggests possible type compositions based on the types available in the current development context. Depending on the API, the amount of extracted relationships can be overwhelming if directly suggested to the developer and for this reason a filtering mechanism and ranking heuristic were created, in order to provide more meaningful suggestions. Our approach was tested by analyzing 5 different APIs and simulating suggestions from the extracted data, comparing those suggestions to API usage examples. The results provide some evidence that our approach is a possible solution to the API discoverability problems and that the structural analysis to a given API can provide considerable amount of the information required to create and deliver suggestions to developers.
publishDate 2017
dc.date.none.fl_str_mv 2017-01-01T00:00:00Z
2017
2017-06
2018-01-04T15:37:27Z
dc.type.status.fl_str_mv info:eu-repo/semantics/publishedVersion
dc.type.driver.fl_str_mv info:eu-repo/semantics/masterThesis
format masterThesis
status_str publishedVersion
dc.identifier.uri.fl_str_mv http://hdl.handle.net/10071/14851
TID:201738627
url http://hdl.handle.net/10071/14851
identifier_str_mv TID:201738627
dc.language.iso.fl_str_mv eng
language eng
dc.rights.driver.fl_str_mv info:eu-repo/semantics/openAccess
eu_rights_str_mv openAccess
dc.format.none.fl_str_mv application/pdf
application/octet-stream
dc.source.none.fl_str_mv reponame:Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos)
instname:Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informação
instacron:RCAAP
instname_str Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informação
instacron_str RCAAP
institution RCAAP
reponame_str Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos)
collection Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos)
repository.name.fl_str_mv Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) - Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informação
repository.mail.fl_str_mv
_version_ 1799134806121906176