@memoarchitect/ontology 0.6.3 → 0.6.5

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.
Files changed (46) hide show
  1. package/README.md +25 -3
  2. package/examples/embedded-infusion-pump/model/catalog/embedded_infusion_pump.sysml +1 -1
  3. package/examples/gpca-pump/analysis/Samples/01-model-overview.ipynb +148 -0
  4. package/examples/gpca-pump/analysis/Samples/02-architecture-hotspots.ipynb +301 -0
  5. package/examples/gpca-pump/analysis/Samples/03-model-quality.ipynb +229 -0
  6. package/examples/gpca-pump/analysis/Samples/04-change-impact-explorer.ipynb +200 -0
  7. package/examples/gpca-pump/analysis/Samples/05-model-charts.ipynb +188 -0
  8. package/examples/gpca-pump/analysis/Samples/06-ownership-graph.ipynb +173 -0
  9. package/examples/gpca-pump/analysis/Samples/07-model-inventory-table.ipynb +180 -0
  10. package/examples/gpca-pump/analysis/Samples/README.md +37 -0
  11. package/examples/gpca-pump/model/catalog/gpca_architecture.sysml +21 -11
  12. package/examples/gpca-pump/model/catalog/gpca_behavior_actions.sysml +1 -1
  13. package/examples/gpca-pump/model/catalog/gpca_behavior_modes.sysml +7 -1
  14. package/examples/gpca-pump/model/catalog/gpca_cybersecurity.sysml +1 -1
  15. package/examples/gpca-pump/model/catalog/gpca_interfaces.sysml +34 -5
  16. package/examples/gpca-pump/model/catalog/gpca_requirements.sysml +104 -104
  17. package/examples/gpca-pump/model/catalog/gpca_risk.sysml +9 -0
  18. package/examples/gpca-pump/model/catalog/gpca_trace.sysml +36 -12
  19. package/examples/gpca-pump/model/views/logical_device_interconnect_view.sysml +3 -3
  20. package/examples/sysml-diagram-samples/model/samples/requirements_view.sysml +2 -2
  21. package/examples/sysml-diagram-samples/model/samples/use_case_view.sysml +4 -4
  22. package/methodologies/default/memo.package.yaml +1 -1
  23. package/methodologies/gpca/memo.package.yaml +1 -1
  24. package/ontology/memo.package.yaml +1 -1
  25. package/package.json +5 -3
  26. package/profile/memo.package.yaml +1 -1
  27. package/src/architecture/implementation/software/structure/memo_software_structure.sysml +3 -3
  28. package/src/architecture/implementation/ui/memo_ui.sysml +1 -1
  29. package/src/architecture/operational/context/stakeholders/memo_stakeholders.sysml +2 -2
  30. package/src/architecture/operational/context/use_context/memo_use_context.sysml +26 -1
  31. package/src/architecture/operational/scenarios/memo_scenarios.sysml +1 -1
  32. package/src/architecture/operational/use_cases/memo_use_cases.sysml +1 -1
  33. package/src/architecture/operational/workflows/memo_workflows.sysml +2 -2
  34. package/src/architecture/realization/deployment/memo_deployment.sysml +2 -2
  35. package/src/assurance/cybersecurity/memo_cybersecurity.sysml +0 -1
  36. package/src/assurance/requirements/memo_requirements.sysml +1 -1
  37. package/src/assurance/requirements/needs/memo_needs.sysml +1 -1
  38. package/src/compliance/artifacts/memo_artifacts.sysml +0 -1
  39. package/src/core/common/memo_common.sysml +3 -1
  40. package/src/core/enumerations/memo_enumerations.sysml +17 -1
  41. package/src/core/relationships/memo_relationships.sysml +9 -5
  42. package/src/memo_namespaces.sysml +2 -2
  43. package/src/methodology/profiles/memo_profiles.sysml +6 -22
  44. package/src/rules/ontology/ontology_invariants.sysml +13 -0
  45. package/src/viewpoints/context/context_viewpoint.sysml +10 -1
  46. package/src/viewpoints/definitions/memo_viewpoint_definitions.sysml +2 -0
