<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Markdown Architectural Decision Records: Format and Tool Support</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Oliver Kopp</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Anita Armbruster</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Olaf Zimmermann</string-name>
          <email>olaf.zimmermann@hsr.ch</email>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Institute for Parallel and Distributed Systems, University of Stuttgart Stuttgart</institution>
          ,
          <country country="DE">Germany</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Institute for Software</institution>
          ,
          <addr-line>Hochschule für Technik (HSR FHO) Rapperswil</addr-line>
          ,
          <country country="CH">Switzerland</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>Architectural decision records answer “why” questions about designs and make tacit knowledge explicit. Many architectural decisions are made during development iterations because they have a close connection to the code. It is challenging to come up with task-specific decision capturing practices and supporting tools that are not perceived as time wasters; context switches and media breaks that harm the productivity of coding architects and developers involved in the decision making have to be avoided. To integrate existing architect-centric approaches into the developer toolchain, this paper presents a Markdown-based decision capturing template that we derived from previous work to enhance an existing decision capturing tool for developers. Our early validation results in the context of an open source project suggest that format and tool promise to contribute to an integrated decision capturing practice, with further enhancements being required. Tool and template are available in public GitHub repositories.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        Source code needs to be documented. This typically leads to comments in code and to
external documents. Well-written classes and methods, which have expressive names
and understandable branches [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ], make low-level code comments obsolete. On the other
end of the spectrum, however, wide-ranging decisions of high architectural significance
are made during development iterations; these decisions are not self-explanatory and not
expressed in the code explicitly. An example of such an architectural decision is how to
keep user session data consistent and current across Web shop instances. Typically, these
kind of decisions are recorded in external documentation files, wikis, or tools [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ]. The
primary tool of developers, however, is their Integrated Development Environment (IDE)
with integrated version control system support. Requiring developers to use more tools
has a negative impact on productivity, quality, and motivation to capture architecturally
significant decisions: opening another tool requires some setup and training efort and
leads to undesired, time consuming context switches. Furthermore, model- and
documentcentric tools typically do not integrate themselves well in the developer’s toolchain: The
documents are not committed in plain text format into the version control system—if
versioned along the code at all. Further, the documents might get out of sync with the
code base [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ]. As a consequence, architectural decision capturing practices and tools
oftentimes are perceived as chronophages (time wasters). This holds true particularly for
agile and lean developer communities. We therefore can derive the following problem
statement:
      </p>
      <p>How to seamlessly integrate architectural decision making into developer tool
landscapes — so that decision rationale can be collected under high coding velocity?</p>
      <p>To describe how we propose to overcome this problem, we first provide some
background and related work (Sect. 2). We then introduce the Markdown Architectural
Decision Records (MADR) format as the conceptual contribution of this paper (Sect. 3).
Next, we present a tool implementation for MADR integration that makes our conceptual
solution available to practitioners and validates the novel format (Sect. 4). We have further
validated the MADR format and tooling in an action research (Sect. 5). A discussion on
the findings of MADR follows in Sect. 6. Finally, we conclude the paper (Sect. 7).
2</p>
    </sec>
    <sec id="sec-2">
      <title>Background and Related Work</title>
      <p>
        A large body of research work on capturing architectural decisions exists; the state of the
art is for instance surveyed by Alexeeva et al. [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] and by Capilla et al. [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]. Specifically to
the context of service orientation and service composition, the SOA Decision Modeling
(SOAD) project [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ] investigated architectural decisions recurring in SOA design and
introduced a seven-step method to identify, make, and capture such decisions. SOAD
used a fixed, rather comprehensive meta model. Taking that experience into account, our
template and tool, to be introduced in Sect. 3 and 4, are designed in such as way that
they are applicable on service-oriented middleware and tool development projects (as
evidenced in the validation activity presented in Sect. 5), but not limited to such projects.
      </p>
      <p>
        More recently, templates, practices, and tools specifically targeting coding architects
and agile developers, who make certain architectural decisions and contribute to others,
have been proposed. Seven diferent formats, including comprehensive and lean ones,
are compared by Zimmermann et al. [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ]. They also introduce ADMentor, a decision
modeling add-in for Sparx Enterprise Architect. ADMentor supports two primary user
stories and themes, a) problem space modeling and b) architectural decision capturing.
Problem spaces model recurring decisions along with options to be considered. The
architectural decision capturing capability then allows architects on projects to keep
track of decisions made in a decision log as suggested by the ISO/IEC/IEEE 42010
standard [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] for architecture description. Other features include rich text editing, model
linking and refactoring, and reporting/analysis. Decision capturing is streamlined by
lightweight decision capturing templates such as Y-Statements [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ]; Question, Option,
Criteria (QOC) diagrams [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ] are supported as well.
      </p>
      <p>
        General best practice recommendations for decision documentation are presented by
