@memoarchitect/ontology 0.13.2 → 0.15.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 +5 -3
- package/examples/connected-patient-monitor/memo.identity.yaml +34 -0
- package/examples/connected-patient-monitor/memo.package.yaml +3 -1
- package/examples/connected-patient-monitor/model/catalog/connected_patient_monitor.sysml +17 -12
- package/examples/connected-patient-monitor/model/{catalog → methodology}/project.sysml +4 -5
- package/examples/embedded-infusion-pump/memo.package.yaml +3 -1
- package/examples/embedded-infusion-pump/model/catalog/embedded_infusion_pump.sysml +6 -6
- package/examples/embedded-infusion-pump/model/{catalog → methodology}/project.sysml +4 -5
- package/examples/functional-logical-physical/memo.identity.yaml +28 -0
- package/examples/functional-logical-physical/memo.package.yaml +3 -1
- package/examples/functional-logical-physical/model/catalog/functional_logical_physical.sysml +5 -5
- package/examples/functional-logical-physical/model/{catalog → methodology}/project.sysml +4 -5
- package/examples/gpca-pump/analysis/Samples/01-model-overview.ipynb +40 -139
- package/examples/gpca-pump/analysis/Samples/02-architecture-hotspots.ipynb +38 -290
- package/examples/gpca-pump/analysis/Samples/03-model-quality.ipynb +47 -217
- package/examples/gpca-pump/analysis/Samples/04-change-impact-explorer.ipynb +50 -191
- package/examples/gpca-pump/analysis/Samples/05-model-charts.ipynb +42 -181
- package/examples/gpca-pump/analysis/Samples/06-ownership-graph.ipynb +40 -164
- package/examples/gpca-pump/analysis/Samples/07-model-inventory-table.ipynb +51 -172
- package/examples/gpca-pump/analysis/Samples/README.md +15 -9
- package/examples/gpca-pump/analysis/memo_model.py +243 -0
- package/examples/gpca-pump/memo.identity.yaml +521 -26
- package/examples/gpca-pump/memo.package.yaml +3 -1
- package/examples/gpca-pump/methodology/gpca_profiles.sysml +56 -47
- package/examples/gpca-pump/model/catalog/gpca_analysis.sysml +51 -78
- package/examples/gpca-pump/model/catalog/gpca_architecture.sysml +359 -357
- package/examples/gpca-pump/model/catalog/gpca_behavior_actions.sysml +9 -9
- package/examples/gpca-pump/model/catalog/gpca_behavior_modes.sysml +56 -69
- package/examples/gpca-pump/model/catalog/gpca_behavior_subsystems.sysml +44 -59
- package/examples/gpca-pump/model/catalog/gpca_context.sysml +23 -35
- package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +33 -40
- package/examples/gpca-pump/model/catalog/gpca_formal_behavior.sysml +62 -63
- package/examples/gpca-pump/model/catalog/gpca_interfaces.sysml +362 -483
- package/examples/gpca-pump/model/catalog/gpca_operational.sysml +45 -70
- package/examples/gpca-pump/model/catalog/gpca_physical.sysml +6 -12
- package/examples/gpca-pump/model/catalog/gpca_requirements.sysml +173 -169
- package/examples/gpca-pump/model/catalog/gpca_risk.sysml +139 -225
- package/examples/gpca-pump/model/catalog/gpca_standards.sysml +43 -47
- package/examples/gpca-pump/model/catalog/gpca_system.sysml +68 -65
- package/examples/gpca-pump/model/catalog/gpca_trace.sysml +147 -116
- package/examples/gpca-pump/model/catalog/gpca_verification.sysml +65 -90
- package/examples/gpca-pump/model/catalog/viewpoints/context/views/context_system_context_view.sysml +4 -6
- package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/cybersecurity_cybersecurity_view.sysml +4 -6
- package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_cyber_assessment_view.sysml +4 -6
- package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_threat_model_view.sysml +4 -6
- package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_allocation_view.sysml +2 -4
- package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_browser_view.sysml +7 -6
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/behavior_action_flow_view.sysml +4 -6
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/document_architecture_description_view.sysml +4 -6
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_device_interconnect_view.sysml +3 -5
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_logical_architecture_view.sysml +4 -6
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_mode_state_view.sysml +4 -6
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_system_decomposition_view.sysml +3 -5
- package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_scenario_sequence_view.sysml +3 -5
- package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_use_case_view.sysml +4 -6
- package/examples/gpca-pump/model/catalog/viewpoints/physical/views/physical_physical_bom_view.sysml +2 -4
- package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/document_dhf_index_view.sysml +3 -5
- package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/requirements_requirements_trace_view.sysml +2 -4
- package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_hazard_analysis_view.sysml +4 -6
- package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_rmf_view.sysml +4 -6
- package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_fmea_view.sysml +2 -4
- package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_risk_chain_view.sysml +4 -6
- package/examples/gpca-pump/model/catalog/viewpoints/software/views/document_sdd_view.sysml +4 -6
- package/examples/gpca-pump/model/catalog/viewpoints/software/views/software_software_architecture_view.sysml +3 -5
- package/examples/gpca-pump/model/catalog/viewpoints/usability/views/document_usability_view.sysml +4 -6
- package/examples/gpca-pump/model/catalog/viewpoints/verification/views/document_vv_view.sysml +3 -5
- package/examples/gpca-pump/model/catalog/viewpoints/verification/views/verification_verification_coverage_view.sysml +2 -4
- package/examples/gpca-pump/model/{catalog → methodology}/project.sysml +8 -6
- package/examples/ivd-laboratory-system/memo.package.yaml +3 -1
- package/examples/ivd-laboratory-system/model/catalog/ivd_laboratory_system.sysml +12 -9
- package/examples/ivd-laboratory-system/model/{catalog → methodology}/project.sysml +4 -5
- package/examples/manual-surgical-instrument/memo.package.yaml +3 -1
- package/examples/manual-surgical-instrument/model/catalog/manual_surgical_instrument.sysml +2 -6
- package/examples/manual-surgical-instrument/model/{catalog → methodology}/project.sysml +4 -5
- package/examples/multidimensional-layers/memo.package.yaml +3 -1
- package/examples/multidimensional-layers/model/catalog/multidimensional_layers.sysml +2 -4
- package/examples/multidimensional-layers/model/{catalog → methodology}/project.sysml +4 -5
- package/examples/nested-architecture-dsm/memo.identity.yaml +93 -0
- package/examples/nested-architecture-dsm/memo.package.yaml +3 -1
- package/examples/nested-architecture-dsm/model/catalog/architecture/functional/functions.sysml +30 -30
- package/examples/nested-architecture-dsm/model/catalog/architecture/logical/structure.sysml +28 -28
- package/examples/nested-architecture-dsm/model/catalog/architecture/operational/context.sysml +2 -4
- package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/needs.sysml +4 -4
- package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/requirements.sysml +7 -7
- package/examples/nested-architecture-dsm/model/catalog/assurance/verification_validation/verification_validation.sysml +8 -8
- package/examples/nested-architecture-dsm/model/{catalog → methodology}/project.sysml +4 -5
- package/examples/reusable-instrument/memo.package.yaml +3 -1
- package/examples/reusable-instrument/model/catalog/reusable_instrument.sysml +7 -7
- package/examples/reusable-instrument/model/{catalog → methodology}/project.sysml +4 -5
- package/examples/robot-cell-family/README.md +34 -0
- package/examples/robot-cell-family/memo.identity.yaml +142 -0
- package/examples/robot-cell-family/memo.package.yaml +7 -0
- package/examples/robot-cell-family/model/methodology/project.sysml +30 -0
- package/examples/robot-cell-family/model/shared/shared.sysml +53 -0
- package/examples/robot-cell-family/model/sos/chains.sysml +36 -0
- package/examples/robot-cell-family/model/sos/icds.sysml +29 -0
- package/examples/robot-cell-family/model/sos/sos.sysml +31 -0
- package/examples/robot-cell-family/model/sos/use_cases.sysml +25 -0
- package/examples/robot-cell-family/model/systems/manipulation/manipulation_system.sysml +35 -0
- package/examples/robot-cell-family/model/systems/navigation/navigation_system.sysml +46 -0
- package/examples/robot-cell-family/model/systems/perception/perception_system.sysml +37 -0
- package/examples/robot-platform/memo.package.yaml +3 -0
- package/examples/robot-platform/model/platform.sysml +15 -0
- package/examples/ros-mobile-robot/README.md +5 -4
- package/examples/ros-mobile-robot/memo.identity.yaml +94 -0
- package/examples/ros-mobile-robot/memo.package.yaml +3 -1
- package/examples/ros-mobile-robot/model/catalog/ros_mobile_robot.sysml +26 -29
- package/examples/ros-mobile-robot/model/{catalog → methodology}/project.sysml +8 -14
- package/examples/software-only-medical-device/memo.package.yaml +3 -1
- package/examples/software-only-medical-device/model/catalog/software_only_medical_device.sysml +9 -10
- package/examples/software-only-medical-device/model/{catalog → methodology}/project.sysml +8 -9
- package/examples/surgical-closure-workflow/memo.package.yaml +3 -1
- package/examples/surgical-closure-workflow/model/catalog/surgical_closure_workflow.sysml +23 -26
- package/examples/surgical-closure-workflow/model/{catalog → methodology}/project.sysml +7 -5
- package/examples/surgical-robot/memo.package.yaml +3 -1
- package/examples/surgical-robot/model/catalog/surgical_robot.sysml +14 -12
- package/examples/surgical-robot/model/{catalog → methodology}/project.sysml +4 -5
- package/examples/sysml-diagram-samples/README.md +1 -0
- package/examples/sysml-diagram-samples/memo.identity.yaml +459 -0
- package/examples/sysml-diagram-samples/memo.package.yaml +3 -1
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/viewpoint.sysml +10 -20
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/action_flow_view.sysml +5 -5
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/browser_view.sysml +10 -13
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.sysml +11 -7
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/diagram_samples.sysml +63 -8
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/drill_down_view.sysml +88 -0
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/functional_flow_view.sysml +25 -25
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/grid_view.sysml +6 -6
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.sysml +15 -17
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.sysml +21 -21
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/package_view.sysml +7 -7
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/requirements_view.sysml +5 -5
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/sequence_view.sysml +14 -14
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/state_transition_view.sysml +16 -17
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/tree_view.sysml +9 -9
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/use_case_view.sysml +7 -14
- package/examples/sysml-diagram-samples/model/{catalog → methodology}/project.sysml +5 -5
- package/examples/sysml-diagram-samples/model/sysml_v2_activity_example.sysml +1 -1
- package/examples/temperature-alarm/memo.identity.yaml +6 -0
- package/examples/temperature-alarm/memo.package.yaml +3 -1
- package/examples/temperature-alarm/model/catalog/temperature_alarm.sysml +43 -21
- package/examples/temperature-alarm/model/{catalog → methodology}/project.sysml +4 -5
- package/examples/ui-screen-regions/memo.identity.yaml +33 -0
- package/examples/ui-screen-regions/memo.package.yaml +3 -1
- package/examples/ui-screen-regions/model/catalog/architecture/functional/functions.sysml +12 -12
- package/examples/ui-screen-regions/model/catalog/architecture/implementation/ui.sysml +18 -18
- package/examples/ui-screen-regions/model/catalog/artifacts/assets/catalog.sysml +6 -6
- package/examples/ui-screen-regions/model/catalog/artifacts/reviews/comments.sysml +3 -3
- package/examples/ui-screen-regions/model/catalog/artifacts/reviews/notes.sysml +1 -1
- package/examples/ui-screen-regions/model/catalog/artifacts/reviews/rationales.sysml +1 -1
- package/examples/ui-screen-regions/model/catalog/assurance/human_factors/human_factors.sysml +10 -10
- package/examples/ui-screen-regions/model/catalog/assurance/requirements/needs.sysml +1 -1
- package/examples/ui-screen-regions/model/catalog/assurance/requirements/requirements.sysml +12 -12
- package/examples/ui-screen-regions/model/catalog/assurance/safety_risk/risk.sysml +15 -15
- package/examples/ui-screen-regions/model/catalog/assurance/verification_validation/verification_validation.sysml +6 -6
- package/examples/ui-screen-regions/model/catalog/viewpoints/functional/views/ui_functional_tree.sysml +1 -2
- package/examples/ui-screen-regions/model/catalog/viewpoints/requirements/views/ui_requirements_trace.sysml +1 -2
- package/examples/ui-screen-regions/model/catalog/viewpoints/risk/views/ui_risk_chain.sysml +1 -2
- package/examples/ui-screen-regions/model/{catalog → methodology}/project.sysml +4 -5
- package/extensions/README.md +65 -16
- package/extensions/aadl/memo.package.yaml +1 -1
- package/extensions/aadl/src/aadl_extension.sysml +5 -2
- package/extensions/aadl/src/correspondence/memo_aadl_correspondence.sysml +29 -50
- package/extensions/clinical/memo.package.yaml +1 -1
- package/extensions/clinical/src/clinical_extension.sysml +2 -0
- package/extensions/cloud/memo.package.yaml +1 -1
- package/extensions/container/memo.package.yaml +1 -1
- package/extensions/messaging/memo.package.yaml +1 -1
- package/extensions/messaging/src/messaging_extension.sysml +2 -2
- package/extensions/ros/memo.package.yaml +1 -1
- package/extensions/ros/src/ros_extension.sysml +25 -24
- package/extensions/template/memo.package.yaml +1 -1
- package/extensions/template/model/extension.sysml +25 -0
- package/memo.manifest.yaml +1 -7
- package/methodologies/default/memo.package.yaml +1 -1
- package/methodologies/gpca/memo.package.yaml +1 -1
- package/ontology/memo.package.yaml +1 -1
- package/package.json +6 -4
- package/profile/memo.package.yaml +1 -1
- package/src/architecture/decisions/memo_decisions.sysml +9 -2
- package/src/architecture/functional/behavior/memo_behavior.sysml +27 -7
- package/src/architecture/functional/functions/memo_functions.sysml +45 -31
- package/src/architecture/functional/memo_architecture_functional.sysml +14 -0
- package/src/architecture/implementation/memo_architecture_implementation.sysml +21 -0
- package/src/architecture/implementation/software/runtime/memo_software_runtime.sysml +7 -0
- package/src/architecture/implementation/software/structure/memo_software_structure.sysml +58 -17
- package/src/architecture/implementation/ui/memo_ui.sysml +1 -1
- package/src/architecture/logical/interfaces/memo_interfaces.sysml +67 -58
- package/src/architecture/logical/memo_architecture_logical.sysml +13 -0
- package/src/architecture/logical/structure/memo_logical_structure.sysml +27 -8
- package/src/architecture/operational/context/stakeholders/memo_stakeholders.sysml +4 -1
- package/src/architecture/operational/memo_architecture_operational.sysml +19 -0
- package/src/architecture/operational/scenarios/memo_scenarios.sysml +9 -8
- package/src/architecture/operational/structure/memo_operational.sysml +5 -2
- package/src/architecture/operational/use_cases/memo_use_cases.sysml +16 -8
- package/src/architecture/realization/deployment/memo_deployment.sysml +30 -10
- package/src/architecture/realization/memo_architecture_realization.sysml +13 -0
- package/src/architecture/realization/physical/memo_physical_architecture.sysml +61 -0
- package/src/architecture/variability/memo_variability.sysml +87 -0
- package/src/artifacts/configuration_management/memo_configuration_management.sysml +95 -3
- package/src/artifacts/core/memo_controlled_artifacts.sysml +4 -2
- package/src/artifacts/standards/cfr_21_820.sysml +12 -24
- package/src/artifacts/standards/fda_cybersecurity_2023.sysml +13 -20
- package/src/artifacts/standards/iec_60601_1.sysml +16 -32
- package/src/artifacts/standards/iec_60601_1_2.sysml +5 -10
- package/src/artifacts/standards/iec_60812.sysml +4 -8
- package/src/artifacts/standards/iec_62304.sysml +607 -47
- package/src/artifacts/standards/iec_62366_1.sysml +12 -24
- package/src/artifacts/standards/iec_81001_5_1.sysml +8 -16
- package/src/artifacts/standards/iso_13485.sysml +12 -24
- package/src/artifacts/standards/iso_14971.sysml +118 -20
- package/src/artifacts/standards/iso_iec_ieee_42010.sysml +3 -6
- package/src/artifacts/standards/memo_artifacts_standards_traceability.sysml +14 -4
- package/src/artifacts/templates/dhf/fda-cybersecurity/postmarket-surveillance.md +1 -2
- package/src/artifacts/templates/dhf/fda-cybersecurity/vuln-assessment.md +1 -2
- package/src/artifacts/templates/dhf/iec-62304/sad.md +1 -2
- package/src/artifacts/templates/dhf/iec-62304/sbom.md +1 -2
- package/src/artifacts/templates/dhf/iec-62304/sdp.md +1 -2
- package/src/artifacts/templates/dhf/iec-62304/soup.md +3 -5
- package/src/artifacts/templates/dhf/system/sad.md +1 -1
- package/src/artifacts/templates/dhf/system/standards-checklist.md +2 -2
- package/src/artifacts/templates/dhf/system/standards-traceability.md +1 -1
- package/src/assurance/cybersecurity/memo_cybersecurity.sysml +339 -13
- package/src/assurance/human_factors/memo_human_factors.sysml +6 -2
- package/src/assurance/safety_risk/analysis/memo_fmea.sysml +7 -3
- package/src/assurance/safety_risk/memo_risk.sysml +39 -1
- package/src/core/common/memo_common.sysml +51 -68
- package/src/core/enumerations/memo_enumerations.sysml +93 -9
- package/src/core/relationships/memo_relationships.sysml +17 -11
- package/src/core/relationships/memo_workspace_membership.sysml +284 -0
- package/src/core/semantics/semantics.sysml +58 -0
- package/src/core/terminology/terminology.sysml +7 -0
- package/src/memo_namespaces.sysml +6 -0
- package/src/methodology/archetypes/memo_archetypes.sysml +8 -16
- package/src/methodology/core/memo_core.sysml +85 -29
- package/src/methodology/profiles/memo_profiles.sysml +217 -61
- package/src/methodology/workflow/memo_workflow.sysml +28 -0
- package/src/rules/closure/closure_rules.sysml +250 -4
- package/src/rules/crosslayer/cross_layer_rules.sysml +11 -0
- package/src/rules/ontology/ontology_invariants.sysml +288 -48
- package/src/rules/quantitative/quantitative_rules.sysml +4 -0
- package/src/viewpoints/catalog/memo_viewpoint_catalog.sysml +28 -28
- package/src/viewpoints/clinical/clinical_viewpoint.sysml +2 -3
- package/src/viewpoints/context/context_viewpoint.sysml +2 -3
- package/src/viewpoints/context/views/system_context_view/system_context_view.sysml +3 -5
- package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +2 -3
- package/src/viewpoints/definitions/memo_view_layout.sysml +150 -0
- package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +0 -4
- package/src/viewpoints/functional/functional_viewpoint.sysml +2 -3
- package/src/viewpoints/functional/views/function_allocation_view/function_allocation_view.sysml +2 -4
- package/src/viewpoints/functional/views/system_functional_tree_view/system_functional_tree_view.sysml +2 -4
- package/src/viewpoints/logical/logical_viewpoint.sysml +2 -3
- package/src/viewpoints/logical/views/logical_architecture_view/logical_architecture_view.sysml +2 -4
- package/src/viewpoints/operational/operational_viewpoint.sysml +2 -3
- package/src/viewpoints/operational/views/use_case_view/use_case_view.sysml +3 -5
- package/src/viewpoints/physical/physical_viewpoint.sysml +2 -3
- package/src/viewpoints/physical/views/network_topology_view/network_topology_view.sysml +2 -4
- package/src/viewpoints/physical/views/physical_bom_view/physical_bom_view.sysml +2 -4
- package/src/viewpoints/rendering/memo_rendering.sysml +50 -98
- package/src/viewpoints/requirements/requirements_viewpoint.sysml +2 -3
- package/src/viewpoints/requirements/views/requirements_traceability_view/requirements_traceability_view.sysml +2 -4
- package/src/viewpoints/risk/risk_viewpoint.sysml +2 -3
- package/src/viewpoints/risk/views/risk_chain_view/risk_chain_view.sysml +2 -4
- package/src/viewpoints/software/software_viewpoint.sysml +2 -3
- package/src/viewpoints/software/views/software_architecture_view/software_architecture_view.sysml +3 -5
- package/src/viewpoints/stakeholders_concerns/memo_stakeholders_concerns.sysml +11 -29
- package/src/viewpoints/ui_layout/ui_layout_viewpoint.sysml +2 -3
- package/src/viewpoints/ui_layout/views/screen_layout_view/screen_layout_view.sysml +1 -1
- package/src/viewpoints/usability/usability_viewpoint.sysml +2 -3
- package/src/viewpoints/verification/verification_viewpoint.sysml +2 -3
- package/src/viewpoints/verification/views/verification_coverage_view/verification_coverage_view.sysml +2 -4
- package/stage1/syside-67f92dc96ba75cd05b5c8d13.ids.gz +0 -0
- package/stage1/syside-67f92dc96ba75cd05b5c8d13.json.gz +0 -0
- package/templates/default/memo.package.yaml +6 -1
- package/templates/default/model/catalog/architecture/system.sysml +7 -3
- package/templates/default/model/{catalog → methodology}/project.sysml +3 -4
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.viewlayout +0 -47
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.viewlayout +0 -94
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.viewlayout +0 -13
- package/examples/ui-screen-regions/model/catalog/relationships.sysml +0 -8
- package/extensions/aadl/src/methodology/aadl_methodology.sysml +0 -19
- package/extensions/clinical/src/methodology/clinical_methodology.sysml +0 -24
- package/extensions/cloud/src/methodology/cloud_methodology.sysml +0 -19
- package/extensions/container/src/methodology/container_methodology.sysml +0 -19
- package/extensions/messaging/src/methodology/messaging_methodology.sysml +0 -19
- package/extensions/ros/src/methodology/ros_methodology.sysml +0 -27
- package/extensions/template/src/extension.sysml +0 -39
- package/templates/connected-device/memo.package.yaml +0 -13
- package/templates/connected-device/model/catalog/architecture/system.sysml +0 -5
- package/templates/connected-device/model/catalog/artifacts/catalog.sysml +0 -5
- package/templates/connected-device/model/catalog/assurance/requirements.sysml +0 -7
- package/templates/connected-device/model/catalog/project.sysml +0 -30
- package/templates/connected-device/package.json +0 -8
- package/templates/connected-device/syside.toml +0 -13
- package/templates/infusion-pump/memo.package.yaml +0 -13
- package/templates/infusion-pump/model/catalog/architecture/system.sysml +0 -5
- package/templates/infusion-pump/model/catalog/artifacts/catalog.sysml +0 -5
- package/templates/infusion-pump/model/catalog/assurance/requirements.sysml +0 -7
- package/templates/infusion-pump/model/catalog/project.sysml +0 -30
- package/templates/infusion-pump/package.json +0 -8
- package/templates/infusion-pump/syside.toml +0 -13
- package/templates/monitoring-device/memo.package.yaml +0 -13
- package/templates/monitoring-device/model/catalog/architecture/system.sysml +0 -5
- package/templates/monitoring-device/model/catalog/artifacts/catalog.sysml +0 -5
- package/templates/monitoring-device/model/catalog/assurance/requirements.sysml +0 -7
- package/templates/monitoring-device/model/catalog/project.sysml +0 -30
- package/templates/monitoring-device/package.json +0 -8
- package/templates/monitoring-device/syside.toml +0 -13
- package/templates/samd/memo.package.yaml +0 -13
- package/templates/samd/model/catalog/architecture/system.sysml +0 -5
- package/templates/samd/model/catalog/artifacts/catalog.sysml +0 -5
- package/templates/samd/model/catalog/assurance/requirements.sysml +0 -7
- package/templates/samd/model/catalog/project.sysml +0 -30
- package/templates/samd/package.json +0 -8
- package/templates/samd/syside.toml +0 -13
|
@@ -6,14 +6,16 @@ package memo_methodology_core {
|
|
|
6
6
|
private import memo_core_common::*;
|
|
7
7
|
private import memo_core_enumerations::*;
|
|
8
8
|
private import memo_core_consistency_rules::*;
|
|
9
|
+
private import memo_artifacts_standards_traceability::RegulatoryStandard;
|
|
10
|
+
private import memo_viewpoints_definitions::MemoViewpoint;
|
|
11
|
+
private import memo_viewpoints_stakeholders_concerns::MemoStakeholder;
|
|
9
12
|
|
|
10
13
|
part def MethodologyLibrary :> MemoPart {
|
|
11
14
|
attribute version : String;
|
|
12
15
|
attribute domain : String;
|
|
13
|
-
attribute :>> description : String;
|
|
14
16
|
}
|
|
15
17
|
|
|
16
|
-
// A rule's disposition under one methodology or
|
|
18
|
+
// A rule's disposition under one methodology or model binding.
|
|
17
19
|
//
|
|
18
20
|
// `targetRule` and `replacementRule` are typed references to the rule's own
|
|
19
21
|
// `constraint def`, narrowed at the usage with `ref :>> targetRule : <Rule>`.
|
|
@@ -22,8 +24,21 @@ package memo_methodology_core {
|
|
|
22
24
|
// would be a MEMO-specific identifier where the language has one. The
|
|
23
25
|
// stable rule ID survives on the rule itself, for audit records and
|
|
24
26
|
// diagnostics — a different job from being the reference mechanism.
|
|
27
|
+
//
|
|
28
|
+
// A policy selects what it governs in ONE of three ways. A rule (`targetRule`),
|
|
29
|
+
// as above; every rule that enforces a clause of a standard
|
|
30
|
+
// (`targetStandard`, written `ref :>> targetStandard = <standard>;`); or every
|
|
31
|
+
// rule whose subject kind sits in a layer (`targetCategory`, a layer
|
|
32
|
+
// namespace by name, `"memo_assurance_safety_risk"`: a value cannot
|
|
33
|
+
// reference a package, so this one stays a string). A selection of several rules is
|
|
34
|
+
// still one decision with one rationale and one approval, so the tailoring
|
|
35
|
+
// record reports it once, with the rules it reached; a rule added later that
|
|
36
|
+
// the selection matches is covered by it. An invariant in the selection keeps
|
|
37
|
+
// running, as it does for a policy naming it.
|
|
25
38
|
part def RulePolicy :> MemoPart {
|
|
26
|
-
ref targetRule : MemoConsistencyRule;
|
|
39
|
+
ref targetRule : MemoConsistencyRule[0..1];
|
|
40
|
+
ref targetStandard : RegulatoryStandard[0..1];
|
|
41
|
+
attribute targetCategory : String[0..1];
|
|
27
42
|
// A replacement must be another native constraint. A methodology
|
|
28
43
|
// cannot replace a predicate with a string expression stored here.
|
|
29
44
|
ref replacementRule : MemoConsistencyRule[0..1];
|
|
@@ -39,25 +54,56 @@ package memo_methodology_core {
|
|
|
39
54
|
part def MethodologyDefinition :> MemoPart {
|
|
40
55
|
attribute version : String;
|
|
41
56
|
attribute domain : String;
|
|
42
|
-
attribute :>> description : String;
|
|
43
57
|
// Exactly one base methodology at most. Multiple inheritance is not a
|
|
44
58
|
// multiplicity the resolver has conflict semantics for, so the model
|
|
45
59
|
// does not permit expressing it.
|
|
46
60
|
ref baseMethodology : MethodologyDefinition[0..1];
|
|
47
|
-
// Whether the
|
|
48
|
-
//
|
|
61
|
+
// Whether the selection below is the whole story. Under `explicit`,
|
|
62
|
+
// what is not selected is out of scope; under `allAvailable`, every
|
|
63
|
+
// package the project resolved is in scope and the methodology selects
|
|
64
|
+
// nothing itself.
|
|
49
65
|
attribute scopeMode : ScopeModeKind;
|
|
50
|
-
//
|
|
51
|
-
//
|
|
52
|
-
//
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
66
|
+
// The packages a methodology selects are not listed here. They are
|
|
67
|
+
// what the package declaring the methodology PUBLICLY imports:
|
|
68
|
+
//
|
|
69
|
+
// public import memo_architecture_logical::*; // a layer
|
|
70
|
+
// public import memo_assurance_safety_risk::*; // one package
|
|
71
|
+
// public import memo_extension_ros::*; // an extension
|
|
72
|
+
//
|
|
73
|
+
// A public import is how SysML says a package passes another's members
|
|
74
|
+
// on to whoever imports it, so the selection is the import, followed
|
|
75
|
+
// transitively through public imports; a private import is the
|
|
76
|
+
// package's own business and selects nothing. A layer and an extension
|
|
77
|
+
// each have one package that publicly imports all of theirs. Because
|
|
78
|
+
// the package is the selection, a package declares one methodology.
|
|
79
|
+
// A project adds to the selection the same way, from its entrypoint
|
|
80
|
+
// package. A misspelled package is an import the compiler rejects.
|
|
81
|
+
//
|
|
82
|
+
// The standards, artifact kinds and viewpoints a methodology selects
|
|
83
|
+
// are TYPED: a standard is a RegulatoryStandard, an artifact kind is an
|
|
84
|
+
// ArtifactKind literal, a viewpoint is a MemoViewpoint. They were
|
|
85
|
+
// strings ("ISO 14155", "RiskManagementPlan", "VP-CTX"), and three
|
|
86
|
+
// standards and an artifact kind in the GPCA methodology named nothing
|
|
87
|
+
// the ontology declares: a string that matches nothing selects nothing,
|
|
88
|
+
// and nothing said so. Now the compiler does.
|
|
89
|
+
ref includedStandard : RegulatoryStandard[0..*];
|
|
90
|
+
attribute includedArtifactKind : ArtifactKind[0..*];
|
|
91
|
+
ref includedViewpoint : MemoViewpoint[0..*];
|
|
58
92
|
part rulePolicy : RulePolicy[0..*];
|
|
59
93
|
}
|
|
60
94
|
|
|
95
|
+
// Which viewpoints a role works with (plan O12). A viewpoint names the stakeholders it is written for,
|
|
96
|
+
// and that is what a role sees by default; a methodology may say otherwise for a role, and then THIS is
|
|
97
|
+
// what the role sees, an override and not an addition. A method that names a base starts from its
|
|
98
|
+
// role views, and a later one for the same stakeholder replaces the earlier.
|
|
99
|
+
//
|
|
100
|
+
// part rvSafety : RoleView { ref :>> forStakeholder = safetyEngineer; ref :>> shownViewpoint = (vpRiskChain, vpEvidenceTraceability); }
|
|
101
|
+
part def RoleView :> MemoPart {
|
|
102
|
+
// `stakeholder` and `viewpoint` are SysML keywords, so neither names a feature.
|
|
103
|
+
ref forStakeholder : MemoStakeholder;
|
|
104
|
+
ref shownViewpoint : MemoViewpoint[0..*];
|
|
105
|
+
}
|
|
106
|
+
|
|
61
107
|
// Derived, never authored. The resolver projects this from a binding and
|
|
62
108
|
// its methodology chain. If it is serialized for review it is generated
|
|
63
109
|
// output that records its input hashes; it does not compete with the
|
|
@@ -65,32 +111,43 @@ package memo_methodology_core {
|
|
|
65
111
|
// instances of it.
|
|
66
112
|
part def ResolvedMethodology :> MemoPart {
|
|
67
113
|
attribute version : String;
|
|
68
|
-
// The effective inclusion set after the project binding has added any
|
|
69
|
-
// project- or supplier-specific modules.
|
|
70
|
-
attribute includedLayer : String[0..*];
|
|
71
|
-
attribute includedModule : String[0..*];
|
|
72
114
|
}
|
|
73
115
|
|
|
74
|
-
|
|
75
|
-
|
|
116
|
+
// What a model is bound to: its name, the methodology it is governed by,
|
|
117
|
+
// and the rule policies it adds. "Model" is what Architect opens, one
|
|
118
|
+
// repository and one compile; "project" means a change set in an iteration.
|
|
119
|
+
part def ModelMethodBinding :> MemoPart {
|
|
120
|
+
attribute modelName : String;
|
|
76
121
|
ref selectedMethodology : MethodologyDefinition;
|
|
77
|
-
//
|
|
78
|
-
//
|
|
122
|
+
// `allAvailable` widens the model to every package it resolved,
|
|
123
|
+
// whatever the methodology selects; anything else leaves the
|
|
124
|
+
// methodology's mode in force. A model ADDS packages to the
|
|
125
|
+
// selection by importing them publicly in the package that declares
|
|
126
|
+
// this binding (`public import memo_extension_ros::*;`), the same way
|
|
127
|
+
// a methodology selects them. There is no list to keep beside it.
|
|
79
128
|
attribute scopeMode : ScopeModeKind;
|
|
80
|
-
//
|
|
81
|
-
// methodology without requiring those packages to live under memo::.
|
|
82
|
-
attribute includedModule : String[0..*];
|
|
83
|
-
// The submission regimes this project targets, declared once here.
|
|
129
|
+
// The submission regimes this model targets, declared once here.
|
|
84
130
|
// Everything downstream that needs to know which standards apply —
|
|
85
131
|
// `memo standards check`, the standards checklist, the Architect gap
|
|
86
|
-
// badges — reads this, so the regime axis is a
|
|
132
|
+
// badges — reads this, so the regime axis is a model fact stated in
|
|
87
133
|
// SysML rather than a per-document array maintained in 44 places.
|
|
88
|
-
// Empty means the
|
|
134
|
+
// Empty means the model has not declared its regimes; a report that
|
|
89
135
|
// needs them says so rather than assuming a default market.
|
|
136
|
+
//
|
|
137
|
+
// DEPRECATED in 0.14.0 (plan O1, O6): a `RegulatedDevice` states its own
|
|
138
|
+
// jurisdiction, one approval each. This is read only when the model declares
|
|
139
|
+
// no device, and ignored with a warning when it declares both.
|
|
90
140
|
attribute regulatoryRegime : RegulatoryRegimeKind[0..*];
|
|
91
141
|
part rulePolicy : RulePolicy[0..*];
|
|
92
142
|
}
|
|
93
143
|
|
|
144
|
+
// DEPRECATED in 0.14.0, deleted in 0.15.0: the former spelling of
|
|
145
|
+
// ModelMethodBinding, kept so a model written with it still binds. MEMO
|
|
146
|
+
// reads `projectName` when `modelName` is absent and warns on either.
|
|
147
|
+
part def ProjectMethodBinding :> ModelMethodBinding {
|
|
148
|
+
attribute projectName : String;
|
|
149
|
+
}
|
|
150
|
+
|
|
94
151
|
part def DhfDocumentBinding :> MemoPart {
|
|
95
152
|
attribute documentTitle : String;
|
|
96
153
|
attribute groupLabel : String;
|
|
@@ -103,7 +160,6 @@ package memo_methodology_core {
|
|
|
103
160
|
|
|
104
161
|
part def Archetype :> MemoPart {
|
|
105
162
|
attribute label : String;
|
|
106
|
-
attribute :>> description : String;
|
|
107
163
|
attribute category : String;
|
|
108
164
|
attribute includedLayer : String;
|
|
109
165
|
attribute includedStandard : String;
|
|
@@ -6,25 +6,28 @@ package memo_methodology_profiles {
|
|
|
6
6
|
private import memo_methodology_patterns::*;
|
|
7
7
|
private import memo_methodology_workflow::*;
|
|
8
8
|
private import memo_methodology_gates::*;
|
|
9
|
+
private import memo_rules_closure::*;
|
|
10
|
+
private import memo_viewpoints_catalog::*;
|
|
11
|
+
private import memo_viewpoints_stakeholders_concerns::*;
|
|
9
12
|
private import memo_core_enumerations::*;
|
|
10
13
|
private import memo_core_methodology_scope::*;
|
|
11
14
|
|
|
12
15
|
private import memo_core_common::*;
|
|
13
16
|
private import memo_core_common::MemoIdentity;
|
|
14
17
|
part mdCoreLibrary : MethodologyLibrary {
|
|
15
|
-
@MemoIdentity { :>> providedId = "METHLIB-001"; }
|
|
16
|
-
attribute :>>
|
|
17
|
-
attribute :>> version = "0.1";
|
|
18
|
+
@MemoIdentity { :>> providedId = "METHLIB-001"; :>> label = "MedicalDeviceMethodologyLibrary"; }
|
|
19
|
+
attribute :>> version = "0.15.0";
|
|
18
20
|
attribute :>> domain = "medical device modeling";
|
|
19
|
-
|
|
21
|
+
doc /* Methodology layer for selecting, restricting, sequencing, tailoring, and lightly extending use of the medical-device ontology. */
|
|
20
22
|
}
|
|
21
23
|
|
|
22
24
|
// The default methodology deliberately selects everything the project's
|
|
23
25
|
// resolved reusable packages provide. That is what `scopeMode` exists to
|
|
24
26
|
// say: `allAvailable` is an authored decision, not an empty list that the
|
|
25
|
-
// resolver silently reads as "allow everything". Under `allAvailable`
|
|
26
|
-
//
|
|
27
|
-
//
|
|
27
|
+
// resolver silently reads as "allow everything". Under `allAvailable` this
|
|
28
|
+
// package imports nothing publicly — a methodology selects by its
|
|
29
|
+
// package's public imports, and stating both would leave two competing
|
|
30
|
+
// answers to the same question.
|
|
28
31
|
//
|
|
29
32
|
// Before the flip this methodology carried a narrower `includedLayer` /
|
|
30
33
|
// `includedModule` pair that nothing consumed: effective scope came from
|
|
@@ -33,100 +36,257 @@ package memo_methodology_profiles {
|
|
|
33
36
|
// that into `allAvailable` preserves the effective result and removes the
|
|
34
37
|
// second scope authority.
|
|
35
38
|
part mdDefaultDefinition : MethodologyDefinition {
|
|
36
|
-
@MemoIdentity { :>> providedId = "METH-MD-DEFAULT"; }
|
|
37
|
-
attribute :>>
|
|
38
|
-
attribute :>> version = "0.6.5";
|
|
39
|
+
@MemoIdentity { :>> providedId = "METH-MD-DEFAULT"; :>> label = "MedicalDeviceDefault"; }
|
|
40
|
+
attribute :>> version = "0.15.0";
|
|
39
41
|
attribute :>> domain = "medical device modeling";
|
|
40
|
-
|
|
42
|
+
doc /* MEMO default medical-device methodology. Selects every layer, discipline, standard, artifact kind, and viewpoint the resolved ontology and extension packages provide. */
|
|
41
43
|
attribute :>> scopeMode = ScopeModeKind::allAvailable;
|
|
42
44
|
}
|
|
43
45
|
|
|
44
46
|
part useRiskAndResidualRule : ElementUsageRule {
|
|
45
|
-
@MemoIdentity { :>> providedId = "RULE-001"; }
|
|
46
|
-
attribute :>> name = "UseRiskAndResidualRisk";
|
|
47
|
+
@MemoIdentity { :>> providedId = "RULE-001"; :>> label = "UseRiskAndResidualRisk"; }
|
|
47
48
|
attribute :>> elementTypeName = "Risk,ResidualRisk,RiskMatrix";
|
|
48
49
|
attribute :>> strength = RuleStrengthKind::recommended;
|
|
49
50
|
attribute :>> rationaleText = "Even a light methodology should distinguish pre- and post-mitigation risk and assess against a matrix.";
|
|
50
51
|
}
|
|
51
52
|
|
|
52
53
|
part requireVerifiedByRule : RelationUsageRule {
|
|
53
|
-
@MemoIdentity { :>> providedId = "RULE-002"; }
|
|
54
|
-
attribute :>>
|
|
55
|
-
attribute :>> relationTypeName = "verify";
|
|
54
|
+
@MemoIdentity { :>> providedId = "RULE-002"; :>> label = "VerifiedBysRequired"; }
|
|
55
|
+
attribute :>> relationTypeName = "verifiedBy";
|
|
56
56
|
attribute :>> strength = RuleStrengthKind::required;
|
|
57
57
|
attribute :>> rationaleText = "Safety-relevant requirements and controls shall trace to verification.";
|
|
58
58
|
}
|
|
59
59
|
|
|
60
60
|
part lightRiskPattern : ModelingPattern {
|
|
61
|
-
@MemoIdentity { :>> providedId = "PAT-001"; }
|
|
62
|
-
attribute :>> name = "LightRiskBeforeAfterPattern";
|
|
61
|
+
@MemoIdentity { :>> providedId = "PAT-001"; :>> label = "LightRiskBeforeAfterPattern"; }
|
|
63
62
|
attribute :>> intent = "Model hazard chain, before/after mitigation risk, controls, and residual evaluation in a lightweight way.";
|
|
64
63
|
attribute :>> stage = WorkflowStageKind::risk;
|
|
65
64
|
attribute :>> strength = RuleStrengthKind::recommended;
|
|
66
65
|
}
|
|
67
66
|
|
|
68
67
|
part lightTracePattern : ModelingPattern {
|
|
69
|
-
@MemoIdentity { :>> providedId = "PAT-002"; }
|
|
70
|
-
attribute :>> name = "CoreTracePattern";
|
|
68
|
+
@MemoIdentity { :>> providedId = "PAT-002"; :>> label = "CoreTracePattern"; }
|
|
71
69
|
attribute :>> intent = "Need or risk to requirement, requirement to architecture, requirement/control to verification.";
|
|
72
70
|
attribute :>> stage = WorkflowStageKind::requirements;
|
|
73
71
|
attribute :>> strength = RuleStrengthKind::required;
|
|
74
72
|
}
|
|
75
73
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
attribute :>>
|
|
82
|
-
attribute :>>
|
|
74
|
+
// The default method (plan O11): the steps a family works through, at the system of systems
|
|
75
|
+
// and at each system. `outputKinds` and the rules a step is `#DoneWhen` say when it is done.
|
|
76
|
+
|
|
77
|
+
action stepSosContext : MethodologyWorkflowStep {
|
|
78
|
+
@MemoIdentity { :>> providedId = "STEP-SOS-01"; :>> label = "SosContext"; }
|
|
79
|
+
attribute :>> stage = WorkflowStageKind::context;
|
|
80
|
+
attribute :>> level = MethodLevelKind::systemOfSystems;
|
|
81
|
+
ref :>> role = projectLead;
|
|
82
|
+
ref :>> guideViewpoint = vpSystemContext;
|
|
83
|
+
attribute :>> outputKinds = ("SystemOfSystems", "System");
|
|
84
|
+
attribute :>> objectiveDescription = "State the system of systems and the systems it is made of.";
|
|
85
|
+
attribute :>> entryCriteria = "The family is chosen.";
|
|
86
|
+
attribute :>> exitCriteria = "The system of systems and its constituent systems are declared.";
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
action stepSosOperational : MethodologyWorkflowStep {
|
|
90
|
+
@MemoIdentity { :>> providedId = "STEP-SOS-02"; :>> label = "SosOperationalAnalysis"; }
|
|
91
|
+
attribute :>> stage = WorkflowStageKind::operational;
|
|
92
|
+
attribute :>> level = MethodLevelKind::systemOfSystems;
|
|
93
|
+
ref :>> role = systemArchitect;
|
|
94
|
+
ref :>> guideViewpoint = vpUseCase;
|
|
95
|
+
attribute :>> outputKinds = ("UseCase", "OperationalWorkflow");
|
|
96
|
+
attribute :>> objectiveDescription = "Describe the clinical procedures the systems serve together, and the workflows that realize them.";
|
|
97
|
+
attribute :>> entryCriteria = "The constituent systems are declared.";
|
|
98
|
+
attribute :>> exitCriteria = "Each clinical procedure has a workflow.";
|
|
83
99
|
}
|
|
84
100
|
|
|
85
|
-
action
|
|
86
|
-
@MemoIdentity { :>> providedId = "STEP-
|
|
87
|
-
attribute :>>
|
|
101
|
+
action stepSosFunctions : MethodologyWorkflowStep {
|
|
102
|
+
@MemoIdentity { :>> providedId = "STEP-SOS-03"; :>> label = "SosFunctionsAndChains"; }
|
|
103
|
+
attribute :>> stage = WorkflowStageKind::functional;
|
|
104
|
+
attribute :>> level = MethodLevelKind::systemOfSystems;
|
|
105
|
+
ref :>> role = systemArchitect;
|
|
106
|
+
ref :>> guideViewpoint = vpFunctionalFlow;
|
|
107
|
+
attribute :>> outputKinds = ("FunctionalFlow");
|
|
108
|
+
attribute :>> objectiveDescription = "Follow the functions across the systems in functional chains.";
|
|
109
|
+
attribute :>> entryCriteria = "Clinical procedures and workflows exist.";
|
|
110
|
+
attribute :>> exitCriteria = "Each cross-system chain is stated.";
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
action stepSosArchitecture : MethodologyWorkflowStep {
|
|
114
|
+
@MemoIdentity { :>> providedId = "STEP-SOS-04"; :>> label = "SosArchitecture"; }
|
|
88
115
|
attribute :>> stage = WorkflowStageKind::architecture;
|
|
89
|
-
attribute :>>
|
|
90
|
-
|
|
91
|
-
|
|
116
|
+
attribute :>> level = MethodLevelKind::systemOfSystems;
|
|
117
|
+
ref :>> role = systemArchitect;
|
|
118
|
+
ref :>> guideViewpoint = vpSystemDecomposition;
|
|
119
|
+
attribute :>> outputKinds = ("Interface");
|
|
120
|
+
attribute :>> objectiveDescription = "Define the interfaces between the systems.";
|
|
121
|
+
attribute :>> entryCriteria = "Functional chains exist.";
|
|
122
|
+
attribute :>> exitCriteria = "Each pair of systems that exchange something has an interface.";
|
|
92
123
|
}
|
|
93
124
|
|
|
94
|
-
action
|
|
95
|
-
@MemoIdentity { :>> providedId = "STEP-
|
|
96
|
-
attribute :>> name = "PerformRiskAnalysis";
|
|
125
|
+
action stepSosHazards : MethodologyWorkflowStep {
|
|
126
|
+
@MemoIdentity { :>> providedId = "STEP-SOS-05"; :>> label = "SosHazards"; }
|
|
97
127
|
attribute :>> stage = WorkflowStageKind::risk;
|
|
98
|
-
attribute :>>
|
|
99
|
-
|
|
100
|
-
|
|
128
|
+
attribute :>> level = MethodLevelKind::systemOfSystems;
|
|
129
|
+
ref :>> role = safetyEngineer;
|
|
130
|
+
ref :>> guideViewpoint = vpRiskChain;
|
|
131
|
+
attribute :>> outputKinds = ("Hazard");
|
|
132
|
+
attribute :>> objectiveDescription = "Identify the hazards that arise only from the systems working together.";
|
|
133
|
+
attribute :>> entryCriteria = "The architecture and its interfaces exist.";
|
|
134
|
+
attribute :>> exitCriteria = "Each hazard of the combination has a control.";
|
|
135
|
+
}
|
|
136
|
+
#DoneWhen dependency from stepSosHazards to memo_rules_closure::HazardMitigationRule;
|
|
137
|
+
|
|
138
|
+
action stepSysOperational : MethodologyWorkflowStep {
|
|
139
|
+
@MemoIdentity { :>> providedId = "STEP-SYS-01"; :>> label = "SystemOperational"; }
|
|
140
|
+
attribute :>> stage = WorkflowStageKind::operational;
|
|
141
|
+
attribute :>> level = MethodLevelKind::system;
|
|
142
|
+
ref :>> role = systemArchitect;
|
|
143
|
+
ref :>> guideViewpoint = vpUseCase;
|
|
144
|
+
attribute :>> outputKinds = ("UseCase");
|
|
145
|
+
attribute :>> objectiveDescription = "State what the system is used for.";
|
|
146
|
+
attribute :>> entryCriteria = "The system is declared.";
|
|
147
|
+
attribute :>> exitCriteria = "Each use of the system is a use case.";
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
action stepSysFunctional : MethodologyWorkflowStep {
|
|
151
|
+
@MemoIdentity { :>> providedId = "STEP-SYS-02"; :>> label = "SystemFunctional"; }
|
|
152
|
+
attribute :>> stage = WorkflowStageKind::functional;
|
|
153
|
+
attribute :>> level = MethodLevelKind::system;
|
|
154
|
+
ref :>> role = systemArchitect;
|
|
155
|
+
ref :>> guideViewpoint = vpFunctionalArchitecture;
|
|
156
|
+
attribute :>> outputKinds = ("SystemFunction");
|
|
157
|
+
attribute :>> objectiveDescription = "State what the system does.";
|
|
158
|
+
attribute :>> entryCriteria = "The system use cases exist.";
|
|
159
|
+
attribute :>> exitCriteria = "Each function is stated.";
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
action stepSysLogical : MethodologyWorkflowStep {
|
|
163
|
+
@MemoIdentity { :>> providedId = "STEP-SYS-03"; :>> label = "SystemLogical"; }
|
|
164
|
+
attribute :>> stage = WorkflowStageKind::logical;
|
|
165
|
+
attribute :>> level = MethodLevelKind::system;
|
|
166
|
+
ref :>> role = systemArchitect;
|
|
167
|
+
ref :>> guideViewpoint = vpLogicalArchitecture;
|
|
168
|
+
attribute :>> outputKinds = ("LogicalComponent");
|
|
169
|
+
attribute :>> objectiveDescription = "Divide the system into logical components and allocate its functions.";
|
|
170
|
+
attribute :>> entryCriteria = "The system functions exist.";
|
|
171
|
+
attribute :>> exitCriteria = "Every function is allocated to a component.";
|
|
172
|
+
}
|
|
173
|
+
#DoneWhen dependency from stepSysLogical to memo_rules_closure::LogicalFunctionAllocationRule;
|
|
174
|
+
|
|
175
|
+
action stepSysHardware : MethodologyWorkflowStep {
|
|
176
|
+
@MemoIdentity { :>> providedId = "STEP-SYS-04"; :>> label = "SystemHardware"; }
|
|
177
|
+
attribute :>> stage = WorkflowStageKind::physical;
|
|
178
|
+
attribute :>> level = MethodLevelKind::system;
|
|
179
|
+
ref :>> role = hardwareEngineer;
|
|
180
|
+
ref :>> guideViewpoint = vpHardwareArchitecture;
|
|
181
|
+
attribute :>> outputKinds = ("PhysicalAssembly");
|
|
182
|
+
attribute :>> objectiveDescription = "Realize the logical components in hardware.";
|
|
183
|
+
attribute :>> entryCriteria = "The logical components exist.";
|
|
184
|
+
attribute :>> exitCriteria = "The hardware assemblies are declared.";
|
|
101
185
|
}
|
|
102
186
|
|
|
103
|
-
action
|
|
104
|
-
@MemoIdentity { :>> providedId = "STEP-
|
|
105
|
-
attribute :>>
|
|
187
|
+
action stepSysSoftware : MethodologyWorkflowStep {
|
|
188
|
+
@MemoIdentity { :>> providedId = "STEP-SYS-05"; :>> label = "SystemSoftware"; }
|
|
189
|
+
attribute :>> stage = WorkflowStageKind::physical;
|
|
190
|
+
attribute :>> level = MethodLevelKind::system;
|
|
191
|
+
ref :>> role = softwareArchitect;
|
|
192
|
+
ref :>> guideViewpoint = vpSoftwareComponents;
|
|
193
|
+
attribute :>> outputKinds = ("SoftwareSystem");
|
|
194
|
+
attribute :>> objectiveDescription = "Realize the logical components in software.";
|
|
195
|
+
attribute :>> entryCriteria = "The logical components exist.";
|
|
196
|
+
attribute :>> exitCriteria = "The software is declared.";
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
action stepSysHumanFactors : MethodologyWorkflowStep {
|
|
200
|
+
@MemoIdentity { :>> providedId = "STEP-SYS-06"; :>> label = "SystemHumanFactors"; }
|
|
201
|
+
attribute :>> stage = WorkflowStageKind::humanFactors;
|
|
202
|
+
attribute :>> level = MethodLevelKind::system;
|
|
203
|
+
ref :>> role = usabilityEngineer;
|
|
204
|
+
ref :>> guideViewpoint = vpHumanFactors;
|
|
205
|
+
attribute :>> outputKinds = ("UserInterface");
|
|
206
|
+
attribute :>> objectiveDescription = "Design how people use the system.";
|
|
207
|
+
attribute :>> entryCriteria = "The system use cases exist.";
|
|
208
|
+
attribute :>> exitCriteria = "The user interface is declared.";
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
action stepSysRisk : MethodologyWorkflowStep {
|
|
212
|
+
@MemoIdentity { :>> providedId = "STEP-SYS-07"; :>> label = "SystemRisk"; }
|
|
213
|
+
attribute :>> stage = WorkflowStageKind::risk;
|
|
214
|
+
attribute :>> level = MethodLevelKind::system;
|
|
215
|
+
ref :>> role = safetyEngineer;
|
|
216
|
+
ref :>> guideViewpoint = vpRiskChain;
|
|
217
|
+
attribute :>> outputKinds = ("Hazard", "Risk");
|
|
218
|
+
attribute :>> objectiveDescription = "Identify hazards, estimate risk and state the controls.";
|
|
219
|
+
attribute :>> entryCriteria = "The system functions exist.";
|
|
220
|
+
attribute :>> exitCriteria = "Each hazard has a control.";
|
|
221
|
+
}
|
|
222
|
+
#DoneWhen dependency from stepSysRisk to memo_rules_closure::HazardMitigationRule;
|
|
223
|
+
|
|
224
|
+
action stepSysSecurity : MethodologyWorkflowStep {
|
|
225
|
+
@MemoIdentity { :>> providedId = "STEP-SYS-08"; :>> label = "SystemSecurity"; }
|
|
226
|
+
attribute :>> stage = WorkflowStageKind::security;
|
|
227
|
+
attribute :>> level = MethodLevelKind::system;
|
|
228
|
+
ref :>> role = securityEngineer;
|
|
229
|
+
ref :>> guideViewpoint = vpCybersecurity;
|
|
230
|
+
attribute :>> outputKinds = ("Threat");
|
|
231
|
+
attribute :>> objectiveDescription = "Identify threats and state the mitigations.";
|
|
232
|
+
attribute :>> entryCriteria = "The system functions exist.";
|
|
233
|
+
attribute :>> exitCriteria = "Each threat is mitigated.";
|
|
234
|
+
}
|
|
235
|
+
#DoneWhen dependency from stepSysSecurity to memo_rules_closure::ThreatMitigationRule;
|
|
236
|
+
|
|
237
|
+
action stepSysVerification : MethodologyWorkflowStep {
|
|
238
|
+
@MemoIdentity { :>> providedId = "STEP-SYS-09"; :>> label = "SystemVerification"; }
|
|
106
239
|
attribute :>> stage = WorkflowStageKind::verificationStage;
|
|
107
|
-
attribute :>>
|
|
108
|
-
|
|
109
|
-
|
|
240
|
+
attribute :>> level = MethodLevelKind::system;
|
|
241
|
+
ref :>> role = verificationEngineer;
|
|
242
|
+
ref :>> guideViewpoint = vpVerificationCoverage;
|
|
243
|
+
attribute :>> outputKinds = ("VerificationCase");
|
|
244
|
+
attribute :>> objectiveDescription = "Verify what the system must do and the controls it relies on.";
|
|
245
|
+
attribute :>> entryCriteria = "Risks and their controls exist.";
|
|
246
|
+
attribute :>> exitCriteria = "Each verification case has a target.";
|
|
247
|
+
}
|
|
248
|
+
#DoneWhen dependency from stepSysVerification to memo_rules_closure::VerificationCaseTargetRule;
|
|
249
|
+
|
|
250
|
+
action stepSysRelease : MethodologyWorkflowStep {
|
|
251
|
+
@MemoIdentity { :>> providedId = "STEP-SYS-10"; :>> label = "SystemRelease"; }
|
|
252
|
+
attribute :>> stage = WorkflowStageKind::release;
|
|
253
|
+
attribute :>> level = MethodLevelKind::system;
|
|
254
|
+
ref :>> role = regulatoryEngineer;
|
|
255
|
+
attribute :>> outputKinds = ("ReleaseRecord");
|
|
256
|
+
attribute :>> objectiveDescription = "Release the system: its part number, revision and the commit it was built from.";
|
|
257
|
+
attribute :>> entryCriteria = "The system is verified.";
|
|
258
|
+
attribute :>> exitCriteria = "The release has a record.";
|
|
110
259
|
}
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
first
|
|
260
|
+
|
|
261
|
+
// Order, within a level.
|
|
262
|
+
first stepSosContext then stepSosOperational;
|
|
263
|
+
first stepSosOperational then stepSosFunctions;
|
|
264
|
+
first stepSosFunctions then stepSosArchitecture;
|
|
265
|
+
first stepSosArchitecture then stepSosHazards;
|
|
266
|
+
|
|
267
|
+
first stepSysOperational then stepSysFunctional;
|
|
268
|
+
first stepSysFunctional then stepSysLogical;
|
|
269
|
+
first stepSysLogical then stepSysHardware;
|
|
270
|
+
first stepSysLogical then stepSysSoftware;
|
|
271
|
+
first stepSysOperational then stepSysHumanFactors;
|
|
272
|
+
first stepSysFunctional then stepSysRisk;
|
|
273
|
+
first stepSysFunctional then stepSysSecurity;
|
|
274
|
+
first stepSysRisk then stepSysVerification;
|
|
275
|
+
first stepSysVerification then stepSysRelease;
|
|
114
276
|
|
|
115
277
|
part gateLightComplete : QualityGate {
|
|
116
|
-
@MemoIdentity { :>> providedId = "GATE-001"; }
|
|
117
|
-
attribute :>> name = "LightMethodReady";
|
|
278
|
+
@MemoIdentity { :>> providedId = "GATE-001"; :>> label = "LightMethodReady"; }
|
|
118
279
|
attribute :>> gateStage = WorkflowStageKind::verificationStage;
|
|
119
280
|
attribute :>> passCriteria = "Core traceability, risk, verification, and RMF view support are present.";
|
|
120
281
|
}
|
|
121
282
|
|
|
122
283
|
// The GPCA binding used to live here, in the reusable default methodology,
|
|
123
284
|
// naming its methodology by string. A project binding is project content:
|
|
124
|
-
// it now lives in the GPCA project's own `model/
|
|
285
|
+
// it now lives in the GPCA project's own `model/methodology/project.sysml` and
|
|
125
286
|
// references its methodology with a typed SysML reference.
|
|
126
287
|
|
|
127
288
|
part rmpDoc : DhfDocumentBinding {
|
|
128
|
-
@MemoIdentity { :>> providedId = "DHF-001"; }
|
|
129
|
-
attribute :>> name = "RiskManagementPlan";
|
|
289
|
+
@MemoIdentity { :>> providedId = "DHF-001"; :>> label = "RiskManagementPlan"; }
|
|
130
290
|
attribute :>> documentTitle = "Risk Management Plan";
|
|
131
291
|
attribute :>> groupLabel = "Risk Management";
|
|
132
292
|
attribute :>> templateId = "iso-14971/rmp";
|
|
@@ -137,8 +297,7 @@ package memo_methodology_profiles {
|
|
|
137
297
|
}
|
|
138
298
|
|
|
139
299
|
part harDoc : DhfDocumentBinding {
|
|
140
|
-
@MemoIdentity { :>> providedId = "DHF-002"; }
|
|
141
|
-
attribute :>> name = "HazardAnalysisReport";
|
|
300
|
+
@MemoIdentity { :>> providedId = "DHF-002"; :>> label = "HazardAnalysisReport"; }
|
|
142
301
|
attribute :>> documentTitle = "Hazard Analysis Report";
|
|
143
302
|
attribute :>> groupLabel = "Risk Management";
|
|
144
303
|
attribute :>> templateId = "iso-14971/har";
|
|
@@ -149,8 +308,7 @@ package memo_methodology_profiles {
|
|
|
149
308
|
}
|
|
150
309
|
|
|
151
310
|
part sadDoc : DhfDocumentBinding {
|
|
152
|
-
@MemoIdentity { :>> providedId = "DHF-003"; }
|
|
153
|
-
attribute :>> name = "SoftwareArchitectureDescription";
|
|
311
|
+
@MemoIdentity { :>> providedId = "DHF-003"; :>> label = "SoftwareArchitectureDescription"; }
|
|
154
312
|
attribute :>> documentTitle = "Software Architecture Description";
|
|
155
313
|
attribute :>> groupLabel = "Software";
|
|
156
314
|
attribute :>> templateId = "iec-62304/sad";
|
|
@@ -161,8 +319,7 @@ package memo_methodology_profiles {
|
|
|
161
319
|
}
|
|
162
320
|
|
|
163
321
|
part threatModelDoc : DhfDocumentBinding {
|
|
164
|
-
@MemoIdentity { :>> providedId = "DHF-004"; }
|
|
165
|
-
attribute :>> name = "CybersecurityThreatModel";
|
|
322
|
+
@MemoIdentity { :>> providedId = "DHF-004"; :>> label = "CybersecurityThreatModel"; }
|
|
166
323
|
attribute :>> documentTitle = "Threat Model";
|
|
167
324
|
attribute :>> groupLabel = "Cybersecurity";
|
|
168
325
|
attribute :>> templateId = "fda-cybersecurity/threat-model";
|
|
@@ -173,8 +330,7 @@ package memo_methodology_profiles {
|
|
|
173
330
|
}
|
|
174
331
|
|
|
175
332
|
part vvPlanDoc : DhfDocumentBinding {
|
|
176
|
-
@MemoIdentity { :>> providedId = "DHF-005"; }
|
|
177
|
-
attribute :>> name = "VerificationValidationPlan";
|
|
333
|
+
@MemoIdentity { :>> providedId = "DHF-005"; :>> label = "VerificationValidationPlan"; }
|
|
178
334
|
attribute :>> documentTitle = "V&V Plan";
|
|
179
335
|
attribute :>> groupLabel = "Verification & Validation";
|
|
180
336
|
attribute :>> templateId = "21cfr820/vv-plan";
|
|
@@ -3,6 +3,9 @@ package memo_methodology_workflow {
|
|
|
3
3
|
|
|
4
4
|
private import memo_core_common::*;
|
|
5
5
|
private import memo_core_enumerations::*;
|
|
6
|
+
private import memo_core_relationships::*; // MemoTypedDependency
|
|
7
|
+
private import memo_viewpoints_stakeholders_concerns::MemoStakeholder;
|
|
8
|
+
private import memo_viewpoints_definitions::MemoViewpoint;
|
|
6
9
|
|
|
7
10
|
// Named for its axis: this is a step in a METHODOLOGY workflow (a lifecycle
|
|
8
11
|
// stage with entry/exit criteria), distinct from an OPERATIONAL workflow's
|
|
@@ -10,10 +13,35 @@ package memo_methodology_workflow {
|
|
|
10
13
|
// two carry different attributes and must not share a short name — an
|
|
11
14
|
// overloaded name resolves by load order and silently validates a usage
|
|
12
15
|
// against the wrong type.
|
|
16
|
+
//
|
|
17
|
+
// A methodology's steps are the usages of this type in the package that
|
|
18
|
+
// declares it; a methodology that names a `baseMethodology` adds its steps to
|
|
19
|
+
// that one's, base first (a step is added, never replaced or dropped).
|
|
20
|
+
// Order is `first <step> then <step>;`, within a level.
|
|
21
|
+
//
|
|
22
|
+
// What makes a step DONE is stated, not assumed (plan O11, T10): every
|
|
23
|
+
// `outputKinds` kind has an element in the workspace, and every rule the step
|
|
24
|
+
// `#DoneWhen`s has a subject there and no finding on it. A step that states
|
|
25
|
+
// neither has no done criterion and is never reported as done.
|
|
13
26
|
action def MethodologyWorkflowStep :> MemoAction {
|
|
14
27
|
attribute stage : WorkflowStageKind;
|
|
15
28
|
attribute objectiveDescription : String;
|
|
16
29
|
attribute entryCriteria : String;
|
|
17
30
|
attribute exitCriteria : String;
|
|
31
|
+
// Where the step is worked: on the system of systems, or on one system.
|
|
32
|
+
attribute level : MethodLevelKind[0..1];
|
|
33
|
+
// Who does it. A usage name from the stakeholders the viewpoints bind.
|
|
34
|
+
ref role : MemoStakeholder[0..1];
|
|
35
|
+
// Kind names, as `visibleKinds` of a viewpoint are: a value cannot reference a
|
|
36
|
+
// definition. A kind the ontology does not declare is a finding of the selector
|
|
37
|
+
// vocabulary check, not a silent step that can never be done.
|
|
38
|
+
attribute inputKinds : String[0..*];
|
|
39
|
+
attribute outputKinds : String[0..*];
|
|
40
|
+
// The viewpoint that opens this step in the Guide. (`viewpoint` is a SysML keyword.)
|
|
41
|
+
ref guideViewpoint : MemoViewpoint[0..1];
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
metadata def DoneWhen :> MemoTypedDependency {
|
|
45
|
+
doc /* `#DoneWhen dependency from <step> to <rule>, <rule>;` The step is done when each of these rules has a subject in the workspace and no finding on it. */
|
|
18
46
|
}
|
|
19
47
|
}
|