SOFTWARE – PRACTICE AND EXPERIENCE Softw. Pract. Exper. 2013; 43:305–332 Published online 26 February 2012 in Wiley Online Library (wileyonlinelibrary.com). DOI: 10.1002/spe.2113 Mastering crosscutting architectural decisions with aspects Claudio Sant’Anna 1, * ,† , Alessandro Garcia 2 , Thais Batista 3 and Awais Rashid 4 1 Federal University of Bahia, Computer Science Department, Brazil 2 Pontifical Catholic University of Rio Janeiro, Informatics Department, Brazil 3 Federal University of Rio Grande do Norte, Computer Science Department, Brazil 4 Lancaster University, Computing Department – InfoLab21, UK SUMMARY When reflecting upon driving system requirements such as security and availability, software architects often face decisions that have a broadly scoped impact on the software architecture. These decisions are the core of the architecting process because they typically have implications intertwined in a multitude of architectural elements and across multiple views. Without a modular representation and management of those crucial choices, architects cannot properly communicate, assess and reason about their crosscutting effects. The result is a number of architectural breakdowns, such as misinformed architectural evaluation, time-consuming trade-off analysis and unmanageable traceability. This paper presents an architectural documentation approach in which aspects are exploited as a natural way to capture widely-scoped design decisions in a modular fashion. The approach consists of a simple high-level notation to describe crosscut- ting decisions, and a supplementary language that allows architects to formally define how such architectural decisions affect the final architectural decomposition according to different views. On the basis of two case studies, we have systematically assessed to what extent our approach: (i) supports the description of heterogeneous forms of crosscutting architecture decisions, (ii) improves the support for architecture modularity analysis, and (iii) enhances upstream and downstream traceability of crosscutting architectural decisions. Copyright © 2012 John Wiley & Sons, Ltd. Received 19 February 2011; Revised 6 January 2012; Accepted 10 January 2012 KEY WORDS: architectural decisions; modularity; aspect-oriented software development; early aspects 1. INTRODUCTION Explicit representations of software architectures and associated design decisions are fundamental to tame the growing complexity of software systems [1,2]. Architects strive to develop evolvable and reusable architectural decisions especially for systems in volatile business domains such as banking, telecommunications and mobile applications. To be reusable and evolvable, the specifi- cation of architecturally relevant design choices must be modular. This serves a twofold purpose. If the specification of architectural decisions is modular one can reason in isolation about their rationale and implications to the final design decomposition. This is termed modular reasoning [3] about architectural decisions. At the same time, the various choices need to relate to each other in a systematic and coherent fashion to realize the intended architecture. Effective representation and specification of such relationships makes it possible to reason about the multiple architectural decisions as a whole — using the modular reasoning outcomes as a basis. We refer to this global reasoning as compositional reasoning [4] about architecturally-relevant choices. *Correspondence to: Claudio Sant’Anna, Computer Science Department, Federal University of Bahia, Brazil. E-mail: santanna@dcc.ufba.br Copyright © 2012 John Wiley & Sons, Ltd.