Zdun et al. [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ], including the above mentioned Y-Statement format originally developed
for—and first applied in–an industry project setting at ABB [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ]. Y-Statements contain
the aspects context, concern, the chosen option, other possible options, the expected
positive results, and the accepted downsides as well as (optionally) additional decision
1
2
3
4
5
6
7
      </p>
      <p>
        In the context of &lt;use case/user story u&gt;,
facing &lt;concern c&gt;
we decided for &lt;option o&gt;
and neglected &lt;other options&gt;,
to achieve &lt;system qualities/desired consequences&gt;,
accepting &lt;downside / undesired consequences&gt;,
because &lt;additional rationale&gt;.
rationale (Fig. 1). As a structured text format, Y-Statements can be put in external
documentation, in code comments [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ], or in Java annotations3.
      </p>
      <p>
        An example of such a Y-statement is: “In the context of the Web shop service, facing
the need to keep user session data consistent and current across shop instances, we
decided for the Database Session State pattern [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] (and against Client Session State [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]
or Server Session State [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]) to achieve cloud elasticity, accepting that a session database
needs to be designed, implemented, and replicated.”
      </p>
      <p>
        A rather popular4 practitioner’s tool isadr-tools5. It uses the format by Nygard [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ],
which covers less aspects than the Y-Statements. For instance, the neglected options are
not shown. Both Y-statements and Nygard’s Architecture Decision Records (ADRs) have
been designed with a lean and agile mindset that is in line with the vision of software
specification and documentation in Continuous Software Development (CSD) [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ].
3
      </p>
    </sec>
    <sec id="sec-3">
      <title>Markdown Architectural Decision Records (MADR)</title>
      <p>To keep the architectural decisions close to common developer tools and artifacts, we
propose to 1) use Markdown as decision capturing syntax (with a proposed format
derived from Y-Statements) and 2) place the decisions in the folder docs/adr of code
projects that are version-controlled.</p>
      <p>Markdown is a text format, which enables common version control systems such as
git to be used. This makes difing within the IDE possible. Our decision to use Markdown
as markup language (instead of other markup languages) is supported by the following
rationale: 1) it eases writing, 2) Markdown is the markup language for comments by
users within GitHub (such as in gists, issues, or pull requests), and 3) already available
rendering tools can be leveraged.</p>
      <p>
        We call the new format Markdown Architectural Decision Records (MADR). Some
early adopters of the Y-Statement syntax had commented that the sentences can get really
long and are therefore hard to read for inexperienced readerships. As Markdown is a
structured text format in which headings can mark sections, we decided to deviate from
the pure Y-format and transferred it into a section-oriented one (similar to the successful
approach of the adr-tools outlined in Sect. 2). The starting point was the “Decision
Capture Template” [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ], which we adapted to contain all elements of the Y-Statements.
3 GitHub project “Embedded Architectural Decision Records,”https://adr.github.io/e-adr/
4 630 stars on GitHub as of 2018-01-31
5 https://github.com/npryce/adr-tools
      </p>
      <p>We indicate the backward mapping to the Y-format when describing the new template
below (in parenthesis).</p>
      <p>Figure 2 shows the format of MADR. Each record takes a title (line 1) followed
by the user story (line 3). The user story is made optional because its content further
elaborates on the mandatory context (from Y-Statement syntax) and problem statement
(line 5). More information on the context such as forces or decision drivers (Y-Statement’s
concerns and aims) can be appended (line 6). The considered alternatives (including the
chosen and the neglected ones; Y-Statement) are listed as items (lines 8 to 11). The chosen
alternative includes a justification (Y-Statement’s “to achieve” rationale) and optionally
consequences (Y-Statement’s “accepting that” downsides). Follow-up decisions are are
also listed as items (lines 13 to 19). If a longer pro/con evaluation of the alternatives
makes sense, each option can be listed as a separate heading followed by an itemized list
of pros and cons. In summary, all aspects of a Y-Statement are covered in the template,
even though the consequences are left optional.</p>
      <p>Note that MADR does not restrict the Markdown syntax. Thus, it is possible to
include images, ASCII art, and PlantUML6.</p>
      <p>
        The folder docs/adr was chosen to enable rendering in GitHub pages. Since 2016,
