Documentação de APIs usando exemplos de código

=== Nowadays, software development increasingly relies on Application Programming Interfaces (APIs) to improve quality and to increase productivity. However, learning to use new APIs in many cases is a non-trivial task given their size and complexity. For this purpose, API creators usually provide...

Full description

Bibliographic Details
Main Author: João Eduardo Montandon de Araujo Filho
Other Authors: Marco Tulio de Oliveira Valente
Format: Others
Language:Portuguese
Published: Universidade Federal de Minas Gerais 2013
Online Access:http://hdl.handle.net/1843/ESBF-97GNTG
id ndltd-IBICT-oai-bibliotecadigital.ufmg.br-MTD2BR-ESBF-97GNTG
record_format oai_dc
collection NDLTD
language Portuguese
format Others
sources NDLTD
description === Nowadays, software development increasingly relies on Application Programming Interfaces (APIs) to improve quality and to increase productivity. However, learning to use new APIs in many cases is a non-trivial task given their size and complexity. For this purpose, API creators usually provide resources to assist developers in the understanding process, often in the form of a web-based documentation. However, the content available in this kind of documentation is frequently insufficient for mastering a new API. As a result, most developers face serious difficulties when trying to use modern APIs. To help developers during API learning process, we propose in this master dissertation a platformcalled APIMinerthat instruments the standard Java-based API documentation format with concrete examples of usage. The examples provided by APIMiner are extracted from a private source code repositorycomposed by real systemsand summarized using a static slicing algorithm. We also describe a particular instantiation of our platform for the Android Software Development Kit, called Android APIMiner. To evaluate the proposed solution, we first performed a large scale field study where the platform has been used by professional Android developers during four months. For this study, Android APIMiner extracted 79,732 source code examples from 103 open source Android applications. Moreover, the platform was visited 20,038 times (from 130 different countries), generating more than 40,000 page views, and provided more than 2,100 examples to the users. Furthermore, we have conducted a controlled experiment with 17 subjects, including the implementation of two maintenance tasks in a small Android application. We observed that the examples provided by APIMiner helped to solve specific programming tasks, which comprise few and connected API elements. On the other hand, the current examples provided by APIMiner are less useful to solve more complex tasks, that require the implementation of more complex programming protocols. === O desenvolvimento moderno de software depende cada vez mais do reuso de Application Programming Interfaces (APIs) para garantir produtividade e qualidade. No entanto, devido ao seu tamanho e complexidade, o aprendizado de novas APIs exige um esforço não trivial por parte dos desenvolvedores. Para facilitar esse processo, os criadores de APIs normalmente fornecem recursos para auxiliar os desenvolvedores, geralmente na forma de uma documentação Web. Contudo, as informações contidas nesse tipo de documentação geralmente são insuficientes para o domínio de uma API. Visando ajudar a preencher essa lacuna, propõe-se nesta dissertação de mestrado uma ferramenta, chamada APIMiner, para instrumentação automática de documentações de APIs com exemplos de código fonte. Esses exemplos são extraídos de um repositório privado de sistemas e sumarizados por meio de um algoritmo de slicing estático. Além disso, foi implementada uma versão da ferramenta para a API do sistema operacional Android, chamada Android APIMiner. Para avaliar essa implementação, um estudo de campo foi realizado no qual a plataforma foi disponibilizada publicamente para uso por quatro meses. Para esse estudo, a plataforma extraiu 79,732 exemplos de uso de um repositório com 103 aplicações de código aberto. Ainda, a plataforma foi visitada 20,038 vezes, gerando mais de 40,000 visualizações de páginas e forneceu mais de 2,100 exemplos para seus usuários. Além disso, um experimento controlado foi conduzido envolvendo 17 participantes e incluindo a realização de duas tarefas de manutenção em uma pequena aplicação Android. Com esse experimento, observou-se que os exemplos providos pelo APIMiner ajudam a concluir tarefas de programação que envolvem poucos elementos da API. Por outro lado, os exemplos providos atualmente se mostraram menos úteis para resolver tarefas mais complexas, como as que requerem protocolos de chamadas de métodos mais elaborados.
author2 Marco Tulio de Oliveira Valente
author_facet Marco Tulio de Oliveira Valente
João Eduardo Montandon de Araujo Filho
author João Eduardo Montandon de Araujo Filho
spellingShingle João Eduardo Montandon de Araujo Filho
Documentação de APIs usando exemplos de código
author_sort João Eduardo Montandon de Araujo Filho
title Documentação de APIs usando exemplos de código
title_short Documentação de APIs usando exemplos de código
title_full Documentação de APIs usando exemplos de código
title_fullStr Documentação de APIs usando exemplos de código
title_full_unstemmed Documentação de APIs usando exemplos de código
title_sort documentação de apis usando exemplos de código
publisher Universidade Federal de Minas Gerais
publishDate 2013
url http://hdl.handle.net/1843/ESBF-97GNTG
work_keys_str_mv AT joaoeduardomontandondearaujofilho documentacaodeapisusandoexemplosdecodigo
_version_ 1718844216625332224
spelling ndltd-IBICT-oai-bibliotecadigital.ufmg.br-MTD2BR-ESBF-97GNTG2019-01-21T17:54:44Z Documentação de APIs usando exemplos de código João Eduardo Montandon de Araujo Filho Marco Tulio de Oliveira Valente Eduardo Magno Lages Figueiredo Leonardo Gresta Paulino Murta Nowadays, software development increasingly relies on Application Programming Interfaces (APIs) to improve quality and to increase productivity. However, learning to use new APIs in many cases is a non-trivial task given their size and complexity. For this purpose, API creators usually provide resources to assist developers in the understanding process, often in the form of a web-based documentation. However, the content available in this kind of documentation is frequently insufficient for mastering a new API. As a result, most developers face serious difficulties when trying to use modern APIs. To help developers during API learning process, we propose in this master dissertation a platformcalled APIMinerthat instruments the standard Java-based API documentation format with concrete examples of usage. The examples provided by APIMiner are extracted from a private source code repositorycomposed by real systemsand summarized using a static slicing algorithm. We also describe a particular instantiation of our platform for the Android Software Development Kit, called Android APIMiner. To evaluate the proposed solution, we first performed a large scale field study where the platform has been used by professional Android developers during four months. For this study, Android APIMiner extracted 79,732 source code examples from 103 open source Android applications. Moreover, the platform was visited 20,038 times (from 130 different countries), generating more than 40,000 page views, and provided more than 2,100 examples to the users. Furthermore, we have conducted a controlled experiment with 17 subjects, including the implementation of two maintenance tasks in a small Android application. We observed that the examples provided by APIMiner helped to solve specific programming tasks, which comprise few and connected API elements. On the other hand, the current examples provided by APIMiner are less useful to solve more complex tasks, that require the implementation of more complex programming protocols. O desenvolvimento moderno de software depende cada vez mais do reuso de Application Programming Interfaces (APIs) para garantir produtividade e qualidade. No entanto, devido ao seu tamanho e complexidade, o aprendizado de novas APIs exige um esforço não trivial por parte dos desenvolvedores. Para facilitar esse processo, os criadores de APIs normalmente fornecem recursos para auxiliar os desenvolvedores, geralmente na forma de uma documentação Web. Contudo, as informações contidas nesse tipo de documentação geralmente são insuficientes para o domínio de uma API. Visando ajudar a preencher essa lacuna, propõe-se nesta dissertação de mestrado uma ferramenta, chamada APIMiner, para instrumentação automática de documentações de APIs com exemplos de código fonte. Esses exemplos são extraídos de um repositório privado de sistemas e sumarizados por meio de um algoritmo de slicing estático. Além disso, foi implementada uma versão da ferramenta para a API do sistema operacional Android, chamada Android APIMiner. Para avaliar essa implementação, um estudo de campo foi realizado no qual a plataforma foi disponibilizada publicamente para uso por quatro meses. Para esse estudo, a plataforma extraiu 79,732 exemplos de uso de um repositório com 103 aplicações de código aberto. Ainda, a plataforma foi visitada 20,038 vezes, gerando mais de 40,000 visualizações de páginas e forneceu mais de 2,100 exemplos para seus usuários. Além disso, um experimento controlado foi conduzido envolvendo 17 participantes e incluindo a realização de duas tarefas de manutenção em uma pequena aplicação Android. Com esse experimento, observou-se que os exemplos providos pelo APIMiner ajudam a concluir tarefas de programação que envolvem poucos elementos da API. Por outro lado, os exemplos providos atualmente se mostraram menos úteis para resolver tarefas mais complexas, como as que requerem protocolos de chamadas de métodos mais elaborados. 2013-03-14 info:eu-repo/semantics/publishedVersion info:eu-repo/semantics/masterThesis http://hdl.handle.net/1843/ESBF-97GNTG por info:eu-repo/semantics/openAccess text/html Universidade Federal de Minas Gerais 32001010004P6 - CIÊNCIA DA COMPUTAÇÃO UFMG BR reponame:Biblioteca Digital de Teses e Dissertações da UFMG instname:Universidade Federal de Minas Gerais instacron:UFMG