A good architecture provides many advantages:
- Better utilization of workforce — Efficiency
- Maintainable system — Flexibility
- Documented system — Knowledge
- Less bugs — Trust
Architecture is hard work, but it returns dividends.
What should be required from a software architecture?
The architecture must be documented to a level where a domain knowledgeable person, from the architectural documents alone, is able to understand the requirements to the system and how these are to be realized both structurally and dynamically.
The architecture must document:
- Which constraints and goals are in play.
- Requirements to the system.
- External structure — Which external entities the system must interact with.
- External dynamics — How it communicates with external entities.
- Internal structure — How the system is structured.
- Internal dynamics — How the system behaves internally.
Good design adds value faster than it adds cost.— Thoma C. Gale
A good software architecture is not only technically satisfying, it is also economically sound.
A reasonable investment in software architecture pays. But how much should be invested? That depends primarily on project size, project complexity, quality requirements and organizational set-up.
The following diagram is a guideline for optimal architecture investment.
Too little architectural work will result in immense amount of rework, even to the extend of project cancellation. Excessive architecture work do decrease the amount of rework needed, but for most projects this might not be efficient.
The right amount of architecture work is essential for optimal Return On Investment.