Uma Abordagem Automatizada para Detecção e Análise de Degradações Arquiteturais baseada em Análise de Código e Mineração de Repositórios de Software
arquitetura de software, avaliação de arquiteturas de software, atributos de qualidade, degradação arquitetural, análise de código, mineração de repositórios de software
Métodos tradicionais baseados em cenários para avaliação arquitetural de atributos de qualidade são usualmente aplicados quando a arquitetura de software está em desenvolvimento, mas antes que a implementação do sistema tenha iniciado. Isso torna difícil automatizar esse processo ou mesmo executá-lo repetidamente para diferentes evoluções do sistema, pois a execução manual de tais métodos tem um tempo e custo associado. Além disso ao longo da sua evolução, a documentação da arquitetura de sistemas de software não fica alinhada com a sua implementação. Este trabalho propõe uma abordagem automatizada para a avaliação arquitetural de atributos de qualidade, guiada por cenários de casos de uso, para a evolução de sistemas de software quando sua implementação está disponível. A abordagem integra o uso de técnicas de análise estática e dinâmica de código com mineração de repositórios de software. O principal objetivo é permitir a avaliação contínua de atributos de qualidade de sistemas de software durante sua implementação e evolução. A análise automatizada da abordagem permite: (i) detectar degradações arquiteturais de cenários relevantes considerando atributos de qualidade e os artefatos de código responsáveis por elas; (ii) determinar possíveis pontos de conflito entre atributos de qualidade para cenários relevantes; (iii) rastrear a forma como cenários, atributos de qualidade e artefatos de código se relacionam; e (iv) descobrir através de mineração em repositórios de código que alterações foram responsáveis por introduzir mudanças em artefatos de código que sofreram degradação arquitetural. A abordagem vem sendo implementada através de uma ferramenta que permite a análise de sistemas implementados na linguagem Java. Estudos empíricos preliminares realizados em um sistema web de larga-escala demonstram a viabilidade da abordagem.