The importance of software architecture design
Concept · Chapter 5
Why design deliberately
Section titled “Why design deliberately”The architecture is the foundation a system rests on; a sound design determines whether requirements and quality attributes can actually be met. Five reasons make design worth the effort:
1. Key decisions get made here
Section titled “1. Key decisions get made here”- Design is when the choices that decide whether requirements (including quality attributes) can be satisfied are locked in.
- Architecture enables or inhibits quality attributes, so these decisions carry a lot of weight.
- The earliest, most consequential decisions happen now — and changing them before any code exists is far cheaper than changing them later.
2. Skipping decisions incurs technical debt
Section titled “2. Skipping decisions incurs technical debt”- Technical debt is like financial debt: delaying, avoiding, or knowingly taking a shortcut on a design decision creates extra work you must pay for later.
- Debt is not always bad — sometimes you deliberately take the quicker route to seize a market opportunity, planning to pay it back later.
- Debt is hard to measure precisely. Beyond the future rework, a sub-optimal design lowers modifiability and extensibility, hindering the team’s ability to deliver — an added cost to fold into the debt.
3. It communicates the architecture
Section titled “3. It communicates the architecture”- Design outputs let you convey the architecture to the many people interested in it.
- It also sharpens cost and effort estimates (it reveals what implementation tasks are needed), helping project managers plan and supporting project proposals.
4. It guides developers
Section titled “4. It guides developers”- The design steers implementation choices and imposes constraints, reducing the chance of wrong implementation decisions.
- It doubles as training/onboarding: developers (including new joiners) must understand the design decisions and structures before building detailed component designs.
5. It influences non-technical parts of the project
Section titled “5. It influences non-technical parts of the project”- Design decisions ripple beyond code — affecting tool/license purchasing, hiring, how the dev environment is organized, and eventual deployment.
Related concepts
Section titled “Related concepts”- Software architecture design
- Software risk management
- Maintainability
- Documenting the software architecture design
Citations
Section titled “Citations”- Software Architect’s Handbook (Packt, 2018), Ch.5 “The importance of software architecture design”, pp. 273-278.