Skip to content

Architectural Decision Records (ADR)

Entwurfsentscheidungen systematisch dokumentieren

ADRs können auch im selben Repo zum Code eingecheckt werden. So können ADRs bei Diskussionen erstellte werden (z.B.: im Status Proposed) und bei der Implementierung im selben PR wie der Code updated werden. Dadurch werden sie auch gereviewed.

Kontext

  • Fragestellung - Warum und Wozu?
  • Einflüsse - Wer, Was, Wie beeinflusst die Entscheidung?
    • Stakeholder, Randbedingungen, Qualitätsanforderungen
  • Kriterien - Bewertungsmassstäbe
    • Pro, Cons ist oft nicht gut, weil sie schon oft biased sind
    • Nach was will ich überhaupt bewerten?
      • Danach schreibe ich nicht auf was pros/cons sind sondern welche Entscheidung erfüllt die Kriterien (am besten)
    • Beispiele:
      • Kosten
      • Teamerfahrung
      • Teamskalierbarkeit
      • Softwareskalierbarkeit
      • Komplexität
      • Testbarkeit

Alternativen - Lösungsmöglichkeiten
Entscheidungen - Welche Lösung und warum!

  • Sind immutable aber neue Entscheidungen können diese "überschreiben". Die Dokumentation bleibt. (bzw. ADRs können auch ins Archiv verschoben oder als deprecated markiert werden). Ich möchte gerne die aktuell gültigen ADRs sehen/finden.

Konsequenzen - Positive und negative Folgen

  • Was erlaubt uns nun die Entscheidung? Was verhindert diese?
  • Entscheidungen haben oftmals einen "Haltbarkeitswert" - Sie sollten nach einer gewissen Zeit wieder betrachtet werden.

Template Example

See:
- adr-1-template
- adr-2-template

ADR Example

Use Markdown Architectural Decision Records

Context and Problem Statement

We want to record architectural decisions made in this project independent whether decisions concern the architecture ("architectural decision record"), the code, or other fields.
Which format and structure should these records follow?

Considered Options

Decision Outcome

Chosen option: "MADR 4.0.0", because

  • Implicit assumptions should be made explicit.
    Design documentation is important to enable people understanding the decisions later on.
    See also "A rational design process: How and why to fake it".
  • MADR allows for structured capturing of any decision.
  • The MADR format is lean and fits our development style.
  • The MADR structure is comprehensible and facilitates usage & maintenance.
  • The MADR project is vivid.

Related