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.