Skip to content

memo_viewpoints_definitions

SysML API

Public namespace memo::viewpoints::definitions
Declared package memo_viewpoints_definitions
Source src/viewpoints/definitions/memo_viewpoint_definitions.sysml

Namespace hierarchy

memomemo::viewpointsmemo::viewpoints::definitions

Packages

Package
memo_viewpoints_definitions

Imports

Visibility Target
private ScalarValues::*
private memo_core_common::*
private memo_core_enumerations::*
private memo_core_dimensions::*
private memo_core_terminology::*
private memo_core_relationships::*

Declarations

Name SysML kind Description Specializes
MemoViewpoint viewpoint def Memo viewpoint definition specializing Views::ViewpointCheck. Views::ViewpointCheck
ViewRule part def View rule definition specializing MemoPart. MemoPart
ViewSelectionQuery part def View selection query definition specializing MemoPart. MemoPart
MemoView view def Memo view definition specializing Views::View. Views::View
MemoDiagramView view def Memo diagram view definition specializing MemoView. MemoView
MemoDocumentBackedView view def Memo document backed view definition specializing MemoView. MemoView
MemoDocumentView view def Memo document view definition specializing MemoDocumentBackedView. MemoDocumentBackedView
ViewInclusionRule part def View inclusion rule definition specializing MemoPart. MemoPart

MemoViewpoint

viewpoint def MemoViewpoint :> Views::ViewpointCheck
Property Value
Description Memo viewpoint definition specializing Views::ViewpointCheck.
Kind viewpoint def
Abstract No
Specializes Views::ViewpointCheck
Owning package memo_viewpoints_definitions

ViewRule

part def ViewRule specializes MemoPart
Property Value
Description View rule definition specializing MemoPart.
Kind part def
Abstract No
Specializes MemoPart
Owning package memo_viewpoints_definitions

ViewSelectionQuery

part def ViewSelectionQuery specializes MemoPart
Property Value
Description View selection query definition specializing MemoPart.
Kind part def
Abstract No
Specializes MemoPart
Owning package memo_viewpoints_definitions

MemoView

view def MemoView :> Views::View
Property Value
Description Memo view definition specializing Views::View.
Kind view def
Abstract No
Specializes Views::View
Owning package memo_viewpoints_definitions

MemoDiagramView

view def MemoDiagramView :> MemoView
Property Value
Description Memo diagram view definition specializing MemoView.
Kind view def
Abstract No
Specializes MemoView
Owning package memo_viewpoints_definitions

MemoDocumentBackedView

view def MemoDocumentBackedView :> MemoView
Property Value
Description Memo document backed view definition specializing MemoView.
Kind view def
Abstract No
Specializes MemoView
Owning package memo_viewpoints_definitions

MemoDocumentView

view def MemoDocumentView :> MemoDocumentBackedView
Property Value
Description Memo document view definition specializing MemoDocumentBackedView.
Kind view def
Abstract No
Specializes MemoDocumentBackedView
Owning package memo_viewpoints_definitions

ViewInclusionRule

part def ViewInclusionRule specializes MemoPart
Property Value
Description View inclusion rule definition specializing MemoPart.
Kind part def
Abstract No
Specializes MemoPart
Owning package memo_viewpoints_definitions

Source

