Understanding Software Architecture
Every system has an architecture — some high-level structure that underlies the whole system. Software architecture is how the pieces fit together to build the solution to some business or technical need that your customer or client wants solved. The architecture has a purpose.
The decisions made during the creation of the architecture are truly fundamental to the system because they set the stage for all the other decisions that will come later.
Some systems' architectures are best described as a Big Ball of Mud (see Chapter 2). These systems are hard to build and hard to maintain, and they may not meet the customer's needs. Tackling the development of a software system with good software architecture will lead to a more successful result.
To an unsophisticated customer or client, software architecture is a meaningless term, so don't get hung up trying to explain how wonderful your architecture is. The customer wants the finished product that solves the problem at hand, not a description of the software that you'll build to solve it. (For more information on explaining software architecture to others, see Chapter 3.)
Components of software architecture
The software architecture provides the high-level view of the system you're building and must cover the following aspects:
- Goals and philosophy of the system: The architecture explains the goals ...