@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
|
@@ -34,6 +34,56 @@ package memo_core_common {
|
|
|
34
34
|
private import memo_core_terminology::*;
|
|
35
35
|
private import memo_core_enumerations::*;
|
|
36
36
|
|
|
37
|
+
// The metaclass-agnostic carrier for MEMO's identity fields.
|
|
38
|
+
//
|
|
39
|
+
// A `metadata def` annotates an element of ANY metaclass — restriction is
|
|
40
|
+
// opt-in through `annotatedElement`, and this one declares none. That is
|
|
41
|
+
// what the per-metaclass base definitions below cannot do: KerML will not
|
|
42
|
+
// let an action, port, item, requirement or connection inherit from a part
|
|
43
|
+
// def, which is why the identification core is currently declared ten
|
|
44
|
+
// times. Metadata has no such limit, so one declaration replaces ten.
|
|
45
|
+
//
|
|
46
|
+
// An element has five identities and they are not interchangeable:
|
|
47
|
+
//
|
|
48
|
+
// 1. code reference `sfnAcquireMap` native declaredName
|
|
49
|
+
// 2. display label "Acquire EA Map" `label`, below
|
|
50
|
+
// 3. number id `SFN-1` assigned, never authored
|
|
51
|
+
// 4. provided id `SPEC-4471` `providedId`, below
|
|
52
|
+
// 5. technical uuid `e2f75cf6-…` `uuid`, below
|
|
53
|
+
//
|
|
54
|
+
// 1 is native and needs no field here. 3 is generated by the compiler and
|
|
55
|
+
// recorded in `memo.identity.yaml`: it is monotonic, gaps are kept, and a
|
|
56
|
+
// retired number is never reused, so nothing authors it by hand.
|
|
57
|
+
//
|
|
58
|
+
// `label` is NOT a duplicate of the native name, which is the reading that
|
|
59
|
+
// nearly deleted it: the native name is a lowerCamelCase identifier and
|
|
60
|
+
// must be unique in its namespace, while a label is free text that
|
|
61
|
+
// legitimately repeats — measured 2026-08-18, 1278 labels across the
|
|
62
|
+
// ontology and examples share only 1216 distinct values, because seven
|
|
63
|
+
// different ports are all correctly labelled "TLM_MODE_IN". A label
|
|
64
|
+
// therefore cannot live in a name slot, native or otherwise.
|
|
65
|
+
//
|
|
66
|
+
// `providedId` is the identifier an EXTERNAL system knows the element by,
|
|
67
|
+
// and it exists because that system's scheme is not MEMO's: a customer
|
|
68
|
+
// numbering software requirements `SPEC-4471` cannot be made to use `SWR-`,
|
|
69
|
+
// and overwriting the generated number to please them would break the
|
|
70
|
+
// guarantee that numbers are never reassigned.
|
|
71
|
+
//
|
|
72
|
+
// `uuid` is machine identity. Authored values win over the registry, which
|
|
73
|
+
// wins over derivation — so an element whose file must move can pin its own
|
|
74
|
+
// uuid, which is what the attribute always advertised.
|
|
75
|
+
//
|
|
76
|
+
// Deliberately absent: `name` and `description` (native name and `doc`),
|
|
77
|
+
// `rationale` (standard `@Rationale`), and `id` — superseded by the
|
|
78
|
+
// generated number id and by `providedId`.
|
|
79
|
+
metadata def MemoIdentity {
|
|
80
|
+
attribute label : String[0..1];
|
|
81
|
+
attribute providedId : String[0..1];
|
|
82
|
+
attribute uuid : String[0..1];
|
|
83
|
+
attribute shortDescription : String[0..1];
|
|
84
|
+
attribute sourceReference : String[0..1];
|
|
85
|
+
}
|
|
86
|
+
|
|
37
87
|
// ─── Single abstract part root ──────────────────────────────────
|
|
38
88
|
// Every structural MEMO concept specializes MemoPart. Identity and
|
|
39
89
|
// traceability are attributes of this one root — MEMO has no separate
|
|
@@ -48,8 +98,6 @@ package memo_core_common {
|
|
|
48
98
|
// cross-cutting concern, and editorial status.
|
|
49
99
|
abstract part def MemoPart {
|
|
50
100
|
// identity
|
|
51
|
-
attribute id : String;
|
|
52
|
-
attribute uuid : String;
|
|
53
101
|
attribute name : String;
|
|
54
102
|
// Two description registers on every MEMO element, because views have
|
|
55
103
|
// two densities. `shortDescription` is the one-line form a table cell,
|
|
@@ -58,11 +106,8 @@ package memo_core_common {
|
|
|
58
106
|
// renders. A view picks the register that fits — it never truncates
|
|
59
107
|
// the long one, because a silently clipped sentence in a DHF table is
|
|
60
108
|
// a defect, not a layout choice.
|
|
61
|
-
attribute shortDescription : String;
|
|
62
109
|
attribute description : String;
|
|
63
110
|
// traceability
|
|
64
|
-
attribute rationale : String;
|
|
65
|
-
attribute sourceReference : String;
|
|
66
111
|
// editorial status and lifecycle
|
|
67
112
|
attribute status : ElementStatusKind;
|
|
68
113
|
attribute lifecycleState : LifecycleStateKind;
|
|
@@ -78,7 +123,6 @@ package memo_core_common {
|
|
|
78
123
|
// MemoPart so all existing content inherits the dimensions. ───
|
|
79
124
|
part def RequirementDriver specializes MemoPart;
|
|
80
125
|
abstract part def VerifiableElement specializes MemoPart;
|
|
81
|
-
abstract part def ArchitectureElement specializes MemoPart;
|
|
82
126
|
part def InterfaceElement specializes MemoPart;
|
|
83
127
|
enum def EvidenceKind { enum testArtifact; enum evidence; enum formativeEvaluation; enum usabilityValidation; enum securityClaim; }
|
|
84
128
|
part def MemoEvidence specializes MemoPart {
|
|
@@ -108,10 +152,15 @@ package memo_core_common {
|
|
|
108
152
|
// description registers every MemoPart now carries: a title and its place
|
|
109
153
|
// in a document. The former `shortDescription`/`longDescription` pair is
|
|
110
154
|
// gone — short is inherited, and `description` IS the long form.
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
155
|
+
// Top-level goal a system or operation exists to fulfil, with its success
|
|
156
|
+
// criteria and context. Domain layers specialize it; the medical-device
|
|
157
|
+
// intended use (memo_architecture_operational_structure::IntendedUse) is a
|
|
158
|
+
// MemoMission. Specializes MemoPart directly — name/description/rationale
|
|
159
|
+
// already live there, so no DocumentedElement layer is needed.
|
|
160
|
+
abstract part def MemoMission specializes MemoPart {
|
|
161
|
+
attribute missionKind : String;
|
|
162
|
+
attribute successCriteria : String;
|
|
163
|
+
attribute operationalContext : String;
|
|
115
164
|
}
|
|
116
165
|
|
|
117
166
|
// ─── Construct-specific foundations (non-part metaclasses) ───────
|
|
@@ -119,25 +168,15 @@ package memo_core_common {
|
|
|
119
168
|
// Behavioral foundation: operational activities, tasks, system actions,
|
|
120
169
|
// and interaction steps specialize MemoAction.
|
|
121
170
|
action def MemoAction {
|
|
122
|
-
attribute id : String;
|
|
123
|
-
attribute uuid : String;
|
|
124
171
|
attribute name : String;
|
|
125
|
-
attribute shortDescription : String;
|
|
126
172
|
attribute description : String;
|
|
127
|
-
attribute rationale : String;
|
|
128
|
-
attribute sourceReference : String;
|
|
129
173
|
attribute status : ElementStatusKind;
|
|
130
174
|
}
|
|
131
175
|
|
|
132
176
|
// Boundary feature foundation for typed ports.
|
|
133
177
|
port def MemoPort {
|
|
134
|
-
attribute id : String;
|
|
135
|
-
attribute uuid : String;
|
|
136
178
|
attribute name : String;
|
|
137
|
-
attribute shortDescription : String;
|
|
138
179
|
attribute description : String;
|
|
139
|
-
attribute rationale : String;
|
|
140
|
-
attribute sourceReference : String;
|
|
141
180
|
attribute status : ElementStatusKind;
|
|
142
181
|
}
|
|
143
182
|
|
|
@@ -145,13 +184,8 @@ package memo_core_common {
|
|
|
145
184
|
abstract interface def MemoInterface {
|
|
146
185
|
end source;
|
|
147
186
|
end target;
|
|
148
|
-
attribute id : String;
|
|
149
|
-
attribute uuid : String;
|
|
150
187
|
attribute name : String;
|
|
151
|
-
attribute shortDescription : String;
|
|
152
188
|
attribute description : String;
|
|
153
|
-
attribute rationale : String;
|
|
154
|
-
attribute sourceReference : String;
|
|
155
189
|
}
|
|
156
190
|
|
|
157
191
|
// Single item foundation. Standards, hazards, stored software data, and
|
|
@@ -159,13 +193,8 @@ package memo_core_common {
|
|
|
159
193
|
// exchanged is expressed by its use in a port or flow, not by a second
|
|
160
194
|
// ontology root.
|
|
161
195
|
abstract item def MemoItem {
|
|
162
|
-
attribute id : String;
|
|
163
|
-
attribute uuid : String;
|
|
164
196
|
attribute name : String;
|
|
165
|
-
attribute shortDescription : String;
|
|
166
197
|
attribute description : String;
|
|
167
|
-
attribute rationale : String;
|
|
168
|
-
attribute sourceReference : String;
|
|
169
198
|
attribute status : ElementStatusKind;
|
|
170
199
|
// What the item CARRIES, as distinct from what it is called. Removed
|
|
171
200
|
// by `595bfac` while modelling native wrappers; nothing replaced them,
|
|
@@ -186,26 +215,16 @@ package memo_core_common {
|
|
|
186
215
|
// references; identity is carried here so use cases do not maintain a
|
|
187
216
|
// partial hand-written copy of the MEMO identification core.
|
|
188
217
|
abstract use case def MemoUseCase {
|
|
189
|
-
attribute id : String;
|
|
190
|
-
attribute uuid : String;
|
|
191
218
|
attribute name : String;
|
|
192
|
-
attribute shortDescription : String;
|
|
193
219
|
attribute description : String;
|
|
194
|
-
attribute rationale : String;
|
|
195
|
-
attribute sourceReference : String;
|
|
196
220
|
attribute status : ElementStatusKind;
|
|
197
221
|
}
|
|
198
222
|
|
|
199
223
|
// General constraint foundation. Executable consistency rules and
|
|
200
224
|
// reusable quantitative constraints are both native constraint defs.
|
|
201
225
|
abstract constraint def MemoConstraint {
|
|
202
|
-
attribute id : String;
|
|
203
|
-
attribute uuid : String;
|
|
204
226
|
attribute name : String;
|
|
205
|
-
attribute shortDescription : String;
|
|
206
227
|
attribute description : String;
|
|
207
|
-
attribute rationale : String;
|
|
208
|
-
attribute sourceReference : String;
|
|
209
228
|
attribute status : ElementStatusKind;
|
|
210
229
|
}
|
|
211
230
|
|
|
@@ -216,13 +235,8 @@ package memo_core_common {
|
|
|
216
235
|
// say "a need or a requirement" with one type name — before it, every end
|
|
217
236
|
// that had to accept both was left untyped.
|
|
218
237
|
abstract requirement def MemoRequirementElement {
|
|
219
|
-
attribute id : String;
|
|
220
|
-
attribute uuid : String;
|
|
221
238
|
attribute name : String;
|
|
222
|
-
attribute shortDescription : String;
|
|
223
239
|
attribute description : String;
|
|
224
|
-
attribute rationale : String;
|
|
225
|
-
attribute sourceReference : String;
|
|
226
240
|
attribute status : ElementStatusKind;
|
|
227
241
|
attribute statement : String;
|
|
228
242
|
}
|
|
@@ -241,13 +255,8 @@ package memo_core_common {
|
|
|
241
255
|
// the part-based MemoPart — so, like MemoAction, it re-declares the small
|
|
242
256
|
// identification core rather than inheriting it.
|
|
243
257
|
verification def MemoVerificationCase {
|
|
244
|
-
attribute id : String;
|
|
245
|
-
attribute uuid : String;
|
|
246
258
|
attribute name : String;
|
|
247
|
-
attribute shortDescription : String;
|
|
248
259
|
attribute description : String;
|
|
249
|
-
attribute rationale : String;
|
|
250
|
-
attribute sourceReference : String;
|
|
251
260
|
attribute status : ElementStatusKind;
|
|
252
261
|
}
|
|
253
262
|
|
|
@@ -260,13 +269,8 @@ package memo_core_common {
|
|
|
260
269
|
|
|
261
270
|
state def MemoState {
|
|
262
271
|
attribute stateKind : StateKind;
|
|
263
|
-
attribute id : String;
|
|
264
|
-
attribute uuid : String;
|
|
265
272
|
attribute name : String;
|
|
266
|
-
attribute shortDescription : String;
|
|
267
273
|
attribute description : String;
|
|
268
|
-
attribute rationale : String;
|
|
269
|
-
attribute sourceReference : String;
|
|
270
274
|
attribute status : ElementStatusKind;
|
|
271
275
|
attribute modeKind : String;
|
|
272
276
|
attribute entryCondition : String;
|
|
@@ -7,6 +7,7 @@ package memo_core_relationships {
|
|
|
7
7
|
private import memo_core_common::*;
|
|
8
8
|
private import memo_core_enumerations::*;
|
|
9
9
|
|
|
10
|
+
private import Allocations::Allocation;
|
|
10
11
|
// All MEMO relations are native SysML v2 `connection def`s (each is a
|
|
11
12
|
// Connection/Association), specializing the MemoRelationship base. The
|
|
12
13
|
// relationship name is the verb; the RelationshipRegistry derives the
|
|
@@ -79,12 +80,12 @@ package memo_core_relationships {
|
|
|
79
80
|
// SystemFunction a part def with its behaviour stapled on through a
|
|
80
81
|
// separate action def, and what makes `allocate <function> to <actor>` —
|
|
81
82
|
// ARCADIA's own System Analysis mechanism — illegal, since Actor is a
|
|
82
|
-
// MemoPart but not
|
|
83
|
+
// MemoPart but not a narrower part subtype.
|
|
83
84
|
//
|
|
84
85
|
// Several of the relaxed ends were ALREADY being violated by real content
|
|
85
|
-
// before they were relaxed: `composes` links parts to
|
|
86
|
-
//
|
|
87
|
-
// `precedes` links
|
|
86
|
+
// before they were relaxed: `composes` links parts to OperativeAction
|
|
87
|
+
// (an action def) and to SoftwarePort/PhysicalPort;
|
|
88
|
+
// `precedes` links OperativeAction to OperativeAction; `allocatedTo`
|
|
88
89
|
// has ActionUsage sources; `bindsToInterface` targets an `interface def`,
|
|
89
90
|
// which an InterfaceElement-typed end cannot hold. The types were not
|
|
90
91
|
// buying the strictness they appeared to buy.
|
|
@@ -107,17 +108,6 @@ package memo_core_relationships {
|
|
|
107
108
|
// only when no specific relation carries the meaning, and say why in the
|
|
108
109
|
// inherited `rationale` — an untyped link with no stated reason is an
|
|
109
110
|
// audit gap, not a model fact.
|
|
110
|
-
connection def MemoLink :> MemoRelationship {
|
|
111
|
-
doc /* Generic association between any two model elements. */
|
|
112
|
-
end linkSource :>> source;
|
|
113
|
-
end linkTarget :>> target;
|
|
114
|
-
}
|
|
115
|
-
abstract connection memoLinkLinks : MemoLink[*];
|
|
116
|
-
metadata def <memoLink> MemoLinkMetadata :> SemanticMetadata {
|
|
117
|
-
:> annotatedElement : SysML::ConnectionDefinition;
|
|
118
|
-
:> annotatedElement : SysML::ConnectionUsage;
|
|
119
|
-
:>> baseType = memoLinkLinks meta SysML::Usage;
|
|
120
|
-
}
|
|
121
111
|
|
|
122
112
|
connection def DerivesFrom :> MemoRelationship {
|
|
123
113
|
// Drivers span metaclasses — a need is a requirement def, a hazard an
|
|
@@ -160,7 +150,7 @@ package memo_core_relationships {
|
|
|
160
150
|
|
|
161
151
|
connection def ThreatenedBy :> MemoRelationship {
|
|
162
152
|
attribute threatRole : String;
|
|
163
|
-
end protectedAsset :
|
|
153
|
+
end protectedAsset : MemoPart :>> source;
|
|
164
154
|
end realizedThreat : RequirementDriver :>> target;
|
|
165
155
|
}
|
|
166
156
|
abstract connection threatenedByLinks : ThreatenedBy[*];
|
|
@@ -206,57 +196,40 @@ package memo_core_relationships {
|
|
|
206
196
|
|
|
207
197
|
// Enables unifies the former EnablesWorkflow / EnablesActivity synonyms
|
|
208
198
|
// (an enabling system/function enables a workflow/activity).
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
}
|
|
213
|
-
abstract connection enablesLinks : Enables[*];
|
|
214
|
-
metadata def <enables> EnablesMetadata :> SemanticMetadata {
|
|
215
|
-
:> annotatedElement : SysML::ConnectionDefinition;
|
|
216
|
-
:> annotatedElement : SysML::ConnectionUsage;
|
|
217
|
-
:>> baseType = enablesLinks meta SysML::Usage;
|
|
218
|
-
}
|
|
199
|
+
// `Enables` is native `dependency` (2026-08-18): write
|
|
200
|
+
// `dependency from <enabling> to <enabled>;`. Same call as `Supports`,
|
|
201
|
+
// which was deleted as a duplicate of both `dependency` and `Enables`.
|
|
219
202
|
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
203
|
+
// A processing node hosted by an assembly is allocated to it. The end
|
|
204
|
+
// NAMES were already right; two of the three usages wrote them in reverse
|
|
205
|
+
// order, and the builder binds by position, so those two edges pointed the
|
|
206
|
+
// wrong way. See the reversed-end-name lint in memo-tools.
|
|
207
|
+
allocation def HostedBy :> MemoRelationship, Allocations::Allocation {
|
|
208
|
+
end processingNode : MemoPart :>> source;
|
|
209
|
+
end hostAssembly : MemoPart :>> target;
|
|
223
210
|
}
|
|
224
211
|
abstract connection hostedByLinks : HostedBy[*];
|
|
225
212
|
metadata def <hostedBy> HostedByMetadata :> SemanticMetadata {
|
|
226
|
-
:> annotatedElement : SysML::
|
|
227
|
-
:> annotatedElement : SysML::
|
|
213
|
+
:> annotatedElement : SysML::AllocationDefinition;
|
|
214
|
+
:> annotatedElement : SysML::AllocationUsage;
|
|
228
215
|
:>> baseType = hostedByLinks meta SysML::Usage;
|
|
229
216
|
}
|
|
230
217
|
|
|
231
218
|
|
|
232
219
|
|
|
233
220
|
|
|
234
|
-
// Composes is
|
|
235
|
-
//
|
|
236
|
-
//
|
|
237
|
-
//
|
|
238
|
-
//
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
:> annotatedElement : SysML::ConnectionDefinition;
|
|
246
|
-
:> annotatedElement : SysML::ConnectionUsage;
|
|
247
|
-
:>> baseType = composesLinks meta SysML::Usage;
|
|
248
|
-
}
|
|
221
|
+
// `Composes` is deleted (R10-S7). Containment is NESTING — the child is
|
|
222
|
+
// declared inside the parent — which is how SysML v2 models composition:
|
|
223
|
+
// composite feature ownership, not a link. The relation specialized
|
|
224
|
+
// `Connections::BinaryConnection`, "a link between two things WITHIN some
|
|
225
|
+
// containing structure", so it was the wrong category for the containment
|
|
226
|
+
// itself, and the corpus has no composition connection to specialize.
|
|
227
|
+
//
|
|
228
|
+
// Nothing is lost: the builder synthesizes a `composes` edge from every
|
|
229
|
+
// nested part and item, so rules, the DSM and traceability read exactly the
|
|
230
|
+
// graph they read before. The edge type is registered natively in
|
|
231
|
+
// memo-tools' relationship registry.
|
|
249
232
|
|
|
250
|
-
connection def AnalyzedBy :> MemoRelationship {
|
|
251
|
-
end element : ArchitectureElement :>> source;
|
|
252
|
-
end analysisArtifact : AnalysisArtifact :>> target;
|
|
253
|
-
}
|
|
254
|
-
abstract connection analyzedByLinks : AnalyzedBy[*];
|
|
255
|
-
metadata def <analyzedBy> AnalyzedByMetadata :> SemanticMetadata {
|
|
256
|
-
:> annotatedElement : SysML::ConnectionDefinition;
|
|
257
|
-
:> annotatedElement : SysML::ConnectionUsage;
|
|
258
|
-
:>> baseType = analyzedByLinks meta SysML::Usage;
|
|
259
|
-
}
|
|
260
233
|
|
|
261
234
|
connection def BindsToInterface :> MemoRelationship {
|
|
262
235
|
end portElement :>> source;
|
|
@@ -3,8 +3,10 @@ package memo_methodology_archetypes {
|
|
|
3
3
|
|
|
4
4
|
private import memo_methodology_core::*;
|
|
5
5
|
|
|
6
|
+
private import memo_core_common::*;
|
|
7
|
+
private import memo_core_common::MemoIdentity;
|
|
6
8
|
part minimal : Archetype {
|
|
7
|
-
|
|
9
|
+
@MemoIdentity { :>> providedId = "ARCH-MINIMAL"; }
|
|
8
10
|
attribute :>> name = "Minimal";
|
|
9
11
|
attribute :>> label = "Minimal";
|
|
10
12
|
attribute :>> description = "Core ontology only — requirements, hazards, basic architecture (~53 kinds)";
|
|
@@ -15,7 +17,7 @@ package memo_methodology_archetypes {
|
|
|
15
17
|
}
|
|
16
18
|
|
|
17
19
|
part standardArchetype : Archetype {
|
|
18
|
-
|
|
20
|
+
@MemoIdentity { :>> providedId = "ARCH-STANDARD"; }
|
|
19
21
|
attribute :>> name = "Standard";
|
|
20
22
|
attribute :>> label = "Standard";
|
|
21
23
|
attribute :>> description = "Core + risk + software + DHF — covers most Class II devices (~120 kinds)";
|
|
@@ -26,7 +28,7 @@ package memo_methodology_archetypes {
|
|
|
26
28
|
}
|
|
27
29
|
|
|
28
30
|
part full : Archetype {
|
|
29
|
-
|
|
31
|
+
@MemoIdentity { :>> providedId = "ARCH-FULL"; }
|
|
30
32
|
attribute :>> name = "Full";
|
|
31
33
|
attribute :>> label = "Full";
|
|
32
34
|
attribute :>> description = "All architecture layers, standards, and extensions (~200+ kinds)";
|
|
@@ -37,7 +39,7 @@ package memo_methodology_archetypes {
|
|
|
37
39
|
}
|
|
38
40
|
|
|
39
41
|
part samd : Archetype {
|
|
40
|
-
|
|
42
|
+
@MemoIdentity { :>> providedId = "ARCH-SAMD"; }
|
|
41
43
|
attribute :>> name = "SaMD";
|
|
42
44
|
attribute :>> label = "Software as Medical Device (SaMD)";
|
|
43
45
|
attribute :>> description = "Clinical decision support, diagnostic algorithm, AI/ML tool, mobile medical app";
|
|
@@ -48,7 +50,7 @@ package memo_methodology_archetypes {
|
|
|
48
50
|
}
|
|
49
51
|
|
|
50
52
|
part connected : Archetype {
|
|
51
|
-
|
|
53
|
+
@MemoIdentity { :>> providedId = "ARCH-CONNECTED"; }
|
|
52
54
|
attribute :>> name = "Connected";
|
|
53
55
|
attribute :>> label = "Connected / IoT Device";
|
|
54
56
|
attribute :>> description = "Remote monitoring, wearable, smart device with cloud connectivity and cybersecurity requirements";
|
|
@@ -59,7 +61,7 @@ package memo_methodology_archetypes {
|
|
|
59
61
|
}
|
|
60
62
|
|
|
61
63
|
part monitoring : Archetype {
|
|
62
|
-
|
|
64
|
+
@MemoIdentity { :>> providedId = "ARCH-MONITORING"; }
|
|
63
65
|
attribute :>> name = "Monitoring";
|
|
64
66
|
attribute :>> label = "Monitoring / Diagnostic Device";
|
|
65
67
|
attribute :>> description = "Patient monitor, ECG, SpO2, vital signs, bedside diagnostic equipment";
|
|
@@ -70,7 +72,7 @@ package memo_methodology_archetypes {
|
|
|
70
72
|
}
|
|
71
73
|
|
|
72
74
|
part infusion_pump : Archetype {
|
|
73
|
-
|
|
75
|
+
@MemoIdentity { :>> providedId = "ARCH-INFUSION"; }
|
|
74
76
|
attribute :>> name = "InfusionPump";
|
|
75
77
|
attribute :>> label = "Infusion / Drug Delivery Device";
|
|
76
78
|
attribute :>> description = "Infusion pump, syringe driver, implantable drug delivery, dosing device";
|
|
@@ -81,7 +83,7 @@ package memo_methodology_archetypes {
|
|
|
81
83
|
}
|
|
82
84
|
|
|
83
85
|
part blank : Archetype {
|
|
84
|
-
|
|
86
|
+
@MemoIdentity { :>> providedId = "ARCH-BLANK"; }
|
|
85
87
|
attribute :>> name = "Blank";
|
|
86
88
|
attribute :>> label = "Blank Project";
|
|
87
89
|
attribute :>> description = "Start from scratch with a minimal SysML shell";
|
|
@@ -113,14 +113,4 @@ package memo_methodology_core {
|
|
|
113
113
|
// ── Relations owned by this package ─────────────────────────────
|
|
114
114
|
// Moved out of memo_core_relationships: their ends are typed against
|
|
115
115
|
// types declared here, and core must not depend on a domain package.
|
|
116
|
-
connection def ResolvesToMethodology :> MemoRelationship {
|
|
117
|
-
end boundModelElement : MemoPart :>> source;
|
|
118
|
-
end resolvedMethodology : MethodologyDefinition :>> target;
|
|
119
|
-
}
|
|
120
|
-
abstract connection resolvesToMethodologyLinks : ResolvesToMethodology[*];
|
|
121
|
-
metadata def <resolvesToMethodology> ResolvesToMethodologyMetadata :> SemanticMetadata {
|
|
122
|
-
:> annotatedElement : SysML::ConnectionDefinition;
|
|
123
|
-
:> annotatedElement : SysML::ConnectionUsage;
|
|
124
|
-
:>> baseType = resolvesToMethodologyLinks meta SysML::Usage;
|
|
125
|
-
}
|
|
126
116
|
}
|
|
@@ -9,8 +9,10 @@ package memo_methodology_profiles {
|
|
|
9
9
|
private import memo_core_enumerations::*;
|
|
10
10
|
private import memo_core_methodology_scope::*;
|
|
11
11
|
|
|
12
|
+
private import memo_core_common::*;
|
|
13
|
+
private import memo_core_common::MemoIdentity;
|
|
12
14
|
part mdCoreLibrary : MethodologyLibrary {
|
|
13
|
-
|
|
15
|
+
@MemoIdentity { :>> providedId = "METHLIB-001"; }
|
|
14
16
|
attribute :>> name = "MedicalDeviceMethodologyLibrary";
|
|
15
17
|
attribute :>> version = "0.1";
|
|
16
18
|
attribute :>> domain = "medical device modeling";
|
|
@@ -31,7 +33,7 @@ package memo_methodology_profiles {
|
|
|
31
33
|
// that into `allAvailable` preserves the effective result and removes the
|
|
32
34
|
// second scope authority.
|
|
33
35
|
part mdDefaultDefinition : MethodologyDefinition {
|
|
34
|
-
|
|
36
|
+
@MemoIdentity { :>> providedId = "METH-MD-DEFAULT"; }
|
|
35
37
|
attribute :>> name = "MedicalDeviceDefault";
|
|
36
38
|
attribute :>> version = "0.6.5";
|
|
37
39
|
attribute :>> domain = "medical device modeling";
|
|
@@ -40,7 +42,7 @@ package memo_methodology_profiles {
|
|
|
40
42
|
}
|
|
41
43
|
|
|
42
44
|
part useRiskAndResidualRule : ElementUsageRule {
|
|
43
|
-
|
|
45
|
+
@MemoIdentity { :>> providedId = "RULE-001"; }
|
|
44
46
|
attribute :>> name = "UseRiskAndResidualRisk";
|
|
45
47
|
attribute :>> elementTypeName = "Risk,ResidualRisk,RiskMatrix";
|
|
46
48
|
attribute :>> strength = RuleStrengthKind::recommended;
|
|
@@ -48,7 +50,7 @@ package memo_methodology_profiles {
|
|
|
48
50
|
}
|
|
49
51
|
|
|
50
52
|
part requireVerifiedByRule : RelationUsageRule {
|
|
51
|
-
|
|
53
|
+
@MemoIdentity { :>> providedId = "RULE-002"; }
|
|
52
54
|
attribute :>> name = "VerifiedBysRequired";
|
|
53
55
|
attribute :>> relationTypeName = "verify";
|
|
54
56
|
attribute :>> strength = RuleStrengthKind::required;
|
|
@@ -56,7 +58,7 @@ package memo_methodology_profiles {
|
|
|
56
58
|
}
|
|
57
59
|
|
|
58
60
|
part lightRiskPattern : ModelingPattern {
|
|
59
|
-
|
|
61
|
+
@MemoIdentity { :>> providedId = "PAT-001"; }
|
|
60
62
|
attribute :>> name = "LightRiskBeforeAfterPattern";
|
|
61
63
|
attribute :>> intent = "Model hazard chain, before/after mitigation risk, controls, and residual evaluation in a lightweight way.";
|
|
62
64
|
attribute :>> stage = WorkflowStageKind::risk;
|
|
@@ -64,7 +66,7 @@ package memo_methodology_profiles {
|
|
|
64
66
|
}
|
|
65
67
|
|
|
66
68
|
part lightTracePattern : ModelingPattern {
|
|
67
|
-
|
|
69
|
+
@MemoIdentity { :>> providedId = "PAT-002"; }
|
|
68
70
|
attribute :>> name = "CoreTracePattern";
|
|
69
71
|
attribute :>> intent = "Need or risk to requirement, requirement to architecture, requirement/control to verification.";
|
|
70
72
|
attribute :>> stage = WorkflowStageKind::requirements;
|
|
@@ -72,7 +74,7 @@ package memo_methodology_profiles {
|
|
|
72
74
|
}
|
|
73
75
|
|
|
74
76
|
action stepRequirements : MethodologyWorkflowStep {
|
|
75
|
-
|
|
77
|
+
@MemoIdentity { :>> providedId = "STEP-001"; }
|
|
76
78
|
attribute :>> name = "CaptureRequirements";
|
|
77
79
|
attribute :>> stage = WorkflowStageKind::requirements;
|
|
78
80
|
attribute :>> objectiveDescription = "Capture stakeholder needs and derive requirements.";
|
|
@@ -81,7 +83,7 @@ package memo_methodology_profiles {
|
|
|
81
83
|
}
|
|
82
84
|
|
|
83
85
|
action stepArchitecture : MethodologyWorkflowStep {
|
|
84
|
-
|
|
86
|
+
@MemoIdentity { :>> providedId = "STEP-002"; }
|
|
85
87
|
attribute :>> name = "DefineArchitecture";
|
|
86
88
|
attribute :>> stage = WorkflowStageKind::architecture;
|
|
87
89
|
attribute :>> objectiveDescription = "Define key software and hardware architecture elements and interfaces.";
|
|
@@ -90,7 +92,7 @@ package memo_methodology_profiles {
|
|
|
90
92
|
}
|
|
91
93
|
|
|
92
94
|
action stepRisk : MethodologyWorkflowStep {
|
|
93
|
-
|
|
95
|
+
@MemoIdentity { :>> providedId = "STEP-003"; }
|
|
94
96
|
attribute :>> name = "PerformRiskAnalysis";
|
|
95
97
|
attribute :>> stage = WorkflowStageKind::risk;
|
|
96
98
|
attribute :>> objectiveDescription = "Create core risk chain and controls.";
|
|
@@ -99,7 +101,7 @@ package memo_methodology_profiles {
|
|
|
99
101
|
}
|
|
100
102
|
|
|
101
103
|
action stepVerification : MethodologyWorkflowStep {
|
|
102
|
-
|
|
104
|
+
@MemoIdentity { :>> providedId = "STEP-004"; }
|
|
103
105
|
attribute :>> name = "PlanVerification";
|
|
104
106
|
attribute :>> stage = WorkflowStageKind::verificationStage;
|
|
105
107
|
attribute :>> objectiveDescription = "Define verification and evidence expectations.";
|
|
@@ -111,7 +113,7 @@ package memo_methodology_profiles {
|
|
|
111
113
|
first stepRisk then stepVerification;
|
|
112
114
|
|
|
113
115
|
part gateLightComplete : QualityGate {
|
|
114
|
-
|
|
116
|
+
@MemoIdentity { :>> providedId = "GATE-001"; }
|
|
115
117
|
attribute :>> name = "LightMethodReady";
|
|
116
118
|
attribute :>> gateStage = WorkflowStageKind::verificationStage;
|
|
117
119
|
attribute :>> passCriteria = "Core traceability, risk, verification, and RMF view support are present.";
|
|
@@ -123,7 +125,7 @@ package memo_methodology_profiles {
|
|
|
123
125
|
// references its methodology with a typed SysML reference.
|
|
124
126
|
|
|
125
127
|
part rmpDoc : DhfDocumentBinding {
|
|
126
|
-
|
|
128
|
+
@MemoIdentity { :>> providedId = "DHF-001"; }
|
|
127
129
|
attribute :>> name = "RiskManagementPlan";
|
|
128
130
|
attribute :>> documentTitle = "Risk Management Plan";
|
|
129
131
|
attribute :>> groupLabel = "Risk Management";
|
|
@@ -135,7 +137,7 @@ package memo_methodology_profiles {
|
|
|
135
137
|
}
|
|
136
138
|
|
|
137
139
|
part harDoc : DhfDocumentBinding {
|
|
138
|
-
|
|
140
|
+
@MemoIdentity { :>> providedId = "DHF-002"; }
|
|
139
141
|
attribute :>> name = "HazardAnalysisReport";
|
|
140
142
|
attribute :>> documentTitle = "Hazard Analysis Report";
|
|
141
143
|
attribute :>> groupLabel = "Risk Management";
|
|
@@ -147,7 +149,7 @@ package memo_methodology_profiles {
|
|
|
147
149
|
}
|
|
148
150
|
|
|
149
151
|
part sadDoc : DhfDocumentBinding {
|
|
150
|
-
|
|
152
|
+
@MemoIdentity { :>> providedId = "DHF-003"; }
|
|
151
153
|
attribute :>> name = "SoftwareArchitectureDescription";
|
|
152
154
|
attribute :>> documentTitle = "Software Architecture Description";
|
|
153
155
|
attribute :>> groupLabel = "Software";
|
|
@@ -159,7 +161,7 @@ package memo_methodology_profiles {
|
|
|
159
161
|
}
|
|
160
162
|
|
|
161
163
|
part threatModelDoc : DhfDocumentBinding {
|
|
162
|
-
|
|
164
|
+
@MemoIdentity { :>> providedId = "DHF-004"; }
|
|
163
165
|
attribute :>> name = "CybersecurityThreatModel";
|
|
164
166
|
attribute :>> documentTitle = "Threat Model";
|
|
165
167
|
attribute :>> groupLabel = "Cybersecurity";
|
|
@@ -171,7 +173,7 @@ package memo_methodology_profiles {
|
|
|
171
173
|
}
|
|
172
174
|
|
|
173
175
|
part vvPlanDoc : DhfDocumentBinding {
|
|
174
|
-
|
|
176
|
+
@MemoIdentity { :>> providedId = "DHF-005"; }
|
|
175
177
|
attribute :>> name = "VerificationValidationPlan";
|
|
176
178
|
attribute :>> documentTitle = "V&V Plan";
|
|
177
179
|
attribute :>> groupLabel = "Verification & Validation";
|
|
@@ -5,11 +5,11 @@ package memo_methodology_workflow {
|
|
|
5
5
|
private import memo_core_enumerations::*;
|
|
6
6
|
|
|
7
7
|
// Named for its axis: this is a step in a METHODOLOGY workflow (a lifecycle
|
|
8
|
-
// stage with entry/exit criteria), distinct from
|
|
9
|
-
//
|
|
10
|
-
//
|
|
11
|
-
//
|
|
12
|
-
//
|
|
8
|
+
// stage with entry/exit criteria), distinct from an OPERATIONAL workflow's
|
|
9
|
+
// steps, which are OperativeActions performed by users or the system. The
|
|
10
|
+
// two carry different attributes and must not share a short name — an
|
|
11
|
+
// overloaded name resolves by load order and silently validates a usage
|
|
12
|
+
// against the wrong type.
|
|
13
13
|
action def MethodologyWorkflowStep :> MemoAction {
|
|
14
14
|
attribute stage : WorkflowStageKind;
|
|
15
15
|
attribute objectiveDescription : String;
|