viewpoints/definitions/memo_viewpoint_definitions.sysml
// MEMO's ISO/IEC/IEEE 42010 view apparatus, built on native SysML v2 — which
// already models the whole stack: a View conforms to a Viewpoint, a Viewpoint
// frames Concerns, Concerns are held by Stakeholders. MemoView extends the
// native Views::View. Concerns are the native `concern def`; stakeholders are
// native stakeholder memberships (any Part in the stakeholder role); MEMO adds
// only the medical-device attributes on top, never a parallel type.
package memo_viewpoints_definitions {
    private import ScalarValues::*;

    private import memo_core_common::*;
    private import memo_core_enumerations::*;
    private import memo_core_dimensions::*;
    private import memo_core_terminology::*;
    private import memo_core_relationships::*;

    // Extends the native SysML viewpoint (Views::ViewpointCheck, a
    // RequirementCheck whose subject is a View) with MEMO's catalog
    // attributes. The MEMO identity core is re-declared here because a
    // viewpoint is native requirement-family, not a MemoPart — the same
    // per-metaclass pattern MemoView and the other bases use.
    viewpoint def MemoViewpoint :> Views::ViewpointCheck {
        attribute id : String;
        attribute uuid : String;
        attribute name : String;
        attribute shortDescription : String;
        attribute description : String;
        attribute rationale : String;
        attribute sourceReference : String;
        attribute status : ElementStatusKind;
        attribute lifecycleState : LifecycleStateKind;
        attribute realizationStage : RealizationStageKind[0..1];
        attribute crossCuttingConcerns : CrossCuttingConcernKind[0..*];
        attribute concerns : ConcernKind[0..*];
        attribute applicableStandards : ExternalReference[0..*];
        attribute codes : TerminologyCode[0..*];
        attribute purpose : String;
        attribute audience : AudienceKind[*];
        attribute stage : WorkflowStageKind;
        attribute abstractionLevel : String;
        attribute outputKind : ViewOutputKind[*];
        attribute presentationKind : PresentationKind[*];
        attribute concernKinds : ConcernKind[*];
        attribute includedLayers : String[*];
        attribute allowedElementKinds : String[*];
        attribute allowedRelationshipKinds : String[*];
        attribute filterExpression : String;
        attribute extendsViewpointIds : String[*];
        attribute userExtensible : Boolean;
        // Optional navigation grouping interpreted by Memo Architect.
        attribute group : String;
        // Explorer placement follows the MEMO V-model: Architecture is read
        // top-to-bottom; Assurance is read left-to-right.
        attribute explorerLane : String;
        attribute explorerOrder : Integer;
        // default diagram kind for a catalog viewpoint (optional)
        attribute defaultViewKind : DiagramViewKind[0..1];
    }

    part def ViewRule specializes MemoPart {
        attribute elementTypeName : String;
        attribute relationTypeName : String;
        attribute strength : RuleStrengthKind;
        attribute rationaleText : String;
    }

    part def ViewSelectionQuery specializes MemoPart {
        attribute includeElementKinds : String[*];
        attribute includeElementIds : String[*];
        attribute includeRelationshipKinds : String[*];
        attribute includeLayers : String[*];
        attribute includeConcerns : ConcernKind[*];
        attribute includeStatusTags : String[*];
        attribute selectionExpression : String;
        attribute rationaleText : String;
    }

    view def MemoView :> Views::View {
        // MEMO identity core, re-declared here rather than inherited: a view is
        // native SysML and must stay one, so it does not mix in the MemoPart
        // part hierarchy — same per-metaclass pattern the other MEMO bases use.
        attribute id : String;
        attribute uuid : String;
        attribute name : String;
        attribute shortDescription : String;
        attribute description : String;
        attribute rationale : String;
        attribute sourceReference : String;
        attribute status : ElementStatusKind;
        attribute lifecycleState : LifecycleStateKind;
        attribute realizationStage : RealizationStageKind[0..1];
        attribute crossCuttingConcerns : CrossCuttingConcernKind[0..*];
        attribute concerns : ConcernKind[0..*];
        attribute applicableStandards : ExternalReference[0..*];
        attribute codes : TerminologyCode[0..*];
        attribute outputKind : ViewOutputKind[*];
        attribute presentationKind : PresentationKind[*];
        attribute filterExpression : String;
        attribute queryDescription : String;
        attribute dataSourceDescription : String;
        attribute autoPopulate : Boolean;
        // ISO 42010 conformance is many-to-many: every view has one or more
        // viewpoints, and a viewpoint may be realized by many reusable views.
        ref viewpointDefinition : MemoViewpoint[1..*];
        // Optional grouping within each viewpoint, interpreted by Architect.
        attribute group : String;
        ref subjectElement : MemoPart[*];
        ref exposesElement : MemoPart[*];
        ref exposesRelationship : MemoRelationship[*];
        part selectionQuery : ViewSelectionQuery[*];
    }

    view def MemoDiagramView :> MemoView {
        attribute viewKind : DiagramViewKind;
        attribute diagramType : String;
        attribute layoutHint : String;
        attribute styleHint : String;
    }

    view def MemoDocumentBackedView :> MemoView {
        attribute version : String;
        attribute generationRule : String;
        attribute marketScope : String;
    }

    view def MemoDocumentView :> MemoDocumentBackedView {
        attribute viewKind : DocumentViewKind;
    }

    part def ViewInclusionRule specializes MemoPart {
        attribute includeElementKinds : String[*];
        attribute includeElementIds : String[*];
        attribute includeRelationshipKinds : String[*];
        attribute includeLayers : String[*];
        attribute includeConcerns : ConcernKind[*];
        attribute selectionExpression : String;
        attribute rationaleText : String;
    }
}