|Photo by Kevin Mazur |
What is software architecture?In The Changing Field of Software Architecture authors Rick Kazman, Len Bass, Paul Clements offer this answer, a quote from their book Software Architecture in Practice:
The software architecture of a system is the set of structures needed to reason about the system, which comprise software elements, relations among them, and properties of both.They explain:
This definition stands in contrast to many other definitions that talk about the system's "early" or "major" design decisions. Many architectural decisions are made early, but not all are. Many decisions are made early that are not architectural. And it's hard to look at a decision and tell whether or not it's "major." So we prefer to focus attention on structures, relationship, and properties.
Discussion around that question is as resilient as Keith Richards — and that's a good thing: if people are talking about software architecture, they're thinking about software architecture.
So how do you define software architecture?