An Approach to Discovering Architectural Patterns in Software by Joeri Peters A master thesis in fulfilment of the thesis requirement for the degree of Master of Science in Business Informatics Utrecht University 15th February 2016 Joeri Peters, BSc. Student number: 3484998
[email protected] [email protected] [email protected] Supervisor: dr.ir. Jan Martijn van der Werf Information & Organisation group 2nd Supervisor: dr. Jurriaan Hage Software Technology group Software Systems Division Department of Information and Computing Sciences Faculty of Science Utrecht University Images: http://www.gobex.es/comunicacion/noticia?idPub=7248#.Vq97NtCaTa8 & http://www.evident.nl/ portfolio/klanten/~/media/Images/Evident/Portfolio/Cases/Klantlogo/news 1 1288775788.ashx. Abstract In this master thesis, an approach to discovering architectural patterns within static modular architectures based on software dependencies is developed and investigated. Architectural pat- terns represent reusable design of software architecture at a high level of abstraction. They can be used to structure new applications and to recover the modular structure of existing systems. Techniques like Architecture Compliance Checking (ACC) focus on testing whether the realised artefacts adhere to the architecture. Typically, these techniques require a complete architecture as input. In this thesis, we focus on defining architectural patterns in such a way that we can use ACC tools to recognise architectural pattern instances and on algorithms by which to discover them, for the purposes of Software Architecture Reconstruction (SAR). The central problem is that it is difficult to distinguish a possible instance of an architectural pattern from a genuine instance. Addressing this requires us to explicitly define architectural patterns in terms of allowed and disallowed software dependencies.