Define the SysML profile as referencing UML and replace the UML4SysML subset with OCL constraints
-
Key: SYSML13-12
-
Legacy Issue Number: 15876
-
Status: closed
-
Source: NASA ( Dr. Nicolas F. Rouquette)
-
Summary:
Today, during the SysML1.3 RTF, we discussed simplifying the definition of the SysML profile by referencing the UML metamodel directly instead of the UML4SysML construction and replace the UML4SysML construction with OCL constraints about the scope of UML that defines strict conformance to SysML in the context of the UML4SysML subset. The practical advantages include:
- any UML tool can be used as the basis for implementing the SysML profile
- the SysML profile can be easily combined with other profiles that extend UML; e.g., SoaML, etc... (i.e., this could simplify the construction of UPDM)
- if users need to use more than the UML4SysML subset, they could simply disable the OCL constraints for strict UML4SysML conformance
-
Reported: SysML 1.2 — Mon, 6 Dec 2010 05:00 GMT
-
Disposition: Resolved — SysML 1.3
-
Disposition Summary:
Prior to UML2.4.1, the OMG never published the merged UML metamodel as a
normative machine-readable artifact nor specified compliance to UML in terms of
it. From an OMG Specification Management point of view (i.e., OMG’s SMSC
policy), it makes sense to require that the only dependencies a published
normative machine-readable artifact might have should be to other published
normative machine-readable artifacts.
For SysML1.2, the published normative machine-readable SysML1.2 profile
depended only on the published normative machine-readable UML4SysML
merged metamodel constructed from the published normative machine-readable
artifacts for UML2.3’s Infrastructure & Superstructure. Because the UML2.3
StandardProfileL2 was never published, this also meant that the SysML1.2
profile had to duplicate the definition of UML2.3’s StandardProfileL2::Trace
stereotype in the SysML profile, i.e., SysML::Trace.
The 2.4.1 series of UML, MOF and XMI made significant changes to the OMG
metamodel/profile architecture. In particular, the merged UML2.4.1 metamodel
and the UML2.4.1 StandardProfileL2 are both published as normative machinereadable
artifacts, which simplifies greatly problems of model interchange across UML 2.4.1 compliant tools. By aligning the SysML1.3 profile as a simpler
extension of the published, normative UML 2.4.1 metamodel rather than a
complicated extension of a partial merge of the UML Superstructure, SysML1.3
can also benefit from improvements in model interchange for UML 2.4.1
compliant modeling tools.
In SysML1.2, the UML4SysML subset served two distinct purposes:
1. Specifying which UML elements can be used in compliance with the
limited scope of the SysML language.
2. Constructing and publishing SysML in terms of a normative published
machine-readable artifacts, i.e., the UML4SysML metamodel.
The second purpose, constructing and publishing SysML, resulted in a significant
implementation complexity and caused significant problems for model
interchange testing. The UML4SysML metamodel represents a significant
disincentive for UML tool vendors to build a lesser capability metamodel, i.e.,
UML4SysML, just to provide support for the SysML profile. In fact, some UML
tool vendors used UML instead of UML4SysML to implement support for the
SysML profile. The publication of a normative merged metamodel in UML2.4.1
and the multi-vendor efforts in the Model Interchange Working Group (MIWG)
provide compelling reasons to do away with the special-purpose construction and
publication of UML4SysML as a merged metamodel just for defining SysML
properly.
The first purpose, specifying the scope of the SysML language as an extension
of a limited subset of UML, was perfectly within the spirit of the metamodel
architecture from UML2.0 until UML2.3 where the UML 2 Infrastructure &
Superstructure provided the basis for package-level reuse in the family of UML
languages. Since there was no published, normative, merged metamodel for
UML 2, it was perfectly legitimate and recommended to use package merge
techniques to construct special-purpose languages like the UML4SysML subset
for defining domain-specific extensions like SysML. With the publication of a
normative, merged metamodel in UML2.4.1 and the change in metamodel
architecture where UML2.4.1 is defined as an instance of itself, it makes sense to
define the SysML 1.3 profile as an extension of the UML 2.4.1 merged
metamodel. Unfortunately, this creates a complication for specifying the limited
reuse of UML in SysML.
According to UML, a Profile must reference the metamodel it extends via a
PackageImport relationship whose target is the referenced metamodel (see
section 18.3.7 in UML2.4.1 Superstructure). Consequently, any profile
referencing the merged UML2.4.1 metamodel potentially extends every
metaclass defined in UML2.4.1. SysML 1.3 effectively extends only a subset of
UML2.4.1 metaclasses. Whereas this subset was defined via a package merge
construction in SysML 1.2 for each SysML compliance level, each compliance
level subset is defined in SysML 1.3 via constraints specifying that there should not be any instances of metaclasses outside the scope of that subset in a
compliant model. For example, UML::Component is outside the UML4SysML
subset.
The corresponding compliance constraint in OCL for excluding the use of
UML::Component in a compliant SysML 1.3 model is:
Component.allInstances()->isEmpty()
For SysML1.3, the UML4SysML subset includes 213 of the 242 metaclasses in
UML2.4.1. The UML4SysML subset is further broken down into the 3 compliance
levels defined for SysML1.2 adjusted to ensure that the required classifier
dependencies for each classifier at a given level are also at that level or below.
All general classifiers and all of the classifiers typing a property with required
multiplicity are considered required classifier dependencies for a given classifier.
Specifying SysML1.3 as a profile referencing the UML2.4.1 metamodel provides
tangible practical benefits:
? Any UML2.4.1-compliant tool can be used as the basis for a compliant
implementation of SysML1.3.
? Model interchange for SysML1.3 reduces to the interchange of UML2.4.1
models with the application of one or more profiles extending UML2.4.1.
? Verifying a UML2.4.1 model with the SysML1.3 profiled applied for a given
level of SysML 1.3 compliance amounts to verifying an OCL constraint or
equivalently a QVT Operational query or QVT Relational pattern on that
model.
As of UML 2.4.1, the specification does not explicitly indicate if it is legal for a
profile (e.g., SysML) to be applied to a package defined within that profile (e.g.,
ModelLibrary in SysML 1.2). This resolution adopts a conservative, pessimistic
interpretation of UML 2.4.1 where the only capabilities that SysML can
normatively depend from UML are those that are explicitly called out in the
specification document. In this particular case, it means that the library of
predefined value types see 8.3.3 in SysML 1.2 cannot be nested within the
SysML profile itself since the UML::DataTypes in that library must have the
SysML::ValueType stereotype applied to them. In SysML 1.3, the predefined
library of such ValueTypes is moved outside of the SysML profile precisely to
avoid relying on undocumented profile semantics (see figures 4.3 and 8.7) . -
Updated: Thu, 28 Feb 2019 14:39 GMT