@memoarchitect/ontology 0.6.5 → 0.8.22
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 +4 -2
- package/examples/connected-patient-monitor/model/catalog/connected_patient_monitor.sysml +1 -1
- package/examples/connected-patient-monitor/model/catalog/project.sysml +24 -0
- package/examples/connected-patient-monitor/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
- package/examples/connected-patient-monitor/model/{viewpoints → catalog/viewpoints/unassigned/views}/connected_patient_monitor_overview.sysml +1 -1
- package/examples/embedded-infusion-pump/model/catalog/embedded_infusion_pump.sysml +7 -5
- package/examples/embedded-infusion-pump/model/catalog/project.sysml +24 -0
- package/examples/embedded-infusion-pump/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
- package/examples/embedded-infusion-pump/model/{viewpoints → catalog/viewpoints/unassigned/views}/embedded_infusion_pump_overview.sysml +1 -1
- package/examples/functional-logical-physical/model/catalog/functional_logical_physical.sysml +5 -5
- package/examples/functional-logical-physical/model/catalog/project.sysml +24 -0
- package/examples/functional-logical-physical/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
- package/examples/functional-logical-physical/model/{viewpoints → catalog/viewpoints/unassigned/views}/functional_logical_physical_overview.sysml +1 -1
- package/examples/gpca-pump/methodology/gpca_methodology.sysml +7 -8
- package/examples/gpca-pump/methodology/gpca_profiles.sysml +89 -11
- package/examples/gpca-pump/model/catalog/gpca_analysis.sysml +19 -9
- package/examples/gpca-pump/model/catalog/gpca_architecture.sysml +342 -100
- package/examples/gpca-pump/model/catalog/gpca_behavior_actions.sysml +27 -13
- package/examples/gpca-pump/model/catalog/gpca_behavior_modes.sysml +329 -272
- package/examples/gpca-pump/model/catalog/gpca_behavior_subsystems.sysml +57 -16
- package/examples/gpca-pump/model/catalog/gpca_context.sysml +12 -8
- package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +14 -10
- package/examples/gpca-pump/model/catalog/gpca_formal_behavior.sysml +1 -15
- package/examples/gpca-pump/model/catalog/gpca_interfaces.sysml +181 -264
- package/examples/gpca-pump/model/catalog/gpca_operational.sysml +95 -60
- package/examples/gpca-pump/model/catalog/gpca_physical.sysml +6 -11
- package/examples/gpca-pump/model/catalog/gpca_requirements.sysml +102 -101
- package/examples/gpca-pump/model/catalog/gpca_risk.sysml +1 -1
- package/examples/gpca-pump/model/catalog/gpca_standards.sysml +161 -0
- package/examples/gpca-pump/model/catalog/gpca_system.sysml +47 -30
- package/examples/gpca-pump/model/catalog/gpca_trace.sysml +301 -354
- package/examples/gpca-pump/model/catalog/gpca_verification.sysml +116 -36
- package/examples/gpca-pump/model/catalog/project.sysml +26 -0
- package/examples/gpca-pump/model/catalog/viewpoints/context/viewpoint.sysml +8 -0
- package/examples/gpca-pump/model/{views → catalog/viewpoints/context/views}/context_system_context_view.sysml +4 -4
- package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/viewpoint.sysml +8 -0
- package/examples/gpca-pump/model/{views → catalog/viewpoints/cybersecurity/views}/cybersecurity_cybersecurity_view.sysml +4 -4
- package/examples/gpca-pump/model/{views → catalog/viewpoints/cybersecurity/views}/document_cyber_assessment_view.sysml +4 -4
- package/examples/gpca-pump/model/{views → catalog/viewpoints/cybersecurity/views}/document_threat_model_view.sysml +5 -5
- package/examples/gpca-pump/model/catalog/viewpoints/functional/viewpoint.sysml +8 -0
- package/examples/gpca-pump/model/{views → catalog/viewpoints/functional/views}/functional_function_allocation_view.sysml +2 -2
- package/examples/gpca-pump/model/{views → catalog/viewpoints/functional/views}/functional_function_browser_view.sysml +3 -3
- package/examples/gpca-pump/model/catalog/viewpoints/logical/viewpoint.sysml +8 -0
- package/examples/gpca-pump/model/{views → catalog/viewpoints/logical/views}/behavior_action_flow_view.sysml +3 -3
- package/examples/gpca-pump/model/{views → catalog/viewpoints/logical/views}/document_architecture_description_view.sysml +8 -8
- package/examples/gpca-pump/model/{views → catalog/viewpoints/logical/views}/logical_device_interconnect_view.sysml +5 -5
- package/examples/gpca-pump/model/{views → catalog/viewpoints/logical/views}/logical_logical_architecture_view.sysml +3 -3
- package/examples/gpca-pump/model/{views → catalog/viewpoints/logical/views}/logical_mode_state_view.sysml +4 -4
- package/examples/gpca-pump/model/{views → catalog/viewpoints/logical/views}/logical_system_decomposition_view.sysml +3 -3
- package/examples/gpca-pump/model/catalog/viewpoints/operational/viewpoint.sysml +8 -0
- package/examples/gpca-pump/model/{views → catalog/viewpoints/operational/views}/operational_scenario_sequence_view.sysml +3 -3
- package/examples/gpca-pump/model/{views → catalog/viewpoints/operational/views}/operational_use_case_view.sysml +4 -4
- package/examples/gpca-pump/model/catalog/viewpoints/physical/viewpoint.sysml +8 -0
- package/examples/gpca-pump/model/{views → catalog/viewpoints/physical/views}/physical_physical_bom_view.sysml +2 -2
- package/examples/gpca-pump/model/catalog/viewpoints/requirements/viewpoint.sysml +8 -0
- package/examples/gpca-pump/model/{views → catalog/viewpoints/requirements/views}/document_dhf_index_view.sysml +8 -8
- package/examples/gpca-pump/model/{views → catalog/viewpoints/requirements/views}/requirements_requirements_trace_view.sysml +2 -2
- package/examples/gpca-pump/model/catalog/viewpoints/risk/viewpoint.sysml +8 -0
- package/examples/gpca-pump/model/{views → catalog/viewpoints/risk/views}/document_hazard_analysis_view.sysml +8 -5
- package/examples/gpca-pump/model/{views → catalog/viewpoints/risk/views}/document_rmf_view.sysml +7 -5
- package/examples/gpca-pump/model/{views → catalog/viewpoints/risk/views}/risk_fmea_view.sysml +3 -3
- package/examples/gpca-pump/model/{views → catalog/viewpoints/risk/views}/risk_risk_chain_view.sysml +3 -3
- package/examples/gpca-pump/model/catalog/viewpoints/software/viewpoint.sysml +8 -0
- package/examples/gpca-pump/model/{views → catalog/viewpoints/software/views}/document_sdd_view.sysml +4 -4
- package/examples/gpca-pump/model/{views → catalog/viewpoints/software/views}/software_software_architecture_view.sysml +5 -5
- package/examples/gpca-pump/model/catalog/viewpoints/usability/viewpoint.sysml +8 -0
- package/examples/gpca-pump/model/{views → catalog/viewpoints/usability/views}/document_usability_view.sysml +8 -6
- package/examples/gpca-pump/model/catalog/viewpoints/verification/viewpoint.sysml +8 -0
- package/examples/gpca-pump/model/{views → catalog/viewpoints/verification/views}/document_vv_view.sysml +7 -5
- package/examples/gpca-pump/model/{views → catalog/viewpoints/verification/views}/verification_verification_coverage_view.sysml +3 -3
- package/examples/ivd-laboratory-system/model/catalog/project.sysml +24 -0
- package/examples/ivd-laboratory-system/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
- package/examples/ivd-laboratory-system/model/{viewpoints → catalog/viewpoints/unassigned/views}/ivd_laboratory_system_overview.sysml +1 -1
- package/examples/manual-surgical-instrument/model/catalog/manual_surgical_instrument.sysml +4 -2
- package/examples/manual-surgical-instrument/model/catalog/project.sysml +24 -0
- package/examples/manual-surgical-instrument/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
- package/examples/manual-surgical-instrument/model/{viewpoints → catalog/viewpoints/unassigned/views}/manual_surgical_instrument_overview.sysml +1 -1
- package/examples/multidimensional-layers/model/catalog/multidimensional_layers.sysml +6 -2
- package/examples/multidimensional-layers/model/catalog/project.sysml +24 -0
- package/examples/multidimensional-layers/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
- package/examples/multidimensional-layers/model/{viewpoints → catalog/viewpoints/unassigned/views}/multidimensional_layers_overview.sysml +1 -1
- package/examples/nested-architecture-dsm/README.md +49 -0
- package/examples/nested-architecture-dsm/model/catalog/architecture/functional/functions.sysml +179 -0
- package/examples/nested-architecture-dsm/model/catalog/architecture/logical/structure.sysml +165 -0
- package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/needs.sysml +53 -0
- package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/requirements.sysml +89 -0
- package/examples/nested-architecture-dsm/model/catalog/assurance/verification_validation/verification_validation.sysml +113 -0
- package/examples/nested-architecture-dsm/model/catalog/project.sysml +28 -0
- package/examples/nested-architecture-dsm/model/catalog/traces.sysml +48 -0
- package/examples/reusable-instrument/model/catalog/project.sysml +24 -0
- package/examples/reusable-instrument/model/catalog/reusable_instrument.sysml +11 -8
- package/examples/reusable-instrument/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
- package/examples/reusable-instrument/model/{viewpoints → catalog/viewpoints/unassigned/views}/reusable_instrument_overview.sysml +1 -1
- package/examples/ros-mobile-robot/README.md +40 -0
- package/examples/ros-mobile-robot/model/catalog/project.sysml +33 -0
- package/examples/ros-mobile-robot/model/catalog/ros_mobile_robot.sysml +296 -0
- package/examples/ros-mobile-robot/model/catalog/viewpoints/unassigned/viewpoint.sysml +7 -0
- package/examples/ros-mobile-robot/model/catalog/viewpoints/unassigned/views/ros_mobile_robot_overview.sysml +13 -0
- package/examples/software-only-medical-device/model/catalog/project.sysml +28 -0
- package/examples/software-only-medical-device/model/catalog/software_only_medical_device.sysml +11 -5
- package/examples/software-only-medical-device/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
- package/examples/software-only-medical-device/model/{viewpoints → catalog/viewpoints/unassigned/views}/software_only_medical_device_overview.sysml +1 -1
- package/examples/surgical-closure-workflow/model/catalog/project.sysml +24 -0
- package/examples/surgical-closure-workflow/model/catalog/surgical_closure_workflow.sysml +57 -57
- package/examples/surgical-closure-workflow/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
- package/examples/surgical-closure-workflow/model/{viewpoints → catalog/viewpoints/unassigned/views}/surgical_closure_workflow_overview.sysml +1 -1
- package/examples/surgical-robot/model/catalog/project.sysml +24 -0
- package/examples/surgical-robot/model/catalog/surgical_robot.sysml +6 -4
- package/examples/surgical-robot/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
- package/examples/surgical-robot/model/{viewpoints → catalog/viewpoints/unassigned/views}/surgical_robot_overview.sysml +1 -1
- package/examples/sysml-diagram-samples/README.md +7 -0
- package/examples/sysml-diagram-samples/dhf/documents/DOC-HAR-001.md +11 -0
- package/examples/sysml-diagram-samples/memo.package.yaml +11 -5
- package/examples/sysml-diagram-samples/model/catalog/project.sysml +33 -0
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
- package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/action_flow_view.sysml +23 -20
- package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/context_view.sysml +11 -11
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.viewlayout +47 -0
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/functional_flow_view.sysml +143 -0
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.sysml +87 -0
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.viewlayout +94 -0
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.sysml +109 -0
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.viewlayout +13 -0
- package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/requirements_view.sysml +6 -7
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/standard_activity_view.sysml +33 -0
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/state_transition_view.sysml +80 -0
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/tree_view.sysml +48 -0
- package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/use_case_view.sysml +15 -9
- package/examples/sysml-diagram-samples/model/sysml_v2_activity_example.sysml +93 -0
- package/examples/temperature-alarm/model/catalog/project.sysml +24 -0
- package/examples/temperature-alarm/model/catalog/temperature_alarm.sysml +29 -21
- package/examples/temperature-alarm/model/catalog/viewpoints/unassigned/viewpoint.sysml +9 -0
- package/examples/temperature-alarm/model/{viewpoints → catalog/viewpoints/unassigned/views}/temperature_alarm_overview.sysml +1 -1
- package/examples/ui-screen-regions/README.md +117 -0
- package/examples/ui-screen-regions/model/catalog/architecture/functional/functions.sysml +84 -0
- package/examples/ui-screen-regions/model/catalog/architecture/implementation/ui.sysml +212 -0
- package/examples/ui-screen-regions/model/catalog/artifacts/assets/catalog.sysml +61 -0
- package/examples/ui-screen-regions/model/catalog/artifacts/assets/screen-captures/drugSelectorRegion/drug-selector-expanded-2.4.1.png +0 -0
- package/examples/ui-screen-regions/model/catalog/artifacts/assets/screen-captures/mainScreenLayout/main-screen-2.4.1.png +0 -0
- package/examples/ui-screen-regions/model/catalog/artifacts/assets/screen-captures/settingsScreenLayout/settings-screen-2.4.1.png +0 -0
- package/examples/ui-screen-regions/model/catalog/artifacts/reviews/comments.sysml +51 -0
- package/examples/ui-screen-regions/model/catalog/artifacts/reviews/notes.sysml +27 -0
- package/examples/ui-screen-regions/model/catalog/artifacts/reviews/rationales.sysml +27 -0
- package/examples/ui-screen-regions/model/catalog/assurance/human_factors/human_factors.sysml +59 -0
- package/examples/ui-screen-regions/model/catalog/assurance/requirements/needs.sysml +25 -0
- package/examples/ui-screen-regions/model/catalog/assurance/requirements/requirements.sysml +178 -0
- package/examples/ui-screen-regions/model/catalog/assurance/safety_risk/risk.sysml +93 -0
- package/examples/ui-screen-regions/model/catalog/assurance/verification_validation/verification_validation.sysml +75 -0
- package/examples/ui-screen-regions/model/catalog/project.sysml +45 -0
- package/examples/ui-screen-regions/model/catalog/relationships.sysml +8 -0
- package/examples/ui-screen-regions/model/catalog/traces.sysml +179 -0
- package/examples/ui-screen-regions/model/catalog/viewpoints/functional/viewpoint.sysml +8 -0
- package/examples/ui-screen-regions/model/catalog/viewpoints/functional/views/ui_functional_tree.sysml +62 -0
- package/examples/ui-screen-regions/model/catalog/viewpoints/requirements/viewpoint.sysml +8 -0
- package/examples/ui-screen-regions/model/catalog/viewpoints/requirements/views/ui_requirements_trace.sysml +62 -0
- package/examples/ui-screen-regions/model/catalog/viewpoints/risk/viewpoint.sysml +8 -0
- package/examples/ui-screen-regions/model/catalog/viewpoints/risk/views/ui_risk_chain.sysml +62 -0
- package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/viewpoint.sysml +8 -0
- package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/main_screen_layout.sysml +57 -0
- package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/settings_screen_layout.sysml +52 -0
- package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/ui_region_trace.sysml +54 -0
- package/extensions/LICENSES/MIT.txt +19 -0
- package/extensions/README.md +94 -0
- package/extensions/aadl/memo.package.yaml +18 -0
- package/extensions/aadl/src/aadl_extension.sysml +6 -0
- package/extensions/aadl/src/correspondence/memo_aadl_correspondence.sysml +147 -0
- package/extensions/aadl/src/methodology/aadl_methodology.sysml +17 -0
- package/extensions/aadl/src/runtime/memo_aadl_runtime.sysml +56 -0
- package/extensions/clinical/memo.package.yaml +18 -0
- package/extensions/clinical/src/methodology/clinical_methodology.sysml +22 -0
- package/extensions/cloud/memo.package.yaml +18 -0
- package/extensions/cloud/src/cloud_extension.sysml +44 -0
- package/extensions/cloud/src/methodology/cloud_methodology.sysml +17 -0
- package/extensions/container/memo.package.yaml +18 -0
- package/extensions/container/src/container_extension.sysml +37 -0
- package/extensions/container/src/methodology/container_methodology.sysml +17 -0
- package/extensions/messaging/memo.package.yaml +18 -0
- package/extensions/messaging/src/messaging_extension.sysml +64 -0
- package/extensions/messaging/src/methodology/messaging_methodology.sysml +17 -0
- package/extensions/ros/memo.package.yaml +18 -0
- package/extensions/ros/src/methodology/ros_methodology.sysml +25 -0
- package/extensions/ros/src/ros_extension.sysml +200 -0
- package/extensions/template/memo.package.yaml +17 -0
- package/extensions/template/src/extension.sysml +37 -0
- package/memo.manifest.yaml +15 -2
- package/methodologies/default/memo.package.yaml +19 -9
- package/methodologies/gpca/memo.package.yaml +18 -9
- package/ontology/memo.package.yaml +23 -8
- package/package.json +6 -6
- package/profile/memo.package.yaml +18 -9
- package/src/architecture/decisions/memo_decisions.sysml +28 -0
- package/src/architecture/functional/behavior/memo_behavior.sysml +50 -22
- package/src/architecture/functional/constraints/memo_constraints.sysml +3 -2
- package/src/architecture/functional/functions/memo_functions.sysml +93 -43
- package/src/architecture/implementation/software/runtime/memo_software_runtime.sysml +46 -24
- package/src/architecture/implementation/software/structure/memo_software_structure.sysml +52 -12
- package/src/architecture/implementation/ui/memo_ui.sysml +276 -53
- package/src/architecture/logical/interfaces/memo_interfaces.sysml +64 -13
- package/src/architecture/logical/structure/memo_logical_structure.sysml +92 -35
- package/src/architecture/operational/activities/memo_activities.sysml +10 -4
- package/src/architecture/operational/context/actors/memo_actors.sysml +5 -8
- package/src/architecture/operational/context/stakeholders/memo_stakeholders.sysml +13 -30
- package/src/architecture/operational/context/use_context/memo_use_context.sysml +42 -16
- package/src/architecture/operational/scenarios/memo_scenarios.sysml +57 -23
- package/src/architecture/operational/use_cases/memo_use_cases.sysml +35 -26
- package/src/architecture/operational/workflows/memo_workflows.sysml +28 -15
- package/src/architecture/realization/deployment/memo_deployment.sysml +111 -16
- package/src/architecture/realization/physical/memo_physical_architecture.sysml +27 -2
- package/src/artifacts/configuration_management/memo_configuration_management.sysml +35 -0
- package/src/artifacts/core/memo_controlled_artifacts.sysml +35 -0
- package/src/artifacts/documents/risk_management/memo_risk_management.sysml +12 -0
- package/src/artifacts/standards/cfr_21_820.sysml +116 -0
- package/src/artifacts/standards/fda_cybersecurity_2023.sysml +80 -0
- package/src/artifacts/standards/iec_60601_1.sysml +149 -0
- package/src/artifacts/standards/iec_60601_1_2.sysml +56 -0
- package/src/artifacts/standards/iec_60812.sysml +51 -0
- package/src/artifacts/standards/iec_62304.sysml +210 -0
- package/src/artifacts/standards/iec_62366_1.sysml +113 -0
- package/src/artifacts/standards/iec_81001_5_1.sysml +84 -0
- package/src/artifacts/standards/iso_13485.sysml +113 -0
- package/src/artifacts/standards/iso_14971.sysml +94 -0
- package/src/artifacts/standards/iso_iec_ieee_42010.sysml +42 -0
- package/src/artifacts/standards/memo_artifacts_standards_traceability.sysml +132 -0
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/design-input.md +1 -1
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/design-output.md +5 -5
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/design-review.md +1 -1
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/design-validation.md +2 -2
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/design-verification.md +2 -2
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/dhf-index.md +2 -2
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/transfer-plan.md +1 -1
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/user-needs.md +1 -1
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/vv-plan.md +3 -3
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/vv-report.md +4 -4
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/fda-cybersecurity/incident-response.md +1 -1
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/fda-cybersecurity/postmarket-surveillance.md +3 -2
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/fda-cybersecurity/security-arch.md +2 -2
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/fda-cybersecurity/threat-model.md +4 -4
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/fda-cybersecurity/vuln-assessment.md +4 -3
- package/src/artifacts/templates/dhf/iec-60601/hrs.md +170 -0
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/detailed-design.md +1 -1
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/integration-test.md +3 -3
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/sad.md +6 -5
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/sbom.md +3 -2
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/sdp.md +5 -4
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/soup.md +4 -2
- package/src/artifacts/templates/dhf/iec-62304/srs.md +172 -0
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/sw-traceability.md +3 -3
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/system-test.md +1 -1
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/summative-eval.md +1 -1
- package/src/artifacts/templates/dhf/iec-62366/task-analysis.md +93 -0
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/ue-plan.md +1 -1
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/urra.md +3 -3
- package/src/artifacts/templates/dhf/iso-14971/fmea.md +116 -0
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/har.md +3 -3
- package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/rmp.md +2 -2
- package/src/artifacts/templates/dhf/system/sad.md +173 -0
- package/src/artifacts/templates/dhf/system/standards-checklist.md +87 -0
- package/src/artifacts/templates/dhf/system/standards-traceability.md +125 -0
- package/src/artifacts/templates/dhf/system/syrs.md +128 -0
- package/src/assurance/cybersecurity/memo_cybersecurity.sysml +39 -20
- package/src/assurance/human_factors/memo_human_factors.sysml +29 -22
- package/src/assurance/requirements/memo_requirements.sysml +5 -2
- package/src/assurance/requirements/needs/memo_needs.sysml +1 -1
- package/src/assurance/safety_risk/analysis/memo_fmea.sysml +118 -13
- package/src/assurance/safety_risk/memo_risk.sysml +78 -7
- package/src/assurance/safety_risk/postmarket_surveillance/memo_postmarket_surveillance.sysml +27 -0
- package/src/assurance/verification_validation/clinical_evaluation/memo_clinical_evaluation.sysml +11 -0
- package/src/assurance/verification_validation/memo_assurance.sysml +17 -21
- package/src/core/annotations/memo_annotations.sysml +96 -0
- package/src/core/common/memo_common.sysml +140 -18
- package/src/core/consistency_rules/consistency_rules.sysml +7 -0
- package/src/core/dimensions/dimensions.sysml +17 -1
- package/src/core/enumerations/memo_enumerations.sysml +101 -20
- package/src/core/methodology_scope/methodology_scope.sysml +7 -15
- package/src/core/relationships/memo_relationships.sysml +199 -194
- package/src/memo_namespaces.sysml +127 -67
- package/src/methodology/core/memo_core.sysml +69 -2
- package/src/methodology/profiles/memo_profiles.sysml +31 -41
- package/src/methodology/workflow/memo_workflow.sysml +7 -2
- package/src/rules/closure/closure_rules.sysml +104 -31
- package/src/rules/coverage/coverage_rules.sysml +4 -256
- package/src/rules/crosslayer/cross_layer_rules.sysml +6 -15
- package/src/rules/lifecycle/lifecycle_rules.sysml +4 -39
- package/src/rules/ontology/ontology_invariants.sysml +243 -74
- package/src/rules/quantitative/quantitative_rules.sysml +8 -8
- package/src/viewpoints/catalog/memo_viewpoint_catalog.sysml +10 -3
- package/src/viewpoints/clinical/clinical_viewpoint.sysml +4 -2
- package/src/viewpoints/clinical/{clinical_evidence_view → views/clinical_evidence_view}/clinical_evidence_view.sysml +2 -2
- package/src/viewpoints/context/context_viewpoint.sysml +4 -2
- package/src/viewpoints/context/{system_context_view → views/system_context_view}/system_context_view.sysml +2 -2
- package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +4 -2
- package/src/viewpoints/cybersecurity/{cybersecurity_assessment_view → views/cybersecurity_assessment_view}/cybersecurity_assessment_view.sysml +2 -2
- package/src/viewpoints/cybersecurity/{threat_model_view → views/threat_model_view}/threat_model_view.sysml +2 -2
- package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +5 -0
- package/src/viewpoints/functional/functional_viewpoint.sysml +4 -2
- package/src/viewpoints/functional/{function_allocation_view → views/function_allocation_view}/function_allocation_view.sysml +3 -3
- package/src/viewpoints/functional/{system_functional_tree_view → views/system_functional_tree_view}/system_functional_tree_view.sysml +3 -3
- package/src/viewpoints/logical/logical_viewpoint.sysml +3 -1
- package/src/viewpoints/logical/{logical_architecture_view → views/logical_architecture_view}/logical_architecture_view.sysml +2 -2
- package/src/viewpoints/operational/operational_viewpoint.sysml +4 -2
- package/src/viewpoints/operational/{use_case_view → views/use_case_view}/use_case_view.sysml +3 -3
- package/src/viewpoints/physical/physical_viewpoint.sysml +3 -1
- package/src/viewpoints/physical/{network_topology_view → views/network_topology_view}/network_topology_view.sysml +2 -2
- package/src/viewpoints/physical/{physical_bom_view → views/physical_bom_view}/physical_bom_view.sysml +2 -2
- package/src/viewpoints/rendering/memo_rendering.sysml +354 -0
- package/src/viewpoints/requirements/requirements_viewpoint.sysml +3 -1
- package/src/viewpoints/requirements/{requirements_traceability_view → views/requirements_traceability_view}/requirements_traceability_view.sysml +2 -2
- package/src/viewpoints/risk/risk_viewpoint.sysml +3 -1
- package/src/viewpoints/risk/{risk_chain_view → views/risk_chain_view}/risk_chain_view.sysml +2 -2
- package/src/viewpoints/software/software_viewpoint.sysml +3 -1
- package/src/viewpoints/software/{software_architecture_view → views/software_architecture_view}/software_architecture_view.sysml +2 -2
- package/src/viewpoints/ui_layout/ui_layout_viewpoint.sysml +28 -0
- package/src/viewpoints/ui_layout/views/screen_layout_view/screen_layout_view.sysml +23 -0
- package/src/viewpoints/usability/usability_viewpoint.sysml +3 -1
- package/src/viewpoints/usability/{usability_engineering_view → views/usability_engineering_view}/usability_engineering_view.sysml +2 -2
- package/src/viewpoints/verification/verification_viewpoint.sysml +4 -2
- package/src/viewpoints/verification/{verification_coverage_view → views/verification_coverage_view}/verification_coverage_view.sysml +3 -3
- package/templates/connected-device/memo.package.yaml +11 -5
- package/templates/connected-device/model/catalog/project.sysml +28 -0
- package/templates/connected-device/syside.toml +1 -1
- package/templates/default/memo.package.yaml +11 -5
- package/templates/default/model/catalog/project.sysml +28 -0
- package/templates/default/syside.toml +1 -1
- package/templates/infusion-pump/memo.package.yaml +11 -5
- package/templates/infusion-pump/model/catalog/project.sysml +28 -0
- package/templates/infusion-pump/syside.toml +1 -1
- package/templates/monitoring-device/memo.package.yaml +11 -5
- package/templates/monitoring-device/model/catalog/project.sysml +28 -0
- package/templates/monitoring-device/syside.toml +1 -1
- package/templates/samd/memo.package.yaml +11 -5
- package/templates/samd/model/catalog/project.sysml +28 -0
- package/templates/samd/syside.toml +1 -1
- package/examples/connected-patient-monitor/model/connected_patient_monitor.sysml +0 -3
- package/examples/embedded-infusion-pump/model/embedded_infusion_pump.sysml +0 -3
- package/examples/extensions/README.md +0 -16
- package/examples/extensions/clinical/memo.package.yaml +0 -9
- package/examples/extensions/clinical/src/methodology/clinical_methodology.sysml +0 -14
- package/examples/extensions/template/memo.package.yaml +0 -9
- package/examples/extensions/template/src/extension.sysml +0 -15
- package/examples/functional-logical-physical/model/functional_logical_physical.sysml +0 -3
- package/examples/gpca-pump/memo.config.yaml +0 -9
- package/examples/gpca-pump/methodology/gpca_scope.sysml +0 -25
- package/examples/ivd-laboratory-system/model/ivd_laboratory_system.sysml +0 -3
- package/examples/manual-surgical-instrument/model/manual_surgical_instrument.sysml +0 -3
- package/examples/multidimensional-layers/model/multidimensional_layers.sysml +0 -4
- package/examples/reusable-instrument/model/reusable_instrument.sysml +0 -4
- package/examples/software-only-medical-device/model/software_only_medical_device.sysml +0 -4
- package/examples/surgical-closure-workflow/model/surgical_closure_workflow.sysml +0 -4
- package/examples/surgical-robot/model/surgical_robot.sysml +0 -4
- package/examples/sysml-diagram-samples/model/samples/functional_flow_view.sysml +0 -164
- package/examples/sysml-diagram-samples/model/samples/interconnection_view.sysml +0 -94
- package/examples/sysml-diagram-samples/model/samples/operational_behaviour_view.sysml +0 -135
- package/examples/sysml-diagram-samples/model/samples/state_transition_view.sysml +0 -109
- package/examples/sysml-diagram-samples/model/samples/tree_view.sysml +0 -56
- package/examples/temperature-alarm/model/temperature_alarm.sysml +0 -4
- package/ontology/memo.rendering.yaml +0 -84
- package/src/compliance/artifacts/memo_artifacts.sysml +0 -12
- package/src/compliance/change/memo_change.sysml +0 -17
- package/src/compliance/dhf-templates/iec-62304/srs.md +0 -138
- package/src/compliance/dhf-templates/iec-62366/task-analysis.md +0 -57
- package/src/compliance/dhf-templates/iso-14971/fmea.md +0 -93
- package/src/compliance/document_views/memo_document_views.sysml +0 -7
- package/src/compliance/iso14971/risk_management_file.sysml +0 -16
- package/src/compliance/postmarket/memo_postmarket.sysml +0 -16
- /package/{examples/extensions → extensions}/clinical/src/clinical_extension.sysml +0 -0
- /package/{examples/extensions → extensions}/clinical/src/procedures/memo_clinical_procedures.sysml +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/change-record.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/change-control.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/formative-eval.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/ui-spec.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/use-spec.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/fta.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/risk-benefit.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/risk-matrix.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iso-14971/rmr.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/shared/snippets/approval-block.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/shared/snippets/document-control-header.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/shared/snippets/references-section.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/shared/snippets/revision-history-table.md +0 -0
- /package/templates/connected-device/{src → model/catalog}/architecture/system.sysml +0 -0
- /package/templates/connected-device/{src/artifacts/artifacts.sysml → model/catalog/artifacts/catalog.sysml} +0 -0
- /package/templates/connected-device/{src → model/catalog}/assurance/requirements.sysml +0 -0
- /package/templates/default/{src → model/catalog}/architecture/system.sysml +0 -0
- /package/templates/default/{src/artifacts/artifacts.sysml → model/catalog/artifacts/catalog.sysml} +0 -0
- /package/templates/default/{src → model/catalog}/assurance/requirements.sysml +0 -0
- /package/templates/infusion-pump/{src → model/catalog}/architecture/system.sysml +0 -0
- /package/templates/infusion-pump/{src/artifacts/artifacts.sysml → model/catalog/artifacts/catalog.sysml} +0 -0
- /package/templates/infusion-pump/{src → model/catalog}/assurance/requirements.sysml +0 -0
- /package/templates/monitoring-device/{src → model/catalog}/architecture/system.sysml +0 -0
- /package/templates/monitoring-device/{src/artifacts/artifacts.sysml → model/catalog/artifacts/catalog.sysml} +0 -0
- /package/templates/monitoring-device/{src → model/catalog}/assurance/requirements.sysml +0 -0
- /package/templates/samd/{src → model/catalog}/architecture/system.sysml +0 -0
- /package/templates/samd/{src/artifacts/artifacts.sysml → model/catalog/artifacts/catalog.sysml} +0 -0
- /package/templates/samd/{src → model/catalog}/assurance/requirements.sysml +0 -0
package/README.md
CHANGED
|
@@ -23,7 +23,7 @@ pin an exact release; the package has no repository or runtime dependency on Mem
|
|
|
23
23
|
Tools or Memo Architect.
|
|
24
24
|
|
|
25
25
|
```bash
|
|
26
|
-
pnpm add @memoarchitect/ontology@0.
|
|
26
|
+
pnpm add @memoarchitect/ontology@0.8.22
|
|
27
27
|
```
|
|
28
28
|
|
|
29
29
|
> **Pre-1.0 notice:** ontology names, relationships, and package layout may
|
|
@@ -82,7 +82,9 @@ src/ all reusable .sysml content (namespace = directory)
|
|
|
82
82
|
rules/ closure/ coverage/ crosslayer/ lifecycle/ quantitative/ (native constraint defs)
|
|
83
83
|
artifacts/ artifact kinds (memo::artifacts)
|
|
84
84
|
methodology/ default methodology
|
|
85
|
-
|
|
85
|
+
extensions/ reusable ontology packages that specialize the base
|
|
86
|
+
(aadl/ clinical/ cloud/ container/ messaging/ ros/ template/),
|
|
87
|
+
selected by a methodology or a project binding
|
|
86
88
|
```
|
|
87
89
|
|
|
88
90
|
## Build / verify
|
|
@@ -61,7 +61,7 @@ package memo_examples_connected_patient_monitor {
|
|
|
61
61
|
attribute :>> securityCriticality = CriticalityKind::high;
|
|
62
62
|
attribute :>> patientContactInterface = false;
|
|
63
63
|
}
|
|
64
|
-
|
|
64
|
+
part tbHospitalEdge : TrustBoundary {
|
|
65
65
|
attribute :>> id = "CPM-TB-001"; attribute :>> name = "DeviceLanToHospitalNetwork";
|
|
66
66
|
}
|
|
67
67
|
connection : CrossesTrustBoundary connect boundary ::> tbHospitalEdge to crossingItem ::> ifHl7Feed {
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
// Connected Patient Monitor — project identity and method binding.
|
|
2
|
+
//
|
|
3
|
+
// The native entrypoint. The imports name what this project contains and the
|
|
4
|
+
// binding names the methodology it is governed by. No YAML file participates.
|
|
5
|
+
package memo_examples_connected_patient_monitor_project {
|
|
6
|
+
private import ScalarValues::*;
|
|
7
|
+
|
|
8
|
+
private import memo_core_enumerations::*;
|
|
9
|
+
private import memo_methodology_core::*;
|
|
10
|
+
private import memo_methodology_profiles::*;
|
|
11
|
+
|
|
12
|
+
// The project's own content, imported so the catalog is one reachable
|
|
13
|
+
// closure from a single entrypoint.
|
|
14
|
+
private import memo_examples_connected_patient_monitor_viewpoints_unassigned::*;
|
|
15
|
+
private import memo_examples_connected_patient_monitor_viewpoints_unassigned_views_connected_patient_monitor_overview::*;
|
|
16
|
+
|
|
17
|
+
part projectBinding : ProjectMethodBinding {
|
|
18
|
+
attribute :>> id = "PMB-PATIENT-MONITOR-001";
|
|
19
|
+
attribute :>> name = "ConnectedPatientMonitorProjectMethodBinding";
|
|
20
|
+
attribute :>> projectName = "Connected Patient Monitor";
|
|
21
|
+
ref :>> selectedMethodology = mdDefaultDefinition;
|
|
22
|
+
attribute :>> scopeMode = ScopeModeKind::explicit;
|
|
23
|
+
}
|
|
24
|
+
}
|
package/examples/connected-patient-monitor/model/catalog/viewpoints/unassigned/viewpoint.sysml
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
// unassigned viewpoint.
|
|
2
|
+
//
|
|
3
|
+
// This project does not define its own viewpoint here; it binds the reusable
|
|
4
|
+
// MEMO viewpoint that frames these concerns. The views it governs sit beneath
|
|
5
|
+
// `views/`.
|
|
6
|
+
package memo_examples_connected_patient_monitor_viewpoints_unassigned {
|
|
7
|
+
// The reusable package declaring unassigned could not be resolved during
|
|
8
|
+
// conversion. Import it here so the views beneath this viewpoint resolve.
|
|
9
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
package
|
|
1
|
+
package memo_examples_connected_patient_monitor_viewpoints_unassigned_views_connected_patient_monitor_overview {
|
|
2
2
|
private import memo_examples_connected_patient_monitor::*;
|
|
3
3
|
private import memo_viewpoints_definitions::*;
|
|
4
4
|
private import memo_core_enumerations::*;
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
// Focused example: embedded programmable device — the three software views
|
|
2
2
|
// (module / runtime / deployment) on a minimal infusion pump.
|
|
3
|
-
//
|
|
3
|
+
// SoftwareElement buildsInto DeploymentUnit deploysTo ProcessingNode;
|
|
4
4
|
// SoftwareComponent hostedBy ProcessingNode with scheduling properties.
|
|
5
5
|
package memo_examples_embedded_infusion_pump {
|
|
6
6
|
private import ScalarValues::*;
|
|
7
|
+
private import ModelingMetadata::*;
|
|
7
8
|
|
|
8
9
|
private import memo_core_enumerations::*;
|
|
9
10
|
private import memo_core_relationships::*;
|
|
@@ -25,7 +26,7 @@ package memo_examples_embedded_infusion_pump {
|
|
|
25
26
|
attribute :>> implementationLanguage = "C";
|
|
26
27
|
attribute :>> safetyClass = SafetyClassKind::C;
|
|
27
28
|
}
|
|
28
|
-
|
|
29
|
+
#refinement dependency swMotorDriver to swInfusionControl;
|
|
29
30
|
|
|
30
31
|
// Runtime view.
|
|
31
32
|
part rtControlLoop : SoftwareComponent {
|
|
@@ -34,11 +35,12 @@ package memo_examples_embedded_infusion_pump {
|
|
|
34
35
|
attribute :>> periodMs = 10.0;
|
|
35
36
|
attribute :>> deadlineMs = 10.0;
|
|
36
37
|
attribute :>> wcetMs = 2.5;
|
|
38
|
+
attribute :>> memoryBudget = 96.0;
|
|
37
39
|
attribute :>> schedulingPolicy = SchedulingPolicyKind::rateMonotonic;
|
|
38
40
|
attribute :>> restartPolicy = "watchdog reset to safe state (pump stopped)";
|
|
39
41
|
attribute :>> faultContainment = "MPU-protected region; safe-state on overrun";
|
|
40
42
|
}
|
|
41
|
-
|
|
43
|
+
#refinement dependency rtControlLoop to swInfusionControl;
|
|
42
44
|
|
|
43
45
|
// Deployment view.
|
|
44
46
|
part duControlImage : DeploymentUnit {
|
|
@@ -57,8 +59,8 @@ package memo_examples_embedded_infusion_pump {
|
|
|
57
59
|
attribute :>> id = "EIP-RTE-001"; attribute :>> name = "StaticRTOS";
|
|
58
60
|
attribute :>> osOrRtos = "static-priority RTOS, no dynamic allocation";
|
|
59
61
|
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
+
allocation swInfusionControlBuild : BuildsInto allocate swInfusionControl to duControlImage;
|
|
63
|
+
allocation duControlImageDeployment : DeploysTo allocate duControlImage to mcuSafety {
|
|
62
64
|
attribute :>> deploymentKind = DeploymentKind::embedded;
|
|
63
65
|
}
|
|
64
66
|
connection : HostedBy connect hostAssembly ::> mcuSafety to processingNode ::> rtControlLoop;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
// Embedded Infusion Pump — project identity and method binding.
|
|
2
|
+
//
|
|
3
|
+
// The native entrypoint. The imports name what this project contains and the
|
|
4
|
+
// binding names the methodology it is governed by. No YAML file participates.
|
|
5
|
+
package memo_examples_embedded_infusion_pump_project {
|
|
6
|
+
private import ScalarValues::*;
|
|
7
|
+
|
|
8
|
+
private import memo_core_enumerations::*;
|
|
9
|
+
private import memo_methodology_core::*;
|
|
10
|
+
private import memo_methodology_profiles::*;
|
|
11
|
+
|
|
12
|
+
// The project's own content, imported so the catalog is one reachable
|
|
13
|
+
// closure from a single entrypoint.
|
|
14
|
+
private import memo_examples_embedded_infusion_pump_viewpoints_unassigned::*;
|
|
15
|
+
private import memo_examples_embedded_infusion_pump_viewpoints_unassigned_views_embedded_infusion_pump_overview::*;
|
|
16
|
+
|
|
17
|
+
part projectBinding : ProjectMethodBinding {
|
|
18
|
+
attribute :>> id = "PMB-INFUSION-PUMP-001";
|
|
19
|
+
attribute :>> name = "EmbeddedInfusionPumpProjectMethodBinding";
|
|
20
|
+
attribute :>> projectName = "Embedded Infusion Pump";
|
|
21
|
+
ref :>> selectedMethodology = mdDefaultDefinition;
|
|
22
|
+
attribute :>> scopeMode = ScopeModeKind::explicit;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
// unassigned viewpoint.
|
|
2
|
+
//
|
|
3
|
+
// This project does not define its own viewpoint here; it binds the reusable
|
|
4
|
+
// MEMO viewpoint that frames these concerns. The views it governs sit beneath
|
|
5
|
+
// `views/`.
|
|
6
|
+
package memo_examples_embedded_infusion_pump_viewpoints_unassigned {
|
|
7
|
+
// The reusable package declaring unassigned could not be resolved during
|
|
8
|
+
// conversion. Import it here so the views beneath this viewpoint resolve.
|
|
9
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
package
|
|
1
|
+
package memo_examples_embedded_infusion_pump_viewpoints_unassigned_views_embedded_infusion_pump_overview {
|
|
2
2
|
private import memo_examples_embedded_infusion_pump::*;
|
|
3
3
|
private import memo_viewpoints_definitions::*;
|
|
4
4
|
private import memo_core_enumerations::*;
|
package/examples/functional-logical-physical/model/catalog/functional_logical_physical.sysml
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
// graph, and no layer is a mandatory pipeline stage.
|
|
5
5
|
package memo_examples_functional_logical_physical {
|
|
6
6
|
private import ScalarValues::*;
|
|
7
|
+
private import ModelingMetadata::*;
|
|
7
8
|
|
|
8
9
|
private import memo_core_enumerations::*;
|
|
9
10
|
private import memo_core_relationships::*;
|
|
@@ -20,7 +21,7 @@ package memo_examples_functional_logical_physical {
|
|
|
20
21
|
}
|
|
21
22
|
|
|
22
23
|
// Functional: technology-independent responsibility.
|
|
23
|
-
|
|
24
|
+
action fnLimitLinePressure : SystemFunction {
|
|
24
25
|
attribute :>> id = "FLP-FN-001"; attribute :>> name = "LimitLinePressure";
|
|
25
26
|
attribute :>> criticality = CriticalityKind::high;
|
|
26
27
|
}
|
|
@@ -31,8 +32,7 @@ package memo_examples_functional_logical_physical {
|
|
|
31
32
|
attribute :>> id = "FLP-LC-001"; attribute :>> name = "PressureProtectionElement";
|
|
32
33
|
attribute :>> controlledVariable = "line pressure";
|
|
33
34
|
}
|
|
34
|
-
|
|
35
|
-
|
|
35
|
+
allocate fnLimitLinePressure to lcPressureProtection;
|
|
36
36
|
// Implementation: the SAME logical element is realized by software
|
|
37
37
|
// (pressure-limit supervision) AND mechanics (mechanical relief valve).
|
|
38
38
|
part swPressureSupervisor : SoftwareModule {
|
|
@@ -45,6 +45,6 @@ package memo_examples_functional_logical_physical {
|
|
|
45
45
|
attribute :>> mechanicalFunction = "vents line pressure above mechanical set point, independent of software";
|
|
46
46
|
attribute :>> patientContact = false;
|
|
47
47
|
}
|
|
48
|
-
|
|
49
|
-
|
|
48
|
+
#refinement dependency swPressureSupervisor to lcPressureProtection;
|
|
49
|
+
#refinement dependency mechReliefValve to lcPressureProtection;
|
|
50
50
|
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
// Functional Logical Physical — project identity and method binding.
|
|
2
|
+
//
|
|
3
|
+
// The native entrypoint. The imports name what this project contains and the
|
|
4
|
+
// binding names the methodology it is governed by. No YAML file participates.
|
|
5
|
+
package memo_examples_functional_logical_physical_project {
|
|
6
|
+
private import ScalarValues::*;
|
|
7
|
+
|
|
8
|
+
private import memo_core_enumerations::*;
|
|
9
|
+
private import memo_methodology_core::*;
|
|
10
|
+
private import memo_methodology_profiles::*;
|
|
11
|
+
|
|
12
|
+
// The project's own content, imported so the catalog is one reachable
|
|
13
|
+
// closure from a single entrypoint.
|
|
14
|
+
private import memo_examples_functional_logical_physical_viewpoints_unassigned::*;
|
|
15
|
+
private import memo_examples_functional_logical_physical_viewpoints_unassigned_views_functional_logical_physical_overview::*;
|
|
16
|
+
|
|
17
|
+
part projectBinding : ProjectMethodBinding {
|
|
18
|
+
attribute :>> id = "PMB-LOGICAL-PHYSICAL-001";
|
|
19
|
+
attribute :>> name = "FunctionalLogicalPhysicalProjectMethodBinding";
|
|
20
|
+
attribute :>> projectName = "Functional Logical Physical";
|
|
21
|
+
ref :>> selectedMethodology = mdDefaultDefinition;
|
|
22
|
+
attribute :>> scopeMode = ScopeModeKind::explicit;
|
|
23
|
+
}
|
|
24
|
+
}
|
package/examples/functional-logical-physical/model/catalog/viewpoints/unassigned/viewpoint.sysml
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
// unassigned viewpoint.
|
|
2
|
+
//
|
|
3
|
+
// This project does not define its own viewpoint here; it binds the reusable
|
|
4
|
+
// MEMO viewpoint that frames these concerns. The views it governs sit beneath
|
|
5
|
+
// `views/`.
|
|
6
|
+
package memo_examples_functional_logical_physical_viewpoints_unassigned {
|
|
7
|
+
// The reusable package declaring unassigned could not be resolved during
|
|
8
|
+
// conversion. Import it here so the views beneath this viewpoint resolve.
|
|
9
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
package
|
|
1
|
+
package memo_examples_functional_logical_physical_viewpoints_unassigned_views_functional_logical_physical_overview {
|
|
2
2
|
private import memo_examples_functional_logical_physical::*;
|
|
3
3
|
private import memo_viewpoints_definitions::*;
|
|
4
4
|
private import memo_core_enumerations::*;
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
+
// The GPCA methodology package.
|
|
2
|
+
//
|
|
3
|
+
// The `ResolvesToMethodology` connection that used to live here bound a model
|
|
4
|
+
// element to an authored `ResolvedMethodology` instance. A resolved methodology
|
|
5
|
+
// is derived from the project binding and the methodology chain, so there is
|
|
6
|
+
// nothing here to connect to: see `model/catalog/gpca_project.sysml` for the
|
|
7
|
+
// binding, and `gpca_profiles.sysml` for the methodology it selects.
|
|
1
8
|
package memo_examples_gpca_pump_methodology_gpca_methodology {
|
|
2
|
-
private import ScalarValues::*;
|
|
3
|
-
|
|
4
|
-
private import memo_methodology_profiles::*;
|
|
5
9
|
private import memo_examples_gpca_pump_methodology_gpca_profiles::*;
|
|
6
|
-
private import memo_core_relationships::*;
|
|
7
|
-
private import memo_examples_gpca_pump_model_catalog_gpca_requirements::*;
|
|
8
|
-
private import memo_examples_gpca_pump_model_catalog_gpca_architecture::*;
|
|
9
|
-
|
|
10
|
-
connection : ResolvesToMethodology connect boundModelElement ::> tlm to resolvedMethodology ::> gpcaMethodResolved;
|
|
11
10
|
}
|
|
@@ -1,25 +1,103 @@
|
|
|
1
|
+
// GPCA prototype methodology.
|
|
2
|
+
//
|
|
3
|
+
// Converted from subtraction to explicit selection at the native semantic flip.
|
|
4
|
+
// Before, this methodology said "the default, minus cybersecurity and SOUP" by
|
|
5
|
+
// listing `excludedKind` entries on a separate `MethodologyScope` part. ADR-1-15
|
|
6
|
+
// requires a methodology to declare its own final effective lists, so the
|
|
7
|
+
// selection is now stated positively here and the scope part is gone.
|
|
8
|
+
//
|
|
9
|
+
// Two differences from the pre-flip behaviour are deliberate and recorded:
|
|
10
|
+
//
|
|
11
|
+
// 1. Cybersecurity is excluded by *not* selecting `memo_assurance_cybersecurity`
|
|
12
|
+
// and by two explicit RulePolicy entries disabling the cybersecurity closure
|
|
13
|
+
// rules. Before, `excludedKind` named eleven cybersecurity kinds; naming the
|
|
14
|
+
// discipline once is the same selection stated at the level the methodology
|
|
15
|
+
// metamodel supports.
|
|
16
|
+
// 2. `SoftwareModule[moduleKind=soup]` cannot be expressed as an inclusion.
|
|
17
|
+
// Explicit selection works over kinds, not over instance attribute values,
|
|
18
|
+
// so a per-instance filter has no positive form. The GPCA model declares no
|
|
19
|
+
// SOUP module, so the effective element set is unchanged; the intent is
|
|
20
|
+
// recorded in this methodology's description and belongs to a project rule
|
|
21
|
+
// if it ever needs enforcing.
|
|
22
|
+
//
|
|
23
|
+
// The authored `gpcaMethodResolved : ResolvedMethodology` is gone. A resolved
|
|
24
|
+
// methodology is derived from the binding and the methodology chain; authoring
|
|
25
|
+
// one by hand created a second answer that no resolver produced.
|
|
1
26
|
package memo_examples_gpca_pump_methodology_gpca_profiles {
|
|
2
27
|
private import ScalarValues::*;
|
|
3
28
|
|
|
4
29
|
private import memo_methodology_core::*;
|
|
5
30
|
private import memo_methodology_profiles::*;
|
|
6
31
|
private import memo_core_enumerations::*;
|
|
32
|
+
private import memo_rules_closure::*;
|
|
7
33
|
|
|
8
34
|
part gpcaMethodDefinition : MethodologyDefinition {
|
|
9
35
|
attribute :>> id = "METH-GPCA-001";
|
|
10
36
|
attribute :>> name = "GPCAPrototypeMethodology";
|
|
11
|
-
attribute :>> version = "
|
|
37
|
+
attribute :>> version = "0.6.5";
|
|
12
38
|
attribute :>> domain = "medical device modeling";
|
|
13
|
-
attribute :>> description = "GPCA infusion pump methodology
|
|
14
|
-
|
|
15
|
-
|
|
39
|
+
attribute :>> description = "GPCA infusion pump methodology for the non-networked prototype variant. Explicitly selects the five architecture layers and four of the five assurance disciplines; cybersecurity is out of scope because the prototype has no network interface. The prototype uses no SOUP.";
|
|
40
|
+
ref :>> baseMethodology = mdDefaultDefinition;
|
|
41
|
+
attribute :>> scopeMode = ScopeModeKind::explicit;
|
|
42
|
+
|
|
43
|
+
attribute :>> includedLayer = (
|
|
44
|
+
"memo_architecture_operational",
|
|
45
|
+
"memo_architecture_functional",
|
|
46
|
+
"memo_architecture_logical",
|
|
47
|
+
"memo_architecture_implementation",
|
|
48
|
+
"memo_architecture_realization"
|
|
49
|
+
);
|
|
50
|
+
|
|
51
|
+
// Explicit means explicit. A methodology that names its assurance
|
|
52
|
+
// disciplines and stops there selects no rules at all, because rules
|
|
53
|
+
// live in their own packages. Before the flip an empty list read as
|
|
54
|
+
// "everything", which hid exactly this: the selection said nothing and
|
|
55
|
+
// the tools behaved as though it said everything.
|
|
56
|
+
attribute :>> includedModule = (
|
|
57
|
+
"memo_core_common",
|
|
58
|
+
"memo_core_enumerations",
|
|
59
|
+
"memo_core_relationships",
|
|
60
|
+
"memo_core_annotations",
|
|
61
|
+
"memo_core_consistency_rules",
|
|
62
|
+
"memo_assurance_requirements",
|
|
63
|
+
"memo_assurance_requirements_needs",
|
|
64
|
+
"memo_assurance_safety_risk",
|
|
65
|
+
"memo_assurance_human_factors",
|
|
66
|
+
"memo_assurance_verification_validation",
|
|
67
|
+
"memo_rules_closure",
|
|
68
|
+
"memo_rules_crosslayer",
|
|
69
|
+
"memo_rules_quantitative",
|
|
70
|
+
"memo_rules_ontology"
|
|
71
|
+
);
|
|
72
|
+
|
|
73
|
+
attribute :>> includedStandard = (
|
|
74
|
+
"ISO 14971",
|
|
75
|
+
"IEC 62304",
|
|
76
|
+
"21 CFR 820",
|
|
77
|
+
"ISO 13485",
|
|
78
|
+
"ISO 14155",
|
|
79
|
+
"IEC 62366",
|
|
80
|
+
"IEC 60601-1"
|
|
81
|
+
);
|
|
82
|
+
|
|
83
|
+
attribute :>> includedArtifactKind = ("RiskManagementPlan");
|
|
84
|
+
|
|
85
|
+
attribute :>> includedViewpoint = ("VP-CTX", "VP-LOG", "VP-RISK");
|
|
86
|
+
|
|
87
|
+
part disableThreatMitigation : RulePolicy :> rulePolicy {
|
|
88
|
+
ref :>> targetRule : ThreatMitigationRule;
|
|
89
|
+
attribute :>> disposition = RuleDispositionKind::disabled;
|
|
90
|
+
attribute :>> rationaleText = "CR-MED-040 requires every threat to carry a mitigation. The prototype has no network or removable-media interface, so no threat is in scope and the rule can only report on elements this variant does not model.";
|
|
91
|
+
attribute :>> authority = "GPCA Systems Engineering Lead";
|
|
92
|
+
attribute :>> approvalReference = "GPCA-DHF-CR-0007";
|
|
93
|
+
}
|
|
16
94
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
95
|
+
part disableAssetThreatLink : RulePolicy :> rulePolicy {
|
|
96
|
+
ref :>> targetRule : AssetThreatLinkRule;
|
|
97
|
+
attribute :>> disposition = RuleDispositionKind::disabled;
|
|
98
|
+
attribute :>> rationaleText = "CR-MED-041 requires every cybersecurity asset to trace to a threat. Cybersecurity is not a selected discipline for this variant, so the rule has no subjects and its absence is recorded here rather than left implicit.";
|
|
99
|
+
attribute :>> authority = "GPCA Systems Engineering Lead";
|
|
100
|
+
attribute :>> approvalReference = "GPCA-DHF-CR-0007";
|
|
101
|
+
}
|
|
24
102
|
}
|
|
25
103
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
package
|
|
1
|
+
package memo_examples_gpca_pump_gpca_analysis {
|
|
2
2
|
private import ScalarValues::*;
|
|
3
3
|
|
|
4
4
|
private import memo_assurance_safety_risk_analysis::*;
|
|
@@ -18,8 +18,10 @@ package memo_examples_gpca_pump_model_catalog_gpca_analysis {
|
|
|
18
18
|
attribute :>> id = "FM-001";
|
|
19
19
|
attribute :>> name = "PumpMotorRunaway";
|
|
20
20
|
attribute :>> failureModeKind = FailureModeKind::unintendedFunction;
|
|
21
|
+
attribute :>> effect = "Excess drug delivered to the patient beyond the prescribed rate.";
|
|
21
22
|
attribute :>> severityRating = 10;
|
|
22
23
|
attribute :>> occurrenceRating = 2;
|
|
24
|
+
attribute :>> probability = ProbabilityKind::improbable;
|
|
23
25
|
attribute :>> detectionRating = 3;
|
|
24
26
|
attribute :>> rpn = 60;
|
|
25
27
|
attribute :>> criticality = CriticalityKind::catastrophic;
|
|
@@ -29,8 +31,10 @@ package memo_examples_gpca_pump_model_catalog_gpca_analysis {
|
|
|
29
31
|
attribute :>> id = "FM-002";
|
|
30
32
|
attribute :>> name = "AirSensorFailsSilent";
|
|
31
33
|
attribute :>> failureModeKind = FailureModeKind::lossOfFunction;
|
|
34
|
+
attribute :>> effect = "Air embolism reaches the patient undetected.";
|
|
32
35
|
attribute :>> severityRating = 10;
|
|
33
36
|
attribute :>> occurrenceRating = 3;
|
|
37
|
+
attribute :>> probability = ProbabilityKind::remote;
|
|
34
38
|
attribute :>> detectionRating = 4;
|
|
35
39
|
attribute :>> rpn = 120;
|
|
36
40
|
attribute :>> criticality = CriticalityKind::catastrophic;
|
|
@@ -40,8 +44,10 @@ package memo_examples_gpca_pump_model_catalog_gpca_analysis {
|
|
|
40
44
|
attribute :>> id = "FM-003";
|
|
41
45
|
attribute :>> name = "OcclusionSensorDrift";
|
|
42
46
|
attribute :>> failureModeKind = FailureModeKind::degradedFunction;
|
|
47
|
+
attribute :>> effect = "Occluded line is detected late or not at all, interrupting therapy.";
|
|
43
48
|
attribute :>> severityRating = 7;
|
|
44
49
|
attribute :>> occurrenceRating = 4;
|
|
50
|
+
attribute :>> probability = ProbabilityKind::occasional;
|
|
45
51
|
attribute :>> detectionRating = 4;
|
|
46
52
|
attribute :>> rpn = 112;
|
|
47
53
|
attribute :>> criticality = CriticalityKind::high;
|
|
@@ -51,8 +57,10 @@ package memo_examples_gpca_pump_model_catalog_gpca_analysis {
|
|
|
51
57
|
attribute :>> id = "FM-004";
|
|
52
58
|
attribute :>> name = "BolusButtonStuckClosed";
|
|
53
59
|
attribute :>> failureModeKind = FailureModeKind::unintendedFunction;
|
|
60
|
+
attribute :>> effect = "Repeated unrequested boluses are delivered.";
|
|
54
61
|
attribute :>> severityRating = 9;
|
|
55
62
|
attribute :>> occurrenceRating = 3;
|
|
63
|
+
attribute :>> probability = ProbabilityKind::remote;
|
|
56
64
|
attribute :>> detectionRating = 2;
|
|
57
65
|
attribute :>> rpn = 54;
|
|
58
66
|
attribute :>> criticality = CriticalityKind::high;
|
|
@@ -62,8 +70,10 @@ package memo_examples_gpca_pump_model_catalog_gpca_analysis {
|
|
|
62
70
|
attribute :>> id = "FM-005";
|
|
63
71
|
attribute :>> name = "BatteryDepletesEarly";
|
|
64
72
|
attribute :>> failureModeKind = FailureModeKind::prematureFunction;
|
|
73
|
+
attribute :>> effect = "Pump loses power during transport, stopping therapy.";
|
|
65
74
|
attribute :>> severityRating = 6;
|
|
66
75
|
attribute :>> occurrenceRating = 4;
|
|
76
|
+
attribute :>> probability = ProbabilityKind::occasional;
|
|
67
77
|
attribute :>> detectionRating = 3;
|
|
68
78
|
attribute :>> rpn = 72;
|
|
69
79
|
attribute :>> criticality = CriticalityKind::medium;
|
|
@@ -161,13 +171,13 @@ package memo_examples_gpca_pump_model_catalog_gpca_analysis {
|
|
|
161
171
|
attribute :>> cutSetSummary = "All minimal cut sets are order 2 or higher after mitigation";
|
|
162
172
|
attribute :>> revisionDate = "2026-07-03";
|
|
163
173
|
}
|
|
164
|
-
part fteOverdoseTop :
|
|
174
|
+
part fteOverdoseTop : FaultTreeNode {
|
|
165
175
|
attribute :>> id = "FTE-001";
|
|
166
176
|
attribute :>> name = "ExcessDrugDeliveredTopEvent";
|
|
167
177
|
attribute :>> eventKind = FaultTreeEventKind::topEvent;
|
|
168
178
|
attribute :>> description = "Delivered volume exceeds prescribed limits";
|
|
169
179
|
}
|
|
170
|
-
part fteMotorRunaway :
|
|
180
|
+
part fteMotorRunaway : FaultTreeNode {
|
|
171
181
|
attribute :>> id = "FTE-002";
|
|
172
182
|
attribute :>> name = "MotorRunawayBasicEvent";
|
|
173
183
|
attribute :>> eventKind = FaultTreeEventKind::basicEvent;
|
|
@@ -175,7 +185,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_analysis {
|
|
|
175
185
|
attribute :>> exposureTime = 100.0;
|
|
176
186
|
attribute :>> description = "Pump motor delivers faster than commanded (FM-001)";
|
|
177
187
|
}
|
|
178
|
-
part fteCrossCheckFails :
|
|
188
|
+
part fteCrossCheckFails : FaultTreeNode {
|
|
179
189
|
attribute :>> id = "FTE-003";
|
|
180
190
|
attribute :>> name = "FlowCrossCheckUnavailable";
|
|
181
191
|
attribute :>> eventKind = FaultTreeEventKind::basicEvent;
|
|
@@ -183,7 +193,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_analysis {
|
|
|
183
193
|
attribute :>> exposureTime = 100.0;
|
|
184
194
|
attribute :>> description = "Independent flow sensor or comparison logic fails (FM-003 family)";
|
|
185
195
|
}
|
|
186
|
-
part fteLockoutFault :
|
|
196
|
+
part fteLockoutFault : FaultTreeNode {
|
|
187
197
|
attribute :>> id = "FTE-004";
|
|
188
198
|
attribute :>> name = "LockoutEnforcementFault";
|
|
189
199
|
attribute :>> eventKind = FaultTreeEventKind::basicEvent;
|
|
@@ -191,7 +201,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_analysis {
|
|
|
191
201
|
attribute :>> exposureTime = 100.0;
|
|
192
202
|
attribute :>> description = "Infusion manager authorizes bolus despite active lockout";
|
|
193
203
|
}
|
|
194
|
-
part fteStuckButtonUndetected :
|
|
204
|
+
part fteStuckButtonUndetected : FaultTreeNode {
|
|
195
205
|
attribute :>> id = "FTE-005";
|
|
196
206
|
attribute :>> name = "StuckBolusButtonUndetected";
|
|
197
207
|
attribute :>> eventKind = FaultTreeEventKind::basicEvent;
|
|
@@ -199,17 +209,17 @@ package memo_examples_gpca_pump_model_catalog_gpca_analysis {
|
|
|
199
209
|
attribute :>> exposureTime = 100.0;
|
|
200
210
|
attribute :>> description = "Pendant stuck closed and stuck-input monitor fails (FM-004)";
|
|
201
211
|
}
|
|
202
|
-
part ftgOverdoseOr :
|
|
212
|
+
part ftgOverdoseOr : FaultTreeNode {
|
|
203
213
|
attribute :>> id = "FTG-001";
|
|
204
214
|
attribute :>> name = "OverdelivryPathOrGate";
|
|
205
215
|
attribute :>> gateKind = FaultTreeGateKind::orGate;
|
|
206
216
|
}
|
|
207
|
-
part ftgMotorAnd :
|
|
217
|
+
part ftgMotorAnd : FaultTreeNode {
|
|
208
218
|
attribute :>> id = "FTG-002";
|
|
209
219
|
attribute :>> name = "MotorRunawayAndCrossCheckGate";
|
|
210
220
|
attribute :>> gateKind = FaultTreeGateKind::andGate;
|
|
211
221
|
}
|
|
212
|
-
part ftgBolusAnd :
|
|
222
|
+
part ftgBolusAnd : FaultTreeNode {
|
|
213
223
|
attribute :>> id = "FTG-003";
|
|
214
224
|
attribute :>> name = "UnauthorizedBolusAndGate";
|
|
215
225
|
attribute :>> gateKind = FaultTreeGateKind::andGate;
|