Selected issues with the SysML1.0 spec are presented and discussed.
They correspond to issues submitted to issues@omg.org via the OMG issues form:
Visit also:
http://www.omg.org/techprocess/meetings/schedule/SysML_RTF.html
MD SysML example supporting suggested resolution "closed no change".
In most tools users are free to compose systems using the SysML IBD (UML2 composite structure) first or a SysML BDD (UML2 class diagram). In the better tools one can move freely between the two, and the composition aspects are mapped bijectively (except owned Connectors and ItemFlows with itemProperty only appear in an IBD).
It is true that in the sample problem the BDDs seem to come first, however that is not in my experience the best way to handle structural composition !
I recommend:
In MD SysML you can show the structure compartment to create a "hybrid" diagram, which is very useful, if admittedly not standard SysML (yet). One can't show the connectors in a BDD anyway, so "associative composition" really is a very limited view of the composition anyway. UML2 composite structure was a blessing !
Note in the example below:
Blocks are never "owned by composition", they are only used as properties by composition:
I therefore recommend against the suggestion of a BDD-like compartment in a Block.
Relates to:
Issue 12128: Suggest Unit and ValueType both extend abstract DimensionedType, and inherit a 'dimension' attribute
Issue 12219: Section: 08 Blocks: suggest need Quantity stereotype and definition
'Unit and Dimension elements are defined using a rectangular box notation similar to a class, in which only the «unit» or «dimension» stereotype keyword, the name of the Unit or
Dimension, and optionally the “dimension” property value of a Unit may appear.'
MD SysML achieves this by NOT extending InstanceSpecification (see image below) !
The MD SysML <<Unit>> and <<Dimension>> both extend DataType
The resolution states:
the notation that SysML defines for Dimension and Unit differs the standard UML notation for InstanceSpecification
Which is just one reason not to choose Unit [InstanceSpecification] and Dimension [InstanceSpecification]..
OMG Issue Resolution
Unit and Dimension elements are defined using a rectangular box notation similar to a class
Which is one reason for indeed choosing the "Class-like" DataType as base for Unit and Dimension
(even though one then has to restrict Dimension to not be used as a type).
I would already reject the proposal resolution on the basis of this text:
OMG Issue Resolution
Even though the base metaclass of Unit and Dimension is InstanceSpecification
because I reject that metamodel.
In fact a Unit can only be sensibly modelled as "a special kind of Quantity", on in which values of quantities with a chosen unit may be stated. Unit must extend Quantity ! Please visit (and please view the metamodel images carefully):
Unit is (like ValueType) well modelled as a DimensionedType [DataType] (and can be used to type directly for the unitary case):
This leaves however Dimension open to have a different base metaclass from Unit, however then (given that the notation is supposed to be the same) this is hard for UML-based tool vendors.
The observation that the notation needs to be clarified is correct, however binding it to the specific metamodel is not necessary.
There is a fundamental flaw with the practice of using the ValueType to indicate a Unit's symbol:
If the (UML2-compliant) option to also show the ValueType of a value property in Slots (and IBDs)is excluded by SysML, and if "secondary stereotypes" (11496) are not supposed to be displayed in IBDs, it in fact leaves no consistent way at all to indicate the Unit of a value shown in an IBD initial values compartment
because the Unit "metadata" belongs to the ValueType that types the defining feature (property) of a Slot !
In MD15.5 we have introduced the ability to show the Type on values in Slots and IBDs so we can now in fact communicate a Unit symbol well enough to engineers using the tool.
The following trail analyses a proposed resolution snippet (supported by snippets from SysML1.0):
'The PropertySpecificType stereotype is automatically applied to the classifier which types a property with a property-specific type. This classifier can contain definitions of new or redefined features which extend the original classifier referenced by the property-specific type.
Classifiers with the PropertySpecificType stereotype are owned by the block which owns the property which has the property-specific type. A classifier with this stereotype must specialize at most a single classifier which was referenced as the starting classifier of the property-specific type. If there is no starting classifier (which occurs if no existing name is specified as the starting type of a property-specific type), then a classifier with the stereotype applied has no specialization relationship from any other classifier.'
Firstly, the system for which an additional "redefinition context" is to be provided is given as a simple IBD, with regular types and properties:
To evoke the impression of property-specific types in MD SysML15.1 (in place of implied property-specific types) we introduce explicit [PropertySpecificType] classifiers for illustration:
Then (see below) an IBD with redefinition of types and their properties (all in a given redefinition context for the system) can be shown:
Explicit [PropertySpecificType] classifiers are used for illustration in MD SysML, in place of implied property-specific types.
For completeness: the system examined without an additional redefinition context.
Constraint properties do not take part in the assembly hierarchy of blocks. Although they are of type <<Block>> via <<ConstraintBlock>> and have AggregationKind 'composite' they should not be considered "parts".
SysML1.0, 8 Blocks:
A block can include properties to specify its values, parts, and references to other blocks.
Rewrite to include constraint properties:
A block can include properties to specify its values, parts, references to other blocks, and constraint properties.
SysML1.0, 8.3.1.2 Internal Block Diagram, Property types:
Three general categories of properties are recognized in SysML: parts, references, and value properties
Rewrite to include constraint properties:
Four general categories of properties are recognized in SysML: parts, references, value properties, and constraint properties.
SysML1.0, 8.3.2.2 Block, Description:
SysML establishes three standard classifications of properties belonging to a SysML Block. A property typed by a SysML Block that has composite aggregation is classifed as a part property. A property typed by a Block that does not have composite aggregation is classified as a reference property. A property typed by a UML DataType or SysML ValueTyp is classified as a value property. Part, reference, and value properties may be shown in block definition compartments with the labels “parts,” “references,” and “values” respectively. Properties of any type may be shown in a “properties” compartment.
Rewrite to include constraint properties:
SysML establishes four standard classifications of properties belonging to a SysML Block. A property typed by a SysML Block that has composite aggregation is classified as a part property (excluding constraint properties, which are typed by a Constraint Block). A property typed by a Block that does not
have composite aggregation is classified as a reference property. A property typed by a UML DataType or SysML ValueType is classified as a value property. Part, reference, value properties, and constraint properties, may be shown in block definition compartments with the labels “parts,” “references,” “values”, and "constraints" respectively. Properties of any type may be shown in a “properties” compartment.
Note also minor spelling correction: classifed -> classified.
This would be consistent with the following from 8.3.1.2 Internal Block Diagram, Property types:
".. A part or value property is always shown on an internal block diagram with a solid-outline box. A reference property is shown by a dashed-outline box, consistent with UML .."
Rewrite to include assertion that value properties must always be owned with AggregationKind 'composite':
".. A part or value property has AggregationKind 'composite' and is always shown on an internal block diagram with a solid-outline box. A reference property has AggregationKind 'none' or 'shared' and is shown by a dashed-outline box, consistent with UML .."
(Please note also that this case also illustrates why it would be useful to have a clear stereotypes like ValueProperty throughout the SysML specification, as it affords a canonical point of documentation for such assertions and constraints.)
This strategy provides a compact and elegant metamodel for the units and values, and expresses well the underlying physical and mathematical principles of a dimensioned quantity represented by a value subject to chosen units.
Value properties can then be sensibly typed by either a Unit or a ValueType.
In the case where a ValueType has a Unit, the constraint still applies that the dimension of the ValueType must be the same as the dimension of the Unit.
The current Unit, Value, Dimension system in SysML is incomplete without the crucial concept of quantity. A physical or industrial Quantity is independent of a choice of unit and value as measured or stated. A Quantity has a Dimension, which can be fundamental (as in the SI system), or derived (according to industrial needs).
A Quantity DOES NOT have a Unit, and it DOES NOT have a relationship to a given unit systems, although it may be allocated a default unit within a given system.
The statement/measurement of a Quantity is given as a value relative to a chosen Unit.
A Quantity is represented in SysML by a value property (typed currently by a ValueType, although a strong case can be made for typing a value property directly by a Unit).
As discussed at the OMG TM SysML RTF on Th 13Mar2008.
Assumes the property-specific 'defaultValue' compartment has been renamed to 'initialValue' (or perhaps 'initialValues'), as suggested in a previous issue submission.
The case of a property-specific 'initialValues" compartment (as in Table 8.3 - Graphical nodes defined in Internal Block diagram) and also deeply nested "initial values" is well complemented by a "values" or "currentValues" compartment, as illustrated for the test results in Figure 8.11 - SUV EPA Fuel Economy Test.
Together, the "initialValues" and "values" compartments illustrate usefully the evolution of the value state of a system used within an additional top-level "value slice" context. Tool vendors would be free to show one, both, or none of these two complementary compartment in part Properties of an IBD.
This strategy promotes progress towards animation of systems, and also enables comparison of special configurations with an "intial" configuration.
This suggestion represents a useful unification of concepts already present in the SysML specification.
As discussed at the OMG TM SysML RTF on Th 13Mar2008.
The 'defaultValue' compartment should be renamed 'initial values' (two words, with plural for values).
The static (class level) default values of a given Block's Properties may be overridden on instantiation and initialization of a part Property usage of that Block by the using context.
The concept of "initial values" is more consistent with the programmatic practice, and it serves to highlight the difference between the UML2 defaultValue (of a Property within a class) and the (re)initialisation of a SysML value Property on usage of that value's Block as a part Property within a higher context, by assignment of a property-specific initial value.
The label 'initial values' is also consistent with the UML2.1.1 specification description of the role of the defaultValue attribute of 7.2.44 Property:
"If there is a default specified for a property, this default is evaluated when an instance of the property is created in the absence of a specific setting for the property or a constraint in the model that requires the property to have a specific value. The evaluated default then becomes the initial value (or values) of the property."
Further, the concept of "initial values" emphasises the evolving value state of a system. The "initial value" is then merely a single value slice within a series of values states.
Configuration is a special case of "initial value". Example: when a Car leaves a factory it is "initialised" to a luxury, sports, or family configuration.
The concept of "initial value" compartment is complemented by the suggestion of a "current values" or simply "values" compartment for recording the value state of an evolving system. (See related issues submitted by Darren Kelly.)
This suggestion promotes support of animation of SysML systems, and also encompasses aspects of static configuration consistently.
There should be a definition of the role of the 'values' compartment for display of "current values" (for representing the entire value state of a system within a unique value context) and/or "deep configuration" values indepedendent of the PropertySpecificType concept, which may be seen as only one possible way of carrying values for assignment to the 'values' compartment in and IBD.
Another strategy employing values in Slots of InstanceSpecifications that are related to targeted part Properties by a Property[*] path and then mapped to the targeted part Properties would achieve the same 'values' idiom in and IBD without indication of the implied subtype using [brackets].
When the 'values' are carried by redefined defaultValue : ValueSpecification[0.1] of redefined properties of an implied [PropertySpecificType] the bracket notation should still be used (inviting also indication of other redefinitions that can't be achieved using mapping of InstanceSpecifications, such as operation and constraint redefinitions).
In particular, the following paragraph from p.53 (illustrated in Figure 8.11 - SUV EPA Fuel Economy Test) should be rewritten to admit other solutions:
"In SysML, one approach is to capture system configurations by creating a context for a configuration in the form of a context block. The context block may capture a unique identity for the configuration, and utilizes parts and part-specific types to express property design values within the specification of a particular system configuration. Such a context block may contain a set of parts that represent the block instances in this system configuration, each containing specific values for each property. This technique also provides for configurations that reflect hierarchical system structures, where nested parts or other properties are assigned design values using property-specific types. The following example illustrates the approach.":
While Figure 8.11 - SUV EPA Fuel Economy Test could remain with [PropertySpecificType] notation as an indication of that strategy, there should be an equivalent figure showing the same 'values' compartment and a similar top-level value context block, however without the [brackets] notation on part types, and without any reference to the PropertySpecificType solution. The title of Figure 8.11 should be clearly marked to indicated use of the PropertySpecificType solution and notation.
On p.46 under 8.3.2.4 DistributedProperty it is stated that:
'[1] The DistributedProperty stereotype may be applied only to properties of classifiers stereotyped by Block or ValueType.'
It does not however state whether a DistributedProperty [Property] within a Block may only be applied to a value property (a "block property" typed by a ValueType or DataType) or other Property variations. All examples of the application of DistributedProperty show it applied to a value property.
This has implications for sorting into block compartments in BDDs; if a DistributedProperty [Property] may only be applied to a value property then it will always be sorted into the 'values' compartment.
It also has implications for aggregation; since a value property (within a block) must have AggregationKind 'composite', a DistributedProperty will also have AggregationKind 'composite' (within a block).
On p.46, under 8.3.2.4 DistributedProperty it is stated that:
'[1] The DistributedProperty stereotype may be applied only to properties of classifiers stereotyped by Block or ValueType.'
There are however, as far as I can tell, no examples of a DistributedProperty or specialisation thereof applied to a property that is not within a block.
A candidate example might include a variation on a Complex <<ValueType>> (cf. Figure 8.7 - Model Library for Blocks) with distributions applied to the real and imaginary parts (being represented by properties, and thus admitting application of the DistributedProperty stereotype, or substereotype).
-------------------------------------------------------------
<<ValueType>>
StrangeDistributedComplex
-------------------------------------------------------------
<<Uniform>> {min=-10, max=10} realPart : Real
<<Uniform>> {min=-12, max=12} imagPart : Imag
-------------------------------------------------------------
It is not enough to refer simply to (p.180):
'The «system» and «external» stereotypes are user defined, not specified in SysML,'
Although already raised as Issue 12257, this new Issue submission (by a different submitter) makes the constructive suggestion that the 'user defined' stereotypes by defined in non-normative extension Section in the Annex C.
It is not acceptable that a specification dedicated to systems engineering does not even have at least a well-defined non-normative definition of a <<system>> and <<system context>> ! These need to be upgraded to a non-normative Annex, and then introduced properly through the example.
I see no reason why the figures should not use non-normative stereotypes as long as they are defined in an Annex and clearly. This is not the case for:
<<system context>>, <<system>>, <<external>>, <<domain>>, <<subsystem>>,
yet these are truly crucial for even basic systems engineering, and the examples (which use them well) make little sense without them.
There is a very nice summary of C.2 Requirements Diagram Extensions. and those requirement categories have proved very useful already.
I have made a small summary and guide here:
Block extensions (non-normative)
As recommended through SysML1.0 examples:
Note my definitions for <<domain>> vs. <<system context>>.
I suggest that at least «system context» should have an attribute:
system:<<system>>[1]
<<domain>> could then extend <<system context>>.
In MD SysML the technique illustrated here must be supplemented by Dr Darren's <<BlockPackage>>/<<BlockModel>> concept, since (consistent with the UML2.1.2 spec.) MD SysML does not permit the ownership of InstanceSpecifications by a block, and so a <<ValueSlice>> block can't own the <<Values>> InstanceSpecifications it "manages". It turns out this has some benefits; it makes sense to package all engineering data, and even icons and images, together with the owned <<Block>>. This scales well to <<TimeSlicePackage>> for a <<TimeSlice>> block, and to a <<ConfigurationPackage>> for a <<Configuration>> block.
Note that in the diagram below the <<Values>> are indicated as being under shared aggregation by their <<ValueSlice>> Block, although they must actually be owned by the <<ValueSlicePackage>> that also owns the <<ValueSlice>> Block. This emphasises that the <<ValueSlice>> manages the <<Values>> and applies them to the root part (the Block usage) and that Block's deeply nested parts, although the <<Values>> are owned by a BlockModel or BlockPackage.
Thanks are due to Nerijus Jankevicius, Alain Isoz and the MD SysML Team for input and collaboration on this evolving proposal.
It has been provisionally agreed that the property-specific defaultValue compartment is better named initial values.This proposal finds support in the following text from the UML2.1.1 superstructure:
If there is a default specified for a property, this default is evaluated when an instance of the property is created in the absence of a specific setting for the property or a constraint in the model that requires the property to have a specific value. The evaluated default then becomes the initial value (or values) of the property.
Dr Kelly emphasised that the initial values of a complex block assembly are merely a singular aspect of a wider animation-friendly solution, which also encompasses configuration of assemblies on construction. The technique illustrated in this trail uses InstanceSpecifications to store both initial values (as Property.defaultValue vectors) and "instance values" (or equally configuration values), and can handle both deeply nested assemblies and time-dependency, inviting progress towards animation of block assemblies.
It has been demonstrated that - for a wide range of value-based cases - the PropertySpecificType strategy is not necessary, although it does afford other possibilities (such as redefinition of operations and constraints) that an InstanceSpecification based approach can't.
The BDD below shows progressive initialisation of blocks used as parts in higher contexts:
The values of an instantiated system will start equal to the initial values. Those dynamic values (NOT the initial values data) may then be overridden by: assignment of values within a <<ValueSlice>> value context.
This proposed metamodel supporting such value assignment is illustrated here (using tagged values) in one large BDD and then also following as a sequence of BDDs and IBDs showing progressive initial values configuration then values assignment.
The Leaf class manages "static" (class-level) default values for each of its value properties length and width . Every instance of Leaf will get these values for (they will become the initial length and initial width) unless it is overridden by a property-specific initial value on instantiation.
The <<InitialValues>> InstanceSpecification stored in the same <<BlockPackage>> as the InnerAssembly block carries initial values in its Slots which are mapped to the leaf:Leaf part Property using the existing UML2 Property.defaultValue:ValueSpecification[0..1] via a UML2 InstanceValue carrying the InstanceSpecification.
The proposed <<InitialValues>> stereotype is not explicitly required to exploit the Property.defaultValue mechanism, however it is recommended in order to:
(Note that it has been proposed at the OMG TM Washington DC Mar 2008 that the property -specific defaultValue is better named initial values.)
Note that:
A <<ValueSlice>> "manages" <<Values>> InstanceSpecifications for (if needed) every part a complex assembly in a given value context provided by that <<ValueSlice>>. All <<Values>> are owned by the <<ValueSlicePackage>> (or equivalently a <<ValueSliceModel>> that also owns this <<ValueSlice>>.
Note that the SysML IBD defaultValue compartment (a.k.a.property-specific initial values) is NOT the same thing as the values compartment in an IBD ! Nor are the initial values "overridden" by evolving values. The initial values data stays the same throughout the life of an instance (such as a part Property as a role), while the values may change.
Visit also:
Inherits from <<ValueSlicePackage>>.
Required to support Dr Darren's recommendation of:
The <<ValueSlice>> stereotyped needs at least either a tag typed by Block or a tag typed by Property, to be able to diagram
architecturally the role of <<ViewSlice>> "managing" a <<Block>>. The tag root:<<Block>> of <<ValueSlice>> maps well architecturally to the concept:
"A value slice provides a value context for a block"
One could argue that the association end Property root:MyBlock corresponds well to:
"A value slice provides a value context for a block (used as a part property)."
You could then - on creation of a given <<ValueSlice>> MyValueSlice - additionally set at a tag root:Property. However there is no way I can see to easily constrain a given <<ValueSlice>> MyValueSlice to:
Also, a given <<ValueSlice>> MyValueSlice then only references its <<Block>> MyBlock via the type of its root:MyBlock, which is hard (or impossible) to diagram "architecturally" as stereotypes.
Of course you DO - for a given <<ValueSlice>> MyValueSlice - also need the particular association with end <<PartProperty>> root:MyBlock, where the Type of the Property is the particular <<Block>> MyBlock, so that the root can be shown in the IBD !
In the example:
Throughout this examination of the «ValueSlice» proposal you may have noticed my use of an illustrative «sets» relationship drawn from a «Values» "instance values" carrier to targeted property symbols (not intended to mean the actual Property), to indicate the targeted property path. Recalling that a Property specifies instance(s) (a Property is not itself really an instance). It is those instances (which can't be directly shown in this IBD) for
which the <<Values>> InstanceSpecification is considered
here to "carry" values, which values are unique to a «ValueSlice» context.
This is what the illlustrative <<sets>> Dependency is
trying to indicate, however in fact it fails in this case, because it
is relating two different Values vectors to the same Property a:TypeA,
(even though the targeted symbols are different in the top diagram).
This can be shown be regenerating the relationships with the targeted
part Property present as attribute of TypeC:
In this trail we examine different types of values, and how they propagate to the initial values (formerly defaultValue) and values compartments of a part in an IBD.
The BDD below shows the different levels of values and the blocks that manages them. A block Type will be used in a UseType usage context, which in turn will be granted a <<ValueSlice>> TheValueContext value context.
To make it easier to follow the system the different types of value are colour-coded:
The 4 value properties of Type are:
The following IBD shows the UseType system within a <<ValueSlice>> TheValueContext value context.
Please note that in this diagram:
We see initial values for v2 and v3 as defined in the <<InitialValues>> InstanceSpecification "vector" have been displayed in the initial values compartment, however none are shown for v1 and v4, which had class-level default values. I suggest that this behavior is not consistent, and that the Property.defaultValue for v1 and v4 should be displayed, consistent with the following from the UML2.1.1 spec:
7.3.44 Property (from Kernel, AssociationClasses)
defaultValue: ValueSpecification [0..1] A ValueSpecification that is evaluated to give a default value for the Property when an object of the owning Classifier is instantiated. Subsets Element::ownedElement.
If there is a default specified for a property, this default is evaluated when an instance of the property is created; in the absence of a specific setting for the property or a constraint in the model that requires the property to have a specific value. The evaluated default then becomes the initial value (or values) of the property.
The underlined part of the quote emphasises that this this only applies in my example if v1 and v4 are indeed created (whence the Property.defaultValue would become the initial value, and should - I suggest - be displayed in the initial values compartment, along with the property-specific initial values for v2 and v3. If the multiplicity of v1 and v4 is known to be exactly 1 then they must be created. However, if the multiplicity of the v1 and v4 is [0..1] then the situation is unclear(*).
In basic use of Java, the field for a value always exists, and its default value assignment is forced, so the multiplicity is always [1]. However, in property-based APIs like Service Data Object (SDO) and Eclipse Modelling Framework (EMF) a property may not yet be "set" (it can be "unset"), and this corresponds well to the case of multiplicity [0..1].
To illustrate the case where the multiplicity of all value properties is known to be one [1] (the value properties are definitely created and the defaultValue becomes the initial value, unless an explicit property-specific initial value is assigned) I have made a rough drawing (see next page), which shows propagation of values into the initial values and values compartments of a part in an IBD.
(*) Special thanks are due to MD SysML Product Manager Nerijus Jankevicius for highlighting the importance of multiplicity in this matter.
In the upper part of this drawing I have attempted to illustrate how property-specific initial values "mask" the underlying class-level default values (if there are any). One needn't use an explicit <<InitialValues>> stereotype for the InstanceSpecification that provides the "vector" of property-specific initial values, however I feel it helps communicate the intention, and helps "reserve" the InstanceSpecification in the model for this purpose.
In the lower part I have attempted to illustrate how context-specific values "mask" the initial values (which may be either evaluated Property.defaultValues or property-specific initial values). I do not wish to imply that the initial values are overwritten, on the constrary I would like to have BOTH values and initial values compartments for a part in an IBD. A value starts out equal to an initial value, and may evolve away from it (or be reconfigured w.r.t. to it).
Note that I have attempted to decouple the representation of context-specific values from how they are carried:
A <<Configuration>> is a trivial variation on the generic <<ValueSlice>> case with additional semantics. According to this approach there is no sense in which a configuration "overrides" initial values. A <<Configuration>> is defined here as the setting of values to a particular configuration, such as driving an already initialised machine into a new configuration (mode).
A <<TimeSlice>> is an extension of a <<ValueSlice>> that carries a time specification, which that applies to all <<Values>>. This invites progress towards animation
of SysML block assemblies. A <<TimeSlice>> is packaged in a <<TimeSlicePackage>> or <<TimeSliceModel>>, along with its current <<Values>. There may be grounds to extend <<Values>> by <<CurrentValues>> and specialises <<TimeSlice>> to manage only <<CurrentValues>>
Attempts to address at least the following problem:
A <<ValueSlice>> would have a tag referencing an
instance "tree" that carries recursively the values for each and every
part in the value context. The root of the tree has the block Type of
the Block for which the ValueSlice provides a value context:
Of concern to the slot-based "rooted instance values tree" approach is synchronisation of existing values trees with changing system structure.
In MagicDraw UML the Slot for b:TypeB vanishes correctly from an InstanceSpecification typed by a block from which it was moved away. However a user would then have to update the new Slot (corresponding to the new Property location) to populate it, unless the tool did ambitious tracking and made some assumptions about the intention behind the structural change.
This mini-trail examines the possibility of reuse of an "instance values branch" for an assembly between different higher value contexts. Such reuse comes at the price of possible side-effects between value contexts sharing the branch.
There is already a «ValueSlice» SliceC value context for TypeC, and we wish in this exercise to reuse the carried «Values» in future slices.
Note how in the approach investigated here the structural slots of the «Values» carriers are populated, there is no separate tracking of the targeted property path.
Attempts to reuse an "instance branch" for TypeC from another value context (SliceE for TypeE, see next diagram).
Problem: changes made to slots within instance values compartments of a:TypeA, b:TypeB, or c:TypeC within the IBD of SliceD would affect the values of cValues:TypeC or its leaves, and would thus affect instance values shown within SliceE.
Problem: Drag n' Drop of instance of a values trees onto a part of an IBD in a value context is difficult to combine with shared instance trees. If a new instance tree for TypeA is dragged onto part a:TypeA within the IBD for SliceD should cValues:TypeC be affected ?
For completeness. Changes to the instance values carried by the branch within usages of C in - say - and IBD for <<ValueSlice>> SliceD - would express themselves here. Sharing values comes at a price.
This trail represents a significant proposed revision and enhancement of the SysML metamodel/profile for representation of physical and industrial quantities with a stated/measured value relative to a unit, within a given quantity and dimension system.
To help improve the SysML Quantity (Unit, Dimension, ValueType) metamodel a UML Parsing Analysis of the text of this authoritative metrology document was performed by Dr Darren Kelly:
International Vocabulary of Metrology – Basic and General Concepts and Associated Terms (VIM)
3rd edition
Final draft 2006-08-01http://nistboulder.net/Presentations/wg2docN318VIM3ed2006.pdf
JCGM/WG 2 Document N318
Text from the document parsed into UML Comments and UML Components used as wrappers is stereotyped as «VIM3», «VIM3:NOTE», «VIM3:EXAMPLE».
Text is copied from the document into these eSchool pages and into UML Comments and UML Components for the sole purpose of preparing a metamodel revision for the then OMG SysML specification. Please always refer to the original document for the authoratative content and typesetting.
Pages marked with [brackets] represent either incubating pages, or aspects that have not been mapped to this SysML Quantity metamodel proposal.
Thanks are extended to Sebastien Demathieu for referral to this useful technical document.
In the diagram below the relationship between "kinds" of quantities as discussed in VIM3 has been represented in three ways:
See in particular the energy quantity, with a physical law that applies to all kinds of energy, and increasingly specific energy forms (kinetic, potential, and heat) with increasingly specific equations.
This demonstrates at least one reason why Dimension alone (shared by all the kinds of energy) can't serve as a Quantity or "quantity kind".
From IVoC:
quantity dimension
dimension of a quantitydimension
expression of the dependence of a quantity on the base quantities of a system of quantities as a product of powers of factors corresponding to the base quantities, omitting any numerical factorEXAMPLES
a) In the ISQ, the quantity dimension of force is dim F = LMT–2.
b) In the same system of quantities ML–3 is the quantity dimension of mass concentration and also of mass density (volumic mass).NOTES
1 — A power of a factor is the factor raised to an exponent. Each factor is the dimension of a base quantity.2 — The conventional symbolic representation of the dimension of a base quantity is a single upper case letter in roman (upright) sans-serif type. The conventional symbolic representation of the dimension of a derived quantity is the product of powers of the dimensions of the base quantities according to the definition of the derived quantity. The dimension of a quantity Q is dim Q
3 — In deriving the dimension of a quantity, no account is taken of its scalar, vector or tensor character.
4 — In a given system of quantities,
– quantities of the same kind have the same dimension,
– quantities of different dimensions are always of different kinds, and
– quantities having the same dimension are not necessarily of the same kind.5 — In the International System of Quantities (ISQ), the dimensions of the base quantities are:
Base quantity Dimension length L mass M time T electric current I thermodynamic temperature Θ amount of substance N luminous intensity J
Thus, the dimension of a quantity Q is dim Q = LαMβTγ IδΘεNζJη where the exponents, named dimensional exponents, are positive, negative, or zero.
Visit also:
From VIM:
1.1 (1.1)
quantity
property of a phenomenon, body, or substance, to which a number can be assigned with
respect to a reference
Work in progress, especially w.r.t. specification of values (many options with many pros and cons for tool vendors).
Visit also:
From IVoM:
system of quantities
set of quantities together with a set of non-contradictory equations relating those quantities
NOTE — Ordinal quantities, such as Rockwell C hardness, are usually not considered to be part of a
system of quantities because they are related to other quantities through empirical relations only.
From IVoM:
measurement unit
unit of measurement
unit
scalar quantity, defined and adopted by convention, with which any other quantity of the
same kind can be compared to express the ratio of the two quantities as a numberNOTES
1 — Measurement units are designated by conventionally assigned names and symbols.
2 — Measurement units of quantities of the same dimension may be designated by the same name and symbol even when the quantities are not of the same kind. For example joule per kelvin and J/K are respectively the name and symbol of both a measurement unit of heat capacity and a unit of entropy, which are generally not considered to be quantities of the same kind. However, in some cases special measurement unit names are restricted to be used with quantities of specific
kind only. For example, the unit 1/s is called hertz when used for frequencies and becquerel when used for activities of radionuclides.3 — Measurement units of quantities of dimension one are numbers. In some cases these units are given special names, e.g. radian, steradian, and decibel, or are expressed by quotients such as millimole per mole equal to 10-3 and microgram per kilogram equal to 10-9.
4 — For a given quantity, the short term “unit” is often combined with the quantity name, such as “mass
unit” or “unit of mass”.
Note that a Unit is is a (scalar) Quantity, so it extends Quantity (assumed in this metamodel to be scalar).
Visit also:
From IVoM:
base quantity
quantity in a conventionally chosen subset of a given system of quantities, where no
subset quantity can be expressed in terms of the othersNOTES
1 — The subset mentioned in the definition is termed the set of base quantities.
EXAMPLE
The set of base quantities in the International System of Quantities (ISQ) is given in 1.6.
2 — Base quantities are referred to as being mutually independent since a base quantity cannot be
expressed as a product of powers of the other base quantities.
3 — “Number of entities” can be regarded as a base quantity in any system of quantities.
Indicate here with 'base' attribute of Quantity.
From IVoM:
derived quantity
quantity, in a system of quantities, defined in terms of its base quantitiesEXAMPLE
In a system of quantities having the base quantities length and mass, mass density is a derived
quantity defined as the quotient of mass and volume (length to the third power)
If the attribute 'isBase' of a Quantity is false then the derived attribute '/isDerived' is true.
From IVoM:
quantity of dimension one
dimensionless quantity
quantity for which all the exponents of the factors corresponding to the base quantities in its quantity dimension are zeroNOTES
1 — The term “dimensionless quantity” is commonly used for historical reasons. It stems from the fact that all exponents are zero in the symbolic representation of the dimension for such quantities. The term “quantity of dimension one” reflects the convention in which the symbolic representation
of the dimension for such quantities is the symbol 1 (see ISO 31-0:1992, subclause 2.2.6).2 — The measurement units and values of quantities of dimension one are numbers, but such
quantities convey more information than a number.3 — Some quantities of dimension one are defined as the ratios of two quantities of the same kind.
EXAMPLES
plane angle, solid angle, refractive index, relative permeability, mass fraction, friction factor, Mach number4 — Quantities of dimension one can also be numbers of entities.
EXAMPLES
number of turns in a coil, number of molecules in a given sample, degeneracy (number of energy levels) in quantum mechanics
From IVoM:
kind of quantity
kind
aspect common to mutually comparable quantitiesNOTES
1 — In English, the term “quantity” is often used for kind of quantity. In French, the term “nature” is
only used in expressions such as “grandeurs de même nature” (in English, “quantities of the same
kind”).2 — The division of the concept of ‘quantity’ according to ‘kind of quantity’ is to some extent arbitrary.
EXAMPLESa) The quantities diameter, circumference, and wavelength, are generally considered to be quantities of the same kind, namely, of the kind of quantity called length.
b) The quantities heat, kinetic energy, and potential energy, are generally considered to be quantities of the same kind, namely, of the kind of quantity called energy.
3 — Quantities of the same kind within a given system of quantities have the same quantity dimension. However, quantities of the same dimension are not necessarily of the same kind.EXAMPLE
The quantities moment of force and energy are, by convention, not regarded as being of the same
kind, although they have the same dimension. Similarly for heat capacity and entropy, as well as
for relative permeability and mass fraction.
Note that there is no need for an additional QuantityKind stereotype:
From IVoC:
numerical quantity value
numerical value of a quantity
numerical value
number in the expression of a quantity value, other than any number serving as the
reference
NOTES
1 — For quantities of dimension one, the reference is a measurement unit which is a number and this is not considered as a part of the numerical quantity value.
EXAMPLE In an amount-of-substance fraction equal to 3 mmol/mol, the numerical value is 3 and the unit is mmol/mol. The unit mmol/mol is numerically equal to 0.001, but this number 0.001 is not part of the numerical quantity value that remains 3.
2 — For quantities that have a measurement unit (i.e. those other than ordinal quantities), the numerical value {Q} of a quantity Q is frequently denoted {Q} = Q/[Q], where [Q] denotes the measurement unit.
EXAMPLE For a mass value of 5 kg, the numerical value in kilograms is {m} = (5 kg)/kg = 5.
From IVoM3:
1.26
ordinal quantity
quantity, defined by a conventional measurement procedure, for which a total ordering relation, according to magnitude, with other quantities of the same kind is defined, but for which no algebraic operations among those quantities are definedEXAMPLES
a) Rockwell C hardness
b) octane number for petroleum fuel
c) earthquake strength on the Richter scaleNOTES
1 — Ordinal quantities can enter into empirical relations only and have neither measurement units nor quantity dimension.
2 — Ordinal quantities are arranged according to ordinal quantity scales (see 1.28).
From IVoM:
quantity value
value of a quantity
value
number and reference together expressing magnitude of a quantityEXAMPLES
a) Length of a given rod 5.34 m or 534 cm b) Mass of a given body 0.152 kg or 152 g c) Curvature of a given arc 112 m−1 d) Celsius temperature of a given sample −5 °C e) Electric impedance of a given circuit element at a given frequency, where j is the imaginary unit (7 + 3j) Ω f) Refractive index of a given sample of glass 1.32 g) Rockwell C hardness of a given sample (150 kg load) HRC(150 kg) 43.5 h) Mass fraction of cadmium in a given sample of copper 3 μg/kg or 3 × 10−9 i) Molality of Pb2+ in a given sample of water 1.76 mmol/kg j) Force acting on a given particle (−31.5; 43.2; 17.0) N
NOTES
1 — A quantity value either is
• a product of a number and a measurement unit (the unit one is generally not indicated for
quantities of dimension one), or
• a number and a reference to a measurement procedure, or
• a number and a reference material.2 — The number can be real or complex.
3 — A quantity value can be presented in more than one way.
4 — In the case of vector or tensor quantities, each component has a value as defined above.
Note that force is a vector, and that electric imedance is complex.
Note that a base Quantity is always its own quantity kind.
Every base Quantity in a given system has a matching Dimension in that system.
Parsing of VIM general and particular quantity examples into proposed metamodel.
Visit also:
From IVoM:
ratio of two measurement units for quantities of the same kind
EXAMPLE
km/m = 1000 and thus 1 km = 1000 m
NOTE – The measurement units may belong to different systems of units.
EXAMPLES
a) h/s = 3600 and thus 1 h = 3600 s;
(km/h)/(m/s) = (1/3.6) and thus 1 km/h = (1/3.6) m/s.
b) (km/h)/(m/s) = (1/3.6) and thus 1 km/h = (1/3.6) m/s.
From IVoM3:
1.29
nominal property
property of a phenomenon, body, or substance, that can be identical or not to a comparable property, but cannot be ordered with it according to magnitudeEXAMPLES
a) sex of a human being
b) colour of a paint sample
c) colour of a spot test in chemistry
d) ISO two-letter country code
e) sequence of amino acids in a polypeptide
From IVoM3:
1.25
numerical value equation
numerical quantity value equation
mathematical relationship relating numerical quantity values, based on a given quantity
equation and specified measurement unitsEXAMPLES
a) For the quantities in example a) in item 1.22, {Q1} = ζ {Q2} {Q3} where {Q1}, {Q2}, and {Q3} denote the numerical values of Q1, Q2, and Q3, respectively, provided that they are expressed in base units or coherent derived units.b) In the quantity equation for kinetic energy of a particle, T = (1/2) mv2, if m = 2 kg and v = 3 m/s, then {T} = (1/2) × 2 × 32 is a numerical value equation giving the numerical value 9 of T in joules.
From IVoM3:
1.28 (1.22)
ordinal quantity scale
ordinal scale
conventional reference scale
quantity scale, defined by formal agreement, on which only comparison of magnitude
applies
EXAMPLES
a) Rockwell C hardness scale
b) scale of octane numbers for petroleum fuel
NOTES
1 – An ordinal quantity scale may be established by measurements according to a measurement
procedure.
2 – Ordinal quantities are ordered on ordinal quantity scales (see 1.26).
From IVoM:
set of mathematical rules and operations applied to quantities other than ordinal quantities
NOTE — In quantity calculus, quantity equations are rather preferred to numerical value equations
because quantity equations are independent of the choice of measurement units, whereas numerical
value equations are not (see ISO 31-0:1992, subclause 2.2.2).
From IVoM:
mathematical relationship between quantities in a given system of quantities, independent
of measurement units
EXAMPLES
- a) Q 1 = ζ Q 2 Q 3 where Q 1 , Q 2 , and Q 3 denote different quantities, and where ζ is a numerical factor.
- b) T = (1/2) mv 2 , where T is the kinetic energy and v the speed of a specified particle of mass m.
- c) n = I·t / F where n is the amount of substance of a univalent component, I is the electric current and t the duration of the electrolysis, and where F is the Faraday constant.
From IVoM3:
1.27
quantity scale
measurement scale
ordered set of values of quantities of a given kind used in ranking, according to magnitude,
quantities of the same kindEXAMPLES
a) Celsius temperature scale
b) time scale
c) Rockwell C hardness scale
From IVoM:
unit equation
mathematical relationship relating base units, coherent derived units or other measurement units
EXAMPLES
a) For the quantities in example a) of item 1.22, [Q1] = [Q2] [Q3] where [Q1], [Q2], and [Q3] denote the measurement units of Q1, Q2, and Q3, respectively, provided that these measurement units are in a coherent system of units.
b) J := kg m2/s2, where J, kg, m, and s are the symbols for the joule, kilogram, metre, and second, respectively.
c) 1 km/h = (1/3.6) m/s.
The DimensionedType concept is crucial to this metamodel:
It is the abstract base type for three special kinds of types, each with a matching property:
Specialises *ValueSlot mechanism to leverage *ValueProperty and *QuantityValue.
Name suggests "animation frames". Capture value state of evolving block.
Encapsulates a symbolic quantity:
Encapsulates (improves on) prevailing use of a SysML ValueType to directly indicate and assign a unit symbol to communicate direct engineering data.
Visit also:
(Note there is already an MD SysML ValueProperty.)
The *ValueProperty is adapted from the ValueProperty:
(Note that there is already a ValueType stereotype in SysML1.0.)
The *ValueType is integrated into the *DimensionedType strategy, and is reserved for use as a carrier of *Unit.
From http://physics.nist.gov/cuu/Units/introduction.html:
Some useful definitions
A quantity in the general sense is a property ascribed to phenomena, bodies, or substances that
can be quantified for, or assigned to, a particular phenomenon,
body, or substance. Examples are mass and electric charge.A quantity in the particular sense is a quantifiable or assignable property ascribed to a particular
phenomenon, body, or substance. Examples are the mass of the moon
and the electric charge of the proton.A physical quantity is a quantity that can be used in the mathematical equations
of science and technology.A unit is a particular physical quantity, defined and adopted by convention,
with which other particular quantities of the same kind are compared
to express their value.
The concept mass is the <<Quantity>> in the general sense (and will have <<dimension>> Mass), and then the <<ValueProperty>> mass : Mass of the Moon <<Block>> is typed by a Mass <<ValueType>> that represents the Quantity mass with a chosen <<Unit>>.
Visit also:
Similiarly, electric charge is a <<Quantity>> in the general sense, and then q : ElectricCharge is a <<ValueProperty>> of the Proton <<Block>> and is typed by an ElectricCharge <<ValueType>> that represents the <<Quantity>> electric charge with a chosen unit.
Follows on from last night's SysML RTF telecon 09 Apr 2008. Elaborates on an original, quite super idea from Rick Steiner for indicating two types of values (class-level and context-specific) in one IBD compartment.
At first the idea was to use the whole values compartment for EITHER context-specific OR class-level values, with an indicator to show which mode the compartment is in. Then I suggested instead using an indicator per-property, so that only those values which have been explicitly assigned in the values context are set, with the class-level values "showing through" to the part with an indicator. We discussed an appropriate notation to indicate which values are specific to a part and which are "inherited" from the underlying type.
Am using a BDD in the diagram below to mimic an IBD so can illustrate this "translucency" effect, (which Rick compared with "inheriting" some values while redefining others). The part:Type shown below would be a part Property in an IBD in a particular value context.
If no value is given for a value property v1 for part:Type typed here by the block Type then the primitive "static (class-level)" Property.defaultValue (in this case 2.1) shows through. To indicate that the value is in this sense "static" it is underlined (in the values compartment of the part in an IBD).
If a value is explicitly set for another value property v2
(only) for part:Type typed here by the block Type then that particular value (in this case v2=3.2) is shown in the values compartment for the part, and it is not underlined, since "instance-like". Note that in this case the context specific value (v2=3.2) overrides the "static" Property.defaultValue 0.5 (which v2 had in the Type).
This would solve a heap of implementation problems and would help resolve confusion about the meaning of a values comparment on a part in an IBD. As an educator I really like this underline notation and hybrid compartment idea. It blends very well with other conventions for UML and for programming.
On p.46 under 8.3.2.4 DistributedProperty it is stated that: '[1] The DistributedProperty stereotype
may be applied only to properties of classifiers stereotyped by Block or ValueType.'
It is not clear what SysML compartment a DistributedProperty should be sorted into.
If it mayn only type a value property then it will be sorted into values. See related issue.
Issue example:
'For example, I could use communicate in morse code over a hydraulic line.
This would be modeled normally as a standard (service) port, except for the medium.'
Handled here using nested ports in MD SysML.
One could optionally conjugate one of the standard ports to emphasise asymmetric connections.
One could optionally conjugate one of the standard ports, to emphasise asymmetric "connections".
There are genuine issues concerning the inability to type an ItemFlow.itemProperty[0..1] by a Signal (see metamodel analysis bottom).
The diagram below shows three different usages of the ItemFlow label on a Connector:
Diagram below shows three different usages of ItemFlow label:
In MD SysML you can callout a default value of FlowPort into a Note.
This can be combined with the initial values (SysML1.0 defaultValue) compartment in a higher context
to display both a class-level and property-specific initial values for a flowport typed by a ValueType.
I suggest use 'put' as shown:
Visit also:
Experience modelling a wide range of heterogeneous systems has proven that the representation of logical channels as information flows across connections between flowports nested within standard ports is a very useful idiom. It would help if this possibility is explicitly stated in both 9.3.2.3 FlowPort, 9.3.2.7 Standard Port, and illustrated in specification figures.
Example: a software application acquires encoded signals representing physical positon and rotation via a high-level software API to a low-level A./D card in a computer. The software application is connected to an A/D module subject to a contract represented by an Interface provided by a standard port (subject ot a protocol). The flow of information corresponding to logical acquired channels can be well represented as flowports nested within the standard port of the A/D module.This example is illustrated in detail at:
Visit also:
Instead of decomposition with ParticipantProperty.
Compare upper image with SysML 1.0 Figure 8.14 - Two views of Water Delivery connector within House block:
Compare lower image with: Figure 8.12 Water Delivery association block:
Combines upper and lower diagrams from SysML1.0 example:
Figure 8.14 - Two views of Water Delivery connector within House block
SysML1.0 10.3.2.1 ConstraintBlock:
'All properties of a constraint block are constraint parameters, with the exception of constraint properties that hold internally nested usages of other constraint blocks.'
SysML1.0 8.3.2.2 Block
'. SysML establishes three standard classifications of properties belonging to a SysML Block. A property typed by a SysML Block that has composite aggregation is classifed as a part property. A property typed by a Block that does not have composite aggregation is classified as a reference property. A property typed by a UML DataType or SysML ValueType is classified as a value property.'
Some examples of the MD SysML ConstraintParameter (including some provocative ones outside SysML).
Illustration of the problem statement only. In MD SysML a Port usually can't be displayed on a constraint property anyway unless stereotyped as a ConstraintParameter.
(This analysis trail requires unusually large quotes snippets from the UML2.1.2 and SysML specs than usually used on this eSchool.)
From SysML1.0: 15.3.2.1 Allocate(from Allocations):
Description
Allocate is a dependency based on UML::abstraction. It is a mechanism for associating elements of different types, or in different hierarchies, at an abstract level. Allocate is used for assessing user model consistency and directing future design activity. It is expected that an «allocate» relationship between model elements is a precursor to a more concrete relationship between the elements, their properties, operations, attributes, or sub-classes.
Allocate is a stereotype of a UML4SysML::Abstraction which is permissible between any two NamedElements. It is depicted as a dependency with the “allocate” keyword attached to it.
Allocate is directional in that one NamedElement is the “from” end (no arrow), and at least one NamedElement is the “to” end (the end with the arrow).
..
Constraints
If subtypes of the «allocate» dependency are introduced to represent more specialized forms of allocation, then they should have constraints applied to supplier and client as appropriate.'
Although the swapping of client and supplier has been correctly identified in the proposed Revised Text, however it is implied that a single allocation relationship can have more than one supplier, which would seems to contradict indications elsewhere that there is only 1 'element at the opposite end of any «allocate» dependency'.
Suggest amendment to the proposed Revised Text:
Allocation to more than one supplier requires more than one «allocate» Dependency.
The example shows an Activity This (which types an Action this:This from a lower level of a decomposition of a ComplexActivity) allocated to a Block.
From SysML1.0: 15.3.2.2 Allocated(from Allocations):
'Description
«allocated» is a stereotype that applies to any NamedElement that has at least one allocation relationship with another NamedElement. «allocated» elements may be designated by either the /from or /to end of an «allocate» dependency.
The «allocated» stereotype provides a mechanism for a particular model element to conveniently retain and display the element at the opposite end of any «allocate» dependency. This stereotype provides for the properties “allocatedFrom”and “allocatedTo,” which are derived from the «allocate» dependency.'
Please note that:
There are no '/from' or '/to' attributes, only '/allocatedFrom' and '/allocatedTo'
There are no '/from' or '/to' attributes, only '/allocatedFrom' and '/allocatedTo' .
SysML1.0:
'The «allocated» stereotype provides a mechanism for a particular model element to conveniently retain and display the element at the opposite end of any «allocate» dependency'
Please note that this implies that there is only 1 ("the") 'element at the opposite end of any «allocate» dependency'.
Visit also:
Suggest the proposed resolution should be amended to:
The element types and names of the set of elements that are clients (from) of possibly many «allocate» relationships whose shared supplier is extended by an instance of this stereotype.
Please note that:
Suggest amendment of the proposed revised text:
This property is the union of all suppliers to which this instance is the client, i.e.,
there may be more than one /allocatedTo named element per allocated model element.
The /allocatedTo elements are not ncessarily properties (nor are there multiple stereotype-level properties). See 11501.
Element < DirectedRelationship < Dependency < Abstraction < Allocation
'Description
A dependency is a relationship that signifies that a single or a set of model elements requires other model elements for their specification or implementation. This means that the complete semantics of the depending elements is either semantically or structurally dependent on the definition of the supplier element(s).
..Associations
client: NamedElement [1..*]
The element(s) dependent on the supplier element(s). In some cases (such as a Trace Abstraction) the assignment of direction (that is, the designation of the client element) is at the discretion of the modeler, and is a stipulation. Subset DirectedRelationship::source.
supplier: NamedElement [1..*]
The element(s) independent of the client element(s), in the same respect and the same dependency relationship. In some directed dependency relationships (such as Refinement Abstractions), a common convention in the domain of class-based OO software is to put the more abstract element in this role. Despite this convention, users of UML may stipulate a sense of dependency suitable for their domain, which makes a more abstract element dependent on that which is more specific. Subsets DirectedRelationship::target.
..Semantics
A dependency signifies a supplier/client relationship between model elements where the modification of the supplier may impact the client model elements. A dependency implies the semantics of the client is not complete without the supplier. ..'
Please note that:
A good rule-of -thumb for Dependency is that the supplier must
precede - in the development or modelling process - the client. A
typical example is when resources are supplied to a client by an
element that is imported from a read-only module or library; clearly
the supplier, the one from the library, must exist first (or at least
be presumed to exist already).
Confusion for SysML allocations used to decompose a single element into many - or to refine an element - may arise because there is a sense in which the element that came first - the one that is to be decomposed or otherwise refined - "requires other model elements" for its engineering specification.
Let us assume that the Project already exists. One may then then «allocate» the HumanResource (the Dependency.client = DirectedRelationship.source) to the Project
(the Dependency.supplier = DirectedRelationship.target).
Add a constraint:
[3] A property to which the ConstraintProperty stereotype is applied must have AggregationKind 'composite'.
SysML1.0, 10.3.2.2 ConstraintProperty:
'A constraint property is a property of any block that is typed by a constraint block.
..
[2] The ConstraintProperty stereotype must be applied to any property of a SysML Block that is typed by a ConstraintBlock.'
These may both misinterpreted as applying to "any block that is typed by a constraint block" and "a SysML Block that is typed by a ConstraintBlock" rather than a constraint property typed by a constraint block. Rewrite so that the type condition clearly applies to the owned constraint property, not the owning block, thus:
'A constraint property is a property that is typed by a constraint block and is owned by a block.
.
[2] The ConstraintProperty stereotype must be applied to any property that is typed by a ConstraintBlock.'
(Note that the first constraint already makes it clear that a constraint property is owned by a SysML Block: [1] A property to which the ConstraintProperty stereotype is applied must be owned by a SysML Block.)
SysML1.0, 10.3.1.2 Parametric Diagram:
'Small square box notation for an internal property
A value property may optionally be shown by a small square box, with the name and other specifications appearing in a text string close to the square box. The text string for such a value property may include all the elements that could ordinarily be used to declare the property in a compartment of a block, including an optional default value. The box may optionally be shown with one edge flush with the boundary of a containing property. Placement of property boxes is purely for notational convenience, for example to enable simpler connection from the outside, and has no semantic significance. If a connector is drawn to a region where an internal property box is shown flush with the boundary of a containing property, the connector is always assumed to connect to the innermost property.'
It is not clear whether 'value property' here is meant to refer to a constraint parameter. Also, the term 'internal property' does not exclude, for example, nested constraints, leaving open the possibility of drawing nested constraint properties using square box notation, which is surely not intended.
The following suggests that only constraint parameters - not value properties - are intended:
SysML1.0, , 10.3.2.1 ConstraintBlock:
'[1] A constraint block may not own any structural or behavioral elements beyond the properties that define its constraint parameters, constraint properties that hold internal usages of constraint blocks, binding connectors between its internally nested constraint parameters, constraint expressions that define an interpretation for the constraint block, and general-purpose model management and crosscutting elements.'
Rewrite SysML1.0, 10.3.1.2 Parametric Diagram, replacing all references to 'value property' and 'internal property' with 'constraint parameter':
'Small square box notation for a constraint parameter
A constraint parameter may optionally be shown by a small square box, with the name and other specifications appearing in a text string close to the square box. The text string for such a constraint parameter may include all the elements that could ordinarily be used to declare the property in a compartment of a block, including an optional default value. The box may optionally be shown with one edge flush with the boundary of a containing property. Placement of constraint parameter boxes is purely for notational convenience, for example to enable simpler connection from the outside, and has no semantic significance. If a connector is drawn to a region where a constraint parameter box is shown flush with the boundary of a containing property, the connector is always assumed to connect to the constraint parameter.'
SysML1.0, 10 Constraint Blocks:
'A constraint block is defined by a keyword of «constraint» applied to a block definition. The properties of this block define the parameters of the constraint.'
The above does not make clear that parameters are properties that can be typed by a ValueType (yet are not value properties), and it does not exclude nested contraints, which are properties typed by a <<ConstraintBlock>> (although other sentences elsewhere in the specification do make that clearer). Also, it is not clear whether a constraint parameter can be typed by a block (although there are no examples of such in the figures).
Rewrite to specify what constraint parameters are:
'A constraint block is defined by a keyword of «constraint» applied to a block definition. The properties of this block typed by a ValueType, Unit, or DataType define the parameters of the constraint.'
SysML1.0, 10.3.2.1 ConstraintBlock:
'.. A constraint block typically defines one or more constraint parameters, which are bound to properties of other blocks in a surrounding context where the constraint is used.'
Rewrite to explain what constraint parameters are:
'.. A constraint block typically defines one or more constraint parameters, which are bound to properties of other blocks in a surrounding context where the constraint is used. Constraint parameters are properties of a Constraint Block that are typed by either a ValueType, a Unit, or a DataType.'
(NB: the resolutions suggested here depends on the unit, value, dimension metamodel being changed to admit the application of Unit as a type.)
This matter could be greatly simplified by including a ConstraintParameter stereotype as a point of documentation and specification.
Compare with Figure B.26 which shows 'delta-t::GlobalTime' with AggregationKind 'none' within EconomyContext.
SysML1.0, 11.3.2.8 Rate:
'The «rate» stereotype has a rate property of type ValueSpecification.'
However Figure 11.8 shows 'rate' with type InstanceSpecification.
(Also, the 'rate' property should be clearly defined as an Attribute of <<rate>> in 11.3.2.8 Rate.)
From SysML1.0: Figure 11.10 - Continuous system example 1:
_0.png)
It is difficult and/or inconsistent to show the {stream} indication of the Action ':Driving' without an output Pin corresponding to an underlying output Parameter of Behavior 'Driving' satisfying the 'isStream=true' condition.
Indeed Table 11.1 - Graphical nodes included in activity diagrams shows only Actions with Pins and the {stream} indicator for UML4SysML::Parameter.isStream
The following image shows Figure 11.10 adapted to use Pins throughout (except for ControlValue input to the controller Action 'Monitor Traction'):
_0.png)
The <<controlOperator>> action ':Enable on Brake Pressure > 0' does not show an output Pin corresponding to an output Parameter of type ControlValue that must exist for the Behavior Enable on Brake Pressure > 0. From SysML1.0:
'11.3.2.2 ControlOperator
,,
Constraints
[1] When the «controlOperator» stereotype is applied, the behavior or operation must have at least one parameter typed by ControlValue. If the stereotype is not applied, the behavior or operation may not have any parameter typed by ControlValue.'
It would make sense (and be clearer) if the «controlOperator» had an output Pin typed by ControlValue.
Below we see the diagram adapted to use an output Pin typed by ControlValue.
Here we see (in advance of my analysis of the individual issues) my suggestion for an "improved" Figure 11.10, which uses typed Pins wherever possible, a strategy that solves many of the specification issues and MD SysML 15 tool issues. Note also the use of clearly typed anonymous CallBehaviorActions.
_0.png)
Please examine this detailed analysis of the many issues concerning Figure 11.10. Issues are extracted from this analysis and reported individually as shown in the following pages, along with an "improved" version of Figure 11.10.

For an even more detailed discussion of issues with Figure 11.10 and recommendations for MD SysML 15 please visit the Hybrid SUV sample tutorial:
Figure 11.10 - Continuous system example 1 in MD_SysML_15
SysML 1.0, 11.3.2.3 Discrete:
[1] The «discrete» and «continuous» stereotypes cannot be applied to the same element at the same time.
However Table11.1 and Table 11.2 Rate examples appear to show both «discrete» and «continuous» applied to the same element at the same time, and Table 11.1 appears to show overloaded tagged values {rate=constant} and {rate=distribution}.
Resolution: change Table11.1 and Table 11.2 to show dedicated examples of «discrete» and «continuous» stereotype usage.
[Image upload target only]
I do not recommend using the Behavior name EVER without a colon, as can be confused with action name.
Prefer: