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.