What is design?
A system’s design shapes things more at the code level – the way each component works, the purpose of each element, and concerns of this kind.
A solid system design helps the development team be more efficient and organized in understanding the responsibilities of functions, modules, and classes and what they can or can’t do. All of this is made possible by identifying the design of a system to later decide which design patterns we should use in specific contexts.
Extending the discussion about design and architecture, Grady Booch nicely discusses how architecture represents the significant design decisions that shape a system, where the cost of the changes necessary correspond to the significance of these decisions.
Significant decisions are architecture, and the rest is design. Later on, we will go a bit deeper into the decision-making subject. Still, before we get there, we can summarize that software architecture is focused on...