@memoarchitect/ontology 0.8.24 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/examples/connected-patient-monitor/model/catalog/connected_patient_monitor.sysml +9 -7
- package/examples/connected-patient-monitor/model/catalog/project.sysml +3 -1
- package/examples/embedded-infusion-pump/model/catalog/embedded_infusion_pump.sysml +9 -7
- package/examples/embedded-infusion-pump/model/catalog/project.sysml +3 -1
- package/examples/functional-logical-physical/model/catalog/functional_logical_physical.sysml +8 -6
- package/examples/functional-logical-physical/model/catalog/project.sysml +3 -1
- package/examples/gpca-pump/memo.identity.yaml +2185 -0
- package/examples/gpca-pump/methodology/gpca_profiles.sysml +3 -1
- package/examples/gpca-pump/model/catalog/gpca_analysis.sysml +29 -27
- package/examples/gpca-pump/model/catalog/gpca_architecture.sysml +115 -114
- package/examples/gpca-pump/model/catalog/gpca_behavior_modes.sysml +42 -41
- package/examples/gpca-pump/model/catalog/gpca_behavior_subsystems.sysml +26 -25
- package/examples/gpca-pump/model/catalog/gpca_context.sysml +29 -24
- package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +14 -13
- package/examples/gpca-pump/model/catalog/gpca_formal_behavior.sysml +42 -40
- package/examples/gpca-pump/model/catalog/gpca_interfaces.sysml +198 -197
- package/examples/gpca-pump/model/catalog/gpca_operational.sysml +121 -125
- package/examples/gpca-pump/model/catalog/gpca_physical.sysml +8 -6
- package/examples/gpca-pump/model/catalog/gpca_requirements.sysml +390 -388
- package/examples/gpca-pump/model/catalog/gpca_risk.sysml +164 -163
- package/examples/gpca-pump/model/catalog/gpca_standards.sysml +44 -43
- package/examples/gpca-pump/model/catalog/gpca_system.sysml +15 -14
- package/examples/gpca-pump/model/catalog/gpca_trace.sysml +10 -8
- package/examples/gpca-pump/model/catalog/gpca_verification.sysml +62 -61
- package/examples/gpca-pump/model/catalog/project.sysml +3 -1
- package/examples/gpca-pump/model/catalog/viewpoints/context/views/context_system_context_view.sysml +6 -4
- package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/cybersecurity_cybersecurity_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_cyber_assessment_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/cybersecurity/views/document_threat_model_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_allocation_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/functional/views/functional_function_browser_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/behavior_action_flow_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/document_architecture_description_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_device_interconnect_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_logical_architecture_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_mode_state_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/logical/views/logical_system_decomposition_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_scenario_sequence_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/operational/views/operational_use_case_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/physical/views/physical_physical_bom_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/document_dhf_index_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/requirements/views/requirements_requirements_trace_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_hazard_analysis_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/risk/views/document_rmf_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_fmea_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/risk/views/risk_risk_chain_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/software/views/document_sdd_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/software/views/software_software_architecture_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/usability/views/document_usability_view.sysml +6 -4
- package/examples/gpca-pump/model/catalog/viewpoints/verification/views/document_vv_view.sysml +5 -3
- package/examples/gpca-pump/model/catalog/viewpoints/verification/views/verification_verification_coverage_view.sysml +5 -3
- package/examples/ivd-laboratory-system/model/catalog/ivd_laboratory_system.sysml +9 -7
- package/examples/ivd-laboratory-system/model/catalog/project.sysml +3 -1
- package/examples/manual-surgical-instrument/model/catalog/manual_surgical_instrument.sysml +6 -4
- package/examples/manual-surgical-instrument/model/catalog/project.sysml +3 -1
- package/examples/multidimensional-layers/model/catalog/multidimensional_layers.sysml +6 -4
- package/examples/multidimensional-layers/model/catalog/project.sysml +3 -1
- package/examples/nested-architecture-dsm/memo.identity.yaml +181 -0
- package/examples/nested-architecture-dsm/model/catalog/architecture/functional/functions.sysml +20 -18
- package/examples/nested-architecture-dsm/model/catalog/architecture/logical/structure.sysml +20 -18
- package/examples/nested-architecture-dsm/model/catalog/architecture/operational/context.sysml +34 -0
- package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/needs.sysml +11 -6
- package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/requirements.sysml +16 -14
- package/examples/nested-architecture-dsm/model/catalog/assurance/verification_validation/verification_validation.sysml +18 -16
- package/examples/nested-architecture-dsm/model/catalog/project.sysml +4 -1
- package/examples/reusable-instrument/model/catalog/project.sysml +3 -1
- package/examples/reusable-instrument/model/catalog/reusable_instrument.sysml +17 -16
- package/examples/ros-mobile-robot/model/catalog/project.sysml +3 -1
- package/examples/ros-mobile-robot/model/catalog/ros_mobile_robot.sysml +18 -16
- package/examples/software-only-medical-device/model/catalog/project.sysml +3 -1
- package/examples/software-only-medical-device/model/catalog/software_only_medical_device.sysml +10 -8
- package/examples/surgical-closure-workflow/model/catalog/project.sysml +3 -1
- package/examples/surgical-closure-workflow/model/catalog/surgical_closure_workflow.sysml +54 -51
- package/examples/surgical-robot/model/catalog/project.sysml +3 -1
- package/examples/surgical-robot/model/catalog/surgical_robot.sysml +9 -7
- package/examples/sysml-diagram-samples/model/catalog/project.sysml +3 -1
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/action_flow_view.sysml +10 -8
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/context_view.sysml +7 -5
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/functional_flow_view.sysml +3 -1
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/interconnection_view.sysml +2 -1
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/operational_behaviour_view.sysml +3 -1
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/requirements_view.sysml +11 -9
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/standard_activity_view.sysml +3 -1
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/state_transition_view.sysml +2 -1
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/tree_view.sysml +3 -1
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/use_case_view.sysml +11 -7
- package/examples/temperature-alarm/memo.identity.yaml +64 -0
- package/examples/temperature-alarm/model/catalog/project.sysml +3 -1
- package/examples/temperature-alarm/model/catalog/temperature_alarm.sysml +27 -22
- package/examples/ui-screen-regions/memo.identity.yaml +205 -0
- package/examples/ui-screen-regions/model/catalog/architecture/functional/functions.sysml +14 -12
- package/examples/ui-screen-regions/model/catalog/architecture/implementation/ui.sysml +35 -33
- package/examples/ui-screen-regions/model/catalog/artifacts/assets/catalog.sysml +8 -6
- package/examples/ui-screen-regions/model/catalog/artifacts/reviews/comments.sysml +14 -13
- package/examples/ui-screen-regions/model/catalog/artifacts/reviews/notes.sysml +4 -2
- package/examples/ui-screen-regions/model/catalog/artifacts/reviews/rationales.sysml +4 -2
- package/examples/ui-screen-regions/model/catalog/assurance/human_factors/human_factors.sysml +12 -10
- package/examples/ui-screen-regions/model/catalog/assurance/requirements/needs.sysml +3 -1
- package/examples/ui-screen-regions/model/catalog/assurance/requirements/requirements.sysml +26 -24
- package/examples/ui-screen-regions/model/catalog/assurance/safety_risk/risk.sysml +17 -15
- package/examples/ui-screen-regions/model/catalog/assurance/verification_validation/verification_validation.sysml +10 -9
- package/examples/ui-screen-regions/model/catalog/project.sysml +3 -1
- package/examples/ui-screen-regions/model/catalog/relationships.sysml +2 -2
- package/examples/ui-screen-regions/model/catalog/traces.sysml +0 -2
- package/examples/ui-screen-regions/model/catalog/viewpoints/functional/views/ui_functional_tree.sysml +5 -3
- package/examples/ui-screen-regions/model/catalog/viewpoints/requirements/views/ui_requirements_trace.sysml +5 -3
- package/examples/ui-screen-regions/model/catalog/viewpoints/risk/views/ui_risk_chain.sysml +5 -3
- package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/main_screen_layout.sysml +3 -1
- package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/settings_screen_layout.sysml +3 -1
- package/examples/ui-screen-regions/model/catalog/viewpoints/ui_layout/views/ui_region_trace.sysml +3 -1
- package/extensions/aadl/memo.package.yaml +1 -1
- package/extensions/aadl/src/correspondence/memo_aadl_correspondence.sysml +23 -21
- package/extensions/aadl/src/methodology/aadl_methodology.sysml +3 -1
- package/extensions/clinical/src/methodology/clinical_methodology.sysml +3 -1
- package/extensions/cloud/memo.package.yaml +1 -1
- package/extensions/cloud/src/methodology/cloud_methodology.sysml +3 -1
- package/extensions/container/memo.package.yaml +1 -1
- package/extensions/container/src/methodology/container_methodology.sysml +3 -1
- package/extensions/messaging/memo.package.yaml +1 -1
- package/extensions/messaging/src/methodology/messaging_methodology.sysml +3 -1
- package/extensions/ros/memo.package.yaml +1 -1
- package/extensions/ros/src/methodology/ros_methodology.sysml +3 -1
- package/extensions/template/src/extension.sysml +3 -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 +2 -2
- package/profile/memo.package.yaml +1 -1
- package/src/architecture/functional/behavior/memo_behavior.sysml +1 -1
- package/src/architecture/implementation/hardware/common/memo_hardware_common.sysml +12 -2
- package/src/architecture/implementation/software/runtime/memo_software_runtime.sysml +0 -11
- package/src/architecture/implementation/ui/memo_ui.sysml +0 -23
- package/src/architecture/logical/interfaces/memo_interfaces.sysml +3 -1
- package/src/architecture/operational/context/use_context/memo_use_context.sysml +3 -11
- package/src/architecture/operational/scenarios/memo_scenarios.sysml +1 -12
- package/src/architecture/operational/use_cases/memo_use_cases.sysml +7 -11
- package/src/architecture/operational/workflows/memo_workflows.sysml +0 -20
- package/src/architecture/realization/deployment/memo_deployment.sysml +16 -9
- package/src/architecture/realization/physical/memo_physical_architecture.sysml +8 -2
- package/src/artifacts/standards/cfr_21_820.sysml +80 -89
- package/src/artifacts/standards/fda_cybersecurity_2023.sysml +45 -49
- package/src/artifacts/standards/iec_60601_1.sysml +108 -121
- package/src/artifacts/standards/iec_60601_1_2.sysml +31 -33
- package/src/artifacts/standards/iec_60812.sysml +21 -22
- package/src/artifacts/standards/iec_62304.sysml +150 -169
- package/src/artifacts/standards/iec_62366_1.sysml +80 -89
- package/src/artifacts/standards/iec_81001_5_1.sysml +52 -57
- package/src/artifacts/standards/iso_13485.sysml +80 -89
- package/src/artifacts/standards/iso_14971.sysml +66 -73
- package/src/artifacts/standards/iso_iec_ieee_42010.sysml +15 -15
- package/src/artifacts/templates/dhf/iec-60601/hrs.md +6 -6
- package/src/artifacts/templates/dhf/iec-62304/srs.md +10 -10
- package/src/artifacts/templates/dhf/system/syrs.md +6 -6
- package/src/assurance/cybersecurity/memo_cybersecurity.sysml +0 -1
- package/src/assurance/human_factors/memo_human_factors.sysml +0 -1
- package/src/assurance/requirements/memo_requirements.sysml +20 -16
- package/src/assurance/requirements/needs/memo_needs.sysml +33 -5
- package/src/assurance/safety_risk/memo_risk.sysml +20 -0
- package/src/assurance/verification_validation/memo_assurance.sysml +7 -12
- package/src/core/common/memo_common.sysml +50 -50
- package/src/core/enumerations/memo_enumerations.sysml +1 -1
- package/src/core/relationships/memo_relationships.sysml +22 -49
- package/src/methodology/archetypes/memo_archetypes.sysml +10 -8
- package/src/methodology/core/memo_core.sysml +0 -10
- package/src/methodology/profiles/memo_profiles.sysml +18 -16
- package/src/rules/closure/closure_rules.sysml +58 -22
- package/src/rules/crosslayer/cross_layer_rules.sysml +5 -3
- package/src/rules/ontology/ontology_invariants.sysml +119 -35
- package/src/rules/quantitative/quantitative_rules.sysml +4 -2
- package/src/viewpoints/catalog/memo_viewpoint_catalog.sysml +29 -28
- package/src/viewpoints/clinical/clinical_viewpoint.sysml +4 -2
- package/src/viewpoints/context/context_viewpoint.sysml +5 -3
- package/src/viewpoints/context/views/system_context_view/system_context_view.sysml +5 -3
- package/src/viewpoints/cybersecurity/cybersecurity_viewpoint.sysml +4 -2
- package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +6 -16
- package/src/viewpoints/functional/functional_viewpoint.sysml +4 -2
- package/src/viewpoints/functional/views/function_allocation_view/function_allocation_view.sysml +5 -3
- package/src/viewpoints/functional/views/system_functional_tree_view/system_functional_tree_view.sysml +5 -3
- package/src/viewpoints/logical/logical_viewpoint.sysml +4 -2
- package/src/viewpoints/logical/views/logical_architecture_view/logical_architecture_view.sysml +5 -3
- package/src/viewpoints/operational/operational_viewpoint.sysml +4 -2
- package/src/viewpoints/operational/views/use_case_view/use_case_view.sysml +5 -3
- package/src/viewpoints/physical/physical_viewpoint.sysml +4 -2
- package/src/viewpoints/physical/views/network_topology_view/network_topology_view.sysml +5 -3
- package/src/viewpoints/physical/views/physical_bom_view/physical_bom_view.sysml +5 -3
- package/src/viewpoints/rendering/memo_rendering.sysml +220 -40
- package/src/viewpoints/requirements/requirements_viewpoint.sysml +4 -2
- package/src/viewpoints/requirements/views/requirements_traceability_view/requirements_traceability_view.sysml +5 -3
- package/src/viewpoints/risk/risk_viewpoint.sysml +4 -2
- package/src/viewpoints/risk/views/risk_chain_view/risk_chain_view.sysml +5 -3
- package/src/viewpoints/software/software_viewpoint.sysml +4 -2
- package/src/viewpoints/software/views/software_architecture_view/software_architecture_view.sysml +5 -3
- package/src/viewpoints/ui_layout/ui_layout_viewpoint.sysml +4 -2
- package/src/viewpoints/ui_layout/views/screen_layout_view/screen_layout_view.sysml +3 -1
- package/src/viewpoints/usability/usability_viewpoint.sysml +4 -2
- package/src/viewpoints/verification/verification_viewpoint.sysml +4 -2
- package/src/viewpoints/verification/views/verification_coverage_view/verification_coverage_view.sysml +5 -3
- package/templates/connected-device/model/catalog/project.sysml +3 -1
- package/templates/default/model/catalog/project.sysml +3 -1
- package/templates/infusion-pump/model/catalog/project.sysml +3 -1
- package/templates/monitoring-device/model/catalog/project.sysml +3 -1
- package/templates/samd/model/catalog/project.sysml +3 -1
|
@@ -12,8 +12,10 @@ package memo_artifacts_standards_iso_iec_ieee_42010 {
|
|
|
12
12
|
private import memo_core_relationships::*;
|
|
13
13
|
private import memo_artifacts_standards_traceability::*;
|
|
14
14
|
|
|
15
|
+
private import memo_core_common::*;
|
|
16
|
+
private import memo_core_common::MemoIdentity;
|
|
15
17
|
item isoIecIeee42010 : RegulatoryStandard {
|
|
16
|
-
|
|
18
|
+
@MemoIdentity { :>> providedId = "STD-ISO-IEC-IEEE-42010"; }
|
|
17
19
|
attribute :>> name = "ISOIECIEEE42010";
|
|
18
20
|
attribute :>> designation = "ISO/IEC/IEEE 42010:2022";
|
|
19
21
|
attribute :>> edition = "2022";
|
|
@@ -22,21 +24,19 @@ package memo_artifacts_standards_iso_iec_ieee_42010 {
|
|
|
22
24
|
// reference standard, cited by documents rather than required by a
|
|
23
25
|
// market. Empty is the authored value, not an omission — see
|
|
24
26
|
// appliesToRegime in memo_artifacts_standards_traceability.
|
|
27
|
+
item isoIecIeee42010Clause5 : StandardClause {
|
|
28
|
+
@MemoIdentity { :>> providedId = "STD-ISO-IEC-IEEE-42010-5"; }
|
|
29
|
+
attribute :>> name = "ISOIECIEEE42010Clause5";
|
|
30
|
+
attribute :>> clauseNumber = "5";
|
|
31
|
+
attribute :>> normativeStrength = "shall";
|
|
32
|
+
}
|
|
33
|
+
item isoIecIeee42010Clause6 : StandardClause {
|
|
34
|
+
@MemoIdentity { :>> providedId = "STD-ISO-IEC-IEEE-42010-6"; }
|
|
35
|
+
attribute :>> name = "ISOIECIEEE42010Clause6";
|
|
36
|
+
attribute :>> clauseNumber = "6";
|
|
37
|
+
attribute :>> normativeStrength = "shall";
|
|
38
|
+
}
|
|
25
39
|
}
|
|
26
40
|
|
|
27
|
-
item isoIecIeee42010Clause5 : StandardClause {
|
|
28
|
-
attribute :>> id = "STD-ISO-IEC-IEEE-42010-5";
|
|
29
|
-
attribute :>> name = "ISOIECIEEE42010Clause5";
|
|
30
|
-
attribute :>> clauseNumber = "5";
|
|
31
|
-
attribute :>> normativeStrength = "shall";
|
|
32
|
-
}
|
|
33
|
-
item isoIecIeee42010Clause6 : StandardClause {
|
|
34
|
-
attribute :>> id = "STD-ISO-IEC-IEEE-42010-6";
|
|
35
|
-
attribute :>> name = "ISOIECIEEE42010Clause6";
|
|
36
|
-
attribute :>> clauseNumber = "6";
|
|
37
|
-
attribute :>> normativeStrength = "shall";
|
|
38
|
-
}
|
|
39
41
|
|
|
40
|
-
connection isoIecIeee42010Has5 : Composes connect parent ::> isoIecIeee42010 to child ::> isoIecIeee42010Clause5;
|
|
41
|
-
connection isoIecIeee42010Has6 : Composes connect parent ::> isoIecIeee42010 to child ::> isoIecIeee42010Clause6;
|
|
42
42
|
}
|
|
@@ -16,7 +16,7 @@ required_for: ["CE", "FDA_510k", "MDR"]
|
|
|
16
16
|
|
|
17
17
|
This Hardware Requirements Specification (HRS) defines the safety, construction, and performance requirements for the **{{project.product}}** physical equipment, ensuring compliance with IEC 60601-1 (general safety) and applicable collateral standards (IEC 60601-1-2 for electromagnetic compatibility).
|
|
18
18
|
|
|
19
|
-
Hardware requirements are identified by the model's `
|
|
19
|
+
Hardware requirements are identified by the model's `requirementType` attribute. Per-topic sections — construction, electrical, EMC, mechanical — are **not** name filters: each is the set of elements claiming the clause that governs that topic, selected by traversing `ConformsTo` to that clause. A clause is named by its element id rather than by its number, because a clause number is not unique across standards: "8" is a clause of IEC 60601-1, of IEC 60601-1-2 and of IEC 62304.
|
|
20
20
|
|
|
21
21
|
---
|
|
22
22
|
|
|
@@ -26,7 +26,7 @@ Summary metrics for the hardware requirements captured in the model:
|
|
|
26
26
|
|
|
27
27
|
```memo-query
|
|
28
28
|
kind: Requirement
|
|
29
|
-
where:
|
|
29
|
+
where: requirementType == "RequirementTypeKind::hardware"
|
|
30
30
|
display: count
|
|
31
31
|
label: Total hardware requirements
|
|
32
32
|
```
|
|
@@ -35,11 +35,11 @@ label: Total hardware requirements
|
|
|
35
35
|
|
|
36
36
|
```memo-query
|
|
37
37
|
kind: Requirement
|
|
38
|
-
where:
|
|
38
|
+
where: requirementType == "RequirementTypeKind::hardware"
|
|
39
39
|
display: table
|
|
40
|
-
columns: name,
|
|
40
|
+
columns: name, requirementType, electricalSafetyRelevant, doc
|
|
41
41
|
sort: name
|
|
42
|
-
empty: "No hardware requirements defined. Add Requirement elements with
|
|
42
|
+
empty: "No hardware requirements defined. Add Requirement elements with requirementType = hardware."
|
|
43
43
|
```
|
|
44
44
|
|
|
45
45
|
---
|
|
@@ -142,7 +142,7 @@ Hardware requirements traced to the elements that satisfy them:
|
|
|
142
142
|
|
|
143
143
|
```memo-query
|
|
144
144
|
kind: Requirement
|
|
145
|
-
where:
|
|
145
|
+
where: requirementType == "RequirementTypeKind::hardware"
|
|
146
146
|
traverse: outgoing satisfiedBy
|
|
147
147
|
display: table
|
|
148
148
|
columns: name, kind, layer, doc
|
|
@@ -16,7 +16,7 @@ required_for: ["CE", "FDA_510k", "MDR"]
|
|
|
16
16
|
|
|
17
17
|
This Software Requirements Specification (SRS) defines the software requirements for **{{project.product}}** in accordance with IEC 62304:2006+AMD1:2015 §5.2.
|
|
18
18
|
|
|
19
|
-
Software, hardware and system requirements are distinguished by the model's own `
|
|
19
|
+
Software, hardware and system requirements are distinguished by the model's own `requirementType` attribute, never by which layer directory a file sits in and never by what a requirement is called. There is no "software layer": hardware and software are sibling directories inside `implementation`.
|
|
20
20
|
|
|
21
21
|
---
|
|
22
22
|
|
|
@@ -26,14 +26,14 @@ Summary metrics for the requirements captured in the model:
|
|
|
26
26
|
|
|
27
27
|
```memo-query
|
|
28
28
|
kind: Requirement
|
|
29
|
-
where:
|
|
29
|
+
where: requirementType == "RequirementTypeKind::software"
|
|
30
30
|
display: count
|
|
31
31
|
label: Total software requirements
|
|
32
32
|
```
|
|
33
33
|
|
|
34
34
|
```memo-query
|
|
35
35
|
kind: Requirement
|
|
36
|
-
where:
|
|
36
|
+
where: requirementType == "RequirementTypeKind::system"
|
|
37
37
|
display: count
|
|
38
38
|
label: System requirements
|
|
39
39
|
```
|
|
@@ -48,7 +48,7 @@ Requirements carrying a `shall` obligation — the binding ones:
|
|
|
48
48
|
kind: Requirement
|
|
49
49
|
where: obligation == "ObligationKind::shall"
|
|
50
50
|
display: table
|
|
51
|
-
columns: name,
|
|
51
|
+
columns: name, requirementType, safetyClass, doc
|
|
52
52
|
sort: name
|
|
53
53
|
empty: "No requirements carry a `shall` obligation. Set `obligation` on Requirement elements."
|
|
54
54
|
```
|
|
@@ -57,11 +57,11 @@ empty: "No requirements carry a `shall` obligation. Set `obligation` on Requirem
|
|
|
57
57
|
|
|
58
58
|
```memo-query
|
|
59
59
|
kind: Requirement
|
|
60
|
-
where:
|
|
60
|
+
where: requirementType == "RequirementTypeKind::software"
|
|
61
61
|
display: table
|
|
62
|
-
columns: name,
|
|
62
|
+
columns: name, requirementType, safetyClass, doc
|
|
63
63
|
sort: name
|
|
64
|
-
empty: "No software requirements defined. Add Requirement elements with
|
|
64
|
+
empty: "No software requirements defined. Add Requirement elements with requirementType = software."
|
|
65
65
|
```
|
|
66
66
|
|
|
67
67
|
---
|
|
@@ -97,9 +97,9 @@ System requirements allocated to software per IEC 62304 §5.2, drawn from the mo
|
|
|
97
97
|
|
|
98
98
|
```memo-query
|
|
99
99
|
kind: Requirement
|
|
100
|
-
where:
|
|
100
|
+
where: requirementType == "RequirementTypeKind::system"
|
|
101
101
|
display: table
|
|
102
|
-
columns: name,
|
|
102
|
+
columns: name, requirementType, safetyClass, doc
|
|
103
103
|
sort: name
|
|
104
104
|
empty: "No system requirements defined."
|
|
105
105
|
```
|
|
@@ -155,7 +155,7 @@ empty: "No SOUP identified. Add DependsOnSoup links from software items to the S
|
|
|
155
155
|
|
|
156
156
|
```memo-query
|
|
157
157
|
kind: Requirement
|
|
158
|
-
where:
|
|
158
|
+
where: requirementType == "RequirementTypeKind::software"
|
|
159
159
|
traverse: outgoing verifiedBy
|
|
160
160
|
display: table
|
|
161
161
|
columns: name, kind, layer, doc
|
|
@@ -26,7 +26,7 @@ Summary metrics for the system requirements captured in the model:
|
|
|
26
26
|
|
|
27
27
|
```memo-query
|
|
28
28
|
kind: Requirement
|
|
29
|
-
where:
|
|
29
|
+
where: requirementType == "RequirementTypeKind::system"
|
|
30
30
|
display: count
|
|
31
31
|
label: Total system requirements
|
|
32
32
|
```
|
|
@@ -41,7 +41,7 @@ Binding system requirements — those carrying a `shall` obligation:
|
|
|
41
41
|
kind: Requirement
|
|
42
42
|
where: obligation == "ObligationKind::shall"
|
|
43
43
|
display: table
|
|
44
|
-
columns: name,
|
|
44
|
+
columns: name, requirementType, doc
|
|
45
45
|
sort: name
|
|
46
46
|
empty: "No requirements carry a `shall` obligation. Set `obligation` on Requirement elements."
|
|
47
47
|
```
|
|
@@ -50,11 +50,11 @@ empty: "No requirements carry a `shall` obligation. Set `obligation` on Requirem
|
|
|
50
50
|
|
|
51
51
|
```memo-query
|
|
52
52
|
kind: Requirement
|
|
53
|
-
where:
|
|
53
|
+
where: requirementType == "RequirementTypeKind::system"
|
|
54
54
|
display: table
|
|
55
|
-
columns: name,
|
|
55
|
+
columns: name, requirementType, safetyClass, doc
|
|
56
56
|
sort: name
|
|
57
|
-
empty: "No system requirements defined. Add Requirement elements with
|
|
57
|
+
empty: "No system requirements defined. Add Requirement elements with requirementType = system."
|
|
58
58
|
```
|
|
59
59
|
|
|
60
60
|
---
|
|
@@ -67,7 +67,7 @@ How system requirements are allocated down to hardware and software.
|
|
|
67
67
|
|
|
68
68
|
```memo-query
|
|
69
69
|
kind: Requirement
|
|
70
|
-
where:
|
|
70
|
+
where: requirementType == "RequirementTypeKind::system"
|
|
71
71
|
traverse: outgoing satisfiedBy
|
|
72
72
|
display: table
|
|
73
73
|
columns: name, kind, layer, doc
|
|
@@ -7,25 +7,32 @@ package memo_assurance_requirements {
|
|
|
7
7
|
private import memo_assurance_requirements_needs::*;
|
|
8
8
|
part def RiskDriver specializes RequirementDriver { attribute driverKind : String; }
|
|
9
9
|
|
|
10
|
-
//
|
|
11
|
-
//
|
|
12
|
-
//
|
|
13
|
-
//
|
|
14
|
-
//
|
|
15
|
-
//
|
|
16
|
-
//
|
|
17
|
-
|
|
10
|
+
// What a requirement is about: the system, the software, the hardware, or
|
|
11
|
+
// the instructions for use. One axis, and the members are its values.
|
|
12
|
+
//
|
|
13
|
+
// It carried a second axis until now. `systemSpecification`,
|
|
14
|
+
// `softwareSpecification`, `hardwareSpecification` and `designControl` are
|
|
15
|
+
// the design-control ROLE — input versus output, 21 CFR 820.30(c)/(d) and
|
|
16
|
+
// ISO 13485 §7.3.3/§7.3.4 — multiplied into the subject. A requirement then
|
|
17
|
+
// could not say "software" without also committing to a role, the grid was
|
|
18
|
+
// incomplete by construction (there is no `ifuSpecification`, and there
|
|
19
|
+
// would have to be one for every future pairing), and nothing ever used the
|
|
20
|
+
// four: 250 requirements across the examples say system, software or
|
|
21
|
+
// hardware. A role, if a project needs one, is its own attribute.
|
|
22
|
+
//
|
|
23
|
+
// The instructions for use are neither hardware nor software: the device
|
|
24
|
+
// satisfies such a requirement with words rather than with a part or a
|
|
25
|
+
// module, and it is verified by reviewing the IFU rather than by testing a
|
|
26
|
+
// build (EU MDR Annex I §23.4, ISO 20417, IEC 62366-1 §7.2).
|
|
27
|
+
enum def RequirementTypeKind {
|
|
18
28
|
enum system;
|
|
19
29
|
enum software;
|
|
20
30
|
enum hardware;
|
|
21
|
-
enum
|
|
22
|
-
enum softwareSpecification;
|
|
23
|
-
enum hardwareSpecification;
|
|
24
|
-
enum designControl;
|
|
31
|
+
enum ifu;
|
|
25
32
|
}
|
|
26
33
|
|
|
27
34
|
requirement def Requirement specializes MemoRequirement {
|
|
28
|
-
attribute
|
|
35
|
+
attribute requirementType : RequirementTypeKind;
|
|
29
36
|
attribute :>> statement : String;
|
|
30
37
|
attribute sourceKind : RequirementSourceKind;
|
|
31
38
|
attribute concernKind : ConcernKind;
|
|
@@ -53,9 +60,6 @@ package memo_assurance_requirements {
|
|
|
53
60
|
// design-control specification (ISO 13485 design output)
|
|
54
61
|
attribute specificationDomain : String;
|
|
55
62
|
attribute sourceFolder : String;
|
|
56
|
-
attribute linkedUserNeeds : String;
|
|
57
|
-
attribute linkedRisks : String;
|
|
58
|
-
attribute linkedTests : String;
|
|
59
63
|
}
|
|
60
64
|
// Named constant defined by a source requirements document (e.g. CriSys
|
|
61
65
|
// GPCA App. A.4) and referenced from requirement statements.
|
|
@@ -6,8 +6,15 @@
|
|
|
6
6
|
package memo_assurance_requirements_needs {
|
|
7
7
|
private import ScalarValues::*;
|
|
8
8
|
|
|
9
|
+
private import Metaobjects::SemanticMetadata;
|
|
10
|
+
|
|
9
11
|
private import memo_core_common::*;
|
|
10
12
|
private import memo_core_enumerations::*;
|
|
13
|
+
private import memo_core_relationships::*;
|
|
14
|
+
// A need is held by someone and arises in a context, and both are modelled
|
|
15
|
+
// elements. Assurance may depend on architecture; the reverse may not.
|
|
16
|
+
private import memo_architecture_operational_context_actors::*;
|
|
17
|
+
private import memo_architecture_operational_context_use_context::*;
|
|
11
18
|
|
|
12
19
|
// The kind of need. Was a subclass branch (StakeholderNeed / UserNeed /
|
|
13
20
|
// ClinicalUserNeed / PatientUserNeed / BusinessNeed / ServiceNeed /
|
|
@@ -29,15 +36,36 @@ package memo_assurance_requirements_needs {
|
|
|
29
36
|
|
|
30
37
|
requirement def Need specializes MemoNeed {
|
|
31
38
|
attribute needKind : NeedKind;
|
|
32
|
-
// user need (IEC 62366-1)
|
|
33
|
-
|
|
39
|
+
// A user need (IEC 62366-1) says WHOSE need it is with HeldBy, and the
|
|
40
|
+
// user's characteristics live on the User: `userPopulation`,
|
|
41
|
+
// `impairmentConsiderations`, `intendedTraining`, `intendedQualification`.
|
|
42
|
+
// A `userPopulationReference` string stood here and held prose — "ward
|
|
43
|
+
// nurses, including those wearing corrective lenses" — which is two
|
|
44
|
+
// typed attributes of a user profile written as one sentence nothing
|
|
45
|
+
// could read, on the wrong element.
|
|
34
46
|
// regulatory need
|
|
35
47
|
attribute jurisdiction : String;
|
|
36
48
|
attribute regulationReference : String;
|
|
37
|
-
// operational need
|
|
38
|
-
|
|
49
|
+
// The context an operational need arises in. Typed, because UseContext
|
|
50
|
+
// carries the care setting, environment and jurisdiction that an
|
|
51
|
+
// `operationalContextReference` string could only describe.
|
|
52
|
+
ref useContext : UseContext[0..1];
|
|
39
53
|
// design-control need (ISO 13485 design input)
|
|
40
54
|
attribute sourceFolder : String;
|
|
41
|
-
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
// Whose need this is. The holder is a modelled participant — a User, with
|
|
58
|
+
// the profile IEC 62366-1 asks for, or another operational participant —
|
|
59
|
+
// so "which users does this need serve" is a question the model answers
|
|
60
|
+
// rather than a sentence a reader interprets.
|
|
61
|
+
connection def HeldBy :> MemoRelationship {
|
|
62
|
+
end need : MemoNeed :>> source;
|
|
63
|
+
end holder : OperationalParticipant :>> target;
|
|
64
|
+
}
|
|
65
|
+
abstract connection heldByLinks : HeldBy[*];
|
|
66
|
+
metadata def <heldBy> HeldByMetadata :> SemanticMetadata {
|
|
67
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
68
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
69
|
+
:>> baseType = heldByLinks meta SysML::Usage;
|
|
42
70
|
}
|
|
43
71
|
}
|
|
@@ -6,6 +6,9 @@ package memo_assurance_safety_risk {
|
|
|
6
6
|
private import memo_core_common::*;
|
|
7
7
|
private import memo_core_enumerations::*;
|
|
8
8
|
private import memo_assurance_requirements::*;
|
|
9
|
+
// For HazardRelatedScenario below. Assurance may depend on architecture;
|
|
10
|
+
// the reverse is what the string on the scenario was avoiding.
|
|
11
|
+
private import memo_architecture_operational_scenarios::*;
|
|
9
12
|
|
|
10
13
|
// ISO 14971 / IEC 62366-1 risk-analysis input. A model element so hazards,
|
|
11
14
|
// scenarios, requirements, and DHF records can trace to the foreseeable
|
|
@@ -135,6 +138,23 @@ package memo_assurance_safety_risk {
|
|
|
135
138
|
:> annotatedElement : SysML::ConnectionUsage;
|
|
136
139
|
:>> baseType = tracesRiskLinks meta SysML::Usage;
|
|
137
140
|
}
|
|
141
|
+
// IEC 62366-1 3.9's hazard-related use scenario: the scenario a hazard can
|
|
142
|
+
// arise in. It is declared HERE rather than as a `hazardReference` string
|
|
143
|
+
// on the scenario, which is what stood in for it: a string names nothing a
|
|
144
|
+
// consumer can follow, and the layering is why it was written that way —
|
|
145
|
+
// assurance may depend on architecture, and the scenario package cannot
|
|
146
|
+
// see `Hazard`. On this side both ends are visible and the dependency runs
|
|
147
|
+
// the direction it already runs.
|
|
148
|
+
connection def HazardRelatedScenario :> MemoRelationship {
|
|
149
|
+
end hazard : RiskItem :>> source;
|
|
150
|
+
end scenario : OperativeScenario :>> target;
|
|
151
|
+
}
|
|
152
|
+
abstract connection hazardRelatedScenarioLinks : HazardRelatedScenario[*];
|
|
153
|
+
metadata def <hazardRelatedScenario> HazardRelatedScenarioMetadata :> SemanticMetadata {
|
|
154
|
+
:> annotatedElement : SysML::ConnectionDefinition;
|
|
155
|
+
:> annotatedElement : SysML::ConnectionUsage;
|
|
156
|
+
:>> baseType = hazardRelatedScenarioLinks meta SysML::Usage;
|
|
157
|
+
}
|
|
138
158
|
connection def AssessedAgainst :> MemoRelationship {
|
|
139
159
|
end risk : Risk :>> source;
|
|
140
160
|
end riskMatrix : RiskMatrix :>> target;
|
|
@@ -19,8 +19,10 @@ package memo_assurance_verification_validation {
|
|
|
19
19
|
// EXECUTION state, not an editorial one; execution state belongs in an
|
|
20
20
|
// attribute of its own (see RiskControlMeasure.verificationStatus), not in
|
|
21
21
|
// a second spelling of `status`.
|
|
22
|
-
verification
|
|
23
|
-
|
|
22
|
+
// Specializes the standard library verification case as well as MEMO's
|
|
23
|
+
// base, rather than shadowing it — see the note on UseCase.
|
|
24
|
+
verification def VerificationCase :> MemoVerificationCase, VerificationCases::VerificationCase {
|
|
25
|
+
attribute methodKind : MemoVerificationMethodKind;
|
|
24
26
|
attribute acceptanceCriteria : String;
|
|
25
27
|
}
|
|
26
28
|
verification def ValidationCase :> MemoVerificationCase {
|
|
@@ -32,14 +34,7 @@ package memo_assurance_verification_validation {
|
|
|
32
34
|
// Operational validation confirms the user's goal is achieved in the
|
|
33
35
|
// use environment (§5): ValidationCase validates a UseCase.
|
|
34
36
|
// Safety-critical functions must trace to verification (rules/coverage).
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
}
|
|
39
|
-
abstract connection executesScenarioLinks : ExecutesScenario[*];
|
|
40
|
-
metadata def <executesScenario> ExecutesScenarioMetadata :> SemanticMetadata {
|
|
41
|
-
:> annotatedElement : SysML::ConnectionDefinition;
|
|
42
|
-
:> annotatedElement : SysML::ConnectionUsage;
|
|
43
|
-
:>> baseType = executesScenarioLinks meta SysML::Usage;
|
|
44
|
-
}
|
|
37
|
+
// `ExecutesScenario` is native `perform` (2026-08-18): OperativeScenario
|
|
38
|
+
// is an `action def`, so write `perform <scenario>;` inside the
|
|
39
|
+
// verification case, as `InvolvesFunction` already does.
|
|
45
40
|
}
|
|
@@ -34,6 +34,56 @@ package memo_core_common {
|
|
|
34
34
|
private import memo_core_terminology::*;
|
|
35
35
|
private import memo_core_enumerations::*;
|
|
36
36
|
|
|
37
|
+
// The metaclass-agnostic carrier for MEMO's identity fields.
|
|
38
|
+
//
|
|
39
|
+
// A `metadata def` annotates an element of ANY metaclass — restriction is
|
|
40
|
+
// opt-in through `annotatedElement`, and this one declares none. That is
|
|
41
|
+
// what the per-metaclass base definitions below cannot do: KerML will not
|
|
42
|
+
// let an action, port, item, requirement or connection inherit from a part
|
|
43
|
+
// def, which is why the identification core is currently declared ten
|
|
44
|
+
// times. Metadata has no such limit, so one declaration replaces ten.
|
|
45
|
+
//
|
|
46
|
+
// An element has five identities and they are not interchangeable:
|
|
47
|
+
//
|
|
48
|
+
// 1. code reference `sfnAcquireMap` native declaredName
|
|
49
|
+
// 2. display label "Acquire EA Map" `label`, below
|
|
50
|
+
// 3. number id `SFN-1` assigned, never authored
|
|
51
|
+
// 4. provided id `SPEC-4471` `providedId`, below
|
|
52
|
+
// 5. technical uuid `e2f75cf6-…` `uuid`, below
|
|
53
|
+
//
|
|
54
|
+
// 1 is native and needs no field here. 3 is generated by the compiler and
|
|
55
|
+
// recorded in `memo.identity.yaml`: it is monotonic, gaps are kept, and a
|
|
56
|
+
// retired number is never reused, so nothing authors it by hand.
|
|
57
|
+
//
|
|
58
|
+
// `label` is NOT a duplicate of the native name, which is the reading that
|
|
59
|
+
// nearly deleted it: the native name is a lowerCamelCase identifier and
|
|
60
|
+
// must be unique in its namespace, while a label is free text that
|
|
61
|
+
// legitimately repeats — measured 2026-08-18, 1278 labels across the
|
|
62
|
+
// ontology and examples share only 1216 distinct values, because seven
|
|
63
|
+
// different ports are all correctly labelled "TLM_MODE_IN". A label
|
|
64
|
+
// therefore cannot live in a name slot, native or otherwise.
|
|
65
|
+
//
|
|
66
|
+
// `providedId` is the identifier an EXTERNAL system knows the element by,
|
|
67
|
+
// and it exists because that system's scheme is not MEMO's: a customer
|
|
68
|
+
// numbering software requirements `SPEC-4471` cannot be made to use `SWR-`,
|
|
69
|
+
// and overwriting the generated number to please them would break the
|
|
70
|
+
// guarantee that numbers are never reassigned.
|
|
71
|
+
//
|
|
72
|
+
// `uuid` is machine identity. Authored values win over the registry, which
|
|
73
|
+
// wins over derivation — so an element whose file must move can pin its own
|
|
74
|
+
// uuid, which is what the attribute always advertised.
|
|
75
|
+
//
|
|
76
|
+
// Deliberately absent: `name` and `description` (native name and `doc`),
|
|
77
|
+
// `rationale` (standard `@Rationale`), and `id` — superseded by the
|
|
78
|
+
// generated number id and by `providedId`.
|
|
79
|
+
metadata def MemoIdentity {
|
|
80
|
+
attribute label : String[0..1];
|
|
81
|
+
attribute providedId : String[0..1];
|
|
82
|
+
attribute uuid : String[0..1];
|
|
83
|
+
attribute shortDescription : String[0..1];
|
|
84
|
+
attribute sourceReference : String[0..1];
|
|
85
|
+
}
|
|
86
|
+
|
|
37
87
|
// ─── Single abstract part root ──────────────────────────────────
|
|
38
88
|
// Every structural MEMO concept specializes MemoPart. Identity and
|
|
39
89
|
// traceability are attributes of this one root — MEMO has no separate
|
|
@@ -48,8 +98,6 @@ package memo_core_common {
|
|
|
48
98
|
// cross-cutting concern, and editorial status.
|
|
49
99
|
abstract part def MemoPart {
|
|
50
100
|
// identity
|
|
51
|
-
attribute id : String;
|
|
52
|
-
attribute uuid : String;
|
|
53
101
|
attribute name : String;
|
|
54
102
|
// Two description registers on every MEMO element, because views have
|
|
55
103
|
// two densities. `shortDescription` is the one-line form a table cell,
|
|
@@ -58,11 +106,8 @@ package memo_core_common {
|
|
|
58
106
|
// renders. A view picks the register that fits — it never truncates
|
|
59
107
|
// the long one, because a silently clipped sentence in a DHF table is
|
|
60
108
|
// a defect, not a layout choice.
|
|
61
|
-
attribute shortDescription : String;
|
|
62
109
|
attribute description : String;
|
|
63
110
|
// traceability
|
|
64
|
-
attribute rationale : String;
|
|
65
|
-
attribute sourceReference : String;
|
|
66
111
|
// editorial status and lifecycle
|
|
67
112
|
attribute status : ElementStatusKind;
|
|
68
113
|
attribute lifecycleState : LifecycleStateKind;
|
|
@@ -123,25 +168,15 @@ package memo_core_common {
|
|
|
123
168
|
// Behavioral foundation: operational activities, tasks, system actions,
|
|
124
169
|
// and interaction steps specialize MemoAction.
|
|
125
170
|
action def MemoAction {
|
|
126
|
-
attribute id : String;
|
|
127
|
-
attribute uuid : String;
|
|
128
171
|
attribute name : String;
|
|
129
|
-
attribute shortDescription : String;
|
|
130
172
|
attribute description : String;
|
|
131
|
-
attribute rationale : String;
|
|
132
|
-
attribute sourceReference : String;
|
|
133
173
|
attribute status : ElementStatusKind;
|
|
134
174
|
}
|
|
135
175
|
|
|
136
176
|
// Boundary feature foundation for typed ports.
|
|
137
177
|
port def MemoPort {
|
|
138
|
-
attribute id : String;
|
|
139
|
-
attribute uuid : String;
|
|
140
178
|
attribute name : String;
|
|
141
|
-
attribute shortDescription : String;
|
|
142
179
|
attribute description : String;
|
|
143
|
-
attribute rationale : String;
|
|
144
|
-
attribute sourceReference : String;
|
|
145
180
|
attribute status : ElementStatusKind;
|
|
146
181
|
}
|
|
147
182
|
|
|
@@ -149,13 +184,8 @@ package memo_core_common {
|
|
|
149
184
|
abstract interface def MemoInterface {
|
|
150
185
|
end source;
|
|
151
186
|
end target;
|
|
152
|
-
attribute id : String;
|
|
153
|
-
attribute uuid : String;
|
|
154
187
|
attribute name : String;
|
|
155
|
-
attribute shortDescription : String;
|
|
156
188
|
attribute description : String;
|
|
157
|
-
attribute rationale : String;
|
|
158
|
-
attribute sourceReference : String;
|
|
159
189
|
}
|
|
160
190
|
|
|
161
191
|
// Single item foundation. Standards, hazards, stored software data, and
|
|
@@ -163,13 +193,8 @@ package memo_core_common {
|
|
|
163
193
|
// exchanged is expressed by its use in a port or flow, not by a second
|
|
164
194
|
// ontology root.
|
|
165
195
|
abstract item def MemoItem {
|
|
166
|
-
attribute id : String;
|
|
167
|
-
attribute uuid : String;
|
|
168
196
|
attribute name : String;
|
|
169
|
-
attribute shortDescription : String;
|
|
170
197
|
attribute description : String;
|
|
171
|
-
attribute rationale : String;
|
|
172
|
-
attribute sourceReference : String;
|
|
173
198
|
attribute status : ElementStatusKind;
|
|
174
199
|
// What the item CARRIES, as distinct from what it is called. Removed
|
|
175
200
|
// by `595bfac` while modelling native wrappers; nothing replaced them,
|
|
@@ -190,26 +215,16 @@ package memo_core_common {
|
|
|
190
215
|
// references; identity is carried here so use cases do not maintain a
|
|
191
216
|
// partial hand-written copy of the MEMO identification core.
|
|
192
217
|
abstract use case def MemoUseCase {
|
|
193
|
-
attribute id : String;
|
|
194
|
-
attribute uuid : String;
|
|
195
218
|
attribute name : String;
|
|
196
|
-
attribute shortDescription : String;
|
|
197
219
|
attribute description : String;
|
|
198
|
-
attribute rationale : String;
|
|
199
|
-
attribute sourceReference : String;
|
|
200
220
|
attribute status : ElementStatusKind;
|
|
201
221
|
}
|
|
202
222
|
|
|
203
223
|
// General constraint foundation. Executable consistency rules and
|
|
204
224
|
// reusable quantitative constraints are both native constraint defs.
|
|
205
225
|
abstract constraint def MemoConstraint {
|
|
206
|
-
attribute id : String;
|
|
207
|
-
attribute uuid : String;
|
|
208
226
|
attribute name : String;
|
|
209
|
-
attribute shortDescription : String;
|
|
210
227
|
attribute description : String;
|
|
211
|
-
attribute rationale : String;
|
|
212
|
-
attribute sourceReference : String;
|
|
213
228
|
attribute status : ElementStatusKind;
|
|
214
229
|
}
|
|
215
230
|
|
|
@@ -220,13 +235,8 @@ package memo_core_common {
|
|
|
220
235
|
// say "a need or a requirement" with one type name — before it, every end
|
|
221
236
|
// that had to accept both was left untyped.
|
|
222
237
|
abstract requirement def MemoRequirementElement {
|
|
223
|
-
attribute id : String;
|
|
224
|
-
attribute uuid : String;
|
|
225
238
|
attribute name : String;
|
|
226
|
-
attribute shortDescription : String;
|
|
227
239
|
attribute description : String;
|
|
228
|
-
attribute rationale : String;
|
|
229
|
-
attribute sourceReference : String;
|
|
230
240
|
attribute status : ElementStatusKind;
|
|
231
241
|
attribute statement : String;
|
|
232
242
|
}
|
|
@@ -245,13 +255,8 @@ package memo_core_common {
|
|
|
245
255
|
// the part-based MemoPart — so, like MemoAction, it re-declares the small
|
|
246
256
|
// identification core rather than inheriting it.
|
|
247
257
|
verification def MemoVerificationCase {
|
|
248
|
-
attribute id : String;
|
|
249
|
-
attribute uuid : String;
|
|
250
258
|
attribute name : String;
|
|
251
|
-
attribute shortDescription : String;
|
|
252
259
|
attribute description : String;
|
|
253
|
-
attribute rationale : String;
|
|
254
|
-
attribute sourceReference : String;
|
|
255
260
|
attribute status : ElementStatusKind;
|
|
256
261
|
}
|
|
257
262
|
|
|
@@ -264,13 +269,8 @@ package memo_core_common {
|
|
|
264
269
|
|
|
265
270
|
state def MemoState {
|
|
266
271
|
attribute stateKind : StateKind;
|
|
267
|
-
attribute id : String;
|
|
268
|
-
attribute uuid : String;
|
|
269
272
|
attribute name : String;
|
|
270
|
-
attribute shortDescription : String;
|
|
271
273
|
attribute description : String;
|
|
272
|
-
attribute rationale : String;
|
|
273
|
-
attribute sourceReference : String;
|
|
274
274
|
attribute status : ElementStatusKind;
|
|
275
275
|
attribute modeKind : String;
|
|
276
276
|
attribute entryCondition : String;
|