Identifying Architectural Bad Smells

Joshua Garcia, Daniel Popescu, George Edwards, Nenad Medvidovic
2009 2009 13th European Conference on Software Maintenance and Reengineering  
Certain design fragments in software architectures can have a negative impact on system maintainability. Examples of such fragments include applying a design solution in an inappropriate context, mixing design fragments that have undesirable emergent behaviors, and applying design abstractions at the wrong level of granularity. In this paper, we introduce the concept of architectural "bad smells," which are frequently recurring software designs that can have non-obvious and significant
more » ... al effects on system lifecycle properties, such as understandability, testability, extensibility, and reusability. We define architectural smells and differentiate them from related concepts, such as architectural antipatterns and code smells. We also describe in detail a set of four representative architectural smells we encountered in the context of reverse-engineering and re-engineering two large industrial systems and from our search through case studies in research literature. For each of these architectural smells, we provide illustrative examples and demonstrate the impact on system lifecycle properties.
doi:10.1109/csmr.2009.59 dblp:conf/csmr/GarciaPEM09 fatcat:66ixrvg5abgmhinl5qqubwq6fi