Teses e dissertações

Mestrado
Engenharia Informática
Título

Type relationship graphs for exploring APIs

Autor
Ferreira, Henrique Manuel da Costa Gomes
Resumo
pt
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 programadores
en
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.

Data

04-jan-2018

Palavras-chave

IDE
Software
API usability
Code completion
Aplicação informática
Engenharia da programação
Modelos de linguagem
Modelos gráficos
Análise estrutural
Structural analysis
Usabilidade API
Sugestões de código

Acesso

Acesso livre

Ver no repositório  
Voltar ao topo