Balancing cohesion and coupling
Boundaries separate things that matter from things that don’t, i.e. high-level components from low-level components
Outer layers should depend on inner layers (at the source-level), and not vice versa.
For example:
- Most services we build are simple forms
- We should avoid Business Logic in the User Interface. If the project requires it, we should include an Architecture Decision Record explaining why
- Avoid using JavaScript in the User Interface in the project. The project should include an Architecture Decision Record explaining why. Even if the project uses standard GOV.uk/local authorities' approved components