Skip to content

memo_architecture_decisions

SysML API

Public namespace memo::architecture::decisions
Declared package memo_architecture_decisions
Source src/architecture/decisions/memo_decisions.sysml

Namespace hierarchy

memo → memo::architecture → memo::architecture::decisions

Packages

Package
memo_architecture_decisions

Imports

Visibility Target
private Metaobjects::SemanticMetadata
private ScalarValues::*
private memo_core_common::*
private memo_core_enumerations::*
private memo_core_relationships::*
private memo_artifacts_core::*

Declarations

Name SysML kind Description Specializes
DesignDecision part def Design decision definition specializing MemoPart. MemoPart
Alternative metadata def Alternative definition specializing MemoTypedDependency. MemoTypedDependency
Selected metadata def Selected definition specializing MemoTypedDependency. MemoTypedDependency
DecisionRecordedInADR connection def Typed relationship from DesignDecision to ADRArtifact. MemoRelationship
Decides connection def Typed relationship from DesignDecision to MemoPart. MemoRelationship

DesignDecision

part def DesignDecision specializes MemoPart
Property Value
Description Design decision definition specializing MemoPart.
Kind part def
Abstract No
Specializes MemoPart
Owning package memo_architecture_decisions

Alternative

metadata def Alternative :> MemoTypedDependency
Property Value
Description Alternative definition specializing MemoTypedDependency.
Kind metadata def
Abstract No
Specializes MemoTypedDependency
Owning package memo_architecture_decisions

Selected

metadata def Selected :> MemoTypedDependency
Property Value
Description Selected definition specializing MemoTypedDependency.
Kind metadata def
Abstract No
Specializes MemoTypedDependency
Owning package memo_architecture_decisions

DecisionRecordedInADR

connection def DecisionRecordedInADR :> MemoRelationship
Property Value
Description Typed relationship from DesignDecision to ADRArtifact.
Kind connection def
Abstract No
Specializes MemoRelationship
Owning package memo_architecture_decisions

Decides

connection def Decides :> MemoRelationship
Property Value
Description Typed relationship from DesignDecision to MemoPart.
Kind connection def
Abstract No
Specializes MemoRelationship
Owning package memo_architecture_decisions

Source

architecture/decisions/memo_decisions.sysml
package memo_architecture_decisions {
    private import Metaobjects::SemanticMetadata;
    private import ScalarValues::*;

    private import memo_core_common::*;
    private import memo_core_enumerations::*;
    private import memo_core_relationships::*;
    private import memo_artifacts_core::*;
    part def DesignDecision specializes MemoPart {
        attribute decisionKind : String;
        attribute decisionStatus : DesignDecisionStatusKind;
    }

    // The options a decision weighs and the one it chose are links to variants, not
    // strings: `#Alternative dependency from <decision> to <variant>, <variant>;` and
    // `#Selected dependency from <decision> to <variant>;`. A variant is a SysML
    // `variant` (SysML-textual-bnf.kebnf:254-256) of a variation point, so a trade
    // study points at the thing that is being traded. Both are typed dependencies
    // (memo_core_relationships::MemoTypedDependency).
    metadata def Alternative :> MemoTypedDependency;
    metadata def Selected :> MemoTypedDependency;

    connection def DecisionRecordedInADR :> MemoRelationship {
        end decision : DesignDecision :>> source;
        end adr : ADRArtifact :>> target;
    }
    abstract connection decisionRecordedInADRLinks : DecisionRecordedInADR[*];
    metadata def <decisionRecordedInADR> DecisionRecordedInADRMetadata :> SemanticMetadata {
        :> annotatedElement : SysML::ConnectionDefinition;
        :> annotatedElement : SysML::ConnectionUsage;
        :>> baseType = decisionRecordedInADRLinks meta SysML::Usage;
    }

    // ── Relations owned by this package ─────────────────────────────
    // Moved out of memo_core_relationships: their ends are typed against
    // types declared here, and core must not depend on a domain package.
    connection def Decides :> MemoRelationship {
        end decision : DesignDecision :>> source;
        end affectedElement : MemoPart :>> target;
    }
    abstract connection decidesLinks : Decides[*];
    metadata def <decides> DecidesMetadata :> SemanticMetadata {
        :> annotatedElement : SysML::ConnectionDefinition;
        :> annotatedElement : SysML::ConnectionUsage;
        :>> baseType = decidesLinks meta SysML::Usage;
    }
}