Detecting Architectural Violations using Version History
Abstract
This paper proposes an approach to detect architectural violations in object-oriented software products. Basically, the proposed approach collects historical information on the inter-class dependency relations of an existing system in order to identify usage and disuse patterns that can suggest the existence of architectural violations in the source code. To evaluate the proposed approach, the paper also presents results of its application in the main administrative information system of a university, with 1852 classes and interfaces. For this purpose, we have collected information on 4923 revisions stored in this system version control platform. As a result, the proposed approach detected 92% of the existing architectural divergences (recall), with a precision of 67%.
Keywords:
Detection, Architectural Violations, Version History
References
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.
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.
Published
2012-07-11
How to Cite
MAFFORT, Cristiano Amaral; VALENTE, Marco Tulio; BIGONHA, Mariza A. S..
Detecting Architectural Violations using Version History. In: BRAZILIAN SOFTWARE QUALITY SYMPOSIUM (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.
