Toward a Classification Framework for Software Architectural Smells


Architectural decay is a commonly occurring phenomenon in long-lived software systems. During a system’s lifetime, its architecture gradually degrades via the appearance of architectural “bad smells”, which are instances of poorly thoughtthrough design decisions. To date, there has been limited in-depth study of this phenomenon, its root causes, its characteristics, or the trends it may follow. Instead, both researchers and practitioners have relied on folklore, and their own intuitions and experiences, when referring to architectural smells and their negative impact on software systems. Two key reasons for the absence of large-scale studies of architectural smells are the lack of a systematic categorization of smells and further the absence of algorithms for automatically detecting smells. In this paper, we propose a framework (1) to classify architectural smells based on their characteristics and (2) to detect the smells based on their symptoms. The categorization includes five different classes of smells, of which we focus on four that can be readily detected with the help of existing architecture recovery and analysis techniques. We illustrate the framework with 11 distinct architectural smells across the four categories. We formally define each smell, present a detection algorithm for it, and illustrate it with an example from real systems.

Technical Report at USC Center for Systems and Software Engineering