SysML Block Definition Diagram
SysML Block Definition Diagram (BDD) is a type of diagram in the Systems Modeling Language (SysML) that is used to describe the structure and properties of blocks, which are the basic building blocks of SysML models. BDDs provide a way to represent the organization and interconnections of the functional and physical elements in a system, as well as the constraints that govern their behavior. They can be used to model a wide range of systems, from simple mechanical systems to complex software systems. In a BDD, blocks are represented as rectangles, and the relationships between blocks are represented using various types of connectors, such as associations, generalizations, and allocations.
Block Definition Diagram Elements
The elements of a SysML Block Definition Diagram include Blocks, Interface Blocks, Constraint Blocks, Stakeholders, Value Types, Units, Quantity Kinds, Flow Properties, Flow Ports, Item Flows, Reference Associations, Part Associations, Shared Associations, Generalizations, and Allocations. Each of these elements plays an important role in describing the structure of a system, and in this section, we will discuss each element in detail and provide examples of how to use them in a SysML Block Definition Diagram.
A SysML Block is a basic building block that represents a piece of the system. It can have properties, such as attributes and operations, and can be connected to other blocks through various relationships.
An interface block represents a set of operations that a block requires. It can be connected to other blocks through generalization relationships.
A constraint block represents a mathematical rule or equation that defines a constraint on the system. It can have a list of parameters that are used in the rule.
A stakeholder represents a person or organization that has an interest or concern in the system being modeled.
A Value Type is used to represent a specific type of data or information that can be used to define the properties of a block. A value type can be used to define the type of data that can be stored in a property, or used as a parameter in a constraint or operation.
In SysML BDD, Value Type is represented as a rectangle with the name of the value type and the properties Unit and Quantity Kind. The element can also be connected to Quantity Kind, Unit, and Constraint Block (if applicable) elements using appropriate connectors (e.g. Dependency).
For example, let's say we are designing a system for a car manufacturer. In our BDD, we might define a Value Type called "SpeedKmH" which would represent the maximum speed of the car. This value type would have the Unit property set to "km/h" and the Quantity Kind set to "Speed".
Once we have defined the value type, we can then use it to define the properties of a block. For example, we might have a block called "Car" which has a property called "MaximumSpeed" with the type "SpeedKmH". This would indicate that the Car block can store a value for maximum speed, and that value would be interpreted according to the properties defined in the SpeedKmH value type (in this case, it would be measured in km/h).
SysML Unit element represents units of measure. It is used to specify the unit of measurement for a specific property of a block or value type. Each Unit element has the following properties:
- quantityKind: The Quantity Kind element that this unit belongs to.
- symbol: A symbol that represents the unit, such as "m" for meters or "kg" for kilograms.
- definitionURI: A URI that provides more information about the unit.
- description: A brief description of the unit.
The Unit element is used in conjunction with the Quantity Kind element and Value Type element to provide a clear and precise representation of the properties and their units in a SysML model.
For example, in a BDD for a mechanical system, you may have a block representing a pulley that has a property called "diameter" with a value of 5 and a unit of "cm". In this case, the Unit element would have a symbol of "cm" and a Quantity Kind element of "length".
Another example, you may have a block representing a Battery that has a property called "Capacity" with a value of 80 and a unit of "Ah". In this case, the Unit element would have a symbol of "Ah" and a Quantity Kind element of "Electric Charge".
A Quantity Kind is an element that represents a specific physical quantity, such as length, mass, or time. It is used to define the units of measurement for properties of blocks in the diagram and serves as a way to ensure consistency and accuracy in the modeling process.
The Quantity Kind element has three properties: symbol, definitionURI, and description. The symbol property is a string that represents the shorthand notation for the Quantity Kind, such as "m" for mass or "t" for time. The definitionURI property is a string that points to a location where the definition of the Quantity Kind can be found, such as a web page or document. The description property is a string that provides additional information about the Quantity Kind, such as its definition or usage.
Flow Properties are characteristics of a block that describe the flow of information, materials, or energy through the block. They are represented as rows within the Block element or as separate nested boxes nested within the Block element. Flow Properties can be used to model the inputs and outputs of a block, as well as any internal flows that occur within the block. They can also be used to specify constraints on the flow (such as maximum or minimum values). Flow Properties can be connected to ports using item flows. The parameters of a flow property include name, type, direction, and multiplicity. The unit and quantity kind are defined via the property type.
A Flow Port is a type of port that represents the flow of a specific item across the boundary of a block. A flow port can be connected to other flow ports using the item flows, and it is used to model the flow of physical items, such as materials, energy, or information, between blocks.
A flow port has a direction, which can be in, out, or in-out, and a multiplicity, which specifies the number of the items represented by the port. It also a type (that can include the unit and quantity kind), which define the characteristics of the items that can flow through the port. Flow ports can also have constraints, such as rate or capacity limits, which can be used to model the behavior of the system.
A flow port is represented by a small square on the boundary of a block, with an arrow pointing in the direction of the flow. The name of the flow port, its multiplicity, and other details are displayed on the label next to the port.
For example, a tank block has a flow port "inlet" with direction "in" and multiplicity "1..4", indicating that the tank can have from one to four inlets. The type of the inlet is "fuel" with a quantity kind "flow rate" and a unit of "liter/s".
An item flow represents the movement of individual items, such as parts or materials, through a system. It illustrates the flow of items across a connector or an association between blocks. It is depicted as a connector with a filled arrow (solid triangle) in the middle.
A reference association represents a relationship between two blocks in which one block refers to the other block.
A Part Association (also known as Composition) is a relationship that is used to model the whole-part relationship between two blocks in a SysML Block Definition Diagram (BDD). The composition relationship is used to represent that one block, called the whole, is made up of one or more parts. The parts are also blocks, and they cannot exist independently of the whole. This means that when the whole block is deleted, all of its parts are also deleted.
In a SysML BDD, the composition relationship is represented by a solid diamond shape on the end of the line connecting the whole block to the part block. The diamond shape is located on the side of the whole block, indicating that it is the owner of the relationship. The part block is connected to the diamond shape with a line.
In terms of notation, to define a part association between two blocks, you need to create two blocks and then you can use the part association tool in the diagram editor, to connect the source block to the target block. The source block would be the whole block, and the target block would be the part block.
For example, in an automotive system, Part association would be between a car seat and its parts. In this example, the car seat is the whole, while the parts that make up the car seat, such as the cushion, frame, and cover, are the parts. This relationship shows that the parts belong to and cannot exist without the whole car seat. This relationship represents strong ownership, if the car seat is deleted, the parts will be deleted too. The notation for this relationship would be a filled diamond shape on the end of the car seat block and a line connecting it to the parts blocks.
A Shared Association (also known as Aggregation) is a type of relationship that represents a weaker form of whole-part relationship between two blocks. In an aggregation relationship, a whole block (the aggregate) is composed of one or more parts (the components). However, the components still retain their individual identities and can be used in other aggregates.
In a BDD, the shared association is represented by an empty diamond shape on the end of the line connecting the aggregate and the component blocks. The empty diamond indicates that the relationship is shared and the component can be reused in other aggregates.
An example of an aggregation relationship is a car and its wheels. The car is the aggregate and the wheels are the components. The wheels can be removed and used in another car. This is different from a composition relationship, in which the parts cannot exist independently of the whole.
A generalization represents an inheritance relationship between blocks, in which one block is a more general form of another block.
An Allocate relationship is used to associate elements of different types or at different levels of abstraction. This relationship allows you to model the allocation of one element to another element, such as the allocation of a function or behavior to a specific block, or the allocation of a resource to a specific process. You can use the allocate connector to model a relationship between a block and a constraint block to specify the block is the implementation of the constraint.