Arc42 Template EN
Arc42 Template EN
January 2023
About arc42
arc42, the template for documentation of software and system architecture.
Template Version 8.2 EN. (based upon AsciiDoc version), January 2023
Created, maintained and © by Dr. Peter Hruschka, Dr. Gernot Starke and contributors. See
https://arc42.org.
This version of the template contains some help and explanations. It is used for
familiarization with arc42 and the understanding of the concepts. For documentation of
your own system you use better the plain version.
• essential features,
Requirements Overview
Contents
Short description of the functional requirements, driving forces, extract (or abstract) of
requirements. Link to (hopefully existing) requirements documents (with version number
and information where to find it).
Motivation
From the point of view of the end users a system is created or modified to improve support
of a business activity and/or improve the quality.
Form
Short textual description, probably in tabular use-case format. If requirements documents
exist this overview should refer to these documents.
Keep these excerpts as short as possible. Balance readability of this document with
potential redundancy w.r.t to requirements documents.
See Introduction and Goals in the arc42 documentation.
Quality Goals
Contents
The top three (max five) quality goals for the architecture whose fulfillment is of highest
importance to the major stakeholders. We really mean quality goals for the architecture.
Don’t confuse them with project goals. They are not necessarily identical.
Consider this overview of potential topics (based upon the ISO 25010 standard):
Motivation
You should know the quality goals of your most important stakeholders, since they will
influence fundamental architectural decisions. Make sure to be very concrete about these
qualities, avoid buzzwords. If you as an architect do not know how the quality of your work
will be judged…
Form
A table with quality goals and concrete scenarios, ordered by priorities
Stakeholders
Contents
Explicit overview of stakeholders of the system, i.e. all person, roles or organizations that
• should know the architecture
Motivation
You should know all parties involved in development of the system or affected by the
system. Otherwise, you may get nasty surprises later in the development process. These
stakeholders determine the extent and the level of detail of your work and its results.
Form
Table with role names, person names, and their expectations with respect to the
architecture and its documentation.
Architecture Constraints
Contents
Any requirement that constraints software architects in their freedom of design and
implementation decisions or decision about the development process. These constraints
sometimes go beyond individual systems and are valid for whole organizations and
companies.
Motivation
Architects should know exactly where they are free in their design decisions and where
they must adhere to constraints. Constraints must always be dealt with; they may be
negotiable, though.
Form
Simple tables of constraints with explanations. If needed you can subdivide them into
technical constraints, organizational and political constraints and conventions (e.g.
programming or versioning guidelines, documentation or naming conventions)
See Architecture Constraints in the arc42 documentation.
Business Context
Contents
Specification of all communication partners (users, IT-systems, …) with explanations of
domain specific inputs and outputs or interfaces. Optionally you can add domain specific
formats or communication protocols.
Motivation
All stakeholders should understand which data are exchanged with the environment of the
system.
Form
All kinds of diagrams that show the system as a black box and specify the domain interfaces
to communication partners.
Alternatively (or additionally) you can use a table. The title of the table is the name of your
system, the three columns contain the name of the communication partner, the inputs, and
the outputs.
<Diagram or Table>
<optionally: Explanation of external domain interfaces>
Technical Context
Contents
Technical interfaces (channels and transmission media) linking your system to its
environment. In addition a mapping of domain specific input/output to the channels, i.e. an
explanation which I/O uses which channel.
Motivation
Many stakeholders make architectural decision based on the technical interfaces between
the system and its context. Especially infrastructure or hardware designers decide these
technical interfaces.
Form
E.g. UML deployment diagram describing channels to neighboring systems, together with a
mapping table showing the relationships between channels and input/output.
<Diagram or Table>
<optionally: Explanation of technical interfaces>
<Mapping Input/Output to Channels>
Solution Strategy
Contents
A short summary and explanation of the fundamental decisions and solution strategies,
that shape system architecture. It includes
• technology decisions
Motivation
These decisions form the cornerstones for your architecture. They are the foundation for
many other detailed decisions or implementation rules.
Form
Keep the explanations of such key decisions short.
Motivate what was decided and why it was decided that way, based upon problem
statement, quality goals and key constraints. Refer to details in the following sections.
See Solution Strategy in the arc42 documentation.
• black box descriptions of the contained building blocks. For these we offer you
alternatives:
– use one table for a short and pragmatic overview of all contained building
blocks and their interfaces
– use a list of black box descriptions of the building blocks according to the
black box template (see below). Depending on your choice of tool this list
could be sub-chapters (in text files), sub-pages (in a Wiki) or nested elements
(in a modeling tool).
• (optional:) important interfaces, that are not explained in the black box templates of
a building block, but are very important for understanding the white box. Since
there are so many ways to specify interfaces why do not provide a specific template
for them. In the worst case you have to specify and describe syntax, semantics,
protocols, error handling, restrictions, versions, qualities, necessary compatibilities
and many things more. In the best case you will get away with examples or simple
signatures.
<Overview Diagram>
Motivation
<text explanation>
Important Interfaces
<Description of important interfaces>
Name Responsibility
<black box 1> <Text>
• Interface(s), when they are not extracted as separate paragraphs. This interfaces
may include qualities and performance characteristics.
<Purpose/Responsibility>
<Interface(s)>
<(Optional) Quality/Performance Characteristics>
<(Optional) Directory/File Location>
<(Optional) Fulfilled Requirements>
<(optional) Open Issues/Problems/Risks>
Level 2
Here you can specify the inner structure of (some) building blocks from level 1 as white
boxes.
You have to decide which building blocks of your system are important enough to justify
such a detailed description. Please prefer relevance over completeness. Specify important,
surprising, risky, complex or volatile building blocks. Leave out normal, simple, boring or
standardized parts of your system
Level 3
Here you can specify the inner structure of (some) building blocks from level 2 as white
boxes.
When you need more detailed levels of your architecture please copy this part of arc42 for
additional levels.
Runtime View
Contents
The runtime view describes concrete behavior and interactions of the system’s building
blocks in form of scenarios from the following areas:
• important use cases or features: how do building blocks execute them?
• interactions at critical external interfaces: how do building blocks cooperate with
users and neighboring systems?
Remark: The main criterion for the choice of possible scenarios (sequences, workflows) is
their architectural relevance. It is not important to describe a large number of scenarios.
You should rather document a representative selection.
Motivation
You should understand how (instances of) building blocks of your system perform their job
and communicate at runtime. You will mainly capture scenarios in your documentation to
communicate your architecture to stakeholders that are less willing or able to read and
understand the static models (building block view, deployment view).
Form
There are many notations for describing scenarios, e.g.
• numbered list of steps (in natural language)
• sequence diagrams
• state machines
• …
• <insert description of the notable aspects of the interactions between the building
block instances depicted in this diagram.>
<Runtime Scenario 2>
…
<Runtime Scenario n>
Deployment View
Content
The deployment view describes:
1. technical infrastructure used to execute your system, with infrastructure elements
like geographical locations, environments, computers, processors, channels and net
topologies as well as other infrastructure elements and
Often systems are executed in different environments, e.g. development environment, test
environment, production environment. In such cases you should document all relevant
environments.
Especially document a deployment view if your software is executed as distributed system
with more than one computer, processor, server or container or when you design and
construct your own hardware processors and chips.
From a software perspective it is sufficient to capture only those elements of an
infrastructure that are needed to show a deployment of your building blocks. Hardware
architects can go beyond that and describe an infrastructure to any level of detail they need
to capture.
Motivation
Software does not run without hardware. This underlying infrastructure can and will
influence a system and/or some cross-cutting concepts. Therefore, there is a need to know
the infrastructure.
Maybe a highest level deployment diagram is already contained in section 3.2. as technical
context with your own infrastructure as ONE black box. In this section one can zoom into
this black box using additional deployment diagrams:
• UML offers deployment diagrams to express that view. Use it, probably with nested
diagrams, when your infrastructure is more complex.
• When your (hardware) stakeholders prefer other kinds of diagrams rather than a
deployment diagram, let them use any kind that is able to show nodes and channels
of the infrastructure.
For multiple environments or alternative deployments please copy and adapt this section
of arc42 for all relevant environments.
<Overview Diagram>
Motivation
<explanation in text form>
Infrastructure Level 2
Here you can include the internal structure of (some) infrastructure elements from level 1.
Please copy the structure from level 1 for each selected element.
Cross-cutting Concepts
Content
This section describes overall, principal regulations and solution ideas that are relevant in
multiple parts (= cross-cutting) of your system. Such concepts are often related to multiple
building blocks. They can include many different topics, such as
• models, especially domain models
• implementation rules
Motivation
Concepts form the basis for conceptual integrity (consistency, homogeneity) of the
architecture. Thus, they are an important contribution to achieve inner qualities of your
system.
Some of these concepts cannot be assigned to individual building blocks, e.g. security or
safety.
Form
The form can be varied:
• concept papers with any kind of structure
Structure
A potential (but not mandatory) structure for this section could be:
• Domain concepts
• "Under-the-hood"
• development concepts
• operational concepts
Note: it might be difficult to assign individual concepts to one specific topic on this list.
<Concept 1>
<explanation>
<Concept 2>
<explanation>
…
<Concept n>
<explanation>
Architecture Decisions
Contents
Important, expensive, large scale or risky architecture decisions including rationales. With
"decisions" we mean selecting one alternative based on given criteria.
Please use your judgement to decide whether an architectural decision should be
documented here in this central section or whether you better document it locally (e.g.
within the white box template of one building block).
Avoid redundancy. Refer to section 4, where you already captured the most important
decisions of your architecture.
Motivation
Stakeholders of your system should be able to comprehend and retrace your decisions.
Form
Various options:
• ADR (Documenting Architecture Decisions) for every important decision
See Architecture Decisions in the arc42 documentation. There you will find links and
examples about ADR.
Quality Requirements
Content
This section contains all quality requirements as quality tree with scenarios. The most
important ones have already been described in section 1.2. (quality goals)
Here you can also capture quality requirements with lesser priority, which will not create
high risks when they are not fully achieved.
Motivation
Since quality requirements will have a lot of influence on architectural decisions you
should know for every stakeholder what is really important to them, concrete and
measurable.
See Quality Requirements in the arc42 documentation.
Quality Tree
Content
The quality tree (as defined in ATAM – Architecture Tradeoff Analysis Method) with
quality/evaluation scenarios as leafs.
Motivation
The tree structure with priorities provides an overview for a sometimes large number of
quality requirements.
Form
The quality tree is a high-level overview of the quality goals and requirements:
• tree-like refinement of the term "quality". Use "quality" or "usefulness" as a root
In any case the tree should include links to the scenarios of the following section.
Quality Scenarios
Contents
Concretization of (sometimes vague or implicit) quality requirements using (quality)
scenarios.
These scenarios describe what should happen when a stimulus arrives at the system.
For architects, two kinds of scenarios are important:
• Usage scenarios (also called application scenarios or use case scenarios) describe
the system’s runtime reaction to a certain stimulus. This also includes scenarios that
describe the system’s efficiency or performance. Example: The system reacts to a
user’s request within one second.
Motivation
Scenarios make quality requirements concrete and allow to more easily measure or decide
whether they are fulfilled.
Especially when you want to assess your architecture using methods like ATAM you need
to describe your quality goals (from section 1.2) more precisely down to a level of
scenarios that can be discussed and evaluated.
Form
Tabular or free form text.
Glossary
Contents
The most important domain and technical terms that your stakeholders use when
discussing the system.
You can also see the glossary as source for translations if you work in multi-language
teams.
Motivation
You should clearly define your terms, so that all stakeholders
• have an identical understanding of these terms
Term Definition
<Term-1> <definition-1>
<Term-2> <definition-2>