architecture-handbook

The Big List of Principles

Software Design

Designing Components so they are stable

Balancing cohesion and coupling

Set Boundaries between software elements

Boundaries separate things that matter from things that don’t, i.e. high-level components from low-level components

Separate layers and organise them using the dependency rule

Outer layers should depend on inner layers (at the source-level), and not vice versa.

Don’t add complexity where it is not needed

For example:

Behaviours