@memoarchitect/ontology 0.4.6 → 0.6.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 -4
- package/examples/connected-patient-monitor/README.md +7 -0
- package/examples/connected-patient-monitor/model/catalog/connected_patient_monitor.sysml +70 -0
- package/examples/connected-patient-monitor/model/connected_patient_monitor.sysml +3 -0
- package/examples/connected-patient-monitor/model/viewpoints/connected_patient_monitor_overview.sysml +6 -0
- package/examples/embedded-infusion-pump/README.md +7 -0
- package/examples/embedded-infusion-pump/model/catalog/embedded_infusion_pump.sysml +66 -0
- package/examples/embedded-infusion-pump/model/embedded_infusion_pump.sysml +3 -0
- package/examples/embedded-infusion-pump/model/viewpoints/embedded_infusion_pump_overview.sysml +6 -0
- package/examples/extensions/README.md +16 -0
- package/examples/extensions/clinical/memo.package.yaml +9 -0
- package/examples/extensions/clinical/src/clinical_extension.sysml +3 -0
- package/examples/extensions/clinical/src/methodology/clinical_methodology.sysml +14 -0
- package/examples/extensions/clinical/src/procedures/memo_clinical_procedures.sysml +16 -0
- package/examples/extensions/template/memo.package.yaml +9 -0
- package/examples/extensions/template/src/extension.sysml +15 -0
- package/examples/functional-logical-physical/README.md +7 -0
- package/examples/functional-logical-physical/model/catalog/functional_logical_physical.sysml +50 -0
- package/examples/functional-logical-physical/model/functional_logical_physical.sysml +3 -0
- package/examples/functional-logical-physical/model/viewpoints/functional_logical_physical_overview.sysml +6 -0
- package/examples/gpca-pump/README.md +26 -0
- package/examples/gpca-pump/dhf/documents/DOC-RMP-001.md +1 -1
- package/examples/gpca-pump/memo.config.yaml +2 -2
- package/examples/gpca-pump/methodology/gpca_profiles.sysml +1 -1
- package/examples/gpca-pump/methodology/gpca_scope.sysml +2 -2
- package/examples/gpca-pump/model/catalog/gpca_analysis.sysml +1 -1
- package/examples/gpca-pump/model/catalog/gpca_architecture.sysml +10 -10
- package/examples/gpca-pump/model/catalog/gpca_behavior_actions.sysml +17 -6
- package/examples/gpca-pump/model/catalog/gpca_behavior_modes.sysml +11 -11
- package/examples/gpca-pump/model/catalog/gpca_behavior_subsystems.sysml +35 -22
- package/examples/gpca-pump/model/catalog/gpca_context.sysml +25 -6
- package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +6 -6
- package/examples/gpca-pump/model/catalog/gpca_formal_behavior.sysml +29 -15
- package/examples/gpca-pump/model/catalog/gpca_interfaces.sysml +293 -169
- package/examples/gpca-pump/model/catalog/gpca_operational.sysml +139 -21
- package/examples/gpca-pump/model/catalog/gpca_physical.sysml +1 -1
- package/examples/gpca-pump/model/catalog/gpca_requirements.sysml +210 -105
- package/examples/gpca-pump/model/catalog/gpca_risk.sysml +66 -69
- package/examples/gpca-pump/model/catalog/gpca_system.sysml +43 -76
- package/examples/gpca-pump/model/catalog/gpca_trace.sysml +73 -70
- package/examples/gpca-pump/model/catalog/gpca_verification.sysml +27 -27
- package/examples/gpca-pump/model/views/context_system_context_view.sysml +2 -2
- package/examples/gpca-pump/model/views/document_architecture_description_view.sysml +2 -2
- package/examples/gpca-pump/model/views/document_cyber_assessment_view.sysml +2 -2
- package/examples/gpca-pump/model/views/document_hazard_analysis_view.sysml +1 -1
- package/examples/gpca-pump/model/views/document_rmf_view.sysml +2 -2
- package/examples/gpca-pump/model/views/document_sdd_view.sysml +2 -2
- package/examples/gpca-pump/model/views/document_threat_model_view.sysml +1 -1
- package/examples/gpca-pump/model/views/document_usability_view.sysml +1 -1
- package/examples/gpca-pump/model/views/document_vv_view.sysml +1 -1
- package/examples/gpca-pump/model/views/functional_function_allocation_view.sysml +1 -1
- package/examples/gpca-pump/model/views/functional_function_browser_view.sysml +1 -1
- package/examples/gpca-pump/model/views/logical_device_interconnect_view.sysml +1 -1
- package/examples/gpca-pump/model/views/logical_mode_state_view.sysml +1 -1
- package/examples/gpca-pump/model/views/logical_system_decomposition_view.sysml +1 -1
- package/examples/gpca-pump/model/views/operational_scenario_sequence_view.sysml +1 -1
- package/examples/gpca-pump/model/views/operational_use_case_view.sysml +6 -6
- package/examples/gpca-pump/model/views/physical_physical_bom_view.sysml +1 -1
- package/examples/gpca-pump/model/views/requirements_requirements_trace_view.sysml +1 -1
- package/examples/gpca-pump/model/views/risk_risk_chain_view.sysml +2 -2
- package/examples/gpca-pump/model/views/software_software_architecture_view.sysml +1 -1
- package/examples/gpca-pump/model/views/verification_verification_coverage_view.sysml +1 -1
- package/examples/ivd-laboratory-system/README.md +7 -0
- package/examples/ivd-laboratory-system/model/catalog/ivd_laboratory_system.sysml +58 -0
- package/examples/ivd-laboratory-system/model/ivd_laboratory_system.sysml +3 -0
- package/examples/ivd-laboratory-system/model/viewpoints/ivd_laboratory_system_overview.sysml +6 -0
- package/examples/manual-surgical-instrument/README.md +7 -0
- package/examples/manual-surgical-instrument/model/catalog/manual_surgical_instrument.sysml +41 -0
- package/examples/manual-surgical-instrument/model/manual_surgical_instrument.sysml +3 -0
- package/examples/manual-surgical-instrument/model/viewpoints/manual_surgical_instrument_overview.sysml +6 -0
- package/examples/multidimensional-layers/README.md +7 -0
- package/examples/multidimensional-layers/model/catalog/multidimensional_layers.sysml +51 -0
- package/examples/multidimensional-layers/model/multidimensional_layers.sysml +4 -0
- package/examples/multidimensional-layers/model/viewpoints/multidimensional_layers_overview.sysml +13 -0
- package/examples/reusable-instrument/README.md +7 -0
- package/examples/reusable-instrument/model/catalog/reusable_instrument.sysml +71 -0
- package/examples/reusable-instrument/model/reusable_instrument.sysml +4 -0
- package/examples/reusable-instrument/model/viewpoints/reusable_instrument_overview.sysml +13 -0
- package/examples/software-only-medical-device/README.md +7 -0
- package/examples/software-only-medical-device/model/catalog/software_only_medical_device.sysml +62 -0
- package/examples/software-only-medical-device/model/software_only_medical_device.sysml +4 -0
- package/examples/software-only-medical-device/model/viewpoints/software_only_medical_device_overview.sysml +13 -0
- package/examples/surgical-closure-workflow/README.md +8 -0
- package/examples/surgical-closure-workflow/model/catalog/surgical_closure_workflow.sysml +151 -0
- package/examples/surgical-closure-workflow/model/surgical_closure_workflow.sysml +4 -0
- package/examples/surgical-closure-workflow/model/viewpoints/surgical_closure_workflow_overview.sysml +13 -0
- package/examples/surgical-robot/README.md +7 -0
- package/examples/surgical-robot/model/catalog/surgical_robot.sysml +58 -0
- package/examples/surgical-robot/model/surgical_robot.sysml +4 -0
- package/examples/surgical-robot/model/viewpoints/surgical_robot_overview.sysml +13 -0
- package/examples/sysml-diagram-samples/README.md +32 -0
- package/examples/sysml-diagram-samples/memo.package.yaml +5 -0
- package/examples/{gpca-pump → sysml-diagram-samples}/model/samples/action_flow_view.sysml +22 -4
- package/examples/sysml-diagram-samples/model/samples/context_view.sysml +55 -0
- package/examples/{gpca-pump → sysml-diagram-samples}/model/samples/functional_flow_view.sysml +17 -6
- package/examples/{gpca-pump → sysml-diagram-samples}/model/samples/interconnection_view.sysml +4 -3
- package/examples/{gpca-pump → sysml-diagram-samples}/model/samples/operational_behaviour_view.sysml +32 -42
- package/examples/sysml-diagram-samples/model/samples/requirements_view.sysml +63 -0
- package/examples/sysml-diagram-samples/model/samples/state_transition_view.sysml +109 -0
- package/examples/{gpca-pump → sysml-diagram-samples}/model/samples/tree_view.sysml +3 -3
- package/examples/sysml-diagram-samples/model/samples/use_case_view.sysml +81 -0
- package/examples/temperature-alarm/README.md +7 -0
- package/examples/temperature-alarm/model/catalog/temperature_alarm.sysml +140 -0
- package/examples/temperature-alarm/model/temperature_alarm.sysml +4 -0
- package/examples/temperature-alarm/model/viewpoints/temperature_alarm_overview.sysml +13 -0
- package/memo.manifest.yaml +4 -1
- package/methodologies/default/memo.package.yaml +1 -1
- package/methodologies/gpca/memo.package.yaml +4 -4
- package/ontology/memo.package.yaml +1 -1
- package/ontology/memo.rendering.yaml +37 -0
- package/package.json +17 -7
- package/profile/memo.package.yaml +1 -1
- package/profile/templates/connected-device/starter.sysml +3 -3
- package/profile/templates/infusion-pump/starter.sysml +3 -3
- package/profile/templates/monitoring-device/starter.sysml +3 -3
- package/profile/templates/samd/starter.sysml +3 -3
- package/src/architecture/decisions/memo_decisions.sysml +1 -1
- package/src/architecture/{behavior → functional/behavior}/memo_behavior.sysml +12 -11
- package/src/architecture/{constraints → functional/constraints}/memo_constraints.sysml +2 -2
- package/src/architecture/functional/functions/memo_functions.sysml +81 -0
- package/src/architecture/implementation/hardware/common/memo_hardware_common.sysml +46 -0
- package/src/architecture/implementation/hardware/electrical/memo_hardware_electrical.sysml +36 -0
- package/src/architecture/implementation/hardware/fluidic/memo_hardware_fluidic.sysml +14 -0
- package/src/architecture/implementation/hardware/mechanical/memo_hardware_mechanical.sysml +14 -0
- package/src/architecture/implementation/hardware/optical/memo_hardware_optical.sysml +11 -0
- package/src/architecture/implementation/hardware/sensing/memo_hardware_sensing.sysml +17 -0
- package/src/architecture/implementation/hardware/structure/memo_hardware_structure.sysml +12 -0
- package/src/architecture/implementation/software/runtime/memo_software_runtime.sysml +70 -0
- package/src/architecture/implementation/software/structure/memo_software_structure.sysml +80 -0
- package/src/architecture/implementation/ui/memo_ui.sysml +159 -0
- package/src/architecture/logical/interfaces/memo_interfaces.sysml +102 -0
- package/src/architecture/logical/structure/memo_logical_structure.sysml +150 -0
- package/src/architecture/operational/activities/memo_activities.sysml +86 -0
- package/src/architecture/operational/context/actors/memo_actors.sysml +38 -0
- package/src/architecture/operational/context/stakeholders/memo_stakeholders.sysml +64 -0
- package/src/architecture/operational/context/use_context/memo_use_context.sysml +53 -0
- package/src/architecture/operational/scenarios/memo_scenarios.sysml +116 -0
- package/src/architecture/operational/structure/memo_operational.sysml +26 -0
- package/src/architecture/operational/use_cases/memo_use_cases.sysml +67 -0
- package/src/architecture/operational/workflows/memo_workflows.sysml +126 -0
- package/src/architecture/realization/deployment/memo_deployment.sysml +90 -0
- package/src/architecture/{physical → realization/physical}/memo_physical_architecture.sysml +12 -1
- package/src/artifacts/definitions/memo_artifact_definitions.sysml +1 -1
- package/src/{architecture → assurance}/cybersecurity/memo_cybersecurity.sysml +14 -10
- package/src/assurance/human_factors/memo_human_factors.sysml +50 -0
- package/src/{architecture → assurance}/requirements/memo_requirements.sysml +45 -21
- package/src/assurance/requirements/needs/memo_needs.sysml +43 -0
- package/src/{architecture → assurance/safety_risk}/analysis/memo_fmea.sysml +13 -13
- package/src/{architecture/risk → assurance/safety_risk}/memo_arch_risk.sysml +2 -2
- package/src/{architecture/risk → assurance/safety_risk}/memo_risk.sysml +25 -16
- package/src/assurance/verification_validation/memo_assurance.sysml +49 -0
- package/src/compliance/artifacts/memo_artifacts.sysml +1 -1
- package/src/compliance/change/memo_change.sysml +2 -2
- package/src/compliance/dhf-templates/21cfr820/design-input.md +1 -1
- package/src/compliance/dhf-templates/21cfr820/design-validation.md +1 -1
- package/src/compliance/dhf-templates/21cfr820/user-needs.md +2 -2
- package/src/compliance/dhf-templates/iec-62366/urra.md +1 -1
- package/src/compliance/dhf-templates/iso-14971/fmea.md +1 -1
- package/src/compliance/dhf-templates/iso-14971/har.md +4 -4
- package/src/compliance/dhf-templates/iso-14971/risk-matrix.md +1 -1
- package/src/compliance/dhf-templates/iso-14971/rmp.md +1 -1
- package/src/compliance/dhf-templates/iso-14971/rmr.md +1 -1
- package/src/compliance/iso14971/risk_management_file.sysml +1 -1
- package/src/compliance/postmarket/memo_postmarket.sysml +2 -2
- package/src/core/common/memo_common.sysml +123 -14
- package/src/core/consistency_rules/consistency_rules.sysml +2 -2
- package/src/core/dimensions/dimensions.sysml +45 -24
- package/src/core/enumerations/memo_enumerations.sysml +11 -16
- package/src/core/methodology_scope/methodology_scope.sysml +10 -28
- package/src/core/relationships/memo_relationships.sysml +178 -146
- package/src/core/stdlib/{collections.sysml → collections/collections.sysml} +1 -1
- package/src/core/stdlib/{functions.sysml → functions/functions.sysml} +1 -1
- package/src/core/stdlib/{scalars.sysml → scalars/scalars.sysml} +1 -1
- package/src/core/stdlib/{time.sysml → time/time.sysml} +1 -1
- package/src/core/terminology/terminology.sysml +35 -0
- package/src/memo_namespaces.sysml +247 -302
- package/src/methodology/{memo_core.sysml → core/memo_core.sysml} +19 -13
- package/src/methodology/{memo_gates.sysml → gates/memo_gates.sysml} +1 -1
- package/src/methodology/{memo_patterns.sysml → patterns/memo_patterns.sysml} +1 -1
- package/src/methodology/{memo_profiles.sysml → profiles/memo_profiles.sysml} +27 -35
- package/src/methodology/{memo_workflow.sysml → workflow/memo_workflow.sysml} +1 -1
- package/src/rules/closure/closure_rules.sysml +11 -11
- package/src/rules/coverage/coverage_rules.sysml +8 -8
- package/src/rules/crosslayer/cross_layer_rules.sysml +2 -2
- package/src/rules/lifecycle/lifecycle_rules.sysml +1 -1
- package/src/rules/ontology/ontology_invariants.sysml +133 -0
- package/src/rules/quantitative/quantitative_rules.sysml +2 -2
- package/src/viewpoints/catalog/memo_viewpoint_catalog.sysml +189 -0
- package/src/viewpoints/clinical/clinical_viewpoint.sysml +0 -1
- package/src/viewpoints/context/context_viewpoint.sysml +1 -2
- package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +1 -2
- package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +8 -8
- package/src/viewpoints/functional/{function_allocation_view.sysml → function_allocation_view/function_allocation_view.sysml} +1 -1
- package/src/viewpoints/functional/functional_viewpoint.sysml +2 -3
- package/src/viewpoints/functional/{system_functional_tree_view.sysml → system_functional_tree_view/system_functional_tree_view.sysml} +1 -1
- package/src/viewpoints/logical/logical_viewpoint.sysml +0 -1
- package/src/viewpoints/operational/operational_viewpoint.sysml +1 -2
- package/src/viewpoints/operational/{use_case_view.sysml → use_case_view/use_case_view.sysml} +1 -1
- package/src/viewpoints/physical/physical_viewpoint.sysml +0 -1
- package/src/viewpoints/requirements/{requirements_traceability_view.sysml → requirements_traceability_view/requirements_traceability_view.sysml} +1 -1
- package/src/viewpoints/requirements/requirements_viewpoint.sysml +1 -2
- package/src/viewpoints/risk/{risk_chain_view.sysml → risk_chain_view/risk_chain_view.sysml} +2 -2
- package/src/viewpoints/risk/risk_viewpoint.sysml +1 -2
- package/src/viewpoints/software/{software_architecture_view.sysml → software_architecture_view/software_architecture_view.sysml} +1 -1
- package/src/viewpoints/software/software_viewpoint.sysml +1 -2
- package/src/viewpoints/usability/usability_viewpoint.sysml +0 -1
- package/src/viewpoints/verification/verification_viewpoint.sysml +0 -1
- package/template/memo.package.yaml +1 -1
- package/template/src/catalog/starter.sysml +3 -3
- package/examples/gpca-pump/model/samples/README.md +0 -24
- package/examples/gpca-pump/model/samples/action_flow_view.viewlayout +0 -9
- package/examples/gpca-pump/model/samples/interconnection_view.viewlayout +0 -99
- package/src/architecture/assurance/memo_assurance.sysml +0 -29
- package/src/architecture/context/memo_context.sysml +0 -58
- package/src/architecture/functions/memo_functions.sysml +0 -30
- package/src/architecture/hardware_structure/memo_hardware_structure.sysml +0 -15
- package/src/architecture/interfaces/memo_interfaces.sysml +0 -103
- package/src/architecture/logical_structure/memo_logical_structure.sysml +0 -10
- package/src/architecture/operational/memo_operational.sysml +0 -51
- package/src/architecture/software_structure/memo_software_structure.sysml +0 -44
- package/src/architecture/system/memo_system_analysis.sysml +0 -54
- package/src/artifacts/clinical_safety_report.sysml +0 -12
- package/src/artifacts/cybersecurity_assessment_report.sysml +0 -12
- package/src/artifacts/design_change_log.sysml +0 -12
- package/src/artifacts/design_history_file_index.sysml +0 -12
- package/src/artifacts/design_input_plan.sysml +0 -12
- package/src/artifacts/design_output_plan.sysml +0 -12
- package/src/artifacts/evidence_record.sysml +0 -12
- package/src/artifacts/failure_mode_effects_analysis.sysml +0 -12
- package/src/artifacts/hazard_analysis_report.sysml +0 -12
- package/src/artifacts/labeling_specification.sysml +0 -12
- package/src/artifacts/requirements_specification.sysml +0 -12
- package/src/artifacts/requirements_traceability_matrix.sysml +0 -12
- package/src/artifacts/risk_management_plan.sysml +0 -12
- package/src/artifacts/software_design_description.sysml +0 -12
- package/src/artifacts/software_development_plan.sysml +0 -12
- package/src/artifacts/soup_list.sysml +0 -12
- package/src/artifacts/system_architecture_description.sysml +0 -12
- package/src/artifacts/test_protocol.sysml +0 -12
- package/src/artifacts/test_report.sysml +0 -12
- package/src/artifacts/threat_model_report.sysml +0 -12
- package/src/artifacts/usability_engineering_report.sysml +0 -12
- package/src/medical_device_library.sysml +0 -100
- /package/src/methodology/{memo_archetypes.sysml → archetypes/memo_archetypes.sysml} +0 -0
- /package/src/methodology/{memo_rules.sysml → rules/memo_rules.sysml} +0 -0
- /package/src/methodology/{memo_viewpoints.sysml → viewpoints/memo_viewpoints.sysml} +0 -0
- /package/src/viewpoints/clinical/{clinical_evidence_view.sysml → clinical_evidence_view/clinical_evidence_view.sysml} +0 -0
- /package/src/viewpoints/context/{system_context_view.sysml → system_context_view/system_context_view.sysml} +0 -0
- /package/src/viewpoints/cybersecurity/{cybersecurity_assessment_view.sysml → cybersecurity_assessment_view/cybersecurity_assessment_view.sysml} +0 -0
- /package/src/viewpoints/cybersecurity/{threat_model_view.sysml → threat_model_view/threat_model_view.sysml} +0 -0
- /package/src/viewpoints/logical/{logical_architecture_view.sysml → logical_architecture_view/logical_architecture_view.sysml} +0 -0
- /package/src/viewpoints/physical/{network_topology_view.sysml → network_topology_view/network_topology_view.sysml} +0 -0
- /package/src/viewpoints/physical/{physical_bom_view.sysml → physical_bom_view/physical_bom_view.sysml} +0 -0
- /package/src/viewpoints/usability/{usability_engineering_view.sysml → usability_engineering_view/usability_engineering_view.sysml} +0 -0
- /package/src/viewpoints/verification/{verification_coverage_view.sysml → verification_coverage_view/verification_coverage_view.sysml} +0 -0
|
@@ -3,7 +3,7 @@ package memo_architecture_decisions {
|
|
|
3
3
|
|
|
4
4
|
private import memo_core_common::*;
|
|
5
5
|
private import memo_core_enumerations::*;
|
|
6
|
-
part def DesignDecision specializes
|
|
6
|
+
part def DesignDecision specializes MemoPart {
|
|
7
7
|
attribute decisionKind : String;
|
|
8
8
|
attribute alternatives : String;
|
|
9
9
|
attribute selectedOption : String;
|
|
@@ -1,13 +1,18 @@
|
|
|
1
|
-
package
|
|
1
|
+
package memo_architecture_functional_behavior {
|
|
2
2
|
private import ScalarValues::*;
|
|
3
3
|
|
|
4
4
|
private import memo_core_common::*;
|
|
5
5
|
private import memo_core_enumerations::*;
|
|
6
|
-
|
|
6
|
+
// State machines and their mode states are SysML v2 states (behaviours), so
|
|
7
|
+
// they derive from the MemoState foundation, not the part-based
|
|
8
|
+
// ArchitectureElement. Transitions stay part-based (below) to keep their
|
|
9
|
+
// traceable safety attributes.
|
|
10
|
+
// State-machine vocabulary. ModeState denotes a state owned by this model.
|
|
11
|
+
state def StateMachine :> MemoState {
|
|
7
12
|
attribute machineKind : String;
|
|
8
13
|
attribute executionSemantics : String;
|
|
9
14
|
}
|
|
10
|
-
|
|
15
|
+
state def ModeState :> MemoState {
|
|
11
16
|
attribute modeKind : String;
|
|
12
17
|
attribute entryCondition : String;
|
|
13
18
|
attribute exitCondition : String;
|
|
@@ -21,13 +26,13 @@ package memo_architecture_behavior {
|
|
|
21
26
|
attribute sourceState : String;
|
|
22
27
|
attribute targetState : String;
|
|
23
28
|
}
|
|
29
|
+
// A verifiable behavioural constraint, such as an invariant, transition
|
|
30
|
+
// rule, temporal claim, assumption, or guarantee.
|
|
24
31
|
part def BehaviorProperty specializes VerifiableElement {
|
|
25
32
|
attribute propertyKind : BehaviorPropertyKind;
|
|
26
33
|
attribute languageKind : PropertyLanguageKind;
|
|
27
34
|
attribute formalExpression : String;
|
|
28
35
|
}
|
|
29
|
-
part def AssumeProperty specializes BehaviorProperty;
|
|
30
|
-
part def GuaranteeProperty specializes BehaviorProperty;
|
|
31
36
|
part def Contract specializes VerifiableElement { attribute contractScope : String; }
|
|
32
37
|
part def PropertySet specializes VerifiableElement { attribute propertySetScope : String; }
|
|
33
38
|
part def ActivityAction specializes ArchitectureElement {
|
|
@@ -42,12 +47,8 @@ package memo_architecture_behavior {
|
|
|
42
47
|
attribute guardCondition : String;
|
|
43
48
|
attribute weight : String;
|
|
44
49
|
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
attribute relatedCapability : String;
|
|
48
|
-
attribute diagramReference : String;
|
|
49
|
-
}
|
|
50
|
-
part def InteractionMessage specializes TraceableElement {
|
|
50
|
+
// UIScenario now lives in memo_architecture_implementation_ui (:> MemoScenario).
|
|
51
|
+
part def InteractionMessage specializes MemoPart {
|
|
51
52
|
attribute messageKind : MessageKind;
|
|
52
53
|
attribute sequenceOrder : Integer;
|
|
53
54
|
attribute senderComponent : String;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
package
|
|
1
|
+
package memo_architecture_functional_constraints {
|
|
2
2
|
private import ScalarValues::*;
|
|
3
3
|
|
|
4
|
-
doc /*
|
|
4
|
+
doc /* Reusable quantitative constraint definitions. */
|
|
5
5
|
|
|
6
6
|
constraint def MaxResponseTimeConstraint {
|
|
7
7
|
attribute responseTimeMs : Real;
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
// Functional architecture (§9). A SystemFunction is a technology-independent
|
|
2
|
+
// responsibility of the system; a SystemAction is executable behavior realizing
|
|
3
|
+
// a function; a FunctionalExchange is a typed transfer between functions. A
|
|
4
|
+
// function may be realized by human action, mechanical design, electrical
|
|
5
|
+
// hardware, software, or a combination — allocation is optional and never
|
|
6
|
+
// assumes software.
|
|
7
|
+
package memo_architecture_functional_functions {
|
|
8
|
+
private import ScalarValues::*;
|
|
9
|
+
|
|
10
|
+
private import memo_core_common::*;
|
|
11
|
+
private import memo_core_enumerations::*;
|
|
12
|
+
private import memo_core_relationships::*;
|
|
13
|
+
private import memo_architecture_operational_activities::*;
|
|
14
|
+
private import memo_architecture_operational_scenarios::*;
|
|
15
|
+
|
|
16
|
+
part def SystemFunction specializes ArchitectureElement {
|
|
17
|
+
attribute functionCategory : String;
|
|
18
|
+
attribute trigger : String;
|
|
19
|
+
attribute outputSummary : String;
|
|
20
|
+
attribute concernKind : ConcernKind;
|
|
21
|
+
attribute criticality : CriticalityKind;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
// Executable behavior realizing a system function.
|
|
25
|
+
action def SystemAction specializes MemoAction {
|
|
26
|
+
attribute actionKind : ActionKind;
|
|
27
|
+
attribute executionSummary : String;
|
|
28
|
+
ref performedFunction : SystemFunction[0..1];
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
// Typed transfer of information/command/status/etc. between functions
|
|
32
|
+
// (renamed from LogicalFlow — it belongs to the functional perspective).
|
|
33
|
+
part def FunctionalExchange specializes ArchitectureElement {
|
|
34
|
+
attribute flowKind : FlowKind;
|
|
35
|
+
attribute direction : DirectionKind;
|
|
36
|
+
attribute latencyBudgetMs : Real;
|
|
37
|
+
attribute staleAfterMs : Real;
|
|
38
|
+
attribute integrityLevel : String;
|
|
39
|
+
ref sourceFunction : SystemFunction[0..1];
|
|
40
|
+
ref targetFunction : SystemFunction[0..1];
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// A system function enables operational work; it does not perform it.
|
|
44
|
+
|
|
45
|
+
// A reusable functional route through system responsibilities. Functional
|
|
46
|
+
// flows are part of functional architecture, never logical structure.
|
|
47
|
+
part def FunctionalFlow specializes ArchitectureElement {
|
|
48
|
+
attribute flowCategory : FunctionalFlowKind;
|
|
49
|
+
ref startFunction : SystemFunction[0..1];
|
|
50
|
+
ref endFunction : SystemFunction[0..1];
|
|
51
|
+
attribute endToEndLatencyBudgetMs : String;
|
|
52
|
+
attribute safetyRelevant : Boolean;
|
|
53
|
+
attribute securityRelevant : Boolean;
|
|
54
|
+
ref includedFunctions : SystemFunction[0..*];
|
|
55
|
+
}
|
|
56
|
+
part def FunctionalFlowStep specializes MemoPart {
|
|
57
|
+
attribute stepOrder : String;
|
|
58
|
+
ref function : SystemFunction[0..1];
|
|
59
|
+
ref exchange : FunctionalExchange[0..1];
|
|
60
|
+
ref item exchangedItem : MemoExchangeItem[0..1];
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
// The functional-layer scenario selects one functional route and realizes
|
|
64
|
+
// an operative scenario. It is the "what the system does" path, not a
|
|
65
|
+
// logical component interaction.
|
|
66
|
+
part def FunctionalScenario specializes MemoScenario {
|
|
67
|
+
ref functionSequence : SystemFunction[0..*];
|
|
68
|
+
ref functionalFlows : FunctionalExchange[0..*];
|
|
69
|
+
attribute sequenceDiagramRef : String;
|
|
70
|
+
ref selectedFlow : FunctionalFlow[0..1];
|
|
71
|
+
}
|
|
72
|
+
connection def IncludesStep :> MemoRelationship {
|
|
73
|
+
end functionalFlow : FunctionalFlow;
|
|
74
|
+
end step : FunctionalFlowStep;
|
|
75
|
+
}
|
|
76
|
+
connection def InvolvesFunction :> MemoRelationship {
|
|
77
|
+
end functionalFlow : FunctionalFlow;
|
|
78
|
+
end function : SystemFunction;
|
|
79
|
+
}
|
|
80
|
+
// Compatibility spelling used by existing models.
|
|
81
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
// Physical realization taxonomy (§12) — shared roots. "Physical" encompasses
|
|
2
|
+
// hardware, mechanical, fluidic, pneumatic, optical, acoustic, and thermal
|
|
3
|
+
// realization — not only electronics. Assemblies compose components; patient-
|
|
4
|
+
// contacting parts must declare contact characteristics (ISO 10993-1;
|
|
5
|
+
// rules/crosslayer). Technology-domain subgroups (electrical, mechanical,
|
|
6
|
+
// fluidic, optical, sensing) nest in sibling packages and specialize the roots
|
|
7
|
+
// declared here; acoustic and thermal parts have no dedicated subgroup and stay
|
|
8
|
+
// with the roots.
|
|
9
|
+
package memo_architecture_implementation_hardware_common {
|
|
10
|
+
private import ScalarValues::*;
|
|
11
|
+
|
|
12
|
+
private import memo_core_common::*;
|
|
13
|
+
private import memo_core_enumerations::*;
|
|
14
|
+
private import memo_core_relationships::*;
|
|
15
|
+
|
|
16
|
+
part def PhysicalAssembly specializes ArchitectureElement {
|
|
17
|
+
attribute responsibility : String;
|
|
18
|
+
attribute safetyRole : String;
|
|
19
|
+
attribute partNumber : String;
|
|
20
|
+
attribute mtbfHours : String;
|
|
21
|
+
attribute protectionClass : String;
|
|
22
|
+
attribute ipRating : String;
|
|
23
|
+
}
|
|
24
|
+
part def PhysicalSubassembly specializes PhysicalAssembly;
|
|
25
|
+
// Retained name from 0.4; an electronics-centred assembly.
|
|
26
|
+
part def HardwareAssembly specializes PhysicalAssembly;
|
|
27
|
+
|
|
28
|
+
part def PhysicalComponent specializes ArchitectureElement {
|
|
29
|
+
attribute partNumber : String;
|
|
30
|
+
attribute materialSummary : String;
|
|
31
|
+
// ISO 10993-1 contact characterization; required when true.
|
|
32
|
+
attribute patientContact : Boolean;
|
|
33
|
+
attribute contactNature : String;
|
|
34
|
+
attribute contactDuration : String;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
part def HardwareComponent specializes PhysicalComponent;
|
|
38
|
+
|
|
39
|
+
part def AcousticComponent specializes PhysicalComponent {
|
|
40
|
+
attribute acousticFunction : String;
|
|
41
|
+
}
|
|
42
|
+
part def ThermalComponent specializes PhysicalComponent {
|
|
43
|
+
attribute thermalFunction : String;
|
|
44
|
+
attribute operatingRange : String;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
// Electrical / electronic realization subgroup (§12). Electrical power and
|
|
2
|
+
// signal parts, plus cabling and connectivity media, specialize the physical
|
|
3
|
+
// roots in memo_architecture_implementation_hardware_common.
|
|
4
|
+
package memo_architecture_implementation_hardware_electrical {
|
|
5
|
+
private import ScalarValues::*;
|
|
6
|
+
private import memo_architecture_implementation_hardware_common::*;
|
|
7
|
+
|
|
8
|
+
part def ElectricalComponent specializes PhysicalComponent {
|
|
9
|
+
attribute ratedVoltageV : String;
|
|
10
|
+
attribute ratedCurrentA : String;
|
|
11
|
+
}
|
|
12
|
+
part def ElectronicComponent specializes PhysicalComponent {
|
|
13
|
+
attribute componentFamily : String;
|
|
14
|
+
}
|
|
15
|
+
part def PowerSupply specializes ElectricalComponent {
|
|
16
|
+
attribute inputRange : String;
|
|
17
|
+
attribute outputRails : String;
|
|
18
|
+
}
|
|
19
|
+
part def Battery specializes ElectricalComponent {
|
|
20
|
+
attribute chemistry : String;
|
|
21
|
+
attribute capacity : String;
|
|
22
|
+
attribute rechargeable : Boolean;
|
|
23
|
+
}
|
|
24
|
+
part def Cable specializes PhysicalComponent {
|
|
25
|
+
attribute conductorCount : String;
|
|
26
|
+
attribute shielding : String;
|
|
27
|
+
}
|
|
28
|
+
part def PhysicalConnectorPart specializes PhysicalComponent {
|
|
29
|
+
attribute connectorStandard : String;
|
|
30
|
+
attribute matingCycles : String;
|
|
31
|
+
}
|
|
32
|
+
part def NetworkMedium specializes PhysicalComponent {
|
|
33
|
+
attribute mediumKind : String;
|
|
34
|
+
attribute bandwidthSummary : String;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
// Fluidic / pneumatic realization subgroup (§12). Fluid- and gas-path parts
|
|
2
|
+
// specialize the physical roots in memo_architecture_implementation_hardware_common.
|
|
3
|
+
package memo_architecture_implementation_hardware_fluidic {
|
|
4
|
+
private import ScalarValues::*;
|
|
5
|
+
private import memo_architecture_implementation_hardware_common::*;
|
|
6
|
+
|
|
7
|
+
part def FluidicComponent specializes PhysicalComponent {
|
|
8
|
+
attribute fluidPathRole : String;
|
|
9
|
+
attribute pressureRating : String;
|
|
10
|
+
}
|
|
11
|
+
part def PneumaticComponent specializes PhysicalComponent {
|
|
12
|
+
attribute pneumaticRole : String;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
// Mechanical realization subgroup (§12). Structural and housing parts
|
|
2
|
+
// specialize the physical roots in memo_architecture_implementation_hardware_common.
|
|
3
|
+
package memo_architecture_implementation_hardware_mechanical {
|
|
4
|
+
private import ScalarValues::*;
|
|
5
|
+
private import memo_architecture_implementation_hardware_common::*;
|
|
6
|
+
|
|
7
|
+
part def MechanicalPart specializes PhysicalComponent {
|
|
8
|
+
attribute mechanicalFunction : String;
|
|
9
|
+
}
|
|
10
|
+
part def Enclosure specializes MechanicalPart {
|
|
11
|
+
attribute ingressProtection : String;
|
|
12
|
+
attribute cleanability : String;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
// Optical realization subgroup (§12). Light-path parts specialize the physical
|
|
2
|
+
// roots in memo_architecture_implementation_hardware_common.
|
|
3
|
+
package memo_architecture_implementation_hardware_optical {
|
|
4
|
+
private import ScalarValues::*;
|
|
5
|
+
private import memo_architecture_implementation_hardware_common::*;
|
|
6
|
+
|
|
7
|
+
part def OpticalComponent specializes PhysicalComponent {
|
|
8
|
+
attribute opticalFunction : String;
|
|
9
|
+
attribute wavelengthRange : String;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
// Sensing / actuation realization subgroup (§12). Transducers that measure or
|
|
2
|
+
// act on the physical world specialize the physical roots in
|
|
3
|
+
// memo_architecture_implementation_hardware_common.
|
|
4
|
+
package memo_architecture_implementation_hardware_sensing {
|
|
5
|
+
private import ScalarValues::*;
|
|
6
|
+
private import memo_architecture_implementation_hardware_common::*;
|
|
7
|
+
|
|
8
|
+
part def Sensor specializes PhysicalComponent {
|
|
9
|
+
attribute measurand : String;
|
|
10
|
+
attribute rangeSummary : String;
|
|
11
|
+
attribute accuracySummary : String;
|
|
12
|
+
}
|
|
13
|
+
part def Actuator specializes PhysicalComponent {
|
|
14
|
+
attribute actuationKind : String;
|
|
15
|
+
attribute outputRange : String;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// Physical realization taxonomy (§12) — aggregator. The hardware subgroup is
|
|
2
|
+
// split by technology domain into nested packages; this package re-exports the
|
|
3
|
+
// shared roots plus every domain subgroup under the historical name
|
|
4
|
+
// `memo_architecture_implementation_hardware_structure`, so importers see one flat surface.
|
|
5
|
+
package memo_architecture_implementation_hardware_structure {
|
|
6
|
+
public import memo_architecture_implementation_hardware_common::*;
|
|
7
|
+
public import memo_architecture_implementation_hardware_electrical::*;
|
|
8
|
+
public import memo_architecture_implementation_hardware_mechanical::*;
|
|
9
|
+
public import memo_architecture_implementation_hardware_fluidic::*;
|
|
10
|
+
public import memo_architecture_implementation_hardware_optical::*;
|
|
11
|
+
public import memo_architecture_implementation_hardware_sensing::*;
|
|
12
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
// Software runtime (component-and-connector) view (§11). Runtime structure
|
|
2
|
+
// with concurrency, scheduling, health monitoring, fault containment, and
|
|
3
|
+
// update/rollback semantics. Module structure lives in
|
|
4
|
+
// memo_architecture_implementation_software_structure; allocation in
|
|
5
|
+
// memo_architecture_realization_deployment. Detailed AADL categories stay in the AADL
|
|
6
|
+
// correspondence profile (examples/aadl-mapping).
|
|
7
|
+
package memo_architecture_implementation_software_runtime {
|
|
8
|
+
private import ScalarValues::*;
|
|
9
|
+
|
|
10
|
+
private import memo_core_common::*;
|
|
11
|
+
private import memo_core_enumerations::*;
|
|
12
|
+
private import memo_core_relationships::*;
|
|
13
|
+
private import memo_architecture_implementation_software_structure::*;
|
|
14
|
+
|
|
15
|
+
// process / thread / task / service / container / partition /
|
|
16
|
+
// dataStore / messageBroker.
|
|
17
|
+
enum def RuntimeKind {
|
|
18
|
+
enum process;
|
|
19
|
+
enum thread;
|
|
20
|
+
enum task;
|
|
21
|
+
enum service;
|
|
22
|
+
enum container;
|
|
23
|
+
enum partition;
|
|
24
|
+
enum dataStore;
|
|
25
|
+
enum messageBroker;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
part def SoftwareComponent specializes ArchitectureElement {
|
|
29
|
+
attribute runtimeKind : RuntimeKind;
|
|
30
|
+
attribute responsibility : String;
|
|
31
|
+
attribute safetyClass : SafetyClassKind;
|
|
32
|
+
attribute complexity : ComplexityKind;
|
|
33
|
+
attribute periodMs : Real;
|
|
34
|
+
attribute deadlineMs : Real;
|
|
35
|
+
attribute wcetMs : Real;
|
|
36
|
+
attribute schedulingPolicy : SchedulingPolicyKind;
|
|
37
|
+
attribute priority : Integer;
|
|
38
|
+
attribute activation : String;
|
|
39
|
+
attribute synchronizationMechanism : String;
|
|
40
|
+
attribute sharedResources : String;
|
|
41
|
+
attribute memoryBudget : String;
|
|
42
|
+
attribute healthMonitoring : String;
|
|
43
|
+
attribute restartPolicy : String;
|
|
44
|
+
attribute faultContainment : String;
|
|
45
|
+
attribute version : String;
|
|
46
|
+
attribute cybersecurityCriticality : CriticalityKind;
|
|
47
|
+
attribute auditable : Boolean;
|
|
48
|
+
attribute updatePolicy : String;
|
|
49
|
+
attribute rollbackPolicy : String;
|
|
50
|
+
// runtime-kind-specific detail (set only for the relevant runtimeKind)
|
|
51
|
+
attribute addressSpaceIsolated : Boolean[0..1];
|
|
52
|
+
attribute owningProcessName : String[0..1];
|
|
53
|
+
attribute serviceContract : String[0..1];
|
|
54
|
+
attribute discoveryMechanism : String[0..1];
|
|
55
|
+
attribute imageReference : String[0..1];
|
|
56
|
+
attribute orchestrationPlatform : String[0..1];
|
|
57
|
+
attribute partitionBudget : String[0..1];
|
|
58
|
+
attribute isolationMechanism : String[0..1];
|
|
59
|
+
attribute storageKind : String[0..1];
|
|
60
|
+
attribute retentionPolicy : String[0..1];
|
|
61
|
+
attribute deliverySemantics : String[0..1];
|
|
62
|
+
attribute topicStructure : String[0..1];
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
connection def ComponentConnects :> MemoRelationship {
|
|
66
|
+
attribute protocolSummary : String;
|
|
67
|
+
end sourceComponent : SoftwareComponent;
|
|
68
|
+
end targetComponent : SoftwareComponent;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
// Software module view (§11; IEC 62304 5.3-5.4). Code/module structure only:
|
|
2
|
+
// runtime structure lives in memo_architecture_implementation_software_runtime and
|
|
3
|
+
// allocation in memo_architecture_realization_deployment.
|
|
4
|
+
package memo_architecture_implementation_software_structure {
|
|
5
|
+
private import ScalarValues::*;
|
|
6
|
+
|
|
7
|
+
private import memo_core_common::*;
|
|
8
|
+
private import memo_core_enumerations::*;
|
|
9
|
+
private import memo_core_relationships::*;
|
|
10
|
+
private import memo_architecture_logical_structure::*;
|
|
11
|
+
|
|
12
|
+
part def SoftwareSystem specializes ArchitectureElement {
|
|
13
|
+
attribute version : String;
|
|
14
|
+
attribute safetyClass : SafetyClassKind;
|
|
15
|
+
attribute complexity : ComplexityKind;
|
|
16
|
+
attribute operatingSystem : String;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
// Module-view element (design responsibility). Runtime properties
|
|
20
|
+
// (period, WCET, scheduling) moved to SoftwareComponent.
|
|
21
|
+
// item / unit / package / library / code / firmware / soup (IEC 62304).
|
|
22
|
+
enum def ModuleKind {
|
|
23
|
+
enum item;
|
|
24
|
+
enum unit;
|
|
25
|
+
enum package;
|
|
26
|
+
enum library;
|
|
27
|
+
enum code;
|
|
28
|
+
enum firmware;
|
|
29
|
+
enum soup;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
part def SoftwareModule specializes ArchitectureElement {
|
|
33
|
+
attribute moduleKind : ModuleKind;
|
|
34
|
+
attribute responsibility : String;
|
|
35
|
+
attribute safetyClass : SafetyClassKind;
|
|
36
|
+
attribute complexity : ComplexityKind;
|
|
37
|
+
// module-kind-specific detail (set only for the relevant moduleKind)
|
|
38
|
+
attribute iec62304Role : String[0..1];
|
|
39
|
+
attribute implementationLanguage : String[0..1];
|
|
40
|
+
attribute namespacePath : String[0..1];
|
|
41
|
+
attribute libraryVersion : String[0..1];
|
|
42
|
+
attribute internallyDeveloped : Boolean[0..1];
|
|
43
|
+
attribute firmwareTarget : String[0..1];
|
|
44
|
+
attribute updateMechanism : String[0..1];
|
|
45
|
+
// SOUP (IEC 62304 §8) — set only when moduleKind = soup
|
|
46
|
+
attribute soupVersion : String[0..1];
|
|
47
|
+
attribute soupVendor : String[0..1];
|
|
48
|
+
attribute knownAnomalies : String[0..1];
|
|
49
|
+
attribute riskAcceptance : String[0..1];
|
|
50
|
+
attribute soupClassification : SOUPClassificationKind[0..1];
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
part def Algorithm specializes ArchitectureElement {
|
|
54
|
+
attribute algorithmKind : String;
|
|
55
|
+
attribute inputSummary : String;
|
|
56
|
+
attribute outputSummary : String;
|
|
57
|
+
attribute clinicalPerformanceClaim : String;
|
|
58
|
+
}
|
|
59
|
+
part def DataModel specializes ArchitectureElement {
|
|
60
|
+
attribute schemaReference : String;
|
|
61
|
+
attribute persistenceScope : String;
|
|
62
|
+
}
|
|
63
|
+
part def ConfigurationArtifact specializes ArchitectureElement {
|
|
64
|
+
attribute configurationScope : String;
|
|
65
|
+
attribute version : String;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
item def SBOMEntry specializes MemoExchangeItem {
|
|
69
|
+
attribute componentName : String;
|
|
70
|
+
attribute version : String;
|
|
71
|
+
attribute supplier : String;
|
|
72
|
+
attribute license : String;
|
|
73
|
+
attribute hash : String;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
connection def ModuleUses :> MemoRelationship {
|
|
77
|
+
end usingModule : SoftwareModule;
|
|
78
|
+
end usedModule : SoftwareModule;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
// User interface and interaction (§18). A small semantic hierarchy: concrete
|
|
2
|
+
// widget forms (button, knob, chart …) are enum classifications, not classes.
|
|
3
|
+
// UI state is distinct from system state (memo_architecture_functional_behavior) and
|
|
4
|
+
// from device modes (memo_architecture_logical_structure::LogicalMode).
|
|
5
|
+
// UI is an implementation concern (rendered UI is software; physical controls
|
|
6
|
+
// are hardware), so it lives in the implementation layer, not operational.
|
|
7
|
+
package memo_architecture_implementation_ui {
|
|
8
|
+
private import ScalarValues::*;
|
|
9
|
+
|
|
10
|
+
private import memo_core_common::*;
|
|
11
|
+
private import memo_core_enumerations::*;
|
|
12
|
+
private import memo_core_relationships::*;
|
|
13
|
+
private import memo_architecture_operational_activities::*;
|
|
14
|
+
private import memo_architecture_operational_scenarios::*;
|
|
15
|
+
private import memo_architecture_operational_use_cases::*;
|
|
16
|
+
private import memo_architecture_functional_functions::*;
|
|
17
|
+
private import memo_assurance_human_factors::*;
|
|
18
|
+
|
|
19
|
+
enum def UIElementFormKind {
|
|
20
|
+
enum button;
|
|
21
|
+
enum field;
|
|
22
|
+
enum selector;
|
|
23
|
+
enum knob;
|
|
24
|
+
enum switchControl;
|
|
25
|
+
enum slider;
|
|
26
|
+
enum table;
|
|
27
|
+
enum chart;
|
|
28
|
+
enum icon;
|
|
29
|
+
enum indicatorLamp;
|
|
30
|
+
enum audibleIndicator;
|
|
31
|
+
enum hapticIndicator;
|
|
32
|
+
enum textMessage;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
// The interaction intents a step or action can carry (§18).
|
|
36
|
+
enum def InteractionIntentKind {
|
|
37
|
+
enum userInput;
|
|
38
|
+
enum feedback;
|
|
39
|
+
enum navigation;
|
|
40
|
+
enum confirmation;
|
|
41
|
+
enum inputValidation;
|
|
42
|
+
enum errorMessage;
|
|
43
|
+
enum alarmAnnunciation;
|
|
44
|
+
enum acknowledgement;
|
|
45
|
+
enum cancellation;
|
|
46
|
+
enum timeout;
|
|
47
|
+
enum lockout;
|
|
48
|
+
enum correction;
|
|
49
|
+
enum recovery;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
part def UserInterface specializes ArchitectureElement {
|
|
53
|
+
attribute modality : String;
|
|
54
|
+
attribute uiTechnology : String;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
part def UIContainer specializes ArchitectureElement {
|
|
58
|
+
attribute containerKind : String;
|
|
59
|
+
attribute navigationRole : String;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
// One UIElement. The widget form — screen (field/table/chart) or physical
|
|
63
|
+
// (knob/switch/indicatorLamp/haptic) — is the `formKind` enum, not a
|
|
64
|
+
// subclass. Input/output/navigation/alarm/display/physical-control
|
|
65
|
+
// descriptors are optional attributes; a physical control's mechanical
|
|
66
|
+
// realization is a hardware part linked by ControlImplementedBy.
|
|
67
|
+
part def UIElement specializes ArchitectureElement {
|
|
68
|
+
attribute formKind : UIElementFormKind;
|
|
69
|
+
attribute labelText : String;
|
|
70
|
+
attribute accessibilitySummary : String;
|
|
71
|
+
// input descriptors (optional)
|
|
72
|
+
attribute inputConstraints : String;
|
|
73
|
+
attribute defaultValue : String;
|
|
74
|
+
// output / display descriptors (optional)
|
|
75
|
+
attribute updateRate : String;
|
|
76
|
+
attribute unitsDisplayed : String;
|
|
77
|
+
attribute informationContent : String;
|
|
78
|
+
// navigation (optional)
|
|
79
|
+
attribute navigationTarget : String;
|
|
80
|
+
// alarm annunciation (optional)
|
|
81
|
+
attribute alarmPriority : NotificationPriorityKind[0..1];
|
|
82
|
+
attribute annunciationModality : String;
|
|
83
|
+
attribute silenceable : Boolean;
|
|
84
|
+
// physical control (optional)
|
|
85
|
+
attribute actuationForce : String;
|
|
86
|
+
attribute guardedAgainstInadvertentActuation : Boolean;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
// UI state is presentation state — distinct from system/device state.
|
|
90
|
+
part def UIState specializes ArchitectureElement {
|
|
91
|
+
attribute displayedInformation : String;
|
|
92
|
+
attribute availableActions : String;
|
|
93
|
+
}
|
|
94
|
+
part def UIEvent specializes ArchitectureElement {
|
|
95
|
+
attribute eventSource : String;
|
|
96
|
+
attribute intent : InteractionIntentKind;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
action def UIAction specializes MemoAction {
|
|
100
|
+
attribute intent : InteractionIntentKind;
|
|
101
|
+
attribute feedbackProvided : String;
|
|
102
|
+
attribute confirmationRequired : Boolean;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
// A reusable dialogue structure through the UI; a selected path through
|
|
106
|
+
// it is an UIScenario.
|
|
107
|
+
action def InteractionFlow specializes MemoAction {
|
|
108
|
+
attribute entryPoint : String;
|
|
109
|
+
attribute exitPoint : String;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
part def UIScenario specializes MemoScenario {
|
|
113
|
+
ref parentFlow : InteractionFlow[0..1];
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
connection def UITransition :> MemoRelationship {
|
|
117
|
+
attribute triggeringEvent : String;
|
|
118
|
+
attribute guardCondition : String;
|
|
119
|
+
end sourceState : UIState;
|
|
120
|
+
end targetState : UIState;
|
|
121
|
+
}
|
|
122
|
+
connection def DataBinding :> MemoRelationship {
|
|
123
|
+
attribute bindingExpression : String;
|
|
124
|
+
attribute refreshPolicy : String;
|
|
125
|
+
end boundElement : UIElement;
|
|
126
|
+
end dataSource : MemoPart;
|
|
127
|
+
}
|
|
128
|
+
connection def PresentsState :> MemoRelationship {
|
|
129
|
+
end userInterface : UserInterface;
|
|
130
|
+
end state : UIState;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
// ── §18 traceability ─────────────────────────────────────────
|
|
134
|
+
connection def ElementTriggersAction :> MemoRelationship {
|
|
135
|
+
end element : UIElement;
|
|
136
|
+
end triggeredAction : UIAction;
|
|
137
|
+
}
|
|
138
|
+
connection def ActionInvokesFunction :> MemoRelationship {
|
|
139
|
+
end uiAction : UIAction;
|
|
140
|
+
end systemFunction : SystemFunction;
|
|
141
|
+
}
|
|
142
|
+
connection def FlowServesUseCase :> MemoRelationship {
|
|
143
|
+
end interactionFlow : InteractionFlow;
|
|
144
|
+
end useCase : UseCase;
|
|
145
|
+
}
|
|
146
|
+
// The UI-layer scenario realizes exactly one FunctionalScenario one layer
|
|
147
|
+
// up (the interaction sequence that carries out the function sequence),
|
|
148
|
+
// completing the OperativeScenario → FunctionalScenario → UIScenario chain.
|
|
149
|
+
connection def ErrorAtElement :> MemoRelationship {
|
|
150
|
+
end useError : UseError;
|
|
151
|
+
end element : UIElement;
|
|
152
|
+
}
|
|
153
|
+
// A risk control implemented by a UI element or by task design
|
|
154
|
+
// (confirmation dialog, lockout, guarded control).
|
|
155
|
+
connection def ControlImplementedBy :> MemoRelationship {
|
|
156
|
+
end riskControl : VerifiableElement;
|
|
157
|
+
end implementingElement : ArchitectureElement;
|
|
158
|
+
}
|
|
159
|
+
}
|