# Mermaid Anforderungsdiagramm-Spickzettel

Anforderungen, ihre Arten und das, was sie erfüllt.

## Eine Anforderung

Alles sitzt in geschweiften Klammern. id, text, risk und verifymethod sind die vier Felder.

```mermaid
requirementDiagram
  requirement checkout_req {
    id: 1
    text: Orders must be payable online.
    risk: high
    verifymethod: test
  }
```

![Eine Anforderungsbox namens „checkout_req“, mit ID 1, dem Text „Orders must be payable online“, dem Risiko „High“ und der Prüfung „Test“.](/diagrams/requirement/requirement.svg)

## Die Arten von Anforderungen

Das Schlüsselwort vor der Id sagt, welche Art es ist: functional, performance, interface, physical oder eine Designbeschränkung.

```mermaid
requirementDiagram
  functionalRequirement payment_req {
    id: 1.1
    text: Card payments must be authorised.
    risk: high
    verifymethod: test
  }
  performanceRequirement response_req {
    id: 1.2
    text: Pages must load in under a second.
    risk: medium
    verifymethod: analysis
  }
  interfaceRequirement api_req {
    id: 1.3
    text: The payment API must stay stable.
    risk: low
    verifymethod: inspection
  }
```

![Drei Anforderungsboxen nebeneinander: eine funktionale Anforderung, eine Performance-Anforderung und eine Interface-Anforderung, jede mit eigener Id, Text, Risiko und Prüfmethode.](/diagrams/requirement/kinds.svg)

## Elemente

Ein Element ist das Ding außerhalb des Systems, über das eine Anforderung spricht. type sagt, was es ist, docRef zeigt auf es.

```mermaid
requirementDiagram
  requirement checkout_req {
    id: 1
    text: Orders must be payable online.
    risk: high
    verifymethod: test
  }
  element checkout_service {
    type: service
    docRef: reqs/checkout
  }
```

![Eine Anforderungsbox neben einer Elementbox, die als Service markiert ist, mit einem Dokumentverweis auf reqs/checkout.](/diagrams/requirement/elements.svg)

## Beziehungen

Das Wort zwischen den Pfeilen ist die Beziehung: contains, satisfies, verifies, traces, derives, refines und copies.

```mermaid
requirementDiagram
  requirement checkout_req {
    id: 1
    text: Orders must be payable online.
    risk: high
    verifymethod: test
  }
  functionalRequirement payment_req {
    id: 1.1
    text: Card payments must be authorised.
    risk: high
    verifymethod: test
  }
  element checkout_service {
    type: service
  }
  checkout_req - contains -> payment_req
  checkout_service - satisfies -> payment_req
  checkout_service - verifies -> payment_req
```

![Eine Anforderungsbox und eine Box für eine funktionale Anforderung, verbunden durch eine contains-Beziehung, mit einer Elementbox, die mit beiden durch satisfies und verifies verbunden ist.](/diagrams/requirement/relations.svg)

## In Mernyx zeichnen

Öffne eine .mmd-Datei, verschiebe einen Knoten auf der Canvas, und der Quellcode kommt mit. Nativ auf macOS, ohne Browser dazwischen.
