User Experience on mobile might not be great yet, but I'm working on it.

Your first time on this page? Allow me to give some explanations.

Awesome Software Architecture

A curated list of resources on software architecture

Here you can see meta information about this topic like the time we last updated this page, the original creator of the awesome list and a link to the original GitHub repository.

Last Update: None

Thank you simskij & contributors
View Topic on GitHub:

Search for resources by name or description.
Simply type in what you are looking for and the results will be filtered on the fly.

Further filter the resources on this page by type (repository/other resource), number of stars on GitHub and time of last commit in months.


Design Patterns

One-to-many state change notification.

Reasons about common design patterns as well as their upsides and downsides 🎥.

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

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 (often also refered to as Feature Flags) are a powerful technique, allowing teams to modify system behavior without changing code.

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

Layers are a way to separate responsibilities and manage dependencies.

Scalability and Resilience


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

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

Cost and impact of accumulating technical debt.

Suggestion on TDD practices and boundaries to reduce coupling 🎥.


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

Pragmatic tips on how to effectively document software architecture.

Workshop formats

Format for exploring domain driven-design.

Fast and dead-simple way of prioritizing requirements.

Visualize your requirements by creating story maps.

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


Describe software using Context, Containers, Components and Code.

Great, short, introduction to data modeling.


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

All-in-one UML, SysML, BPMN Modeling Platform for Agile, EA TOGAF ADM Process Management.

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

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

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

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

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


Framework for developing and maintaining complex products.

Scalable agile framework.

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

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

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

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

Lean software development

Translation of lean manufacturing for the software development domain.

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

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

Extreme programming

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


The DevOps maturity framework was created by adidas as a guide for the first DevOps cup to support the teams on their DevOps transformation journey.

1y 98d

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

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

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

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

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


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