{
  "mdcontrol": {
    "type": "fmea:control",
    "types": [
      "fmea:control"
    ],
    "description": "We can easily embed control information in Markdown",
    "reference": "/home/nihil/Work/FMEA/sbdl/example/README.md:54"
  },
  "example.cpp": {
    "type": "realisation",
    "types": [
      "realisation"
    ],
    "definition": [
      {
        "identifier": "arch_doc"
      }
    ],
    "description": "C++ implementation of architectural description",
    "reference": "/home/nihil/Work/FMEA/sbdl/example/src/example.cpp:7"
  },
  "method1": {
    "type": "event",
    "types": [
      "event"
    ],
    "aspect": [
      {
        "identifier": "External_System"
      }
    ],
    "function": [
      {
        "identifier": "prod_method"
      },
      {
        "identifier": "sum_method"
      }
    ],
    "output": "some data",
    "description": "External_System::method1",
    "reference": "/home/nihil/Work/FMEA/sbdl/example/src/example.cpp:15"
  },
  "method2": {
    "type": "event",
    "types": [
      "event"
    ],
    "aspect": [
      {
        "identifier": "External_System"
      }
    ],
    "function": [
      {
        "identifier": "prod_method"
      },
      {
        "identifier": "sum_method"
      }
    ],
    "output": "more data",
    "description": "External_System::method2",
    "reference": "/home/nihil/Work/FMEA/sbdl/example/src/example.cpp:20"
  },
  "method3": {
    "type": "event",
    "types": [
      "event"
    ],
    "aspect": [
      {
        "identifier": "External_System"
      }
    ],
    "function": [
      {
        "identifier": "prod_method"
      },
      {
        "identifier": "sum_method"
      }
    ],
    "output": "even more data",
    "description": "External_System::method3",
    "reference": "/home/nihil/Work/FMEA/sbdl/example/src/example.cpp:25"
  },
  "method4": {
    "type": "event",
    "types": [
      "event"
    ],
    "aspect": [
      {
        "identifier": "External_System"
      }
    ],
    "function": [
      {
        "identifier": "prod_method"
      },
      {
        "identifier": "sum_method"
      }
    ],
    "output": "last bit of data",
    "description": "External_System::method4",
    "reference": "/home/nihil/Work/FMEA/sbdl/example/src/example.cpp:30"
  },
  "prod_method": {
    "type": "function",
    "types": [
      "function"
    ],
    "aspect": [
      {
        "identifier": "Example_Item"
      }
    ],
    "event": [
      {
        "identifier": "method1"
      },
      {
        "identifier": "method2"
      },
      {
        "identifier": "method3"
      },
      {
        "identifier": "method4"
      }
    ],
    "description": "Example_Class::prod_method",
    "reference": "/home/nihil/Work/FMEA/sbdl/example/src/example.cpp:43"
  },
  "sum_method": {
    "type": "function",
    "types": [
      "function"
    ],
    "aspect": [
      {
        "identifier": "Example_Item"
      }
    ],
    "event": [
      {
        "identifier": "method1"
      },
      {
        "identifier": "method2"
      },
      {
        "identifier": "method3"
      },
      {
        "identifier": "method4"
      }
    ],
    "description": "Example_Class::sum_method",
    "reference": "/home/nihil/Work/FMEA/sbdl/example/src/example.cpp:47"
  },
  "scenario_a": {
    "type": "fmea:cause",
    "types": [
      "fmea:cause"
    ],
    "aspect": [
      {
        "identifier": "Example_Item"
      }
    ],
    "trace": [
      {
        "identifier": "ev1"
      }
    ],
    "test": [
      {
        "identifier": "test_fail"
      }
    ],
    "description": "Embedding failure identifiers as error codes is useful for traceability (Example_Class::fail)",
    "reference": "/home/nihil/Work/FMEA/sbdl/example/src/example.cpp:58"
  },
  "ev1": {
    "type": "trace",
    "types": [
      "trace"
    ],
    "aspect": [
      {
        "identifier": "Example_Item"
      }
    ],
    "fmea:cause": [
      {
        "identifier": "scenario_a"
      }
    ],
    "reference": "/home/nihil/Work/FMEA/sbdl/example/src/example.cpp:59"
  },
  "test_prodsum": {
    "type": "test",
    "types": [
      "test"
    ],
    "description": "Parametrically test whether products and summations look correct",
    "reference": "/home/nihil/Work/FMEA/sbdl/example/src/example_ut.cpp:21"
  },
  "test_fail": {
    "type": "test",
    "types": [
      "test"
    ],
    "fmea:cause": [
      {
        "identifier": "scenario_a"
      }
    ],
    "description": "Test whether a failing function behaves as expected",
    "reference": "/home/nihil/Work/FMEA/sbdl/example/src/example_ut.cpp:29"
  },
  "test_count": {
    "type": "test",
    "types": [
      "test"
    ],
    "description": "Parametrically test whether counting looks correct",
    "reference": "/home/nihil/Work/FMEA/sbdl/example/src/example_ut.cpp:43"
  },
  "arch_doc": {
    "type": "definition",
    "types": [
      "definition"
    ],
    "realisation": [
      {
        "identifier": "example.cpp"
      }
    ],
    "aspect": [
      {
        "identifier": "Example_System"
      },
      {
        "identifier": "Example_Item"
      },
      {
        "identifier": "External_System"
      }
    ],
    "description": "An example document.",
    "reference": "/home/nihil/Work/FMEA/sbdl/example/doc/Architecture.docx:4"
  },
  "Example_System": {
    "type": "aspect",
    "types": [
      "aspect"
    ],
    "definition": [
      {
        "identifier": "arch_doc"
      }
    ],
    "related": [
      {
        "identifier": "External_System",
        "stereotype": "uses"
      }
    ],
    "requirement": [
      {
        "identifier": "sysreq01"
      }
    ],
    "child": [
      {
        "identifier": "Example_Item"
      }
    ],
    "description": "Example System defines the entirety of the architecture as described.",
    "reference": "/home/nihil/Work/FMEA/sbdl/example/doc/Architecture.docx:14"
  },
  "Example_Item": {
    "type": "aspect",
    "types": [
      "aspect"
    ],
    "definition": [
      {
        "identifier": "arch_doc"
      }
    ],
    "parent": [
      {
        "identifier": "Example_System"
      }
    ],
    "function": [
      {
        "identifier": "prod_method"
      },
      {
        "identifier": "sum_method"
      }
    ],
    "fmea:cause": [
      {
        "identifier": "scenario_a"
      }
    ],
    "trace": [
      {
        "identifier": "ev1"
      }
    ],
    "requirement": [
      {
        "identifier": "dmoreq01"
      },
      {
        "identifier": "dmoreq02"
      },
      {
        "identifier": "dmoreq03"
      }
    ],
    "description": "Example Item defines the behaviour of sub-system entity.",
    "reference": "/home/nihil/Work/FMEA/sbdl/example/doc/Architecture.docx:15"
  },
  "External_System": {
    "type": "aspect",
    "types": [
      "aspect"
    ],
    "definition": [
      {
        "identifier": "arch_doc"
      }
    ],
    "event": [
      {
        "identifier": "method1"
      },
      {
        "identifier": "method2"
      },
      {
        "identifier": "method3"
      },
      {
        "identifier": "method4"
      }
    ],
    "requirement": [
      {
        "identifier": "extreq01"
      }
    ],
    "description": "External System is a placeholder for an external dependency.",
    "reference": "/home/nihil/Work/FMEA/sbdl/example/doc/Architecture.docx:18",
    "stereotype": "COTS"
  },
  "sysreq01": {
    "type": "requirement",
    "types": [
      "requirement"
    ],
    "aspect": [
      {
        "identifier": "Example_System"
      }
    ],
    "child": [
      {
        "identifier": "extreq01"
      },
      {
        "identifier": "dmoreq01"
      },
      {
        "identifier": "dmoreq02"
      }
    ],
    "description": "High-level system requirement",
    "reference": "/home/nihil/Work/FMEA/sbdl/deploy/example/converted_requirements.sbdl:2"
  },
  "extreq01": {
    "type": "requirement",
    "types": [
      "requirement"
    ],
    "aspect": [
      {
        "identifier": "External_System"
      }
    ],
    "parent": [
      {
        "identifier": "sysreq01"
      }
    ],
    "description": "External system requirement",
    "reference": "/home/nihil/Work/FMEA/sbdl/deploy/example/converted_requirements.sbdl:3"
  },
  "dmoreq01": {
    "type": "requirement",
    "types": [
      "requirement"
    ],
    "aspect": [
      {
        "identifier": "Example_Item"
      }
    ],
    "parent": [
      {
        "identifier": "sysreq01"
      }
    ],
    "description": "Example requirement 1",
    "reference": "/home/nihil/Work/FMEA/sbdl/deploy/example/converted_requirements.sbdl:4"
  },
  "dmoreq02": {
    "type": "requirement",
    "types": [
      "requirement"
    ],
    "aspect": [
      {
        "identifier": "Example_Item"
      }
    ],
    "parent": [
      {
        "identifier": "sysreq01"
      }
    ],
    "child": [
      {
        "identifier": "dmoreq03"
      }
    ],
    "description": "Example requirement 2",
    "reference": "/home/nihil/Work/FMEA/sbdl/deploy/example/converted_requirements.sbdl:5"
  },
  "dmoreq03": {
    "type": "requirement",
    "types": [
      "requirement"
    ],
    "aspect": [
      {
        "identifier": "Example_Item"
      }
    ],
    "parent": [
      {
        "identifier": "dmoreq02"
      }
    ],
    "description": "Example sub-requirement 1",
    "reference": "/home/nihil/Work/FMEA/sbdl/deploy/example/converted_requirements.sbdl:6"
  }
}