@@ -30,7 +30,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_behavior_actions {
30
30
  attribute :>> itemKind = InterfaceItemKind::command;
31
31
  }
32
32
  item def TherapyEventRecord specializes InterfaceItem {
33
- attribute :>> itemKind = InterfaceItemKind::event;
33
+ attribute :>> itemKind = InterfaceItemKind::'event';
34
34
  }
35
35
 
36
36
  action def AcquireSensorData {
@@ -13,13 +13,19 @@ package memo_examples_gpca_pump_model_catalog_gpca_behavior_modes {
13
13
  // auto-initiate on the prescribed schedule (REQ 24), with no
14
14
  // external trigger. Mode-tree containment edges (Composes)
15
15
  // live in gpca_trace.sysml.
16
+ // Audit scope: this is a requirements-level therapy-mode abstraction, not
17
+ // a full transcription of CITE-009's monolithic Stateflow chart. The
18
+ // source chart also contains detailed Configuration, Alarms,
19
+ // System_Monitor, Log, and Infusion_Manager state behavior that remains
20
+ // outside this compact mode view.
16
21
  // ═════════════════════════════════════════════════════════════
17
22
  state topLevelModeMachine : StateMachine {
18
23
  attribute :>> id = "BM-001";
19
24
  attribute :>> name = "TopLevelModeMachine";
20
25
  attribute :>> machineKind = "hierarchical state machine";
21
26
  attribute :>> executionSemantics = "single-step synchronous; sub-modes inherit all parent-mode requirements";
22
- attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1 Fig 4.1";
27
+ attribute fidelityScope = "Requirements-derived therapy mode hierarchy; partial abstraction of CITE-009, not a state-for-state Stateflow transcription";
28
+ attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §4.1 Fig 4.1; CITE-009: CriSys PCA Pump Software Model";
23
29
  }
24
30
 
25
31
  // ── Mode states (Fig 4.1) ───────────────────────────────────
@@ -128,7 +128,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_cybersecurity {
128
128
  attribute :>> statement = "The system shall require authenticated and authorized service access before any therapy configuration parameter can be modified.";
129
129
  attribute :>> sourceKind = RequirementSourceKind::risk;
130
130
  attribute :>> concernKind = ConcernKind::cybersecurity;
131
- attribute :>> status = RequirementStatusKind::approved;
131
+ attribute :>> requirementStatus = RequirementStatusKind::approved;
132
132
  attribute :>> acceptanceCriteria = "Unauthenticated or unauthorized attempts to modify therapy configuration are rejected and logged.";
133
133
  attribute :>> subjectDescription = "maintenance and configuration path";
134
134
  attribute :>> actorDescription = "service personnel";
@@ -2,6 +2,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
2
2
  private import ScalarValues::*;
3
3
 
4
4
  private import memo_architecture_logical_interfaces::*;
5
+ private import memo_architecture_realization_physical::*;
5
6
  private import memo_architecture_functional_functions::*;
6
7
  private import memo_examples_gpca_pump_model_catalog_gpca_architecture::*;
7
8
  private import memo_examples_gpca_pump_model_catalog_gpca_behavior_subsystems::*;
@@ -572,7 +573,10 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
572
573
  attribute :>> sourceReference = "CITE-001: CriSys GPCA System Requirements (2013), §3.5 Hospital Pharmacy Database Interface";
573
574
  }
574
575
 
575
- // ── Device-boundary exchanges (GPCA_Device.aadl level) ─────
576
+ // ── MEMO functional-to-physical allocation abstractions ────
577
+ // These four exchanges summarize requirements-derived physical design
578
+ // intent. They are not the named port connections in GPCA_Device.aadl;
579
+ // the exact AADL feature topology is authored below and in gpca_trace.
576
580
  part exSensorVector : ComponentExchange {
577
581
  attribute :>> id = "CE-001";
578
582
  attribute :>> name = "SensorStatusVectorExchange";
@@ -584,7 +588,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
584
588
  ref :>> allocatedExchanges = lfSensorAcquisition;
585
589
  attribute :>> direction = DirectionKind::input;
586
590
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
587
- attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_Device.aadl";
591
+ attribute :>> sourceReference = "MEMO design extension allocated from LF-001; not a GPCA_Device.aadl connection";
588
592
  }
589
593
  part exFlowCommand : ComponentExchange {
590
594
  attribute :>> id = "CE-002";
@@ -597,7 +601,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
597
601
  ref :>> allocatedExchanges = lfFlowCommand;
598
602
  attribute :>> direction = DirectionKind::output;
599
603
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
600
- attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_Device.aadl";
604
+ attribute :>> sourceReference = "MEMO design extension allocated from LF-002; not a GPCA_Device.aadl connection";
601
605
  }
602
606
  part exAlarmAnnunciation : ComponentExchange {
603
607
  attribute :>> id = "CE-003";
@@ -610,7 +614,7 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
610
614
  ref :>> allocatedExchanges = lfAlarmSignal;
611
615
  attribute :>> direction = DirectionKind::output;
612
616
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
613
- attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_Device.aadl";
617
+ attribute :>> sourceReference = "MEMO design extension allocated from LF-003; not a GPCA_Device.aadl connection";
614
618
  }
615
619
  part exPrescriptionEntry : ComponentExchange {
616
620
  attribute :>> id = "CE-004";
@@ -623,9 +627,34 @@ package memo_examples_gpca_pump_model_catalog_gpca_interfaces {
623
627
  ref :>> allocatedExchanges = lfPrescriptionEntry;
624
628
  attribute :>> direction = DirectionKind::input;
625
629
  attribute :>> timingSemantics = "immediate (same-step delivery, Communication_Properties::Timing => immediate)";
626
- attribute :>> sourceReference = "CITE-002: CriSys GPCA AADL v2.0, packages/GPCA_Device.aadl";
630
+ attribute :>> sourceReference = "MEMO design extension allocated from LF-004; not a GPCA_Device.aadl connection";
627
631
  }
628
632
 
633
+ // ── GPCA_Device and hardware-subsystem ports (AADL, 1:1) ───
634
+ // The published AADL hardware packages are interface wrappers: they do
635
+ // not decompose into the individual physical parts modelled elsewhere in
636
+ // this MEMO example. These features and their connections are therefore
637
+ // kept exact and separate from that extended physical design content.
638
+ part devOpCmdIn : PhysicalPort { attribute :>> id = "PORT-DEV-01"; attribute :>> name = "OP_CMD_IN"; attribute :>> direction = DirectionKind::input; attribute :>> sourceReference = "CITE-002: GPCA_Device.aadl"; }
639
+ part devDbIn : PhysicalPort { attribute :>> id = "PORT-DEV-02"; attribute :>> name = "DB_IN"; attribute :>> direction = DirectionKind::input; attribute :>> sourceReference = "CITE-002: GPCA_Device.aadl"; }
640
+ part devPresIn : PhysicalPort { attribute :>> id = "PORT-DEV-03"; attribute :>> name = "PRES_IN"; attribute :>> direction = DirectionKind::input; attribute :>> sourceReference = "CITE-002: GPCA_Device.aadl"; }
641
+ part devPatientIn : PhysicalPort { attribute :>> id = "PORT-DEV-04"; attribute :>> name = "PATIENT_IN"; attribute :>> direction = DirectionKind::input; attribute :>> sourceReference = "CITE-002: GPCA_Device.aadl"; }
642
+ part devGpcaOut : PhysicalPort { attribute :>> id = "PORT-DEV-05"; attribute :>> name = "GPCA_OUT"; attribute :>> direction = DirectionKind::output; attribute :>> sourceReference = "CITE-002: GPCA_Device.aadl"; }
643
+
644
+ part snsOpCmdIn : PhysicalPort { attribute :>> id = "PORT-SNS-01"; attribute :>> name = "OP_CMD_IN"; attribute :>> direction = DirectionKind::input; attribute :>> sourceReference = "CITE-002: GPCA_HW_Sensors.aadl"; }
645
+ part snsDbIn : PhysicalPort { attribute :>> id = "PORT-SNS-02"; attribute :>> name = "DB_IN"; attribute :>> direction = DirectionKind::input; attribute :>> sourceReference = "CITE-002: GPCA_HW_Sensors.aadl"; }
646
+ part snsPresIn : PhysicalPort { attribute :>> id = "PORT-SNS-03"; attribute :>> name = "PRES_IN"; attribute :>> direction = DirectionKind::input; attribute :>> sourceReference = "CITE-002: GPCA_HW_Sensors.aadl"; }
647
+ part snsPatientIn : PhysicalPort { attribute :>> id = "PORT-SNS-04"; attribute :>> name = "PATIENT_IN"; attribute :>> direction = DirectionKind::input; attribute :>> sourceReference = "CITE-002: GPCA_HW_Sensors.aadl"; }
648
+ part snsOpCmdOut : PhysicalPort { attribute :>> id = "PORT-SNS-05"; attribute :>> name = "OP_CMD_OUT"; attribute :>> direction = DirectionKind::output; attribute :>> sourceReference = "CITE-002: GPCA_HW_Sensors.aadl"; }
649
+ part snsPresOut : PhysicalPort { attribute :>> id = "PORT-SNS-06"; attribute :>> name = "PRES_OUT"; attribute :>> direction = DirectionKind::output; attribute :>> sourceReference = "CITE-002: GPCA_HW_Sensors.aadl"; }
650
+ part snsPatientOut : PhysicalPort { attribute :>> id = "PORT-SNS-07"; attribute :>> name = "PATIENT_OUT"; attribute :>> direction = DirectionKind::output; attribute :>> sourceReference = "CITE-002: GPCA_HW_Sensors.aadl"; }
651
+ part snsSensorOut : PhysicalPort { attribute :>> id = "PORT-SNS-08"; attribute :>> name = "SENSOR_OUT"; attribute :>> direction = DirectionKind::output; attribute :>> sourceReference = "CITE-002: GPCA_HW_Sensors.aadl"; }
652
+ part snsConstOut : PhysicalPort { attribute :>> id = "PORT-SNS-09"; attribute :>> name = "CONST_OUT"; attribute :>> direction = DirectionKind::output; attribute :>> sourceReference = "CITE-002: GPCA_HW_Sensors.aadl"; }
653
+ part snsDbOut : PhysicalPort { attribute :>> id = "PORT-SNS-10"; attribute :>> name = "DB_OUT"; attribute :>> direction = DirectionKind::output; attribute :>> sourceReference = "CITE-002: GPCA_HW_Sensors.aadl"; }
654
+
655
+ part actGpcaSwIn : PhysicalPort { attribute :>> id = "PORT-ACT-01"; attribute :>> name = "GPCA_SW_IN"; attribute :>> direction = DirectionKind::input; attribute :>> sourceReference = "CITE-002: GPCA_HW_Actuators.aadl"; }
656
+ part actGpcaOut : PhysicalPort { attribute :>> id = "PORT-ACT-02"; attribute :>> name = "GPCA_OUT"; attribute :>> direction = DirectionKind::output; attribute :>> sourceReference = "CITE-002: GPCA_HW_Actuators.aadl"; }
657
+
629
658
  // ── GPCA_SW top-level ports (AADL GPCA_SW.aadl features) ────
630
659
  part portOpCmdIn : SoftwarePort {
631
660
  attribute :>> id = "PORT-01"; attribute :>> name = "OP_CMD_IN";