← Back to Awesome

Sections

Software Architecture

GitHub repository ↗ synced 2026/8/9

Awesome Software Architecture

awesome-badge

Software architecture aims to describe the high level
structures of software as well as the discipline of creating them. As this topic is pretty broad, it might
contain some resources that are also present in more niche lists.

Principles

Flexibility

Able to adapt to changes in both environment and usability requirements without encompassing structural changes.

SOLID

Lend to developing software with considerations for maintaining and extending as the project grows

Design Patterns

Ports and adapters pattern

Decouple the application core logic from the services it uses.

Observer pattern

One-to-many state change notification.

Design Patterns: Elements of Reusable Object-Oriented Software, by Gamma et al

The one that started it all :orange_book:.

Software Design Patterns: A Guide

Introduction to common software design patterns.

CQRS

Segregate operations that read data from operations that update data by using separate interfaces.

Event Sourcing

Instead of storing just the current state of the data in a domain, use an append-only store to record the full series of actions taken on that data.

Feature Toggles

Feature Toggles (often also refered to as Feature Flags) are a powerful technique, allowing teams to modify system behavior without changing code.

Behavior Driven Development (BDD) and Functional Testing

BDD uses human-readable descriptions of software user requirements as the basis for software tests.

N-tier architecture style

Layers are a way to separate responsibilities and manage dependencies.

Scalability and Resilience

Circuit Breaker

Protecting failing resources to prevent cascading failures.

Bulkhead

Partition resources to isolate failures.

Leader Election

Coordinate distributed workloads by electing a leader.

Methodology

No silver bullet, by Brooks

Making a case for growing software in small increments :orange_book:.

Clean Architecture, by Martin

Key principles and concepts for building sustainable and maintainable software :orange_book:.

Technical Debt, by Fowler

Cost and impact of accumulating technical debt.

The Magic Tricks of Testing, by Metz

Minimalistic ideals as a practical and pragmatic approach to software testing 🎥.

TDD, Where did it all go wrong?, by Cooper

Suggestion on TDD practices and boundaries to reduce coupling 🎥.

Documentation

arc42

Template for documentation and communication of software and system architectures.

Architectural Decision Records

Version and document architectural decisions the same way you do with code.

Documenting architecture

Pragmatic tips on how to effectively document software architecture.

Workshop formats

Event Storming

Format for exploring domain driven-design.

MoSCoW Prioritization

Fast and dead-simple way of prioritizing requirements.

Story mapping

Visualize your requirements by creating story maps.

Impact mapping

A strategic planning technique used for building products and delivering projects.

Business Model Canvas

Business plans made simple and visual.

Business Model Generation, by Osterwalder & Pigneur

Easily visualize your value proposition, costs and revenue streams :orange_book:.

Modeling

The C4 Model

Describe software using Context, Containers, Components and Code.

Wikipedia: Data modeling

Great, short, introduction to data modeling.

Tools

Sparx Systems Enterprise Architect

Object-oriented modelling suite. Only available natively for Windows.

Visual Paradigm

Similar to Enterprise Architect. Available for multiple platforms.

Lucidchart

Paid cloud-based diagram editor. Available on all common platforms.

Draw.io

Free and simple diagram editor. Comparable to Visio and its likes. Available on all common platforms.

Structurizr

Modelling tool based on the C4 Model (see above).

PlantUML

Like markdown for diagrams, PlantUML renders an english-like grammer into diagrams.

PlantUML for Atlassian

Adds support for PlantUML-based diagrams in the atlassian suite.

Sketchboard.io

Collaborative sketchboarding.

ERD Lab

Free cloud based entity relationship diagram (ERD) tool made for developers.

Pumler

Real-time collaborative text-to-diagram editor for PlantUML, Mermaid, and Structurizr (C4), with browser-based PNG/SVG export.

Frameworks

Agile

Scrum

Framework for developing and maintaining complex products.

SAFe

Scalable agile framework.

Nexus

Scalable Scrum according to Ken Schwaber, co-creator of Scrum.

The death of Agile, by Allen Holub

How "Agile" has moved away from the basic principles of agility, and what we need to do to fix things 🎥.

Agile Architecture Pt. 1, by Allen Holub

How do we work with architecture in a agile world 🎥.

Agile Architecture Pt. 2, by Allen Holub

How do we work with architecture in a agile world 🎥.

Lean software development

Wikipedia: Lean Software Development

Translation of lean manufacturing for the software development domain.

Rolling rocks downhill, by Clarke Ching

Business novel about agile and lean software development :orange_book:.

The Goal: A Process of Ongoing Improvement, by Goldratt

Business novel about contiuous improvements in a manufacturing setting. Easily adaptable to software development as well :orange_book:.

Extreme programming

Extreme Programming

The most specific of the popular agile processes, focusing on engineering and development practices.

DevOps

Wikipedia: DevOps

Combining software development and operations practices to shorten time to market while maintaining high quality.

The Phoenix Project, by Gene Kim et al

IT, Devops and helping your Business win :orange_book:.

The Unicorn Project, by Gene Kim

Developers, Digital Disruption and Thriving in the Age of Data :orange_book:.

Keep CALMS and carry on

How BPDTS use the CALMS model as a reference for their devops adaptations.

Chaos Engineering at Netfix

Chaos Engineering is a new discipline within Software Engineering, building confidence in the behavior of distributed systems at scale 🎥.

Adidas DevOps Maturity Framework

Based in the C.A.L.M.S. definition of DevOps, the framework defines a set of capabilities and guidelines that when adopted, increases efficiency, effectiveness and happiness of the team.

Bonus

How to learn software design and architecture - a roadmap

Additional things helpful to learn to get a firm understanding of software architecture.

Software Architect Roadmap

A complete and structured guide to become a Software Architect.