awesome-software-architecture
Architecture guide
A curated list of resources on software architecture and design principles.
A curated list of resources on software architecture
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 |