04.2 · Capability in Engineering

Software architecture

The large-scale structure of a system and the tradeoffs behind it. Good architecture keeps future changes cheap.

Map6 skills
04.2.1Modularity04.2.2Separation ofconcerns04.2.3System boundaries04.2.4Coupling andcohesion04.2.5Scalability04.2.6TechnicaltradeoffsSoftware development04.2 Software architectureData engineeringPerformance engineeringSecurity and privacy engineeringExplore ↗
Not startedLearningComfortable
6 skillsClick a hexagon to set your status
  • 04.2.1ModularityDividing a system into parts with clear responsibilities.
  • 04.2.2Separation of concernsKeeping different responsibilities in different places in the code.
  • 04.2.3System boundariesDeciding where one component or service ends and another begins.
  • 04.2.4Coupling and cohesionHow much parts depend on each other, and how well each part holds together.
  • 04.2.5ScalabilityHandling more users, data or load without a rewrite.
  • 04.2.6Technical tradeoffsWeighing speed, cost, quality and flexibility in technical decisions.
Mark all 6

Where to start

3 resources
  • articleStart here
    Monolith first ↗
    Martin Fowler · 2015 · 6 min

    Why most successful systems start as one well-structured application and split only when boundaries are clear.

  • articleStart here
    Documenting architecture decisions ↗
    Michael Nygard · 2011 · 6 min

    The original proposal for short architecture decision records, so trade-offs stay visible later.

  • courseGo deeper
    The system design primer ↗
    Donne Martin · free guide

    A broad, free tour of scaling techniques: caching, replication, queues, load balancing and their trade-offs.

Tools

0 tools

Tools for this topic are being researched.

Also in Engineering

04