@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
|
@@ -5,31 +5,92 @@
|
|
|
5
5
|
// UI is an implementation concern (rendered UI is software; physical controls
|
|
6
6
|
// are hardware), so it lives in the implementation layer, not operational.
|
|
7
7
|
package memo_architecture_implementation_ui {
|
|
8
|
+
private import Metaobjects::SemanticMetadata;
|
|
8
9
|
private import ScalarValues::*;
|
|
9
10
|
|
|
10
11
|
private import memo_core_common::*;
|
|
11
12
|
private import memo_core_enumerations::*;
|
|
13
|
+
private import memo_assurance_safety_risk::*; // RiskControlMeasure
|
|
12
14
|
private import memo_core_relationships::*;
|
|
13
15
|
private import memo_architecture_operational_activities::*;
|
|
14
16
|
private import memo_architecture_operational_scenarios::*;
|
|
15
17
|
private import memo_architecture_operational_use_cases::*;
|
|
16
18
|
private import memo_architecture_functional_functions::*;
|
|
19
|
+
private import memo_architecture_implementation_software_structure::*;
|
|
20
|
+
private import memo_architecture_implementation_hardware_common::*;
|
|
17
21
|
private import memo_assurance_human_factors::*;
|
|
18
22
|
|
|
23
|
+
// Every concrete UI form, holding and held alike. A screen is not a
|
|
24
|
+
// different KIND of thing from a button — it is a UIElement that happens to
|
|
25
|
+
// contain others, exactly as an assembly is a part that contains parts.
|
|
26
|
+
// The forms below are classifications, not classes, so one tree carries the
|
|
27
|
+
// whole interface.
|
|
19
28
|
enum def UIElementFormKind {
|
|
29
|
+
// ── forms that hold other elements ──
|
|
30
|
+
enum screen;
|
|
31
|
+
enum dialog;
|
|
32
|
+
enum panel;
|
|
33
|
+
enum menu;
|
|
34
|
+
enum tab;
|
|
35
|
+
enum drawer;
|
|
36
|
+
enum wizardStep;
|
|
37
|
+
// ── controls the user acts on ──
|
|
38
|
+
// Rendered controls only. A knob, toggle, lamp, or buzzer the user
|
|
39
|
+
// touches is not software: it is an OperatorInterfaceElement below.
|
|
20
40
|
enum button;
|
|
21
41
|
enum field;
|
|
22
42
|
enum selector;
|
|
23
|
-
enum knob;
|
|
24
|
-
enum switchControl;
|
|
25
43
|
enum slider;
|
|
44
|
+
// ── forms that present information ──
|
|
26
45
|
enum table;
|
|
27
46
|
enum chart;
|
|
28
47
|
enum icon;
|
|
29
|
-
enum indicatorLamp;
|
|
30
|
-
enum audibleIndicator;
|
|
31
|
-
enum hapticIndicator;
|
|
32
48
|
enum textMessage;
|
|
49
|
+
// ── chrome ──
|
|
50
|
+
// Non-functional: a rule, a background, a brand mark. Declared, never
|
|
51
|
+
// merely implied — CR-MED-110 exempts `decoration` from needing a
|
|
52
|
+
// design record, so an element left unclassified fails rather than
|
|
53
|
+
// slipping through as scenery.
|
|
54
|
+
enum decoration;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
// ─── Screen geometry ─────────────────────────────────────────
|
|
58
|
+
// Position and size of a UIElement inside its PARENT element, each value
|
|
59
|
+
// normalized to 0..1 of the parent's box — not pixels. Two consequences
|
|
60
|
+
// are wanted: an element survives a re-capture at a different resolution
|
|
61
|
+
// or device scale, and a child's box is stated against its parent, which
|
|
62
|
+
// is exactly what the containment tree already asserts. Absolute pixels
|
|
63
|
+
// stay recoverable from the ScreenCapture's pixelWidth / pixelHeight.
|
|
64
|
+
attribute def RegionBounds {
|
|
65
|
+
attribute x : Real;
|
|
66
|
+
attribute y : Real;
|
|
67
|
+
attribute width : Real;
|
|
68
|
+
attribute height : Real;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
// How an element appears relative to its parent and siblings. It records
|
|
72
|
+
// design intent a bare rectangle cannot: an element whose box escapes its
|
|
73
|
+
// parent and covers its siblings is a defect if it is `inline` and correct
|
|
74
|
+
// if it is `overlay`, and the geometry alone does not say which. A
|
|
75
|
+
// renderer reads it to decide what to clip and what to draw on top; a
|
|
76
|
+
// reviewer reads it to know whether an overlap is intended.
|
|
77
|
+
enum def UIDisclosureKind {
|
|
78
|
+
enum inline; // laid out inside the parent, sharing space with siblings
|
|
79
|
+
enum overlay; // dropdown, popover, modal — drawn OVER parent and siblings
|
|
80
|
+
enum transient; // tooltip, toast — appears over everything, then withdraws
|
|
81
|
+
enum scrolled; // inside the parent, but beyond its viewport until scrolled
|
|
82
|
+
enum conditional; // rendered only while a stated condition holds
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
// How the element's bounds were obtained. Automatic boundary detection
|
|
86
|
+
// PROPOSES; a reviewer DISPOSES. In a regulated review the reader must be
|
|
87
|
+
// able to see which boxes a human confirmed and which the tool guessed, so
|
|
88
|
+
// that provenance is model content and not a workbench-only flag.
|
|
89
|
+
enum def BoundsDetectionKind {
|
|
90
|
+
enum manual;
|
|
91
|
+
enum automatic;
|
|
92
|
+
enum automaticConfirmed;
|
|
93
|
+
enum imported;
|
|
33
94
|
}
|
|
34
95
|
|
|
35
96
|
// The interaction intents a step or action can carry (§18).
|
|
@@ -54,20 +115,73 @@ package memo_architecture_implementation_ui {
|
|
|
54
115
|
attribute uiTechnology : String;
|
|
55
116
|
}
|
|
56
117
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
118
|
+
// What a rendered control and a physical one genuinely share: a label, an
|
|
119
|
+
// accessibility story, and — when they annunciate — an alarm character.
|
|
120
|
+
// The base exists so that the §18 traceability relations can type against
|
|
121
|
+
// "something the user interacts with" rather than against software
|
|
122
|
+
// specifically. Without it a use error on a knob would be unmodellable,
|
|
123
|
+
// because ErrorAtElement would only accept a UIElement.
|
|
124
|
+
abstract part def InteractionElement specializes ArchitectureElement {
|
|
125
|
+
attribute labelText : String;
|
|
126
|
+
attribute accessibilitySummary : String;
|
|
127
|
+
// alarm annunciation (optional; IEC 60601-1-8)
|
|
128
|
+
attribute alarmPriority : NotificationPriorityKind[0..1];
|
|
129
|
+
attribute annunciationModality : String;
|
|
130
|
+
attribute silenceable : Boolean;
|
|
60
131
|
}
|
|
61
132
|
|
|
62
|
-
|
|
63
|
-
//
|
|
64
|
-
//
|
|
65
|
-
//
|
|
66
|
-
//
|
|
67
|
-
|
|
133
|
+
|
|
134
|
+
// One UIElement — the single UI part type. The widget form — holding
|
|
135
|
+
// (screen/panel/dialog), acting (button/knob/slider), presenting
|
|
136
|
+
// (field/table/chart), physical (knob/switch/indicatorLamp/haptic), or
|
|
137
|
+
// decorative — is the `formKind` enum, not a subclass.
|
|
138
|
+
// Input/output/navigation/alarm/display/physical-control descriptors are
|
|
139
|
+
// optional attributes; a physical control's mechanical realization is a
|
|
140
|
+
// hardware part linked by ControlImplementedBy.
|
|
141
|
+
//
|
|
142
|
+
// Composition is the ordinary `Composes` relation, so a screen's element
|
|
143
|
+
// tree is an ordinary part tree: CR-ONT-001 already forbids cycles in it,
|
|
144
|
+
// impact analysis already walks it, and requirements, functions, use
|
|
145
|
+
// errors, and risk controls already trace to it. Screen layout adds four
|
|
146
|
+
// numbers to that tree — it does not add a tree.
|
|
147
|
+
//
|
|
148
|
+
// A UIElement IS a structural SOFTWARE ITEM (IEC 62304 §3.25) and
|
|
149
|
+
// specializes SoftwareElement, inheriting safetyClass and complexity, so the
|
|
150
|
+
// interface is classified and decomposed like the software it is.
|
|
151
|
+
//
|
|
152
|
+
// It specializes SoftwareElement and NOT SoftwareModule: the module view is
|
|
153
|
+
// CODE, and a screen is not a source module. Runtime processes are
|
|
154
|
+
// SoftwareComponent, code is SoftwareModule, and the UI is a third view of
|
|
155
|
+
// the same software — a sibling of those, not a kind of either.
|
|
156
|
+
part def UIElement specializes SoftwareElement, InteractionElement {
|
|
68
157
|
attribute formKind : UIElementFormKind;
|
|
69
|
-
|
|
70
|
-
|
|
158
|
+
// ── screen layout (optional; set for elements that are laid out) ──
|
|
159
|
+
// Bounds are relative to the parent element in the Composes tree; a
|
|
160
|
+
// root screen's bounds are the full frame.
|
|
161
|
+
attribute bounds : RegionBounds[0..1];
|
|
162
|
+
attribute disclosureKind : UIDisclosureKind[0..1];
|
|
163
|
+
// The condition under which the element renders; meaningful when
|
|
164
|
+
// disclosureKind is `conditional`.
|
|
165
|
+
attribute visibilityCondition : String;
|
|
166
|
+
// Boundary colour as a CSS colour token. Presentation, but modelled: a
|
|
167
|
+
// review print, an exported figure, and the workbench must agree on
|
|
168
|
+
// which box is which, and a colour assigned only in a tool session does
|
|
169
|
+
// not survive the export.
|
|
170
|
+
attribute boundaryColor : String;
|
|
171
|
+
// Capture-relative fill transparency for region review overlays. A
|
|
172
|
+
// modelled value keeps interactive review and exported figures aligned.
|
|
173
|
+
attribute boundaryOpacity : Real[0..1];
|
|
174
|
+
// Stroke width of the same box, in pixels. Colour and opacity are
|
|
175
|
+
// modelled so a review print, an exported figure, and the workbench
|
|
176
|
+
// agree on which box is which; a width chosen per renderer breaks that
|
|
177
|
+
// agreement for exactly the same reason.
|
|
178
|
+
attribute boundaryWidth : Real[0..1];
|
|
179
|
+
attribute detectionMethod : BoundsDetectionKind[0..1];
|
|
180
|
+
attribute detectionConfidence : Real[0..1];
|
|
181
|
+
attribute confirmedBy : String;
|
|
182
|
+
attribute confirmedAt : String;
|
|
183
|
+
// ── role of a holding form (optional) ──
|
|
184
|
+
attribute navigationRole : String;
|
|
71
185
|
// input descriptors (optional)
|
|
72
186
|
attribute inputConstraints : String;
|
|
73
187
|
attribute defaultValue : String;
|
|
@@ -75,15 +189,72 @@ package memo_architecture_implementation_ui {
|
|
|
75
189
|
attribute updateRate : String;
|
|
76
190
|
attribute unitsDisplayed : String;
|
|
77
191
|
attribute informationContent : String;
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
// ─── Physical operator interface ─────────────────────────────
|
|
195
|
+
// The hardware the user actually touches and reads. IEC 60601-1 marks
|
|
196
|
+
// "controls and instruments" and defines OPERATOR; this is that surface,
|
|
197
|
+
// covering both directions — what the operator actuates and what the
|
|
198
|
+
// device shows back — because a front panel is one interface, not two.
|
|
199
|
+
//
|
|
200
|
+
// It is a PhysicalComponent, so it inherits part number, material, and the
|
|
201
|
+
// ISO 10993-1 patient-contact characterization that a touched surface
|
|
202
|
+
// needs and that software can never have. That inheritance is the reason
|
|
203
|
+
// these forms had to leave UIElement: as UIElementFormKind members they
|
|
204
|
+
// were software items with no way to state any of it.
|
|
205
|
+
enum def OperatorInterfaceFormKind {
|
|
206
|
+
// ── actuated by the operator ──
|
|
207
|
+
enum knob;
|
|
208
|
+
enum dial;
|
|
209
|
+
enum pushButton;
|
|
210
|
+
enum toggleSwitch;
|
|
211
|
+
enum rockerSwitch;
|
|
212
|
+
enum lever;
|
|
213
|
+
enum physicalSlider;
|
|
214
|
+
enum keypad;
|
|
215
|
+
enum footPedal;
|
|
216
|
+
enum touchSurface;
|
|
217
|
+
// ── presented to the operator ──
|
|
218
|
+
enum indicatorLamp;
|
|
219
|
+
enum gauge;
|
|
220
|
+
enum audibleIndicator;
|
|
221
|
+
enum hapticIndicator;
|
|
222
|
+
enum printedMarking;
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
part def OperatorInterfaceElement specializes PhysicalComponent, InteractionElement {
|
|
226
|
+
attribute formKind : OperatorInterfaceFormKind;
|
|
227
|
+
// actuation (optional; set for actuated forms)
|
|
85
228
|
attribute actuationForce : String;
|
|
229
|
+
attribute actuationTravel : String;
|
|
86
230
|
attribute guardedAgainstInadvertentActuation : Boolean;
|
|
231
|
+
attribute tactileFeedback : String;
|
|
232
|
+
// presentation (optional; set for presented forms)
|
|
233
|
+
attribute legendText : String;
|
|
234
|
+
attribute luminanceOrVolume : String;
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
// ─── Captured evidence ───────────────────────────────────────
|
|
238
|
+
// One image of one screen. MemoEvidence, not ArchitectureElement: it
|
|
239
|
+
// records what a specific build actually displayed at a specific time,
|
|
240
|
+
// which is the provenance a design review or a usability engineering file
|
|
241
|
+
// needs before it can rely on the picture. The screen it depicts is an
|
|
242
|
+
// ordinary UIElement with formKind = screen.
|
|
243
|
+
part def ScreenCapture specializes MemoEvidence {
|
|
244
|
+
attribute imageUri : String;
|
|
245
|
+
// Content hash of the image bytes. The screenshot is the evidence, so
|
|
246
|
+
// it must be tamper-evident: a DHF reference to a mutable file is not
|
|
247
|
+
// a reference to anything.
|
|
248
|
+
attribute imageHash : String;
|
|
249
|
+
attribute pixelWidth : Integer;
|
|
250
|
+
attribute pixelHeight : Integer;
|
|
251
|
+
attribute captureDate : String;
|
|
252
|
+
// Which build produced this rendering. A screenshot without a build is
|
|
253
|
+
// undated design intent, not evidence of the device.
|
|
254
|
+
attribute capturedBuild : String;
|
|
255
|
+
// Device, viewport, locale, theme, user role — everything that changes
|
|
256
|
+
// what the screen shows without changing the software.
|
|
257
|
+
attribute captureContext : String;
|
|
87
258
|
}
|
|
88
259
|
|
|
89
260
|
// UI state is presentation state — distinct from system/device state.
|
|
@@ -103,57 +274,109 @@ package memo_architecture_implementation_ui {
|
|
|
103
274
|
}
|
|
104
275
|
|
|
105
276
|
// A reusable dialogue structure through the UI; a selected path through
|
|
106
|
-
// it is
|
|
277
|
+
// it is a MemoScenario with scenarioKind `ui`.
|
|
107
278
|
action def InteractionFlow specializes MemoAction {
|
|
108
279
|
attribute entryPoint : String;
|
|
109
280
|
attribute exitPoint : String;
|
|
110
281
|
}
|
|
111
282
|
|
|
112
|
-
part def UIScenario specializes MemoScenario {
|
|
113
|
-
ref parentFlow : InteractionFlow[0..1];
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
connection def UITransition :> MemoRelationship {
|
|
117
|
-
attribute triggeringEvent : String;
|
|
118
|
-
attribute guardCondition : String;
|
|
119
|
-
end sourceState : UIState;
|
|
120
|
-
end targetState : UIState;
|
|
121
|
-
}
|
|
122
283
|
connection def DataBinding :> MemoRelationship {
|
|
123
284
|
attribute bindingExpression : String;
|
|
124
285
|
attribute refreshPolicy : String;
|
|
125
|
-
end boundElement :
|
|
126
|
-
end dataSource :
|
|
286
|
+
end boundElement : InteractionElement :>> source;
|
|
287
|
+
end dataSource : MemoItem :>> target;
|
|
288
|
+
}
|
|
289
|
+
abstract connection dataBindingLinks : DataBinding[*];
|
|
290
|
+
metadata def <dataBinding> DataBindingMetadata :> SemanticMetadata {
|
|
291
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
292
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
293
|
+
:>> baseType = dataBindingLinks meta SysML::Usage;
|
|
127
294
|
}
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
295
|
+
// `PresentsState` had zero usages anywhere in the tree (R10-S6). Its
|
|
296
|
+
// audited native form, `exhibit state`, does not actually fit: `UIState`
|
|
297
|
+
// is a `part def` with plain string attributes, not a `state def`, and
|
|
298
|
+
// SysIDE rejects `exhibit` referencing anything that does not conform to
|
|
299
|
+
// `States::StateAction` ("An exhibit state must reference another
|
|
300
|
+
// state"). Free deletion rather than a migration — nothing referenced
|
|
301
|
+
// it, so nothing to preserve. If `UIState` is ever restructured onto a
|
|
302
|
+
// real state machine, `exhibit state` becomes available then.
|
|
303
|
+
|
|
304
|
+
// ── Screen layout relations ──────────────────────────────────
|
|
305
|
+
// Which modelled screen an image is a rendering of.
|
|
306
|
+
connection def CapturesScreen :> MemoRelationship {
|
|
307
|
+
end capture : ScreenCapture :>> source;
|
|
308
|
+
end screen : UIElement :>> target;
|
|
309
|
+
}
|
|
310
|
+
abstract connection capturesScreenLinks : CapturesScreen[*];
|
|
311
|
+
metadata def <capturesScreen> CapturesScreenMetadata :> SemanticMetadata {
|
|
312
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
313
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
314
|
+
:>> baseType = capturesScreenLinks meta SysML::Usage;
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
// Activating this element opens another screen. This is NAVIGATION, not
|
|
318
|
+
// containment — the opened screen is not laid out inside the element, so
|
|
319
|
+
// it is not a Composes child and the geometric rules do not relate them.
|
|
320
|
+
// Conflating the two was the mistake that made "clicking takes you to a
|
|
321
|
+
// child view" look like spatial nesting; it is a separate frame reached
|
|
322
|
+
// from here, and only this relation says so.
|
|
323
|
+
connection def NavigatesTo :> MemoRelationship {
|
|
324
|
+
attribute triggerGesture : String;
|
|
325
|
+
end sourceElement : UIElement :>> source;
|
|
326
|
+
end targetScreen : UIElement :>> target;
|
|
327
|
+
}
|
|
328
|
+
abstract connection navigatesToLinks : NavigatesTo[*];
|
|
329
|
+
metadata def <navigatesTo> NavigatesToMetadata :> SemanticMetadata {
|
|
330
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
331
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
332
|
+
:>> baseType = navigatesToLinks meta SysML::Usage;
|
|
131
333
|
}
|
|
132
334
|
|
|
133
335
|
// ── §18 traceability ─────────────────────────────────────────
|
|
134
336
|
connection def ElementTriggersAction :> MemoRelationship {
|
|
135
|
-
end element :
|
|
136
|
-
end triggeredAction : UIAction;
|
|
337
|
+
end element : InteractionElement :>> source;
|
|
338
|
+
end triggeredAction : UIAction :>> target;
|
|
137
339
|
}
|
|
138
|
-
connection
|
|
139
|
-
|
|
140
|
-
|
|
340
|
+
abstract connection elementTriggersActionLinks : ElementTriggersAction[*];
|
|
341
|
+
metadata def <elementTriggersAction> ElementTriggersActionMetadata :> SemanticMetadata {
|
|
342
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
343
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
344
|
+
:>> baseType = elementTriggersActionLinks meta SysML::Usage;
|
|
141
345
|
}
|
|
346
|
+
// `ActionInvokesFunction` is native `perform` (R10-S6): write
|
|
347
|
+
// `perform <systemFunction>;` inside the `UIAction` usage instead.
|
|
142
348
|
connection def FlowServesUseCase :> MemoRelationship {
|
|
143
|
-
end interactionFlow : InteractionFlow;
|
|
144
|
-
end useCase : UseCase;
|
|
349
|
+
end interactionFlow : InteractionFlow :>> source;
|
|
350
|
+
end useCase : UseCase :>> target;
|
|
351
|
+
}
|
|
352
|
+
abstract connection flowServesUseCaseLinks : FlowServesUseCase[*];
|
|
353
|
+
metadata def <flowServesUseCase> FlowServesUseCaseMetadata :> SemanticMetadata {
|
|
354
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
355
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
356
|
+
:>> baseType = flowServesUseCaseLinks meta SysML::Usage;
|
|
145
357
|
}
|
|
146
|
-
//
|
|
147
|
-
//
|
|
148
|
-
// completing the OperativeScenario → FunctionalScenario → UIScenario chain.
|
|
358
|
+
// A UI scenario realizes a functional scenario one layer up: each is a
|
|
359
|
+
// MemoScenario selected by scenarioKind rather than a separate definition.
|
|
149
360
|
connection def ErrorAtElement :> MemoRelationship {
|
|
150
|
-
end useError : UseError;
|
|
151
|
-
end element :
|
|
361
|
+
end useError : UseError :>> source;
|
|
362
|
+
end element : InteractionElement :>> target;
|
|
363
|
+
}
|
|
364
|
+
abstract connection errorAtElementLinks : ErrorAtElement[*];
|
|
365
|
+
metadata def <errorAtElement> ErrorAtElementMetadata :> SemanticMetadata {
|
|
366
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
367
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
368
|
+
:>> baseType = errorAtElementLinks meta SysML::Usage;
|
|
152
369
|
}
|
|
153
370
|
// A risk control implemented by a UI element or by task design
|
|
154
371
|
// (confirmation dialog, lockout, guarded control).
|
|
155
372
|
connection def ControlImplementedBy :> MemoRelationship {
|
|
156
|
-
end riskControl :
|
|
157
|
-
end implementingElement : ArchitectureElement;
|
|
373
|
+
end riskControl : RiskControlMeasure :>> source;
|
|
374
|
+
end implementingElement : ArchitectureElement :>> target;
|
|
375
|
+
}
|
|
376
|
+
abstract connection controlImplementedByLinks : ControlImplementedBy[*];
|
|
377
|
+
metadata def <controlImplementedBy> ControlImplementedByMetadata :> SemanticMetadata {
|
|
378
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
379
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
380
|
+
:>> baseType = controlImplementedByLinks meta SysML::Usage;
|
|
158
381
|
}
|
|
159
382
|
}
|
|
@@ -44,12 +44,24 @@ package memo_architecture_logical_interfaces {
|
|
|
44
44
|
attribute apiStyle : String;
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
+
// Software interaction contracts specialize the native MEMO interface
|
|
48
|
+
// family. Concrete technologies add their protocol roles and message
|
|
49
|
+
// flows; ports remain the endpoints that components actually own.
|
|
50
|
+
abstract interface def SoftwareInterface specializes Interface {
|
|
51
|
+
// `default`, not `=`. A bare `=` in a definition BINDS the value, and
|
|
52
|
+
// a binding cannot be overridden by a usage — which asserted that
|
|
53
|
+
// every software interface is bidirectional and made a directional one
|
|
54
|
+
// inexpressible. A ROS topic publisher → subscriber is the obvious
|
|
55
|
+
// counterexample, and it is the common case rather than an exotic one.
|
|
56
|
+
attribute :>> direction default DirectionKind::inputOutput;
|
|
57
|
+
}
|
|
58
|
+
|
|
47
59
|
// A typed thing exchanged at a boundary. Concrete items such as
|
|
48
60
|
// AlarmSignal and FlowCommand specialize this type; they are neither
|
|
49
61
|
// functions nor generic action-flow notation.
|
|
50
62
|
// The kind of item is given by itemKind (data / command / signal / …);
|
|
51
63
|
// the control-specific fields below apply only when itemKind = command.
|
|
52
|
-
item def InterfaceItem specializes
|
|
64
|
+
item def InterfaceItem specializes MemoItem {
|
|
53
65
|
attribute itemKind : InterfaceItemKind;
|
|
54
66
|
attribute confidentialityClass : String;
|
|
55
67
|
attribute integrityClass : String;
|
|
@@ -67,8 +79,7 @@ package memo_architecture_logical_interfaces {
|
|
|
67
79
|
attribute interfaceKind : InterfaceKind;
|
|
68
80
|
attribute protocolSemantics : String;
|
|
69
81
|
}
|
|
70
|
-
port def DataPort {
|
|
71
|
-
attribute direction : DirectionKind;
|
|
82
|
+
port def DataPort specializes MemoPort {
|
|
72
83
|
attribute interfaceType : String;
|
|
73
84
|
}
|
|
74
85
|
port def SensorPort specializes DataPort { attribute sensorDomain : String; }
|
|
@@ -76,14 +87,45 @@ package memo_architecture_logical_interfaces {
|
|
|
76
87
|
|
|
77
88
|
part def ComponentExchange specializes ArchitectureElement {
|
|
78
89
|
attribute exchangeKind : FlowKind;
|
|
79
|
-
//
|
|
80
|
-
//
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
//
|
|
84
|
-
//
|
|
85
|
-
|
|
86
|
-
|
|
90
|
+
// Metaclass-neutral endpoints. CR-ONT-002 used to read: "Typed
|
|
91
|
+
// endpoints. A component or a boundary port may terminate an exchange,
|
|
92
|
+
// so the ends are MemoPart-typed." That reasoning was circular —
|
|
93
|
+
// PhysicalPort and SoftwarePort are part defs precisely SO THAT they
|
|
94
|
+
// could satisfy this typing, and the typing was justified by their
|
|
95
|
+
// being parts. Track A0 cut the circle at the ends, which is the side
|
|
96
|
+
// that has to move first: A1 turns those two into `port def`s, and a
|
|
97
|
+
// port cannot specialize a part-based type.
|
|
98
|
+
//
|
|
99
|
+
// The constraint the type was carrying — an endpoint is a component or
|
|
100
|
+
// a boundary port, never a requirement or a document — is now stated
|
|
101
|
+
// where it can be checked across metaclasses, as CR-ONT-072/073 in
|
|
102
|
+
// src/rules/ontology/ontology_invariants.sysml.
|
|
103
|
+
//
|
|
104
|
+
// `Base::Anything` rather than no type at all — the only place in this
|
|
105
|
+
// change that reaches for it. The 36 untyped ends in
|
|
106
|
+
// memo_core_relationships are `end` declarations, and an untyped `end`
|
|
107
|
+
// is established practice; an untyped `ref` with a multiplicity is not
|
|
108
|
+
// something MEMO's own grammar accepts (`Expecting token of type ';'
|
|
109
|
+
// but found '['`), and the grammar is not in this session's scope.
|
|
110
|
+
// `Base::Anything` is what the standard's `Allocations::Allocation`
|
|
111
|
+
// types its own ends with, so it is the conforming spelling of "any
|
|
112
|
+
// element", not a workaround.
|
|
113
|
+
ref sourceEndpoint : Base::Anything[0..1];
|
|
114
|
+
ref targetEndpoint : Base::Anything[0..1];
|
|
115
|
+
// `sourcePortPath` / `targetPortPath` are GONE. They were String
|
|
116
|
+
// "descriptive port paths (e.g. TLM.TLM_MODE_OUT) for AADL round-trips;
|
|
117
|
+
// labels only — never references", which is §13.3's string
|
|
118
|
+
// pseudo-reference: nothing can follow a string to an element, so
|
|
119
|
+
// anything built on them produced no traceability.
|
|
120
|
+
//
|
|
121
|
+
// Measured across the 92 sites in the GPCA example before removing
|
|
122
|
+
// them: 23 merely restated the endpoint the ref already named (15 gave
|
|
123
|
+
// the port's own display name, 8 were prose like "HW-001:
|
|
124
|
+
// GPCA_HW_Sensors"), and the other 69 named a port ON the endpoint
|
|
125
|
+
// component, resolving to 49 distinct AADL features. Those 49 are
|
|
126
|
+
// declared as real ports now and the endpoint refs point straight at
|
|
127
|
+
// them, which is what Track A1 making SoftwarePort a `port def` is for.
|
|
128
|
+
// The AADL round-trip is better served by an element than by its name.
|
|
87
129
|
ref allocatedExchanges : FunctionalExchange[0..*];
|
|
88
130
|
attribute direction : DirectionKind;
|
|
89
131
|
// Connection timing discipline from the source architecture
|
|
@@ -94,9 +136,18 @@ package memo_architecture_logical_interfaces {
|
|
|
94
136
|
// Boundary data port of a software system (e.g. an AADL top-level
|
|
95
137
|
// data port), modeled as a first-class element so exchanges can
|
|
96
138
|
// reference it and views can render the system boundary.
|
|
97
|
-
|
|
139
|
+
//
|
|
140
|
+
// A `port def` (Track A1) — see PhysicalPort in
|
|
141
|
+
// memo_architecture_realization_physical for why the specialization moved
|
|
142
|
+
// off InterfaceElement, why `direction` is native now (Track A2), and why
|
|
143
|
+
// `portKind` is duplicated on both ports instead of hoisted onto a base.
|
|
144
|
+
port def SoftwarePort specializes MemoPort {
|
|
98
145
|
attribute portKind : InterfaceKind;
|
|
99
|
-
|
|
146
|
+
// AADL port category (plan C2). Sampled vs. queued delivery decides
|
|
147
|
+
// whether a missed deadline drops a sample or grows a queue, which the
|
|
148
|
+
// timing analysis and the safety case both need and neither could ask
|
|
149
|
+
// the model for. `portKind` says what crosses; this says how.
|
|
150
|
+
attribute portCategory : PortCategoryKind;
|
|
100
151
|
attribute dataTypeName : String;
|
|
101
152
|
}
|
|
102
153
|
}
|