Sirendocs

Requirement Diagram

Complete syntax reference for Siren requirement diagrams.

Requirement diagrams show traceability between requirements, designs, and tests. Use them for compliance tracking, system engineering, or audit documentation.

Minimal Example

{
  "type": "requirement",
  "requirements": [
    { "id": "r1", "label": "User Authentication" },
    { "id": "r2", "label": "Password Policy" }
  ],
  "relationships": [
    { "from": "r1", "to": "r2", "type": "contains" }
  ]
}

Full Example

{
  "type": "requirement",
  "requirements": [
    { "id": "req1", "label": "Secure Login", "kind": "functional", "risk": "high", "status": "approved" },
    { "id": "req2", "label": "MFA Support", "kind": "functional", "risk": "high", "status": "approved" },
    { "id": "req3", "label": "Password >= 12 chars", "kind": "performance", "risk": "medium", "status": "approved" },
    { "id": "des1", "label": "Auth Module Design", "kind": "design", "risk": "low", "status": "implemented" },
    { "id": "test1", "label": "Login Integration Test", "kind": "test", "risk": "low", "status": "passed" },
    { "id": "test2", "label": "MFA Unit Test", "kind": "test", "risk": "low", "status": "passed" }
  ],
  "relationships": [
    { "from": "req1", "to": "req2", "type": "contains" },
    { "from": "req1", "to": "req3", "type": "derives" },
    { "from": "des1", "to": "req1", "type": "satisfies" },
    { "from": "test1", "to": "req1", "type": "verifies" },
    { "from": "test2", "to": "req2", "type": "verifies" },
    { "from": "req3", "to": "req1", "type": "refines" }
  ]
}

Requirements

Each requirement represents a traceable item.

FieldRequiredDescription
idYesUnique identifier — relationships reference this
labelYesRequirement description
kindNoCategory (e.g., "functional", "performance", "design", "test")
riskNoRisk level (e.g., "low", "medium", "high")
statusNoCurrent status (e.g., "draft", "approved", "implemented", "passed")
{ "id": "req1", "label": "Encrypt data at rest", "kind": "functional", "risk": "high", "status": "approved" }

Relationships

Each relationship connects two requirements.

FieldRequiredDescription
fromYesSource requirement id
toYesTarget requirement id
typeYesRelationship type (see below)

Relationship Types

TypeMeaning
"traces"General traceability link
"derives"Target is derived from source
"satisfies"Source satisfies the target requirement
"verifies"Source verifies the target requirement
"refines"Source refines or adds detail to target
"contains"Source contains target as a sub-requirement

More Examples

Compliance Traceability

{
  "type": "requirement",
  "requirements": [
    { "id": "reg1", "label": "GDPR Data Portability", "kind": "functional", "risk": "high", "status": "approved" },
    { "id": "req1", "label": "Export User Data as JSON", "kind": "functional", "risk": "medium", "status": "implemented" },
    { "id": "req2", "label": "Export completes in < 30s", "kind": "performance", "risk": "medium", "status": "approved" },
    { "id": "des1", "label": "Async Export Pipeline", "kind": "design", "risk": "low", "status": "implemented" },
    { "id": "test1", "label": "Export Endpoint Test", "kind": "test", "risk": "low", "status": "passed" },
    { "id": "test2", "label": "Performance Benchmark", "kind": "test", "risk": "low", "status": "passed" }
  ],
  "relationships": [
    { "from": "req1", "to": "reg1", "type": "derives" },
    { "from": "req2", "to": "reg1", "type": "derives" },
    { "from": "des1", "to": "req1", "type": "satisfies" },
    { "from": "des1", "to": "req2", "type": "satisfies" },
    { "from": "test1", "to": "req1", "type": "verifies" },
    { "from": "test2", "to": "req2", "type": "verifies" }
  ]
}

On this page