Software Architecture Toolkit
![software architecture toolkit software architecture toolkit](/images/software-architecture-toolkit.png)
Summary
This post contains the curated list of tools, patterns, processes and frameworks useful in any software architecture practice.
The audience for the below list is wide, ranging from software engineers and tech leads to enterprise architects.
Software Architecture Diagrams
Part of overall software documentation, software architecture diagrams are the key technology visualisation technique used by system architects. Below is a list of commonly used software architecture diagramming frameworks.
Mingrammer Diagrams. Draw and version control your cloud system architecture in Python. Part of Diagrams as Code practice. Open source project.
Mermaid. Markdown-inspired framework for generating diagrams and charts. Based on Javascript programming language. Open source project.
PlantUML. A software tool which allows to generate of various diagram types from specific text-based definitions. Widely supported in industry with multiple plugins. Based on the Java programming language. Open source project.
ReadTheDocs is documentation as code platform. It supports multiple formats for maintaining software system documentation. Markdown, Sphinx, Mkdocks, Jupyter books all supported.
Architecture Decision Records
Why is usually more important than how.
An Architecture Decision Record or short ADRs is a technique of maintaining simple and concise documents that explain why technical decisions are going to be made this way.
Below are related articles explaining ARD concepts:
When Should I Write an Architecture Decision Record. How do you explain a significant decision that impacts how engineers write software within your organization? Time to start using ADRs.
A practical overview on Architecture Decision Records. This article lists practical examples and considerations while adopting ADRs within technology organizations.
The Psychology of Architecture Decision Records This post describes the positive team cultural impact ADRs have. They help software engineers to evolve into architectural thinkers.
Architechture Assesments
The approaches and frameworks below will help you assess existing software architectures and plan what good looks like for future systems.
- Tracking system health over tech debt: Development, Operations, Architecture. This is a software and systems quality assessment framework that introduces 3 lenses and multiple evaluations for each of them.
Well-Architected
Well-architected has become the universal framework for building reliable, secure, and performant cloud applications.
Once AWS released a well-architected framework related to their cloud platform, Microsoft Azure and Google Cloud followed with equivalents.
Relevant articles:
- Understanding the Six AWS Well-Architected Pillars of Successful Architectures.
- Well-architected tool for Architecture Reviews.
- Cloud adoption checklist. From strategy to operation.
Domain Driven Design
It's a collection of principles to design elegant technical systems.
Based on the business domain models it reduces the gap between the functional purpose which technical system has to serve and its code implementation.
Relevant articles:
- Designing systems with event storming (practical approach).