UPDATE
I received even more feedback about the IBD using object instances rather than properties. Both are legal on an IBD, but object instances are a poorer choice because they don't express the context inherent in a property. The context is the block (ex, "Carl's Bass Effects") and it can be applied to part properties, shared properties, and reference properties.
The corrected IBD is here. I retained the original IBD, but marked it as obsolete in this post.
START ORIGINAL POST
In the previous post, I created a Block Definition Diagram of my bass guitar effects. A reader suggested I push the details of that particular BDD onto an IBD. The revised BDD appears at the bottom of the post; this is the continuation of the effort which introduces another SysML diagram type.
IBD
A SysML Internal Block Diagram is used to show the internal structure of a block. In Sparx Systems EA, an IBD is associated with the block that it is describing. Starting with a block "Carl's Bass Effects" on a BDD, right click and select New Diagram > Internal Block Diagram.
Adding a New Diagram to a Block |
To add blocks to the IBD, drag from the Project Explorer. When prompted about how you'd like the block represented, select "Instance (Object)" so that any ports are displayed with the block. Use "All" for the Structural Elements which includes the Ports.
Select Instance(Object) to Display Ports with the IBD Blocks |
Internal Details Relating Blocks of Bass Effects: Shouldn't Use Object Instances |
Many thanks to Stephan for the suggestion to divide these up.
UPDATE
Instance usage from the spec.
IBD Example from SysML !.3 |
Hi Carl,
ReplyDeletevery important: don't use instances in an ibd! I don't know why EA allows it, but it is definitely wrong.
In your previous blog post, there is a picture of your project explorer, showing the properties underneath your block "Carl's Bass Effects". Those elements should be dropped into the inner diagram frame of the ibd: they must appear as "parts" in this kind of diagram.
The second, inner diagram frame is required to represent the block in which we are looking, and to have a chance to show the external connections as ports on the frame border, connected with inner parts of the system.
Hi Stephan,
DeleteCan you comment on the screenshot I just posted? I have several examples from the SysML spec, PDFs, and books that show what look like instances. The boxes don't use dashed lines as in properties and use the "object : Class" notation.
Hi Carl,
Deleteinstances (objects) are underlined. Parts in an ibd are named like "role : Type", but are NOT underlined.
Those model elements, which appear in an ibd, are virtually the "contact points" of one end of the composition or aggregation relationships in your bdd. For example: if you have a composition between block "Carl's Bass Effects" and block "MarkBass Compressors", you will get a part in your ibd named ": MarkBass Compressors" - an anonymous role of type MarkBass Compressors.
If you name the end of the composition relationship in your bdd, e.g.: "compr", you will get a part named "compr : MarkBass Compressors" in your ibd. That is not an instance, it is a part!
In an ibd of "Carl's Bass Effects", you should use those model elements you will find in your project explorer tree underneath the block "Carl's Bass Effects". Just grab and drop them in your ibd.
Hope that helps.
Regards,
Stephan
Thanks again. I'm writing a third post that's using reference properties instead of out-of-context instances. I'll post a link in a few minutes.
DeletePosted new entry with a new IDB and a revised BDD that names the properties.
Delete