Descoberta de conhecimento em banco de dados utilizando técnicas de mineração de dados no domínio da Engenharia de Software para fins de gerenciamento do processo de desenvolvimento Davy Baía MSC Candidate Junho 2011
Agenda Introdução - Mineração de Dados em Engenharia de Software - Ferramentas de auxilio que fornece base de dados Motivação Proposta Estado da Arte Técnicas de Mineração de Dados Associação, Classificação e Clustering Discussão Trabalho em andamento 2
Mineração de Dados em Engenharia de Software Transforma dados histórico em indicadores Verificar os dados para descobrir padrões escondidos e tendências 3
Mineração de Dados em Engenharia de Software Melhor compreensão baseado no histórico do desenvolvimento de software Prever, planejar e compreender os vários aspectos de um projeto Apoiar o desenvolvimento futuro e as atividades de gerenciamento de projetos 4
Ferramentas de auxilio que fornece base de dados Rational Team Concert - RTC Planejamento Integrado de iterações Gerência de itens de trabalho Controle de origem Gerência de construção (builds) Rational Quality Manager - RQM Planejamento e controle dos testes Criação e execução de casos de testes Gerenciamento dos defeitos Rational Requirements Composer - RRC Gerência de Requisitos 5
Motivação Tendência de crescimento em demanda e complexidade; Manter a qualidade; Diversas variáveis durante o planejamento e execução. 21/06/11 DAVY BAÍA LES/PUC-Rio LDS-UFAL 6
Proposta Unir as bases; Aplicar de técnicas de mineração de dados; Descobrir informações; Auxiliar no andamento do projeto ou estimações futuras. 7
Proposta Programação Detecção de Defeito testes Depuração Manutençao Gerar indicadores para Processo de desenvolvimento software aplicando mineração de dados classification association/ patterns clustering Tecnicas de Mineração de dados RTC RQM RRC Dados de Engenharia de Software 8
Estado da arte Avaliação de Processos de Software Baseada em Medições [01] Augusto Gomes, Kathia Oliveira, Ana Regina Rocha XV Simpósio Brasileiro de Engenharia de Software Baseado em medições; Definir, coletar e analisar não trivial; Descreve uma abordagem para avaliação de processo de software; Seleciona métricas adequadas seguindo a abordagem GQM (Goal-Question_Metrics); Propõe a análise dos resultados apoiada em um sistema baseado em conhecimento. 9
primeira meta estipulada. A partir da definição destas questões, foram definidas métricas que comparam os dados estimados para o projeto com os dados reais medidos durante o decorrer dos trabalhos. Foram selecionadas duas métricas para cada uma das questões de forma a considerar tanto os valores globais (todo o projeto) quanto os valores detalhados por macroatividade1, como pode ser visto na Figura 1. Avaliação de Processos de Software Baseada em Medições Objetivo 1 : Propósito: Melhorar Questão: precisão Objeto: estimativas de projeto Ponto de Vista: analisado pelo ponto de vista dos gerentes de projeto Questão 1.1 : Qual a precisão das estimativas de cronograma do projeto? Métrica 1.1 a) Precisão Total do Cronograma = Tempo real de todo o projeto. Tempo estimado do projeto Métrica 1.1 b) Pr. Cron. por Macro-Atividade = Tempo real por macro-atividade. Tempo estimado para a macro-ativ. Questão 1.2 : Qual a precisão das estimativas de esforço do projeto? Métrica 1.2 a) Precisão Total do Esforço = Esforço real de todo o projeto. Esforço estimado para o projeto Métrica 1.2 b) Pr. Esforço por Macro-Atividade = Esforço real por macro-atividade. Esforço estimado para a macro-ativ. Figura 1 Definição das métricas para o primeiro objetivo de avaliação do processo segundo a abordagem GQM. Para facilitar a coleta, o entendimento e a análise dos dados, cada métrica selecionada para um objetivo deve ser claramente definida. Baseados em [7], definimos que para medir tempo em um projeto seria utilizado o número de dias decorridos entre a data de início dos 10
possíveis causas para este problema. Desta forma, este não será detalhado em sub-objetivos sendo um nó terminal da estrutura. Pode-se considerar que ocorreu um problema no Emprego do Esforço na Macro-atividade quando não houver um problema de Precisão do Esforço na Macro-atividade, ou seja, se ocorreu um problema no tempo, mas o esforço foi dentro do previsto, então, conclui-se que o problema foi o incorreto emprego do esforço. Somente para facilitar a visualização, todos os nós terminais da estrutura serão representados por retângulos ao invés de elipses como pode ser visto na figura 7. Avaliação de Processos de Software Baseada em Medições Precisão das Estimativas Problema = Se problema em um um dos sub-objetivos Precisão do Esforço por Macro-atividade Precisão Total do Esforço Problema = Se medida > tolerancia Precisão Total do Cronograma Problema = Se medida > tolerancia Precisão do Cronograma por Macro-atividade Problema = Se medida > tolerancia Emprego do Esforço na Macro-atividade Problema = Se não Problema na "Precisão do Esforçopor Macro-atividade Figura 7 Estrutura de decisão para o objetivo 1 com a representação do primeiro nó terminal. Este procedimento foi repetido para a Precisão do Esforço por Macro-Atividade e seus sub-objetivos até que não existissem mais nós passíveis de serem expandidos, ou que não fosse interessante sua expansão no nível em que se encontram os trabalhos. A estrutura final pode ser vista na figura 8. 11
possíveis causas para este problema. Desta forma, este não será detalhado em sub-objetivos sendo um nó terminal da estrutura. Pode-se considerar que ocorreu um problema no Emprego do Esforço na Macro-atividade quando não houver um problema de Precisão do Esforço na Macro-atividade, ou seja, se ocorreu um problema no tempo, mas o esforço foi dentro do previsto, então, conclui-se que o problema foi o incorreto emprego do esforço. Somente para facilitar a visualização, todos os nós terminais da estrutura serão representados por retângulos ao invés de elipses como pode ser visto na figura 7. Avaliação de Processos de Software Baseada em Medições Precisão das Estimativas Problema = Se problema em um um dos sub-objetivos Precisão do Esforço por Macro-atividade Precisão Total do Esforço Problema = Se medida > tolerancia Precisão Total do Cronograma Problema = Se medida > tolerancia Precisão do Cronograma por Macro-atividade Problema = Se medida > tolerancia Emprego do Esforço na Macro-atividade Problema = Se não Problema na "Precisão do Esforçopor Macro-atividade Figura 7 Estrutura de decisão para o objetivo 1 com a representação do primeiro nó terminal. Este procedimento foi repetido para a Precisão do Esforço por Macro-Atividade e seus sub-objetivos até que não existissem mais nós passíveis de serem expandidos, ou que não fosse interessante sua expansão no nível em que se encontram os trabalhos. A estrutura final pode ser vista na figura 8. 12
Como pode ser visto no exemplo abaixo, a resposta do sistema é dada em uma forma de 13 Avaliação de Processos de Software Baseada em Medições somente após o término de todas as atividades do projeto, será possível a análise do processo utilizado, pois somente neste momento todos os dados referentes às métricas estarão coletados e disponíveis para o sistema baseado em conhecimento. Figura 10 Planilha de Atividades parcialmente preenchida.
21/06/116. Conclusão Davy Baía LES/PUC-Rio 14 Avaliação de Processos de Software Baseada em Medições os dados referentes ao uso do processo e ao seu próprio desempenho, aumentou o conhecimento da equipe de desenvolvimento a respeito de suas capacidades e limitações fazendo com que o processo de coleta de métricas se torne por si só a primeira forma de melhoria do processo de software da empresa. Figura 11: Resposta final do sistema baseado em conhecimento gerada para a avaliação do processo segundo o primeiro objetivo definido nesta abordagem.
Estado da Arte Bugs/Cvs [Zimmermann et al. 05] 15
Estado da Arte Usando Imports no Eclipse para prever Bugs 71% dos arquivos que importar pacotes Compiler, tinha que ser corrigido mais tarde. import org.eclipse.jdt.internal.compiler.lookup.*; import org.eclipse.jdt.internal.compiler.*; import org.eclipse.jdt.internal.compiler.ast.*; import org.eclipse.jdt.internal.compiler.util.*;... import org.eclipse.pde.core.*; import org.eclipse.jface.wizard.*; import org.eclipse.ui.*; 14% de todos os arquivos que importar pacotes ui, tinha que ser corrigido mais tarde. [Schröter et al. 06] 16
Estado da Arte Mineração de texto/lista de discursões Taxa de imigração de Desenvolvedores Quando é que um desenvolvedor deve ser convidado para participar de um projeto? Especialização x Interesse [Bird et al. 07] 17
Estado da Arte DATA MINING FOR SOFTWARE ENGINEERING Tao Xie and Suresh Thummalapenta, North Carolina State University David Lo, Singapore Management University Chao Liu, Microsoft Research Journal: Computer 2009 Descobrir informações através da aplicação de mineração de dados; As informações são extraídas através de regras de classificação, associação e agrupamento (clustering). 18
Associação 999 de 1000 spin_lock vezes é seguido por spin_unlock A única vez que spin_unlock não segue, provavelmente, pode ser um erro Podemos detectar um erro sem saber as regras de correção [Li&Zhou 05, Livshits&Zimmermann 05, Yang et al. 06] 19
Classificação Training Data Classification Algorithms Name Rank Years Senior Mike 1 3 No Mary 1 7 No Bill 2 2 No Jim 3 7 Yes Dave 2 6 Yes Anne 1 3 No Classifier (Model) IF rank > 1 OR years > 3 THEN tenured = yes 20
Aplicação Classifier Testing Data Name Rank Years Senior Tom 1 2 No Merlisa 2 7 Yes George 2 5 Yes Joseph 1 7 No Unseen Data (Jeff, 2, 4) Sênior? 21
Clustering Entendendo o código fonte Usa Latent Semantic Analysis (LSApara encontrar semelhanças entre os sistemas de software identificadores de uso (por exemplo, nomes de variáveis, nomes de funções) como recursos gtk_window código fonte próxima "gtk_window" contém alguma operação GUI na janela Extraindo categorias usando identificadores freqüentes gtk_window, gtk_main, e gpointer à GTK uso LSA encontrar relações entre os identificadores [Kawaguchi et al. 04] 21/06/11 DAVY BAÍA LES/PUC-Rio LDS-UFAL 22
Outras técnicas de mineração Automaton/grammar/regular expression learning Searching/matching Concept analysis Template-based analysis Abstraction-based analysis http://ase.csc.ncsu.edu/dmse/miningalgs.html 23
Discussão Com uma base única podemos analisar todas as possíveis causas de um problema com precisão e auxiliar em estimativas futuras de projetos através de experiências anteriores; Essas técnicas de mineração de dados fornecem um poder de novas pesquisas e manipulação de um volume grande de dados existentes, podendo gerar diagnósticos mais precisos; 21/06/11 DAVY BAÍA LES/PUC-Rio LDS-UFAL 24
Trabalho realizado/andamento Estudar as ferramentas do processo de desenvolvimento Aplicar de técnicas de mineração de dados Descobri informação Gerar relatório RTC FP RQM RRC. 25
Perguntas? 26