@memoarchitect/ontology 0.6.5 → 0.7.0
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/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/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/extensions/clinical/memo.package.yaml +18 -9
- package/examples/extensions/clinical/src/methodology/clinical_methodology.sysml +10 -2
- package/examples/extensions/template/memo.package.yaml +17 -9
- 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/gpca-pump.kpar +0 -0
- 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 +1 -1
- package/examples/gpca-pump/model/catalog/gpca_architecture.sysml +1 -1
- package/examples/gpca-pump/model/catalog/gpca_behavior_actions.sysml +2 -2
- package/examples/gpca-pump/model/catalog/gpca_behavior_modes.sysml +1 -1
- package/examples/gpca-pump/model/catalog/gpca_behavior_subsystems.sysml +5 -5
- package/examples/gpca-pump/model/catalog/gpca_context.sysml +3 -8
- package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +6 -6
- package/examples/gpca-pump/model/catalog/gpca_formal_behavior.sysml +1 -15
- package/examples/gpca-pump/model/catalog/gpca_interfaces.sysml +7 -6
- package/examples/gpca-pump/model/catalog/gpca_operational.sysml +19 -8
- package/examples/gpca-pump/model/catalog/gpca_physical.sysml +2 -2
- package/examples/gpca-pump/model/catalog/gpca_requirements.sysml +1 -1
- package/examples/gpca-pump/model/catalog/gpca_risk.sysml +1 -1
- package/examples/gpca-pump/model/catalog/gpca_system.sysml +34 -30
- package/examples/gpca-pump/model/catalog/gpca_trace.sysml +27 -23
- package/examples/gpca-pump/model/catalog/gpca_verification.sysml +1 -1
- package/examples/gpca-pump/model/catalog/project.sysml +21 -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 +3 -3
- 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 +3 -3
- 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 +4 -4
- 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 +7 -7
- package/examples/gpca-pump/model/{views → catalog/viewpoints/logical/views}/logical_device_interconnect_view.sysml +3 -3
- 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 +3 -3
- 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 +2 -2
- package/examples/gpca-pump/model/{views → catalog/viewpoints/operational/views}/operational_use_case_view.sysml +3 -3
- 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 +6 -6
- 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 +3 -3
- package/examples/gpca-pump/model/{views → catalog/viewpoints/risk/views}/document_rmf_view.sysml +3 -3
- package/examples/gpca-pump/model/{views → catalog/viewpoints/risk/views}/risk_fmea_view.sysml +2 -2
- 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 +3 -3
- package/examples/gpca-pump/model/{views → catalog/viewpoints/software/views}/software_software_architecture_view.sysml +3 -3
- 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 +4 -4
- 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 +3 -3
- package/examples/gpca-pump/model/{views → catalog/viewpoints/verification/views}/verification_verification_coverage_view.sysml +2 -2
- 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 +1 -0
- 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/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 +174 -0
- package/examples/nested-architecture-dsm/model/catalog/architecture/logical/structure.sysml +183 -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 +90 -0
- package/examples/nested-architecture-dsm/model/catalog/project.sysml +28 -0
- package/examples/nested-architecture-dsm/model/catalog/traces.sysml +49 -0
- package/examples/reusable-instrument/model/catalog/project.sysml +24 -0
- package/examples/reusable-instrument/model/catalog/reusable_instrument.sysml +7 -6
- 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/software-only-medical-device/model/catalog/project.sysml +24 -0
- 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 +23 -19
- 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 +5 -3
- 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 +18 -10
- package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/context_view.sysml +4 -2
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.viewlayout +47 -0
- package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/functional_flow_view.sysml +23 -20
- package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/interconnection_view.sysml +17 -14
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.viewlayout +94 -0
- package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/operational_behaviour_view.sysml +23 -20
- 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 +3 -1
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/standard_activity_view.sysml +51 -0
- package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/state_transition_view.sysml +3 -1
- package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/tree_view.sysml +3 -1
- package/examples/sysml-diagram-samples/model/{samples → catalog/viewpoints/unassigned/views}/use_case_view.sysml +3 -1
- 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 +2 -1
- 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 +60 -0
- package/examples/ui-screen-regions/model/catalog/architecture/implementation/ui.sysml +189 -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 +60 -0
- package/examples/ui-screen-regions/model/catalog/project.sysml +45 -0
- package/examples/ui-screen-regions/model/catalog/traces.sysml +276 -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/memo.manifest.yaml +2 -0
- 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 +2 -4
- package/profile/memo.package.yaml +18 -9
- package/src/architecture/decisions/memo_decisions.sysml +7 -0
- package/src/architecture/functional/behavior/memo_behavior.sysml +1 -1
- package/src/architecture/functional/functions/memo_functions.sysml +5 -12
- package/src/architecture/implementation/software/runtime/memo_software_runtime.sysml +1 -3
- package/src/architecture/implementation/software/structure/memo_software_structure.sysml +18 -5
- package/src/architecture/implementation/ui/memo_ui.sysml +210 -27
- package/src/architecture/logical/interfaces/memo_interfaces.sysml +1 -2
- package/src/architecture/logical/structure/memo_logical_structure.sysml +71 -15
- package/src/architecture/operational/activities/memo_activities.sysml +0 -1
- package/src/architecture/operational/scenarios/memo_scenarios.sysml +2 -2
- package/src/architecture/operational/workflows/memo_workflows.sysml +0 -6
- package/src/{compliance/change/memo_change.sysml → artifacts/configuration_management/memo_configuration_management.sysml} +5 -3
- package/src/artifacts/core/memo_controlled_artifacts.sysml +33 -0
- package/src/artifacts/documents/risk_management/memo_risk_management.sysml +12 -0
- package/src/assurance/cybersecurity/memo_cybersecurity.sysml +1 -1
- package/src/assurance/human_factors/memo_human_factors.sysml +1 -1
- package/src/assurance/safety_risk/postmarket_surveillance/memo_postmarket_surveillance.sysml +11 -0
- package/src/assurance/verification_validation/clinical_evaluation/memo_clinical_evaluation.sysml +11 -0
- package/src/assurance/verification_validation/memo_assurance.sysml +1 -1
- package/src/core/annotations/memo_annotations.sysml +77 -0
- package/src/core/common/memo_common.sysml +20 -3
- package/src/core/consistency_rules/consistency_rules.sysml +7 -0
- package/src/core/dimensions/dimensions.sysml +5 -1
- package/src/core/enumerations/memo_enumerations.sysml +41 -6
- package/src/core/methodology_scope/methodology_scope.sysml +7 -15
- package/src/core/relationships/memo_relationships.sysml +4 -2
- package/src/memo_namespaces.sysml +97 -67
- package/src/methodology/core/memo_core.sysml +45 -2
- package/src/methodology/profiles/memo_profiles.sysml +30 -40
- 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 +30 -73
- package/src/rules/quantitative/quantitative_rules.sysml +8 -8
- package/src/viewpoints/catalog/memo_viewpoint_catalog.sysml +7 -0
- package/src/viewpoints/clinical/clinical_viewpoint.sysml +3 -1
- package/src/viewpoints/clinical/{clinical_evidence_view → views/clinical_evidence_view}/clinical_evidence_view.sysml +2 -2
- package/src/viewpoints/context/context_viewpoint.sysml +3 -1
- package/src/viewpoints/context/{system_context_view → views/system_context_view}/system_context_view.sysml +2 -2
- package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +3 -1
- 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 +4 -0
- package/src/viewpoints/functional/functional_viewpoint.sysml +3 -1
- package/src/viewpoints/functional/{function_allocation_view → views/function_allocation_view}/function_allocation_view.sysml +2 -2
- package/src/viewpoints/functional/{system_functional_tree_view → views/system_functional_tree_view}/system_functional_tree_view.sysml +2 -2
- 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 +3 -1
- package/src/viewpoints/operational/{use_case_view → views/use_case_view}/use_case_view.sysml +2 -2
- 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 +3 -1
- package/src/viewpoints/verification/{verification_coverage_view → views/verification_coverage_view}/verification_coverage_view.sysml +2 -2
- 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/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/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/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/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/change-record.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/design-input.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/design-output.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/design-review.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/design-validation.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/design-verification.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/dhf-index.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/transfer-plan.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/user-needs.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/vv-plan.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/21cfr820/vv-report.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/fda-cybersecurity/incident-response.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/fda-cybersecurity/postmarket-surveillance.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/fda-cybersecurity/security-arch.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/fda-cybersecurity/threat-model.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/fda-cybersecurity/vuln-assessment.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-62304/detailed-design.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/integration-test.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/sad.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/sbom.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/sdp.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/soup.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/srs.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/sw-traceability.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62304/system-test.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/summative-eval.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/task-analysis.md +0 -0
- /package/src/{compliance/dhf-templates → artifacts/templates/dhf}/iec-62366/ue-plan.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/urra.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/fmea.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/har.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/rmp.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/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/ui_region_trace.sysml
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
package memo_examples_ui_screen_regions_viewpoints_ui_layout_views_ui_region_trace {
|
|
2
|
+
private import ScalarValues::*;
|
|
3
|
+
|
|
4
|
+
private import memo_core_relationships::*;
|
|
5
|
+
private import memo_core_annotations::*;
|
|
6
|
+
private import memo_architecture_functional_functions::*;
|
|
7
|
+
private import memo_architecture_implementation_ui::*;
|
|
8
|
+
private import memo_assurance_requirements::*;
|
|
9
|
+
private import memo_assurance_requirements_needs::*;
|
|
10
|
+
private import memo_assurance_human_factors::*;
|
|
11
|
+
private import memo_assurance_safety_risk::*;
|
|
12
|
+
private import memo_assurance_verification_validation::*;
|
|
13
|
+
private import memo_artifacts_core::*;
|
|
14
|
+
|
|
15
|
+
private import memo_viewpoints_definitions::*;
|
|
16
|
+
private import memo_core_enumerations::*;
|
|
17
|
+
private import memo_viewpoints_ui_layout_views_screen_layout_view::*;
|
|
18
|
+
private import memo_examples_ui_screen_regions_viewpoints_ui_layout::*;
|
|
19
|
+
private import memo_examples_ui_screen_regions_architecture_implementation_ui::*;
|
|
20
|
+
private import memo_examples_ui_screen_regions_architecture_functional_functions::*;
|
|
21
|
+
private import memo_examples_ui_screen_regions_assurance_requirements::*;
|
|
22
|
+
private import memo_examples_ui_screen_regions_assurance_requirements_needs::*;
|
|
23
|
+
private import memo_examples_ui_screen_regions_assurance_human_factors::*;
|
|
24
|
+
private import memo_examples_ui_screen_regions_assurance_safety_risk::*;
|
|
25
|
+
private import memo_examples_ui_screen_regions_assurance_verification_validation::*;
|
|
26
|
+
private import memo_examples_ui_screen_regions_artifacts_assets::*;
|
|
27
|
+
private import memo_examples_ui_screen_regions_artifacts_reviews_comments::*;
|
|
28
|
+
private import memo_examples_ui_screen_regions_artifacts_reviews_rationales::*;
|
|
29
|
+
private import memo_examples_ui_screen_regions_artifacts_reviews_notes::*;
|
|
30
|
+
private import memo_examples_ui_screen_regions_traces::*;
|
|
31
|
+
|
|
32
|
+
// The same content as a graph, for reviewers who want to read the trace
|
|
33
|
+
// chain rather than look at the screen.
|
|
34
|
+
view uiRegionTrace : MemoDiagramView {
|
|
35
|
+
expose memo_examples_ui_screen_regions_architecture_implementation_ui::*;
|
|
36
|
+
expose memo_examples_ui_screen_regions_architecture_functional_functions::*;
|
|
37
|
+
expose memo_examples_ui_screen_regions_assurance_requirements::*;
|
|
38
|
+
expose memo_examples_ui_screen_regions_assurance_requirements_needs::*;
|
|
39
|
+
expose memo_examples_ui_screen_regions_assurance_human_factors::*;
|
|
40
|
+
expose memo_examples_ui_screen_regions_assurance_safety_risk::*;
|
|
41
|
+
expose memo_examples_ui_screen_regions_assurance_verification_validation::*;
|
|
42
|
+
expose memo_examples_ui_screen_regions_artifacts_assets::*;
|
|
43
|
+
expose memo_examples_ui_screen_regions_artifacts_reviews_comments::*;
|
|
44
|
+
expose memo_examples_ui_screen_regions_artifacts_reviews_rationales::*;
|
|
45
|
+
expose memo_examples_ui_screen_regions_artifacts_reviews_notes::*;
|
|
46
|
+
expose memo_examples_ui_screen_regions_traces::*;
|
|
47
|
+
attribute :>> id = "UIV-001";
|
|
48
|
+
attribute depth = 3;
|
|
49
|
+
attribute :>> title = "UI Region Traceability";
|
|
50
|
+
attribute :>> viewKind = DiagramViewKind::general;
|
|
51
|
+
attribute :>> diagramType = "bdd";
|
|
52
|
+
part :>> viewpointDefinition = uiLayoutViewpoint;
|
|
53
|
+
}
|
|
54
|
+
}
|
package/memo.manifest.yaml
CHANGED
|
@@ -17,5 +17,7 @@ templates:
|
|
|
17
17
|
examples:
|
|
18
18
|
gpca: ./examples/gpca-pump
|
|
19
19
|
standard-sysml-diagrams: ./examples/sysml-diagram-samples
|
|
20
|
+
ui-screen-regions: ./examples/ui-screen-regions
|
|
21
|
+
nested-architecture-dsm: ./examples/nested-architecture-dsm
|
|
20
22
|
extension-template: ./examples/extensions/template
|
|
21
23
|
clinical-extension: ./examples/extensions/clinical
|
|
@@ -1,9 +1,19 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
1
|
+
# Application/distribution descriptor for this MEMO package.
|
|
2
|
+
#
|
|
3
|
+
# Identity and location only. It records what this package is called, what
|
|
4
|
+
# version it is, and where its SysML source sits so a resolver can find it.
|
|
5
|
+
# It does not select model content: the project's native SysML imports and its
|
|
6
|
+
# ProjectMethodBinding decide what is in the model. Semantic fields
|
|
7
|
+
# (`type`, `extends`, `usage`, `ontologies`, `methodology`, `modules`) were
|
|
8
|
+
# removed at the native semantic flip and are now rejected if present.
|
|
9
|
+
name: '@memoarchitect/methodology-default'
|
|
10
|
+
version: 0.7.0
|
|
11
|
+
description: "MEMO default medical-device methodology \u2014 selects viewpoints/views/DHF documents from @memoarchitect/ontology and adds rules, gates, patterns, profiles, and workflow."
|
|
12
|
+
license: MIT
|
|
13
|
+
tags:
|
|
14
|
+
- methodology
|
|
15
|
+
- medical-device
|
|
16
|
+
- iso-14971
|
|
17
|
+
- iec-62304
|
|
18
|
+
- memo
|
|
19
|
+
sysmlDir: ../../src/methodology
|
|
@@ -1,9 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
1
|
+
# Application/distribution descriptor for this MEMO package.
|
|
2
|
+
#
|
|
3
|
+
# Identity and location only. It records what this package is called, what
|
|
4
|
+
# version it is, and where its SysML source sits so a resolver can find it.
|
|
5
|
+
# It does not select model content: the project's native SysML imports and its
|
|
6
|
+
# ProjectMethodBinding decide what is in the model. Semantic fields
|
|
7
|
+
# (`type`, `extends`, `usage`, `ontologies`, `methodology`, `modules`) were
|
|
8
|
+
# removed at the native semantic flip and are now rejected if present.
|
|
9
|
+
name: '@memoarchitect/methodology-gpca'
|
|
10
|
+
version: 0.7.0
|
|
11
|
+
description: "GPCA infusion pump methodology \u2014 subtraction-based tailoring of @memoarchitect/methodology-default for the non-networked prototype variant. Excludes cybersecurity and SOUP."
|
|
12
|
+
license: MIT
|
|
13
|
+
tags:
|
|
14
|
+
- methodology
|
|
15
|
+
- medical-device
|
|
16
|
+
- gpca
|
|
17
|
+
- tailoring
|
|
18
|
+
sysmlDir: ../../examples/gpca-pump/methodology
|
|
@@ -1,8 +1,23 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
usage
|
|
8
|
-
|
|
1
|
+
# Application/distribution descriptor for this MEMO package.
|
|
2
|
+
#
|
|
3
|
+
# Identity and location only. It records what this package is called, what
|
|
4
|
+
# version it is, and where its SysML source sits so a resolver can find it.
|
|
5
|
+
# It does not select model content: the project's native SysML imports and its
|
|
6
|
+
# ProjectMethodBinding decide what is in the model. Semantic fields
|
|
7
|
+
# (`type`, `extends`, `usage`, `ontologies`, `methodology`, `modules`) were
|
|
8
|
+
# removed at the native semantic flip and are now rejected if present.
|
|
9
|
+
name: '@memoarchitect/ontology'
|
|
10
|
+
version: 0.7.0
|
|
11
|
+
description: "MEMO \u2014 the single canonical medical-device ontology: core semantics, the Arcadia-inspired architecture layers (context, requirements, behavior, structure, interfaces, risk, cybersecurity,\
|
|
12
|
+
\ assurance, \u2026), compliance, viewpoints, views, and invariant rules. One namespace (memo::), one src/ tree."
|
|
13
|
+
license: MIT
|
|
14
|
+
tags:
|
|
15
|
+
- mbse
|
|
16
|
+
- sysml-v2
|
|
17
|
+
- arcadia
|
|
18
|
+
- iso-42010
|
|
19
|
+
- medical-device
|
|
20
|
+
- ontology
|
|
21
|
+
- iso-14971
|
|
22
|
+
- iec-62304
|
|
23
|
+
sysmlDir: ../src
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@memoarchitect/ontology",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.0",
|
|
4
4
|
"packageManager": "pnpm@9.15.0",
|
|
5
|
-
"description": "MEMO
|
|
5
|
+
"description": "MEMO \u2014 Medical Engineering Modelling Ontology. Pure SysML v2 medical-device ontology with native constraints, portable to any conformant SysML v2 tool (SysIDE, SysON, sysand).",
|
|
6
6
|
"scripts": {
|
|
7
7
|
"build": "bash scripts/build-kpar.sh",
|
|
8
8
|
"check": "bash scripts/build-kpar.sh",
|
|
@@ -49,14 +49,12 @@
|
|
|
49
49
|
"LICENSE",
|
|
50
50
|
"memo.manifest.yaml",
|
|
51
51
|
"ontology/memo.package.yaml",
|
|
52
|
-
"ontology/memo.rendering.yaml",
|
|
53
52
|
"profile/memo.package.yaml",
|
|
54
53
|
"methodologies/default/memo.package.yaml",
|
|
55
54
|
"methodologies/gpca/memo.package.yaml",
|
|
56
55
|
"src/assurance/",
|
|
57
56
|
"src/architecture/",
|
|
58
57
|
"src/artifacts/",
|
|
59
|
-
"src/compliance/",
|
|
60
58
|
"src/core/",
|
|
61
59
|
"src/methodology/archetypes/",
|
|
62
60
|
"src/methodology/core/",
|
|
@@ -1,9 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
1
|
+
# Application/distribution descriptor for this MEMO package.
|
|
2
|
+
#
|
|
3
|
+
# Identity and location only. It records what this package is called, what
|
|
4
|
+
# version it is, and where its SysML source sits so a resolver can find it.
|
|
5
|
+
# It does not select model content: the project's native SysML imports and its
|
|
6
|
+
# ProjectMethodBinding decide what is in the model. Semantic fields
|
|
7
|
+
# (`type`, `extends`, `usage`, `ontologies`, `methodology`, `modules`) were
|
|
8
|
+
# removed at the native semantic flip and are now rejected if present.
|
|
9
|
+
name: '@memoarchitect/medical-modeling-profile'
|
|
10
|
+
version: 0.7.0
|
|
11
|
+
description: Closure rules and viewpoints for medical device modeling
|
|
12
|
+
license: MIT
|
|
13
|
+
tags:
|
|
14
|
+
- medical-device
|
|
15
|
+
- iso-14971
|
|
16
|
+
- iec-62304
|
|
17
|
+
- iso-13485
|
|
18
|
+
- modeling-profile
|
|
@@ -3,10 +3,17 @@ package memo_architecture_decisions {
|
|
|
3
3
|
|
|
4
4
|
private import memo_core_common::*;
|
|
5
5
|
private import memo_core_enumerations::*;
|
|
6
|
+
private import memo_core_relationships::*;
|
|
7
|
+
private import memo_artifacts_core::*;
|
|
6
8
|
part def DesignDecision specializes MemoPart {
|
|
7
9
|
attribute decisionKind : String;
|
|
8
10
|
attribute alternatives : String;
|
|
9
11
|
attribute selectedOption : String;
|
|
10
12
|
attribute decisionStatus : DesignDecisionStatusKind;
|
|
11
13
|
}
|
|
14
|
+
|
|
15
|
+
connection def DecisionRecordedInADR :> MemoRelationship {
|
|
16
|
+
end decision : DesignDecision;
|
|
17
|
+
end adr : ADRArtifact;
|
|
18
|
+
}
|
|
12
19
|
}
|
|
@@ -42,7 +42,7 @@ package memo_architecture_functional_behavior {
|
|
|
42
42
|
attribute wcetMs : String;
|
|
43
43
|
attribute safetyRelevant : Boolean;
|
|
44
44
|
}
|
|
45
|
-
|
|
45
|
+
action def ActivityFlow specializes MemoAction {
|
|
46
46
|
attribute flowKind : ActivityFlowKind;
|
|
47
47
|
attribute guardCondition : String;
|
|
48
48
|
attribute weight : String;
|
|
@@ -28,11 +28,11 @@ package memo_architecture_functional_functions {
|
|
|
28
28
|
ref performedFunction : SystemFunction[0..1];
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
-
//
|
|
32
|
-
//
|
|
31
|
+
// Named traceable route between functions. Native `flow of` usages carry
|
|
32
|
+
// the transported item; this element exists for budgets and assurance
|
|
33
|
+
// attributes that a flow usage cannot own.
|
|
33
34
|
part def FunctionalExchange specializes ArchitectureElement {
|
|
34
35
|
attribute flowKind : FlowKind;
|
|
35
|
-
attribute direction : DirectionKind;
|
|
36
36
|
attribute latencyBudgetMs : Real;
|
|
37
37
|
attribute staleAfterMs : Real;
|
|
38
38
|
attribute integrityLevel : String;
|
|
@@ -46,15 +46,11 @@ package memo_architecture_functional_functions {
|
|
|
46
46
|
// flows are part of functional architecture, never logical structure.
|
|
47
47
|
part def FunctionalFlow specializes ArchitectureElement {
|
|
48
48
|
attribute flowCategory : FunctionalFlowKind;
|
|
49
|
-
ref startFunction : SystemFunction[0..1];
|
|
50
|
-
ref endFunction : SystemFunction[0..1];
|
|
51
49
|
attribute endToEndLatencyBudgetMs : String;
|
|
52
50
|
attribute safetyRelevant : Boolean;
|
|
53
51
|
attribute securityRelevant : Boolean;
|
|
54
|
-
ref includedFunctions : SystemFunction[0..*];
|
|
55
52
|
}
|
|
56
|
-
|
|
57
|
-
attribute stepOrder : String;
|
|
53
|
+
action def FunctionalFlowStep specializes MemoAction {
|
|
58
54
|
ref function : SystemFunction[0..1];
|
|
59
55
|
ref exchange : FunctionalExchange[0..1];
|
|
60
56
|
ref item exchangedItem : MemoExchangeItem[0..1];
|
|
@@ -63,10 +59,7 @@ package memo_architecture_functional_functions {
|
|
|
63
59
|
// The functional-layer scenario selects one functional route and realizes
|
|
64
60
|
// an operative scenario. It is the "what the system does" path, not a
|
|
65
61
|
// logical component interaction.
|
|
66
|
-
|
|
67
|
-
ref functionSequence : SystemFunction[0..*];
|
|
68
|
-
ref functionalFlows : FunctionalExchange[0..*];
|
|
69
|
-
attribute sequenceDiagramRef : String;
|
|
62
|
+
action def FunctionalScenario specializes MemoScenario {
|
|
70
63
|
ref selectedFlow : FunctionalFlow[0..1];
|
|
71
64
|
}
|
|
72
65
|
connection def IncludesStep :> MemoRelationship {
|
|
@@ -25,11 +25,9 @@ package memo_architecture_implementation_software_runtime {
|
|
|
25
25
|
enum messageBroker;
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
-
part def SoftwareComponent specializes
|
|
28
|
+
part def SoftwareComponent specializes SoftwareItem {
|
|
29
29
|
attribute runtimeKind : RuntimeKind;
|
|
30
30
|
attribute responsibility : String;
|
|
31
|
-
attribute safetyClass : SafetyClassKind;
|
|
32
|
-
attribute complexity : ComplexityKind;
|
|
33
31
|
attribute periodMs : Real;
|
|
34
32
|
attribute deadlineMs : Real;
|
|
35
33
|
attribute wcetMs : Real;
|
|
@@ -9,10 +9,25 @@ package memo_architecture_implementation_software_structure {
|
|
|
9
9
|
private import memo_core_relationships::*;
|
|
10
10
|
private import memo_architecture_logical_structure::*;
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
// IEC 62304 §3.25: a SOFTWARE ITEM is "any identifiable part of a computer
|
|
13
|
+
// program". It is the general, recursive term — a SOFTWARE SYSTEM (§3.24)
|
|
14
|
+
// is the top item and a SOFTWARE UNIT (§3.26) is one not subdivided
|
|
15
|
+
// further; both are software items. So this is a base, not a fourth
|
|
16
|
+
// sibling of system/module/component.
|
|
17
|
+
//
|
|
18
|
+
// It exists because §4.3 classifies, and §5.3–5.4 decompose, SOFTWARE
|
|
19
|
+
// ITEMS — not "modules" or "components" specifically. Anything the
|
|
20
|
+
// standard obliges at item level therefore belongs here, and every
|
|
21
|
+
// software view inherits it rather than re-declaring it: the code view
|
|
22
|
+
// (SoftwareModule), the runtime view (SoftwareComponent), the system, and
|
|
23
|
+
// the user interface (memo_architecture_implementation_ui::UIElement).
|
|
24
|
+
abstract part def SoftwareItem specializes ArchitectureElement {
|
|
14
25
|
attribute safetyClass : SafetyClassKind;
|
|
15
26
|
attribute complexity : ComplexityKind;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
part def SoftwareSystem specializes SoftwareItem {
|
|
30
|
+
attribute version : String;
|
|
16
31
|
attribute operatingSystem : String;
|
|
17
32
|
}
|
|
18
33
|
|
|
@@ -29,11 +44,9 @@ package memo_architecture_implementation_software_structure {
|
|
|
29
44
|
enum soup;
|
|
30
45
|
}
|
|
31
46
|
|
|
32
|
-
part def SoftwareModule specializes
|
|
47
|
+
part def SoftwareModule specializes SoftwareItem {
|
|
33
48
|
attribute moduleKind : ModuleKind;
|
|
34
49
|
attribute responsibility : String;
|
|
35
|
-
attribute safetyClass : SafetyClassKind;
|
|
36
|
-
attribute complexity : ComplexityKind;
|
|
37
50
|
// module-kind-specific detail (set only for the relevant moduleKind)
|
|
38
51
|
attribute iec62304Role : String[0..1];
|
|
39
52
|
attribute implementationLanguage : String[0..1];
|
|
@@ -14,22 +14,81 @@ package memo_architecture_implementation_ui {
|
|
|
14
14
|
private import memo_architecture_operational_scenarios::*;
|
|
15
15
|
private import memo_architecture_operational_use_cases::*;
|
|
16
16
|
private import memo_architecture_functional_functions::*;
|
|
17
|
+
private import memo_architecture_implementation_software_structure::*;
|
|
18
|
+
private import memo_architecture_implementation_hardware_common::*;
|
|
17
19
|
private import memo_assurance_human_factors::*;
|
|
18
20
|
|
|
21
|
+
// Every concrete UI form, holding and held alike. A screen is not a
|
|
22
|
+
// different KIND of thing from a button — it is a UIElement that happens to
|
|
23
|
+
// contain others, exactly as an assembly is a part that contains parts.
|
|
24
|
+
// The forms below are classifications, not classes, so one tree carries the
|
|
25
|
+
// whole interface.
|
|
19
26
|
enum def UIElementFormKind {
|
|
27
|
+
// ── forms that hold other elements ──
|
|
28
|
+
enum screen;
|
|
29
|
+
enum dialog;
|
|
30
|
+
enum panel;
|
|
31
|
+
enum menu;
|
|
32
|
+
enum tab;
|
|
33
|
+
enum drawer;
|
|
34
|
+
enum wizardStep;
|
|
35
|
+
// ── controls the user acts on ──
|
|
36
|
+
// Rendered controls only. A knob, toggle, lamp, or buzzer the user
|
|
37
|
+
// touches is not software: it is an OperatorInterfaceElement below.
|
|
20
38
|
enum button;
|
|
21
39
|
enum field;
|
|
22
40
|
enum selector;
|
|
23
|
-
enum knob;
|
|
24
|
-
enum switchControl;
|
|
25
41
|
enum slider;
|
|
42
|
+
// ── forms that present information ──
|
|
26
43
|
enum table;
|
|
27
44
|
enum chart;
|
|
28
45
|
enum icon;
|
|
29
|
-
enum indicatorLamp;
|
|
30
|
-
enum audibleIndicator;
|
|
31
|
-
enum hapticIndicator;
|
|
32
46
|
enum textMessage;
|
|
47
|
+
// ── chrome ──
|
|
48
|
+
// Non-functional: a rule, a background, a brand mark. Declared, never
|
|
49
|
+
// merely implied — CR-MED-110 exempts `decoration` from needing a
|
|
50
|
+
// design record, so an element left unclassified fails rather than
|
|
51
|
+
// slipping through as scenery.
|
|
52
|
+
enum decoration;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
// ─── Screen geometry ─────────────────────────────────────────
|
|
56
|
+
// Position and size of a UIElement inside its PARENT element, each value
|
|
57
|
+
// normalized to 0..1 of the parent's box — not pixels. Two consequences
|
|
58
|
+
// are wanted: an element survives a re-capture at a different resolution
|
|
59
|
+
// or device scale, and a child's box is stated against its parent, which
|
|
60
|
+
// is exactly what the containment tree already asserts. Absolute pixels
|
|
61
|
+
// stay recoverable from the ScreenCapture's pixelWidth / pixelHeight.
|
|
62
|
+
attribute def RegionBounds {
|
|
63
|
+
attribute x : Real;
|
|
64
|
+
attribute y : Real;
|
|
65
|
+
attribute width : Real;
|
|
66
|
+
attribute height : Real;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
// How an element appears relative to its parent and siblings. It records
|
|
70
|
+
// design intent a bare rectangle cannot: an element whose box escapes its
|
|
71
|
+
// parent and covers its siblings is a defect if it is `inline` and correct
|
|
72
|
+
// if it is `overlay`, and the geometry alone does not say which. A
|
|
73
|
+
// renderer reads it to decide what to clip and what to draw on top; a
|
|
74
|
+
// reviewer reads it to know whether an overlap is intended.
|
|
75
|
+
enum def UIDisclosureKind {
|
|
76
|
+
enum inline; // laid out inside the parent, sharing space with siblings
|
|
77
|
+
enum overlay; // dropdown, popover, modal — drawn OVER parent and siblings
|
|
78
|
+
enum transient; // tooltip, toast — appears over everything, then withdraws
|
|
79
|
+
enum scrolled; // inside the parent, but beyond its viewport until scrolled
|
|
80
|
+
enum conditional; // rendered only while a stated condition holds
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
// How the element's bounds were obtained. Automatic boundary detection
|
|
84
|
+
// PROPOSES; a reviewer DISPOSES. In a regulated review the reader must be
|
|
85
|
+
// able to see which boxes a human confirmed and which the tool guessed, so
|
|
86
|
+
// that provenance is model content and not a workbench-only flag.
|
|
87
|
+
enum def BoundsDetectionKind {
|
|
88
|
+
enum manual;
|
|
89
|
+
enum automatic;
|
|
90
|
+
enum automaticConfirmed;
|
|
91
|
+
enum imported;
|
|
33
92
|
}
|
|
34
93
|
|
|
35
94
|
// The interaction intents a step or action can carry (§18).
|
|
@@ -54,20 +113,68 @@ package memo_architecture_implementation_ui {
|
|
|
54
113
|
attribute uiTechnology : String;
|
|
55
114
|
}
|
|
56
115
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
116
|
+
// What a rendered control and a physical one genuinely share: a label, an
|
|
117
|
+
// accessibility story, and — when they annunciate — an alarm character.
|
|
118
|
+
// The base exists so that the §18 traceability relations can type against
|
|
119
|
+
// "something the user interacts with" rather than against software
|
|
120
|
+
// specifically. Without it a use error on a knob would be unmodellable,
|
|
121
|
+
// because ErrorAtElement would only accept a UIElement.
|
|
122
|
+
abstract part def InteractionElement specializes ArchitectureElement {
|
|
123
|
+
attribute labelText : String;
|
|
124
|
+
attribute accessibilitySummary : String;
|
|
125
|
+
// alarm annunciation (optional; IEC 60601-1-8)
|
|
126
|
+
attribute alarmPriority : NotificationPriorityKind[0..1];
|
|
127
|
+
attribute annunciationModality : String;
|
|
128
|
+
attribute silenceable : Boolean;
|
|
60
129
|
}
|
|
61
130
|
|
|
62
|
-
|
|
63
|
-
//
|
|
64
|
-
//
|
|
65
|
-
//
|
|
66
|
-
//
|
|
67
|
-
|
|
131
|
+
|
|
132
|
+
// One UIElement — the single UI part type. The widget form — holding
|
|
133
|
+
// (screen/panel/dialog), acting (button/knob/slider), presenting
|
|
134
|
+
// (field/table/chart), physical (knob/switch/indicatorLamp/haptic), or
|
|
135
|
+
// decorative — is the `formKind` enum, not a subclass.
|
|
136
|
+
// Input/output/navigation/alarm/display/physical-control descriptors are
|
|
137
|
+
// optional attributes; a physical control's mechanical realization is a
|
|
138
|
+
// hardware part linked by ControlImplementedBy.
|
|
139
|
+
//
|
|
140
|
+
// Composition is the ordinary `Composes` relation, so a screen's element
|
|
141
|
+
// tree is an ordinary part tree: CR-ONT-001 already forbids cycles in it,
|
|
142
|
+
// impact analysis already walks it, and requirements, functions, use
|
|
143
|
+
// errors, and risk controls already trace to it. Screen layout adds four
|
|
144
|
+
// numbers to that tree — it does not add a tree.
|
|
145
|
+
//
|
|
146
|
+
// A UIElement IS a SOFTWARE ITEM (IEC 62304 §3.25) and specializes the
|
|
147
|
+
// SoftwareItem base, inheriting safetyClass and complexity, so the
|
|
148
|
+
// interface is classified and decomposed like the software it is.
|
|
149
|
+
//
|
|
150
|
+
// It specializes SoftwareItem and NOT SoftwareModule: the module view is
|
|
151
|
+
// CODE, and a screen is not a source module. Runtime processes are
|
|
152
|
+
// SoftwareComponent, code is SoftwareModule, and the UI is a third view of
|
|
153
|
+
// the same software — a sibling of those, not a kind of either.
|
|
154
|
+
part def UIElement specializes SoftwareItem, InteractionElement {
|
|
68
155
|
attribute formKind : UIElementFormKind;
|
|
69
|
-
|
|
70
|
-
|
|
156
|
+
// ── screen layout (optional; set for elements that are laid out) ──
|
|
157
|
+
// Bounds are relative to the parent element in the Composes tree; a
|
|
158
|
+
// root screen's bounds are the full frame.
|
|
159
|
+
attribute bounds : RegionBounds[0..1];
|
|
160
|
+
attribute disclosureKind : UIDisclosureKind[0..1];
|
|
161
|
+
// The condition under which the element renders; meaningful when
|
|
162
|
+
// disclosureKind is `conditional`.
|
|
163
|
+
attribute visibilityCondition : String;
|
|
164
|
+
// Boundary colour as a CSS colour token. Presentation, but modelled: a
|
|
165
|
+
// review print, an exported figure, and the workbench must agree on
|
|
166
|
+
// which box is which, and a colour assigned only in a tool session does
|
|
167
|
+
// not survive the export.
|
|
168
|
+
attribute boundaryColor : String;
|
|
169
|
+
// Capture-relative fill transparency for region review overlays. A
|
|
170
|
+
// modelled value keeps interactive review and exported figures aligned.
|
|
171
|
+
attribute boundaryOpacity : Real[0..1];
|
|
172
|
+
attribute detectionMethod : BoundsDetectionKind[0..1];
|
|
173
|
+
attribute detectionConfidence : Real[0..1];
|
|
174
|
+
attribute confirmedBy : String;
|
|
175
|
+
attribute confirmedAt : String;
|
|
176
|
+
// ── role of a holding form (optional) ──
|
|
177
|
+
attribute navigationRole : String;
|
|
71
178
|
// input descriptors (optional)
|
|
72
179
|
attribute inputConstraints : String;
|
|
73
180
|
attribute defaultValue : String;
|
|
@@ -75,15 +182,72 @@ package memo_architecture_implementation_ui {
|
|
|
75
182
|
attribute updateRate : String;
|
|
76
183
|
attribute unitsDisplayed : String;
|
|
77
184
|
attribute informationContent : String;
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
// ─── Physical operator interface ─────────────────────────────
|
|
188
|
+
// The hardware the user actually touches and reads. IEC 60601-1 marks
|
|
189
|
+
// "controls and instruments" and defines OPERATOR; this is that surface,
|
|
190
|
+
// covering both directions — what the operator actuates and what the
|
|
191
|
+
// device shows back — because a front panel is one interface, not two.
|
|
192
|
+
//
|
|
193
|
+
// It is a PhysicalComponent, so it inherits part number, material, and the
|
|
194
|
+
// ISO 10993-1 patient-contact characterization that a touched surface
|
|
195
|
+
// needs and that software can never have. That inheritance is the reason
|
|
196
|
+
// these forms had to leave UIElement: as UIElementFormKind members they
|
|
197
|
+
// were software items with no way to state any of it.
|
|
198
|
+
enum def OperatorInterfaceFormKind {
|
|
199
|
+
// ── actuated by the operator ──
|
|
200
|
+
enum knob;
|
|
201
|
+
enum dial;
|
|
202
|
+
enum pushButton;
|
|
203
|
+
enum toggleSwitch;
|
|
204
|
+
enum rockerSwitch;
|
|
205
|
+
enum lever;
|
|
206
|
+
enum physicalSlider;
|
|
207
|
+
enum keypad;
|
|
208
|
+
enum footPedal;
|
|
209
|
+
enum touchSurface;
|
|
210
|
+
// ── presented to the operator ──
|
|
211
|
+
enum indicatorLamp;
|
|
212
|
+
enum gauge;
|
|
213
|
+
enum audibleIndicator;
|
|
214
|
+
enum hapticIndicator;
|
|
215
|
+
enum printedMarking;
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
part def OperatorInterfaceElement specializes PhysicalComponent, InteractionElement {
|
|
219
|
+
attribute formKind : OperatorInterfaceFormKind;
|
|
220
|
+
// actuation (optional; set for actuated forms)
|
|
85
221
|
attribute actuationForce : String;
|
|
222
|
+
attribute actuationTravel : String;
|
|
86
223
|
attribute guardedAgainstInadvertentActuation : Boolean;
|
|
224
|
+
attribute tactileFeedback : String;
|
|
225
|
+
// presentation (optional; set for presented forms)
|
|
226
|
+
attribute legendText : String;
|
|
227
|
+
attribute luminanceOrVolume : String;
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
// ─── Captured evidence ───────────────────────────────────────
|
|
231
|
+
// One image of one screen. MemoEvidence, not ArchitectureElement: it
|
|
232
|
+
// records what a specific build actually displayed at a specific time,
|
|
233
|
+
// which is the provenance a design review or a usability engineering file
|
|
234
|
+
// needs before it can rely on the picture. The screen it depicts is an
|
|
235
|
+
// ordinary UIElement with formKind = screen.
|
|
236
|
+
part def ScreenCapture specializes MemoEvidence {
|
|
237
|
+
attribute imageUri : String;
|
|
238
|
+
// Content hash of the image bytes. The screenshot is the evidence, so
|
|
239
|
+
// it must be tamper-evident: a DHF reference to a mutable file is not
|
|
240
|
+
// a reference to anything.
|
|
241
|
+
attribute imageHash : String;
|
|
242
|
+
attribute pixelWidth : Integer;
|
|
243
|
+
attribute pixelHeight : Integer;
|
|
244
|
+
attribute captureDate : String;
|
|
245
|
+
// Which build produced this rendering. A screenshot without a build is
|
|
246
|
+
// undated design intent, not evidence of the device.
|
|
247
|
+
attribute capturedBuild : String;
|
|
248
|
+
// Device, viewport, locale, theme, user role — everything that changes
|
|
249
|
+
// what the screen shows without changing the software.
|
|
250
|
+
attribute captureContext : String;
|
|
87
251
|
}
|
|
88
252
|
|
|
89
253
|
// UI state is presentation state — distinct from system/device state.
|
|
@@ -109,7 +273,7 @@ package memo_architecture_implementation_ui {
|
|
|
109
273
|
attribute exitPoint : String;
|
|
110
274
|
}
|
|
111
275
|
|
|
112
|
-
|
|
276
|
+
action def UIScenario specializes MemoScenario {
|
|
113
277
|
ref parentFlow : InteractionFlow[0..1];
|
|
114
278
|
}
|
|
115
279
|
|
|
@@ -122,7 +286,7 @@ package memo_architecture_implementation_ui {
|
|
|
122
286
|
connection def DataBinding :> MemoRelationship {
|
|
123
287
|
attribute bindingExpression : String;
|
|
124
288
|
attribute refreshPolicy : String;
|
|
125
|
-
end boundElement :
|
|
289
|
+
end boundElement : InteractionElement;
|
|
126
290
|
end dataSource : MemoPart;
|
|
127
291
|
}
|
|
128
292
|
connection def PresentsState :> MemoRelationship {
|
|
@@ -130,9 +294,28 @@ package memo_architecture_implementation_ui {
|
|
|
130
294
|
end uiState : UIState;
|
|
131
295
|
}
|
|
132
296
|
|
|
297
|
+
// ── Screen layout relations ──────────────────────────────────
|
|
298
|
+
// Which modelled screen an image is a rendering of.
|
|
299
|
+
connection def CapturesScreen :> MemoRelationship {
|
|
300
|
+
end capture : ScreenCapture;
|
|
301
|
+
end screen : UIElement;
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
// Activating this element opens another screen. This is NAVIGATION, not
|
|
305
|
+
// containment — the opened screen is not laid out inside the element, so
|
|
306
|
+
// it is not a Composes child and the geometric rules do not relate them.
|
|
307
|
+
// Conflating the two was the mistake that made "clicking takes you to a
|
|
308
|
+
// child view" look like spatial nesting; it is a separate frame reached
|
|
309
|
+
// from here, and only this relation says so.
|
|
310
|
+
connection def NavigatesTo :> MemoRelationship {
|
|
311
|
+
attribute triggerGesture : String;
|
|
312
|
+
end sourceElement : UIElement;
|
|
313
|
+
end targetScreen : UIElement;
|
|
314
|
+
}
|
|
315
|
+
|
|
133
316
|
// ── §18 traceability ─────────────────────────────────────────
|
|
134
317
|
connection def ElementTriggersAction :> MemoRelationship {
|
|
135
|
-
end element :
|
|
318
|
+
end element : InteractionElement;
|
|
136
319
|
end triggeredAction : UIAction;
|
|
137
320
|
}
|
|
138
321
|
connection def ActionInvokesFunction :> MemoRelationship {
|
|
@@ -148,7 +331,7 @@ package memo_architecture_implementation_ui {
|
|
|
148
331
|
// completing the OperativeScenario → FunctionalScenario → UIScenario chain.
|
|
149
332
|
connection def ErrorAtElement :> MemoRelationship {
|
|
150
333
|
end useError : UseError;
|
|
151
|
-
end element :
|
|
334
|
+
end element : InteractionElement;
|
|
152
335
|
}
|
|
153
336
|
// A risk control implemented by a UI element or by task design
|
|
154
337
|
// (confirmation dialog, lockout, guarded control).
|