memo_artifacts_standards_traceability
SysML API
Namespace hierarchy
memo → memo::artifacts → memo::artifacts::standards
Packages
| Package |
memo_artifacts_standards_traceability |
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 |
RegulatoryStandard |
item def |
Standards and clauses |
MemoArtifactItem |
StandardClause |
item def |
Standard clause definition specializing MemoArtifactItem. |
MemoArtifactItem |
ConformsTo |
connection def |
Relationships |
MemoRelationship |
TracesToDocument |
connection def |
Typed relationship for traces to document. |
MemoRelationship |
RegulatoryStandard
item def RegulatoryStandard :> MemoArtifactItem
| Property |
Value |
| Description |
Standards and clauses |
| Kind |
item def |
| Abstract |
No |
| Specializes |
MemoArtifactItem |
| Owning package |
memo_artifacts_standards_traceability |
StandardClause
item def StandardClause :> MemoArtifactItem
| Property |
Value |
| Description |
Standard clause definition specializing MemoArtifactItem. |
| Kind |
item def |
| Abstract |
No |
| Specializes |
MemoArtifactItem |
| Owning package |
memo_artifacts_standards_traceability |
connection def ConformsTo :> MemoRelationship
| Property |
Value |
| Description |
Relationships |
| Kind |
connection def |
| Abstract |
No |
| Specializes |
MemoRelationship |
| Owning package |
memo_artifacts_standards_traceability |
TracesToDocument
connection def TracesToDocument :> MemoRelationship
| Property |
Value |
| Description |
Typed relationship for traces to document. |
| Kind |
connection def |
| Abstract |
No |
| Specializes |
MemoRelationship |
| Owning package |
memo_artifacts_standards_traceability |
Source
artifacts/standards/memo_artifacts_standards_traceability.sysml
package memo_artifacts_standards_traceability {
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::*;
item def RegulatoryStandard :> MemoArtifactItem {
doc /* A regulatory or consensus standard a project claims conformance
* to, identified by its full designation including edition and
* amendments (e.g. "IEC 62366-1:2015+AMD1:2020"). Dropping the
* amendment is a CE/MDR regression, so it is carried explicitly
* rather than folded into the designation by convention. */
attribute designation : String;
attribute edition : String[0..1];
attribute issuer : String[0..1];
attribute amendments : String[0..*];
attribute appliesToRegime : RegulatoryRegimeKind[0..*];
}
item def StandardClause :> MemoArtifactItem {
doc /* One normative clause of a RegulatoryStandard, at the depth at
* which the standard makes a distinct requirement a MEMO document
* actually claims. `title` is a MEMO-authored scope phrase — a
* representative synonym for what the clause governs ("§17" →
* "electromagnetic compatibility") — never the standard's own
* normative wording, which is copyrighted. The scope phrase is a
* label: queries traverse ConformsTo to the clause instance, they
* never match on its text.
*
* Clause containment uses the existing Composes relation
* (standard as parent, clause as child; clause as parent,
* sub-clause as child). There is no clause-specific composition
* type, because whole/part decomposition is already one relation
* in MEMO. */
attribute clauseNumber : String;
attribute title : String[0..1];
attribute normativeStrength : String[0..1];
}
connection def ConformsTo :> MemoRelationship {
doc /* Any model element claims conformance to a standard clause.
* This is the edge the standards traceability matrix and the
* clause coverage report are computed over. */
end conformingElement : MemoPart :>> source;
end clause : StandardClause :>> target;
}
abstract connection conformsToLinks : ConformsTo[*];
metadata def <conformsTo> ConformsToMetadata :> SemanticMetadata {
:> annotatedElement : SysML::ConnectionDefinition;
:> annotatedElement : SysML::ConnectionUsage;
:>> baseType = conformsToLinks meta SysML::Usage;
}
connection def TracesToDocument :> MemoRelationship {
doc /* Where the evidence for a clause claim is written down. The target
* is the existing controlled-artifact type — MEMO does not model a
* separate Document/DocumentSection family, because
* ControlledArtifact / ModelOwnedArtifact / MarkdownDocumentSource
* already carry version, owner and approval status. Section
* granularity rides on the link as a reference string rather than
* as a duplicate element type. */
attribute sectionReference : String[0..1];
end tracedElement : MemoPart :>> source;
end artifact : ControlledArtifact :>> target;
}
abstract connection tracesToDocumentLinks : TracesToDocument[*];
metadata def <tracesToDocument> TracesToDocumentMetadata :> SemanticMetadata {
:> annotatedElement : SysML::ConnectionDefinition;
:> annotatedElement : SysML::ConnectionUsage;
:>> baseType = tracesToDocumentLinks meta SysML::Usage;
}
}