Software Architecture basics

 

Software 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