update lists
This commit is contained in:
281
html/softwarearchitecture.html
Normal file
281
html/softwarearchitecture.html
Normal file
@@ -0,0 +1,281 @@
|
||||
<div data-align="center">
|
||||
<p><img src="./banner.png" /></p>
|
||||
<h1 id="awesome-software-architecture">Awesome Software
|
||||
Architecture<br/></h1>
|
||||
<p><a href="https://awesome.re"><img src="https://awesome.re/badge.svg"
|
||||
alt="awesome-badge" /></a></p>
|
||||
<p><a
|
||||
href="https://en.wikipedia.org/wiki/Software_architecture">Software
|
||||
architecture</a> aims to describe the high level structures of software
|
||||
as well as the discipline of creating them. As this topic is pretty
|
||||
broad, it might contain some resources that are also present in more
|
||||
niche lists.</p>
|
||||
<p><i> If you like this list, consider showing your support by following
|
||||
<a href="https://twitter.com/0x12b/"><span class="citation"
|
||||
data-cites="0x12b">@0x12b</span></a> on Twitter. </i></p>
|
||||
</div>
|
||||
<h2 id="contents">Contents</h2>
|
||||
<ul>
|
||||
<li><a href="#principles">Principles</a></li>
|
||||
<li><a href="#design-patterns">Design Patterns</a>
|
||||
<ul>
|
||||
<li><a href="#scalability-and-resilience">Scalability and
|
||||
Resilience</a></li>
|
||||
</ul></li>
|
||||
<li><a href="#methodology">Methodology</a></li>
|
||||
<li><a href="#documentation">Documentation</a></li>
|
||||
<li><a href="#workshop-formats">Workshop formats</a></li>
|
||||
<li><a href="#modeling">Modeling</a></li>
|
||||
<li><a href="#tools">Tools</a></li>
|
||||
<li><a href="#frameworks">Frameworks</a>
|
||||
<ul>
|
||||
<li><a href="#agile">Agile</a></li>
|
||||
<li><a href="#lean-software-development">Lean software
|
||||
development</a></li>
|
||||
<li><a href="#extreme-programming">Extreme programming</a></li>
|
||||
<li><a href="#devops">DevOps</a></li>
|
||||
</ul></li>
|
||||
<li><a href="#bonus">Bonus</a></li>
|
||||
</ul>
|
||||
<h2 id="principles">Principles</h2>
|
||||
<ul>
|
||||
<li><a
|
||||
href="https://medium.com/faun/flexibility-a-software-architecture-principle-6eafe045a1d4">Flexibility</a>
|
||||
- Able to adapt to changes in both environment and usability
|
||||
requirements without encompassing structural changes.</li>
|
||||
<li><a
|
||||
href="https://www.digitalocean.com/community/conceptual-articles/s-o-l-i-d-the-first-five-principles-of-object-oriented-design">SOLID</a>
|
||||
- Lend to developing software with considerations for maintaining and
|
||||
extending as the project grows</li>
|
||||
</ul>
|
||||
<h2 id="design-patterns">Design Patterns</h2>
|
||||
<ul>
|
||||
<li><a
|
||||
href="https://jmgarridopaz.github.io/content/hexagonalarchitecture.html">Ports
|
||||
and adapters pattern</a> - Decouple the application core logic from the
|
||||
services it uses.</li>
|
||||
<li><a
|
||||
href="https://medium.com/datadriveninvestor/design-patterns-a-quick-guide-to-observer-pattern-d0622145d6c2">Observer
|
||||
pattern</a> - One-to-many state change notification.</li>
|
||||
<li><a
|
||||
href="https://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612/">Design
|
||||
Patterns: Elements of Reusable Object-Oriented Software, by Gamma et
|
||||
al</a> - The one that started it all :orange_book:.</li>
|
||||
<li><a
|
||||
href="https://airbrake.io/blog/design-patterns/software-design-patterns-guide">Software
|
||||
Design Patterns: A Guide</a> - Introduction to common software design
|
||||
patterns.</li>
|
||||
<li><a href="https://www.youtube.com/watch?v=WV2Ed1QTst8">Software
|
||||
Design Patterns and Principes (quick overview)</a> - Reasons about
|
||||
common design patterns as well as their upsides and downsides 🎥.</li>
|
||||
<li><a
|
||||
href="https://docs.microsoft.com/en-us/azure/architecture/patterns/cqrs">CQRS</a>
|
||||
- Segregate operations that read data from operations that update data
|
||||
by using separate interfaces.</li>
|
||||
<li><a
|
||||
href="https://docs.microsoft.com/en-us/azure/architecture/patterns/event-sourcing">Event
|
||||
Sourcing</a> - 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.</li>
|
||||
<li><a
|
||||
href="https://www.martinfowler.com/articles/feature-toggles.html">Feature
|
||||
Toggles</a> - Feature Toggles (often also refered to as Feature Flags)
|
||||
are a powerful technique, allowing teams to modify system behavior
|
||||
without changing code.</li>
|
||||
<li><a
|
||||
href="https://medium.com/javascript-scene/behavior-driven-development-bdd-and-functional-testing-62084ad7f1f2">Behavior
|
||||
Driven Development (BDD) and Functional Testing</a> - BDD uses
|
||||
human-readable descriptions of software user requirements as the basis
|
||||
for software tests.</li>
|
||||
<li><a
|
||||
href="https://docs.microsoft.com/en-us/azure/architecture/guide/architecture-styles/n-tier">N-tier
|
||||
architecture style</a> - Layers are a way to separate responsibilities
|
||||
and manage dependencies.</li>
|
||||
</ul>
|
||||
<h3 id="scalability-and-resilience">Scalability and Resilience</h3>
|
||||
<ul>
|
||||
<li><a href="https://martinfowler.com/bliki/CircuitBreaker.html">Circuit
|
||||
Breaker</a> - Protecting failing resources to prevent cascading
|
||||
failures.</li>
|
||||
<li><a
|
||||
href="https://docs.microsoft.com/en-us/azure/architecture/patterns/bulkhead">Bulkhead</a>
|
||||
- Partition resources to isolate failures.</li>
|
||||
<li><a
|
||||
href="https://docs.microsoft.com/en-us/azure/architecture/patterns/leader-election">Leader
|
||||
Election</a> - Coordinate distributed workloads by electing a
|
||||
leader.</li>
|
||||
</ul>
|
||||
<h2 id="methodology">Methodology</h2>
|
||||
<ul>
|
||||
<li><a href="http://worrydream.com/refs/Brooks-NoSilverBullet.pdf">No
|
||||
silver bullet, by Brooks</a> - Making a case for growing software in
|
||||
small increments :orange_book:.</li>
|
||||
<li><a
|
||||
href="https://www.amazon.com/Clean-Architecture-Craftsmans-Software-Structure/dp/0134494164">Clean
|
||||
Architecture, by Martin</a> - Key principles and concepts for building
|
||||
sustainable and maintainable software :orange_book:.</li>
|
||||
<li><a
|
||||
href="https://martinfowler.com/bliki/TechnicalDebt.html">Technical Debt,
|
||||
by Fowler</a> - Cost and impact of accumulating technical debt.</li>
|
||||
<li><a href="https://www.youtube.com/watch?v=URSWYvyc42M">The Magic
|
||||
Tricks of Testing, by Metz</a> - Minimalistic ideals as a practical and
|
||||
pragmatic approach to software testing 🎥.</li>
|
||||
<li><a href="https://www.infoq.com/presentations/tdd-original/">TDD,
|
||||
Where did it all go wrong?, by Cooper</a> - Suggestion on TDD practices
|
||||
and boundaries to reduce coupling 🎥.</li>
|
||||
</ul>
|
||||
<h2 id="documentation">Documentation</h2>
|
||||
<ul>
|
||||
<li><a href="https://arc42.org/">arc42</a> - Template for documentation
|
||||
and communication of software and system architectures.</li>
|
||||
<li><a href="https://adr.github.io/">Architectural Decision Records</a>
|
||||
- Version and document architectural decisions the same way you do with
|
||||
code.</li>
|
||||
<li><a
|
||||
href="https://dzone.com/articles/documenting-architecture-1">Documenting
|
||||
architecture</a> - Pragmatic tips on how to effectively document
|
||||
software architecture.</li>
|
||||
</ul>
|
||||
<h2 id="workshop-formats">Workshop formats</h2>
|
||||
<ul>
|
||||
<li><a href="https://www.eventstorming.com/">Event Storming</a> - Format
|
||||
for exploring domain driven-design.</li>
|
||||
<li><a
|
||||
href="https://www.knowledgehut.com/blog/agile/how-to-prioritise-requirements-with-the-moscow-technique">MoSCoW
|
||||
Prioritization</a> - Fast and dead-simple way of prioritizing
|
||||
requirements.</li>
|
||||
<li><a
|
||||
href="https://www.jpattonassociates.com/wp-content/uploads/2015/03/story_mapping.pdf">Story
|
||||
mapping</a> - Visualize your requirements by creating story maps.</li>
|
||||
<li><a href="https://www.impactmapping.org/">Impact mapping</a> - A
|
||||
strategic planning technique used for building products and delivering
|
||||
projects.</li>
|
||||
<li><a
|
||||
href="https://en.wikipedia.org/wiki/Business_Model_Canvas">Business
|
||||
Model Canvas</a> - Business plans made simple and visual.</li>
|
||||
<li><a
|
||||
href="https://www.amazon.com/Business-Model-Generation-Visionaries-Challengers/dp/0470876417">Business
|
||||
Model Generation, by Osterwalder & Pigneur</a> - Easily visualize
|
||||
your value proposition, costs and revenue streams :orange_book:.</li>
|
||||
</ul>
|
||||
<h2 id="modeling">Modeling</h2>
|
||||
<ul>
|
||||
<li><a href="https://c4model.com/">The C4 Model</a> - Describe software
|
||||
using Context, Containers, Components and Code.</li>
|
||||
<li><a href="https://en.wikipedia.org/wiki/Data_modeling">Wikipedia:
|
||||
Data modeling</a> - Great, short, introduction to data modeling.</li>
|
||||
</ul>
|
||||
<h2 id="tools">Tools</h2>
|
||||
<ul>
|
||||
<li><a href="https://sparxsystems.com/products/ea/index.html">Sparx
|
||||
Systems Enterprise Architect</a> - Object-oriented modelling suite. Only
|
||||
available natively for Windows.</li>
|
||||
<li><a href="https://www.visual-paradigm.com/">Visual Paradigm</a> -
|
||||
Similar to Enterprise Architect. Available for multiple platforms.</li>
|
||||
<li><a href="https://www.lucidchart.com">Lucidchart</a> - Paid
|
||||
cloud-based diagram editor. Available on all common platforms.</li>
|
||||
<li><a href="https://www.draw.io">Draw.io</a> - Free and simple diagram
|
||||
editor. Comparable to Visio and its likes. Available on all common
|
||||
platforms.</li>
|
||||
<li><a href="https://structurizr.com">Structurizr</a> - Modelling tool
|
||||
based on the C4 Model (see above).</li>
|
||||
<li><a href="http://plantuml.com/">PlantUML</a> - Like markdown for
|
||||
diagrams, PlantUML renders an english-like grammer into diagrams.</li>
|
||||
<li><a
|
||||
href="https://marketplace.atlassian.com/apps/1215115/plantuml-for-confluence-cloud?hosting=cloud&tab=overview">PlantUML
|
||||
for Atlassian</a> - Adds support for PlantUML-based diagrams in the
|
||||
atlassian suite.</li>
|
||||
<li><a href="https://sketchboard.io/">Sketchboard.io</a> - Collaborative
|
||||
sketchboarding.</li>
|
||||
<li><a href="https://www.erdlab.io/">ERD Lab</a> - Free cloud based
|
||||
entity relationship diagram (ERD) tool made for developers.</li>
|
||||
</ul>
|
||||
<h2 id="frameworks">Frameworks</h2>
|
||||
<h3 id="agile">Agile</h3>
|
||||
<ul>
|
||||
<li><p><a href="https://www.scrumguides.org/">Scrum</a> - Framework for
|
||||
developing and maintaining complex products.</p></li>
|
||||
<li><p><a href="https://www.scaledagileframework.com/">SAFe</a> -
|
||||
Scalable agile framework.</p></li>
|
||||
<li><p><a href="https://www.scrum.org/resources/scaling-scrum">Nexus</a>
|
||||
- Scalable Scrum according to Ken Schwaber, co-creator of
|
||||
Scrum.</p></li>
|
||||
<li><p><a
|
||||
href="https://www.youtube.com/watch?v=HZyRQ8Uhhmk&feature=youtu.be">The
|
||||
death of Agile, by Allen Holub</a> - How “Agile” has moved away from the
|
||||
basic principles of agility, and what we need to do to fix things
|
||||
🎥.</p></li>
|
||||
<li><p><a href="https://www.youtube.com/watch?v=0kRCFVGpX7k">Agile
|
||||
Architecture Pt. 1, by Allen Holub</a> - How do we work with
|
||||
architecture in a agile world 🎥.</p></li>
|
||||
<li><p><a href="https://www.youtube.com/watch?v=txbS0WJC1bo">Agile
|
||||
Architecture Pt. 2, by Allen Holub</a> - How do we work with
|
||||
architecture in a agile world 🎥. ### Lean software development</p></li>
|
||||
<li><p><a
|
||||
href="https://en.wikipedia.org/wiki/Lean_software_development">Wikipedia:
|
||||
Lean Software Development</a> - Translation of lean manufacturing for
|
||||
the software development domain.</p></li>
|
||||
<li><p><a
|
||||
href="https://www.amazon.com/Rolling-Rocks-Downhill-Software-Projects/dp/1505446511">Rolling
|
||||
rocks downhill, by Clarke Ching</a> - Business novel about agile and
|
||||
lean software development :orange_book:.</p></li>
|
||||
<li><p><a
|
||||
href="https://www.amazon.com/Goal-Process-Ongoing-Improvement/dp/0884270610">The
|
||||
Goal: A Process of Ongoing Improvement, by Goldratt</a> - Business novel
|
||||
about contiuous improvements in a manufacturing setting. Easily
|
||||
adaptable to software development as well :orange_book:. ### Extreme
|
||||
programming</p></li>
|
||||
<li><p><a href="http://www.extremeprogramming.org/">Extreme
|
||||
Programming</a> - The most specific of the popular agile processes,
|
||||
focusing on engineering and development practices.</p></li>
|
||||
</ul>
|
||||
<h3 id="devops">DevOps</h3>
|
||||
<ul>
|
||||
<li><p><a href="https://en.wikipedia.org/wiki/DevOps">Wikipedia:
|
||||
DevOps</a> - Combining software development and operations practices to
|
||||
shorten time to market while maintaining high quality.</p></li>
|
||||
<li><p><a
|
||||
href="https://www.amazon.com/Phoenix-Project-DevOps-Helping-Business/dp/0988262592">The
|
||||
Phoenix Project, by Gene Kim et al</a> - IT, Devops and helping your
|
||||
Business win :orange_book:.</p></li>
|
||||
<li><p><a
|
||||
href="https://www.amazon.com/Unicorn-Project-Developers-Disruption-Thriving-ebook/dp/B07QT9QR41">The
|
||||
Unicorn Project, by Gene Kim</a> - Developers, Digital Disruption and
|
||||
Thriving in the Age of Data :orange_book:.</p></li>
|
||||
<li><p><a
|
||||
href="https://dwpdigital.blog.gov.uk/2019/03/25/keep-calms-and-carry-on-how-we-do-devops/">Keep
|
||||
CALMS and carry on</a> - How BPDTS use the CALMS model as a reference
|
||||
for their devops adaptations.</p></li>
|
||||
<li><p><a href="https://www.youtube.com/watch?v=6ilMZqKdMMU">Chaos
|
||||
Engineering at Netfix</a> - Chaos Engineering is a new discipline within
|
||||
Software Engineering, building confidence in the behavior of distributed
|
||||
systems at scale 🎥.</p></li>
|
||||
<li><p><a
|
||||
href="https://github.com/adidas/adidas-devops-maturity-framework">Adidas
|
||||
DevOps Maturity Framework</a> - 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</p></li>
|
||||
<li><p><a href="https://www.freecodecamp.org/news/software-design/">How
|
||||
to learn software design and architecture - a roadmap</a> - Additional
|
||||
things helpful to learn to get a firm understanding of software
|
||||
architecture.</p></li>
|
||||
<li><p><a href="https://roadmap.sh/software-architect">Software
|
||||
Architect Roadmap</a> - A complete and structured guide to become a
|
||||
Software Architect.</p></li>
|
||||
</ul>
|
||||
<h2 id="contributing">Contributing</h2>
|
||||
<p>Want to contribute into making this list even better? Yay, that’s
|
||||
awesome! Before you get started though, please have a look at our
|
||||
<a href="code_of_conduct.md">code of conduct</a> and
|
||||
<a href="contributing.md">contribution guidelines</a>.</p>
|
||||
<h2 id="license">License</h2>
|
||||
<p><a href="https://creativecommons.org/publicdomain/zero/1.0/"><img
|
||||
src="http://mirrors.creativecommons.org/presskit/buttons/88x31/svg/cc-zero.svg"
|
||||
alt="CC0" /></a></p>
|
||||
<p>To the extent possible under law, <a
|
||||
href="https://github.com/simskij">simskij</a> has waived all copyright
|
||||
and related or neighboring rights to this work.</p>
|
||||
<p><a
|
||||
href="https://github.com/simskij/awesome-software-architecture">softwarearchitecture.md
|
||||
Github</a></p>
|
||||
Reference in New Issue
Block a user