Featured Post

Applying Email Validation to a JavaFX TextField Using Binding

This example uses the same controller as in a previous post but adds a use case to support email validation.  A Commons Validator object is ...

Sunday, March 17, 2013

Revised SysML BDD and IBD of Bass Guitar Effects

Thanks to some great contributions from Stephan Roth, I've revised the SysML BDD and IBD I posted in two previous posts.  All diagrams were created using Sparx Systems EA 10.  The new BDD version uses aggregation and EA role names are used to ease the transition into the IBD.  The IBD features reference properties (because of the aggregation).

This has turned into the third post in a series.  The theme of the series is to model some musical instrument equipment ("Bass Guitar Effects") using SysML.  A Block Definition Diagram (BDD) and an Internal Block Diagram (IBD) were created.  Originally, I had posted an all-ecompassing BDD that blurred the roles of the BDD and IBD.  Several recommendations were made
  1. Move internal details such as inter-part connections from the BDD to the IBD
  2. Use aggregation (open diamond) rather than composition (black diamond)
  3. Use properties rather than object instances.
These are links to the two other posts.

A SysML BDD of Bass Guitar Effects
A SysML IBD of Bass Guitar Effects


To make things more tangible, look at the following picture.

Bass Guitar Effects
There are six pieces of musical equipment velcro-ed onto a metal frame.  There is some additional equipment bolted to the bottom of the frame.

This Block Definition Diagram shows what makes up "Carl's Bass Effects".  Because none of the equipment is affixed permanently, the blocks are modeled using aggregation rather than composition.  Composition might be warranted if there were more coupling, say if I opened the chassis of each device and soldered the circuits together.

BDD Showing an Aggregation of Bass Guitar Effects
In Sparx Systems EA, I dragged 10 Blocks onto the canvas of a BDD.  I connected each one using the aggregation connector.  I also went into each Block's properties dialog and switched Source->Destination to Destination->Source to adjust the navigability.  Lastly, I gave each target role a name.  This will be used on the IBD.

Note: I selected Ctrl-Shift-Y and turned off the display of the References compartment since it's redundant.


To create the IBD, I right-clicked on "Carl's Bass Effects" and selected New Diagram.  In EA Project Explorer terms, the diagram is a child element of the Block.  See the green icon.

EA Project Explorer Showing and IBD in a Block
There are four types of properties in a SysML Block: part of value, reference, constraint, and port.  Because of the aggregation in the BDD, the properties displayed in the Project Explorer are references properties.  These properties are represented using a dashed-outline rectangle.  If composition were used, the properties would be part properties and represented with a solid-outline rectangle.

To start the IDB, I select all of the properties under "<block> Carl's Bass Effects" and drag to the canvas.

Adding Reference Properties to an IDB
The part name -- the role name in EA terms -- is displayed be default.  You can use Ctrl-Shift-Y to include the full name.

Show Full Name: Element Type Checkbox
After arranging the elements, I add ports and connectors.  The resulting IDB is this

IDB Showing Reference Properties, Ports, and Connectors
As mentioned in a previous post, the double frame does not show up in a PDF export.  If you don't attach a port to the owning block ("wall"), then the second frame isn't needed.

EA's ability to nest elements provided the mechanism by which this IDB was created.  The nesting gives block instances context, even for shared items like the ones in this example.

1 comment: