Skip to content

memo_viewpoints_rendering

SysML API

Public namespace memo::viewpoints::rendering
Declared package memo_viewpoints_rendering
Source src/viewpoints/rendering/memo_rendering.sysml

Namespace hierarchy

memo → memo::viewpoints → memo::viewpoints::rendering

Packages

Package
memo_viewpoints_rendering

Imports

Visibility Target
private ScalarValues::*
private memo_core_common::*
private memo_core_common::MemoIdentity

Declarations

Name SysML kind Description Specializes
LayerRendering part def The presentation identity of one architecture layer. MemoPart
ExplorerClassification part def Where a source namespace's kinds appear in the Model Explorer tree. sourceNamespace names the ontology namespace or kind group the classification applies to; explorerDomain and explorerGroup name its place in MEMO's V-model taxonomy. MemoPart
EnumRendering part def The display identity of one enumeration value. enumValue is the FULLY QUALIFIED value as the model stores it ("StatusKind::tbd"), which is the only spelling that identifies a member unambiguously.… MemoPart

LayerRendering

part def LayerRendering :> MemoPart
Property Value
Description The presentation identity of one architecture layer.
Kind part def
Abstract No
Specializes MemoPart
Owning package memo_viewpoints_rendering

ExplorerClassification

part def ExplorerClassification :> MemoPart
Property Value
Description Where a source namespace's kinds appear in the Model Explorer tree. sourceNamespace names the ontology namespace or kind group the classification applies to; explorerDomain and explorerGroup name its place in MEMO's V-model taxonomy.
Kind part def
Abstract No
Specializes MemoPart
Owning package memo_viewpoints_rendering

EnumRendering

part def EnumRendering :> MemoPart
Property Value
Description The display identity of one enumeration value. enumValue is the FULLY QUALIFIED value as the model stores it ("StatusKind::tbd"), which is the only spelling that identifies a member unambiguously.…
Kind part def
Abstract No
Specializes MemoPart
Owning package memo_viewpoints_rendering

Source

