 awesome-software-architecture
 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
 171 forks
 
last commit: about 2 years 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 3 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 | ||