This is my first video for a while and comes from some recent work trying to make it easier for users to exploit the power features of IBM Engineering Rhapsody for filtering diagrams to show elements within a view. Rhapsody includes lots of features to do this such as Queries and CustomViews but it's not always easy to set them up, hence I added some support to Rhapsody to make both the setting up of the necessary elements and then the usability of those elements much easier. After showing the resulting example, the video steps through the steps of creating it using my helper.
Understand the art of the possible. My mission is to make executable Model-based Systems Engineering (MBSE) easy with the Object Management Group's Systems Modeling Language™ (SysML®) and UML® to make simple modeling easy to deploy to the masses. This site provides practical experience of tuning IBM® Rational® Rhapsody® - a precision engineering UML/SysML tool. Rhapsody tips and ideas will be posted with links to videos. You can follow by email (if google app is allowed).
Wednesday 2 November 2022
First delivery of my new Model-based Testing with Test Conductor training course
Last week I did my first delivery of a new Model-based Testing with IBM Rhapsody Test Conductor (1 day) course I developed to a group of 15 participants, my first new material for a while. Training was based on Rhapsody 9.0.1 iFix 003.
This was the feedback:
Final Class Summary
General: 4.6 out of 5
Material: 4.8 out of 5
Instructor: 4.9 out of 5
Overall Satisfaction: 9.3 out of 10
The material is all based on hands-on labs and does assume some knowledge of Rhapsody. It can be considered as a 1-day add-on to existing 3-day Mastering Rhapsody trainings. Either done in the same training cycle or as a top-up that gives more exposure to executable modeling later on.
Rhapsody 9.0.1 iFix 003 SR1 was released 29-Sep-2022
For those that don't know, the latest Interim Fix (iFix) 003 for Rhapsody 9.0.1 is actually a Service Release (SR). This means that it's a complete installer that you can install like a release and don't need to install anything afterwards to get additional fixes (at least at the moment). This makes it a good candidate for performing new installs with as there is just one installer to deal with.
To obtain iFixes for IBM products, you do not need to be a customer but may need to register for IBM id. They are available on IBM's Fix Central website: https://www.ibm.com/support/fixcentral/
Search for: IBM Engineering Systems Design Rhapsody
Wednesday 12 October 2022
Java Versions and Features link
Often, a Rhapsody team may choose to get a toolsmith on board to extract the best power with the least effort from what is probably the most configurable UML tool of them all. Although Rhapsody is natively and C++ application, plug-ins for Rhapsody make use a Java API. It's not always the case, however, that the toolsmith is a software engineer by trade and hence just a little foundation knowledge can go a long way. I found this article that helps explain a bit of foundation knolwedge wrt Java and JDKs. It's quite well written I thought and hence thought I'd share the link: Java Versions and Features (marcobehler.com)
Wednesday 27 July 2022
v4.1.a.PreRelease version of SysMLHelper toolkit on Github
I published first version with business value profile (target for visio import) plus some important tables views for showing traceability in the requirements, use case and feature function packages in the Executable MBSE profile.
See my Making Executable MBSE fun with IBM Rational Rhapsody website if you want to know what the latest enhancements were and where to download this set of open source profiles and process automation helper toolkit.
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 ;-)
Monday 14 March 2022
Reporting on Linked Lifecycle Data with IBM Engineering Lifecycle Optimization – Publishing | Part Four – Reporting from Rhapsody Model Manager
Some of you may be interested in this article that Andy published on Jazz.net:
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 |
- 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
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.
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.
Monday 17 January 2022
How to install Rhapsody Architect, Designer and Developer on the same machine
IBM put a lot of support questions and answers on the web. Here's one about shortcuts for launching the most appropriate Edition of Rhapsody, once you have an installation:
https://www.ibm.com/support/pages/how-install-rhapsody-architect-designer-and-developer-same-machine
Thursday 6 January 2022
IBM Engineering Rhapsody Tip #102 - Executable MBSE Profile's Functional Analysis package structure
This live recorded video (with sound) gives an overview of the SysML package structure that my Executable MBSE Profile automatically creates for doing the functional analysis part of a method based on Executable MBSE. Key aspects are that simulations are built with actor test benches, and it's the actors that are used to drive the simulation, so that all the test stimulus is visible on an auto-generated sequence diagram. Related to this is to ensure that the structure separates elements related to the system under design/test from model elements used to test it, and having a package that contains the interfaces and events separate from the blocks that use them.