@memoarchitect/ontology 0.8.22 → 0.8.24
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/memo.package.yaml +3 -0
- package/examples/connected-patient-monitor/model/catalog/viewpoints/unassigned/views/connected_patient_monitor_overview.sysml +1 -1
- package/examples/embedded-infusion-pump/memo.package.yaml +3 -0
- package/examples/embedded-infusion-pump/model/catalog/embedded_infusion_pump.sysml +2 -2
- package/examples/embedded-infusion-pump/model/catalog/viewpoints/unassigned/views/embedded_infusion_pump_overview.sysml +1 -1
- package/examples/functional-logical-physical/memo.package.yaml +3 -0
- package/examples/functional-logical-physical/model/catalog/functional_logical_physical.sysml +1 -1
- package/examples/functional-logical-physical/model/catalog/viewpoints/unassigned/views/functional_logical_physical_overview.sysml +1 -1
- package/examples/gpca-pump/memo.package.yaml +3 -0
- package/examples/gpca-pump/model/catalog/gpca_context.sysml +5 -3
- package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +1 -2
- package/examples/gpca-pump/model/catalog/gpca_operational.sysml +52 -82
- package/examples/gpca-pump/model/catalog/gpca_system.sysml +6 -19
- package/examples/gpca-pump/model/catalog/gpca_trace.sysml +0 -3
- package/examples/gpca-pump/model/catalog/viewpoints/context/views/context_system_context_view.sysml +1 -3
- package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/cybersecurity_cybersecurity_view.sysml +2 -4
- package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_cyber_assessment_view.sysml +1 -4
- package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_threat_model_view.sysml +2 -5
- package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_allocation_view.sysml +1 -3
- package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_browser_view.sysml +1 -3
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/behavior_action_flow_view.sysml +1 -3
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/document_architecture_description_view.sysml +3 -6
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_device_interconnect_view.sysml +1 -3
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_logical_architecture_view.sysml +1 -3
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_mode_state_view.sysml +1 -3
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_system_decomposition_view.sysml +1 -3
- package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_scenario_sequence_view.sysml +2 -4
- package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_use_case_view.sysml +1 -3
- package/examples/gpca-pump/model/catalog/viewpoints/physical/views/physical_physical_bom_view.sysml +1 -3
- package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/document_dhf_index_view.sysml +3 -6
- package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/requirements_requirements_trace_view.sysml +1 -3
- package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_hazard_analysis_view.sysml +1 -4
- package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_rmf_view.sysml +1 -4
- package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_fmea_view.sysml +1 -3
- package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_risk_chain_view.sysml +1 -3
- package/examples/gpca-pump/model/catalog/viewpoints/software/views/document_sdd_view.sysml +1 -4
- package/examples/gpca-pump/model/catalog/viewpoints/software/views/software_software_architecture_view.sysml +1 -3
- package/examples/gpca-pump/model/catalog/viewpoints/usability/views/document_usability_view.sysml +2 -5
- package/examples/gpca-pump/model/catalog/viewpoints/verification/views/document_vv_view.sysml +1 -4
- package/examples/gpca-pump/model/catalog/viewpoints/verification/views/verification_verification_coverage_view.sysml +1 -3
- package/examples/ivd-laboratory-system/memo.package.yaml +3 -0
- package/examples/ivd-laboratory-system/model/catalog/ivd_laboratory_system.sysml +1 -1
- package/examples/ivd-laboratory-system/model/catalog/viewpoints/unassigned/views/ivd_laboratory_system_overview.sysml +1 -1
- package/examples/manual-surgical-instrument/memo.package.yaml +3 -0
- package/examples/manual-surgical-instrument/model/catalog/manual_surgical_instrument.sysml +1 -1
- package/examples/manual-surgical-instrument/model/catalog/viewpoints/unassigned/views/manual_surgical_instrument_overview.sysml +1 -1
- package/examples/multidimensional-layers/memo.package.yaml +3 -0
- package/examples/multidimensional-layers/model/catalog/viewpoints/unassigned/views/multidimensional_layers_overview.sysml +0 -1
- package/examples/nested-architecture-dsm/memo.package.yaml +3 -0
- package/examples/reusable-instrument/memo.package.yaml +3 -0
- package/examples/reusable-instrument/model/catalog/reusable_instrument.sysml +15 -24
- package/examples/reusable-instrument/model/catalog/viewpoints/unassigned/views/reusable_instrument_overview.sysml +0 -1
- package/examples/ros-mobile-robot/memo.package.yaml +3 -0
- package/examples/ros-mobile-robot/model/catalog/viewpoints/unassigned/views/ros_mobile_robot_overview.sysml +0 -1
- package/examples/software-only-medical-device/memo.package.yaml +3 -0
- package/examples/software-only-medical-device/model/catalog/software_only_medical_device.sysml +1 -1
- package/examples/software-only-medical-device/model/catalog/viewpoints/unassigned/views/software_only_medical_device_overview.sysml +0 -1
- package/examples/surgical-closure-workflow/memo.package.yaml +3 -0
- package/examples/surgical-closure-workflow/model/catalog/surgical_closure_workflow.sysml +36 -49
- package/examples/surgical-closure-workflow/model/catalog/viewpoints/unassigned/views/surgical_closure_workflow_overview.sysml +0 -1
- package/examples/surgical-robot/memo.package.yaml +3 -0
- package/examples/surgical-robot/model/catalog/viewpoints/unassigned/views/surgical_robot_overview.sysml +0 -1
- package/examples/sysml-diagram-samples/memo.package.yaml +2 -0
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/action_flow_view.sysml +2 -3
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.sysml +1 -2
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/functional_flow_view.sysml +1 -2
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.sysml +1 -2
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.sysml +14 -15
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/requirements_view.sysml +1 -2
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/standard_activity_view.sysml +1 -2
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/state_transition_view.sysml +1 -2
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/tree_view.sysml +1 -2
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/use_case_view.sysml +1 -2
- package/examples/temperature-alarm/memo.package.yaml +3 -0
- package/examples/temperature-alarm/model/catalog/temperature_alarm.sysml +4 -8
- package/examples/temperature-alarm/model/catalog/viewpoints/unassigned/views/temperature_alarm_overview.sysml +0 -1
- package/examples/ui-screen-regions/memo.package.yaml +3 -0
- 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/viewpoints/ui_layout/views/main_screen_layout.sysml +1 -2
- package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/settings_screen_layout.sysml +1 -2
- package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/ui_region_trace.sysml +1 -2
- package/extensions/aadl/memo.package.yaml +1 -1
- package/extensions/cloud/memo.package.yaml +1 -1
- package/extensions/container/memo.package.yaml +1 -1
- package/extensions/container/src/container_extension.sysml +2 -2
- package/extensions/messaging/memo.package.yaml +1 -1
- package/extensions/ros/memo.package.yaml +1 -1
- 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 +1 -1
- package/profile/memo.package.yaml +1 -1
- package/src/architecture/functional/behavior/memo_behavior.sysml +4 -4
- package/src/architecture/functional/functions/memo_functions.sysml +6 -6
- package/src/architecture/implementation/hardware/common/memo_hardware_common.sysml +2 -2
- package/src/architecture/implementation/software/structure/memo_software_structure.sysml +7 -7
- package/src/architecture/implementation/ui/memo_ui.sysml +8 -8
- package/src/architecture/logical/interfaces/memo_interfaces.sysml +1 -1
- package/src/architecture/logical/structure/memo_logical_structure.sysml +5 -5
- package/src/architecture/operational/activities/memo_activities.sysml +19 -28
- package/src/architecture/operational/context/actors/memo_actors.sysml +5 -4
- package/src/architecture/operational/context/stakeholders/memo_stakeholders.sysml +7 -7
- package/src/architecture/operational/context/use_context/memo_use_context.sysml +2 -3
- package/src/architecture/operational/scenarios/memo_scenarios.sysml +18 -100
- package/src/architecture/operational/structure/memo_operational.sysml +42 -13
- package/src/architecture/operational/use_cases/memo_use_cases.sysml +0 -1
- package/src/architecture/operational/workflows/memo_workflows.sysml +20 -22
- package/src/architecture/realization/deployment/memo_deployment.sysml +10 -10
- package/src/architecture/realization/physical/memo_physical_architecture.sysml +2 -2
- package/src/artifacts/templates/dhf/system/sad.md +3 -3
- package/src/assurance/cybersecurity/memo_cybersecurity.sysml +2 -2
- package/src/assurance/human_factors/memo_human_factors.sysml +2 -2
- package/src/assurance/requirements/memo_requirements.sysml +2 -18
- package/src/assurance/safety_risk/analysis/memo_fmea.sysml +1 -1
- package/src/assurance/safety_risk/memo_risk.sysml +12 -0
- package/src/assurance/verification_validation/memo_assurance.sysml +1 -1
- package/src/core/common/memo_common.sysml +9 -5
- package/src/core/relationships/memo_relationships.sysml +8 -8
- package/src/methodology/workflow/memo_workflow.sysml +5 -5
- package/src/rules/closure/closure_rules.sysml +20 -20
- package/src/rules/crosslayer/cross_layer_rules.sysml +2 -2
- package/src/rules/ontology/ontology_invariants.sysml +40 -40
- package/src/rules/quantitative/quantitative_rules.sysml +2 -2
- package/src/viewpoints/catalog/memo_viewpoint_catalog.sysml +29 -29
- package/src/viewpoints/clinical/clinical_viewpoint.sysml +1 -2
- package/src/viewpoints/context/context_viewpoint.sysml +1 -2
- package/src/viewpoints/context/views/system_context_view/system_context_view.sysml +1 -2
- package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +2 -4
- package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +46 -4
- package/src/viewpoints/functional/functional_viewpoint.sysml +2 -3
- package/src/viewpoints/functional/views/function_allocation_view/function_allocation_view.sysml +1 -2
- package/src/viewpoints/functional/views/system_functional_tree_view/system_functional_tree_view.sysml +1 -2
- package/src/viewpoints/logical/logical_viewpoint.sysml +1 -2
- package/src/viewpoints/logical/views/logical_architecture_view/logical_architecture_view.sysml +1 -2
- package/src/viewpoints/operational/operational_viewpoint.sysml +2 -3
- package/src/viewpoints/operational/views/use_case_view/use_case_view.sysml +2 -3
- package/src/viewpoints/physical/physical_viewpoint.sysml +1 -2
- package/src/viewpoints/physical/views/network_topology_view/network_topology_view.sysml +1 -2
- package/src/viewpoints/physical/views/physical_bom_view/physical_bom_view.sysml +1 -2
- package/src/viewpoints/requirements/requirements_viewpoint.sysml +1 -2
- package/src/viewpoints/requirements/views/requirements_traceability_view/requirements_traceability_view.sysml +1 -2
- package/src/viewpoints/risk/risk_viewpoint.sysml +1 -2
- package/src/viewpoints/risk/views/risk_chain_view/risk_chain_view.sysml +1 -2
- package/src/viewpoints/software/software_viewpoint.sysml +1 -2
- package/src/viewpoints/software/views/software_architecture_view/software_architecture_view.sysml +1 -2
- package/src/viewpoints/ui_layout/ui_layout_viewpoint.sysml +1 -2
- package/src/viewpoints/usability/usability_viewpoint.sysml +1 -2
- package/src/viewpoints/verification/verification_viewpoint.sysml +1 -2
- package/src/viewpoints/verification/views/verification_coverage_view/verification_coverage_view.sysml +1 -2
- package/templates/connected-device/memo.package.yaml +2 -0
- package/templates/default/memo.package.yaml +2 -0
- package/templates/infusion-pump/memo.package.yaml +2 -0
- package/templates/monitoring-device/memo.package.yaml +2 -0
- package/templates/samd/memo.package.yaml +2 -0
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
# (`type`, `extends`, `usage`, `ontologies`, `methodology`, `modules`) were
|
|
8
8
|
# removed at the native semantic flip and are now rejected if present.
|
|
9
9
|
name: '@memoarchitect/extension-aadl'
|
|
10
|
-
version: 0.8.
|
|
10
|
+
version: 0.8.24
|
|
11
11
|
description: AADL (SAE AS5506) correspondence profile and runtime component families
|
|
12
12
|
license: MIT
|
|
13
13
|
tags:
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
# (`type`, `extends`, `usage`, `ontologies`, `methodology`, `modules`) were
|
|
8
8
|
# removed at the native semantic flip and are now rejected if present.
|
|
9
9
|
name: '@memoarchitect/extension-cloud'
|
|
10
|
-
version: 0.8.
|
|
10
|
+
version: 0.8.24
|
|
11
11
|
description: Networked services and managed data stores
|
|
12
12
|
license: MIT
|
|
13
13
|
tags:
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
# (`type`, `extends`, `usage`, `ontologies`, `methodology`, `modules`) were
|
|
8
8
|
# removed at the native semantic flip and are now rejected if present.
|
|
9
9
|
name: '@memoarchitect/extension-container'
|
|
10
|
-
version: 0.8.
|
|
10
|
+
version: 0.8.24
|
|
11
11
|
description: OCI container images and container runtimes as deployment content
|
|
12
12
|
license: MIT
|
|
13
13
|
tags:
|
|
@@ -12,11 +12,11 @@ package memo_extension_container {
|
|
|
12
12
|
|
|
13
13
|
private import memo_architecture_realization_deployment::*;
|
|
14
14
|
|
|
15
|
-
// The built artifact. `BuildsInto` (SoftwareModule ->
|
|
15
|
+
// The built artifact. `BuildsInto` (SoftwareModule -> SoftwareDeploymentUnit)
|
|
16
16
|
// reaches it unchanged, which is the test that the base is factored
|
|
17
17
|
// correctly: a whole packaging technology lands without touching a base
|
|
18
18
|
// relation.
|
|
19
|
-
part def ContainerImage specializes
|
|
19
|
+
part def ContainerImage specializes SoftwareDeploymentUnit {
|
|
20
20
|
// The pullable reference, e.g. "registry.example.com/screening:1.4.0".
|
|
21
21
|
attribute imageReference : String;
|
|
22
22
|
attribute registry : String;
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
# (`type`, `extends`, `usage`, `ontologies`, `methodology`, `modules`) were
|
|
8
8
|
# removed at the native semantic flip and are now rejected if present.
|
|
9
9
|
name: '@memoarchitect/extension-messaging'
|
|
10
|
-
version: 0.8.
|
|
10
|
+
version: 0.8.24
|
|
11
11
|
description: Publish/subscribe messaging — topics, brokers, and delivery semantics
|
|
12
12
|
license: MIT
|
|
13
13
|
tags:
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
# (`type`, `extends`, `usage`, `ontologies`, `methodology`, `modules`) were
|
|
8
8
|
# removed at the native semantic flip and are now rejected if present.
|
|
9
9
|
name: '@memoarchitect/extension-ros'
|
|
10
|
-
version: 0.8.
|
|
10
|
+
version: 0.8.24
|
|
11
11
|
description: ROS 2 nodes, messages, topic/service/action interfaces, QoS, and containerized deployment
|
|
12
12
|
license: MIT
|
|
13
13
|
tags:
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
# (`type`, `extends`, `usage`, `ontologies`, `methodology`, `modules`) were
|
|
8
8
|
# removed at the native semantic flip and are now rejected if present.
|
|
9
9
|
name: '@memoarchitect/methodology-default'
|
|
10
|
-
version: 0.8.
|
|
10
|
+
version: 0.8.24
|
|
11
11
|
description: "MEMO default medical-device methodology \u2014 selects viewpoints/views/DHF documents from @memoarchitect/ontology and adds rules, gates, patterns, profiles, and workflow."
|
|
12
12
|
license: MIT
|
|
13
13
|
tags:
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
# (`type`, `extends`, `usage`, `ontologies`, `methodology`, `modules`) were
|
|
8
8
|
# removed at the native semantic flip and are now rejected if present.
|
|
9
9
|
name: '@memoarchitect/methodology-gpca'
|
|
10
|
-
version: 0.8.
|
|
10
|
+
version: 0.8.24
|
|
11
11
|
description: "GPCA infusion pump methodology \u2014 subtraction-based tailoring of @memoarchitect/methodology-default for the non-networked prototype variant. Excludes cybersecurity and SOUP."
|
|
12
12
|
license: MIT
|
|
13
13
|
tags:
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
# (`type`, `extends`, `usage`, `ontologies`, `methodology`, `modules`) were
|
|
8
8
|
# removed at the native semantic flip and are now rejected if present.
|
|
9
9
|
name: '@memoarchitect/ontology'
|
|
10
|
-
version: 0.8.
|
|
10
|
+
version: 0.8.24
|
|
11
11
|
description: "MEMO \u2014 the single canonical medical-device ontology: core semantics, the Arcadia-inspired architecture layers (context, requirements, behavior, structure, interfaces, risk, cybersecurity,\
|
|
12
12
|
\ assurance, \u2026), compliance, viewpoints, views, and invariant rules. One namespace (memo::), one src/ tree."
|
|
13
13
|
license: MIT
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@memoarchitect/ontology",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.24",
|
|
4
4
|
"packageManager": "pnpm@9.15.0",
|
|
5
5
|
"description": "MEMO \u2014 Medical Engineering Modelling Ontology. Pure SysML v2 medical-device ontology with native constraints, portable to any conformant SysML v2 tool (SysIDE, SysON, sysand).",
|
|
6
6
|
"scripts": {
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
# (`type`, `extends`, `usage`, `ontologies`, `methodology`, `modules`) were
|
|
8
8
|
# removed at the native semantic flip and are now rejected if present.
|
|
9
9
|
name: '@memoarchitect/medical-modeling-profile'
|
|
10
|
-
version: 0.8.
|
|
10
|
+
version: 0.8.24
|
|
11
11
|
description: Closure rules and viewpoints for medical device modeling
|
|
12
12
|
license: MIT
|
|
13
13
|
tags:
|
|
@@ -10,7 +10,7 @@ package memo_architecture_functional_behavior {
|
|
|
10
10
|
abstract action def FunctionalAction specializes MemoAction;
|
|
11
11
|
// State machines and their mode states are SysML v2 states (behaviours), so
|
|
12
12
|
// they derive from the MemoState foundation, not the part-based
|
|
13
|
-
//
|
|
13
|
+
// MemoPart family. Transitions stay part-based (below) to keep their
|
|
14
14
|
// traceable safety attributes.
|
|
15
15
|
// State machines retain their own execution semantics; individual modes
|
|
16
16
|
// are MemoState usages selected by stateKind.
|
|
@@ -23,7 +23,7 @@ package memo_architecture_functional_behavior {
|
|
|
23
23
|
// elements are active in one selectable arrangement.
|
|
24
24
|
// The reference is typed to the shared native state family so a consumer
|
|
25
25
|
// can navigate from the selected configuration to its governing mode.
|
|
26
|
-
part def ModeConfiguration specializes
|
|
26
|
+
part def ModeConfiguration specializes MemoPart {
|
|
27
27
|
ref activeMode : MemoState[1];
|
|
28
28
|
ref activeElement : MemoPart[0..*];
|
|
29
29
|
}
|
|
@@ -70,7 +70,7 @@ package memo_architecture_functional_behavior {
|
|
|
70
70
|
// annotate a BASE element rather than declare its own type, the SysML-
|
|
71
71
|
// native answer is `metadata def` + `Metaobjects::SemanticMetadata`, which
|
|
72
72
|
// is what every MEMO relation already carries since A4.
|
|
73
|
-
part def ActivityAction specializes
|
|
73
|
+
part def ActivityAction specializes MemoPart {
|
|
74
74
|
attribute actionKind : ActionKind;
|
|
75
75
|
attribute inputSummary : String;
|
|
76
76
|
attribute outputSummary : String;
|
|
@@ -82,7 +82,7 @@ package memo_architecture_functional_behavior {
|
|
|
82
82
|
attribute guardCondition : String;
|
|
83
83
|
attribute weight : String;
|
|
84
84
|
}
|
|
85
|
-
// UI scenarios are
|
|
85
|
+
// UI scenarios are OperativeScenario usages with scenarioKind `ui`.
|
|
86
86
|
|
|
87
87
|
part def TimingConstraint specializes VerifiableElement {
|
|
88
88
|
attribute constraintKind : TimingConstraintKind;
|
|
@@ -8,14 +8,14 @@
|
|
|
8
8
|
// ─── A function is a behaviour ───────────────────────────────────────────
|
|
9
9
|
//
|
|
10
10
|
// `MemoFunction` and both its specializations are `action def`s. They were
|
|
11
|
-
// `part def SystemFunction specializes
|
|
12
|
-
// removed the reason: relation ends were typed on
|
|
11
|
+
// `part def SystemFunction specializes MemoPart` until Track A0
|
|
12
|
+
// removed the reason: relation ends were typed on part-based types,
|
|
13
13
|
// KerML forbids a behaviour from specializing a part-based type, and a function
|
|
14
14
|
// has to be satisfiable, verifiable, and allocatable. So a function was declared
|
|
15
|
-
// a part, and a separate `action def
|
|
15
|
+
// a part, and a separate `action def OperativeAction` carried the behaviour with a
|
|
16
16
|
// `ref performedFunction` stapling the two back together — a reference used in
|
|
17
17
|
// ZERO example files. The ends are metaclass-neutral now (CR-ONT-060..073), so
|
|
18
|
-
// the split has no cause and is gone:
|
|
18
|
+
// the split has no cause and is gone: OperativeAction is merged into the function
|
|
19
19
|
// family, and its `actionKind` moved onto MemoFunction where it was always
|
|
20
20
|
// describing the function anyway.
|
|
21
21
|
//
|
|
@@ -97,7 +97,7 @@ package memo_architecture_functional_functions {
|
|
|
97
97
|
// So this part def is a workaround for a MEMO gap, not a design MEMO is
|
|
98
98
|
// entitled to. Restoring the two dropped clauses is what would let it
|
|
99
99
|
// collapse into the flow it stands in for.
|
|
100
|
-
part def FunctionalExchange specializes
|
|
100
|
+
part def FunctionalExchange specializes MemoPart {
|
|
101
101
|
attribute flowKind : FlowKind;
|
|
102
102
|
attribute latencyBudgetMs : Real;
|
|
103
103
|
attribute staleAfterMs : Real;
|
|
@@ -112,7 +112,7 @@ package memo_architecture_functional_functions {
|
|
|
112
112
|
|
|
113
113
|
// A reusable functional route through system responsibilities. Functional
|
|
114
114
|
// flows are part of functional architecture, never logical structure.
|
|
115
|
-
part def FunctionalFlow specializes
|
|
115
|
+
part def FunctionalFlow specializes MemoPart {
|
|
116
116
|
attribute flowCategory : FunctionalFlowKind;
|
|
117
117
|
attribute endToEndLatencyBudgetMs : String;
|
|
118
118
|
attribute safetyRelevant : Boolean;
|
|
@@ -13,7 +13,7 @@ package memo_architecture_implementation_hardware_common {
|
|
|
13
13
|
private import memo_core_enumerations::*;
|
|
14
14
|
private import memo_core_relationships::*;
|
|
15
15
|
|
|
16
|
-
part def PhysicalAssembly specializes
|
|
16
|
+
part def PhysicalAssembly specializes MemoPart {
|
|
17
17
|
attribute responsibility : String;
|
|
18
18
|
attribute safetyRole : String;
|
|
19
19
|
attribute partNumber : String;
|
|
@@ -25,7 +25,7 @@ package memo_architecture_implementation_hardware_common {
|
|
|
25
25
|
// Retained name from 0.4; an electronics-centred assembly.
|
|
26
26
|
part def HardwareAssembly specializes PhysicalAssembly;
|
|
27
27
|
|
|
28
|
-
part def PhysicalComponent specializes
|
|
28
|
+
part def PhysicalComponent specializes MemoPart {
|
|
29
29
|
attribute partNumber : String;
|
|
30
30
|
attribute materialSummary : String;
|
|
31
31
|
// ISO 10993-1 contact characterization; required when true.
|
|
@@ -28,7 +28,7 @@ package memo_architecture_implementation_software_structure {
|
|
|
28
28
|
// the term "software item" for this concept, but reserving SoftwareItem
|
|
29
29
|
// for the native SysML item family keeps structural parts and exchanged
|
|
30
30
|
// values unambiguous in the model.
|
|
31
|
-
abstract part def SoftwareElement specializes
|
|
31
|
+
abstract part def SoftwareElement specializes MemoPart {
|
|
32
32
|
attribute safetyClass : SafetyClassKind;
|
|
33
33
|
attribute complexity : ComplexityKind;
|
|
34
34
|
}
|
|
@@ -70,17 +70,17 @@ package memo_architecture_implementation_software_structure {
|
|
|
70
70
|
attribute soupClassification : SOUPClassificationKind[0..1];
|
|
71
71
|
}
|
|
72
72
|
|
|
73
|
-
part def Algorithm specializes
|
|
73
|
+
part def Algorithm specializes MemoPart {
|
|
74
74
|
attribute algorithmKind : String;
|
|
75
75
|
attribute inputSummary : String;
|
|
76
76
|
attribute outputSummary : String;
|
|
77
77
|
attribute clinicalPerformanceClaim : String;
|
|
78
78
|
}
|
|
79
|
-
part def DataModel specializes
|
|
79
|
+
part def DataModel specializes MemoPart {
|
|
80
80
|
attribute schemaReference : String;
|
|
81
81
|
attribute persistenceScope : String;
|
|
82
82
|
}
|
|
83
|
-
part def ConfigurationArtifact specializes
|
|
83
|
+
part def ConfigurationArtifact specializes MemoPart {
|
|
84
84
|
attribute configurationScope : String;
|
|
85
85
|
attribute version : String;
|
|
86
86
|
}
|
|
@@ -89,8 +89,8 @@ package memo_architecture_implementation_software_structure {
|
|
|
89
89
|
abstract item def SoftwareItem specializes MemoItem {
|
|
90
90
|
attribute schemaIdentifier : String;
|
|
91
91
|
attribute schemaVersion : String;
|
|
92
|
-
attribute encoding : String;
|
|
93
|
-
attribute timestampRequired : Boolean;
|
|
92
|
+
attribute :>> encoding : String;
|
|
93
|
+
attribute :>> timestampRequired : Boolean;
|
|
94
94
|
}
|
|
95
95
|
|
|
96
96
|
item def SBOMEntry specializes SoftwareItem {
|
|
@@ -108,7 +108,7 @@ package memo_architecture_implementation_software_structure {
|
|
|
108
108
|
// Moved out of memo_core_relationships: their ends are typed against
|
|
109
109
|
// types declared here, and core must not depend on a domain package.
|
|
110
110
|
connection def DependsOnSoup :> MemoRelationship {
|
|
111
|
-
end component :
|
|
111
|
+
end component : MemoPart :>> source;
|
|
112
112
|
end soupItem : SoftwareElement :>> target;
|
|
113
113
|
}
|
|
114
114
|
abstract connection dependsOnSoupLinks : DependsOnSoup[*];
|
|
@@ -110,7 +110,7 @@ package memo_architecture_implementation_ui {
|
|
|
110
110
|
enum recovery;
|
|
111
111
|
}
|
|
112
112
|
|
|
113
|
-
part def UserInterface specializes
|
|
113
|
+
part def UserInterface specializes MemoPart {
|
|
114
114
|
attribute modality : String;
|
|
115
115
|
attribute uiTechnology : String;
|
|
116
116
|
}
|
|
@@ -121,7 +121,7 @@ package memo_architecture_implementation_ui {
|
|
|
121
121
|
// "something the user interacts with" rather than against software
|
|
122
122
|
// specifically. Without it a use error on a knob would be unmodellable,
|
|
123
123
|
// because ErrorAtElement would only accept a UIElement.
|
|
124
|
-
abstract part def InteractionElement specializes
|
|
124
|
+
abstract part def InteractionElement specializes MemoPart {
|
|
125
125
|
attribute labelText : String;
|
|
126
126
|
attribute accessibilitySummary : String;
|
|
127
127
|
// alarm annunciation (optional; IEC 60601-1-8)
|
|
@@ -235,7 +235,7 @@ package memo_architecture_implementation_ui {
|
|
|
235
235
|
}
|
|
236
236
|
|
|
237
237
|
// ─── Captured evidence ───────────────────────────────────────
|
|
238
|
-
// One image of one screen. MemoEvidence, not
|
|
238
|
+
// One image of one screen. MemoEvidence, not a design element: it
|
|
239
239
|
// records what a specific build actually displayed at a specific time,
|
|
240
240
|
// which is the provenance a design review or a usability engineering file
|
|
241
241
|
// needs before it can rely on the picture. The screen it depicts is an
|
|
@@ -258,11 +258,11 @@ package memo_architecture_implementation_ui {
|
|
|
258
258
|
}
|
|
259
259
|
|
|
260
260
|
// UI state is presentation state — distinct from system/device state.
|
|
261
|
-
part def UIState specializes
|
|
261
|
+
part def UIState specializes MemoPart {
|
|
262
262
|
attribute displayedInformation : String;
|
|
263
263
|
attribute availableActions : String;
|
|
264
264
|
}
|
|
265
|
-
part def UIEvent specializes
|
|
265
|
+
part def UIEvent specializes MemoPart {
|
|
266
266
|
attribute eventSource : String;
|
|
267
267
|
attribute intent : InteractionIntentKind;
|
|
268
268
|
}
|
|
@@ -274,7 +274,7 @@ package memo_architecture_implementation_ui {
|
|
|
274
274
|
}
|
|
275
275
|
|
|
276
276
|
// A reusable dialogue structure through the UI; a selected path through
|
|
277
|
-
// it is a
|
|
277
|
+
// it is a OperativeScenario with scenarioKind `ui`.
|
|
278
278
|
action def InteractionFlow specializes MemoAction {
|
|
279
279
|
attribute entryPoint : String;
|
|
280
280
|
attribute exitPoint : String;
|
|
@@ -356,7 +356,7 @@ package memo_architecture_implementation_ui {
|
|
|
356
356
|
:>> baseType = flowServesUseCaseLinks meta SysML::Usage;
|
|
357
357
|
}
|
|
358
358
|
// A UI scenario realizes a functional scenario one layer up: each is a
|
|
359
|
-
//
|
|
359
|
+
// OperativeScenario selected by scenarioKind rather than a separate definition.
|
|
360
360
|
connection def ErrorAtElement :> MemoRelationship {
|
|
361
361
|
end useError : UseError :>> source;
|
|
362
362
|
end element : InteractionElement :>> target;
|
|
@@ -371,7 +371,7 @@ package memo_architecture_implementation_ui {
|
|
|
371
371
|
// (confirmation dialog, lockout, guarded control).
|
|
372
372
|
connection def ControlImplementedBy :> MemoRelationship {
|
|
373
373
|
end riskControl : RiskControlMeasure :>> source;
|
|
374
|
-
end implementingElement
|
|
374
|
+
end implementingElement :>> target;
|
|
375
375
|
}
|
|
376
376
|
abstract connection controlImplementedByLinks : ControlImplementedBy[*];
|
|
377
377
|
metadata def <controlImplementedBy> ControlImplementedByMetadata :> SemanticMetadata {
|
|
@@ -85,7 +85,7 @@ package memo_architecture_logical_interfaces {
|
|
|
85
85
|
port def SensorPort specializes DataPort { attribute sensorDomain : String; }
|
|
86
86
|
port def CommandPort specializes DataPort { attribute commandDomain : String; }
|
|
87
87
|
|
|
88
|
-
part def ComponentExchange specializes
|
|
88
|
+
part def ComponentExchange specializes MemoPart {
|
|
89
89
|
attribute exchangeKind : FlowKind;
|
|
90
90
|
// Metaclass-neutral endpoints. CR-ONT-002 used to read: "Typed
|
|
91
91
|
// endpoints. A component or a boundary port may terminate an exchange,
|
|
@@ -116,7 +116,7 @@ package memo_architecture_logical_structure {
|
|
|
116
116
|
// optional so a component carries only the ones its role needs. A channel
|
|
117
117
|
// claiming independence must still be linked by IndependentOf with its
|
|
118
118
|
// basis stated.
|
|
119
|
-
part def LogicalComponent specializes
|
|
119
|
+
part def LogicalComponent specializes MemoPart {
|
|
120
120
|
attribute componentRole : ComponentRoleKind;
|
|
121
121
|
attribute systemType : SystemTypeKind[0..1];
|
|
122
122
|
attribute responsibility : String;
|
|
@@ -163,7 +163,7 @@ package memo_architecture_logical_structure {
|
|
|
163
163
|
:>> baseType = logicalConnectorLinks meta SysML::Usage;
|
|
164
164
|
}
|
|
165
165
|
// A transfer of a typed item across a connector.
|
|
166
|
-
part def LogicalExchange specializes
|
|
166
|
+
part def LogicalExchange specializes MemoPart {
|
|
167
167
|
attribute contentKind : FlowContentKind;
|
|
168
168
|
attribute direction : DirectionKind;
|
|
169
169
|
attribute latencyRequirement : String;
|
|
@@ -175,17 +175,17 @@ package memo_architecture_logical_structure {
|
|
|
175
175
|
// States and modes of the logical solution (kept distinct from UI state
|
|
176
176
|
// and from physical device configuration).
|
|
177
177
|
|
|
178
|
-
part def LogicalBehavior specializes
|
|
178
|
+
part def LogicalBehavior specializes MemoPart {
|
|
179
179
|
attribute behaviorSummary : String;
|
|
180
180
|
attribute executionSemantics : String;
|
|
181
181
|
}
|
|
182
182
|
|
|
183
183
|
// Isolation, fault containment, and trust boundaries (§10).
|
|
184
|
-
part def IsolationBoundary specializes
|
|
184
|
+
part def IsolationBoundary specializes MemoPart {
|
|
185
185
|
attribute boundaryKind : String;
|
|
186
186
|
attribute isolationMechanism : String;
|
|
187
187
|
}
|
|
188
|
-
part def FaultContainmentRegion specializes
|
|
188
|
+
part def FaultContainmentRegion specializes MemoPart {
|
|
189
189
|
attribute containmentRationale : String;
|
|
190
190
|
}
|
|
191
191
|
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
// Operational
|
|
2
|
-
//
|
|
3
|
-
//
|
|
4
|
-
//
|
|
5
|
-
//
|
|
6
|
-
// it must trace to usability validation.
|
|
7
|
-
//
|
|
8
|
-
// instrument
|
|
1
|
+
// Operational actions (§7, §17). One `OperativeAction` (action def on
|
|
2
|
+
// MemoAction) is a unit of operational work; whether a User or the system
|
|
3
|
+
// performs it is a native `perform` relationship, not a subtype.
|
|
4
|
+
// A critical task is an OperativeAction with high/catastrophic criticality that
|
|
5
|
+
// a User performs — its failure could cause serious harm (IEC 62366-1 / FDA HF
|
|
6
|
+
// guidance) and it must trace to usability validation. Task difficulty belongs
|
|
7
|
+
// to an action performed in a context (TaskDifficultyAssessment), never to an
|
|
8
|
+
// instrument.
|
|
9
9
|
package memo_architecture_operational_activities {
|
|
10
10
|
private import Metaobjects::SemanticMetadata;
|
|
11
11
|
private import ScalarValues::*;
|
|
@@ -24,33 +24,25 @@ package memo_architecture_operational_activities {
|
|
|
24
24
|
enum extreme;
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
-
action
|
|
27
|
+
// One operational action / step. Who performs it — a human actor or the
|
|
28
|
+
// system — is a relationship (native `perform`), not a subtype, so an
|
|
29
|
+
// action can migrate from user- to system-performed (automation, as-is →
|
|
30
|
+
// to-be) without changing type. This one type merges the former
|
|
31
|
+
// OperationalActivity, UserTask, SystemAction and TaskStep: a "user task"
|
|
32
|
+
// is simply an OperativeAction a User performs; finer steps are nested
|
|
33
|
+
// OperativeActions. Human-factors fields (potentialHarm, severityIfFailed,
|
|
34
|
+
// perceptualCue …) are optional, meaningful when a User is the performer.
|
|
35
|
+
action def OperativeAction specializes MemoAction {
|
|
28
36
|
attribute trigger : String;
|
|
29
37
|
attribute preCondition : String;
|
|
30
38
|
attribute postCondition : String;
|
|
31
39
|
attribute criticality : CriticalityKind;
|
|
32
|
-
ref performedBy : OperationalParticipant[0..*];
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
// A human task. A critical task (IEC 62366-1 / FDA HF guidance §3) is a
|
|
36
|
-
// UserTask whose criticality is high or catastrophic — a use error could
|
|
37
|
-
// cause serious harm. potentialHarm/severityIfFailed are set only for such
|
|
38
|
-
// tasks. Modeled as an attribute, like SystemFunction.criticality.
|
|
39
|
-
action def UserTask specializes MemoAction {
|
|
40
40
|
attribute taskGoal : String;
|
|
41
|
-
attribute preCondition : String;
|
|
42
|
-
attribute postCondition : String;
|
|
43
41
|
attribute expectedDuration : String;
|
|
44
42
|
attribute frequencyOfUse : String;
|
|
45
|
-
attribute criticality : CriticalityKind;
|
|
46
43
|
attribute potentialHarm : String[0..1];
|
|
47
44
|
attribute severityIfFailed : SeverityKind[0..1];
|
|
48
|
-
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
// An elementary perceptual/cognitive/motor step within a user task
|
|
52
|
-
// (task analysis granularity: grasp needle, drive needle, tie knot …).
|
|
53
|
-
action def TaskStep specializes MemoAction {
|
|
45
|
+
attribute automated : Boolean;
|
|
54
46
|
attribute perceptualCue : String;
|
|
55
47
|
attribute feedbackExpected : String;
|
|
56
48
|
}
|
|
@@ -72,7 +64,6 @@ package memo_architecture_operational_activities {
|
|
|
72
64
|
attribute assessor : String;
|
|
73
65
|
attribute assessmentMethod : String;
|
|
74
66
|
|
|
75
|
-
ref assessedTask : UserTask[0..1];
|
|
76
67
|
ref userPopulation : User[0..1];
|
|
77
68
|
ref useEnvironment : UseEnvironment[0..1];
|
|
78
69
|
ref instrument : MemoPart[0..1];
|
|
@@ -81,7 +72,7 @@ package memo_architecture_operational_activities {
|
|
|
81
72
|
|
|
82
73
|
connection def AssessesDifficulty :> MemoRelationship {
|
|
83
74
|
end assessment : TaskDifficultyAssessment :>> source;
|
|
84
|
-
end task :
|
|
75
|
+
end task : OperativeAction :>> target;
|
|
85
76
|
}
|
|
86
77
|
abstract connection assessesDifficultyLinks : AssessesDifficulty[*];
|
|
87
78
|
metadata def <assessesDifficulty> AssessesDifficultyMetadata :> SemanticMetadata {
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
// Operational participants (§4) interact with the system
|
|
2
|
-
//
|
|
3
|
-
//
|
|
4
|
-
//
|
|
1
|
+
// Operational participants (§4) interact with the system. A stakeholder —
|
|
2
|
+
// someone with a concern about the system who need not interact with it — is
|
|
3
|
+
// a native SysML notion (a Part in a stakeholder membership on a concern or
|
|
4
|
+
// viewpoint), not a separate MEMO type; the same Part may fill both roles.
|
|
5
|
+
// "User" is reserved for a human who interacts with the medical device.
|
|
5
6
|
package memo_architecture_operational_context_actors {
|
|
6
7
|
private import ScalarValues::*;
|
|
7
8
|
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
// ISO/IEC/IEEE 42010 architecture-description core (§4)
|
|
2
|
-
//
|
|
3
|
-
//
|
|
4
|
-
//
|
|
5
|
-
//
|
|
6
|
-
//
|
|
1
|
+
// ISO/IEC/IEEE 42010 architecture-description core (§4): ArchitectureDescription,
|
|
2
|
+
// ModelKind, and CorrespondenceRule below. Stakeholders and concerns — 42010's
|
|
3
|
+
// other cornerstones — are native SysML v2 constructs (stakeholder memberships
|
|
4
|
+
// and `concern def`), used directly rather than reinvented as MEMO types. A
|
|
5
|
+
// View (memo_viewpoints_definitions::MemoView) conforms to a Viewpoint within
|
|
6
|
+
// an ArchitectureDescription.
|
|
7
7
|
package memo_architecture_operational_context_stakeholders {
|
|
8
8
|
private import Metaobjects::SemanticMetadata;
|
|
9
9
|
private import ScalarValues::*;
|
|
@@ -12,7 +12,7 @@ package memo_architecture_operational_context_stakeholders {
|
|
|
12
12
|
private import memo_core_enumerations::*;
|
|
13
13
|
private import memo_core_relationships::*;
|
|
14
14
|
private import memo_architecture_operational_context_actors::*;
|
|
15
|
-
part def ArchitectureDescription specializes
|
|
15
|
+
part def ArchitectureDescription specializes MemoPart {
|
|
16
16
|
attribute systemOfInterest : String;
|
|
17
17
|
attribute version : String;
|
|
18
18
|
}
|
|
@@ -23,7 +23,6 @@ package memo_architecture_operational_context_use_context {
|
|
|
23
23
|
attribute environment : String;
|
|
24
24
|
attribute jurisdiction : String;
|
|
25
25
|
attribute connectedUse : Boolean;
|
|
26
|
-
attribute intendedUseReference : String;
|
|
27
26
|
}
|
|
28
27
|
|
|
29
28
|
// The physical/organizational environment of use (IEC 62366-1 3.20),
|
|
@@ -56,9 +55,9 @@ package memo_architecture_operational_context_use_context {
|
|
|
56
55
|
attribute contextSide : ContextSideKind;
|
|
57
56
|
// The verb, as it should read on the edge ("Directs procedure").
|
|
58
57
|
attribute interactionLabel : String[0..1];
|
|
59
|
-
end contextParticipant :
|
|
58
|
+
end contextParticipant : MemoPart :>> source;
|
|
60
59
|
// Untyped: the system of interest may be a part or an operational activity.
|
|
61
|
-
end systemOfInterest
|
|
60
|
+
end systemOfInterest :>> target;
|
|
62
61
|
}
|
|
63
62
|
abstract connection interactsInContextLinks : InteractsInContext[*];
|
|
64
63
|
metadata def <interactsInContext> InteractsInContextMetadata :> SemanticMetadata {
|