@memoarchitect/ontology 0.8.24 → 0.10.9
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/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 +2179 -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 +22 -20
- 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 +290 -288
- 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/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/assurance/requirements/needs.sysml +6 -4
- package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/requirements.sysml +9 -7
- package/examples/nested-architecture-dsm/model/catalog/assurance/verification_validation/verification_validation.sysml +18 -16
- package/examples/nested-architecture-dsm/model/catalog/project.sysml +3 -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 +51 -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 +8 -6
- 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/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 +14 -12
- 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/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/src/methodology/cloud_methodology.sysml +3 -1
- package/extensions/container/src/methodology/container_methodology.sysml +3 -1
- package/extensions/messaging/src/methodology/messaging_methodology.sysml +3 -1
- package/extensions/ros/src/methodology/ros_methodology.sysml +3 -1
- package/extensions/template/src/extension.sysml +3 -1
- package/package.json +2 -2
- 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 +0 -10
- 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/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 +22 -20
- package/src/rules/crosslayer/cross_layer_rules.sysml +4 -2
- package/src/rules/ontology/ontology_invariants.sysml +106 -33
- 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
|
}
|
|
@@ -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;
|
|
@@ -7,6 +7,7 @@ package memo_core_relationships {
|
|
|
7
7
|
private import memo_core_common::*;
|
|
8
8
|
private import memo_core_enumerations::*;
|
|
9
9
|
|
|
10
|
+
private import Allocations::Allocation;
|
|
10
11
|
// All MEMO relations are native SysML v2 `connection def`s (each is a
|
|
11
12
|
// Connection/Association), specializing the MemoRelationship base. The
|
|
12
13
|
// relationship name is the verb; the RelationshipRegistry derives the
|
|
@@ -107,17 +108,6 @@ package memo_core_relationships {
|
|
|
107
108
|
// only when no specific relation carries the meaning, and say why in the
|
|
108
109
|
// inherited `rationale` — an untyped link with no stated reason is an
|
|
109
110
|
// audit gap, not a model fact.
|
|
110
|
-
connection def MemoLink :> MemoRelationship {
|
|
111
|
-
doc /* Generic association between any two model elements. */
|
|
112
|
-
end linkSource :>> source;
|
|
113
|
-
end linkTarget :>> target;
|
|
114
|
-
}
|
|
115
|
-
abstract connection memoLinkLinks : MemoLink[*];
|
|
116
|
-
metadata def <memoLink> MemoLinkMetadata :> SemanticMetadata {
|
|
117
|
-
:> annotatedElement : SysML::ConnectionDefinition;
|
|
118
|
-
:> annotatedElement : SysML::ConnectionUsage;
|
|
119
|
-
:>> baseType = memoLinkLinks meta SysML::Usage;
|
|
120
|
-
}
|
|
121
111
|
|
|
122
112
|
connection def DerivesFrom :> MemoRelationship {
|
|
123
113
|
// Drivers span metaclasses — a need is a requirement def, a hazard an
|
|
@@ -206,57 +196,40 @@ package memo_core_relationships {
|
|
|
206
196
|
|
|
207
197
|
// Enables unifies the former EnablesWorkflow / EnablesActivity synonyms
|
|
208
198
|
// (an enabling system/function enables a workflow/activity).
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
}
|
|
213
|
-
abstract connection enablesLinks : Enables[*];
|
|
214
|
-
metadata def <enables> EnablesMetadata :> SemanticMetadata {
|
|
215
|
-
:> annotatedElement : SysML::ConnectionDefinition;
|
|
216
|
-
:> annotatedElement : SysML::ConnectionUsage;
|
|
217
|
-
:>> baseType = enablesLinks meta SysML::Usage;
|
|
218
|
-
}
|
|
199
|
+
// `Enables` is native `dependency` (2026-08-18): write
|
|
200
|
+
// `dependency from <enabling> to <enabled>;`. Same call as `Supports`,
|
|
201
|
+
// which was deleted as a duplicate of both `dependency` and `Enables`.
|
|
219
202
|
|
|
220
|
-
|
|
203
|
+
// A processing node hosted by an assembly is allocated to it. The end
|
|
204
|
+
// NAMES were already right; two of the three usages wrote them in reverse
|
|
205
|
+
// order, and the builder binds by position, so those two edges pointed the
|
|
206
|
+
// wrong way. See the reversed-end-name lint in memo-tools.
|
|
207
|
+
allocation def HostedBy :> MemoRelationship, Allocations::Allocation {
|
|
221
208
|
end processingNode : MemoPart :>> source;
|
|
222
209
|
end hostAssembly : MemoPart :>> target;
|
|
223
210
|
}
|
|
224
211
|
abstract connection hostedByLinks : HostedBy[*];
|
|
225
212
|
metadata def <hostedBy> HostedByMetadata :> SemanticMetadata {
|
|
226
|
-
:> annotatedElement : SysML::
|
|
227
|
-
:> annotatedElement : SysML::
|
|
213
|
+
:> annotatedElement : SysML::AllocationDefinition;
|
|
214
|
+
:> annotatedElement : SysML::AllocationUsage;
|
|
228
215
|
:>> baseType = hostedByLinks meta SysML::Usage;
|
|
229
216
|
}
|
|
230
217
|
|
|
231
218
|
|
|
232
219
|
|
|
233
220
|
|
|
234
|
-
// Composes is
|
|
235
|
-
//
|
|
236
|
-
//
|
|
237
|
-
//
|
|
238
|
-
//
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
:> annotatedElement : SysML::ConnectionDefinition;
|
|
246
|
-
:> annotatedElement : SysML::ConnectionUsage;
|
|
247
|
-
:>> baseType = composesLinks meta SysML::Usage;
|
|
248
|
-
}
|
|
221
|
+
// `Composes` is deleted (R10-S7). Containment is NESTING — the child is
|
|
222
|
+
// declared inside the parent — which is how SysML v2 models composition:
|
|
223
|
+
// composite feature ownership, not a link. The relation specialized
|
|
224
|
+
// `Connections::BinaryConnection`, "a link between two things WITHIN some
|
|
225
|
+
// containing structure", so it was the wrong category for the containment
|
|
226
|
+
// itself, and the corpus has no composition connection to specialize.
|
|
227
|
+
//
|
|
228
|
+
// Nothing is lost: the builder synthesizes a `composes` edge from every
|
|
229
|
+
// nested part and item, so rules, the DSM and traceability read exactly the
|
|
230
|
+
// graph they read before. The edge type is registered natively in
|
|
231
|
+
// memo-tools' relationship registry.
|
|
249
232
|
|
|
250
|
-
connection def AnalyzedBy :> MemoRelationship {
|
|
251
|
-
end element : MemoPart :>> source;
|
|
252
|
-
end analysisArtifact : AnalysisArtifact :>> target;
|
|
253
|
-
}
|
|
254
|
-
abstract connection analyzedByLinks : AnalyzedBy[*];
|
|
255
|
-
metadata def <analyzedBy> AnalyzedByMetadata :> SemanticMetadata {
|
|
256
|
-
:> annotatedElement : SysML::ConnectionDefinition;
|
|
257
|
-
:> annotatedElement : SysML::ConnectionUsage;
|
|
258
|
-
:>> baseType = analyzedByLinks meta SysML::Usage;
|
|
259
|
-
}
|
|
260
233
|
|
|
261
234
|
connection def BindsToInterface :> MemoRelationship {
|
|
262
235
|
end portElement :>> source;
|
|
@@ -3,8 +3,10 @@ package memo_methodology_archetypes {
|
|
|
3
3
|
|
|
4
4
|
private import memo_methodology_core::*;
|
|
5
5
|
|
|
6
|
+
private import memo_core_common::*;
|
|
7
|
+
private import memo_core_common::MemoIdentity;
|
|
6
8
|
part minimal : Archetype {
|
|
7
|
-
|
|
9
|
+
@MemoIdentity { :>> providedId = "ARCH-MINIMAL"; }
|
|
8
10
|
attribute :>> name = "Minimal";
|
|
9
11
|
attribute :>> label = "Minimal";
|
|
10
12
|
attribute :>> description = "Core ontology only — requirements, hazards, basic architecture (~53 kinds)";
|
|
@@ -15,7 +17,7 @@ package memo_methodology_archetypes {
|
|
|
15
17
|
}
|
|
16
18
|
|
|
17
19
|
part standardArchetype : Archetype {
|
|
18
|
-
|
|
20
|
+
@MemoIdentity { :>> providedId = "ARCH-STANDARD"; }
|
|
19
21
|
attribute :>> name = "Standard";
|
|
20
22
|
attribute :>> label = "Standard";
|
|
21
23
|
attribute :>> description = "Core + risk + software + DHF — covers most Class II devices (~120 kinds)";
|
|
@@ -26,7 +28,7 @@ package memo_methodology_archetypes {
|
|
|
26
28
|
}
|
|
27
29
|
|
|
28
30
|
part full : Archetype {
|
|
29
|
-
|
|
31
|
+
@MemoIdentity { :>> providedId = "ARCH-FULL"; }
|
|
30
32
|
attribute :>> name = "Full";
|
|
31
33
|
attribute :>> label = "Full";
|
|
32
34
|
attribute :>> description = "All architecture layers, standards, and extensions (~200+ kinds)";
|
|
@@ -37,7 +39,7 @@ package memo_methodology_archetypes {
|
|
|
37
39
|
}
|
|
38
40
|
|
|
39
41
|
part samd : Archetype {
|
|
40
|
-
|
|
42
|
+
@MemoIdentity { :>> providedId = "ARCH-SAMD"; }
|
|
41
43
|
attribute :>> name = "SaMD";
|
|
42
44
|
attribute :>> label = "Software as Medical Device (SaMD)";
|
|
43
45
|
attribute :>> description = "Clinical decision support, diagnostic algorithm, AI/ML tool, mobile medical app";
|
|
@@ -48,7 +50,7 @@ package memo_methodology_archetypes {
|
|
|
48
50
|
}
|
|
49
51
|
|
|
50
52
|
part connected : Archetype {
|
|
51
|
-
|
|
53
|
+
@MemoIdentity { :>> providedId = "ARCH-CONNECTED"; }
|
|
52
54
|
attribute :>> name = "Connected";
|
|
53
55
|
attribute :>> label = "Connected / IoT Device";
|
|
54
56
|
attribute :>> description = "Remote monitoring, wearable, smart device with cloud connectivity and cybersecurity requirements";
|
|
@@ -59,7 +61,7 @@ package memo_methodology_archetypes {
|
|
|
59
61
|
}
|
|
60
62
|
|
|
61
63
|
part monitoring : Archetype {
|
|
62
|
-
|
|
64
|
+
@MemoIdentity { :>> providedId = "ARCH-MONITORING"; }
|
|
63
65
|
attribute :>> name = "Monitoring";
|
|
64
66
|
attribute :>> label = "Monitoring / Diagnostic Device";
|
|
65
67
|
attribute :>> description = "Patient monitor, ECG, SpO2, vital signs, bedside diagnostic equipment";
|
|
@@ -70,7 +72,7 @@ package memo_methodology_archetypes {
|
|
|
70
72
|
}
|
|
71
73
|
|
|
72
74
|
part infusion_pump : Archetype {
|
|
73
|
-
|
|
75
|
+
@MemoIdentity { :>> providedId = "ARCH-INFUSION"; }
|
|
74
76
|
attribute :>> name = "InfusionPump";
|
|
75
77
|
attribute :>> label = "Infusion / Drug Delivery Device";
|
|
76
78
|
attribute :>> description = "Infusion pump, syringe driver, implantable drug delivery, dosing device";
|
|
@@ -81,7 +83,7 @@ package memo_methodology_archetypes {
|
|
|
81
83
|
}
|
|
82
84
|
|
|
83
85
|
part blank : Archetype {
|
|
84
|
-
|
|
86
|
+
@MemoIdentity { :>> providedId = "ARCH-BLANK"; }
|
|
85
87
|
attribute :>> name = "Blank";
|
|
86
88
|
attribute :>> label = "Blank Project";
|
|
87
89
|
attribute :>> description = "Start from scratch with a minimal SysML shell";
|
|
@@ -113,14 +113,4 @@ package memo_methodology_core {
|
|
|
113
113
|
// ── Relations owned by this package ─────────────────────────────
|
|
114
114
|
// Moved out of memo_core_relationships: their ends are typed against
|
|
115
115
|
// types declared here, and core must not depend on a domain package.
|
|
116
|
-
connection def ResolvesToMethodology :> MemoRelationship {
|
|
117
|
-
end boundModelElement : MemoPart :>> source;
|
|
118
|
-
end resolvedMethodology : MethodologyDefinition :>> target;
|
|
119
|
-
}
|
|
120
|
-
abstract connection resolvesToMethodologyLinks : ResolvesToMethodology[*];
|
|
121
|
-
metadata def <resolvesToMethodology> ResolvesToMethodologyMetadata :> SemanticMetadata {
|
|
122
|
-
:> annotatedElement : SysML::ConnectionDefinition;
|
|
123
|
-
:> annotatedElement : SysML::ConnectionUsage;
|
|
124
|
-
:>> baseType = resolvesToMethodologyLinks meta SysML::Usage;
|
|
125
|
-
}
|
|
126
116
|
}
|
|
@@ -9,8 +9,10 @@ package memo_methodology_profiles {
|
|
|
9
9
|
private import memo_core_enumerations::*;
|
|
10
10
|
private import memo_core_methodology_scope::*;
|
|
11
11
|
|
|
12
|
+
private import memo_core_common::*;
|
|
13
|
+
private import memo_core_common::MemoIdentity;
|
|
12
14
|
part mdCoreLibrary : MethodologyLibrary {
|
|
13
|
-
|
|
15
|
+
@MemoIdentity { :>> providedId = "METHLIB-001"; }
|
|
14
16
|
attribute :>> name = "MedicalDeviceMethodologyLibrary";
|
|
15
17
|
attribute :>> version = "0.1";
|
|
16
18
|
attribute :>> domain = "medical device modeling";
|
|
@@ -31,7 +33,7 @@ package memo_methodology_profiles {
|
|
|
31
33
|
// that into `allAvailable` preserves the effective result and removes the
|
|
32
34
|
// second scope authority.
|
|
33
35
|
part mdDefaultDefinition : MethodologyDefinition {
|
|
34
|
-
|
|
36
|
+
@MemoIdentity { :>> providedId = "METH-MD-DEFAULT"; }
|
|
35
37
|
attribute :>> name = "MedicalDeviceDefault";
|
|
36
38
|
attribute :>> version = "0.6.5";
|
|
37
39
|
attribute :>> domain = "medical device modeling";
|
|
@@ -40,7 +42,7 @@ package memo_methodology_profiles {
|
|
|
40
42
|
}
|
|
41
43
|
|
|
42
44
|
part useRiskAndResidualRule : ElementUsageRule {
|
|
43
|
-
|
|
45
|
+
@MemoIdentity { :>> providedId = "RULE-001"; }
|
|
44
46
|
attribute :>> name = "UseRiskAndResidualRisk";
|
|
45
47
|
attribute :>> elementTypeName = "Risk,ResidualRisk,RiskMatrix";
|
|
46
48
|
attribute :>> strength = RuleStrengthKind::recommended;
|
|
@@ -48,7 +50,7 @@ package memo_methodology_profiles {
|
|
|
48
50
|
}
|
|
49
51
|
|
|
50
52
|
part requireVerifiedByRule : RelationUsageRule {
|
|
51
|
-
|
|
53
|
+
@MemoIdentity { :>> providedId = "RULE-002"; }
|
|
52
54
|
attribute :>> name = "VerifiedBysRequired";
|
|
53
55
|
attribute :>> relationTypeName = "verify";
|
|
54
56
|
attribute :>> strength = RuleStrengthKind::required;
|
|
@@ -56,7 +58,7 @@ package memo_methodology_profiles {
|
|
|
56
58
|
}
|
|
57
59
|
|
|
58
60
|
part lightRiskPattern : ModelingPattern {
|
|
59
|
-
|
|
61
|
+
@MemoIdentity { :>> providedId = "PAT-001"; }
|
|
60
62
|
attribute :>> name = "LightRiskBeforeAfterPattern";
|
|
61
63
|
attribute :>> intent = "Model hazard chain, before/after mitigation risk, controls, and residual evaluation in a lightweight way.";
|
|
62
64
|
attribute :>> stage = WorkflowStageKind::risk;
|
|
@@ -64,7 +66,7 @@ package memo_methodology_profiles {
|
|
|
64
66
|
}
|
|
65
67
|
|
|
66
68
|
part lightTracePattern : ModelingPattern {
|
|
67
|
-
|
|
69
|
+
@MemoIdentity { :>> providedId = "PAT-002"; }
|
|
68
70
|
attribute :>> name = "CoreTracePattern";
|
|
69
71
|
attribute :>> intent = "Need or risk to requirement, requirement to architecture, requirement/control to verification.";
|
|
70
72
|
attribute :>> stage = WorkflowStageKind::requirements;
|
|
@@ -72,7 +74,7 @@ package memo_methodology_profiles {
|
|
|
72
74
|
}
|
|
73
75
|
|
|
74
76
|
action stepRequirements : MethodologyWorkflowStep {
|
|
75
|
-
|
|
77
|
+
@MemoIdentity { :>> providedId = "STEP-001"; }
|
|
76
78
|
attribute :>> name = "CaptureRequirements";
|
|
77
79
|
attribute :>> stage = WorkflowStageKind::requirements;
|
|
78
80
|
attribute :>> objectiveDescription = "Capture stakeholder needs and derive requirements.";
|
|
@@ -81,7 +83,7 @@ package memo_methodology_profiles {
|
|
|
81
83
|
}
|
|
82
84
|
|
|
83
85
|
action stepArchitecture : MethodologyWorkflowStep {
|
|
84
|
-
|
|
86
|
+
@MemoIdentity { :>> providedId = "STEP-002"; }
|
|
85
87
|
attribute :>> name = "DefineArchitecture";
|
|
86
88
|
attribute :>> stage = WorkflowStageKind::architecture;
|
|
87
89
|
attribute :>> objectiveDescription = "Define key software and hardware architecture elements and interfaces.";
|
|
@@ -90,7 +92,7 @@ package memo_methodology_profiles {
|
|
|
90
92
|
}
|
|
91
93
|
|
|
92
94
|
action stepRisk : MethodologyWorkflowStep {
|
|
93
|
-
|
|
95
|
+
@MemoIdentity { :>> providedId = "STEP-003"; }
|
|
94
96
|
attribute :>> name = "PerformRiskAnalysis";
|
|
95
97
|
attribute :>> stage = WorkflowStageKind::risk;
|
|
96
98
|
attribute :>> objectiveDescription = "Create core risk chain and controls.";
|
|
@@ -99,7 +101,7 @@ package memo_methodology_profiles {
|
|
|
99
101
|
}
|
|
100
102
|
|
|
101
103
|
action stepVerification : MethodologyWorkflowStep {
|
|
102
|
-
|
|
104
|
+
@MemoIdentity { :>> providedId = "STEP-004"; }
|
|
103
105
|
attribute :>> name = "PlanVerification";
|
|
104
106
|
attribute :>> stage = WorkflowStageKind::verificationStage;
|
|
105
107
|
attribute :>> objectiveDescription = "Define verification and evidence expectations.";
|
|
@@ -111,7 +113,7 @@ package memo_methodology_profiles {
|
|
|
111
113
|
first stepRisk then stepVerification;
|
|
112
114
|
|
|
113
115
|
part gateLightComplete : QualityGate {
|
|
114
|
-
|
|
116
|
+
@MemoIdentity { :>> providedId = "GATE-001"; }
|
|
115
117
|
attribute :>> name = "LightMethodReady";
|
|
116
118
|
attribute :>> gateStage = WorkflowStageKind::verificationStage;
|
|
117
119
|
attribute :>> passCriteria = "Core traceability, risk, verification, and RMF view support are present.";
|
|
@@ -123,7 +125,7 @@ package memo_methodology_profiles {
|
|
|
123
125
|
// references its methodology with a typed SysML reference.
|
|
124
126
|
|
|
125
127
|
part rmpDoc : DhfDocumentBinding {
|
|
126
|
-
|
|
128
|
+
@MemoIdentity { :>> providedId = "DHF-001"; }
|
|
127
129
|
attribute :>> name = "RiskManagementPlan";
|
|
128
130
|
attribute :>> documentTitle = "Risk Management Plan";
|
|
129
131
|
attribute :>> groupLabel = "Risk Management";
|
|
@@ -135,7 +137,7 @@ package memo_methodology_profiles {
|
|
|
135
137
|
}
|
|
136
138
|
|
|
137
139
|
part harDoc : DhfDocumentBinding {
|
|
138
|
-
|
|
140
|
+
@MemoIdentity { :>> providedId = "DHF-002"; }
|
|
139
141
|
attribute :>> name = "HazardAnalysisReport";
|
|
140
142
|
attribute :>> documentTitle = "Hazard Analysis Report";
|
|
141
143
|
attribute :>> groupLabel = "Risk Management";
|
|
@@ -147,7 +149,7 @@ package memo_methodology_profiles {
|
|
|
147
149
|
}
|
|
148
150
|
|
|
149
151
|
part sadDoc : DhfDocumentBinding {
|
|
150
|
-
|
|
152
|
+
@MemoIdentity { :>> providedId = "DHF-003"; }
|
|
151
153
|
attribute :>> name = "SoftwareArchitectureDescription";
|
|
152
154
|
attribute :>> documentTitle = "Software Architecture Description";
|
|
153
155
|
attribute :>> groupLabel = "Software";
|
|
@@ -159,7 +161,7 @@ package memo_methodology_profiles {
|
|
|
159
161
|
}
|
|
160
162
|
|
|
161
163
|
part threatModelDoc : DhfDocumentBinding {
|
|
162
|
-
|
|
164
|
+
@MemoIdentity { :>> providedId = "DHF-004"; }
|
|
163
165
|
attribute :>> name = "CybersecurityThreatModel";
|
|
164
166
|
attribute :>> documentTitle = "Threat Model";
|
|
165
167
|
attribute :>> groupLabel = "Cybersecurity";
|
|
@@ -171,7 +173,7 @@ package memo_methodology_profiles {
|
|
|
171
173
|
}
|
|
172
174
|
|
|
173
175
|
part vvPlanDoc : DhfDocumentBinding {
|
|
174
|
-
|
|
176
|
+
@MemoIdentity { :>> providedId = "DHF-005"; }
|
|
175
177
|
attribute :>> name = "VerificationValidationPlan";
|
|
176
178
|
attribute :>> documentTitle = "V&V Plan";
|
|
177
179
|
attribute :>> groupLabel = "Verification & Validation";
|