GitHub pages allows for rendering a homepage out of the docs folder [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]. When
updating files in the docs folder, GitHub processes them using the Jekyll site generator7,
which basically converts markdown files into HTML files using a given template. As
a consequence, when placing the ADRs into a subfolder, it is possible to make them
accessible on the World-Wide Web.
4
      </p>
    </sec>
    <sec id="sec-4">
      <title>Tool Implementation and Integration</title>
      <p>To support MADR we extended adr-tools (made available at https://github.com/
adr/adr-tools) and created adr-log (made available as npm package at https://www.
npmjs.com/package/adr-log).</p>
      <p>The original adr-tools support arbitrary formats when creating new architectural
decisions by providing an appropriate template.md file. New ADRs are put in the
format nnnn - title-lowercased-with-dashes.md in the directory, where nnnn is a
number starting from 0001. Besides basic creation functionality, adr-tools allows for
linking ADRs. For instance, a new ADR can supersede an existing ADR. For that the
status of an ADR is tracked under a new heading “Status”. In MADR, we record the
status and the status changes in a table with the columns “Date” and “Status”. We
extended adr-tools to support the command adr new docs/adr madr, where docs/adr
is the directory where architectural decisions are put and madr denotes that MADR
should be used as template format. At each call of adr new TITLE, MADR is used as
template instead of Nygard’s template. Furthermore, we are working on supporting
the status table in the beginning so that it is 1) created when an ADR is superseded
by another ADR (e.g., adr -s 1 Use SQL Database, tells adr-tools to add a note at
ADR-0001 that it is superseded) and 2) amended when there is a new link to an ADR
(e.g., adr -l "1:Amends:Amended by" Use PosgreSQL, tells adr-tools that ADR-0001
is amended by the newly created ADR).</p>
      <p>An index of existing architectural decision records is a welcome feature to gain
an overview of the decision making status and be able to navigate the log eficiently.
The existing adr-tools already ofers the command adr generate toc. This, however,
generates a completely new file and does not allow to add arbitrary text before or
after the toc. For the generation of the table of contents of one markdown file, the
tool markdown-toc8 inserts the TOC after the token &lt;!-- toc --&gt;. Inspired by that
idea, we implemented adr-log, which places the list of all ADRs after the placeholder
&lt;!-- adrlog --&gt;. We chose the name “log” instead of “toc” to be consistent with the
database terminology, where a set of records forms a log.
8 https://www.npmjs.com/package/markdown-toc
5</p>
    </sec>
    <sec id="sec-5">
      <title>Preliminary Validation</title>
      <p>
        We validated MADR and tooling in action research [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] on the Eclipse Winery project
that is driven by one architect, three coding architects, and two developers (students, staf
members, and volunteers).
      </p>
      <p>In action research, the researcher joins a project and influences it actively, for instance
as coach, pacemaker, or technical reviewer9. Applying action research allowed us to
experience the practical applicability of our concepts ourselves and to interact with and
learn from other users while they used MADR. We followed a very basic study protocol
of 1) define validation goals and approach, 2a) present MADR and adr-tools to the
project team and create a first MADR record ourselves (lead by example), 2b) monitor
usage and remind project participants, e.g. in sprint planning meetings and retrospectives,
2c) give feedback to project participants and ofer coaching, and finally 3) collect data
and seek suggestions for improvements from project participants.</p>
      <p>A total of 16 MADR records were created.10 Eight of these fully filled out the
template, and eight used a shortened form without the explicit section “Pros and Cons
of the Alternatives”. Two of the short forms additionally include details of the solution.
When working with code, it was easy to document the decision along with the code. A
single file had to be copied and renamed (or adr new TITLE invoked). Then, one could
start with writing down the context, options, chosen option, and the pros and cons.</p>
      <p>
        Seasoned professionals did not have issues to fill out the template and even came up
with their own. Inexperienced students were able to document their decisions ranging
from supported writing to independent writing. A major issue for them was to understand
how to replace the placeholders in markdown. For instance, in ADR-000511, the options
listed there did neither have ids nor short titles. The chosen option was referred to as
“Option D”, but there was no explicit option D — only a fourth unnamed option. Some
students also reported that they were afraid to be criticized for options not considered.
Since MADR makes it explicit which options a solution was chosen from, it is easy to
detect if an important option was missed. On the positive side, this leads to a teaching
efect and allows supervisors to get to know which knowledge the students lack at a
certain educational level. On the one hand, it was agreed, that is dificult to create an ADR
if the technology itself is new. On the other hand, it was also agreed that is necessary to
document decisions after one has enough knowledge (e.g., after experimenting longer
with diferent options) to make it feasible for others to understand the decisions taken.
This is in line with Parnas’s view on a rational software process [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ].
      </p>
      <p>In summary, the users reported that the MADR template and tools helped them to be
