Every software system has an architecture. That doesn’t mean you’ll end up with one you want. When you leave design decisions to fate, there is no telling what fate will deliver. Actively making decisions about how to organize the software system significantly increases our chances of getting an architecture that meets our needs.
Designing software architecture is all about making decisions under uncertainty. Design decisions are loaded with trade-offs, decisions that force us to compromise—give up something good to avoid something bad, or accept something bad to get something better. If we make acceptable trade-offs, then we’ll achieve our architecturally significant requirements and help our stakeholders reach their business goals. Yay!
In this chapter, you’ll learn how to choose structures for the architecture by using architecturally significant requirements to drive your decision making.
3.145.55.39