Aluno: Francisco Zigmund Sokol
Orientador: Marco Aurélio Georsa
Co-orientador: Maurício Finavaro Aniche
Tema: MetricMiner: uma ferramenta web de apoio à mineração de repositórios de software

Resumo


Mineração de repositórios é uma área da Engenharia de Software que estuda o processo de evolução de um software de forma empírica, por meio da análise dos artefatos envolvidos no seu desenvolvimento como código fonte, dados do sistema de controle de versão e sistemas de rastreamento de bugs [1]. Para desenvolver um trabalho na área, o pesquisador é obrigado a carregar diversos projetos em sua estação de trabalho e realizar uma série de cálculos sobre o código dos projetos e sobre os metadados de seu repositório. Esse processo requer a instalação de diversas ferramentas e bibliotecas localmente para reaproveitar as ferramentas desenvolvidas nessa área, tornando o processo trabalhoso e demorado.

Além de ser um processo complexo, esse tipo de pesquisa consome muitos recursos computacionais. Baixar os repositórios a serem minerados consome um volume considerável de banda. Depois, os dados devem ser processados e persistidos em um banco de dados, ocupando um grande volume de disco. Só então o pesquisador pode calcular métricas sobre esses dados, além de extrair relações entre os metadados do histórico do sistema de controle de versão, gastando uma quantidade grande de processamento de CPU. Só depois de passar por todas essas etapas, é possível extrair dados e avaliar hipóteses por meio de análises estatísticas.

Dessas dificuldades surgiu a motivação para o desenvolvimento do MetricMiner, uma aplicação web que realiza todas as etapas da mineração de um repositório de software. Essa ferramenta irá disponibilizar um grande volume de dados já processados prontos para serem extraídos e analisados pelo pesquisador, poupando tempo e recursos computacionais.

Objetivos


O objetivo do trabalho é desenvolver uma aplicação web capaz de realizar as etapas custosas da mineração de um repositório de software, possibilitando que pesquisadores realizem estudos em diversos projetos.

Atividades já realizadas


As ferramentas disponíveis foram analisadas e os requisitos para o desenvolvimento do MetricMiner foram levantados. O desenvolvimento da aplicação se iniciou com base no rEvolution, uma ferramenta de linha de comando desenvolvida por Mauricio Aniche. Foi criado um repositório público no GitHub, onde o desenvolvimento do software pode ser acompanhado. Foi configurado um servidor para hospedar a aplicação. Também foi escrito um artigo sobre o sistema que foi submetido à sessão de ferramentas do CBSoft 2012.

As principais funcionalidades implementadas até o momento foram:

  • Download de repositórios que utilizam o sistema de controle de versão Git.
  • Extração dos dados do sistema de controle de versão dos projetos cadastrados.
  • Cálculo de algumas métricas de software como LCOM e Complexidade Ciclomática.
  • Interface para realização de consultas aos dados armazenados no sistema.

Cronograma


Junho Julho Agosto Setembro Outubro Novembro Dezembro
Desenvolvimento X X X X
Validação da ferramenta X X
Monografia X X X
Pôster/Apresentação X X

Estrutura da monografia


Parte objetiva

  1. Introdução - introdução ao tema e motivação para o desenvolvimento da ferramenta.
  2. Mineração de Repositórios de Software - levantamento bibliográfico sobre essa área de pesquisa.
  3. Arquitetura da ferramenta e tecnologias envolvidas - discussão das decisões arquiteturais do sistema.
  4. Avaliação da ferramenta - resultados obtidos com a utilização do software produzido
  5. Conclusão e trabalhos futuros

Parte subjetiva

  1. Desafios e frustrações encontrados
  2. Disciplinas relevantes para a realização do trabalho

Referências


  1. Kagdi, H., Collard, M. L., and Maletic, J. I. (2007). A survey and taxonomy of approaches for mining software repositories in the context of software evolution. Journal of Software Maintenance and Evolution, 19(2):77–131.