Software Architecture basics
3Software architecture main requirements:
- User requirements
- Business requirements
- IT System requirements
Software architecture key principles:
- minimize complexity
- separation of concerns
- single responsibility principle
- principle of least knowledge
- don't repeat yourself
- minimize upfront design
General guidelines:
- no duplicate functionality
- consistent patterns in your layers
- composition over inheritance
- use code conventions
Layer guidelines
- separate areas of concern
- clearly define communication between layers
- use abstraction to loosely couple layers
- don't mix different types of components in a layer
- use consistent data formatting within layers
Component guidelines
- No component should rely on the internals of another
- Do not mix roles in a single components
- Define clear contracts for components
- Abstract system wide components away from other layers