Let’s start with an analogy. Think of the many vintage barns around a typical Northeast state. The construction of the barns that last began with a good foundation. These foundations were made of stones and the cement of the day.
On top of this great foundation was built a big structure with many beams.
For our analogy, the foundation will be Software Architecture. The barn proper is the Software Design and implementation that is built on top.
When a software system is at its beginning, usually an individual or small group defined the architecture and held the design fully in their minds. The scope may have been written down in part by Software Requirements Documents or even a “How To”. But it is more common that the ideas, decisions and “blueprint” are not documented. The only artifact is the software.
As a software system lives on, the original designers and implementers most often move on too. New engineers are brought in to fix bugs, add small features and otherwise maintain the software system.
It is not uncommon that those new engineers do not know what the architecture is. Some are talented at finding/fixing defects and copying software style/idioms as they “enhance” the software system. But in the heat of the battle to get an issue addressed, changes get incorporated that are not consistent with the original architecture. This effect might be called “architectural degradation”.
With our analogy, “architectural degradation” is like the foundation of the barn deteriorating. Through neglect or bad repairs, the foundation holding up the large structure (our now large base of software) is becoming weaker.
The proper way to approach a software system when changes are needed is to first understand by exploring, via any existing documentation, the architecture of the software. Exploration may also require looking at the existing code, running with debug logging turned on, or adding debugging to illuminate the architecture.
It is a good use of engineering mental effort to find and document the architecture. This exploration may even expose where previous changes were not consistent with the original architecture.
Before we add more stories or “hay” to the barn loft, let’s make sure the foundation is solid.