clear about the available options and to choose the best fitting one based on arguments.
The template was filled during the discussions and helped to refine the pros and cons of
alternatives.
9 This is diferent from exposing selected research results to users and merely observing them
(this would be done in a controlled experiment).
10 https://github.com/eclipse/winery/tree/d84b9d7b6c9828fd20bc6b1e2fcc0cf3653c3d43/
docs/adr
11 https://github.com/eclipse/winery/blob/d84b9d7b6c9828fd20bc6b1e2fcc0cf3653c3d43/
docs/adr/0005-XML-editor-does-not-enforce-validation.md
6</p>
    </sec>
    <sec id="sec-6">
      <title>Discussion</title>
      <p>Feedback from reviews and workshop raised some concerns whether placing ADRs in a
single folder really scales: a complex system may consist of multiple microservices, and
each microservice can itself be structured in diferent modules even written in diferent
languages. Thus, the granularity of the decisions is diferent. Two possible solutions are:
A) adding a category to each ADR and ofer filtering. B) putting each ADR close to the
source code where the decision is taken, e.g., src/doc/adr for a Java project.</p>
      <p>A developer began to add longer explanations of code howtos to the ADR. The
reasoning was that this code howto is very related to the ADR and that there is one
place where the decision and the coding consequences can be found. Thus, an interesting
question requiring further investigation and discussion would be whether close-to-code
(M)ADR documentation leads to an increased use of documentation (in comparison to
external documentation).</p>
      <p>
        The presented version 1.0.0 of MADR uses slightly diferent terms than the
YStatements (Sect. 3). We plan to refactor future versions of MADR12 to be even closer to
the terms of Y-Statements as these are proven in industry projects and have been gaining
momentum recently [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ].
      </p>
      <p>In large projects, it is common to create a project management issue for each change.
In MADR, the link to an issue is optional to enable application in small projects. These
two diferent settings call for MADR profiles . For instance, one such profile could enforce
the link to the ticket/issue number (pointing to an entry in task management system) and
make the section “pros and cons of the alternatives” mandatory.
7</p>
    </sec>
    <sec id="sec-7">
      <title>Conclusion and Outlook</title>
      <p>This paper presented Markdown Architectural Decision (MADR) records, a decision
capturing template derived from earlier work on a Y-statement format. We also presented
an extension of existing adr-tools to enable command-line tools for handling MADRs
as well as a new adr-log tool to generate a list of existing ADRs.</p>
      <p>Based on the early feedback, we plan to improve the creation and review process.
We also consider to develop a comprehensive yet lean getting started tutorial and quick
reference card.</p>
      <p>
        MADRs capture a concrete decision in the context of a single particular project.
