Detecção de Violações Arquiteturais usando Histórico de Versões

  • Cristiano Amaral Maffort CEFET / UFMG
  • Marco Tulio Valente UFMG
  • Mariza A. S. Bigonha UFMG

Resumo


Este artigo descreve uma metodologia para detecção de violações arquiteturais em um dado produto de software. O objetivo principal é coletar informações históricas sobre como as relações de dependência entre classes que compõem o sistema se comportam no decorrer do tempo de modo a identificar padrões de uso e desuso nessas relações para, então, detectar violações arquiteturais presentes no código-fonte do sistema. O artigo apresenta também resultados da aplicação da metodologia proposta em um sistema de gestão de uma instituição de ensino superior, composto por 1852 classes e interfaces, o qual é mantido em um repositório de controle de versões contendo 4923 versões. Como resultado, a metodologia proposta detectou 92% das divergências arquiteturais existentes nesse sistema (recall), com uma precisão de cerca de 67%.
Palavras-chave: Detecção, Violações Arquiteturais, Histórico de Versões

Referências

Leonardo Passos, Ricardo Terra, Marco Tulio Valente, Renato Diniz, and Nabor Mendonca. Static architecture-conformance checking: An illustrative overview. IEEE Software, 27:82–89, 2010.

Dewayne E. Perry and Alexander L. Wolf. Foundations for the study of software architecture. SIGSOFT Software Engineering Notes, 17:40–52, 1992.

Jens Knodel and Daniel Popescu. A comparison of static architecture compliance checking approaches. In 6th Working IEEE/IFIP Conference on Software Architecture, 07, pages 12–, 2007.

Santonu Sarkar, Girish Maskeri, and Shubha Ramachandran. Discovery of architectural layers and measurement of layering violations in source code. Journal of Systems and Software, 82:1891–1905, 2009.

Ricardo Terra and Marco Tulio Valente. A dependency constraint language to manage object-oriented software architectures. Software Practice and Experience, 39:1073–1094, 2009.

Gail C. Murphy, David Notkin, and Kevin J. Sullivan. Software reflexion models: Bridging the gap between design and implementation. IEEE Transactions on Software Engineering, 27:364–380, 2001.

Zhenmin Li and Yuanyuan Zhou. PR-Miner: automatically extracting implicit programming rules and detecting violations in large software code. In 13th ACM SIGSOFT International Symposium on Foundations of Software Engineering, pages 306–315, 2005.

Yana Momchilova Mileva, Andrzej Wasylkowski, and Andreas Zeller. Mining evolution of object usage. In 25th European Conference on Object-oriented Programming, pages 105–129, 2011.
Publicado
11/07/2012
MAFFORT, Cristiano Amaral; VALENTE, Marco Tulio; BIGONHA, Mariza A. S.. Detecção de Violações Arquiteturais usando Histórico de Versões. In: SIMPÓSIO BRASILEIRO DE QUALIDADE DE SOFTWARE (SBQS), 11. , 2012, Fortaleza. Anais [...]. Porto Alegre: Sociedade Brasileira de Computação, 2012 . p. 98-112. DOI: https://doi.org/10.5753/sbqs.2012.15310.