The Purpose Of Software Architecture
Has Architecture reached the end of its useful life? Some developers might think so. Our modern languages and frameworks make architecture unnecessary, don’t they? Do we still need Software Architecture?
We’ll answer these questions later on. For now, let’s consider a different one:
What do we want from our software?
The answer, I believe, is two-fold:
- We want our software to work today, and
- We want our software to work in the future.
By work, I mean that the software fulfils its function to the satisfaction of the business stakeholders and the end-users.
Over time, stakeholder requirements change. In turn, developers make modifications to the code. Our software still operating in the future is about code changes.
It appears as if software working beyond today is more important than software working today. It’s great to have software that works today. But today is only one day. We want software that can accommodate our customer’s ever-changing needs for a long time. Given that we must make changes in the source code to provide those changes, do we want to be able to make them with speed, ease and reliability? Alternatively, it can be a slow, painful, and uncertain process. Which do we want? The answer is obvious.
Do we have a discipline that guides developers in creating the former situation rather than the latter? That provides principles to:
- Makes software tolerant to change
- Parts of the system can be unplugged and new implementations plugged in,
- We can quickly and cheaply fulfil our customers changing requirements,
- We generate more reusable code,
- Developers can reason about and understand the system.
Wouldn’t that be great?
We have that discipline – Software Architecture. A good architecture allows for faster, cheaper, more reliable, more reusable, more understandable and safer alterations to a system than a less helpful architecture.
The purpose of Software Architecture is about the capability of systems to be easily and cheaply changeable.
Software Architecture is not only the domain of ‘The Architect’. Developers should know it too.
And, to be clear, great architecture is not achieved with any particular programming language or framework.
Tomorrow I will outline the different layers that feed into Clean Architecture.