Tuesday, 12 July 2022

IBM Engineering Rhapsody Tip #105 - Simplification of SysML for early context analysis

This video gives an impression of where I've moved to in the 7 years since I left IBM and started to support customers using Rhapsody. Broadly speaking  to get users with less experience to be able to model, I've moved from delivery of generic SysML training to customizing Rhapsody with profiles that automate the modeling experience; the richest one being the Executable MBSE Profile in the SysML Helper toolkit (www.executablembse.com). This open source GPL 3.0 licensed profile takes a jigsaw approach to following reusable modeling patterns to create models developed by a team where different team members work in different packages. Although it started life as supporting executable mbse methods, this video demonstrates how it as evolved much wider than that. I show just some concept and early system definition phases work including the simplification of SysML IBDs, in Rhapsody, to create a Visio-like context diagrams with flows.  

Monday, 27 June 2022

SysMLHelper incl. ExecutableMBSEProfile v4.0.w, 27-JUN-2022: Step up in terms of usability and automation

FYI that I have pushed my latest v4.0.w Executable MBSE Profile to Github. It's quite formidable in scope now covering both executable MBSE methods based on DOORS Next requirements or a workflow involving functional decomposition and associated bdds and ibds. The profile is available on a GPL 3.0 license (i.e. you can do what you like but must keep the license, i.e. it's copy left license). Further details on changes are found here: Making Executable MBSE fun with IBM Rational Rhapsody.

Saturday, 16 April 2022

IBM Engineering Rhapsody Tip #104 - Rhapsody's support for SysML callout notation

In this video, which does have voice narration, I delve into some of detail around IBM Engineering Rhapsody's support for OMG SysML callout notation. Callout's in Rhapsody are supported with a new term stereotype that conveys properties that define what to show in the callout. By default, this will be allocated to and allocated from relationships related to the anchored element. However, we're not limited to these. In the video I show how it's possible to show Satisfaction relations. I start the video by also covering how compartment properties can be tailored to allow Satisfactions. This is also a useful tip, that will not be immediately obvious to the untrained eye. Lot's of power here really. As always, if Rhapsody is not doing something by default, there's probably a property you can set ;-)



Transcript:

00:00:00 

Hello, my name is Fraser Chadburn. I'm a specialist in IBM Rhapsody (in particular) and SysML (in general) and in this video, I'm going to cover the call out notation in SysML. 

00:00:11 

So firstly, let's have a look at it. Essentially callout notation is the use of comments which are anchored to an element, where the element owns a relationship, and the relationships that are owned are shown in that comment. 

00:00:25 

Here's the allocation relationship, which is essentially a dependency with the allocate stereotype applied in SysML. Comments with this call out notation applied can also be used for showing traceability to requirements, for example, satisfactions. 

00:00:42 

Let’s have a quick look. Here we've got trace, refines, verifies and satisfies. These are all SysML stereotypes for traceability (actually trace is UML but it works in a similar way). 

00:00:56 

Let's go to Rhapsody now and see how comments are supported with callout notation in the SysML profile. Firstly, I'll create a SysML project. I'll call it ‘CalloutComments’ and use the SysML profile to create it. 

00:01:17 

I'm not using any other customizations at this point. I'll add a block definition diagram and we will look firstly at how compartments work. 

00:01:29 

Here I have a block and I might have another block, and I'm going to show there's an allocate relationship. This is a dependency with the allocation new term stereotype. Using the display options for this, I can change the compartments on the diagram to show that allocation. 

00:01:53 

With requirements, I can do something very similar. Let's add a requirement and show traceability using a satisfaction dependency. Note that the display options are not allowing me to show satisfactions as a compartment for a block, by default. 

00:02:17 

These display options are covered by properties on the model. If I look at the properties on the model, I'll just search for “AdditionalCompartments” you can see that this property has been overridden by the SysML stereotype on the project to add certain compartment options which pertain to SysML. 

00:02:42 

