Software Architecture for Developers

Chapter 3 | Designing software

Software architecture doesn't exist in a vacuum and is driven by the functional requirements, the non-functional requirements, constraints and principles. We take a look at all of them to understand the impact that they have and the trade-offs that need to be made when defining architectures.


Understand the architectural drivers

Understand the drivers to reduce the number of available design options


Ballpark estimates

A couple of days upfront can really make a big difference to the big picture


Essential kit for designing software

Cheap, simple and collaborative


Collaborative design

Everybody's different ideas need to meet


Structure and guidelines, consistency and clarity

Start by decomposing the big picture


More layers = more complexity

Nothing is ever free