@memoarchitect/ontology 0.10.9 → 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/gpca-pump/memo.identity.yaml +12 -6
- package/examples/gpca-pump/model/catalog/gpca_context.sysml +7 -4
- package/examples/gpca-pump/model/catalog/gpca_requirements.sysml +100 -100
- package/examples/nested-architecture-dsm/memo.identity.yaml +181 -0
- package/examples/nested-architecture-dsm/model/catalog/architecture/operational/context.sysml +34 -0
- package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/needs.sysml +5 -2
- package/examples/nested-architecture-dsm/model/catalog/assurance/requirements/requirements.sysml +7 -7
- package/examples/nested-architecture-dsm/model/catalog/project.sysml +1 -0
- package/examples/surgical-closure-workflow/model/catalog/surgical_closure_workflow.sysml +3 -0
- package/examples/sysml-diagram-samples/model/catalog/viewpoints/unassigned/views/requirements_view.sysml +3 -3
- package/examples/ui-screen-regions/memo.identity.yaml +205 -0
- package/examples/ui-screen-regions/model/catalog/assurance/requirements/requirements.sysml +12 -12
- package/extensions/aadl/memo.package.yaml +1 -1
- package/extensions/cloud/memo.package.yaml +1 -1
- package/extensions/container/memo.package.yaml +1 -1
- package/extensions/messaging/memo.package.yaml +1 -1
- package/extensions/ros/memo.package.yaml +1 -1
- package/methodologies/default/memo.package.yaml +1 -1
- package/methodologies/gpca/memo.package.yaml +1 -1
- package/ontology/memo.package.yaml +1 -1
- package/package.json +1 -1
- package/profile/memo.package.yaml +1 -1
- package/src/architecture/operational/scenarios/memo_scenarios.sysml +1 -2
- 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/rules/closure/closure_rules.sysml +36 -2
- package/src/rules/crosslayer/cross_layer_rules.sysml +1 -1
- package/src/rules/ontology/ontology_invariants.sysml +13 -2
|
@@ -349,13 +349,24 @@ package memo_rules_ontology {
|
|
|
349
349
|
constraint { true }
|
|
350
350
|
}
|
|
351
351
|
|
|
352
|
+
// The predicate here named three features that do not exist — `variantKind`,
|
|
353
|
+
// `baseScenario`, `variationPoint` — so it could never fail, and a rule that
|
|
354
|
+
// cannot fail is coverage on paper only. `baseScenario` is the one the
|
|
355
|
+
// scenario def deliberately refused: "a nominal/alternate pair are scenarios
|
|
356
|
+
// of the same workflow, distinguished by scenarioKind — no baseScenario
|
|
357
|
+
// back-ref". The base of an alternate IS the nominal scenario of its
|
|
358
|
+
// workflow, so the rule asks the containment that already expresses it.
|
|
352
359
|
constraint def AlternateScenarioHasBaseRule :> MemoConsistencyRule {
|
|
353
360
|
@MemoIdentity { :>> providedId = "CR-ONT-043"; }
|
|
354
361
|
attribute tailoring = RuleTailoringKind::invariant;
|
|
355
362
|
attribute appliesTo = "OperativeScenario";
|
|
356
363
|
attribute severity = RuleSeverityKind::error;
|
|
357
|
-
attribute rationaleText = "
|
|
358
|
-
|
|
364
|
+
attribute rationaleText = "An alternate scenario is a variation of a nominal path, so it belongs to a workflow that has one. An alternate with no nominal sibling is either a workflow with no happy path or a scenario filed under the wrong parent.";
|
|
365
|
+
// A nominal scenario usually says nothing: `nominal` is the default on
|
|
366
|
+
// the definition, and a default is not written onto every usage. So the
|
|
367
|
+
// sibling test is "not alternate", and `conformsTo` keeps it from being
|
|
368
|
+
// satisfied by an ordinary step of the same workflow.
|
|
369
|
+
attribute predicateExpression = "not(scenarioKind == 'alternate') or composes.composes->exists(conformsTo(OperativeScenario) and scenarioKind != 'alternate')";
|
|
359
370
|
constraint { true }
|
|
360
371
|
}
|
|
361
372
|
|