@memoarchitect/ontology 0.6.4 → 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/analysis/Samples/01-model-overview.ipynb +148 -0
- package/examples/gpca-pump/analysis/Samples/02-architecture-hotspots.ipynb +301 -0
- package/examples/gpca-pump/analysis/Samples/03-model-quality.ipynb +229 -0
- package/examples/gpca-pump/analysis/Samples/04-change-impact-explorer.ipynb +200 -0
- package/examples/gpca-pump/analysis/Samples/05-model-charts.ipynb +188 -0
- package/examples/gpca-pump/analysis/Samples/06-ownership-graph.ipynb +173 -0
- package/examples/gpca-pump/analysis/Samples/07-model-inventory-table.ipynb +180 -0
- package/examples/gpca-pump/analysis/Samples/README.md +37 -0
- 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 +22 -12
- package/examples/gpca-pump/model/catalog/gpca_behavior_actions.sysml +2 -2
- package/examples/gpca-pump/model/catalog/gpca_behavior_modes.sysml +8 -2
- 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 +41 -11
- 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 +10 -1
- package/examples/gpca-pump/model/catalog/gpca_system.sysml +34 -30
- package/examples/gpca-pump/model/catalog/gpca_trace.sysml +59 -31
- 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 +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 +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 +1 -3
- 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 +38 -68
- 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 +6 -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
|
@@ -67,8 +67,7 @@ package memo_architecture_logical_interfaces {
|
|
|
67
67
|
attribute interfaceKind : InterfaceKind;
|
|
68
68
|
attribute protocolSemantics : String;
|
|
69
69
|
}
|
|
70
|
-
port def DataPort {
|
|
71
|
-
attribute direction : DirectionKind;
|
|
70
|
+
port def DataPort specializes MemoPort {
|
|
72
71
|
attribute interfaceType : String;
|
|
73
72
|
}
|
|
74
73
|
port def SensorPort specializes DataPort { attribute sensorDomain : String; }
|
|
@@ -37,13 +37,15 @@ package memo_architecture_logical_structure {
|
|
|
37
37
|
}
|
|
38
38
|
|
|
39
39
|
// The role a logical component plays. Was a subclass branch
|
|
40
|
-
// (
|
|
41
|
-
//
|
|
42
|
-
//
|
|
43
|
-
//
|
|
40
|
+
// (LogicalChannel / LogicalDataStore / LogicalControlElement /
|
|
41
|
+
// LogicalUserInterface / LogicalExternalSystem); now one attribute, because
|
|
42
|
+
// those all share the same relationships and differed only by a couple of
|
|
43
|
+
// descriptive attributes.
|
|
44
|
+
//
|
|
45
|
+
// System / Subsystem / SystemOfSystems are types below, not values here:
|
|
46
|
+
// each admits a different set of children, and a value on an attribute
|
|
47
|
+
// cannot carry containment legality.
|
|
44
48
|
enum def ComponentRoleKind {
|
|
45
|
-
enum system;
|
|
46
|
-
enum subsystem;
|
|
47
49
|
enum channel;
|
|
48
50
|
enum dataStore;
|
|
49
51
|
enum controlElement;
|
|
@@ -52,17 +54,73 @@ package memo_architecture_logical_structure {
|
|
|
52
54
|
enum generic;
|
|
53
55
|
}
|
|
54
56
|
|
|
55
|
-
//
|
|
56
|
-
//
|
|
57
|
-
//
|
|
58
|
-
//
|
|
57
|
+
// The discipline a logical block is realized in. Orthogonal to
|
|
58
|
+
// `componentRole`: a subsystem may be software, a system may be hardware,
|
|
59
|
+
// and a block whose realization is not yet decided stays `logical`.
|
|
60
|
+
//
|
|
61
|
+
// This does NOT relocate the element. The block remains logical-layer —
|
|
62
|
+
// MEMO encodes layer by owning package, and this one is
|
|
63
|
+
// memo_architecture_logical_structure. `systemType` records what the block
|
|
64
|
+
// WILL BE realized in, which is a logical-architecture decision made
|
|
65
|
+
// before any software or hardware element exists. Once those elements do
|
|
66
|
+
// exist, AllocatedTo carries the actual allocation and this attribute
|
|
67
|
+
// stays as the stated intent.
|
|
68
|
+
enum def SystemTypeKind {
|
|
69
|
+
enum logical;
|
|
70
|
+
enum software;
|
|
71
|
+
enum hardware;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
// ─── System hierarchy ────────────────────────────────────────
|
|
75
|
+
// Three types rather than three role values, because they differ in what
|
|
76
|
+
// they may CONTAIN — and containment legality cannot live on an attribute.
|
|
77
|
+
//
|
|
78
|
+
// The allowed children are declared as typed part features, which is how
|
|
79
|
+
// SysML v2 already states "what may be contained". No new relationship is
|
|
80
|
+
// introduced: `Composes` remains the single containment relation for
|
|
81
|
+
// instances, exactly as everywhere else in MEMO. The features below say
|
|
82
|
+
// which types are admissible; Composes records the actual links.
|
|
83
|
+
|
|
84
|
+
part def SystemOfSystems specializes LogicalComponent {
|
|
85
|
+
// Constituent systems are independently operated and independently
|
|
86
|
+
// managed, collaborating for a capability none delivers alone
|
|
87
|
+
// (ISO/IEC/IEEE 21841). A connected pump talking to a hospital
|
|
88
|
+
// infusion-management server is one; a pump and its own pole-mounted
|
|
89
|
+
// battery are not — which is why ownership is recorded here and is the
|
|
90
|
+
// attribute that distinguishes an SoS from a merely large system.
|
|
91
|
+
attribute systemBoundaryDescription : String;
|
|
92
|
+
attribute constituentOwnership : String;
|
|
93
|
+
// A constituent may itself coordinate systems-of-systems, or it may be
|
|
94
|
+
// an independently operated system. Subsystems and components remain
|
|
95
|
+
// inside one of those constituent systems.
|
|
96
|
+
part constituentSystemOfSystems : SystemOfSystems[0..*];
|
|
97
|
+
part constituentSystem : System[0..*];
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
part def System specializes LogicalComponent {
|
|
101
|
+
attribute systemBoundaryDescription : String;
|
|
102
|
+
part system : System[0..*];
|
|
103
|
+
part subsystem : Subsystem[0..*];
|
|
104
|
+
part component : LogicalComponent[0..*];
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
part def Subsystem specializes LogicalComponent {
|
|
108
|
+
attribute systemBoundaryDescription : String;
|
|
109
|
+
part subsystem : Subsystem[0..*];
|
|
110
|
+
part component : LogicalComponent[0..*];
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
// One logical component. `componentRole` selects what it is, `systemType`
|
|
114
|
+
// what it is realized in; the role-specific attributes below are all
|
|
115
|
+
// optional so a component carries only the ones its role needs. A channel
|
|
116
|
+
// claiming independence must still be linked by IndependentOf with its
|
|
117
|
+
// basis stated.
|
|
59
118
|
part def LogicalComponent specializes ArchitectureElement {
|
|
60
119
|
attribute componentRole : ComponentRoleKind;
|
|
120
|
+
attribute systemType : SystemTypeKind[0..1];
|
|
61
121
|
attribute responsibility : String;
|
|
62
122
|
attribute decompositionLevel : String;
|
|
63
123
|
attribute safetyPartition : String;
|
|
64
|
-
// system / subsystem
|
|
65
|
-
attribute systemBoundaryDescription : String;
|
|
66
124
|
// channel (safety role + diversity)
|
|
67
125
|
attribute channelRole : ChannelRoleKind[0..1];
|
|
68
126
|
attribute diversityBasis : String;
|
|
@@ -79,9 +137,7 @@ package memo_architecture_logical_structure {
|
|
|
79
137
|
}
|
|
80
138
|
|
|
81
139
|
// Boundary features and contracts.
|
|
82
|
-
port def LogicalPort specializes MemoPort
|
|
83
|
-
attribute contentKind : FlowContentKind;
|
|
84
|
-
}
|
|
140
|
+
port def LogicalPort specializes MemoPort;
|
|
85
141
|
interface def LogicalInterface specializes MemoInterface {
|
|
86
142
|
attribute contentKind : FlowContentKind;
|
|
87
143
|
attribute interactionPattern : String;
|
|
@@ -50,7 +50,6 @@ package memo_architecture_operational_activities {
|
|
|
50
50
|
// An elementary perceptual/cognitive/motor step within a user task
|
|
51
51
|
// (task analysis granularity: grasp needle, drive needle, tie knot …).
|
|
52
52
|
action def TaskStep specializes MemoAction {
|
|
53
|
-
attribute stepOrder : Integer;
|
|
54
53
|
attribute perceptualCue : String;
|
|
55
54
|
attribute feedbackExpected : String;
|
|
56
55
|
}
|
|
@@ -51,7 +51,7 @@ package memo_architecture_operational_scenarios {
|
|
|
51
51
|
// or invariants differ (OperativeScenario here; FunctionalScenario in
|
|
52
52
|
// memo_functions; UIScenario in memo_architecture_implementation_ui;
|
|
53
53
|
// VerificationScenario / ThreatScenario in assurance packages).
|
|
54
|
-
abstract
|
|
54
|
+
abstract action def MemoScenario specializes MemoAction {
|
|
55
55
|
attribute variantKind : ScenarioVariantKind;
|
|
56
56
|
attribute operationalCondition : OperationalConditionKind;
|
|
57
57
|
attribute scenarioPurpose : ScenarioPurposeKind[0..*];
|
|
@@ -76,7 +76,7 @@ package memo_architecture_operational_scenarios {
|
|
|
76
76
|
// by its own architecture layer and linked by typed realization
|
|
77
77
|
// relationships — never by copying the path. Workflow stays operational;
|
|
78
78
|
// only the scenario is layered.
|
|
79
|
-
|
|
79
|
+
action def OperativeScenario specializes MemoScenario {
|
|
80
80
|
ref parentWorkflow : OperationalWorkflow[0..1];
|
|
81
81
|
ref parentUseCase : UseCase[0..1];
|
|
82
82
|
// Each scenario owns the operational activity/action flow for its
|
|
@@ -43,7 +43,6 @@ package memo_architecture_operational_workflows {
|
|
|
43
43
|
// A step in a workflow wraps an operational activity or user task by
|
|
44
44
|
// reference — the same activity may appear in several workflows.
|
|
45
45
|
action def WorkflowStep specializes MemoAction {
|
|
46
|
-
attribute stepOrder : Integer;
|
|
47
46
|
attribute entryCondition : String;
|
|
48
47
|
attribute exitCondition : String;
|
|
49
48
|
ref performedActivity : OperationalActivity[0..1];
|
|
@@ -97,11 +96,6 @@ package memo_architecture_operational_workflows {
|
|
|
97
96
|
end supporter;
|
|
98
97
|
end supported;
|
|
99
98
|
}
|
|
100
|
-
connection def StepPrecedes :> MemoRelationship {
|
|
101
|
-
attribute guardCondition : String;
|
|
102
|
-
end predecessor : WorkflowStep;
|
|
103
|
-
end successor : WorkflowStep;
|
|
104
|
-
}
|
|
105
99
|
connection def RequiresResource :> MemoRelationship {
|
|
106
100
|
end workflow : OperationalWorkflow;
|
|
107
101
|
end resource : WorkflowResource;
|
|
@@ -1,15 +1,17 @@
|
|
|
1
|
-
package
|
|
1
|
+
package memo_artifacts_configuration_management {
|
|
2
2
|
private import ScalarValues::*;
|
|
3
3
|
|
|
4
4
|
private import memo_core_common::*;
|
|
5
5
|
private import memo_core_enumerations::*;
|
|
6
|
-
|
|
6
|
+
|
|
7
|
+
part def ChangeRequest :> MemoPart {
|
|
7
8
|
attribute changeType : ChangeTypeKind;
|
|
8
9
|
attribute impactAssessment : String;
|
|
9
10
|
attribute approvalStatus : String;
|
|
10
11
|
attribute affectedBaseline : String;
|
|
11
12
|
}
|
|
12
|
-
|
|
13
|
+
|
|
14
|
+
part def ConfigurationItem :> MemoPart {
|
|
13
15
|
attribute version : String;
|
|
14
16
|
attribute baseline : String;
|
|
15
17
|
attribute controlLevel : String;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
package memo_artifacts_core {
|
|
2
|
+
private import ScalarValues::*;
|
|
3
|
+
|
|
4
|
+
private import memo_core_common::*;
|
|
5
|
+
private import memo_core_enumerations::*;
|
|
6
|
+
|
|
7
|
+
item def ControlledArtifact :> MemoPart {
|
|
8
|
+
attribute version : String;
|
|
9
|
+
attribute artifactKind : ArtifactKind;
|
|
10
|
+
attribute owner : String;
|
|
11
|
+
attribute approvalStatus : String;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
part def ModelOwnedArtifact :> ControlledArtifact {
|
|
15
|
+
attribute uri : String;
|
|
16
|
+
attribute mediaType : String;
|
|
17
|
+
attribute contentHash : String;
|
|
18
|
+
attribute artifactVersion : String[0..1];
|
|
19
|
+
attribute authoredLanguage : String[0..1];
|
|
20
|
+
attribute executionEnvironment : String[0..1];
|
|
21
|
+
attribute generated : Boolean;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
part def ADRArtifact :> ModelOwnedArtifact {
|
|
25
|
+
attribute decisionId : String;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
part def MarkdownDocumentSource :> ModelOwnedArtifact {}
|
|
29
|
+
part def ModelQueryScript :> ModelOwnedArtifact {}
|
|
30
|
+
part def AnalysisNotebook :> ModelOwnedArtifact {}
|
|
31
|
+
part def ModelDataset :> ModelOwnedArtifact {}
|
|
32
|
+
part def GeneratedReport :> ModelOwnedArtifact {}
|
|
33
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
package memo_artifacts_documents_risk_management {
|
|
2
|
+
private import ScalarValues::*;
|
|
3
|
+
|
|
4
|
+
private import memo_artifacts_core::*;
|
|
5
|
+
|
|
6
|
+
part def RiskManagementFile :> ModelOwnedArtifact {
|
|
7
|
+
attribute standardReference : String;
|
|
8
|
+
attribute clause : String;
|
|
9
|
+
attribute edition : String;
|
|
10
|
+
attribute completenessStatus : String;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
@@ -49,7 +49,7 @@ package memo_assurance_cybersecurity {
|
|
|
49
49
|
// A scenario specialization: an attack path through the
|
|
50
50
|
// system, classified by the shared scenario dimensions with purpose
|
|
51
51
|
// `cybersecurity`.
|
|
52
|
-
|
|
52
|
+
action def ThreatScenario specializes MemoScenario {
|
|
53
53
|
attribute actorDescription : String;
|
|
54
54
|
attribute assumptionSummary : String;
|
|
55
55
|
attribute guaranteeSummary : String;
|
|
@@ -21,7 +21,7 @@ package memo_assurance_human_factors {
|
|
|
21
21
|
|
|
22
22
|
// A use scenario whose performance could lead to a hazardous situation
|
|
23
23
|
// (IEC 62366-1 3.9); selected for summative evaluation.
|
|
24
|
-
|
|
24
|
+
action def HazardRelatedUseScenario specializes MemoScenario {
|
|
25
25
|
attribute hazardReference : String;
|
|
26
26
|
attribute selectionRationale : String;
|
|
27
27
|
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
package memo_assurance_safety_risk_postmarket_surveillance {
|
|
2
|
+
private import ScalarValues::*;
|
|
3
|
+
|
|
4
|
+
private import memo_core_common::*;
|
|
5
|
+
|
|
6
|
+
part def PostMarketSurveillance :> MemoPart {
|
|
7
|
+
attribute surveillanceKind : String;
|
|
8
|
+
attribute dataSource : String;
|
|
9
|
+
attribute reportingObligation : String;
|
|
10
|
+
}
|
|
11
|
+
}
|
package/src/assurance/verification_validation/clinical_evaluation/memo_clinical_evaluation.sysml
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
package memo_assurance_verification_validation_clinical_evaluation {
|
|
2
|
+
private import ScalarValues::*;
|
|
3
|
+
|
|
4
|
+
private import memo_core_common::*;
|
|
5
|
+
|
|
6
|
+
part def ClinicalEvaluation :> MemoPart {
|
|
7
|
+
attribute evaluationStage : String;
|
|
8
|
+
attribute clinicalDataSource : String;
|
|
9
|
+
attribute conclusion : String;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
@@ -34,7 +34,7 @@ package memo_assurance_verification_validation {
|
|
|
34
34
|
|
|
35
35
|
// A scenario executed to verify — selected path with purpose
|
|
36
36
|
// 'verification'.
|
|
37
|
-
|
|
37
|
+
action def VerificationScenario specializes MemoScenario {
|
|
38
38
|
attribute verificationEnvironment : String;
|
|
39
39
|
attribute stimulusSummary : String;
|
|
40
40
|
}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
// Universal model annotations carried as model content rather than source-text
|
|
2
|
+
// `doc` / `comment` annotations. Comments capture review conversation, notes
|
|
3
|
+
// preserve useful context, and rationales explain why an engineering choice was
|
|
4
|
+
// made. Each is independently traceable, queryable, and exportable.
|
|
5
|
+
//
|
|
6
|
+
// The distinction is deliberate and load-bearing: `description` is what an
|
|
7
|
+
// element IS, a ModelComment is what someone SAID ABOUT IT. A design review
|
|
8
|
+
// needs an author, a timestamp, a thread, and a resolution state, and none of
|
|
9
|
+
// those survive inside a documentation string. Merging the two would put
|
|
10
|
+
// unresolved review chatter into a generated DHF section, so they never merge.
|
|
11
|
+
//
|
|
12
|
+
// Annotations attach to every metaclass — parts, actions, requirements, views,
|
|
13
|
+
// connections, and MEMO specializations — so CommentsOn, RationaleFor, and
|
|
14
|
+
// NotesOn leave their subject ends untyped, following the MemoLink precedent in
|
|
15
|
+
// memo_core_relationships.
|
|
16
|
+
package memo_core_annotations {
|
|
17
|
+
private import ScalarValues::*;
|
|
18
|
+
|
|
19
|
+
private import memo_core_common::*;
|
|
20
|
+
private import memo_core_enumerations::*;
|
|
21
|
+
private import memo_core_relationships::*;
|
|
22
|
+
|
|
23
|
+
abstract part def ModelAnnotation specializes MemoPart {
|
|
24
|
+
// `body` is the annotation content; `shortDescription` is the one-line
|
|
25
|
+
// form shown in badges, tables, and generated indexes.
|
|
26
|
+
attribute body : String;
|
|
27
|
+
attribute author : String;
|
|
28
|
+
// ISO 8601. Strings, not a date type: MEMO stays portable content and
|
|
29
|
+
// does not depend on a tool's date library.
|
|
30
|
+
attribute createdAt : String;
|
|
31
|
+
// Optional pinpoint inside the annotated element: an attribute name,
|
|
32
|
+
// requirement clause, diagram node, or other stable local reference.
|
|
33
|
+
attribute anchor : String;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
part def ModelComment specializes ModelAnnotation {
|
|
37
|
+
attribute commentStatus : CommentStatusKind;
|
|
38
|
+
// Why the comment closed. Required in practice for `resolved` and
|
|
39
|
+
// `rejected` — a closed review point with no stated disposition is an
|
|
40
|
+
// audit gap.
|
|
41
|
+
attribute resolution : String;
|
|
42
|
+
attribute resolvedBy : String;
|
|
43
|
+
attribute resolvedAt : String;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
part def ModelRationale specializes ModelAnnotation {
|
|
47
|
+
// Decision, trade-off, standard clause, or evidence that the rationale
|
|
48
|
+
// rests on. The body explains the reasoning in full.
|
|
49
|
+
attribute basis : String;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
part def ModelNote specializes ModelAnnotation {
|
|
53
|
+
// A lightweight category for filtering notes without constraining their
|
|
54
|
+
// content (for example assumption, usage, implementation, or warning).
|
|
55
|
+
attribute noteKind : String;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// Replies form a thread through the ordinary Composes relation (parent
|
|
59
|
+
// comment → reply), so CR-ONT-001's acyclicity invariant already covers
|
|
60
|
+
// comment threads and no thread-specific relation is needed.
|
|
61
|
+
// The end is `remark`, not `comment`: `comment` is a reserved KerML
|
|
62
|
+
// keyword and cannot name a feature.
|
|
63
|
+
connection def CommentsOn :> MemoRelationship {
|
|
64
|
+
end remark : ModelComment;
|
|
65
|
+
end annotatedElement;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
connection def RationaleFor :> MemoRelationship {
|
|
69
|
+
end rationaleRecord : ModelRationale;
|
|
70
|
+
end justifiedElement;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
connection def NotesOn :> MemoRelationship {
|
|
74
|
+
end noteRecord : ModelNote;
|
|
75
|
+
end notedElement;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
@@ -27,6 +27,14 @@ package memo_core_common {
|
|
|
27
27
|
// identity
|
|
28
28
|
attribute id : String;
|
|
29
29
|
attribute name : String;
|
|
30
|
+
// Two description registers on every MEMO element, because views have
|
|
31
|
+
// two densities. `shortDescription` is the one-line form a table cell,
|
|
32
|
+
// matrix header, chip, or diagram node can show whole; `description` is
|
|
33
|
+
// the full prose a properties panel or a generated document section
|
|
34
|
+
// renders. A view picks the register that fits — it never truncates
|
|
35
|
+
// the long one, because a silently clipped sentence in a DHF table is
|
|
36
|
+
// a defect, not a layout choice.
|
|
37
|
+
attribute shortDescription : String;
|
|
30
38
|
attribute description : String;
|
|
31
39
|
// traceability
|
|
32
40
|
attribute rationale : String;
|
|
@@ -51,10 +59,12 @@ package memo_core_common {
|
|
|
51
59
|
part def MemoEvidence specializes MemoPart;
|
|
52
60
|
abstract part def AnalysisArtifact specializes MemoPart;
|
|
53
61
|
|
|
62
|
+
// Document-bound elements add only what a document needs beyond the two
|
|
63
|
+
// description registers every MemoPart now carries: a title and its place
|
|
64
|
+
// in a document. The former `shortDescription`/`longDescription` pair is
|
|
65
|
+
// gone — short is inherited, and `description` IS the long form.
|
|
54
66
|
part def DocumentedElement specializes MemoPart {
|
|
55
67
|
attribute title : String;
|
|
56
|
-
attribute shortDescription : String;
|
|
57
|
-
attribute longDescription : String;
|
|
58
68
|
attribute documentUsage : String[*];
|
|
59
69
|
attribute sectionIdentifier : String;
|
|
60
70
|
}
|
|
@@ -66,6 +76,7 @@ package memo_core_common {
|
|
|
66
76
|
action def MemoAction {
|
|
67
77
|
attribute id : String;
|
|
68
78
|
attribute name : String;
|
|
79
|
+
attribute shortDescription : String;
|
|
69
80
|
attribute description : String;
|
|
70
81
|
attribute rationale : String;
|
|
71
82
|
attribute sourceReference : String;
|
|
@@ -76,8 +87,8 @@ package memo_core_common {
|
|
|
76
87
|
port def MemoPort {
|
|
77
88
|
attribute id : String;
|
|
78
89
|
attribute name : String;
|
|
90
|
+
attribute shortDescription : String;
|
|
79
91
|
attribute description : String;
|
|
80
|
-
attribute direction : DirectionKind;
|
|
81
92
|
}
|
|
82
93
|
|
|
83
94
|
// Interaction-contract foundation for interface definitions between ports.
|
|
@@ -86,6 +97,7 @@ package memo_core_common {
|
|
|
86
97
|
end target;
|
|
87
98
|
attribute id : String;
|
|
88
99
|
attribute name : String;
|
|
100
|
+
attribute shortDescription : String;
|
|
89
101
|
attribute description : String;
|
|
90
102
|
attribute rationale : String;
|
|
91
103
|
attribute sourceReference : String;
|
|
@@ -96,6 +108,7 @@ package memo_core_common {
|
|
|
96
108
|
item def MemoExchangeItem {
|
|
97
109
|
attribute id : String;
|
|
98
110
|
attribute name : String;
|
|
111
|
+
attribute shortDescription : String;
|
|
99
112
|
attribute description : String;
|
|
100
113
|
attribute rationale : String;
|
|
101
114
|
attribute sourceReference : String;
|
|
@@ -113,6 +126,7 @@ package memo_core_common {
|
|
|
113
126
|
// solution-space obligation.
|
|
114
127
|
requirement def MemoNeed {
|
|
115
128
|
attribute needId : String;
|
|
129
|
+
attribute shortDescription : String;
|
|
116
130
|
attribute statement : String;
|
|
117
131
|
attribute needRationale : String;
|
|
118
132
|
attribute needSource : String;
|
|
@@ -122,6 +136,7 @@ package memo_core_common {
|
|
|
122
136
|
|
|
123
137
|
requirement def MemoRequirement {
|
|
124
138
|
attribute requirementId : String;
|
|
139
|
+
attribute shortDescription : String;
|
|
125
140
|
attribute statement : String;
|
|
126
141
|
attribute acceptanceCriteria : String;
|
|
127
142
|
attribute requirementStatus : ElementStatusKind;
|
|
@@ -134,6 +149,7 @@ package memo_core_common {
|
|
|
134
149
|
verification def MemoVerificationCase {
|
|
135
150
|
attribute id : String;
|
|
136
151
|
attribute name : String;
|
|
152
|
+
attribute shortDescription : String;
|
|
137
153
|
attribute description : String;
|
|
138
154
|
attribute rationale : String;
|
|
139
155
|
attribute sourceReference : String;
|
|
@@ -147,6 +163,7 @@ package memo_core_common {
|
|
|
147
163
|
abstract state def MemoState {
|
|
148
164
|
attribute id : String;
|
|
149
165
|
attribute name : String;
|
|
166
|
+
attribute shortDescription : String;
|
|
150
167
|
attribute description : String;
|
|
151
168
|
attribute rationale : String;
|
|
152
169
|
attribute sourceReference : String;
|
|
@@ -6,6 +6,13 @@ package memo_core_consistency_rules {
|
|
|
6
6
|
private import memo_core_common::*;
|
|
7
7
|
private import memo_core_enumerations::*;
|
|
8
8
|
|
|
9
|
+
// Common supertype of every executable MEMO rule. It carries no members of
|
|
10
|
+
// its own: a rule's metadata is declared on the rule, and a shared member
|
|
11
|
+
// here would be shadowed by every rule that sets it. Its job is to give
|
|
12
|
+
// RulePolicy a type to reference, so a policy names a rule the way SysML
|
|
13
|
+
// names anything else rather than through a parallel string-ID namespace.
|
|
14
|
+
abstract constraint def MemoConsistencyRule;
|
|
15
|
+
|
|
9
16
|
part def ConsistencyRule specializes MemoPart {
|
|
10
17
|
attribute appliesTo : String;
|
|
11
18
|
attribute predicate : RulePredicateKind;
|
|
@@ -10,9 +10,13 @@ package memo_core_dimensions {
|
|
|
10
10
|
private import ScalarValues::*;
|
|
11
11
|
|
|
12
12
|
// Realization stages of one element identity across the product
|
|
13
|
-
// lifecycle (
|
|
13
|
+
// lifecycle (proposal through retirement). Orthogonal to the axis:
|
|
14
14
|
// a single identity progresses through stages without changing its owner.
|
|
15
15
|
enum def RealizationStageKind {
|
|
16
|
+
// Put forward but not yet specified — a candidate under consideration,
|
|
17
|
+
// so a design alternative can be modelled and traced without implying
|
|
18
|
+
// it has been accepted into the specification.
|
|
19
|
+
enum proposed;
|
|
16
20
|
enum specified;
|
|
17
21
|
enum designed;
|
|
18
22
|
enum built;
|
|
@@ -83,7 +83,6 @@ package memo_core_enumerations {
|
|
|
83
83
|
enum input;
|
|
84
84
|
enum output;
|
|
85
85
|
enum inputOutput;
|
|
86
|
-
enum bidirectional;
|
|
87
86
|
}
|
|
88
87
|
enum def CriticalityKind {
|
|
89
88
|
enum low;
|
|
@@ -192,11 +191,11 @@ package memo_core_enumerations {
|
|
|
192
191
|
enum SDD;
|
|
193
192
|
enum RMF;
|
|
194
193
|
enum VV;
|
|
195
|
-
enum
|
|
196
|
-
enum
|
|
197
|
-
enum
|
|
198
|
-
enum
|
|
199
|
-
enum
|
|
194
|
+
enum architectureDescription;
|
|
195
|
+
enum cybersecurityAssessment;
|
|
196
|
+
enum threatModel;
|
|
197
|
+
enum clinical;
|
|
198
|
+
enum usability;
|
|
200
199
|
}
|
|
201
200
|
enum def SchedulingPolicyKind {
|
|
202
201
|
enum nonRealTime;
|
|
@@ -264,6 +263,29 @@ package memo_core_enumerations {
|
|
|
264
263
|
enum crossLayer;
|
|
265
264
|
enum quantitative;
|
|
266
265
|
}
|
|
266
|
+
// How far a methodology may tailor a rule. `invariant` rules hold the
|
|
267
|
+
// ontology's own consistency and may only change in an ontology release;
|
|
268
|
+
// `assurance` and `methodology` rules may be disabled or replaced through
|
|
269
|
+
// an explicit RulePolicy carrying rationale and authority.
|
|
270
|
+
enum def RuleTailoringKind {
|
|
271
|
+
enum invariant;
|
|
272
|
+
enum assurance;
|
|
273
|
+
enum methodology;
|
|
274
|
+
}
|
|
275
|
+
enum def RuleDispositionKind {
|
|
276
|
+
enum enabled;
|
|
277
|
+
enum disabled;
|
|
278
|
+
enum replaced;
|
|
279
|
+
}
|
|
280
|
+
// Whether a methodology's inclusion lists are the whole selection or a
|
|
281
|
+
// deliberate subset. An empty list under `explicit` selects nothing; it
|
|
282
|
+
// never means "everything". `allAvailable` is the only way to say "all",
|
|
283
|
+
// and it is always deliberate. (SysML v2 reserves `all`, so the literal is
|
|
284
|
+
// spelled `allAvailable`.)
|
|
285
|
+
enum def ScopeModeKind {
|
|
286
|
+
enum allAvailable;
|
|
287
|
+
enum explicit;
|
|
288
|
+
}
|
|
267
289
|
enum def WorkflowStageKind {
|
|
268
290
|
enum context;
|
|
269
291
|
enum requirements;
|
|
@@ -337,6 +359,9 @@ package memo_core_enumerations {
|
|
|
337
359
|
enum riskTable;
|
|
338
360
|
enum traceMatrix;
|
|
339
361
|
enum narrativeSection;
|
|
362
|
+
// A captured screen with its regions drawn over it — the presentation
|
|
363
|
+
// of the geometry view kind.
|
|
364
|
+
enum screenLayout;
|
|
340
365
|
enum custom;
|
|
341
366
|
}
|
|
342
367
|
enum def DeploymentKind {
|
|
@@ -570,4 +595,14 @@ package memo_core_enumerations {
|
|
|
570
595
|
enum actionCategory;
|
|
571
596
|
enum memoryRecall;
|
|
572
597
|
}
|
|
598
|
+
// Lifecycle of a review remark on a model element. `rejected` is a closed
|
|
599
|
+
// state with a stated reason, not a deletion: a design review that
|
|
600
|
+
// considered a point and declined it is a record the DHF wants to keep.
|
|
601
|
+
enum def CommentStatusKind {
|
|
602
|
+
enum open;
|
|
603
|
+
enum acknowledged;
|
|
604
|
+
enum addressed;
|
|
605
|
+
enum resolved;
|
|
606
|
+
enum rejected;
|
|
607
|
+
}
|
|
573
608
|
}
|
|
@@ -1,25 +1,17 @@
|
|
|
1
1
|
// Methodology scope helpers.
|
|
2
|
-
//
|
|
3
|
-
//
|
|
2
|
+
//
|
|
3
|
+
// `MethodologyScope` and `MethodologyLayerSet` were removed when the semantic
|
|
4
|
+
// contract flipped. A methodology's effective selection is declared on
|
|
5
|
+
// `MethodologyDefinition` itself — `scopeMode` plus the `included*` lists — so
|
|
6
|
+
// that one element answers "what is in scope". A second scope part sitting
|
|
7
|
+
// beside the methodology meant two authorities for the same question, and the
|
|
8
|
+
// tools read the one the methodology definition did not declare.
|
|
4
9
|
package memo_core_methodology_scope {
|
|
5
10
|
private import ScalarValues::*;
|
|
6
11
|
|
|
7
12
|
private import memo_core_common::*;
|
|
8
13
|
private import memo_core_dimensions::*;
|
|
9
14
|
|
|
10
|
-
part def MethodologyLayerSet specializes MemoPart {
|
|
11
|
-
attribute setName : String;
|
|
12
|
-
attribute layer : String;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
part def MethodologyScope specializes MemoPart {
|
|
16
|
-
attribute scopeName : String;
|
|
17
|
-
attribute includedArchLayer : String[0..*];
|
|
18
|
-
// Qualified package names may resolve to MEMO, project, supplier, or
|
|
19
|
-
// other externally provided ontology modules.
|
|
20
|
-
attribute includedModule : String[0..*];
|
|
21
|
-
}
|
|
22
|
-
|
|
23
15
|
part def ElementKindAlias specializes MemoPart {
|
|
24
16
|
attribute methodTerm : String;
|
|
25
17
|
attribute concreteKind : String;
|
|
@@ -85,8 +85,10 @@ package memo_core_relationships {
|
|
|
85
85
|
// Implements{Component,Procedure}, UIRealizesFunctional,
|
|
86
86
|
// FunctionalRealizesOper{ative,ational} and ScenarioRealizesUseCase.
|
|
87
87
|
connection def Realizes :> MemoRelationship {
|
|
88
|
-
|
|
89
|
-
|
|
88
|
+
// Realization crosses structural and behavioral metaclasses (for
|
|
89
|
+
// example a FunctionalFlow route realizing a FunctionalScenario).
|
|
90
|
+
end realizing;
|
|
91
|
+
end realized;
|
|
90
92
|
}
|
|
91
93
|
connection def VerifiedBy :> MemoRelationship {
|
|
92
94
|
// Requirements, risk controls, and architecture components are
|