Document Architecture

Ways to document system, software architecture in clean and understandable form.

Architecture Drivers

Architecture Drivers direct us to make concrete Software Architecture decisions. Those drivers are being described by specific Classes described below.

Classes of Architecture Drivers

  • Limitations --> specify all limitations that the build system will be constrained with

  • Quality attributes --> Those are NONE functional drivers that could cost a lot when moved to later phases of system development. Some examples could be: scalability, observability, security, load e.g. 100-150 rps, SLA system accessibility 99,99% that is 4m 23s of system downtime per month.

Local Architecture Drivers

Those Drivers would be considered per e.g. Bounded Context. They would be one of the Classes described above but local to a specific BC instead of the whole system. This also implies that specific Architecture decision can be specific to a local Bounded Context instead of the whole solution e.g. if we decided that we will use MVC design pattern for one sub system then it is not mandatory for all our BCs to be build based on the MVC layers. We can use a different design patter that solves our problem in different BC.

ADL & ADR

Best practices and examples on how to create and maintain Architecture Decision Log and Architecture Decision Records. Architecture Guild resources.

References

Estimates (how to do them and when they really work)

Two main movements when it comes to Estimating or Not

  1. NoEstimates Estimates are not very precise. Delivered value is much more important than the cost of it. Estimation lead to dysfunctional behaviour (too optimistic size that when not met leads to over hours, cutting on quality or event functionality).

  2. YesEstimates Estimates can be precise under certain conditions. Estimation of cost of making something is important for the business. No Estimates makes Business people very uncomfortable and sort of alienated.

When Estimation works

  • when we have done similar thing in the past

  • when we understand how exactly the thing we want to build works

  • when scope of work is small

  • when during work requirements does NOT change

  • when we don't have to wait for other people, teams work (our word does not depend on the result of others work)

Blogs / Online Articles

Videos

Architecture Metrics

Tools

Architecture Modeling Tools

C4

C4 consist of following parts (abstractions):

  • Code - class / function

  • Component - set of classes that together form a contract

  • Container - run environment for Components e.g. application server / web server / database communication between containers done via API (SOAP/REST/TCP/Messaging). Containers could (but not necessarily have to be deployed separately of each other)

  • System - Set of containers forming single system e.g. Browser + App Server + Database

C4 conists of following Diagrams:

  • C1 - Context (System) Diagram - who is using the system, why it was created, what integrations it has what those integrations do. Description of all the systems (being build and existing systems that are being used by build systems) and its relations to the user(s) and itself.

  • C2 - Container Diagram - Container diagram shows list of all containers of the system we are building. Containers of the sytem could be Different API containers, Database, Web Server, Message Broker, Mobile Application etc. Container diagram description uses (name, responsibility, technology, interaction, protocol)

  • C3 - Component Diagram - List of components of particular container of our system e.g. all components that are building our API container. Component Diagram is for technical user working on the System implementation. Component diagram description uses (name, responsibility, technology, interaction (sync, async), protocol).

  • C4 - Class Diagram - UML (optional) standard stuff done the old school way

C4 Tutorial

C4 Tools

UML

Tutorials

Diagraming tools

  • Diagrams.app For MacOS, paid 20$

  • StarUML 3 Cross OS, 90$

  • Whimsical Online, Flowcharts, Wireframes Free and 10$ month

  • Lucidchart Online, Free + 8$ month. Pretty powerful for all kinds of diagramming

  • PlantUML Online + Java app, free, loads of diagrams covered

Last updated

Was this helpful?