How to model the Core Model of STEPLIB

Warning

../../_images/construction.png

This page is under construction.

To contribute or participate contact support@boost-lab.net

Overview

../../_images/STEParchitectureCore.png

Figure 87 The STEP Architecture

This page uses a simple example to describe how to model the the Domain Model using SysML in MagicDraw 18.4.

Todo

text for this section

Step by Step guide

Todo

the step-by-step for this section

Preparation

Important

Prerequists

This assumes that the environment is already set up. See Getting Started - MagicDraw for more details

Step 1 (to do)

Video

Todo

the step-by-step for this section

Add Validation Constraints

The video shows creating a validation constraint on a template. The example is using the Domain Model but it is equally applicable to the other layers.

Todo

display of constraints on BDD - only the name

../../_images/ht_vc_showname.png

Figure 88 set “Constraint Text mode” to “Name”

Todo

text of this section

Add descrition - it is suggested that this is the same as the “Validation Rule - Error Message”. If more description is needed see How to format descriptions for details

Tip

Add the constraint from the specification window (rather than from the containment tree) as this will automatically set the “Constrained Element” property

Tip

Some Examples

  • Check that one property value does not equal another property value (Parent[1] Child[1]):

    self.Parent <> self.Child
    
  • Check for simple circularities in single elements (InheritsFrom[0..1]):

    self.InheritsFrom <> self
    
  • Check for simple circularities in a collection (InOrganization[0..*]):

    self.InOrganization->excludes(self)
    
  • Check that a property value is not also in a property collection (Element[0..*] BreakdownOf[1]):

    self.Element->forAll(e | self.BreakdownOf <> e)
    
    [Note: syntax error if try to use self.Element->excludes(self.BreakdownOf)]
    
  • Check that two collections of property values are mutually exclusive (Manages[0..*] Inputs[0..*]):

    self.Manages->forAll(m | self.Inputs->forAll(i | i  <> m))
    

Tip

If the constraint is an “un-computable constraints that cannot, or cannot reasonably, be written in OCL” then the Specification Language should be set to “English”. The constaint is then known as an “Informal Proposition” and will appear as such in the documentation.

For details on validating against the constraints see How to model constraints for use in validation

Adding Query-like services

Todo

text of this section

../../_images/construction.png

Current thinking (To Be Agreed) is that the “query-like” services are modelled as operations on the template.

These should then have constraints defined using OCL

C-R-U-D-like services are covered in Core Model Services.

Section author: Judith Crockford (AP243)