Software architecture models describe software systems in [domain-specific language](https://en.wikipedia.org/wiki/Domain-specific_language) that can be used with specific software to build views (e.g., [[software architecture diagrams]]) of the system that meet specific audience needs or use cases.
The [C4 model](https://c4model.com/) is a common model for software architecture modeling developed by Simon Brown. The C4 model is a hierarchical model with nested levels representing the system context, containers, components, and code.
Tools like [[c4builder]] and [Structurizr](https://structurizr.com/dsl) utilize the C4 model. These CLI-based tools allow you adopt a [[diagrams and documentation as code]] approach by storing the architecture model in your project directory, using git for version control, and embedding diagrams in project documentation.
I recommend c4builder as the best free, open source tool for software architecture modeling. Avoid using general purpose diagramming tools when developing long-lived software architecture diagrams.
> [!tip]- Additional Resources
> - [Educative's Architecture and Diagramming Patterns](https://www.educative.io/blog/software-architecture-diagramming-and-patterns)
> - [Simon Brown's YT talk on the C4 Model](https://youtu.be/x2-rSnhpw0g)
> - [C4 model on Wikipedia](https://en.wikipedia.org/wiki/C4_model)