Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
awesome-software-architecture
A curated list of resources on software architecture
https://github.com/simskij/awesome-software-architecture
Last synced: about 23 hours ago
JSON representation
-
Tools
-
Scalability and Resilience
- 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.
- Visual Paradigm - Similar to Enterprise Architect. Available for multiple 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.
- 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.
- Sparx Systems Enterprise Architect - Object-oriented modelling suite. Only available natively for Windows.
-
-
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 🎥.
- Scrum - Framework for developing and maintaining complex products.
- SAFe - Scalable agile framework.
- 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 🎥.
-
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 :orange_book:.
- 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 :orange_book:.
-
Extreme programming
- Extreme Programming - The most specific of the popular agile processes, focusing on engineering and development practices.
-
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 :orange_book:.
- The Unicorn Project, by Gene Kim - Developers, Digital Disruption and Thriving in the Age of Data :orange_book:.
- Keep CALMS and carry on - How BPDTS use the CALMS model as a reference for their devops adaptations.
- 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.
- Chaos Engineering at Netfix - Chaos Engineering is a new discipline within Software Engineering, building confidence in the behavior of distributed systems at scale 🎥.
-
-
Bonus
-
DevOps
- 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.
-
-
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
- Flexibility - Able to adapt to changes in both environment and usability requirements without encompassing structural changes.
- Flexibility - Able to adapt to changes in both environment and usability requirements without encompassing structural changes.
- Flexibility - Able to adapt to changes in both environment and usability requirements without encompassing structural changes.
- Flexibility - Able to adapt to changes in both environment and usability requirements without encompassing structural changes.
- Flexibility - Able to adapt to changes in both environment and usability requirements without encompassing structural changes.
- Flexibility - Able to adapt to changes in both environment and usability requirements without encompassing structural changes.
- Flexibility - Able to adapt to changes in both environment and usability requirements without encompassing structural changes.
- Flexibility - Able to adapt to changes in both environment and usability requirements without encompassing structural changes.
- Flexibility - Able to adapt to changes in both environment and usability requirements without encompassing structural changes.
- Flexibility - Able to adapt to changes in both environment and usability requirements without encompassing structural changes.
- Flexibility - Able to adapt to changes in both environment and usability requirements without encompassing structural changes.
- Flexibility - Able to adapt to changes in both environment and usability requirements without encompassing structural changes.
- Flexibility - Able to adapt to changes in both environment and usability requirements without encompassing structural changes.
- Flexibility - Able to adapt to changes in both environment and usability requirements without encompassing structural changes.
- Flexibility - Able to adapt to changes in both environment and usability requirements without encompassing structural changes.
- Flexibility - Able to adapt to changes in both environment and usability requirements without encompassing structural changes.
- Flexibility - Able to adapt to changes in both environment and usability requirements without encompassing structural changes.
- Flexibility - Able to adapt to changes in both environment and usability requirements without encompassing structural changes.
- Flexibility - Able to adapt to changes in both environment and usability requirements without encompassing structural changes.
- Flexibility - Able to adapt to changes in both environment and usability requirements without encompassing structural changes.
- Flexibility - Able to adapt to changes in both environment and usability requirements without encompassing structural changes.
- Flexibility - Able to adapt to changes in both environment and usability requirements without encompassing structural changes.
- Flexibility - Able to adapt to changes in both environment and usability requirements without encompassing structural changes.
- Flexibility - Able to adapt to changes in both environment and usability requirements without encompassing structural changes.
- Flexibility - Able to adapt to changes in both environment and usability requirements without encompassing structural changes.
- Flexibility - Able to adapt to changes in both environment and usability requirements without encompassing structural changes.
- Flexibility - Able to adapt to changes in both environment and usability requirements without encompassing structural changes.
- Flexibility - Able to adapt to changes in both environment and usability requirements without encompassing structural changes.
- Flexibility - Able to adapt to changes in both environment and usability requirements without encompassing structural changes.
- Flexibility - Able to adapt to changes in both environment and usability requirements without encompassing structural changes.
- Flexibility - Able to adapt to changes in both environment and usability requirements without encompassing structural changes.
- Flexibility - Able to adapt to changes in both environment and usability requirements without encompassing structural changes.
- Flexibility - Able to adapt to changes in both environment and usability requirements without encompassing structural changes.
- Flexibility - Able to adapt to changes in both environment and usability requirements without encompassing structural changes.
- Flexibility - Able to adapt to changes in both environment and usability requirements without encompassing structural changes.
- Flexibility - Able to adapt to changes in both environment and usability requirements without encompassing structural changes.
- Flexibility - Able to adapt to changes in both environment and usability requirements without encompassing structural changes.
- Flexibility - Able to adapt to changes in both environment and usability requirements without encompassing structural changes.
- Flexibility - Able to adapt to changes in both environment and usability requirements without encompassing structural changes.
- Flexibility - Able to adapt to changes in both environment and usability requirements without encompassing structural changes.
- Flexibility - Able to adapt to changes in both environment and usability requirements without encompassing structural changes.
- Flexibility - Able to adapt to changes in both environment and usability requirements without encompassing structural changes.
- Flexibility - Able to adapt to changes in both environment and usability requirements without encompassing structural changes.
- Flexibility - Able to adapt to changes in both environment and usability requirements without encompassing structural changes.
- Flexibility - Able to adapt to changes in both environment and usability requirements without encompassing structural changes.
- Flexibility - Able to adapt to changes in both environment and usability requirements without encompassing structural changes.
- Flexibility - Able to adapt to changes in both environment and usability requirements without encompassing structural changes.
- Flexibility - Able to adapt to changes in both environment and usability requirements without encompassing structural changes.
- Flexibility - Able to adapt to changes in both environment and usability requirements without encompassing structural changes.
- Flexibility - Able to adapt to changes in both environment and usability requirements without encompassing structural changes.
- Flexibility - Able to adapt to changes in both environment and usability requirements without encompassing structural changes.
- Flexibility - Able to adapt to changes in both environment and usability requirements without encompassing structural changes.
- Flexibility - Able to adapt to changes in both environment and usability requirements without encompassing structural changes.
- Flexibility - Able to adapt to changes in both environment and usability requirements without encompassing structural changes.
- Flexibility - Able to adapt to changes in both environment and usability requirements without encompassing structural changes.
-
Design Patterns
-
- Ports and adapters pattern - Decouple the application core logic from the services it uses.
- Observer pattern - One-to-many state change notification.
- Software Design Patterns: A Guide - Introduction to common software design patterns.
- 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.
- Observer pattern - One-to-many state change notification.
- Observer pattern - One-to-many state change notification.
- Observer pattern - One-to-many state change notification.
- Observer pattern - One-to-many state change notification.
- Observer pattern - One-to-many state change notification.
- Observer pattern - One-to-many state change notification.
- Software Design Patterns: A Guide - Introduction to common software design patterns.
- 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.
- N-tier architecture style - Layers are a way to separate responsibilities and manage dependencies.
- Observer pattern - One-to-many state change notification.
- Observer pattern - One-to-many state change notification.
- Observer pattern - One-to-many state change notification.
- Observer pattern - One-to-many state change notification.
- Observer pattern - One-to-many state change notification.
- Observer pattern - One-to-many state change notification.
- Observer pattern - One-to-many state change notification.
- Observer pattern - One-to-many state change notification.
- Observer pattern - One-to-many state change notification.
- Observer pattern - One-to-many state change notification.
- Observer pattern - One-to-many state change notification.
- Observer pattern - One-to-many state change notification.
- Observer pattern - One-to-many state change notification.
- Observer pattern - One-to-many state change notification.
- Observer pattern - One-to-many state change notification.
- Observer pattern - One-to-many state change notification.
- Observer pattern - One-to-many state change notification.
- Observer pattern - One-to-many state change notification.
- Observer pattern - One-to-many state change notification.
- Observer pattern - One-to-many state change notification.
- Observer pattern - One-to-many state change notification.
- Observer pattern - One-to-many state change notification.
- Observer pattern - One-to-many state change notification.
- 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 :orange_book:.
- Observer pattern - One-to-many state change notification.
- Observer pattern - One-to-many state change notification.
- Observer pattern - One-to-many state change notification.
- Observer pattern - One-to-many state change notification.
- Observer pattern - One-to-many state change notification.
- Observer pattern - One-to-many state change notification.
- Software Design Patterns and Principes (quick overview) - Reasons about common design patterns as well as their upsides and downsides 🎥.
- Observer pattern - One-to-many state change notification.
- Observer pattern - One-to-many state change notification.
- Observer pattern - One-to-many state change notification.
- Observer pattern - One-to-many state change notification.
- Observer pattern - One-to-many state change notification.
- Observer pattern - One-to-many state change notification.
- Observer pattern - One-to-many state change notification.
- Observer pattern - One-to-many state change notification.
- Observer pattern - One-to-many state change notification.
- Observer pattern - One-to-many state change notification.
- Observer pattern - One-to-many state change notification.
- Observer pattern - One-to-many state change notification.
- Observer pattern - One-to-many state change notification.
- Observer pattern - One-to-many state change notification.
- Observer pattern - One-to-many state change notification.
- Observer pattern - One-to-many state change notification.
- Observer pattern - One-to-many state change notification.
- Observer pattern - One-to-many state change notification.
- Observer pattern - One-to-many state change notification.
-
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.
- Bulkhead - Partition resources to isolate failures.
- Leader Election - Coordinate distributed workloads by electing a leader.
-
-
Methodology
-
Scalability and Resilience
- No silver bullet, by Brooks - Making a case for growing software in small increments :orange_book:.
- Clean Architecture, by Martin - Key principles and concepts for building sustainable and maintainable software :orange_book:.
- 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
-
Scalability and Resilience
- 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
-
Scalability and Resilience
- 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 :orange_book:.
-
-
Modeling
-
Scalability and Resilience
- The C4 Model - Describe software using Context, Containers, Components and Code.
- Wikipedia: Data modeling - Great, short, introduction to data modeling.
-