Análise de Evolução de software para recuperação da rastreabilidade entre documentação e código fonte baseada em modelos de características Aluno: Allysson Costa e Silva Orientador: Marcelo de Almeida Maia Linha de Pesquisa: Engenharia de Software Contextualização Manutenção de software Funcionalidades do sistema de software com defeitos Funcionalidades a serem adicionadas/alteradas Espalhamento da implementação A implementação das funcionalidades perpassam vários componentes do sistema como métodos, classes e pacotes Necessidade de compreensão da implementação Novos desenvolvedores Código antigo(legado) Compreensão dos pontos alterados entre diferentes versões do sistema Caracterização do problema Rastreabilidade entre documentação e código fonte não documentada Dificuldade de focalização em partes específicas do código fonte durante a manutenção Distância sintática e semântica entre os vocabulários presentes no código fonte e documentação Fundamentos teóricos Características (features) Funcionalidades presentes no software que podem ser observadas e controladas em tempo de execução pelos usuários finais Comunicação entre usuários e desenvolvedores em razão das funcionalidades do sistema Uma importante ferramenta para modelagem de conceitos do domínio do problema e para a engenharia reversa LSI (Latent Semantic Indexing) Técnica para Recuperação de Informação Espaço vetorial semântico Medir a similaridade entre termos e documentos Objetivos do trabalho Recuperar a rastreabilidade entre código fonte e documentação com foco nas partes alteradas entre duas versões do sistema em análise Gerar uma aproximação entres os vocabulários presentes no código fonte e na documentação do sistema MELHORAR A COMPREENSÃO DO SISTEMA Proposta do trabalho Como fazer? Executar uma característica para duas versões A e B do sistema em análise. RÓTULO 1 RÓTULO 2 Rastro de execução de uma característica do sistema em estudo DESENVOLVEDOR RÓTULO 3 ... ... ... ... ... ... SUBCONJUNTOS DE ELEMENTOS DO RASTRO (SUB-RASTRO) RÓTULOS SEMÂNTICOS Na prática… jEdit Funcionalidade relativa a colocar palavras selecionadas em maiúsculo Executando a característica para coleta de rastros RÓTULO1: CLICK ON MENU EDIT RÓTULO2: MOUSE OVER SUBITEM TEXT OF MENU EDIT RÓTULO3: UPPERCASE LOWER CASE ACTION SUBITEM MENU EDIT/TEXT Conjuntos de elementos (métodos) do sub-rastro IDEM… Analisando somente o que sofreu alteração entre duas versões A e B de determinado software… Isolar o que foi alterado no subconjunto do rastro com RÓTULO 1 SUBCONJUNTO DE ELEMENTOS DO RASTRO PARA SUBCONJUNTO DE ELEMENTOS DO RASTRO PARA VERSÃO B VERSÃO A VERIFICAR ALTERAÇÕES Elementos do sub-rastro que representam o código fonte alterado ELEMENTOS DE RASTRO FILTRADOS PARA O SUBRASTRO COM ROTÚLO1 SEPARAR CÓDIGO CÓDIGO FONTE ALTERADO PARA SUB-RASTRO COM RÓTULO 1 Enriquecento o código fonte com elementos semânticos CÓDIGO FONTE ALTERADO COM VALOR SEMÂNTICO AGREGADO PARA SUB-RASTRO COM RÓTULO 1 CÓDIGO FONTE ALTERADO PARA SUB-RASTRO COM RÓTULO 1 ADICIONAR VALOR SEMÂNTICO RÓTULO 2 RÓTULO 1 RÓTULO 3 Processo análogo com os demais sub-rastros CÓDIGO FONTE ALTERADO CÓDIGO FONTE ALTERADO COM VALOR SEMÂNTICO AGREGADO PARA SUB-RASTRO COM RÓTULO 2 PARA SUB-RASTRO COM RÓTULO 2 ADICIONAR VALOR SEMÂNTICO RÓTULO 2 RÓTULO 1 RÓTULO 3 Processo análogo com os demais sub-rastros CÓDIGO FONTE ALTERADO CÓDIGO FONTE ALTERADO COM VALOR SEMÂNTICO AGREGADO PARA SUB-RASTRO COM RÓTULO 1 PARA SUB-RASTRO COM RÓTULO 3 ADICIONAR VALOR SEMÂNTICO RÓTULO 2 RÓTULO 1 RÓTULO 3 Configuração final: código fonte alterado com valor semântico agregado Próximo passo... LSI PARÂMETROS PARA CONSULTA DOCUMENTAÇÃO DO SISTEMA DESENVOLVEDOR CÓDIGO FONTE RETORNADO LSI CÓDIGO FONTE ALTERADO COM VALOR SEMÂNTICO AGREGADO CONSULTA DE INTERESSE ESPAÇO VETORIAL SEMÂNTICO Avaliação da pesquisa LSI CÓDIGO FONTE ALTERADO SEM VALOR SEMÂNTICO AGREGADO CÓDIGO FONTE ALTERADO COM VALOR SEMÂNTICO AGREGADO DESENVOLVEDOR DOCUMENTAÇÃO LSI LSI ESPAÇO VETORIAL SEMÂNTICO CONSULTA ENVOLVENDO ALGUM TERMO DO RÓTULO 1 RESULTADO 1 RESULTADO 2 ESPAÇO VETORIAL SEMÂNTICO Resultados esperados RESULTADO 1 RESULTADO 2 1°.........cod_font1.java 2°.........cod_font4.java 1°.........cod_font4.java 2°.........cod_font2.java 3°.........cod_font9.java 4°.........cod_font1.java ANÁLISE COMPARATIVA MENOS resultados retornados na consulta. X MAIS resultados retornados na consulta. EXEMPLO: SUPONDO QUE cod_font4.java seja mais relevante para a pesquisa. Posição (ranking) com MENOR precisão. X Posição (ranking) com MAIOR precisão. Considerações Finais O estudo de caso utilizará 3 softwares de código aberto que possuam disponíveis: repositório de versões; documentação (notas de versão, relatórios de correção de erros, requisição de mudanças e quaisquer documentações que espelhem mudanças no sistema). Análise dos resultados da consulta LSI a partir de medidas como revocação (recall) e precisão (precision). Sugestões/perguntas ?