Evaluation of code-based information to architectural module identification

Detalhes bibliográficos
Ano de defesa: 2014
Autor(a) principal: Zapalowski, Vanius
Orientador(a): Nunes, Daltro Jose
Banca de defesa: Não Informado pela instituição
Tipo de documento: Dissertação
Tipo de acesso: Acesso aberto
Idioma: eng
Instituição de defesa: Não Informado pela instituição
Programa de Pós-Graduação: Não Informado pela instituição
Departamento: Não Informado pela instituição
País: Não Informado pela instituição
Palavras-chave em Português:
Palavras-chave em Inglês:
Link de acesso: http://hdl.handle.net/10183/94691
Resumo: Arquitetura de software desempenha um importante papel no desenvolvimento de software, quando explicitamente documentada, ela melhora o entendimento sobre o sistema implementado e torna possível entender a forma com que requisitos não funcionais são tratados. Apesar da relevância da arquitetura de software, muitos sistemas não possuem uma arquitetura documentada, e nos casos em que a arquitetura existe, ela pode estar desatualizada por causa da evolução descontrolada do software. O processo de recuperação de arquitetura de um sistema depende principalmente do conhecimento que as pessoas envolvidas com o software tem. Isso acontece porque a recuperação de arquitetura é uma tarefa que demanda muita investigação manual do código fonte. Pesquisas sobre recuperação de arquitetura objetivam auxiliar esse processo. A maioria dos métodos de recuperação existentes são baseados em dependência entre elementos da arquitetura, padrões arquiteturais ou similaridade semântica do código fonte. Embora as abordagem atuais ajudem na identi cação de módulos arquiteturais, os resultados devem ser melhorados de forma signi cativa para serem considerados con áveis. Então, nesta dissertação, objetivamos melhorar o suporte a recuperação de arquitetura explorando diferentes fontes de informação e técnicas de aprendizado de máquina. Nosso trabalho consiste de uma análise, considerando cinco estudo de casos, da utilidade de usar um conjunto de características de código (features, no contexto de aprendizado de máquina) para agrupar elementos em módulos da arquitetura. Atualmente não são conhecidas as características que afetam a identificação de papéis na arquitetura de software. Por isso, nós avaliamos a relação entre diferentes conjuntos de características e a acurácia obtida por um algoritmo não supervisionado na identificação de módulos da arquitetura. Consequentemente, nós entendemos quais dessas características revelam informação sobre a organização de papéis do código fonte. Nossa abordagem usando características de elementos de software atingiu uma acurácia média significativa. Indicando a relevância das informações selecionadas para recuperar a arquitetura. Além disso, nós desenvolvemos uma ferramenta para auxílio ao processo de recuperação de arquitetura de software. Nossa ferramenta tem como principais funções a avaliação da recuperação de arquitetura e apresentação de diferentes visualizações arquiteturais. Para isso, apresentamos comparações entre a arquitetura concreta e a arquitetura sugerida.