awesome-software-architecture

Architecture guide

A curated list of resources on software architecture and design principles.

A curated list of resources on software architecture

GitHub

2k stars
64 watching
169 forks
last commit: about 1 year ago
Linked from 6 awesome lists

architectureawesomeawesome-listhacktoberfestsoftware-architecture

Awesome Software Architecture / 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

Awesome Software Architecture / 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
Software Design Patterns: A Guide Introduction to common software design patterns
Software Design Patterns and Principes (quick overview) Reasons about common design patterns as well as their upsides and downsides 🎥
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

Awesome Software Architecture / Design Patterns / 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

Awesome Software Architecture / Methodology

No silver bullet, by Brooks Making a case for growing software in small increments
Clean Architecture, by Martin Key principles and concepts for building sustainable and maintainable software
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 🎥

Awesome Software Architecture / 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

Awesome 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

Awesome Software Architecture / Modeling

The C4 Model Describe software using Context, Containers, Components and Code
Wikipedia: Data modeling Great, short, introduction to data modeling

Awesome Software Architecture / 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

Awesome Software Architecture / 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 🎥

Awesome Software Architecture / Frameworks / 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
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

Awesome Software Architecture / Frameworks / Extreme programming

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

Awesome Software Architecture / Frameworks / 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
The Unicorn Project, by Gene Kim Developers, Digital Disruption and Thriving in the Age of Data
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 585 almost 2 years ago 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

Awesome Software Architecture / 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

Backlinks from these awesome lists:

0