If I want to show satisfactions in a compartment, one way I can do this is to set properties on the project. I'll override the AdditionalCompartments property on the project here, so that satisfactions are available. This means I can show the Satisfaction traceability to the requirements now in a compartment. 

00:03:10 

Call Out notation is very similar to compartment, is that we're showing these relationships, but on a comment. If I put a standard comment on here and I anchor that comment to the element, establish that then if I do a change to “Callout” then the same, or similar, display is presented. What would be shown in a compartment, is now shown in the comment albeit that this is with the system modeling language notation. 

00:03:50 

What is actually shown in that callout, is controlled through properties. The "Callout" new term type is essentially a stereotype in the SysML profile. 

00:04:13 

It's the stereotype applied to a comment that carries with it some properties. Callout comments by default will show allocated to and allocated from relationships in the comment which means if I wanted to show satisfactions, I'd need to override those properties. In this case I'm overriding them just on this particular comment, which is part of the model, and I want to show satisfactions. 

00:04:53 

I've overridden that property on that particular comment and it's showing satisfactions so if I establish new relationships in the model then the compartments and comment notation will update to show them. 

00:05:13 

So it's powerful notation but it relies on you to be able to set properties and understand how properties are conveyed to a model. Callout notation is aligned to the systems modeling language specification and can be updated for new term types that you define by tailoring properties in Rhapsody. 

00:05:34 

So hope that helps. My name is Fraser Chadburn and I run consultancy and training company specifically focused on Rhapsody. If you look at some of my feedback around the type of training I provide, it's about deep knowledge in the tools and having interesting interactive training that's focused on your needs. 

00:05:57 

So if anybody needs to get in touch on the, then probably the best thing to do is send an email. Thank you very much. 

 

Friday, 18 February 2022

Copyleft and Ownership

Some people have asked me about open source code. The following link is interesting. What it essentially highlights, is that someone who owns the copyright can license the same code under different licenses to different people. Of course, this different license would need a license agreement in place which would need mutual agreement between the parties, e.g., you could buy under a non-GPL agreement but we'd need a contract for this. Potentially, this is an option if anybody wants to establish a different license with me and build on my resources but not comply with the copy-left principals of the GPL, for example:

https://hackaday.com/2018/09/27/can-you-take-back-open-source-code/

Friday, 28 January 2022

Rhapsody training feedback 2021

Past performance is a good indicator of future performance so I thought I'd post an order summary of training feedback (best to worst) from last year (all online form responses):

Training Feedback Question

Score

1

The trainer was knowledgeable about the training topics.

4.982142857

2

The trainer was well prepared.

4.946428571

3

The materials distributed were helpful.

4.839285714

4

Participation and interaction were encouraged.

4.785714286

5

The training objectives were met.

4.669642857

6

The objectives of the training were clearly defined.

4.589285714

7

The context was organised and easy to follow.

4.553571429

8

The meeting room and facilities were adequate and comfortable.

4.464285714

9

This training experience will be useful in my work.

4.455357143

10

The time allocated for the training was sufficient.

4.383928571

11

The topics covered were relevant to me.

4.276785714


This is an accumulated survey of all digital responses last year, multiple courses with no filtering, hence gives a summary of what to expect where topics were scored: 
5 - Strongly agree
4 - Agree
3 - Neutral
2 - Disagree
1 - Strongly disagree

Key things are:

1. Me: I deliver interactive training and I have deep product knowledge and real usage experience.
2. Materials: People seem to value the materials and labs. Labs are very comprehensive, and detailed with screenshots that cover many tool intricacies.

Some more recent feedback to "What did you like most about the training?" were:
  • The games and doing the exercises together.
  • I liked the sequence of the lab training. I think it helped build our skills to become more independent when creating our own systems. 
  • The fact that the instructor walked us through the material, showed how the tool was used, and then we had the chance to do it on our end. This helps confirm if we understood or not as well as improve our familiarity with the tool.
  • Presenter was very good at communicating and keeping students engaged.
  • It was presented in an easy to follow format and the trainer answered any questions I had along the way.
  • Hands-on activities were helpful in understanding the course
  • Lots of different training activities (theory, labs, quizzes, workshop)
  • Open dialog helped to drive understanding and application of training to current work.
  • I liked working through subjects in the tools.  I also liked the Kahoot tests.
  • Well organized with live explanation and time to play in Labs.

