memo_architecture_variability
SysML API
Namespace hierarchy
memo → memo::architecture → memo::architecture::variability
Packages
| Package |
memo_architecture_variability |
Imports
| Visibility |
Target |
| private |
Metaobjects::SemanticMetadata |
| private |
ScalarValues::* |
| private |
memo_core_common::* |
| private |
memo_core_enumerations::* |
| private |
memo_core_relationships::* |
Declarations
| Name |
SysML kind |
Description |
Specializes |
ProductFeature |
part def |
Product feature definition specializing MemoPart. |
MemoPart |
RequiresFeature |
connection def |
Selecting the source feature needs the target feature selected too. |
MemoRelationship |
ExcludesFeature |
connection def |
The two features cannot be selected together. Symmetric: either end may be written first. |
MemoRelationship |
RealizesFeature |
metadata def |
#RealizesFeature dependency from <variant> to <feature>; The variant exists to give the family this feature. |
MemoTypedDependency |
SelectsFeature |
metadata def |
#SelectsFeature dependency from <release> to <feature>, <feature>; The release contains the variants that realize these features. |
MemoTypedDependency |
ShowsView |
metadata def |
#ShowsView dependency from <feature> to <view>, <view>; The views the feature's viewpoint lists: chosen for what the feature demonstrates, not found by a rule. |
MemoTypedDependency |
ProductFeature
part def ProductFeature specializes MemoPart
| Property |
Value |
| Description |
Product feature definition specializing MemoPart. |
| Kind |
part def |
| Abstract |
No |
| Specializes |
MemoPart |
| Owning package |
memo_architecture_variability |
RequiresFeature
connection def RequiresFeature :> MemoRelationship
| Property |
Value |
| Description |
Selecting the source feature needs the target feature selected too. |
| Kind |
connection def |
| Abstract |
No |
| Specializes |
MemoRelationship |
| Owning package |
memo_architecture_variability |
ExcludesFeature
connection def ExcludesFeature :> MemoRelationship
| Property |
Value |
| Description |
The two features cannot be selected together. Symmetric: either end may be written first. |
| Kind |
connection def |
| Abstract |
No |
| Specializes |
MemoRelationship |
| Owning package |
memo_architecture_variability |
RealizesFeature
metadata def RealizesFeature :> MemoTypedDependency
| Property |
Value |
| Description |
#RealizesFeature dependency from <variant> to <feature>; The variant exists to give the family this feature. |
| Kind |
metadata def |
| Abstract |
No |
| Specializes |
MemoTypedDependency |
| Owning package |
memo_architecture_variability |
SelectsFeature
metadata def SelectsFeature :> MemoTypedDependency
| Property |
Value |
| Description |
#SelectsFeature dependency from <release> to <feature>, <feature>; The release contains the variants that realize these features. |
| Kind |
metadata def |
| Abstract |
No |
| Specializes |
MemoTypedDependency |
| Owning package |
memo_architecture_variability |
ShowsView
metadata def ShowsView :> MemoTypedDependency
| Property |
Value |
| Description |
#ShowsView dependency from <feature> to <view>, <view>; The views the feature's viewpoint lists: chosen for what the feature demonstrates, not found by a rule. |
| Kind |
metadata def |
| Abstract |
No |
| Specializes |
MemoTypedDependency |
| Owning package |
memo_architecture_variability |
Source
architecture/variability/memo_variability.sysml
package memo_architecture_variability {
private import Metaobjects::SemanticMetadata;
private import ScalarValues::*;
private import memo_core_common::*;
private import memo_core_enumerations::*;
private import memo_core_relationships::*;
part def ProductFeature specializes MemoPart {
/** What the feature gives the people who use the product, in a sentence or two. */
attribute valueProposition : String[0..1];
/** Who it is for: the roles or segments that gain from it. */
attribute targetUsers : String[0..1];
/** How anyone will know it worked: the measure, and the level that counts as success. */
attribute successMeasure : String[0..1];
/** What has to hold for the value to be real, and what is not yet known. */
attribute assumptions : String[0..1];
}
connection def RequiresFeature :> MemoRelationship {
doc /* Selecting the source feature needs the target feature selected too. */
end dependentFeature : ProductFeature :>> source;
end requiredFeature : ProductFeature :>> target;
}
abstract connection requiresFeatureLinks : RequiresFeature[*];
metadata def <requiresFeature> RequiresFeatureMetadata :> SemanticMetadata {
:> annotatedElement : SysML::ConnectionDefinition;
:> annotatedElement : SysML::ConnectionUsage;
:>> baseType = requiresFeatureLinks meta SysML::Usage;
}
connection def ExcludesFeature :> MemoRelationship {
doc /* The two features cannot be selected together. Symmetric: either end may be written first. */
end firstFeature : ProductFeature :>> source;
end secondFeature : ProductFeature :>> target;
}
abstract connection excludesFeatureLinks : ExcludesFeature[*];
metadata def <excludesFeature> ExcludesFeatureMetadata :> SemanticMetadata {
:> annotatedElement : SysML::ConnectionDefinition;
:> annotatedElement : SysML::ConnectionUsage;
:>> baseType = excludesFeatureLinks meta SysML::Usage;
}
metadata def RealizesFeature :> MemoTypedDependency {
doc /* `#RealizesFeature dependency from <variant> to <feature>;` The variant exists to give the family this feature. */
}
metadata def SelectsFeature :> MemoTypedDependency {
doc /* `#SelectsFeature dependency from <release> to <feature>, <feature>;` The release contains the variants that realize these features. */
}
metadata def ShowsView :> MemoTypedDependency {
doc /* `#ShowsView dependency from <feature> to <view>, <view>;` The views the feature's viewpoint lists: chosen for what the feature demonstrates, not found by a rule. */
}
}