I am using Wardley Maps as a tool for strategic software architecture management and I’d like to share some thoughts on this with you.
In 1994 David Parnas introduced the concept of “software aging” where “Lack of Movement” is identified as a major cause for aging. Software aging is pretty much what happens when the Red Queen kicks in: Everything around us is moving, and a once perfectly fine piece of software that was left untouched may not even be executable anymore. Though, even when the code is left unchanged, everything else surrounding it evolved. The system landscape is not the same as before, infrastructure changed, etc. so the software is incompatible with todays runtime environment.
The “Lack of Movement” that Parnas described means architectural erosion, which translates to de-evolution of a component on the map.
I was thinking about that for quite some time and asked myself if this means that there has to be an own type of evolution for architectural components so that different concepts (like de-evolution) may be applied. In the meantime, I no longer consider this necessary, as the reason for a changing environment is still competition in the market. The software component itself may be completely independent from market pressure, but vendors, suppliers and framework providers are not.
Long story short:
- A paper written in 1994 identified “Lack of Movement” as a major threat to software quality
- The concept is closeley related to the “Red Queen Hypothesis”, something we can map very well today
- Placing software components on a map forces us to think about their movement relative to the anchor
- Since everything else may be moving pretty fast (typical for IT/software development?) some components will fall behind (architectural drift/erosion) and thus de-evolve.
I found it very useful to add quality attributes (like maintainability) to the map, either as a Need of the customer or as a component of the type Practice. This is very helpful inmapping the results of qualitative assessments.
Any thoughts on that? I’d love to get some feedback on this.