Skip to content

A minimal approach to software architecture documentation with Structurizr Lite

License

Notifications You must be signed in to change notification settings

max-arshinov/masad

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

52 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

A Minimal Approach to Architecture as Code: Documenting the Modern Way

The question of "how much documentation should we write?" is popping up a lot recently, probably driven by teams looking at their business continuity plans, and the increase in remote working.

If you've read Simon Brown's take on a minimal approach to software architecture documentation, you may have been intrigued by the approach but perhaps left wondering about its implementation. Although Simon Brown proposes a minimalist, three-part approach, he doesn't provide an example of it in practice.

This repo fills that gap by presenting a concrete implementation template of Simon Brown's approach, which consists of:

  1. Software architecture models as code built with Structurizr Lite
  2. Documentation built with Arc42 template
  3. Decision log built with ADR Tools

It's intended to store this documentation in a repository and treat it the same as code.

What can I use this template for?

How to run

How to use Structurizr Lite

What's inside?

1. Software architecture models as code

Structurizr builds upon "diagrams as code", allowing you to create multiple software architecture diagrams from a single model. There are a number of tools for creating Structurizr compatible workspaces, with the Structurizr DSL being the recommended option for most teams. This Structurizr DSL example creates two diagrams, based upon a single set of elements and relationships.


workspace {

    model {
        user = person "User"
        softwareSystem = softwareSystem "Software System" {
            webapp = container "Web Application" {
                user -> this "Uses"
            }
            container "Database" {
                webapp -> this "Reads from and writes to"
            }
        }
    }

    views {
        systemContext softwareSystem {
            include *
            autolayout lr
        }

        container softwareSystem {
            include *
            autolayout lr
        }

        theme default
    }

Context


Container

2. Documentation

Because the code doesn't tell the whole story, Structurizr provides support for lightweight supplementary technical documentation. The documentation is a collection of Markdown or AsciiDoc files, one per section, which are rendered in the web browser. Arc42 template is used for the documentation.

3. Decision log

Because diagrams alone can't express the decisions that led to a solution, Structurizr allows you to supplement your software architecture model with a decision log, captured as a collection of lightweight Architecture Decision Records (ADRs) as described by Michael Nygard, and featured on the ThoughtWorks Technology Radar. Structurizr allows you to publish your ADRs to allow team members get an "at a glance" view of the current set of ADRs, along with facilities to make navigating them easier.

Export & Integrations

docToolChain

docToolChain is an implementation of the docs-as-code approach for software architecture. The basis of docToolchain is the philosophy that software documentation should be treated in the same way as code together with the arc42 template for software architecture.

docToolChain

Notes for Confluence users

About

A minimal approach to software architecture documentation with Structurizr Lite

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages