@memoarchitect/ontology 0.8.22 → 0.10.9
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/README.md +1 -1
- package/examples/connected-patient-monitor/memo.package.yaml +3 -0
- package/examples/connected-patient-monitor/model/catalog/connected_patient_monitor.sysml +9 -7
- package/examples/connected-patient-monitor/model/catalog/project.sysml +3 -1
- package/examples/connected-patient-monitor/model/catalog/viewpoints/unassigned/views/connected_patient_monitor_overview.sysml +1 -1
- package/examples/embedded-infusion-pump/memo.package.yaml +3 -0
- package/examples/embedded-infusion-pump/model/catalog/embedded_infusion_pump.sysml +11 -9
- package/examples/embedded-infusion-pump/model/catalog/project.sysml +3 -1
- package/examples/embedded-infusion-pump/model/catalog/viewpoints/unassigned/views/embedded_infusion_pump_overview.sysml +1 -1
- package/examples/functional-logical-physical/memo.package.yaml +3 -0
- package/examples/functional-logical-physical/model/catalog/functional_logical_physical.sysml +9 -7
- package/examples/functional-logical-physical/model/catalog/project.sysml +3 -1
- package/examples/functional-logical-physical/model/catalog/viewpoints/unassigned/views/functional_logical_physical_overview.sysml +1 -1
- package/examples/gpca-pump/memo.identity.yaml +2179 -0
- package/examples/gpca-pump/memo.package.yaml +3 -0
- package/examples/gpca-pump/methodology/gpca_profiles.sysml +3 -1
- package/examples/gpca-pump/model/catalog/gpca_analysis.sysml +29 -27
- package/examples/gpca-pump/model/catalog/gpca_architecture.sysml +115 -114
- package/examples/gpca-pump/model/catalog/gpca_behavior_modes.sysml +42 -41
- package/examples/gpca-pump/model/catalog/gpca_behavior_subsystems.sysml +26 -25
- package/examples/gpca-pump/model/catalog/gpca_context.sysml +27 -23
- package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +15 -15
- package/examples/gpca-pump/model/catalog/gpca_formal_behavior.sysml +42 -40
- package/examples/gpca-pump/model/catalog/gpca_interfaces.sysml +198 -197
- package/examples/gpca-pump/model/catalog/gpca_operational.sysml +146 -180
- package/examples/gpca-pump/model/catalog/gpca_physical.sysml +8 -6
- package/examples/gpca-pump/model/catalog/gpca_requirements.sysml +290 -288
- package/examples/gpca-pump/model/catalog/gpca_risk.sysml +164 -163
- package/examples/gpca-pump/model/catalog/gpca_standards.sysml +44 -43
- package/examples/gpca-pump/model/catalog/gpca_system.sysml +21 -33
- package/examples/gpca-pump/model/catalog/gpca_trace.sysml +10 -11
- package/examples/gpca-pump/model/catalog/gpca_verification.sysml +62 -61
- package/examples/gpca-pump/model/catalog/project.sysml +3 -1
- package/examples/gpca-pump/model/catalog/viewpoints/context/views/context_system_context_view.sysml +7 -7
- package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/cybersecurity_cybersecurity_view.sysml +7 -7
- package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_cyber_assessment_view.sysml +6 -7
- package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_threat_model_view.sysml +7 -8
- package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_allocation_view.sysml +6 -6
- package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_browser_view.sysml +6 -6
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/behavior_action_flow_view.sysml +6 -6
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/document_architecture_description_view.sysml +8 -9
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_device_interconnect_view.sysml +6 -6
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_logical_architecture_view.sysml +6 -6
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_mode_state_view.sysml +6 -6
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_system_decomposition_view.sysml +6 -6
- package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_scenario_sequence_view.sysml +7 -7
- package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_use_case_view.sysml +6 -6
- package/examples/gpca-pump/model/catalog/viewpoints/physical/views/physical_physical_bom_view.sysml +6 -6
- package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/document_dhf_index_view.sysml +8 -9
- package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/requirements_requirements_trace_view.sysml +6 -6
- package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_hazard_analysis_view.sysml +6 -7
- package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_rmf_view.sysml +6 -7
- package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_fmea_view.sysml +6 -6
- package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_risk_chain_view.sysml +6 -6
- package/examples/gpca-pump/model/catalog/viewpoints/software/views/document_sdd_view.sysml +6 -7
- package/examples/gpca-pump/model/catalog/viewpoints/software/views/software_software_architecture_view.sysml +6 -6
- package/examples/gpca-pump/model/catalog/viewpoints/usability/views/document_usability_view.sysml +8 -9
- package/examples/gpca-pump/model/catalog/viewpoints/verification/views/document_vv_view.sysml +6 -7
- package/examples/gpca-pump/model/catalog/viewpoints/verification/views/verification_verification_coverage_view.sysml +6 -6
- package/examples/ivd-laboratory-system/memo.package.yaml +3 -0
- package/examples/ivd-laboratory-system/model/catalog/ivd_laboratory_system.sysml +10 -8
- package/examples/ivd-laboratory-system/model/catalog/project.sysml +3 -1
- package/examples/ivd-laboratory-system/model/catalog/viewpoints/unassigned/views/ivd_laboratory_system_overview.sysml +1 -1
- package/examples/manual-surgical-instrument/memo.package.yaml +3 -0
- package/examples/manual-surgical-instrument/model/catalog/manual_surgical_instrument.sysml +7 -5
- package/examples/manual-surgical-instrument/model/catalog/project.sysml +3 -1
- package/examples/manual-surgical-instrument/model/catalog/viewpoints/unassigned/views/manual_surgical_instrument_overview.sysml +1 -1
- package/examples/multidimensional-layers/memo.package.yaml +3 -0
- package/examples/multidimensional-layers/model/catalog/multidimensional_layers.sysml +6 -4
- package/examples/multidimensional-layers/model/catalog/project.sysml +3 -1
- package/examples/multidimensional-layers/model/catalog/viewpoints/unassigned/views/multidimensional_layers_overview.sysml +0 -1
- package/examples/nested-architecture-dsm/memo.package.yaml +3 -0
- package/examples/nested-architecture-dsm/model/catalog/architecture/functional/functions.sysml +20 -18
- package/examples/nested-architecture-dsm/model/catalog/architecture/logical/structure.sysml +20 -18
- package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/needs.sysml +6 -4
- package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/requirements.sysml +9 -7
- package/examples/nested-architecture-dsm/model/catalog/assurance/verification_validation/verification_validation.sysml +18 -16
- package/examples/nested-architecture-dsm/model/catalog/project.sysml +3 -1
- package/examples/reusable-instrument/memo.package.yaml +3 -0
- package/examples/reusable-instrument/model/catalog/project.sysml +3 -1
- package/examples/reusable-instrument/model/catalog/reusable_instrument.sysml +23 -31
- package/examples/reusable-instrument/model/catalog/viewpoints/unassigned/views/reusable_instrument_overview.sysml +0 -1
- package/examples/ros-mobile-robot/memo.package.yaml +3 -0
- package/examples/ros-mobile-robot/model/catalog/project.sysml +3 -1
- package/examples/ros-mobile-robot/model/catalog/ros_mobile_robot.sysml +18 -16
- package/examples/ros-mobile-robot/model/catalog/viewpoints/unassigned/views/ros_mobile_robot_overview.sysml +0 -1
- package/examples/software-only-medical-device/memo.package.yaml +3 -0
- package/examples/software-only-medical-device/model/catalog/project.sysml +3 -1
- package/examples/software-only-medical-device/model/catalog/software_only_medical_device.sysml +11 -9
- package/examples/software-only-medical-device/model/catalog/viewpoints/unassigned/views/software_only_medical_device_overview.sysml +0 -1
- package/examples/surgical-closure-workflow/memo.package.yaml +3 -0
- package/examples/surgical-closure-workflow/model/catalog/project.sysml +3 -1
- package/examples/surgical-closure-workflow/model/catalog/surgical_closure_workflow.sysml +56 -69
- package/examples/surgical-closure-workflow/model/catalog/viewpoints/unassigned/views/surgical_closure_workflow_overview.sysml +0 -1
- package/examples/surgical-robot/memo.package.yaml +3 -0
- package/examples/surgical-robot/model/catalog/project.sysml +3 -1
- package/examples/surgical-robot/model/catalog/surgical_robot.sysml +9 -7
- package/examples/surgical-robot/model/catalog/viewpoints/unassigned/views/surgical_robot_overview.sysml +0 -1
- package/examples/sysml-diagram-samples/memo.package.yaml +2 -0
- package/examples/sysml-diagram-samples/model/catalog/project.sysml +3 -1
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/action_flow_view.sysml +12 -11
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.sysml +8 -7
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/functional_flow_view.sysml +4 -3
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.sysml +3 -3
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.sysml +17 -16
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/requirements_view.sysml +9 -8
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/standard_activity_view.sysml +4 -3
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/state_transition_view.sysml +3 -3
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/tree_view.sysml +4 -3
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/use_case_view.sysml +12 -9
- package/examples/temperature-alarm/memo.identity.yaml +64 -0
- package/examples/temperature-alarm/memo.package.yaml +3 -0
- package/examples/temperature-alarm/model/catalog/project.sysml +3 -1
- package/examples/temperature-alarm/model/catalog/temperature_alarm.sysml +30 -29
- package/examples/temperature-alarm/model/catalog/viewpoints/unassigned/views/temperature_alarm_overview.sysml +0 -1
- package/examples/ui-screen-regions/memo.package.yaml +3 -0
- package/examples/ui-screen-regions/model/catalog/architecture/functional/functions.sysml +14 -12
- package/examples/ui-screen-regions/model/catalog/architecture/implementation/ui.sysml +35 -33
- package/examples/ui-screen-regions/model/catalog/artifacts/assets/catalog.sysml +8 -6
- package/examples/ui-screen-regions/model/catalog/artifacts/reviews/comments.sysml +14 -13
- package/examples/ui-screen-regions/model/catalog/artifacts/reviews/notes.sysml +4 -2
- package/examples/ui-screen-regions/model/catalog/artifacts/reviews/rationales.sysml +4 -2
- package/examples/ui-screen-regions/model/catalog/assurance/human_factors/human_factors.sysml +12 -10
- package/examples/ui-screen-regions/model/catalog/assurance/requirements/needs.sysml +3 -1
- package/examples/ui-screen-regions/model/catalog/assurance/requirements/requirements.sysml +14 -12
- package/examples/ui-screen-regions/model/catalog/assurance/safety_risk/risk.sysml +17 -15
- package/examples/ui-screen-regions/model/catalog/assurance/verification_validation/verification_validation.sysml +10 -9
- package/examples/ui-screen-regions/model/catalog/project.sysml +3 -1
- package/examples/ui-screen-regions/model/catalog/relationships.sysml +2 -2
- package/examples/ui-screen-regions/model/catalog/traces.sysml +0 -2
- package/examples/ui-screen-regions/model/catalog/viewpoints/functional/views/ui_functional_tree.sysml +6 -5
- package/examples/ui-screen-regions/model/catalog/viewpoints/requirements/views/ui_requirements_trace.sysml +6 -5
- package/examples/ui-screen-regions/model/catalog/viewpoints/risk/views/ui_risk_chain.sysml +6 -5
- package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/main_screen_layout.sysml +4 -3
- package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/settings_screen_layout.sysml +4 -3
- package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/ui_region_trace.sysml +4 -3
- package/extensions/aadl/memo.package.yaml +1 -1
- package/extensions/aadl/src/correspondence/memo_aadl_correspondence.sysml +23 -21
- package/extensions/aadl/src/methodology/aadl_methodology.sysml +3 -1
- package/extensions/clinical/src/methodology/clinical_methodology.sysml +3 -1
- package/extensions/cloud/memo.package.yaml +1 -1
- package/extensions/cloud/src/methodology/cloud_methodology.sysml +3 -1
- package/extensions/container/memo.package.yaml +1 -1
- package/extensions/container/src/container_extension.sysml +2 -2
- package/extensions/container/src/methodology/container_methodology.sysml +3 -1
- package/extensions/messaging/memo.package.yaml +1 -1
- package/extensions/messaging/src/methodology/messaging_methodology.sysml +3 -1
- package/extensions/ros/memo.package.yaml +1 -1
- package/extensions/ros/src/methodology/ros_methodology.sysml +3 -1
- package/extensions/template/src/extension.sysml +3 -1
- package/methodologies/default/memo.package.yaml +1 -1
- package/methodologies/gpca/memo.package.yaml +1 -1
- package/ontology/memo.package.yaml +1 -1
- package/package.json +2 -2
- package/profile/memo.package.yaml +1 -1
- package/src/architecture/functional/behavior/memo_behavior.sysml +5 -5
- package/src/architecture/functional/functions/memo_functions.sysml +6 -6
- package/src/architecture/implementation/hardware/common/memo_hardware_common.sysml +12 -2
- package/src/architecture/implementation/software/runtime/memo_software_runtime.sysml +0 -11
- package/src/architecture/implementation/software/structure/memo_software_structure.sysml +7 -7
- package/src/architecture/implementation/ui/memo_ui.sysml +8 -31
- package/src/architecture/logical/interfaces/memo_interfaces.sysml +4 -2
- package/src/architecture/logical/structure/memo_logical_structure.sysml +5 -5
- package/src/architecture/operational/activities/memo_activities.sysml +19 -28
- package/src/architecture/operational/context/actors/memo_actors.sysml +5 -4
- package/src/architecture/operational/context/stakeholders/memo_stakeholders.sysml +7 -7
- package/src/architecture/operational/context/use_context/memo_use_context.sysml +5 -14
- package/src/architecture/operational/scenarios/memo_scenarios.sysml +12 -104
- package/src/architecture/operational/structure/memo_operational.sysml +42 -13
- package/src/architecture/operational/use_cases/memo_use_cases.sysml +7 -12
- package/src/architecture/operational/workflows/memo_workflows.sysml +20 -42
- package/src/architecture/realization/deployment/memo_deployment.sysml +26 -19
- package/src/architecture/realization/physical/memo_physical_architecture.sysml +8 -2
- package/src/artifacts/standards/cfr_21_820.sysml +80 -89
- package/src/artifacts/standards/fda_cybersecurity_2023.sysml +45 -49
- package/src/artifacts/standards/iec_60601_1.sysml +108 -121
- package/src/artifacts/standards/iec_60601_1_2.sysml +31 -33
- package/src/artifacts/standards/iec_60812.sysml +21 -22
- package/src/artifacts/standards/iec_62304.sysml +150 -169
- package/src/artifacts/standards/iec_62366_1.sysml +80 -89
- package/src/artifacts/standards/iec_81001_5_1.sysml +52 -57
- package/src/artifacts/standards/iso_13485.sysml +80 -89
- package/src/artifacts/standards/iso_14971.sysml +66 -73
- package/src/artifacts/standards/iso_iec_ieee_42010.sysml +15 -15
- package/src/artifacts/templates/dhf/system/sad.md +3 -3
- package/src/assurance/cybersecurity/memo_cybersecurity.sysml +2 -2
- package/src/assurance/human_factors/memo_human_factors.sysml +2 -2
- package/src/assurance/requirements/memo_requirements.sysml +2 -18
- package/src/assurance/safety_risk/analysis/memo_fmea.sysml +1 -1
- package/src/assurance/safety_risk/memo_risk.sysml +12 -0
- package/src/assurance/verification_validation/memo_assurance.sysml +7 -12
- package/src/core/common/memo_common.sysml +59 -55
- package/src/core/enumerations/memo_enumerations.sysml +1 -1
- package/src/core/relationships/memo_relationships.sysml +29 -56
- package/src/methodology/archetypes/memo_archetypes.sysml +10 -8
- package/src/methodology/core/memo_core.sysml +0 -10
- package/src/methodology/profiles/memo_profiles.sysml +18 -16
- package/src/methodology/workflow/memo_workflow.sysml +5 -5
- package/src/rules/closure/closure_rules.sysml +22 -20
- package/src/rules/crosslayer/cross_layer_rules.sysml +4 -2
- package/src/rules/ontology/ontology_invariants.sysml +121 -48
- package/src/rules/quantitative/quantitative_rules.sysml +4 -2
- package/src/viewpoints/catalog/memo_viewpoint_catalog.sysml +58 -57
- package/src/viewpoints/clinical/clinical_viewpoint.sysml +5 -4
- package/src/viewpoints/context/context_viewpoint.sysml +6 -5
- package/src/viewpoints/context/views/system_context_view/system_context_view.sysml +6 -5
- package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +6 -6
- package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +36 -4
- package/src/viewpoints/functional/functional_viewpoint.sysml +6 -5
- package/src/viewpoints/functional/views/function_allocation_view/function_allocation_view.sysml +6 -5
- package/src/viewpoints/functional/views/system_functional_tree_view/system_functional_tree_view.sysml +6 -5
- package/src/viewpoints/logical/logical_viewpoint.sysml +5 -4
- package/src/viewpoints/logical/views/logical_architecture_view/logical_architecture_view.sysml +6 -5
- package/src/viewpoints/operational/operational_viewpoint.sysml +6 -5
- package/src/viewpoints/operational/views/use_case_view/use_case_view.sysml +7 -6
- package/src/viewpoints/physical/physical_viewpoint.sysml +5 -4
- package/src/viewpoints/physical/views/network_topology_view/network_topology_view.sysml +6 -5
- package/src/viewpoints/physical/views/physical_bom_view/physical_bom_view.sysml +6 -5
- package/src/viewpoints/rendering/memo_rendering.sysml +220 -40
- package/src/viewpoints/requirements/requirements_viewpoint.sysml +5 -4
- package/src/viewpoints/requirements/views/requirements_traceability_view/requirements_traceability_view.sysml +6 -5
- package/src/viewpoints/risk/risk_viewpoint.sysml +5 -4
- package/src/viewpoints/risk/views/risk_chain_view/risk_chain_view.sysml +6 -5
- package/src/viewpoints/software/software_viewpoint.sysml +5 -4
- package/src/viewpoints/software/views/software_architecture_view/software_architecture_view.sysml +6 -5
- package/src/viewpoints/ui_layout/ui_layout_viewpoint.sysml +5 -4
- package/src/viewpoints/ui_layout/views/screen_layout_view/screen_layout_view.sysml +3 -1
- package/src/viewpoints/usability/usability_viewpoint.sysml +5 -4
- package/src/viewpoints/verification/verification_viewpoint.sysml +5 -4
- package/src/viewpoints/verification/views/verification_coverage_view/verification_coverage_view.sysml +6 -5
- package/templates/connected-device/memo.package.yaml +2 -0
- package/templates/connected-device/model/catalog/project.sysml +3 -1
- package/templates/default/memo.package.yaml +2 -0
- package/templates/default/model/catalog/project.sysml +3 -1
- package/templates/infusion-pump/memo.package.yaml +2 -0
- package/templates/infusion-pump/model/catalog/project.sysml +3 -1
- package/templates/monitoring-device/memo.package.yaml +2 -0
- package/templates/monitoring-device/model/catalog/project.sysml +3 -1
- package/templates/samd/memo.package.yaml +2 -0
- package/templates/samd/model/catalog/project.sysml +3 -1
|
@@ -1,31 +1,60 @@
|
|
|
1
1
|
package memo_architecture_operational_structure {
|
|
2
|
+
private import Metaobjects::SemanticMetadata;
|
|
2
3
|
private import ScalarValues::*;
|
|
3
4
|
|
|
4
5
|
private import memo_core_common::*;
|
|
5
6
|
private import memo_core_enumerations::*;
|
|
6
7
|
private import memo_core_relationships::*;
|
|
7
|
-
private import
|
|
8
|
-
|
|
9
|
-
//
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
8
|
+
private import memo_architecture_operational_use_cases::*;
|
|
9
|
+
|
|
10
|
+
// IEC 62366-1 / ISO 14971 intended use: the medical device's declared
|
|
11
|
+
// purpose and the root of the operational spine. A MemoMission, because
|
|
12
|
+
// "mission" has no medical-device meaning — intended use is what a device
|
|
13
|
+
// exists to do. Was in memo_assurance_requirements; moved here as the
|
|
14
|
+
// operational-world root.
|
|
15
|
+
part def IntendedUse specializes MemoMission {
|
|
16
|
+
attribute indication : String;
|
|
17
|
+
attribute contraindication : String;
|
|
18
|
+
attribute patientPopulation : String;
|
|
19
|
+
attribute clinicalBenefit : String;
|
|
20
|
+
attribute regulatoryClassification : String;
|
|
14
21
|
}
|
|
15
|
-
part def OperationalEntity specializes
|
|
22
|
+
part def OperationalEntity specializes MemoPart {
|
|
16
23
|
attribute entityKind : OperationalEntityKind;
|
|
17
24
|
attribute operationalDomain : String;
|
|
18
25
|
attribute responsibility : String;
|
|
19
26
|
}
|
|
20
|
-
part def OperationalCapability specializes
|
|
27
|
+
part def OperationalCapability specializes MemoPart {
|
|
21
28
|
attribute capabilityLevel : String;
|
|
22
29
|
attribute preCondition : String;
|
|
23
30
|
attribute postCondition : String;
|
|
24
31
|
}
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
32
|
+
|
|
33
|
+
// The intended use requires these operational capabilities (ARCADIA:
|
|
34
|
+
// Mission Requires Capability).
|
|
35
|
+
connection def RequiresCapability :> MemoRelationship {
|
|
36
|
+
end requiringIntendedUse : IntendedUse :>> source;
|
|
37
|
+
end requiredCapability : OperationalCapability :>> target;
|
|
38
|
+
}
|
|
39
|
+
abstract connection requiresCapabilityLinks : RequiresCapability[*];
|
|
40
|
+
metadata def <requiresCapability> RequiresCapabilityMetadata :> SemanticMetadata {
|
|
41
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
42
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
43
|
+
:>> baseType = requiresCapabilityLinks meta SysML::Usage;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
// An operational capability enables a use case (the ability the actor draws
|
|
47
|
+
// on to accomplish the goal). Capability is tied to the use case, not to
|
|
48
|
+
// individual activities.
|
|
49
|
+
connection def EnablesUseCase :> MemoRelationship {
|
|
50
|
+
end enablingCapability : OperationalCapability :>> source;
|
|
51
|
+
end enabledUseCase : UseCase :>> target;
|
|
52
|
+
}
|
|
53
|
+
abstract connection enablesUseCaseLinks : EnablesUseCase[*];
|
|
54
|
+
metadata def <enablesUseCase> EnablesUseCaseMetadata :> SemanticMetadata {
|
|
55
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
56
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
57
|
+
:>> baseType = enablesUseCaseLinks meta SysML::Usage;
|
|
29
58
|
}
|
|
30
59
|
|
|
31
60
|
}
|
|
@@ -19,7 +19,13 @@ package memo_architecture_operational_use_cases {
|
|
|
19
19
|
enum development;
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
-
use case
|
|
22
|
+
// Specializes the STANDARD library use case as well as MEMO's base. Before
|
|
23
|
+
// this it specialized only `MemoUseCase` and so shadowed `UseCases::UseCase`
|
|
24
|
+
// — same name, same metaclass, none of the semantics — which is why the
|
|
25
|
+
// subject/actor features below had to be re-declared by hand instead of
|
|
26
|
+
// being inherited. The wrapper survives only to carry the display label and
|
|
27
|
+
// lifecycle status; identity comes from `@MemoIdentity`.
|
|
28
|
+
use case def UseCase :> MemoUseCase, UseCases::UseCase {
|
|
23
29
|
// Text of this use case's goal; this is not a separate Goal element.
|
|
24
30
|
attribute goalStatement : String;
|
|
25
31
|
attribute trigger : String;
|
|
@@ -40,7 +46,6 @@ package memo_architecture_operational_use_cases {
|
|
|
40
46
|
ref primaryUser : User[0..1];
|
|
41
47
|
ref supportingActors : OperationalParticipant[0..*];
|
|
42
48
|
ref useContext : UseContext[0..1];
|
|
43
|
-
ref originatingNeeds : Need[0..*];
|
|
44
49
|
}
|
|
45
50
|
|
|
46
51
|
connection def Motivates :> MemoRelationship {
|
|
@@ -63,14 +68,4 @@ package memo_architecture_operational_use_cases {
|
|
|
63
68
|
// `include` (R10-S6); write that instead of a connection here. `extends`
|
|
64
69
|
// has 0 hits in the corpus for a use-case `extend` production, so it stays
|
|
65
70
|
// a MEMO construct: a cross-cutting relationship that is always presented.
|
|
66
|
-
connection def Extends :> MemoRelationship {
|
|
67
|
-
end extendingUseCase : UseCase :>> source;
|
|
68
|
-
end extendedUseCase : UseCase :>> target;
|
|
69
|
-
}
|
|
70
|
-
abstract connection extendsLinks : Extends[*];
|
|
71
|
-
metadata def <extends> ExtendsMetadata :> SemanticMetadata {
|
|
72
|
-
:> annotatedElement : SysML::ConnectionDefinition;
|
|
73
|
-
:> annotatedElement : SysML::ConnectionUsage;
|
|
74
|
-
:>> baseType = extendsLinks meta SysML::Usage;
|
|
75
|
-
}
|
|
76
71
|
}
|
|
@@ -37,20 +37,24 @@ package memo_architecture_operational_workflows {
|
|
|
37
37
|
attribute completionCondition : String;
|
|
38
38
|
attribute recoveryPathSummary : String;
|
|
39
39
|
attribute timingConstraints : String;
|
|
40
|
-
ref involvedActors : OperationalParticipant[0..*];
|
|
41
40
|
attribute environmentSummary : String;
|
|
42
41
|
}
|
|
43
42
|
|
|
44
|
-
//
|
|
45
|
-
//
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
43
|
+
// The use case a workflow realizes. Many workflows may trace to one use
|
|
44
|
+
// case; the use case does not own its workflows (the trace points upward,
|
|
45
|
+
// workflow → use case).
|
|
46
|
+
connection def RealizesUseCase :> MemoRelationship {
|
|
47
|
+
end realizingWorkflow : OperationalWorkflow :>> source;
|
|
48
|
+
end realizedUseCase : UseCase :>> target;
|
|
49
|
+
}
|
|
50
|
+
abstract connection realizesUseCaseLinks : RealizesUseCase[*];
|
|
51
|
+
metadata def <realizesUseCase> RealizesUseCaseMetadata :> SemanticMetadata {
|
|
52
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
53
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
54
|
+
:>> baseType = realizesUseCaseLinks meta SysML::Usage;
|
|
52
55
|
}
|
|
53
56
|
|
|
57
|
+
|
|
54
58
|
// decision / fork / join / handoff.
|
|
55
59
|
enum def ControlNodeKind {
|
|
56
60
|
enum decision;
|
|
@@ -69,8 +73,6 @@ package memo_architecture_operational_workflows {
|
|
|
69
73
|
attribute parallelismRationale : String[0..1];
|
|
70
74
|
attribute joinCondition : String[0..1];
|
|
71
75
|
attribute informationTransferred : String[0..1];
|
|
72
|
-
ref fromRole : OperationalParticipant[0..1];
|
|
73
|
-
ref toRole : OperationalParticipant[0..1];
|
|
74
76
|
}
|
|
75
77
|
|
|
76
78
|
// Resources a workflow requires: information, materials, or equipment by
|
|
@@ -82,37 +84,13 @@ package memo_architecture_operational_workflows {
|
|
|
82
84
|
}
|
|
83
85
|
|
|
84
86
|
// ── Workflow-level relationships ─────────────────────────────
|
|
85
|
-
//
|
|
86
|
-
//
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
connection def Supports :> MemoRelationship {
|
|
93
|
-
attribute supportKind : SupportKind;
|
|
94
|
-
// The accepted endpoints span SysML metaclasses: an operational
|
|
95
|
-
// workflow or other action may support a use case, task, or
|
|
96
|
-
// capability. They therefore have no single MEMO base type.
|
|
97
|
-
end supporter :>> source;
|
|
98
|
-
end supported : MemoAction :>> target;
|
|
99
|
-
}
|
|
100
|
-
abstract connection supportsLinks : Supports[*];
|
|
101
|
-
metadata def <supports> SupportsMetadata :> SemanticMetadata {
|
|
102
|
-
:> annotatedElement : SysML::ConnectionDefinition;
|
|
103
|
-
:> annotatedElement : SysML::ConnectionUsage;
|
|
104
|
-
:>> baseType = supportsLinks meta SysML::Usage;
|
|
105
|
-
}
|
|
106
|
-
connection def RequiresResource :> MemoRelationship {
|
|
107
|
-
end workflow : OperationalWorkflow :>> source;
|
|
108
|
-
end resource : WorkflowResource :>> target;
|
|
109
|
-
}
|
|
110
|
-
abstract connection requiresResourceLinks : RequiresResource[*];
|
|
111
|
-
metadata def <requiresResource> RequiresResourceMetadata :> SemanticMetadata {
|
|
112
|
-
:> annotatedElement : SysML::ConnectionDefinition;
|
|
113
|
-
:> annotatedElement : SysML::ConnectionUsage;
|
|
114
|
-
:>> baseType = requiresResourceLinks meta SysML::Usage;
|
|
115
|
-
}
|
|
87
|
+
// An element supports (affords, enables) an action — e.g. a UI element
|
|
88
|
+
// that affords a user task. Use-case and capability tracing are direct
|
|
89
|
+
// refs now (OperationalWorkflow.useCase,
|
|
90
|
+
// OperativeAction.contributesToCapabilities), so the former
|
|
91
|
+
// SupportKind discriminator is gone: what used to be three enum values
|
|
92
|
+
// that each implied a different target type are now two typed refs plus
|
|
93
|
+
// this one plain relation.
|
|
116
94
|
|
|
117
95
|
// ── Workflow transformation (as-is → to-be) ──────────────────
|
|
118
96
|
// Transforms unifies TransformsStep / TransformsWorkflow / ReplacesWorkflow
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
// Deployment (allocation) view: SoftwareModule buildsInto
|
|
2
|
-
//
|
|
1
|
+
// Deployment (allocation) view: SoftwareModule buildsInto SoftwareDeploymentUnit;
|
|
2
|
+
// SoftwareDeploymentUnit deploysTo ProcessingNode. Software deploys only to capable
|
|
3
3
|
// execution nodes (rules/crosslayer).
|
|
4
4
|
//
|
|
5
5
|
// `HostedBy` is NOT part of that chain, and this comment used to claim it was
|
|
6
6
|
// ("SoftwareComponent hostedBy ProcessingNode"). It is
|
|
7
|
-
// `processingNode :
|
|
7
|
+
// `processingNode : ProcessingNode -> hostAssembly : PhysicalAssembly`:
|
|
8
8
|
// physical hosting of a node by the assembly it is mounted in, running the
|
|
9
9
|
// other way and between different things. Software reaches a node through
|
|
10
10
|
// DeploysTo.
|
|
@@ -26,39 +26,44 @@ package memo_architecture_realization_deployment {
|
|
|
26
26
|
private import memo_architecture_logical_structure::*;
|
|
27
27
|
private import memo_architecture_logical_interfaces::*; // ComponentExchange
|
|
28
28
|
|
|
29
|
-
part def
|
|
29
|
+
part def SoftwareDeploymentUnit specializes MemoPart {
|
|
30
30
|
attribute unitKind : String;
|
|
31
31
|
attribute version : String;
|
|
32
32
|
attribute integrityProtection : String;
|
|
33
33
|
attribute installationMechanism : String;
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
-
part def RuntimeEnvironment specializes
|
|
36
|
+
part def RuntimeEnvironment specializes MemoPart {
|
|
37
37
|
attribute environmentKind : String;
|
|
38
38
|
attribute osOrRtos : String;
|
|
39
39
|
attribute providedServices : String;
|
|
40
40
|
attribute certificationEvidence : String;
|
|
41
41
|
}
|
|
42
42
|
|
|
43
|
-
|
|
43
|
+
// A module BUILDS INTO a deployment unit: that is an allocation, and the
|
|
44
|
+
// language has one. Rooted like MemoryBinding / ConnectionBinding below,
|
|
45
|
+
// so the whole deployment family spells allocation the same way.
|
|
46
|
+
allocation def BuildsInto :> MemoRelationship, Allocations::Allocation {
|
|
44
47
|
end module : SoftwareModule :>> source;
|
|
45
|
-
end deploymentUnit :
|
|
48
|
+
end deploymentUnit : SoftwareDeploymentUnit :>> target;
|
|
46
49
|
}
|
|
47
50
|
abstract connection buildsIntoLinks : BuildsInto[*];
|
|
48
51
|
metadata def <buildsInto> BuildsIntoMetadata :> SemanticMetadata {
|
|
49
|
-
:> annotatedElement : SysML::
|
|
50
|
-
:> annotatedElement : SysML::
|
|
52
|
+
:> annotatedElement : SysML::AllocationDefinition;
|
|
53
|
+
:> annotatedElement : SysML::AllocationUsage;
|
|
51
54
|
:>> baseType = buildsIntoLinks meta SysML::Usage;
|
|
52
55
|
}
|
|
53
|
-
|
|
56
|
+
// Every usage of this already writes `allocation x : DeploysTo allocate a
|
|
57
|
+
// to b;` -- the declaration was the only part still saying `connection`.
|
|
58
|
+
allocation def DeploysTo :> MemoRelationship, Allocations::Allocation {
|
|
54
59
|
attribute deploymentKind : DeploymentKind;
|
|
55
|
-
end deploymentUnit :
|
|
60
|
+
end deploymentUnit : SoftwareDeploymentUnit :>> source;
|
|
56
61
|
end node : ProcessingNode :>> target;
|
|
57
62
|
}
|
|
58
63
|
abstract connection deploysToLinks : DeploysTo[*];
|
|
59
64
|
metadata def <deploysTo> DeploysToMetadata :> SemanticMetadata {
|
|
60
|
-
:> annotatedElement : SysML::
|
|
61
|
-
:> annotatedElement : SysML::
|
|
65
|
+
:> annotatedElement : SysML::AllocationDefinition;
|
|
66
|
+
:> annotatedElement : SysML::AllocationUsage;
|
|
62
67
|
:>> baseType = deploysToLinks meta SysML::Usage;
|
|
63
68
|
}
|
|
64
69
|
connection def ProvidesEnvironment :> MemoRelationship {
|
|
@@ -140,7 +145,7 @@ package memo_architecture_realization_deployment {
|
|
|
140
145
|
enum path;
|
|
141
146
|
}
|
|
142
147
|
// A flow declared at a logical component boundary (in-port → out-port).
|
|
143
|
-
part def FlowSpecification specializes
|
|
148
|
+
part def FlowSpecification specializes MemoPart {
|
|
144
149
|
attribute flowKind : FlowSpecKind;
|
|
145
150
|
ref inPort : LogicalPort[0..1];
|
|
146
151
|
ref outPort : LogicalPort[0..1];
|
|
@@ -148,7 +153,7 @@ package memo_architecture_realization_deployment {
|
|
|
148
153
|
// A complete source→sink flow traced across the layers and the software→
|
|
149
154
|
// hardware binding it traverses. `latencyBudgetMs` and `analysisPurpose`
|
|
150
155
|
// (latency | fault-propagation | security) drive the AADL-style analysis.
|
|
151
|
-
part def EndToEndFlow specializes
|
|
156
|
+
part def EndToEndFlow specializes MemoPart {
|
|
152
157
|
attribute latencyBudgetMs : Real;
|
|
153
158
|
attribute analysisPurpose : String;
|
|
154
159
|
ref sourceFunction : MemoFunction[0..1];
|
|
@@ -172,14 +177,16 @@ package memo_architecture_realization_deployment {
|
|
|
172
177
|
:>> baseType = flowComprisesSpecLinks meta SysML::Usage;
|
|
173
178
|
}
|
|
174
179
|
// The flow traverses a software→hardware binding; latency accrues here.
|
|
175
|
-
|
|
180
|
+
// A binding IS an allocation, exactly as MemoryBinding and
|
|
181
|
+
// ConnectionBinding already declare.
|
|
182
|
+
allocation def FlowTraversesBinding :> MemoRelationship, Allocations::Allocation {
|
|
176
183
|
end endToEndFlow : EndToEndFlow :>> source;
|
|
177
|
-
end deploymentUnit :
|
|
184
|
+
end deploymentUnit : SoftwareDeploymentUnit :>> target;
|
|
178
185
|
}
|
|
179
186
|
abstract connection flowTraversesBindingLinks : FlowTraversesBinding[*];
|
|
180
187
|
metadata def <flowTraversesBinding> FlowTraversesBindingMetadata :> SemanticMetadata {
|
|
181
|
-
:> annotatedElement : SysML::
|
|
182
|
-
:> annotatedElement : SysML::
|
|
188
|
+
:> annotatedElement : SysML::AllocationDefinition;
|
|
189
|
+
:> annotatedElement : SysML::AllocationUsage;
|
|
183
190
|
:>> baseType = flowTraversesBindingLinks meta SysML::Usage;
|
|
184
191
|
}
|
|
185
192
|
}
|
|
@@ -6,7 +6,13 @@ package memo_architecture_realization_physical {
|
|
|
6
6
|
|
|
7
7
|
private import memo_core_common::*;
|
|
8
8
|
private import memo_core_enumerations::*;
|
|
9
|
-
|
|
9
|
+
// For PhysicalElement: a processing node and a memory device ARE physical
|
|
10
|
+
// things — a board and a chip — and specialized MemoPart directly only
|
|
11
|
+
// because the physical family had no shared root until CR-ONT-079 needed
|
|
12
|
+
// one. Their home package reflects their ROLE (deployment target), not
|
|
13
|
+
// their nature.
|
|
14
|
+
private import memo_architecture_implementation_hardware_common::PhysicalElement;
|
|
15
|
+
part def ProcessingNode specializes PhysicalElement {
|
|
10
16
|
attribute nodeKind : ProcessingNodeKind;
|
|
11
17
|
attribute processorArchitecture : String;
|
|
12
18
|
attribute memoryMB : String;
|
|
@@ -17,7 +23,7 @@ package memo_architecture_realization_physical {
|
|
|
17
23
|
attribute supportsContainerization : Boolean;
|
|
18
24
|
attribute realTimeCapable : Boolean;
|
|
19
25
|
}
|
|
20
|
-
part def MemoryDevice specializes
|
|
26
|
+
part def MemoryDevice specializes PhysicalElement {
|
|
21
27
|
attribute memoryKind : String;
|
|
22
28
|
attribute capacityMB : String;
|
|
23
29
|
attribute nonVolatile : Boolean;
|
|
@@ -15,102 +15,93 @@ package memo_artifacts_standards_cfr_21_820 {
|
|
|
15
15
|
private import memo_core_relationships::*;
|
|
16
16
|
private import memo_artifacts_standards_traceability::*;
|
|
17
17
|
|
|
18
|
+
private import memo_core_common::*;
|
|
19
|
+
private import memo_core_common::MemoIdentity;
|
|
18
20
|
item cfr21Part820 : RegulatoryStandard {
|
|
19
|
-
|
|
21
|
+
@MemoIdentity { :>> providedId = "STD-21-CFR-820"; }
|
|
20
22
|
attribute :>> name = "CFR21Part820";
|
|
21
23
|
attribute :>> designation = "21 CFR Part 820";
|
|
22
24
|
attribute :>> issuer = "FDA";
|
|
23
25
|
attribute :>> appliesToRegime = (RegulatoryRegimeKind::FDA_510k, RegulatoryRegimeKind::FDA_PMA);
|
|
26
|
+
item cfr820_30 : StandardClause {
|
|
27
|
+
@MemoIdentity { :>> providedId = "STD-21-CFR-820-30"; }
|
|
28
|
+
attribute :>> name = "CFR820_30";
|
|
29
|
+
attribute :>> clauseNumber = "820.30";
|
|
30
|
+
attribute :>> title = "design controls";
|
|
31
|
+
attribute :>> normativeStrength = "shall";
|
|
32
|
+
item cfr820_30a : StandardClause {
|
|
33
|
+
@MemoIdentity { :>> providedId = "STD-21-CFR-820-30-A"; }
|
|
34
|
+
attribute :>> name = "CFR820_30a";
|
|
35
|
+
attribute :>> clauseNumber = "820.30(a)";
|
|
36
|
+
attribute :>> title = "general design control applicability";
|
|
37
|
+
attribute :>> normativeStrength = "shall";
|
|
38
|
+
}
|
|
39
|
+
item cfr820_30b : StandardClause {
|
|
40
|
+
@MemoIdentity { :>> providedId = "STD-21-CFR-820-30-B"; }
|
|
41
|
+
attribute :>> name = "CFR820_30b";
|
|
42
|
+
attribute :>> clauseNumber = "820.30(b)";
|
|
43
|
+
attribute :>> title = "design and development planning";
|
|
44
|
+
attribute :>> normativeStrength = "shall";
|
|
45
|
+
}
|
|
46
|
+
item cfr820_30c : StandardClause {
|
|
47
|
+
@MemoIdentity { :>> providedId = "STD-21-CFR-820-30-C"; }
|
|
48
|
+
attribute :>> name = "CFR820_30c";
|
|
49
|
+
attribute :>> clauseNumber = "820.30(c)";
|
|
50
|
+
attribute :>> title = "design input";
|
|
51
|
+
attribute :>> normativeStrength = "shall";
|
|
52
|
+
}
|
|
53
|
+
item cfr820_30d : StandardClause {
|
|
54
|
+
@MemoIdentity { :>> providedId = "STD-21-CFR-820-30-D"; }
|
|
55
|
+
attribute :>> name = "CFR820_30d";
|
|
56
|
+
attribute :>> clauseNumber = "820.30(d)";
|
|
57
|
+
attribute :>> title = "design output";
|
|
58
|
+
attribute :>> normativeStrength = "shall";
|
|
59
|
+
}
|
|
60
|
+
item cfr820_30e : StandardClause {
|
|
61
|
+
@MemoIdentity { :>> providedId = "STD-21-CFR-820-30-E"; }
|
|
62
|
+
attribute :>> name = "CFR820_30e";
|
|
63
|
+
attribute :>> clauseNumber = "820.30(e)";
|
|
64
|
+
attribute :>> title = "design review";
|
|
65
|
+
attribute :>> normativeStrength = "shall";
|
|
66
|
+
}
|
|
67
|
+
item cfr820_30f : StandardClause {
|
|
68
|
+
@MemoIdentity { :>> providedId = "STD-21-CFR-820-30-F"; }
|
|
69
|
+
attribute :>> name = "CFR820_30f";
|
|
70
|
+
attribute :>> clauseNumber = "820.30(f)";
|
|
71
|
+
attribute :>> title = "design verification";
|
|
72
|
+
attribute :>> normativeStrength = "shall";
|
|
73
|
+
}
|
|
74
|
+
item cfr820_30g : StandardClause {
|
|
75
|
+
@MemoIdentity { :>> providedId = "STD-21-CFR-820-30-G"; }
|
|
76
|
+
attribute :>> name = "CFR820_30g";
|
|
77
|
+
attribute :>> clauseNumber = "820.30(g)";
|
|
78
|
+
attribute :>> title = "design validation";
|
|
79
|
+
attribute :>> normativeStrength = "shall";
|
|
80
|
+
}
|
|
81
|
+
item cfr820_30h : StandardClause {
|
|
82
|
+
@MemoIdentity { :>> providedId = "STD-21-CFR-820-30-H"; }
|
|
83
|
+
attribute :>> name = "CFR820_30h";
|
|
84
|
+
attribute :>> clauseNumber = "820.30(h)";
|
|
85
|
+
attribute :>> title = "design transfer";
|
|
86
|
+
attribute :>> normativeStrength = "shall";
|
|
87
|
+
}
|
|
88
|
+
item cfr820_30i : StandardClause {
|
|
89
|
+
@MemoIdentity { :>> providedId = "STD-21-CFR-820-30-I"; }
|
|
90
|
+
attribute :>> name = "CFR820_30i";
|
|
91
|
+
attribute :>> clauseNumber = "820.30(i)";
|
|
92
|
+
attribute :>> title = "design changes";
|
|
93
|
+
attribute :>> normativeStrength = "shall";
|
|
94
|
+
}
|
|
95
|
+
item cfr820_30j : StandardClause {
|
|
96
|
+
@MemoIdentity { :>> providedId = "STD-21-CFR-820-30-J"; }
|
|
97
|
+
attribute :>> name = "CFR820_30j";
|
|
98
|
+
attribute :>> clauseNumber = "820.30(j)";
|
|
99
|
+
attribute :>> title = "design history file";
|
|
100
|
+
attribute :>> normativeStrength = "shall";
|
|
101
|
+
}
|
|
102
|
+
}
|
|
24
103
|
}
|
|
25
104
|
|
|
26
|
-
item cfr820_30 : StandardClause {
|
|
27
|
-
attribute :>> id = "STD-21-CFR-820-30";
|
|
28
|
-
attribute :>> name = "CFR820_30";
|
|
29
|
-
attribute :>> clauseNumber = "820.30";
|
|
30
|
-
attribute :>> title = "design controls";
|
|
31
|
-
attribute :>> normativeStrength = "shall";
|
|
32
|
-
}
|
|
33
|
-
item cfr820_30a : StandardClause {
|
|
34
|
-
attribute :>> id = "STD-21-CFR-820-30-A";
|
|
35
|
-
attribute :>> name = "CFR820_30a";
|
|
36
|
-
attribute :>> clauseNumber = "820.30(a)";
|
|
37
|
-
attribute :>> title = "general design control applicability";
|
|
38
|
-
attribute :>> normativeStrength = "shall";
|
|
39
|
-
}
|
|
40
|
-
item cfr820_30b : StandardClause {
|
|
41
|
-
attribute :>> id = "STD-21-CFR-820-30-B";
|
|
42
|
-
attribute :>> name = "CFR820_30b";
|
|
43
|
-
attribute :>> clauseNumber = "820.30(b)";
|
|
44
|
-
attribute :>> title = "design and development planning";
|
|
45
|
-
attribute :>> normativeStrength = "shall";
|
|
46
|
-
}
|
|
47
|
-
item cfr820_30c : StandardClause {
|
|
48
|
-
attribute :>> id = "STD-21-CFR-820-30-C";
|
|
49
|
-
attribute :>> name = "CFR820_30c";
|
|
50
|
-
attribute :>> clauseNumber = "820.30(c)";
|
|
51
|
-
attribute :>> title = "design input";
|
|
52
|
-
attribute :>> normativeStrength = "shall";
|
|
53
|
-
}
|
|
54
|
-
item cfr820_30d : StandardClause {
|
|
55
|
-
attribute :>> id = "STD-21-CFR-820-30-D";
|
|
56
|
-
attribute :>> name = "CFR820_30d";
|
|
57
|
-
attribute :>> clauseNumber = "820.30(d)";
|
|
58
|
-
attribute :>> title = "design output";
|
|
59
|
-
attribute :>> normativeStrength = "shall";
|
|
60
|
-
}
|
|
61
|
-
item cfr820_30e : StandardClause {
|
|
62
|
-
attribute :>> id = "STD-21-CFR-820-30-E";
|
|
63
|
-
attribute :>> name = "CFR820_30e";
|
|
64
|
-
attribute :>> clauseNumber = "820.30(e)";
|
|
65
|
-
attribute :>> title = "design review";
|
|
66
|
-
attribute :>> normativeStrength = "shall";
|
|
67
|
-
}
|
|
68
|
-
item cfr820_30f : StandardClause {
|
|
69
|
-
attribute :>> id = "STD-21-CFR-820-30-F";
|
|
70
|
-
attribute :>> name = "CFR820_30f";
|
|
71
|
-
attribute :>> clauseNumber = "820.30(f)";
|
|
72
|
-
attribute :>> title = "design verification";
|
|
73
|
-
attribute :>> normativeStrength = "shall";
|
|
74
|
-
}
|
|
75
|
-
item cfr820_30g : StandardClause {
|
|
76
|
-
attribute :>> id = "STD-21-CFR-820-30-G";
|
|
77
|
-
attribute :>> name = "CFR820_30g";
|
|
78
|
-
attribute :>> clauseNumber = "820.30(g)";
|
|
79
|
-
attribute :>> title = "design validation";
|
|
80
|
-
attribute :>> normativeStrength = "shall";
|
|
81
|
-
}
|
|
82
|
-
item cfr820_30h : StandardClause {
|
|
83
|
-
attribute :>> id = "STD-21-CFR-820-30-H";
|
|
84
|
-
attribute :>> name = "CFR820_30h";
|
|
85
|
-
attribute :>> clauseNumber = "820.30(h)";
|
|
86
|
-
attribute :>> title = "design transfer";
|
|
87
|
-
attribute :>> normativeStrength = "shall";
|
|
88
|
-
}
|
|
89
|
-
item cfr820_30i : StandardClause {
|
|
90
|
-
attribute :>> id = "STD-21-CFR-820-30-I";
|
|
91
|
-
attribute :>> name = "CFR820_30i";
|
|
92
|
-
attribute :>> clauseNumber = "820.30(i)";
|
|
93
|
-
attribute :>> title = "design changes";
|
|
94
|
-
attribute :>> normativeStrength = "shall";
|
|
95
|
-
}
|
|
96
|
-
item cfr820_30j : StandardClause {
|
|
97
|
-
attribute :>> id = "STD-21-CFR-820-30-J";
|
|
98
|
-
attribute :>> name = "CFR820_30j";
|
|
99
|
-
attribute :>> clauseNumber = "820.30(j)";
|
|
100
|
-
attribute :>> title = "design history file";
|
|
101
|
-
attribute :>> normativeStrength = "shall";
|
|
102
|
-
}
|
|
103
105
|
|
|
104
|
-
connection cfr820Has30 : Composes connect parent ::> cfr21Part820 to child ::> cfr820_30;
|
|
105
106
|
|
|
106
|
-
connection cfr820_30HasA : Composes connect parent ::> cfr820_30 to child ::> cfr820_30a;
|
|
107
|
-
connection cfr820_30HasB : Composes connect parent ::> cfr820_30 to child ::> cfr820_30b;
|
|
108
|
-
connection cfr820_30HasC : Composes connect parent ::> cfr820_30 to child ::> cfr820_30c;
|
|
109
|
-
connection cfr820_30HasD : Composes connect parent ::> cfr820_30 to child ::> cfr820_30d;
|
|
110
|
-
connection cfr820_30HasE : Composes connect parent ::> cfr820_30 to child ::> cfr820_30e;
|
|
111
|
-
connection cfr820_30HasF : Composes connect parent ::> cfr820_30 to child ::> cfr820_30f;
|
|
112
|
-
connection cfr820_30HasG : Composes connect parent ::> cfr820_30 to child ::> cfr820_30g;
|
|
113
|
-
connection cfr820_30HasH : Composes connect parent ::> cfr820_30 to child ::> cfr820_30h;
|
|
114
|
-
connection cfr820_30HasI : Composes connect parent ::> cfr820_30 to child ::> cfr820_30i;
|
|
115
|
-
connection cfr820_30HasJ : Composes connect parent ::> cfr820_30 to child ::> cfr820_30j;
|
|
116
107
|
}
|
|
@@ -18,63 +18,59 @@ package memo_artifacts_standards_fda_cybersecurity_2023 {
|
|
|
18
18
|
private import memo_core_relationships::*;
|
|
19
19
|
private import memo_artifacts_standards_traceability::*;
|
|
20
20
|
|
|
21
|
+
private import memo_core_common::*;
|
|
22
|
+
private import memo_core_common::MemoIdentity;
|
|
21
23
|
item fdaCybersecurity2023 : RegulatoryStandard {
|
|
22
|
-
|
|
24
|
+
@MemoIdentity { :>> providedId = "STD-FDA-CYBER-2023"; }
|
|
23
25
|
attribute :>> name = "FDACybersecurity2023";
|
|
24
26
|
attribute :>> designation = "FDA Cybersecurity Guidance 2023";
|
|
25
27
|
attribute :>> edition = "2023-09";
|
|
26
28
|
attribute :>> issuer = "FDA";
|
|
27
29
|
attribute :>> appliesToRegime = (RegulatoryRegimeKind::FDA_510k, RegulatoryRegimeKind::FDA_PMA);
|
|
30
|
+
item fdaCyberSection4 : StandardClause {
|
|
31
|
+
@MemoIdentity { :>> providedId = "STD-FDA-CYBER-2023-IV"; }
|
|
32
|
+
attribute :>> name = "FDACyberSectionIV";
|
|
33
|
+
attribute :>> clauseNumber = "IV";
|
|
34
|
+
attribute :>> title = "general cybersecurity principles";
|
|
35
|
+
attribute :>> normativeStrength = "informative";
|
|
36
|
+
}
|
|
37
|
+
item fdaCyberSection5 : StandardClause {
|
|
38
|
+
@MemoIdentity { :>> providedId = "STD-FDA-CYBER-2023-V"; }
|
|
39
|
+
attribute :>> name = "FDACyberSectionV";
|
|
40
|
+
attribute :>> clauseNumber = "V";
|
|
41
|
+
attribute :>> title = "secure product development framework";
|
|
42
|
+
attribute :>> normativeStrength = "informative";
|
|
43
|
+
item fdaCyberSection5A : StandardClause {
|
|
44
|
+
@MemoIdentity { :>> providedId = "STD-FDA-CYBER-2023-V-A"; }
|
|
45
|
+
attribute :>> name = "FDACyberSectionVA";
|
|
46
|
+
attribute :>> clauseNumber = "V.A";
|
|
47
|
+
attribute :>> title = "security risk management";
|
|
48
|
+
attribute :>> normativeStrength = "informative";
|
|
49
|
+
}
|
|
50
|
+
item fdaCyberSection5B : StandardClause {
|
|
51
|
+
@MemoIdentity { :>> providedId = "STD-FDA-CYBER-2023-V-B"; }
|
|
52
|
+
attribute :>> name = "FDACyberSectionVB";
|
|
53
|
+
attribute :>> clauseNumber = "V.B";
|
|
54
|
+
attribute :>> title = "security architecture";
|
|
55
|
+
attribute :>> normativeStrength = "informative";
|
|
56
|
+
}
|
|
57
|
+
item fdaCyberSection5C : StandardClause {
|
|
58
|
+
@MemoIdentity { :>> providedId = "STD-FDA-CYBER-2023-V-C"; }
|
|
59
|
+
attribute :>> name = "FDACyberSectionVC";
|
|
60
|
+
attribute :>> clauseNumber = "V.C";
|
|
61
|
+
attribute :>> title = "cybersecurity testing";
|
|
62
|
+
attribute :>> normativeStrength = "informative";
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
item fdaCyberSection6 : StandardClause {
|
|
66
|
+
@MemoIdentity { :>> providedId = "STD-FDA-CYBER-2023-VI"; }
|
|
67
|
+
attribute :>> name = "FDACyberSectionVI";
|
|
68
|
+
attribute :>> clauseNumber = "VI";
|
|
69
|
+
attribute :>> title = "cybersecurity transparency and vulnerability management";
|
|
70
|
+
attribute :>> normativeStrength = "informative";
|
|
71
|
+
}
|
|
28
72
|
}
|
|
29
73
|
|
|
30
|
-
item fdaCyberSection4 : StandardClause {
|
|
31
|
-
attribute :>> id = "STD-FDA-CYBER-2023-IV";
|
|
32
|
-
attribute :>> name = "FDACyberSectionIV";
|
|
33
|
-
attribute :>> clauseNumber = "IV";
|
|
34
|
-
attribute :>> title = "general cybersecurity principles";
|
|
35
|
-
attribute :>> normativeStrength = "informative";
|
|
36
|
-
}
|
|
37
|
-
item fdaCyberSection5 : StandardClause {
|
|
38
|
-
attribute :>> id = "STD-FDA-CYBER-2023-V";
|
|
39
|
-
attribute :>> name = "FDACyberSectionV";
|
|
40
|
-
attribute :>> clauseNumber = "V";
|
|
41
|
-
attribute :>> title = "secure product development framework";
|
|
42
|
-
attribute :>> normativeStrength = "informative";
|
|
43
|
-
}
|
|
44
|
-
item fdaCyberSection5A : StandardClause {
|
|
45
|
-
attribute :>> id = "STD-FDA-CYBER-2023-V-A";
|
|
46
|
-
attribute :>> name = "FDACyberSectionVA";
|
|
47
|
-
attribute :>> clauseNumber = "V.A";
|
|
48
|
-
attribute :>> title = "security risk management";
|
|
49
|
-
attribute :>> normativeStrength = "informative";
|
|
50
|
-
}
|
|
51
|
-
item fdaCyberSection5B : StandardClause {
|
|
52
|
-
attribute :>> id = "STD-FDA-CYBER-2023-V-B";
|
|
53
|
-
attribute :>> name = "FDACyberSectionVB";
|
|
54
|
-
attribute :>> clauseNumber = "V.B";
|
|
55
|
-
attribute :>> title = "security architecture";
|
|
56
|
-
attribute :>> normativeStrength = "informative";
|
|
57
|
-
}
|
|
58
|
-
item fdaCyberSection5C : StandardClause {
|
|
59
|
-
attribute :>> id = "STD-FDA-CYBER-2023-V-C";
|
|
60
|
-
attribute :>> name = "FDACyberSectionVC";
|
|
61
|
-
attribute :>> clauseNumber = "V.C";
|
|
62
|
-
attribute :>> title = "cybersecurity testing";
|
|
63
|
-
attribute :>> normativeStrength = "informative";
|
|
64
|
-
}
|
|
65
|
-
item fdaCyberSection6 : StandardClause {
|
|
66
|
-
attribute :>> id = "STD-FDA-CYBER-2023-VI";
|
|
67
|
-
attribute :>> name = "FDACyberSectionVI";
|
|
68
|
-
attribute :>> clauseNumber = "VI";
|
|
69
|
-
attribute :>> title = "cybersecurity transparency and vulnerability management";
|
|
70
|
-
attribute :>> normativeStrength = "informative";
|
|
71
|
-
}
|
|
72
74
|
|
|
73
|
-
connection fdaCyberHas4 : Composes connect parent ::> fdaCybersecurity2023 to child ::> fdaCyberSection4;
|
|
74
|
-
connection fdaCyberHas5 : Composes connect parent ::> fdaCybersecurity2023 to child ::> fdaCyberSection5;
|
|
75
|
-
connection fdaCyberHas6 : Composes connect parent ::> fdaCybersecurity2023 to child ::> fdaCyberSection6;
|
|
76
75
|
|
|
77
|
-
connection fdaCyberHas5A : Composes connect parent ::> fdaCyberSection5 to child ::> fdaCyberSection5A;
|
|
78
|
-
connection fdaCyberHas5B : Composes connect parent ::> fdaCyberSection5 to child ::> fdaCyberSection5B;
|
|
79
|
-
connection fdaCyberHas5C : Composes connect parent ::> fdaCyberSection5 to child ::> fdaCyberSection5C;
|
|
80
76
|
}
|