awesome-software-architecture
by simskij
A curated list of resources on software architecture
AI summary
Architecture guide
A curated list of resources on software architecture and design principles.
- stars
- 2.4K
- forks
- 171
- watching
- 64
- awesome lists
- 6
- entries
- 58
What's in the list
58 links in 13 sections, with live GitHub stats.activeno commit in 2y
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
- 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
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
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 🎥
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
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
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 🎥
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
Frameworks / Extreme programming
- Extreme Programming
The most specific of the popular agile processes, focusing on engineering and development practices
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
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
Nothing in this list matches your filter.
Featured in 6 awesome lists
Each link jumps to the spot where the list mentions awesome-software-architecture.