Thursday, 20 January 2022

IBM Engineering Rhapsody Tip #103 - Executable MBSE Profile's Use Case package structure

This live recorded video focuses on showing some of the features of my Executable MBSE profile related to requirements analysis. It has two uses really: Firstly, it explains what and how the profile aims to achieve a model-based systems engineering method using New Term packages. It gives an overview of some of the less obvious but helper menus, for example, the ability to rename action names in the browser and automation to move requirements into a requirements package.


Here's the transcript, for those that need it:

00:00:00
Hello, in this video I thought I'd cover some of the features associated with this Executable MBSE profile, so I'll just look at the requirement analysis side of it and I'll start by creating a project.

00:00:17
Doesn't really matter too much about this example. The first thing to know about the profile is that it's a helper to be able to set up and create model. I don't have a single model structure, rather I try and build kind of reusable components developed by different people in different models that can be shared. One aspect of that is this idea that particular packages, which have particular types, can be consumed by different projects or they could be stacked in the same project.

00:01:00
So, when I say create a project, I always create it with one of these structures. Now here's an example.
A use case package structure creates a package for doing use case modeling, but it doesn't just create that package, it also creates a shared app package and optionally a requirement package.

00:01:27
And it does it based on a unique name. In this case, I'll just take the default. The idea of that unique name is that you might have different people working on different aspects of the system, which you could call features or functions, but essentially they are collections of use cases, or more importantly, they have ownership within the model.

00:01:52
Where somebody could be working in this package independently with someone working in a different package, and this is what I mean by stacking.

00:02:01
So, if I create another use case package here, I'm going to stack it. This is Feature B and I’ll create a separate requirements package for that because it's owned by a different user.

00:02:17
I could flow the requirements here into the same requirements are developed by the other feature, but I'm grouping requirements here in terms of features, but I am sharing the active package so here I have feature B package.

00:02:33
Which is kind of like user A and user B packages, but this is common model. And I I could develop these in different models and then bring them together later, and an aspect of that is the unique naming of the package because that unique naming also relates to the file on the file system.

00:03:00
So this is an .sbsx file. What we call it unit and Rhapsody. I'm so here I am, I'm user A working on feature A and this is going to have a use case Trap a mouse involving the homeowner.

00:03:21
Some of the settings here about what actors are created in the actor package to begin with are driven from properties on the model, and there’s subject for this Executable MBSE profile where I've grouped together the properties. These are the default actors.

00:03:43
You can change the property file in the profile if you're in a particular domain where there's certain actors and like automotive, or you could just create the actors and rename them.

00:03:59
I always have an Environment actor, and I'm not going to remove that. That's quite useful. I can explain a little in a different video, perhaps, why that's the case.

00:04:12
One of the features of this profile is to flow requirements from a use case package into a requirements package, and that's just to automate one of the very common manual steps when performing requirement analysis with the use cases.

00:04:29
This, perhaps, is a requirement about the goals of what the mousetrap is going to do. So, the goal might be “The mousetrap shall remove mice from the home”.

00:04:51
This refinement tool is actually added by the profile, so there are customizations here to make the process of creating models a lot smoother just by putting certain tools into the pallets in the right places according to the profile and the process.

00:05:13
Fundamentally, what relationship we're going to use for use cases? Well, if I chose a refinement, then I put it in the toolbar rather than make people draw dependencies and apply a new term (which is going to have its own problems). So let's now will show you another bit of automation.

00:05:32
If I double-click, this question appears. This is the profile’s plugin that's running because of this Executable MBSE profile, and this is what we mean by accelerating a process with a toolkit that uses product automation to automate steps.

