Drift and Erosion in Software Architecture
Erik Whiting, Sharon Andrews
Abstract
Disciplined practice of software architecture, and the broader encompassing discipline of software design, is fundamental to a project's success in every stage of the software life cycle. Choosing and implementing an appropriate architecture maximizes team velocity by structuring a project to meet business needs and adhere to quality standards. One enemy of good architecture is architecture drift, where software systems implement an architecture that is not specified. Even worse, architecture erosion threatens projects in the form of design decisions that violate prescriptive architecture as well as quality attributes. In this paper, we will discuss the importance of a reliable architecture, the symptoms of architecture drift and erosion, and some of the existing tools and methods used to combat them.