Software Architecture

High Level overview of how system components & interactions between them:

  • Components units of software system eg. frontend, backend
  • Interactions communication between components eg. API call.

Software Architecture Motivation

Software Architecture / System Design is needed for:

  • Non Functional Requirements must be implemented in System Design.
  • Larger Software Lowering complexity in larger software systems by organising components.
  • Costs & Schedule Correcting bad System Design gets progressively more costly as development progresses and might delay timely software release.

Software Architecture Diagram

Kroki

  • Hierarchical child components (eg. UI) are nested with parent components (eg. Frontend)
  • Abstract obmits unnecessary details.
  • Purposeful focused on structure & interactions of components.

Software Architecture Style

Pattern (well known solution) of organising components in Software Architecture Designk

Layered Architecture

Kroki

Software Architecture Style that groups components into layers

  • Upper -> Lower Upper layers can call lower layers, but not the other way around.
  • Pros
    • Code Reuse for components in lower layers.
    • Extensibility for components in upper layers.
  • Cons
    • Performance overhead.
    • Hard to Design which layer a component should belong to could be unclear.