00:05:57
This has created an activity diagram with a template for performing use case analysis with some properties set on the diagram to make it easy to write free flowing text, and this is one of my approaches to use case modeling and so rather than model functions here, I'm going to model steps of the use case that I might have written in a Word document.

00:06:26
And I just feel that that's a very easy and accessible method which can then be used to perform more detailed analysis later. It's also very easy to get non-technical or non-model-based system engineering experts to get value from modeling very quickly.

00:06:48
So, the preconditions are that “the trap is set”. Then the “Mouse enters the trap” and the “Trap springs capturing the mouse”. Obviously, this could have a bit more of complicated flow, but I've got pre and post conditions associated with the use case, and I can build one scenario for this use case and go on to expand it with decision nodes.

00:07:33
I have also simplified the Activity Diagram toolbar here. My automations are done with new term stereotypes, and this is a textual activity diagram that this profile has been set up to create actively diagrams with.

00:07:51
And that just removes some of the things like action pins and activity parameters and swim-lanes because I'm not going to use them for this part of the model so don't give people the option because we want consistency in our modeling.

00:08:13
We don't want, when we are doing large scale modeling, to have deviations from the method, unless those deviations are considered important in the process. Which means we'd modify the helper or the profile accordingly, rather than allow people to do everything.

00:08:38
This method has some other automation here that's useful. Notice, for example, the actions on activity diagrams have different action text from their name in the browser. This is one of the things in Rhapsody because it was built for software code generation initially, it has this idea of keeping the names in the browser so that they don't have things like spaces, and they are essentially codable.

00:09:19
To these actions to appear in DOORS Next, for example, with the same name as the text there's some automation here to effectively auto rename actions and this automation is similar to that provided by the SE toolkit, which supports the Harmony/SE methods.

00:09:42
This particular helper, this Executable MBSE helper, is an alternative to the Harmony/SE toolkit, and it does some of the similar things.

00:09:52
I've got some naming conventions here, for example. This activity diagram is a child of the use case, so it has the same name. So, if I rename the name of the use case, I have some automation to be able to auto-update the activity diagram names. This just helps keep the model consistent.

00:10:18
So, it's very subtle. One of less subtle things is this idea of capturing requirements and moving them automatically into this requirement package, and I do particularly find this quite valuable to collect the requirements together in the same location. There's also a little helper here to create requirements from the text of the actions.

00:10:44
It's just putting a requirement on the diagram, taking the text on these actions and it also moves that requirement. It does this providing that there's a dependency from the use case package to a type of package, which is a requirement package, then that automation moves that requirement into that requirement package. I don't need to write the text from scratch, I can just manipulate the text that’s there.

00:11:24
So those are some of the automations associated with the requirement analysis section. If I go one step further, because obviously I might have multiple use case packages, I could have one use case package for the whole system if I was just, you know one developer, but really I'm trying to get different people to be working on different parts of the model to avoid conflicts and people editing the same diagrams and using the diff merge because although Rhapsody can do that, sometimes it just makes sense to organize your users so that they are isolated and use case analysis is a very good way of doing that.

00:12:08
I therefore have these types of packages. New term packages in the model and rather than have ”base” UML packages I think the new term packages give a bit more ability to get straight to the point of action, tthe place on the coalface where the users are working.

00:12:35
So rather than have a big office where everybody is doing everything., I'm organizing my accountants to be in the same room, and my workshop to be slightly differently because people working in the workshop are going to need different tools than someone working in the accountancy office, and that's how I organize these models.

00:12:56
And that goes as far as also changing the right click menus. I've got a very simplified right click menu for the use case packages because I'm not going to do block definition diagrams here. My requirements packages are for capturing requirements, so I can have tables and matrices but not use case diagrams.

00:13:20
The profile provides focus for parts of the model to have particular roles, and that becomes important when we look at the process, which is the flow of information between different developers and modelers across a large organization or a large project.