Summary
Following are key takeaways from this chapter:
Software architecture is a plan to build a software system.
The overarching goal of creating a software system (hence, for software architecture) is to meet quality standards and ones that are more economical in the long run.
Although there are essential tactics (e.g., making code easy to change, avoiding lock-in), we should evaluate each of those tactics not as something that stands alone but as something that is a part of the whole. For example, sometimes, it might make sense to accept lock-in and go to the cloud if in the long run it is cheaper to rewrite the system than switching to a new cloud provider.
The best design depends on the context. Hence, it is a matter of judgment.
We discussed five questions and seven principles that can help us make the right judgment calls when designing and implementing software systems. We saw those questions and principles in action by way of an example.