@memoarchitect/ontology 0.4.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +19 -0
- package/README.md +70 -0
- package/examples/gpca-pump/dhf/documents/DOC-RMP-001.md +210 -0
- package/examples/gpca-pump/memo.config.yaml +9 -0
- package/examples/gpca-pump/methodology/gpca_methodology.sysml +11 -0
- package/examples/gpca-pump/methodology/gpca_profiles.sysml +25 -0
- package/examples/gpca-pump/methodology/gpca_scope.sysml +25 -0
- package/examples/gpca-pump/model/catalog/gpca_analysis.sysml +231 -0
- package/examples/gpca-pump/model/catalog/gpca_architecture.sysml +272 -0
- package/examples/gpca-pump/model/catalog/gpca_behavior_actions.sysml +81 -0
- package/examples/gpca-pump/model/catalog/gpca_behavior_modes.sysml +363 -0
- package/examples/gpca-pump/model/catalog/gpca_behavior_subsystems.sysml +205 -0
- package/examples/gpca-pump/model/catalog/gpca_context.sysml +113 -0
- package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +172 -0
- package/examples/gpca-pump/model/catalog/gpca_formal_behavior.sysml +173 -0
- package/examples/gpca-pump/model/catalog/gpca_interfaces.sysml +1062 -0
- package/examples/gpca-pump/model/catalog/gpca_operational.sysml +209 -0
- package/examples/gpca-pump/model/catalog/gpca_physical.sysml +53 -0
- package/examples/gpca-pump/model/catalog/gpca_requirements.sysml +1505 -0
- package/examples/gpca-pump/model/catalog/gpca_risk.sysml +744 -0
- package/examples/gpca-pump/model/catalog/gpca_system.sysml +144 -0
- package/examples/gpca-pump/model/catalog/gpca_trace.sysml +696 -0
- package/examples/gpca-pump/model/catalog/gpca_verification.sysml +285 -0
- package/examples/gpca-pump/model/samples/README.md +24 -0
- package/examples/gpca-pump/model/samples/action_flow_view.sysml +72 -0
- package/examples/gpca-pump/model/samples/action_flow_view.viewlayout +9 -0
- package/examples/gpca-pump/model/samples/functional_flow_view.sysml +153 -0
- package/examples/gpca-pump/model/samples/interconnection_view.sysml +93 -0
- package/examples/gpca-pump/model/samples/interconnection_view.viewlayout +99 -0
- package/examples/gpca-pump/model/samples/operational_behaviour_view.sysml +145 -0
- package/examples/gpca-pump/model/samples/tree_view.sysml +56 -0
- package/examples/gpca-pump/model/views/behavior_action_flow_view.sysml +41 -0
- package/examples/gpca-pump/model/views/context_system_context_view.sysml +43 -0
- package/examples/gpca-pump/model/views/cybersecurity_cybersecurity_view.sysml +44 -0
- package/examples/gpca-pump/model/views/document_architecture_description_view.sysml +29 -0
- package/examples/gpca-pump/model/views/document_cyber_assessment_view.sysml +28 -0
- package/examples/gpca-pump/model/views/document_dhf_index_view.sysml +29 -0
- package/examples/gpca-pump/model/views/document_hazard_analysis_view.sysml +29 -0
- package/examples/gpca-pump/model/views/document_rmf_view.sysml +29 -0
- package/examples/gpca-pump/model/views/document_sdd_view.sysml +29 -0
- package/examples/gpca-pump/model/views/document_threat_model_view.sysml +28 -0
- package/examples/gpca-pump/model/views/document_usability_view.sysml +28 -0
- package/examples/gpca-pump/model/views/document_vv_view.sysml +29 -0
- package/examples/gpca-pump/model/views/functional_function_allocation_view.sysml +42 -0
- package/examples/gpca-pump/model/views/functional_function_browser_view.sysml +41 -0
- package/examples/gpca-pump/model/views/logical_device_interconnect_view.sysml +43 -0
- package/examples/gpca-pump/model/views/logical_logical_architecture_view.sysml +42 -0
- package/examples/gpca-pump/model/views/logical_mode_state_view.sysml +42 -0
- package/examples/gpca-pump/model/views/logical_system_decomposition_view.sysml +44 -0
- package/examples/gpca-pump/model/views/operational_scenario_sequence_view.sysml +41 -0
- package/examples/gpca-pump/model/views/operational_use_case_view.sysml +43 -0
- package/examples/gpca-pump/model/views/physical_physical_bom_view.sysml +41 -0
- package/examples/gpca-pump/model/views/requirements_requirements_trace_view.sysml +42 -0
- package/examples/gpca-pump/model/views/risk_fmea_view.sysml +42 -0
- package/examples/gpca-pump/model/views/risk_risk_chain_view.sysml +44 -0
- package/examples/gpca-pump/model/views/software_software_architecture_view.sysml +43 -0
- package/examples/gpca-pump/model/views/verification_verification_coverage_view.sysml +42 -0
- package/memo.manifest.yaml +13 -0
- package/methodologies/default/memo.package.yaml +9 -0
- package/methodologies/gpca/memo.package.yaml +9 -0
- package/ontology/memo.package.yaml +8 -0
- package/ontology/memo.rendering.yaml +47 -0
- package/package.json +65 -0
- package/profile/archetypes.yaml +36 -0
- package/profile/memo.package.yaml +9 -0
- package/profile/templates/connected-device/starter.sysml +8 -0
- package/profile/templates/infusion-pump/starter.sysml +8 -0
- package/profile/templates/monitoring-device/starter.sysml +8 -0
- package/profile/templates/samd/starter.sysml +8 -0
- package/src/architecture/analysis/memo_fmea.sysml +91 -0
- package/src/architecture/assurance/memo_assurance.sysml +29 -0
- package/src/architecture/behavior/memo_behavior.sysml +65 -0
- package/src/architecture/constraints/memo_constraints.sysml +14 -0
- package/src/architecture/context/memo_context.sysml +58 -0
- package/src/architecture/cybersecurity/memo_cybersecurity.sysml +99 -0
- package/src/architecture/decisions/memo_decisions.sysml +12 -0
- package/src/architecture/functions/memo_functions.sysml +30 -0
- package/src/architecture/hardware_structure/memo_hardware_structure.sysml +15 -0
- package/src/architecture/interfaces/memo_interfaces.sysml +103 -0
- package/src/architecture/logical_structure/memo_logical_structure.sysml +10 -0
- package/src/architecture/operational/memo_operational.sysml +51 -0
- package/src/architecture/physical/memo_physical_architecture.sysml +19 -0
- package/src/architecture/requirements/memo_requirements.sysml +69 -0
- package/src/architecture/risk/memo_arch_risk.sysml +7 -0
- package/src/architecture/risk/memo_risk.sysml +80 -0
- package/src/architecture/software_structure/memo_software_structure.sysml +44 -0
- package/src/architecture/system/memo_system_analysis.sysml +54 -0
- package/src/artifacts/clinical_safety_report.sysml +12 -0
- package/src/artifacts/cybersecurity_assessment_report.sysml +12 -0
- package/src/artifacts/definitions/memo_artifact_definitions.sysml +12 -0
- package/src/artifacts/design_change_log.sysml +12 -0
- package/src/artifacts/design_history_file_index.sysml +12 -0
- package/src/artifacts/design_input_plan.sysml +12 -0
- package/src/artifacts/design_output_plan.sysml +12 -0
- package/src/artifacts/evidence_record.sysml +12 -0
- package/src/artifacts/failure_mode_effects_analysis.sysml +12 -0
- package/src/artifacts/hazard_analysis_report.sysml +12 -0
- package/src/artifacts/labeling_specification.sysml +12 -0
- package/src/artifacts/requirements_specification.sysml +12 -0
- package/src/artifacts/requirements_traceability_matrix.sysml +12 -0
- package/src/artifacts/risk_management_plan.sysml +12 -0
- package/src/artifacts/software_design_description.sysml +12 -0
- package/src/artifacts/software_development_plan.sysml +12 -0
- package/src/artifacts/soup_list.sysml +12 -0
- package/src/artifacts/system_architecture_description.sysml +12 -0
- package/src/artifacts/test_protocol.sysml +12 -0
- package/src/artifacts/test_report.sysml +12 -0
- package/src/artifacts/threat_model_report.sysml +12 -0
- package/src/artifacts/usability_engineering_report.sysml +12 -0
- package/src/compliance/artifacts/memo_artifacts.sysml +13 -0
- package/src/compliance/change/memo_change.sysml +17 -0
- package/src/compliance/dhf-templates/21cfr820/change-record.md +45 -0
- package/src/compliance/dhf-templates/21cfr820/design-input.md +67 -0
- package/src/compliance/dhf-templates/21cfr820/design-output.md +80 -0
- package/src/compliance/dhf-templates/21cfr820/design-review.md +51 -0
- package/src/compliance/dhf-templates/21cfr820/design-validation.md +64 -0
- package/src/compliance/dhf-templates/21cfr820/design-verification.md +57 -0
- package/src/compliance/dhf-templates/21cfr820/dhf-index.md +111 -0
- package/src/compliance/dhf-templates/21cfr820/transfer-plan.md +50 -0
- package/src/compliance/dhf-templates/21cfr820/user-needs.md +81 -0
- package/src/compliance/dhf-templates/21cfr820/vv-plan.md +89 -0
- package/src/compliance/dhf-templates/21cfr820/vv-report.md +85 -0
- package/src/compliance/dhf-templates/fda-cybersecurity/incident-response.md +66 -0
- package/src/compliance/dhf-templates/fda-cybersecurity/postmarket-surveillance.md +63 -0
- package/src/compliance/dhf-templates/fda-cybersecurity/security-arch.md +83 -0
- package/src/compliance/dhf-templates/fda-cybersecurity/threat-model.md +100 -0
- package/src/compliance/dhf-templates/fda-cybersecurity/vuln-assessment.md +77 -0
- package/src/compliance/dhf-templates/iec-62304/change-control.md +40 -0
- package/src/compliance/dhf-templates/iec-62304/detailed-design.md +69 -0
- package/src/compliance/dhf-templates/iec-62304/integration-test.md +68 -0
- package/src/compliance/dhf-templates/iec-62304/sad.md +115 -0
- package/src/compliance/dhf-templates/iec-62304/sbom.md +67 -0
- package/src/compliance/dhf-templates/iec-62304/sdp.md +108 -0
- package/src/compliance/dhf-templates/iec-62304/soup.md +77 -0
- package/src/compliance/dhf-templates/iec-62304/srs.md +138 -0
- package/src/compliance/dhf-templates/iec-62304/sw-traceability.md +111 -0
- package/src/compliance/dhf-templates/iec-62304/system-test.md +67 -0
- package/src/compliance/dhf-templates/iec-62366/formative-eval.md +47 -0
- package/src/compliance/dhf-templates/iec-62366/summative-eval.md +69 -0
- package/src/compliance/dhf-templates/iec-62366/task-analysis.md +57 -0
- package/src/compliance/dhf-templates/iec-62366/ue-plan.md +81 -0
- package/src/compliance/dhf-templates/iec-62366/ui-spec.md +61 -0
- package/src/compliance/dhf-templates/iec-62366/urra.md +74 -0
- package/src/compliance/dhf-templates/iec-62366/use-spec.md +61 -0
- package/src/compliance/dhf-templates/iso-14971/fmea.md +93 -0
- package/src/compliance/dhf-templates/iso-14971/fta.md +70 -0
- package/src/compliance/dhf-templates/iso-14971/har.md +165 -0
- package/src/compliance/dhf-templates/iso-14971/risk-benefit.md +51 -0
- package/src/compliance/dhf-templates/iso-14971/risk-matrix.md +51 -0
- package/src/compliance/dhf-templates/iso-14971/rmp.md +169 -0
- package/src/compliance/dhf-templates/iso-14971/rmr.md +101 -0
- package/src/compliance/dhf-templates/shared/snippets/approval-block.md +16 -0
- package/src/compliance/dhf-templates/shared/snippets/document-control-header.md +15 -0
- package/src/compliance/dhf-templates/shared/snippets/references-section.md +16 -0
- package/src/compliance/dhf-templates/shared/snippets/revision-history-table.md +11 -0
- package/src/compliance/document_views/memo_document_views.sysml +7 -0
- package/src/compliance/iso14971/risk_management_file.sysml +16 -0
- package/src/compliance/postmarket/memo_postmarket.sysml +16 -0
- package/src/core/common/memo_common.sysml +50 -0
- package/src/core/consistency_rules/consistency_rules.sysml +41 -0
- package/src/core/dimensions/dimensions.sysml +37 -0
- package/src/core/enumerations/memo_enumerations.sysml +562 -0
- package/src/core/methodology_scope/methodology_scope.sysml +46 -0
- package/src/core/relationships/memo_relationships.sysml +230 -0
- package/src/core/semantics/semantics.sysml +20 -0
- package/src/core/stdlib/collections.sysml +6 -0
- package/src/core/stdlib/functions.sysml +6 -0
- package/src/core/stdlib/scalars.sysml +6 -0
- package/src/core/stdlib/time.sysml +6 -0
- package/src/medical_device_library.sysml +100 -0
- package/src/memo_namespaces.sysml +668 -0
- package/src/methodology/LICENSES/MIT.txt +19 -0
- package/src/methodology/memo_archetypes.sysml +93 -0
- package/src/methodology/memo_core.sysml +53 -0
- package/src/methodology/memo_gates.sysml +11 -0
- package/src/methodology/memo_patterns.sysml +12 -0
- package/src/methodology/memo_profiles.sysml +218 -0
- package/src/methodology/memo_rules.sysml +15 -0
- package/src/methodology/memo_viewpoints.sysml +5 -0
- package/src/methodology/memo_workflow.sysml +14 -0
- package/src/rules/closure/closure_rules.sysml +180 -0
- package/src/rules/coverage/coverage_rules.sysml +258 -0
- package/src/rules/crosslayer/cross_layer_rules.sysml +38 -0
- package/src/rules/lifecycle/lifecycle_rules.sysml +41 -0
- package/src/rules/quantitative/quantitative_rules.sysml +34 -0
- package/src/viewpoints/clinical/clinical_evidence_view.sysml +13 -0
- package/src/viewpoints/clinical/clinical_viewpoint.sysml +25 -0
- package/src/viewpoints/context/context_viewpoint.sysml +25 -0
- package/src/viewpoints/context/system_context_view.sysml +29 -0
- package/src/viewpoints/cybersecurity/cybersecurity_assessment_view.sysml +13 -0
- package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +27 -0
- package/src/viewpoints/cybersecurity/threat_model_view.sysml +13 -0
- package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +82 -0
- package/src/viewpoints/functional/function_allocation_view.sysml +29 -0
- package/src/viewpoints/functional/functional_viewpoint.sysml +25 -0
- package/src/viewpoints/functional/system_functional_tree_view.sysml +29 -0
- package/src/viewpoints/logical/logical_architecture_view.sysml +29 -0
- package/src/viewpoints/logical/logical_viewpoint.sysml +25 -0
- package/src/viewpoints/operational/operational_viewpoint.sysml +25 -0
- package/src/viewpoints/operational/use_case_view.sysml +29 -0
- package/src/viewpoints/physical/network_topology_view.sysml +29 -0
- package/src/viewpoints/physical/physical_bom_view.sysml +29 -0
- package/src/viewpoints/physical/physical_viewpoint.sysml +25 -0
- package/src/viewpoints/requirements/requirements_traceability_view.sysml +29 -0
- package/src/viewpoints/requirements/requirements_viewpoint.sysml +25 -0
- package/src/viewpoints/risk/risk_chain_view.sysml +30 -0
- package/src/viewpoints/risk/risk_viewpoint.sysml +25 -0
- package/src/viewpoints/software/software_architecture_view.sysml +29 -0
- package/src/viewpoints/software/software_viewpoint.sysml +25 -0
- package/src/viewpoints/usability/usability_engineering_view.sysml +13 -0
- package/src/viewpoints/usability/usability_viewpoint.sysml +25 -0
- package/src/viewpoints/verification/verification_coverage_view.sysml +29 -0
- package/src/viewpoints/verification/verification_viewpoint.sysml +25 -0
- package/template/memo.package.yaml +5 -0
- package/template/src/catalog/starter.sysml +12 -0
- package/template/src/documents/.gitkeep +1 -0
- package/template/src/views/.gitkeep +1 -0
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
package memo_examples_gpca_pump_model_views_verification_verification_coverage_view {
|
|
2
|
+
private import ScalarValues::*;
|
|
3
|
+
|
|
4
|
+
private import memo_viewpoints_definitions::*;
|
|
5
|
+
private import memo_viewpoints_context_context_viewpoint::*;
|
|
6
|
+
private import memo_viewpoints_operational_operational_viewpoint::*;
|
|
7
|
+
private import memo_viewpoints_functional_functional_viewpoint::*;
|
|
8
|
+
private import memo_viewpoints_logical_logical_viewpoint::*;
|
|
9
|
+
private import memo_viewpoints_software_software_viewpoint::*;
|
|
10
|
+
private import memo_viewpoints_physical_physical_viewpoint::*;
|
|
11
|
+
private import memo_viewpoints_requirements_requirements_viewpoint::*;
|
|
12
|
+
private import memo_viewpoints_risk_risk_viewpoint::*;
|
|
13
|
+
private import memo_viewpoints_verification_verification_viewpoint::*;
|
|
14
|
+
private import memo_core_enumerations::*;
|
|
15
|
+
|
|
16
|
+
view gpcaVerificationCoverageView : MemoDiagramView {
|
|
17
|
+
expose memo_examples_gpca_pump_model_views_verification_verification_coverage_view::*;
|
|
18
|
+
attribute depth = 2;
|
|
19
|
+
attribute :>> id = "VIEW-VER-101";
|
|
20
|
+
attribute :>> name = "GPCA_VerificationCoverageView";
|
|
21
|
+
attribute :>> title = "GPCA Verification and Validation Coverage View";
|
|
22
|
+
attribute :>> shortDescription = "Requirements and risk controls against verification cases, validation cases, and evidence.";
|
|
23
|
+
attribute :>> outputKind = (ViewOutputKind::matrix);
|
|
24
|
+
attribute :>> presentationKind = (PresentationKind::traceMatrix);
|
|
25
|
+
attribute :>> viewKind = DiagramViewKind::grid;
|
|
26
|
+
attribute :>> diagramType = "req";
|
|
27
|
+
attribute :>> dataSourceDescription = "VerifiedBy, Validates, and ProducesEvidence links in the GPCA model";
|
|
28
|
+
attribute :>> autoPopulate = true;
|
|
29
|
+
attribute :>> queryDescription = "Include every requirement and risk control with its verification/validation status and produced evidence.";
|
|
30
|
+
attribute :>> documentUsage = ("VV", "DHF", "QMSR");
|
|
31
|
+
part :>> selectionQuery {
|
|
32
|
+
attribute :>> id = "QRY-VER-101";
|
|
33
|
+
attribute :>> name = "GPCA_VerificationCoverageQuery";
|
|
34
|
+
attribute :>> includeElementKinds = ("Requirement", "RiskControl", "VerificationCase", "ValidationCase", "TestArtifact", "Evidence");
|
|
35
|
+
attribute :>> includeRelationshipKinds = ("VerifiedBy", "Validates", "ProducesEvidence");
|
|
36
|
+
attribute :>> includeLayers = ("requirements", "risk", "assurance");
|
|
37
|
+
attribute :>> selectionExpression = "product == 'GPCA'";
|
|
38
|
+
attribute :>> rationaleText = "Coverage gaps surface as requirements or controls without linked cases or evidence.";
|
|
39
|
+
}
|
|
40
|
+
part :>> viewpointDefinition = verificationViewpoint;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
manifest: 1
|
|
2
|
+
packages:
|
|
3
|
+
"@memoarchitect/ontology": ./ontology
|
|
4
|
+
"@memoarchitect/medical-modeling-profile": ./profile
|
|
5
|
+
"@memoarchitect/methodology-default": ./methodologies/default
|
|
6
|
+
"@memoarchitect/methodology-gpca": ./methodologies/gpca
|
|
7
|
+
init:
|
|
8
|
+
defaultExtends: "@memoarchitect/medical-modeling-profile"
|
|
9
|
+
rootImport: "memo_medical_device_library"
|
|
10
|
+
template: ./template
|
|
11
|
+
archetypes: ./profile/archetypes.yaml
|
|
12
|
+
examples:
|
|
13
|
+
gpca: ./examples/gpca-pump
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
name: "@memoarchitect/methodology-default"
|
|
2
|
+
version: "0.4.3"
|
|
3
|
+
type: methodology
|
|
4
|
+
extends: "@memoarchitect/ontology"
|
|
5
|
+
sysmlDir: "../../src/methodology"
|
|
6
|
+
description: "MEMO default medical-device methodology — selects viewpoints/views/DHF documents from @memoarchitect/ontology and adds rules, gates, patterns, profiles, and workflow."
|
|
7
|
+
license: "MIT"
|
|
8
|
+
tags: ["methodology", "medical-device", "iso-14971", "iec-62304", "memo"]
|
|
9
|
+
usage: ["viewpoints", "views", "rules", "gates", "patterns", "profiles", "workflow", "dhf"]
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
name: "@memo/methodology-gpca"
|
|
2
|
+
version: "0.4.3"
|
|
3
|
+
type: methodology
|
|
4
|
+
extends: "@memo/methodology-default"
|
|
5
|
+
sysmlDir: "../../examples/gpca-pump/methodology"
|
|
6
|
+
description: "GPCA infusion pump methodology — subtraction-based tailoring of @memo/methodology-default for the non-networked prototype variant. Excludes cybersecurity and SOUP."
|
|
7
|
+
license: "MIT"
|
|
8
|
+
tags: ["methodology", "medical-device", "gpca", "tailoring"]
|
|
9
|
+
usage: ["viewpoints", "views", "rules", "gates", "patterns", "profiles", "workflow", "dhf"]
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
name: "@memoarchitect/ontology"
|
|
2
|
+
version: "0.4.3"
|
|
3
|
+
type: ontology
|
|
4
|
+
description: "MEMO — the single canonical medical-device ontology: core semantics, the Arcadia-inspired architecture layers (context, requirements, behavior, structure, interfaces, risk, cybersecurity, assurance, …), compliance, viewpoints, views, and invariant rules. One namespace (memo::), one src/ tree."
|
|
5
|
+
license: "MIT"
|
|
6
|
+
tags: ["mbse", "sysml-v2", "arcadia", "iso-42010", "medical-device", "ontology", "iso-14971", "iec-62304"]
|
|
7
|
+
usage: ["kinds", "relationships"]
|
|
8
|
+
sysmlDir: "../src"
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# @memoarchitect/ontology rendering configuration
|
|
2
|
+
# Architecture layer colors — v12 Visual Map palette
|
|
3
|
+
|
|
4
|
+
layers:
|
|
5
|
+
- id: operational
|
|
6
|
+
label: Operational
|
|
7
|
+
color: "#C0392B"
|
|
8
|
+
|
|
9
|
+
- id: behavioral
|
|
10
|
+
label: Behavioral
|
|
11
|
+
color: "#E74C3C"
|
|
12
|
+
|
|
13
|
+
- id: functional
|
|
14
|
+
label: Functional
|
|
15
|
+
color: "#E67E22"
|
|
16
|
+
|
|
17
|
+
- id: logical
|
|
18
|
+
label: Logical
|
|
19
|
+
color: "#7B68EE"
|
|
20
|
+
|
|
21
|
+
- id: software
|
|
22
|
+
label: Software
|
|
23
|
+
color: "#F39C12"
|
|
24
|
+
|
|
25
|
+
- id: software-extension
|
|
26
|
+
label: Software Extension (ROS)
|
|
27
|
+
color: "#D4AC0D"
|
|
28
|
+
|
|
29
|
+
- id: hardware
|
|
30
|
+
label: Hardware
|
|
31
|
+
color: "#95A5A6"
|
|
32
|
+
|
|
33
|
+
- id: safety
|
|
34
|
+
label: Safety
|
|
35
|
+
color: "#E74C3C"
|
|
36
|
+
|
|
37
|
+
- id: security
|
|
38
|
+
label: Security
|
|
39
|
+
color: "#2C3E50"
|
|
40
|
+
|
|
41
|
+
- id: privacy
|
|
42
|
+
label: Privacy
|
|
43
|
+
color: "#8E44AD"
|
|
44
|
+
|
|
45
|
+
- id: verification
|
|
46
|
+
label: Verification
|
|
47
|
+
color: "#2ECC71"
|
package/package.json
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@memoarchitect/ontology",
|
|
3
|
+
"version": "0.4.4",
|
|
4
|
+
"description": "MEMO — Medical Engineering Modelling Ontology. Pure SysML v2 medical-device ontology with native constraints, portable to any conformant SysML v2 tool (SysIDE, SysON, sysand).",
|
|
5
|
+
"engines": {
|
|
6
|
+
"node": ">=20"
|
|
7
|
+
},
|
|
8
|
+
"keywords": [
|
|
9
|
+
"sysml-v2",
|
|
10
|
+
"kerml",
|
|
11
|
+
"medical-device",
|
|
12
|
+
"iso-14971",
|
|
13
|
+
"iec-62304",
|
|
14
|
+
"ontology",
|
|
15
|
+
"mbse"
|
|
16
|
+
],
|
|
17
|
+
"license": "MIT",
|
|
18
|
+
"repository": {
|
|
19
|
+
"type": "git",
|
|
20
|
+
"url": "git+https://github.com/memoarchitect/memo.git"
|
|
21
|
+
},
|
|
22
|
+
"publishConfig": {
|
|
23
|
+
"access": "public"
|
|
24
|
+
},
|
|
25
|
+
"exports": {
|
|
26
|
+
"./package.json": "./package.json",
|
|
27
|
+
"./manifest": "./memo.manifest.yaml",
|
|
28
|
+
"./src/*": "./src/*",
|
|
29
|
+
"./profile/*": "./profile/*",
|
|
30
|
+
"./methodologies/*": "./methodologies/*",
|
|
31
|
+
"./templates/*": "./template/*",
|
|
32
|
+
"./examples/*": "./examples/*"
|
|
33
|
+
},
|
|
34
|
+
"files": [
|
|
35
|
+
"README.md",
|
|
36
|
+
"LICENSE",
|
|
37
|
+
"memo.manifest.yaml",
|
|
38
|
+
"ontology/memo.package.yaml",
|
|
39
|
+
"ontology/memo.rendering.yaml",
|
|
40
|
+
"profile/memo.package.yaml",
|
|
41
|
+
"profile/archetypes.yaml",
|
|
42
|
+
"profile/templates/",
|
|
43
|
+
"methodologies/default/memo.package.yaml",
|
|
44
|
+
"methodologies/gpca/memo.package.yaml",
|
|
45
|
+
"src/architecture/",
|
|
46
|
+
"src/artifacts/",
|
|
47
|
+
"src/compliance/",
|
|
48
|
+
"src/core/",
|
|
49
|
+
"src/methodology/*.sysml",
|
|
50
|
+
"src/methodology/LICENSES/",
|
|
51
|
+
"src/rules/",
|
|
52
|
+
"src/viewpoints/",
|
|
53
|
+
"src/medical_device_library.sysml",
|
|
54
|
+
"src/memo_namespaces.sysml",
|
|
55
|
+
"template/",
|
|
56
|
+
"examples/"
|
|
57
|
+
],
|
|
58
|
+
"scripts": {
|
|
59
|
+
"build": "bash scripts/build-kpar.sh",
|
|
60
|
+
"check": "bash scripts/build-kpar.sh",
|
|
61
|
+
"test": "node --test test/package.test.mjs",
|
|
62
|
+
"docs:serve": "python3 -m mkdocs serve",
|
|
63
|
+
"docs:build": "python3 -m mkdocs build --strict"
|
|
64
|
+
}
|
|
65
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
archetypes:
|
|
2
|
+
- id: samd
|
|
3
|
+
label: Software as Medical Device (SaMD)
|
|
4
|
+
description: Clinical decision support, diagnostic algorithm, AI/ML tool, mobile medical app
|
|
5
|
+
category: device-class
|
|
6
|
+
templateDir: samd
|
|
7
|
+
includedLayers: [context, requirements, functions, logical_structure, software_structure, risk, assurance, cybersecurity]
|
|
8
|
+
includedStandards: [ISO 14971, IEC 62304, IEC 82304-1, FDA Cybersecurity Guidance]
|
|
9
|
+
- id: connected
|
|
10
|
+
label: Connected / IoT Device
|
|
11
|
+
description: Remote monitoring, wearable, smart device with cloud connectivity and cybersecurity requirements
|
|
12
|
+
category: device-class
|
|
13
|
+
templateDir: connected-device
|
|
14
|
+
includedLayers: [context, requirements, functions, logical_structure, logical_interfaces, software_structure, hardware_structure, risk, assurance, cybersecurity]
|
|
15
|
+
includedStandards: [ISO 14971, IEC 62304, 21 CFR 820, FDA Cybersecurity Guidance]
|
|
16
|
+
- id: monitoring
|
|
17
|
+
label: Monitoring / Diagnostic Device
|
|
18
|
+
description: Patient monitor, ECG, SpO2, vital signs, bedside diagnostic equipment
|
|
19
|
+
category: device-class
|
|
20
|
+
templateDir: monitoring-device
|
|
21
|
+
includedLayers: [context, requirements, functions, logical_structure, logical_interfaces, physical_interfaces, software_structure, hardware_structure, risk, assurance]
|
|
22
|
+
includedStandards: [ISO 14971, IEC 62304, IEC 60601-1, 21 CFR 820]
|
|
23
|
+
- id: infusion_pump
|
|
24
|
+
label: Infusion / Drug Delivery Device
|
|
25
|
+
description: Infusion pump, syringe driver, implantable drug delivery, dosing device
|
|
26
|
+
category: device-class
|
|
27
|
+
templateDir: infusion-pump
|
|
28
|
+
includedLayers: [context, requirements, functions, logical_structure, logical_interfaces, physical_interfaces, software_structure, hardware_structure, behavior, risk, arch_risk, assurance, cybersecurity]
|
|
29
|
+
includedStandards: [ISO 14971, IEC 62304, IEC 60601-1, 21 CFR 820, ISO 13485]
|
|
30
|
+
- id: blank
|
|
31
|
+
label: Blank Project
|
|
32
|
+
description: Start from scratch with a minimal SysML shell
|
|
33
|
+
category: device-class
|
|
34
|
+
templateDir: ""
|
|
35
|
+
includedLayers: []
|
|
36
|
+
includedStandards: []
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
name: "@memoarchitect/medical-modeling-profile"
|
|
2
|
+
version: "0.4.3"
|
|
3
|
+
type: profile
|
|
4
|
+
extends:
|
|
5
|
+
- "@memoarchitect/ontology"
|
|
6
|
+
description: "Closure rules, viewpoints, and starter templates for medical device modeling"
|
|
7
|
+
license: "MIT"
|
|
8
|
+
tags: ["medical-device", "iso-14971", "iec-62304", "iso-13485", "modeling-profile"]
|
|
9
|
+
usage: ["rules", "viewpoints", "templates"]
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
package memo_architecture_analysis {
|
|
2
|
+
private import ScalarValues::*;
|
|
3
|
+
|
|
4
|
+
private import memo_core_common::*;
|
|
5
|
+
private import memo_core_enumerations::*;
|
|
6
|
+
item def FMEAWorksheet specializes TraceableElement {
|
|
7
|
+
attribute analysisScope : String;
|
|
8
|
+
attribute standardReference : String;
|
|
9
|
+
attribute analysisBasis : String;
|
|
10
|
+
attribute revisionDate : String;
|
|
11
|
+
attribute reviewer : String;
|
|
12
|
+
}
|
|
13
|
+
item def FailureMode specializes TraceableElement {
|
|
14
|
+
attribute failureModeKind : FailureModeKind;
|
|
15
|
+
attribute severityRating : Integer;
|
|
16
|
+
attribute occurrenceRating : Integer;
|
|
17
|
+
attribute detectionRating : Integer;
|
|
18
|
+
attribute rpn : Integer;
|
|
19
|
+
attribute criticality : CriticalityKind;
|
|
20
|
+
}
|
|
21
|
+
item def FailureEffect specializes TraceableElement {
|
|
22
|
+
attribute effectLevel : FailureEffectLevelKind;
|
|
23
|
+
attribute effectOnPatient : String;
|
|
24
|
+
attribute effectOnOperator : String;
|
|
25
|
+
attribute effectOnSystem : String;
|
|
26
|
+
attribute severity : SeverityKind;
|
|
27
|
+
}
|
|
28
|
+
item def FailureCause specializes TraceableElement {
|
|
29
|
+
attribute causeCategory : FailureCauseCategoryKind;
|
|
30
|
+
attribute causeDescription : String;
|
|
31
|
+
attribute occurrenceRating : ProbabilityKind;
|
|
32
|
+
attribute preventionMethod : String;
|
|
33
|
+
}
|
|
34
|
+
item def DetectionMethod specializes TraceableElement {
|
|
35
|
+
attribute methodKind : DetectionMethodKind;
|
|
36
|
+
attribute detectionPoint : String;
|
|
37
|
+
attribute confidence : DetectionKind;
|
|
38
|
+
}
|
|
39
|
+
part def FMEAAction specializes VerifiableElement {
|
|
40
|
+
attribute actionKind : FMEAActionKind;
|
|
41
|
+
attribute responsible : String;
|
|
42
|
+
attribute targetCompletionDate : String;
|
|
43
|
+
attribute revisedRpn : Integer;
|
|
44
|
+
}
|
|
45
|
+
item def FaultTree specializes TraceableElement {
|
|
46
|
+
attribute standardReference : String;
|
|
47
|
+
attribute analysisScope : String;
|
|
48
|
+
attribute topEventDescription : String;
|
|
49
|
+
attribute cutSetSummary : String;
|
|
50
|
+
attribute revisionDate : String;
|
|
51
|
+
}
|
|
52
|
+
item def FaultTreeEvent specializes TraceableElement {
|
|
53
|
+
attribute eventKind : FaultTreeEventKind;
|
|
54
|
+
attribute probability : Real;
|
|
55
|
+
attribute failureRate : Real;
|
|
56
|
+
attribute exposureTime : Real;
|
|
57
|
+
attribute :>> description : String;
|
|
58
|
+
}
|
|
59
|
+
item def FaultTreeGate specializes TraceableElement {
|
|
60
|
+
attribute gateKind : FaultTreeGateKind;
|
|
61
|
+
attribute kValue : Integer;
|
|
62
|
+
attribute nValue : Integer;
|
|
63
|
+
}
|
|
64
|
+
item def MinimalCutSet specializes TraceableElement {
|
|
65
|
+
attribute cutSetOrder : Integer;
|
|
66
|
+
attribute probability : Real;
|
|
67
|
+
attribute involvedEvents : String;
|
|
68
|
+
attribute significance : String;
|
|
69
|
+
}
|
|
70
|
+
item def HAZOPStudy specializes TraceableElement {
|
|
71
|
+
attribute standardReference : String;
|
|
72
|
+
attribute processDescription : String;
|
|
73
|
+
attribute studyScope : String;
|
|
74
|
+
attribute teamComposition : String;
|
|
75
|
+
}
|
|
76
|
+
item def HAZOPNode specializes TraceableElement {
|
|
77
|
+
attribute nodeDescription : String;
|
|
78
|
+
attribute designIntent : String;
|
|
79
|
+
attribute operatingConditions : String;
|
|
80
|
+
}
|
|
81
|
+
item def HAZOPDeviation specializes TraceableElement {
|
|
82
|
+
attribute guideWord : HAZOPGuideWordKind;
|
|
83
|
+
attribute parameter : String;
|
|
84
|
+
attribute cause : String;
|
|
85
|
+
attribute consequence : String;
|
|
86
|
+
attribute existingSafeguard : String;
|
|
87
|
+
attribute severity : SeverityKind;
|
|
88
|
+
attribute likelihood : ProbabilityKind;
|
|
89
|
+
attribute recommendation : String;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
package memo_architecture_assurance {
|
|
2
|
+
private import ScalarValues::*;
|
|
3
|
+
|
|
4
|
+
private import memo_core_common::*;
|
|
5
|
+
private import memo_core_enumerations::*;
|
|
6
|
+
part def VerificationCase specializes VerifiableElement {
|
|
7
|
+
attribute methodKind : VerificationMethodKind;
|
|
8
|
+
attribute acceptanceCriteria : String;
|
|
9
|
+
attribute status : String;
|
|
10
|
+
}
|
|
11
|
+
part def ValidationCase specializes VerifiableElement {
|
|
12
|
+
attribute validationMethod : ValidationMethodKind;
|
|
13
|
+
attribute userParticipation : String;
|
|
14
|
+
attribute acceptanceCriteria : String;
|
|
15
|
+
attribute clinicalContext : String;
|
|
16
|
+
}
|
|
17
|
+
part def TestArtifact specializes EvidenceElement {
|
|
18
|
+
attribute version : String;
|
|
19
|
+
attribute lifecycleState : LifecycleStateKind;
|
|
20
|
+
attribute artifactKind : ArtifactKind;
|
|
21
|
+
attribute resultSummary : String;
|
|
22
|
+
}
|
|
23
|
+
part def Evidence specializes EvidenceElement {
|
|
24
|
+
attribute version : String;
|
|
25
|
+
attribute lifecycleState : LifecycleStateKind;
|
|
26
|
+
attribute evidenceType : String;
|
|
27
|
+
attribute integrityStatus : String;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
package memo_architecture_behavior {
|
|
2
|
+
private import ScalarValues::*;
|
|
3
|
+
|
|
4
|
+
private import memo_core_common::*;
|
|
5
|
+
private import memo_core_enumerations::*;
|
|
6
|
+
part def BehaviorMachine specializes ArchitectureElement {
|
|
7
|
+
attribute machineKind : String;
|
|
8
|
+
attribute executionSemantics : String;
|
|
9
|
+
}
|
|
10
|
+
part def ModeState specializes ArchitectureElement {
|
|
11
|
+
attribute modeKind : String;
|
|
12
|
+
attribute entryCondition : String;
|
|
13
|
+
attribute exitCondition : String;
|
|
14
|
+
}
|
|
15
|
+
part def Transition specializes ArchitectureElement {
|
|
16
|
+
attribute trigger : String;
|
|
17
|
+
attribute guardSummary : String;
|
|
18
|
+
attribute effectSummary : String;
|
|
19
|
+
attribute priority : Integer;
|
|
20
|
+
attribute sameStepCritical : Boolean;
|
|
21
|
+
attribute sourceState : String;
|
|
22
|
+
attribute targetState : String;
|
|
23
|
+
}
|
|
24
|
+
part def BehaviorProperty specializes VerifiableElement {
|
|
25
|
+
attribute propertyKind : BehaviorPropertyKind;
|
|
26
|
+
attribute languageKind : PropertyLanguageKind;
|
|
27
|
+
attribute formalExpression : String;
|
|
28
|
+
}
|
|
29
|
+
part def AssumeProperty specializes BehaviorProperty;
|
|
30
|
+
part def GuaranteeProperty specializes BehaviorProperty;
|
|
31
|
+
part def Contract specializes VerifiableElement { attribute contractScope : String; }
|
|
32
|
+
part def PropertySet specializes VerifiableElement { attribute propertySetScope : String; }
|
|
33
|
+
part def ActivityAction specializes ArchitectureElement {
|
|
34
|
+
attribute actionKind : ActionKind;
|
|
35
|
+
attribute inputSummary : String;
|
|
36
|
+
attribute outputSummary : String;
|
|
37
|
+
attribute wcetMs : String;
|
|
38
|
+
attribute safetyRelevant : Boolean;
|
|
39
|
+
}
|
|
40
|
+
part def ActivityFlow specializes ArchitectureElement {
|
|
41
|
+
attribute flowKind : ActivityFlowKind;
|
|
42
|
+
attribute guardCondition : String;
|
|
43
|
+
attribute weight : String;
|
|
44
|
+
}
|
|
45
|
+
part def InteractionScenario specializes TraceableElement {
|
|
46
|
+
attribute scenarioKind : ScenarioKind;
|
|
47
|
+
attribute relatedCapability : String;
|
|
48
|
+
attribute diagramReference : String;
|
|
49
|
+
}
|
|
50
|
+
part def InteractionMessage specializes TraceableElement {
|
|
51
|
+
attribute messageKind : MessageKind;
|
|
52
|
+
attribute sequenceOrder : Integer;
|
|
53
|
+
attribute senderComponent : String;
|
|
54
|
+
attribute receiverComponent : String;
|
|
55
|
+
attribute exchangeItem : String;
|
|
56
|
+
attribute timingConstraintMs : String;
|
|
57
|
+
}
|
|
58
|
+
part def TimingConstraint specializes VerifiableElement {
|
|
59
|
+
attribute constraintKind : TimingConstraintKind;
|
|
60
|
+
attribute minMs : String;
|
|
61
|
+
attribute maxMs : String;
|
|
62
|
+
attribute referenceElement : String;
|
|
63
|
+
attribute verificationMethod : VerificationMethodKind;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
package memo_architecture_constraints {
|
|
2
|
+
private import ScalarValues::*;
|
|
3
|
+
|
|
4
|
+
doc /* archLayer: constraints */
|
|
5
|
+
|
|
6
|
+
constraint def MaxResponseTimeConstraint {
|
|
7
|
+
attribute responseTimeMs : Real;
|
|
8
|
+
attribute maxAllowedMs : Real;
|
|
9
|
+
}
|
|
10
|
+
constraint def LockoutIntervalConstraint {
|
|
11
|
+
attribute elapsedMs : Real;
|
|
12
|
+
attribute lockoutMs : Real;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
package memo_architecture_context {
|
|
2
|
+
private import ScalarValues::*;
|
|
3
|
+
|
|
4
|
+
private import memo_core_common::*;
|
|
5
|
+
private import memo_core_enumerations::*;
|
|
6
|
+
private import memo_core_relationships::*;
|
|
7
|
+
part def IntendedUse specializes DocumentedElement {
|
|
8
|
+
attribute indication : String;
|
|
9
|
+
attribute contraindication : String;
|
|
10
|
+
attribute patientPopulation : String;
|
|
11
|
+
attribute clinicalBenefit : String;
|
|
12
|
+
attribute regulatoryClassification : String;
|
|
13
|
+
}
|
|
14
|
+
part def Actor specializes TraceableElement {
|
|
15
|
+
attribute actorKind : ActorKind;
|
|
16
|
+
attribute trainingLevel : String;
|
|
17
|
+
}
|
|
18
|
+
part def UseContext specializes TraceableElement {
|
|
19
|
+
attribute careSetting : String;
|
|
20
|
+
attribute environment : String;
|
|
21
|
+
attribute jurisdiction : String;
|
|
22
|
+
attribute connectedUse : Boolean;
|
|
23
|
+
attribute intendedUseReference : String;
|
|
24
|
+
}
|
|
25
|
+
part def UseError specializes TraceableElement {
|
|
26
|
+
attribute errorCategory : UseErrorCategoryKind;
|
|
27
|
+
attribute taskReference : String;
|
|
28
|
+
attribute severity : SeverityKind;
|
|
29
|
+
attribute rootCauseType : String;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
connection def InteractsWith :> SemanticLink {
|
|
33
|
+
end contextParticipant : Actor;
|
|
34
|
+
end target : TraceableElement;
|
|
35
|
+
}
|
|
36
|
+
// Directional context-level data flow between boundary entities
|
|
37
|
+
// (Fig 2.1-style "Data Flow" edges).
|
|
38
|
+
connection def ExchangesWith :> SemanticLink {
|
|
39
|
+
end source : TraceableElement;
|
|
40
|
+
end target : TraceableElement;
|
|
41
|
+
}
|
|
42
|
+
// Physical connection between boundary entities (fluid path,
|
|
43
|
+
// mechanical mounting) as opposed to a data flow.
|
|
44
|
+
connection def ConnectsPhysically :> SemanticLink {
|
|
45
|
+
end source : TraceableElement;
|
|
46
|
+
end target : TraceableElement;
|
|
47
|
+
}
|
|
48
|
+
// Anchors an intended use to the system it governs.
|
|
49
|
+
connection def GovernsUse :> SemanticLink {
|
|
50
|
+
end intendedUse : IntendedUse;
|
|
51
|
+
end governedElement : TraceableElement;
|
|
52
|
+
}
|
|
53
|
+
// Binds a use context to the system or environment it applies to.
|
|
54
|
+
connection def AppliesInContext :> SemanticLink {
|
|
55
|
+
end useContext : UseContext;
|
|
56
|
+
end subjectElement : TraceableElement;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
package memo_architecture_cybersecurity {
|
|
2
|
+
private import ScalarValues::*;
|
|
3
|
+
|
|
4
|
+
private import memo_core_common::*;
|
|
5
|
+
private import memo_core_enumerations::*;
|
|
6
|
+
private import memo_architecture_requirements::*;
|
|
7
|
+
private import memo_architecture_risk_risk::*;
|
|
8
|
+
private import memo_architecture_assurance::*;
|
|
9
|
+
|
|
10
|
+
part def CybersecurityAsset specializes ArchitectureElement {
|
|
11
|
+
attribute assetKind : AssetKind;
|
|
12
|
+
attribute confidentialityNeed : String;
|
|
13
|
+
attribute integrityNeed : String;
|
|
14
|
+
attribute availabilityNeed : String;
|
|
15
|
+
attribute privacyRelevant : Boolean;
|
|
16
|
+
attribute safetyRelevant : Boolean;
|
|
17
|
+
attribute owningLayer : String;
|
|
18
|
+
attribute assetOwner : String;
|
|
19
|
+
attribute classification : String;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
part def AttackSurface specializes TraceableElement {
|
|
23
|
+
attribute entryPointKind : InterfaceKind;
|
|
24
|
+
attribute exposureLevel : String;
|
|
25
|
+
attribute reachableFrom : String;
|
|
26
|
+
attribute authenticationExpected : Boolean;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
item def Threat specializes RiskDriver {
|
|
30
|
+
attribute threatCategory : ThreatCategoryKind;
|
|
31
|
+
attribute attackVector : String;
|
|
32
|
+
attribute threatSource : String;
|
|
33
|
+
attribute precondition : String;
|
|
34
|
+
attribute affectedConcern : ConcernKind;
|
|
35
|
+
attribute defaultTechnique : String;
|
|
36
|
+
attribute strideCategory : ThreatCategoryKind;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
item def Vulnerability specializes TraceableElement {
|
|
40
|
+
attribute weakness : String;
|
|
41
|
+
attribute exploitability : String;
|
|
42
|
+
attribute discoveryMethod : String;
|
|
43
|
+
attribute affectedLayer : String;
|
|
44
|
+
attribute cweReference : String;
|
|
45
|
+
attribute remediable : Boolean;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
item def ThreatScenario specializes TraceableElement {
|
|
49
|
+
attribute actorDescription : String;
|
|
50
|
+
attribute assumptionSummary : String;
|
|
51
|
+
attribute guaranteeSummary : String;
|
|
52
|
+
attribute securityObjective : String;
|
|
53
|
+
attribute abuseCaseReference : String;
|
|
54
|
+
attribute defaultCategory : ThreatCategoryKind;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
item def CyberHazard specializes Hazard {
|
|
58
|
+
attribute securityImpact : String;
|
|
59
|
+
attribute safetyImpact : String;
|
|
60
|
+
attribute privacyImpact : String;
|
|
61
|
+
attribute operationalImpact : String;
|
|
62
|
+
attribute linkedSafetyHazardId : String;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
item def CyberRisk specializes RiskBeforeMitigation {
|
|
66
|
+
attribute exploitabilityEstimate : String;
|
|
67
|
+
attribute attackComplexity : String;
|
|
68
|
+
attribute detectability : DetectionKind;
|
|
69
|
+
attribute essentialPerformanceImpact : String;
|
|
70
|
+
attribute patientSafetyContribution : String;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
part def CyberMitigation specializes RiskControl {
|
|
74
|
+
attribute cyberControlKind : CyberControlKind;
|
|
75
|
+
attribute securityMechanism : String;
|
|
76
|
+
attribute verificationExpectation : String;
|
|
77
|
+
attribute hardeningScope : String;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
requirement def SecurityRequirement :> Requirement {
|
|
81
|
+
attribute securityObjective : String;
|
|
82
|
+
attribute derivedFromThreat : String;
|
|
83
|
+
attribute derivedFromRisk : String;
|
|
84
|
+
attribute defaultConcern : ConcernKind;
|
|
85
|
+
attribute safetyClass : SafetyClassKind;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
item def TrustBoundary specializes InterfaceElement {
|
|
89
|
+
attribute boundaryType : String;
|
|
90
|
+
attribute crossingConstraint : String;
|
|
91
|
+
attribute trustAssumption : String;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
part def SecurityClaim specializes EvidenceElement {
|
|
95
|
+
attribute claimText : String;
|
|
96
|
+
attribute claimScope : String;
|
|
97
|
+
attribute supportedByEvidence : String;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
package memo_architecture_decisions {
|
|
2
|
+
private import ScalarValues::*;
|
|
3
|
+
|
|
4
|
+
private import memo_core_common::*;
|
|
5
|
+
private import memo_core_enumerations::*;
|
|
6
|
+
part def DesignDecision specializes TraceableElement {
|
|
7
|
+
attribute decisionKind : String;
|
|
8
|
+
attribute alternatives : String;
|
|
9
|
+
attribute selectedOption : String;
|
|
10
|
+
attribute decisionStatus : DesignDecisionStatusKind;
|
|
11
|
+
}
|
|
12
|
+
}
|