A «block» is a modular unit of structure in SysML that is used to define types of physical entities (e.g. system, system component part, external systems, or items that flow through the system), as well as conceptual entities or logical abstractions. The Block Definition Diagram (bdd) is used to define each Block's characteristics in terms of it's structural and behavioural features, and relationships between the Blocks such as hierarchical relationships.
Blocks have optional compartments that describe Block characteristics. A new compartment begins with a horizontal dividing line, followed by the compartment title. An example Block symbol with multiple compartments is shown below. The compartments display other modelling elements that are cross referenced to the Block. Therefore each linked element can be reused in other places in the system architecture.
In SysML if an element has a colon in front of the type name, it is an instance of that type. If it only has a type then it is an abstract element. The Block on the left in the following example represents an abstract entity (because it doesn't have a leading colon), whereas the Blocks in the middle and the right are instances of type Tyre. An element instance is either a named instance (see the node in the middle), or an anonymous element as represented by the node on the right:
The bdd is also used to define other stereotype elements of definition in the system model such as Constraint Blocks, Signals, Value Types, Ports, Interface Blocks and Activities.
An example bdd is:
The symbols available in bdds are:
Symbol | Name | Description |
---|---|---|
Comment | Makes a note anywhere in the diagram. Are always surrounded by * characters. Note: If you do not want Cradle to automatically add an * go to the Graphics Settings section of Project Setup and turn off the Automatically add asterisks to diagram's comment symbols option. | |
Picture | Allows you to choose the location of a GIF or JPEG image to be displayed as a diagram symbol. An image can also be embedded in the other diagram symbols. | |
Note Callout | Multi-purpose symbol which attaches to other symbols in order to show certain attributes of the model element. It can show frames, categories, tags, related items, or simply a piece of standalone text. | |
Tag | A Tag is used to display a tag value contained in a symbol's stereotype frames, or cross reference link attribute, anchored to the selected symbol. | |
Block | A Block is a unit of structure used to define a type of thing (e.g. system, component part, organisation, person or item that flows through the system). The Block symbol is a rectangle that is optionally segmented into a series of compartments. The name compartment appears at the top and is mandatory. The optional compartments are listed in the Control sidebar for this symbol. In the following example the parts, flow properties and operations compartments are displayed: All of these compartments except for the namespace and structure compartments are filled with elements that are cross referenced to the «block» element. The namespace compartment is a mini bdd drawing area. The structure compartment is a mini ibd drawing area. The other compartments are defined based on the following relationships:
The following example shows some of the cross references used to display information in the compartments. Usually you either show the graphical relationship or the compartment but not both. If you drag and drop two elements together in the sidebar a cross reference is created such that when the diagram is opened the linked element is displayed in a compartment. A new path symbol will not be automatically displayed on the diagram. In the following example BlockA.2 was dragged and dropped onto Block A in the sidebar and the «composite» relationship was selected. This action created a parent child relationship in the sidebar and then later when the parts compartment is displayed the linked elements show up in the compartment. If you drag and drop two elements together in the sidebar a cross reference is created so that when the diagram is opened the linked element is displayed in a compartment. A new path symbol will not be automatically displayed on the diagram. There can be other information associated with the cross reference between the «block» element and other elements as described below:
| |
Activity | The primary purpose of showing an Actvity on a bdd is to show activity decomposition using the «composite» relationship. By using the Compartments panel in the Control sidebar you can display the «composite» relationship information in the symbol compartment. If the Activity has calling arguments they are cross referenced to the Activity using the «has parameter» relationship. They can be shown in a compartment or graphically on the bdd. | |
Constraint Block | A Constraint Block encapsulates one or more constraint Boolean expressions enclosed in curly braces and displayed in the constraints compartment. The constraint expression is specified in the CONSTRAINT frame of the «constraint» element. The Tags menu associated with the CONSTRAINT frame, is used to define the expression. The tag expression can have an embedded reference to an actual stereotype element using the @REF_ID directive. The directives creates an item reference cross reference link between the stereotype element containing the tag and the referenced element. To use @REF_ID directive in a tag you need to:
A composition hierarchy of Constraint Blocks can be defined using Composition Associations on a bdd. Each Composition Association results in a Cradle cross reference using the «composite» relationship. These subordinate constraints are also listed in the constraints compartment of the parent constraint. The parameters used in the constraint expression(s) are cross referenced to the constraint element using the «has parameter» relationship and displayed in the parameters compartment. Constraint Blocks are defined in bdds, and then used in Parametric Diagrams (pars). | |
Enumeration | Defines a set of named values called literals that are listed in the attributes compartment. These literals are defined in the specification's special frame named ENUMERATION. For a description on how to specify the contents of this special frame see the Constraint description, and see the @REF description for how to insert an element reference. | |
Full Port | Full Ports are shown as a rectangle (usually a small square) on the boundary of its parent symbol, either a Block or another Port. Select the Block or Port on the diagram then select the Full Port symbol and click on the symbol on the diagram. Alternatively drag an existing Full Port symbol from the sidebar and drop onto the parent symbol. The Full Port element is automatically cross referenced to the owning block with the «has port» relationship: A Full Port has a port name and a port type which is a Block. The port type Block defines valid incoming and/or outgoing items. Full Ports are similar to Parts, in that they are included in the Parts tree of their owning block. In order to specify the port type, you must cross reference an existing Block to be the port type by manually linking it in the sidebar using the «port details» relationship. The Graphics panel has a checkbox that allows the user to hide the port name and type: Full Ports can contain nested ports, whose types (i.e. Block) can also contain ports. A Full Port can also have nested Proxy Ports. The Full Port symbols can be listed in the full ports compartment. | |
Proxy Port | Proxy Ports provide access to/from features of its owning block or its owning block's nested parts to the outside world. Select the Block or Port on the diagram, then select the Proxy Port symbol and click on the symbol on the diagram. Alternatively drag an existing Proxy Port symbol from the sidebar and drop it on to the parent symbol. The Proxy Port element is automatically cross referenced to the owning block with the «has port» relationship. A Proxy Port has a port name and a port type which is an «interfaceBlock». The «interfaceBlock» specifies which items, operations, and signals are accessible to the outside world. The «interfaceBlock» must be cross referenced linked to the «proxyPort» with the «port details» relationship. A conjugate Port provides a way to reuse a single «interfaceBlock» for two Ports. One Port is set to be the conjugate of the other, which indicates that the direction of all flow properties in the «interfaceBlock» is reversed with respect to this port. The ~ symbol can be specified by the user in the specification's special frame named ASPECTS. For a description on how to specify the contents of this special frame see the Constraint description, and see the @Ref description for how to insert an element reference into the tag. The Proxy Port symbols can be listed in the proxy ports compartment. Proxy Ports can be nested. Nested Proxy Ports are always shown on the outside boundary of the Port symbol. | |
Actor | Used to represent the role of a human, an organisation or any external system that participates in the use of a system being investigated. | |
Interface Block | An Interface Block is a kind of entity that defines a set of public features a Proxy Port must support. The «interfaceBlock» is cross referenced to the «proxyPort» using the «port details» relationship. It can have the following compartments: values, flow properties, operations and proxy ports. All of these compartments are filled with elements that are cross referenced to the Interface Block. The cross referenced links are:
There can be other information associated with the cross reference between the «interfaceBlock» element and other elements as described below:
When two Blocks interact, they may exchange similar items but in opposite directions. Rather than creating two separate Interface Blocks for the Proxy Ports on the interacting Blocks, SysML provides a mechanism called a conjugate port to reuse a single Interface Block for both Ports. One Port is set to be the conjugate of the other, which indicates that the direction of behavioural features and flow are reversed with respect to this Port. Proxy Port strings indicate conjugation using a tilde symbol (~). This symbol is specified using a link attribute on the «port details» cross reference. | |
Signal | A Signal defines an asynchronous message that can be sent and received by a Block or Behaviour Diagram. A Signal is cross referenced to one or more attributes/parameters that specify the content of the Signal. The «has parameter» relationship is used to associate the Signal with its parameters. The parameters can then be optionally displayed in the parameters compartment. | |
Value Type | A Value Type element is used to specify Block value properties, Block flow properties, activity I/O parameters, and signal attributes, etc. A Value Type element is a form of data value with these attributes: unit of measurement, kind of quantity, and a value. The attributes are defined in the Value Type specification in the following special frames: QUANTITYKIND, UNITS and VALUE. The attributes are displayed in the attributes compartment. The Tags menu associated with the above three frames is used to specify the content of the frames. See the Constraint symbol above to understand how the tags are created. The tag value can have an embedded reference to an actual stereotype element using the @REF_ID directive. The directive creates an item reference cross reference between the stereotype element containing the tag and the referenced element. See the Constraint symbol above to understand how the @REF_ID directive works. A hierarchy of «valueType» elements can be defined using the Composition Associations on a bdd. Each Composition Association shall result in a Cradle cross reference using the «composite» relationship. These subordinate Value Types can optionally be listed in the value types compartment. | |
Association | An Association between two Blocks means that a connection can exist between instances of those Blocks and they can access each other for some purpose across the connection. A cross reference is created using the «association» relationship. The element at the other end of the association can be displayed in each block's references compartment. In Cradle we have used this association path symbol to show specific dependency links between various elements on a bdd. They are as follows:
| |
Association Block | A combination of an Association and a Block so it can relate two Blocks together but can also have internal structure and other features of its own. Create an Association path between two Blocks and then attach the Association Block to the Association Path. | |
Composite Association | Relates two elements in a whole-part relationship. It is used to describe the decomposition of an element into its constituent parts, one level down. This path symbol can be used to show decomposition of the following stereotypes: «block», «constraint», «activity», «valueType». A cross reference link using the «composite» relationship is created for each composite path symbol. | |
Shared Association | Can be used to describe a logical hierarchy that references elements that are part of other composition hierarchies. It can therefore be used to cut across the tree structure of a composition hierarchy, which allows additional views besides the primary whole-part hierarchy. A cross reference using the «shared» relationship is created for each shared association path symbol. | |
Generalisation | Represents a classification/type hierarchy of Blocks. In a classification hierarchy each classifier is described as being more general or more specialised than another. The relationship between the general classifier and the specialised classifier is called generalisation. This path symbol can be used for the following stereotypes:
A cross reference using the «generalisation» relationship is created for each Generalisation path symbol. In the figure below the sidebar Hide symbol name checkbox in the Control sidebar is checked: | |
Dependency | A Dependency between two modelling elements indicates that one element uses another element. For example a Block is cross referenced to an Activity using the «allocate» relationship. | |
Part | For a bdd, the Part symbol can only be used in a Block structure compartment (i.e. mini ibd). A Part is an instance of a Block. | |
Reference | For a bdd, the reference symbol can only be used in a Block structure compartment (i.e. a mini ibd). A reference is an instance of a Block. See Reference Block in the Part symbol description figure. | |
Connector | For a bdd, the connector path symbol can only be used in a block structure compartment (i.e. mini ibd) to connect Parts, References and Ports. See the Connector Association between Door and Person in the Part symbol description. | |
Item Flow | For a bdd the Item Flow symbol can only be used in a block structure compartment (i.e. mini ibd). It is used to specify the items that flow across a connector in a particular context and the direction of flow. It represents a type of matter, energy, or data that flows between two structures within a system. The Name Symbol dialog used to name the Item Flow symbol has a Referenced Element selection list used to specify the Item Flow object («valueType», «block» or «signal»). See the figure in the Part symbol description above. |
The symbols along with their default stereotypes, referenced elements, stereotype frames and cross reference link attributes are:
Symbol | Name | Default Stereotype | Referenced Element | Stereotype Frames or Cross Reference Link Attributes |
---|---|---|---|---|
Comment | None | None | None | |
Picture | None | None | None | |
Note Callout | None | None | None | |
Tag | None | None | None | |
Block | «block» | None | Link attributes used to specify information are associated with the following relationships:
| |
Activity | «activity» | None | None | |
Constraint Block | «constraint» | None | Constraint frame: CONSTRAINT Tag: constraint @Ref can be used in any tag expression to specify an actual stereotype element in the tag expression. The elements are linked together using the item reference relationship. | |
Enumeration | «enumeration» | None | Enumeration frame: ENUMERATION Tag: enumeration @Ref can be used in any Tag expression to specify an actual stereotype | |
Full Port | «fullPort» | None | None | |
Proxy Port | «proxyPort» | None | Proxy Port frame: ASPECTS Tag: ASPECTS @Ref can be used in any tag expression to specify an actual stereotype element in the tag expression. The elements are linked together using the item reference relationship. | |
Actor | «actor» | None | None | |
Interface Block | «interfaceBlock» | None | Link attributes used to specify information are associated with the following relationships:
| |
Signal | «signal» | None | None | |
Value Type | «valueType» | None | Value Type frames: QuantityKind, UNIT, VALUE Use Tag menu option to set a value in one of the frames. @Ref can be used in any tag expression to specify an actual stereotype element in the tag expression. The elements are linked together using the item reference relationship. | |
Association | None | None | None | |
Association Block | «block» | None | None | |
Composite Association | None | None | None | |
Shared Association | None | None | None | |
Generalisation | None | None | None | |
Dependency | None | None | None | |
Part | «block» | None | None | |
Reference | «block» | None | None | |
Connector | None | None | None | |
Item Flow | «signal» «block» «valueType» | None | None |