Universidade Federal De Campina Grande Centro De Engenharia Elétrica E Informática Investigação Sobre Uso De Vocabulário De
Total Page:16
File Type:pdf, Size:1020Kb
Universidade Federal de Campina Grande Centro de Engenharia Elétrica e Informática Coordenação de Pós-Graduação em Ciência da Computação Investigação sobre Uso de Vocabulário de Código Fonte para Identificação de Especialistas Katyusco de Farias Santos Tese submetida à Coordenação do Curso de Pós-Graduação em Ciência da Computação da Universidade Federal de Campina Grande - Campus I como parte dos requisitos necessários para obtenção do grau de Doutor em Ciência da Computação. Área de Concentração: Ciência da Computação Linha de Pesquisa: Engenharia de Software Orientadores Dr. Dalton Dario Serey Guerrero Dr. Jorge César Abrantes de Figueiredo Campina Grande, Paraíba, Brasil c Katyusco de Farias Santos, 28/02/2015 FICHA CATALOGRÁFICA ELABORADA PELA BIBLIOTECA CENTRAL DA UFCG S237i Santos, Katyusco de Farias. Investigação sobre uso de vocabulário de código fonte para identificação de especialistas / Katyusco de Farias Santos. – Campina Grande, 2015. 137f. : il. color. Tese (Doutorado em Ciência da Computação) – Universidade Federal de Campina Grande, Centro de Engenharia Elétrica e Informática. "Orientação: Prof. Dr. Dalton Dario Serey Guerrero. Prof. Dr. Jorge César Abrantes de Figueiredo". Referências. 1. Vocabulário de Software. 2. Especialista de Código. 3. Código Fonte. I. Guerrero, Dalton Dario Serey. II. Figueiredo, Jorge César Abrantes de. III. Título. CDU 004.4(043) Resumo Identificadores e comentários de um código fonte constituem o vocabulário de software. Pesquisas apontam vocabulários como uma fonte valorosa de informação sobre o projeto. Para entender a natureza e o potencial dos vocabulários, desenvolvemos um ferramental capaz de extraí-los a partir de código fonte. Explorando os dados estatisticamente, iden- tificamos duas propriedades de vocabulários: tamanho, expresso como função de potência de LOC (Lines-Of-Code); e a repetição de seus termos, que se ajusta a uma distribuição log-normal. Vocabulários, bem como suas propriedades e operações foram formalizadas baseadas no conceito de multisets. O ferramental de extração e a formalização viabilizaram cooperações científicas sobre a utilidade de vocabulários em atividades de manutenção. Esse conhecimento acumulado revelou que vocabulário pouco foi explorado como insumo à mod- elagem de conhecimento de código. Desenvolvemos então uma abordagem para identificar especialistas de código cujo conhecimento é definido pela similaridade existente entre vo- cabulários das entidades e dos desenvolvedores. Comparamos a precisão e cobertura da nossa abordagem com de duas outras: baseada em commits e baseada em percentual de LOC modificadas. Os resultados apontam que para indicar um único especialista, top-1, a nossa abordagem tem uma precisão menor, entre 29.9% e 10% que as abordagens de baseline. Já para indicar mais de um desenvolvedor especialista, até top-3, a nossa abordagem tem uma acurácia melhor de até 18.7% em relação as de baseline. Identificamos também que o conhe- cimento definido por similaridade quando combinado com um modelo baseado em autoria aumenta a capacidade de identificar especialistas, no R2 do modelo, em mais de 4 pontos percentuais. Concluímos que além de poder ser utilizado de forma isolada para modelar conhecimento de código e assim identificar especialistas, o vocabulário pode ser um com- ponente adicional a modelos de conhecimento baseados em autoria e propriedade, já que capturam aspectos diferentes dos existentes nesse modelos. iii Abstract Identifiers and comments from a source code are the software vocabulary. Research point vocabularies as a valuable source of information about the project. To understand we devel- oped a tool that extract them from source code. Exploring the data statistically, we identify two vocabularies properties: vocabulary size, that is a power function of LOC (Lines-Of- Code) and the repetition of vocabulary terms that fits a log-normal distribution. Vocabulary as well as their properties and operations were formalized based on the concept of multisets. Extraction tool and formalization made possible scientific cooperation on usage of vocabu- lary in maintenance activities. This accumulated knowledge has shown that vocabulary was not explored as an input to code knowledge. Then we developed a code experts identification approach whose knowledge is defined by existing similarity between entities and develop- ers vocabularies. We compared precision and recall with two baseline approaches: based on commits and based on percentage of modified LOC. The results show that to indicate a single specialist, top-1, our approach has a lower precision, between 29.9% and 10%, than baseline approaches. More than one specialist-developer, up to top-3, our approach has better accu- racy of up to 18.7% over those of the baselines. We also identify that the knowledge defined by similarity when combined with an authorship model enhances the ability to identify ex- perts, R2 of the model, by more than 4 points. We conclude that vocabulary can be solely used to expertise, and thus identify experts. In addition, vocabulary can be an additional component for models based on authorship and ownership, since it captures different aspects from ones existing in these models. iv Agradecimentos Agradeço a todos que direta ou indiretamente me incentivaram a chegar no estágio de escre- ver e defender esta Tese, um livro complicado segundo minha filha de 7 anos. Em especial, ao meu núcleo familiar: meus filhos Laís, e Artur de um ano e meio, e a minha esposa Elaine. Também, ao meus pais, irmã, tios e primos que sempre me "cobravam" dizendo: "Quero lhe ver Doutor!!!". Dalton Serey e Jorge Abrantes, meus orientadores, obrigado pelo suporte e compreensão, além dos ensinamentos críticos-científicos. Claro que sem aquela ajuda do grupo de trabalho, talvez esta Tese não tivesse nem sido iniciada ou nem fizesse nem sentido. São muitos nomes, e eu não quero correr o risco de esquecer alguém. Então agradeço à todos do SPLab pelas parcerias, discussões, sugestões. Por último, o meu mais importante agradecimento: a Deus, inteligência suprema e causa primária de tudo. É.... inexoravelmente a gente chega lá! v Conteúdo 1 Introdução 1 1.1 Contextualização . 1 1.2 Motivação . 3 1.3 Definição do Problema . 5 1.4 Solução Proposta . 6 1.5 Questões de Pesquisa . 7 1.6 Organização do Documento . 9 2 Fundamentação Teórica 10 2.1 Conceitos Fundamentais . 10 2.1.1 Níveis de Comunicação para Codificação . 10 2.1.2 Conceituação de Vocabulário (Léxico) de Código Fonte . 12 2.1.3 Importância do Vocabulário de Código Fonte . 13 2.1.4 Information Retrieval (IR) sobre Vocabulários . 14 2.2 Expertise (Conhecimento de Código) . 16 2.2.1 Medidas de Expertise ........................ 16 2.2.2 Modelo Degree-Of-Knowledge (DOK) ................ 19 3 Vocabulários de Software 22 3.1 Caracterização do Vocabulário de Código Fonte . 22 3.1.1 Formalização de Vocabulário . 22 3.1.2 Operações sobre Vocabulários . 24 3.1.3 Propriedades do Vocabulário . 25 3.2 Compreensão sobre a Natureza dos Vocabulários . 26 vi CONTEÚDO vii 3.2.1 Relacionando Tamanho do Sistema com Vocabulário . 27 3.2.2 Ocorrência de Termos . 33 3.3 Conclusões . 35 4 Abordagem baseada em Vocabulário para Identificação de Especialistas 37 4.1 Motivação . 37 4.2 Visão Geral . 40 4.3 Extração dos Vocabulários de Entidades . 42 4.4 Geração do Vocabulário de Desenvolvedores . 42 4.5 Relacionando Vocabulário de Desenvolvedores com de Entidades . 44 4.6 Vocabulário Adicionado a Modelos Existentes . 47 4.7 Conclusões . 48 5 Avaliação 50 5.1 Acurácia da Abordagem . 50 5.1.1 Questões de Pesquisa . 50 5.1.2 Metodologia . 51 5.1.3 Resultados e Análise . 58 5.1.4 Conclusões . 61 5.1.5 Ameaças à Validade . 63 5.2 Contribuição dos Vocabulários para Conhecimento de Código . 65 5.2.1 Questões de Pesquisa . 66 5.2.2 Metodologia . 66 5.2.3 Resultados e Análise . 70 5.2.4 Conclusões . 73 5.2.5 Ameaças à Validade . 74 6 Trabalhos Relacionados 75 6.1 Sobre Vocabulário de Sistemas . 75 6.2 Sobre Especialistas de Código . 79 7 Considerações Finais 84 7.1 Contribuições e Conclusões . 84 CONTEÚDO viii 7.2 Trabalhos Futuros . 87 A Ferramental Desenvolvido 103 A.1 Vocabulary Tool ................................ 103 A.1.1 Vocabulary Extractor ......................... 103 A.1.2 Vocabulary eXtended Language - VXL ................ 105 A.1.3 Terms Counter ............................ 106 B Artigo publicado no WMSWM-SBQS2011 110 C Artigos publicados no TAinSM-ICSM2012 119 D Artigo publicado no CBSoft2013: Teoria e Prática 130 E Artigo completo aceito para publicação no ITNG2015 137 Lista de Símbolos AC - ACceptances AST - Abstract Syntax Tree CFV - Characteristic Frequency Vector DL - DeLiveries DOA - Degree-Of-Authorship DOE - Degree-Of-Eloquence DOI - Degree-Of-Interest DOK - Degree-Of-Knowledge FA - First Authorship IR - Information Retrieval LOC - Lines Of Code SPLab - Software Practices Laboratory - Laboratório de Práticas de Software SVN - SubVersion VCS - Version Control System VXL - Vocabulary eXtended Language XML - eXtended Markup Language ePol - Sistema de Informações da Polícia Federal Brasileira ix Lista de Figuras 3.1 Etapas da metodologia utilizada. 27 3.2 Gráfico de dispersão log (frequência de termos) por log (classificação do termos) para os vocabulários de cada um dos 39 projetos. 34 4.1 Abordagem para Identificação de Especialistas baseada na Similaridade de Vocabulário. 41 4.2 Geração do Vocabulário de Desenvolvedores. 44 5.1 Etapas para aferir a contribuição de similaridade. 67 5.2 MEDDOA: Matriz Entidades por Desenvolvedores por Elementos de DOA.. 68 A.1 Artefatos de Software que compõem o Vocabulary Tool. 104 A.2 Esquema XSD do VXL. 107 A.3 Execução típica dos filtros do Identifier Filter. 108 x Lista de Tabelas 3.1 Lista dos projetos Java open source da amostra, e respectivas informações. 29 3.2 Estatísticas de modelos multivariados de LOC e #E para #DT e TT.. 31 3.3 Regressão Linear para DT e TT........................ 32 4.1 Exemplo de matriz de frequência Termo-Entidade, TE. 42 4.2 Matriz de similaridade do cosseno entre vocabulários de Entidades e de De- senvolvedores para um Projeto P ......................