Skip to content

Latest commit

 

History

History
27 lines (17 loc) · 1.29 KB

principles.md

File metadata and controls

27 lines (17 loc) · 1.29 KB

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:

  • 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

Behaviours