Tuesday 20 July 2021

IBM Engineering Rhapsody Tip #99 - Making life easier with some proxy port automation

In this short silent video, I wanted to showcase a couple of helpers I wrote for a client. Basically, if you expect people to follow steps that are repeatable, then why not get the computer to do it? (Steve Jobs: I'd rather than a lazy engineer than a good one). I want my Rhapsody modeling to be like my iPhone, in that it just does stuff I expect without me having to think about it. In this video I show a couple of helpers that I did to speed up modeling for a client who wanted to use Proxy Ports. Essentially, I just roll the things that I would do manually into a profile plugin, and Bob's your uncle. The interesting thing about automation is that the more you do, the more ideas to speed things up pop out. Also, the market for SysML has matured a bit hence there are a few more new users, with less training and patience. I want to make it as easy as pie to model, so that they stick to the fun and creative stuff, and are able to demonstrate business value first time, rather than flop around like busy bee's unable to find a flower. 

Here's the transcript for those that need it:

In this silent video I thought I'd share a snippet of some automation I've been writing to make it easier for a client to model with Proxy Ports in Rhapsody.

The first bit here, is to speed up creation. Since, I know modeler is expected to use proxy ports, I detect the add new for part->part connector, and create proxy ports automatically. My plugin also creates the interface block that will define the contract. The 'opposite port' has the fiddly stuff done, e.g., the conjugated flag is set.

Now we can define what is exchanged via the InterfaceBlock. This is usually done by creating an interaction model, i.e., using sequence diagrams. This is an event (asynchronous signal) from the Operator to the system. I'm using a condition mark here to imply the state of the Block, i.e. I'm inferring states for the subsystems and, importantly, the signals sent between the subsystems via the proxy ports.

In "Analysis" mode, operations/events in sequence diagrams are not created automatically in the browser, meaning that it's easy to change event names. This is standard behavior in Rhapsody. There is a separate "Realization" step that you perform once the sequence is finalized. The final piece of "speed up" automation I wanted to show, is a helper that no-only realizes the events/operations, but also updates the ports and interfaces.

This is similar to a really useful helper provided by the Harmony/SE toolkit, but I've added a user interface. Still some work to do but the aim is to always explain what you're going to do, before doing it, as this helps with training people in what is going to happen.

As well as realizing the operations and adding events and event receptions to the Blocks, it has updated the Interface Block. As the rest of this video shows, I can go on to create statecharts and build an animating model of them.

Ultimately, with "speed up" helpers like the ones I've shown, we can accelerate your modeling process and engineers can focus on the creative and fun stuff.

No comments:

Post a Comment

Note: only a member of this blog may post a comment.