Skip to content

Why is software architecture important?

Principle · Chapter 1

  • Architecture is the foundation of a system; like any engineering, the foundation shapes the quality of everything built on it — and its long-term maintenance.
  • It is a series of decisions; the earliest ones carry the most weight because they constrain every decision that follows.
  • Every system has an architecture, even one with a single element and no formal design or documentation. The larger and more complex the system, the more a deliberate architecture matters for success.
BenefitWhat it gives you
Meets requirementsDefines a solution for functional, non-functional, technical, and operational requirements, identified with stakeholders (domain experts, BAs, product owners, end users).
Enables/inhibits quality attributesA design can favor some quality attributes at the cost of others; done well it hits agreed, validated targets.
Predicts system qualitiesDeciding by quality attributes early lets you model and predict qualities up front, avoiding costly late rework.
Eases stakeholder communicationProvides a common language and artifacts so diverse stakeholders can reason about the system and negotiate cost/duration.
Manages changeLets you understand the cost of a change and, when good, keeps most changes local to one or a few elements.
Provides a reusable modelA proven architecture — not just its code — becomes an organizational asset, reusable across a product line.
Imposes implementation constraintsRestricts design choices, reducing complexity and preventing incorrect implementations.
Improves cost/effort estimatesDrives work-breakdown; reduced complexity yields more accurate estimates.
Trains team membersDocumentation onboards new developers and supports the long, costly maintenance phase.
  • Quality attributes are measurable, testable, non-functional properties (maintainability, interoperability, security, performance). Features are the functional counterpart. Attributes can conflict, so architecture is about trade-offs.
  • Predicting qualities: think about attributes as early as possible — fixing them after implementation and testing is far more expensive.
  • Reuse: reusing an architecture reuses the early decisions and the effort behind them (especially non-functional requirements), plus already-tested, higher-quality code — saving time and money.
  • Estimation: architects assist project management with task breakdown. Two estimation approaches — top-down (start from deliverables/goals, decompose) and bottom-up (start from tasks, group them) — are strongest combined, via consensus among architect, PM, and developers. See Top-down versus bottom-up design approaches.
  • Echoing Fred Brooks’ No Silver Bullet (The Mythical Man-Month): no single technique yields an order-of-magnitude improvement on its own.
  • Architecture is likewise no magic solution. It is fundamentally about compromises between conflicting requirements; every approach has pros and cons to weigh. No approach is a silver bullet.
  • Software Architect’s Handbook (Packt, 2018), Ch.1 “Why is software architecture important?”, pp. 59-70.