However, problems and options may reoccur and diferent options might be chosen in
diferent contexts. For instance when a system runs normally in the absence of partitions,
one choose between diferent trade ofs between latency and consistency [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. Each trade
of has its pros and cons which are diferently weighted in each context. Currently, it is
possible to model this “problem space” using AD-Mentor [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ], but not using Markdown.
To come up with a corresponding Markdown format and tool integration for knowledge
sharing and reuse therefore is an enhancement to be considered in the future evolution
of MADR.
12 The development of MADR takes place at https://github.com/adr/madr/.
      </p>
      <p>Acknowledgments This work is partially funded by the BMWi projects SmartOrchestra
(01MD16001F) and IC4F (01MA17008G).
All links were last followed on February 14, 2018.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Abadi</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          :
          <article-title>Consistency Tradeofs in Modern Distributed Database System Design: CAP is Only Part of the Story</article-title>
          .
          <source>Computer</source>
          <volume>45</volume>
          (
          <issue>2</issue>
          ),
          <fpage>37</fpage>
          -
          <lpage>42</lpage>
          (
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Alexeeva</surname>
            ,
            <given-names>Z.</given-names>
          </string-name>
          , et al.:
          <article-title>Design Decision Documentation: A Literature Overview</article-title>
          .
          <source>In: Software Architecture</source>
          , pp.
          <fpage>84</fpage>
          -
          <lpage>101</lpage>
          . Springer International Publishing (
          <year>2016</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Avison</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          , et al.:
          <source>Action Research. Communications of the ACM</source>
          <volume>42</volume>
          (
          <issue>1</issue>
          ),
          <fpage>94</fpage>
          -
          <lpage>97</lpage>
          (
          <year>1999</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Capilla</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Jansen</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Tang</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Avgeriou</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Babar</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          <article-title>A.: 10 Years of Software Architecture Knowledge Management: Practice and Future</article-title>
          .
          <source>Journal of Systems and Software</source>
          <volume>116</volume>
          ,
          <fpage>191</fpage>
          -
          <lpage>205</lpage>
          (jun
          <year>2016</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Fowler</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Rice</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          :
          <article-title>Patterns of Enterprise Application Architecture</article-title>
          .
          <source>Addison-Wesley</source>
          , Boston, Mass. (
          <year>2003</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Harrer</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lenhard</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Dietz</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          :
          <article-title>Java by Comparison: Become a Java Craftsman in 80 Examples</article-title>
          . Pragmatic
          <string-name>
            <surname>Bookshelf</surname>
          </string-name>
          (
          <year>2018</year>
          ), http://java.by-comparison.com
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7. ISO/IEC/IEEE 42010:
          <year>2011</year>
          :
          <article-title>Systems and software engineering - Architecture description</article-title>
          .
          <source>Standard (Dec</source>
          <year>2011</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Leschner</surname>
          </string-name>
          , J.:
          <article-title>Simpler GitHub Pages publishing (</article-title>
          <year>2016</year>
          ), https://github.com/blog/2228- simpler
          <article-title>-github-pages-publishing</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>MacLean</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Young</surname>
            ,
            <given-names>R.M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bellotti</surname>
            ,
            <given-names>V.M.E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Moran</surname>
            ,
            <given-names>T.P.</given-names>
          </string-name>
          : Questions, Options, and
          <article-title>Criteria: Elements of Design Space Analysis</article-title>
          .
          <source>Hum.-Comput. Interact</source>
          .
          <volume>6</volume>
          (
          <issue>3</issue>
          ),
          <fpage>201</fpage>
          -
          <lpage>250</lpage>
          (
          <year>Sep 1991</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Nygard</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <article-title>Documenting architecture decisions (</article-title>
          <year>2011</year>
          ), http://thinkrelevance.com/blog/ 2011/11/15/documenting-architecture-decisions
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Parnas</surname>
            ,
            <given-names>D.L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Clements</surname>
          </string-name>
          , P.C.
          <article-title>: A rational design process: How and why to fake it</article-title>
          .
          <source>In: Formal Methods and Software Development</source>
          , pp.
          <fpage>80</fpage>
          -
          <lpage>100</lpage>
          . Springer Science + Business Media (
          <year>1985</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Schubanz</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <article-title>Full Decision Capture Template (</article-title>
          <year>2017</year>
          ), https://github.com/schubmat/ DecisionCapture/blob/ca03429634ac2779b37e12aee34dd09a5fdbdcd3/templates/ captureTemplate_full.md
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13. ThoughtWorks: Technology Radar Vol.
          <volume>17</volume>
          , https://thoughtworks.com/radar
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Van Heesch</surname>
            ,
            <given-names>U.</given-names>
          </string-name>
          , et al.:
          <source>Software Specification and Documentation in Continuous Software Development: A Focus Group Report. In: 22nd European Conference on Pattern Languages of Programs (EuroPLoP'17)</source>
          . ACM (
          <year>2017</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>Zdun</surname>
            ,
            <given-names>U.</given-names>
          </string-name>
          , et al.:
          <article-title>Sustainable Architectural Design Decisions</article-title>
          .
          <source>IEEE Software 30(6)</source>
          ,
          <fpage>46</fpage>
          -
          <lpage>53</lpage>
          (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <surname>Zimmermann</surname>
            ,
            <given-names>O.</given-names>
          </string-name>
          :
          <source>Making Architectural Knowledge Sustainable - Industrial Practice Report and Outlook</source>
          (
          <year>2012</year>
          ),
          <source>presentation at SATURN</source>
          <year>2012</year>
          , http://www.sei.cmu.edu/library/ abstracts/presentations/zimmermann-saturn2012.cfm
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <surname>Zimmermann</surname>
            ,
            <given-names>O.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Koehler</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Leymann</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          :
          <article-title>Architectural Decision Models as MicroMethodology for Service-Oriented Analysis and Design</article-title>
          .
          <source>In: Workshop on Software Engineering Methods for Service Oriented Architecture</source>
          <year>2007</year>
          (
          <article-title>SEMSOA)</article-title>
          .
          <source>CEUR</source>
          (
          <year>2007</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18.
          <string-name>
            <surname>Zimmermann</surname>
            ,
            <given-names>O.</given-names>
          </string-name>
          , et al.:
          <article-title>Architectural Decision Guidance Across Projects - Problem Space Modeling, Decision Backlog Management and Cloud Computing Knowledge</article-title>
          .
          <source>In: 12th Working IEEE/IFIP Conference on Software Architecture (WICSA)</source>
          .
          <source>IEEE</source>
          (
          <year>2015</year>
          )
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>