viewpoints/rendering/memo_rendering.sysml
// Architecture-layer rendering and Model Explorer taxonomy.
//
// This content used to live in `ontology/memo.rendering.yaml`. Both halves of
// that file decided how MEMO's own kinds are grouped and presented, which makes
// them ontology metadata, not application settings: a project that received the
// ontology without the YAML got a different Explorer. They are SysML here so
// that the ontology carries its own taxonomy wherever it is resolved.
//
// The colours are the v12 Visual Map palette. They are the ontology's authored
// default; an application may still theme over them, but it no longer has to
// supply them for the model to be complete.
package memo_viewpoints_rendering {
    private import ScalarValues::*;

    private import memo_core_common::*;

    private import memo_core_common::MemoIdentity;
    // The presentation identity of one architecture layer.
    part def LayerRendering :> MemoPart {
        attribute layerId : String;
        attribute layerLabel : String;
        attribute layerColor : String;
    }

    // Where a source namespace's kinds appear in the Model Explorer tree.
    // `sourceNamespace` names the ontology namespace or kind group the
    // classification applies to; `explorerDomain` and `explorerGroup` name its
    // place in MEMO's V-model taxonomy.
    part def ExplorerClassification :> MemoPart {
        attribute sourceNamespace : String;
        attribute explorerDomain : String;
        attribute explorerGroup : String;
    }

    // The display identity of one enumeration value.
    //
    // `enumValue` is the FULLY QUALIFIED value as the model stores it
    // ("StatusKind::tbd"), which is the only spelling that identifies a member
    // unambiguously. A consumer matches on that and reads the label; it must
    // never parse the string, because a suffix test like `endsWith("resolved")`
    // silently mismatches the moment a member is renamed or a new member ends
    // in the same word.
    //
    // Labels live here rather than in an application for the same reason layer
    // colours do: a consumer that received the ontology without them would
    // render different text for the same model. The static HTML export, the DHF
    // workbench and a report generator all resolve the same label from here.
    part def EnumRendering :> MemoPart {
        attribute enumValue : String;
        attribute label : String;
        attribute shortLabel : String[0..1];
        attribute enumColor : String[0..1];
    }

    part layerOperationalRendering : LayerRendering {
        @MemoIdentity { :>> providedId = "LAYER-OPERATIONAL"; :>> label = "OperationalLayerRendering"; }
        attribute :>> layerId = "operational";
        attribute :>> layerLabel = "Operational";
        attribute :>> layerColor = "#C0392B";
    }

    part layerBehavioralRendering : LayerRendering {
        @MemoIdentity { :>> providedId = "LAYER-BEHAVIORAL"; :>> label = "BehavioralLayerRendering"; }
        attribute :>> layerId = "behavioral";
        attribute :>> layerLabel = "Behavioral";
        attribute :>> layerColor = "#E74C3C";
    }

    part layerFunctionalRendering : LayerRendering {
        @MemoIdentity { :>> providedId = "LAYER-FUNCTIONAL"; :>> label = "FunctionalLayerRendering"; }
        attribute :>> layerId = "functional";
        attribute :>> layerLabel = "Functional";
        attribute :>> layerColor = "#E67E22";
    }

    part layerLogicalRendering : LayerRendering {
        @MemoIdentity { :>> providedId = "LAYER-LOGICAL"; :>> label = "LogicalLayerRendering"; }
        attribute :>> layerId = "logical";
        attribute :>> layerLabel = "Logical";
        attribute :>> layerColor = "#7B68EE";
    }

    part layerSoftwareRendering : LayerRendering {
        @MemoIdentity { :>> providedId = "LAYER-SOFTWARE"; :>> label = "SoftwareLayerRendering"; }
        attribute :>> layerId = "software";
        attribute :>> layerLabel = "Software";
        attribute :>> layerColor = "#F39C12";
    }

    part layerSoftwareExtensionRendering : LayerRendering {
        @MemoIdentity { :>> providedId = "LAYER-SOFTWARE-EXTENSION"; :>> label = "Software Extension (ROS)LayerRendering"; }
        attribute :>> layerId = "software-extension";
        attribute :>> layerLabel = "Software Extension (ROS)";
        attribute :>> layerColor = "#D4AC0D";
    }

    part layerHardwareRendering : LayerRendering {
        @MemoIdentity { :>> providedId = "LAYER-HARDWARE"; :>> label = "HardwareLayerRendering"; }
        attribute :>> layerId = "hardware";
        attribute :>> layerLabel = "Hardware";
        attribute :>> layerColor = "#95A5A6";
    }

    part layerSafetyRendering : LayerRendering {
        @MemoIdentity { :>> providedId = "LAYER-SAFETY"; :>> label = "SafetyLayerRendering"; }
        attribute :>> layerId = "safety";
        attribute :>> layerLabel = "Safety";
        attribute :>> layerColor = "#E74C3C";
    }

    part layerSecurityRendering : LayerRendering {
        @MemoIdentity { :>> providedId = "LAYER-SECURITY"; :>> label = "SecurityLayerRendering"; }
        attribute :>> layerId = "security";
        attribute :>> layerLabel = "Security";
        attribute :>> layerColor = "#2C3E50";
    }

    part layerPrivacyRendering : LayerRendering {
        @MemoIdentity { :>> providedId = "LAYER-PRIVACY"; :>> label = "PrivacyLayerRendering"; }
        attribute :>> layerId = "privacy";
        attribute :>> layerLabel = "Privacy";
        attribute :>> layerColor = "#8E44AD";
    }

    part layerVerificationRendering : LayerRendering {
        @MemoIdentity { :>> providedId = "LAYER-VERIFICATION"; :>> label = "VerificationLayerRendering"; }
        attribute :>> layerId = "verification";
        attribute :>> layerLabel = "Verification";
        attribute :>> layerColor = "#2ECC71";
    }

    part explorerActivitiesClassification : ExplorerClassification {
        @MemoIdentity { :>> providedId = "EXPL-001"; :>> label = "activitiesExplorerClassification"; }
        attribute :>> sourceNamespace = "activities";
        attribute :>> explorerDomain = "architecture";
        attribute :>> explorerGroup = "operational";
    }

    part explorerContextClassification : ExplorerClassification {
        @MemoIdentity { :>> providedId = "EXPL-002"; :>> label = "contextExplorerClassification"; }
        attribute :>> sourceNamespace = "context";
        attribute :>> explorerDomain = "architecture";
        attribute :>> explorerGroup = "operational";
    }

    part explorerActorsClassification : ExplorerClassification {
        @MemoIdentity { :>> providedId = "EXPL-003"; :>> label = "actorsExplorerClassification"; }
        attribute :>> sourceNamespace = "actors";
        attribute :>> explorerDomain = "architecture";
        attribute :>> explorerGroup = "operational";
    }

    part explorerUseContextClassification : ExplorerClassification {
        @MemoIdentity { :>> providedId = "EXPL-004"; :>> label = "use_contextExplorerClassification"; }
        attribute :>> sourceNamespace = "use_context";
        attribute :>> explorerDomain = "architecture";
        attribute :>> explorerGroup = "operational";
    }

    part explorerWorkflowsClassification : ExplorerClassification {
        @MemoIdentity { :>> providedId = "EXPL-005"; :>> label = "workflowsExplorerClassification"; }
        attribute :>> sourceNamespace = "workflows";
        attribute :>> explorerDomain = "architecture";
        attribute :>> explorerGroup = "operational";
    }

    part explorerScenariosClassification : ExplorerClassification {
        @MemoIdentity { :>> providedId = "EXPL-006"; :>> label = "scenariosExplorerClassification"; }
        attribute :>> sourceNamespace = "scenarios";
        attribute :>> explorerDomain = "architecture";
        attribute :>> explorerGroup = "operational";
    }

    part explorerUseCasesClassification : ExplorerClassification {
        @MemoIdentity { :>> providedId = "EXPL-007"; :>> label = "use_casesExplorerClassification"; }
        attribute :>> sourceNamespace = "use_cases";
        attribute :>> explorerDomain = "architecture";
        attribute :>> explorerGroup = "operational";
    }

    part explorerInteractionClassification : ExplorerClassification {
        @MemoIdentity { :>> providedId = "EXPL-008"; :>> label = "interactionExplorerClassification"; }
        attribute :>> sourceNamespace = "interaction";
        attribute :>> explorerDomain = "architecture";
        attribute :>> explorerGroup = "operational";
    }

    part explorerOperationalClassification : ExplorerClassification {
        @MemoIdentity { :>> providedId = "EXPL-009"; :>> label = "operationalExplorerClassification"; }
        attribute :>> sourceNamespace = "operational";
        attribute :>> explorerDomain = "architecture";
        attribute :>> explorerGroup = "operational";
    }

    part explorerFunctionsClassification : ExplorerClassification {
        @MemoIdentity { :>> providedId = "EXPL-010"; :>> label = "functionsExplorerClassification"; }
        attribute :>> sourceNamespace = "functions";
        attribute :>> explorerDomain = "architecture";
        attribute :>> explorerGroup = "functional";
    }

    part explorerBehaviorClassification : ExplorerClassification {
        @MemoIdentity { :>> providedId = "EXPL-011"; :>> label = "behaviorExplorerClassification"; }
        attribute :>> sourceNamespace = "behavior";
        attribute :>> explorerDomain = "architecture";
        attribute :>> explorerGroup = "functional";
    }

    part explorerConstraintsClassification : ExplorerClassification {
        @MemoIdentity { :>> providedId = "EXPL-012"; :>> label = "constraintsExplorerClassification"; }
        attribute :>> sourceNamespace = "constraints";
        attribute :>> explorerDomain = "architecture";
        attribute :>> explorerGroup = "functional";
    }

    part explorerLogicalStructureClassification : ExplorerClassification {
        @MemoIdentity { :>> providedId = "EXPL-013"; :>> label = "logical_structureExplorerClassification"; }
        attribute :>> sourceNamespace = "logical_structure";
        attribute :>> explorerDomain = "architecture";
        attribute :>> explorerGroup = "logical";
    }

    part explorerInterfacesClassification : ExplorerClassification {
        @MemoIdentity { :>> providedId = "EXPL-014"; :>> label = "interfacesExplorerClassification"; }
        attribute :>> sourceNamespace = "interfaces";
        attribute :>> explorerDomain = "architecture";
        attribute :>> explorerGroup = "logical";
    }

    part explorerHardwareStructureClassification : ExplorerClassification {
        @MemoIdentity { :>> providedId = "EXPL-015"; :>> label = "hardware_structureExplorerClassification"; }
        attribute :>> sourceNamespace = "hardware_structure";
        attribute :>> explorerDomain = "architecture";
        attribute :>> explorerGroup = "implementation";
    }

    part explorerImplementationClassification : ExplorerClassification {
        @MemoIdentity { :>> providedId = "EXPL-016"; :>> label = "implementationExplorerClassification"; }
        attribute :>> sourceNamespace = "implementation";
        attribute :>> explorerDomain = "architecture";
        attribute :>> explorerGroup = "implementation";
    }

    part explorerSoftwareStructureClassification : ExplorerClassification {
        @MemoIdentity { :>> providedId = "EXPL-017"; :>> label = "software_structureExplorerClassification"; }
        attribute :>> sourceNamespace = "software_structure";
        attribute :>> explorerDomain = "architecture";
        attribute :>> explorerGroup = "implementation";
    }

    part explorerSoftwareRuntimeClassification : ExplorerClassification {
        @MemoIdentity { :>> providedId = "EXPL-018"; :>> label = "software_runtimeExplorerClassification"; }
        attribute :>> sourceNamespace = "software_runtime";
        attribute :>> explorerDomain = "architecture";
        attribute :>> explorerGroup = "implementation";
    }

    part explorerPhysicalClassification : ExplorerClassification {
        @MemoIdentity { :>> providedId = "EXPL-019"; :>> label = "physicalExplorerClassification"; }
        attribute :>> sourceNamespace = "physical";
        attribute :>> explorerDomain = "architecture";
        attribute :>> explorerGroup = "realization";
    }

    part explorerDeploymentClassification : ExplorerClassification {
        @MemoIdentity { :>> providedId = "EXPL-020"; :>> label = "deploymentExplorerClassification"; }
        attribute :>> sourceNamespace = "deployment";
        attribute :>> explorerDomain = "architecture";
        attribute :>> explorerGroup = "realization";
    }

    part explorerNeedsClassification : ExplorerClassification {
        @MemoIdentity { :>> providedId = "EXPL-021"; :>> label = "needsExplorerClassification"; }
        attribute :>> sourceNamespace = "needs";
        attribute :>> explorerDomain = "assurance";
        attribute :>> explorerGroup = "requirements";
    }

    part explorerRequirementsClassification : ExplorerClassification {
        @MemoIdentity { :>> providedId = "EXPL-022"; :>> label = "requirementsExplorerClassification"; }
        attribute :>> sourceNamespace = "requirements";
        attribute :>> explorerDomain = "assurance";
        attribute :>> explorerGroup = "requirements";
    }

    part explorerSafetyClassification : ExplorerClassification {
        @MemoIdentity { :>> providedId = "EXPL-023"; :>> label = "safetyExplorerClassification"; }
        attribute :>> sourceNamespace = "safety";
        attribute :>> explorerDomain = "assurance";
        attribute :>> explorerGroup = "safety-risk";
    }

    part explorerSafetyAnalysisClassification : ExplorerClassification {
        @MemoIdentity { :>> providedId = "EXPL-024"; :>> label = "safety_analysisExplorerClassification"; }
        attribute :>> sourceNamespace = "safety_analysis";
        attribute :>> explorerDomain = "assurance";
        attribute :>> explorerGroup = "safety-risk";
    }

    part explorerCybersecurityClassification : ExplorerClassification {
        @MemoIdentity { :>> providedId = "EXPL-025"; :>> label = "cybersecurityExplorerClassification"; }
        attribute :>> sourceNamespace = "cybersecurity";
        attribute :>> explorerDomain = "assurance";
        attribute :>> explorerGroup = "cybersecurity";
    }

    part explorerHumanFactorsClassification : ExplorerClassification {
        @MemoIdentity { :>> providedId = "EXPL-026"; :>> label = "human_factorsExplorerClassification"; }
        attribute :>> sourceNamespace = "human_factors";
        attribute :>> explorerDomain = "assurance";
        attribute :>> explorerGroup = "human-factors";
    }

    part explorerVerificationClassification : ExplorerClassification {
        @MemoIdentity { :>> providedId = "EXPL-027"; :>> label = "verificationExplorerClassification"; }
        attribute :>> sourceNamespace = "verification";
        attribute :>> explorerDomain = "assurance";
        attribute :>> explorerGroup = "verification-validation";
    }

    part explorerCoreClassification : ExplorerClassification {
        @MemoIdentity { :>> providedId = "EXPL-028"; :>> label = "coreExplorerClassification"; }
        attribute :>> sourceNamespace = "core";
        attribute :>> explorerDomain = "assurance";
        attribute :>> explorerGroup = "evidence";
    }

    part explorerMethodologyClassification : ExplorerClassification {
        @MemoIdentity { :>> providedId = "EXPL-029"; :>> label = "methodologyExplorerClassification"; }
        attribute :>> sourceNamespace = "methodology";
        attribute :>> explorerDomain = "methodology";
        attribute :>> explorerGroup = "methodology";
    }

    // A group name is only unique inside its layer: `core` is the controlled artifacts' evidence
    // under artifacts/ and the method's own definitions (the model binding, a methodology, a rule
    // policy) under methodology/. A source namespace written `layer/group` is that layer's group.
    part explorerMethodologyCoreClassification : ExplorerClassification {
        @MemoIdentity { :>> providedId = "EXPL-030"; :>> label = "methodologyCoreExplorerClassification"; }
        attribute :>> sourceNamespace = "methodology/core";
        attribute :>> explorerDomain = "methodology";
        attribute :>> explorerGroup = "methodology";
    }

    // ── Enumeration labels ───────────────────────────────────────
    // Seeded with the three status enums. `StatusKind` is the standard
    // ModelingMetadata one and is seeded first because its members are
    // abbreviations no reader expands on sight; it tracks whether a
    // question about an element is settled, which is orthogonal to
    // `ElementStatusKind` tracking where the element sits in its
    // controlled lifecycle. An element can be released and still carry a
    // tbr on one unresolved value.


    part enumStatusOpen : EnumRendering {
        @MemoIdentity { :>> providedId = "ENUM-STATUS-001"; }
        attribute :>> enumValue = "StatusKind::open";
        attribute :>> label = "Open";
        attribute :>> shortLabel = "Open";
        attribute :>> enumColor = "#6B7280";
    }

    part enumStatusTbd : EnumRendering {
        @MemoIdentity { :>> providedId = "ENUM-STATUS-002"; }
        attribute :>> enumValue = "StatusKind::tbd";
        attribute :>> label = "To Be Determined";
        attribute :>> shortLabel = "TBD";
        attribute :>> enumColor = "#D97706";
    }

    part enumStatusTbr : EnumRendering {
        @MemoIdentity { :>> providedId = "ENUM-STATUS-003"; }
        attribute :>> enumValue = "StatusKind::tbr";
        attribute :>> label = "To Be Resolved";
        attribute :>> shortLabel = "TBR";
        attribute :>> enumColor = "#D97706";
    }

    part enumStatusTbc : EnumRendering {
        @MemoIdentity { :>> providedId = "ENUM-STATUS-004"; }
        attribute :>> enumValue = "StatusKind::tbc";
        attribute :>> label = "To Be Confirmed";
        attribute :>> shortLabel = "TBC";
        attribute :>> enumColor = "#D97706";
    }

    part enumStatusDone : EnumRendering {
        @MemoIdentity { :>> providedId = "ENUM-STATUS-005"; }
        attribute :>> enumValue = "StatusKind::done";
        attribute :>> label = "Done";
        attribute :>> shortLabel = "Done";
        attribute :>> enumColor = "#0F766E";
    }

    part enumStatusClosed : EnumRendering {
        @MemoIdentity { :>> providedId = "ENUM-STATUS-006"; }
        attribute :>> enumValue = "StatusKind::closed";
        attribute :>> label = "Closed";
        attribute :>> shortLabel = "Closed";
        attribute :>> enumColor = "#0F766E";
    }

    part enumElementProposed : EnumRendering {
        @MemoIdentity { :>> providedId = "ENUM-ELEM-001"; }
        attribute :>> enumValue = "ElementStatusKind::proposed";
        attribute :>> label = "Proposed";
        attribute :>> enumColor = "#6B7280";
    }

    part enumElementDraft : EnumRendering {
        @MemoIdentity { :>> providedId = "ENUM-ELEM-002"; }
        attribute :>> enumValue = "ElementStatusKind::draft";
        attribute :>> label = "Draft";
        attribute :>> enumColor = "#6B7280";
    }

    part enumElementInReview : EnumRendering {
        @MemoIdentity { :>> providedId = "ENUM-ELEM-003"; }
        attribute :>> enumValue = "ElementStatusKind::inReview";
        attribute :>> label = "In Review";
        attribute :>> enumColor = "#D97706";
    }

    part enumElementApproved : EnumRendering {
        @MemoIdentity { :>> providedId = "ENUM-ELEM-004"; }
        attribute :>> enumValue = "ElementStatusKind::approved";
        attribute :>> label = "Approved";
        attribute :>> enumColor = "#0F766E";
    }

    part enumElementReleased : EnumRendering {
        @MemoIdentity { :>> providedId = "ENUM-ELEM-005"; }
        attribute :>> enumValue = "ElementStatusKind::released";
        attribute :>> label = "Released";
        attribute :>> enumColor = "#0F766E";
    }

    part enumElementDeprecated : EnumRendering {
        @MemoIdentity { :>> providedId = "ENUM-ELEM-006"; }
        attribute :>> enumValue = "ElementStatusKind::deprecated";
        attribute :>> label = "Deprecated";
        attribute :>> enumColor = "#B45309";
    }

    part enumElementRetired : EnumRendering {
        @MemoIdentity { :>> providedId = "ENUM-ELEM-007"; }
        attribute :>> enumValue = "ElementStatusKind::retired";
        attribute :>> label = "Retired";
        attribute :>> enumColor = "#991B1B";
    }

    part enumCommentOpen : EnumRendering {
        @MemoIdentity { :>> providedId = "ENUM-CMT-001"; }
        attribute :>> enumValue = "CommentStatusKind::open";
        attribute :>> label = "Open";
        attribute :>> enumColor = "#2563EB";
    }

    part enumCommentAcknowledged : EnumRendering {
        @MemoIdentity { :>> providedId = "ENUM-CMT-002"; }
        attribute :>> enumValue = "CommentStatusKind::acknowledged";
        attribute :>> label = "Acknowledged";
        attribute :>> enumColor = "#2563EB";
    }

    part enumCommentAddressed : EnumRendering {
        @MemoIdentity { :>> providedId = "ENUM-CMT-003"; }
        attribute :>> enumValue = "CommentStatusKind::addressed";
        attribute :>> label = "Addressed";
        attribute :>> enumColor = "#0F766E";
    }

    part enumCommentResolved : EnumRendering {
        @MemoIdentity { :>> providedId = "ENUM-CMT-004"; }
        attribute :>> enumValue = "CommentStatusKind::resolved";
        attribute :>> label = "Resolved";
        attribute :>> enumColor = "#0F766E";
    }

    part enumCommentRejected : EnumRendering {
        @MemoIdentity { :>> providedId = "ENUM-CMT-005"; }
        attribute :>> enumValue = "CommentStatusKind::rejected";
        attribute :>> label = "Rejected";
        attribute :>> enumColor = "#991B1B";
    }
}