Sunday, 15 January 2017

Rhapsody Tip #20 - Adding a HyperLinkShortCut list to graphical elements for navigation (Simple)

In IBM Rational Rhapsody version 8.2 (released Dec 2016) to enhance navigation from individual graphic elements in diagrams, you can add a list of shortcuts that are accessible from the title bar of the element. In Rhapsody 8.2, the feature is only available for classes, objects, composite classes, and any "new term" elements based on these elements. It's still useful, however. This super short video shows how to use the Compartment display options to do it.

Sunday, 8 January 2017

Rhapsody Tip #19 - Smart Routing and some other 8.2 diagramming enhancements (Simple)

This short video covers 3 new features in IBM Rational Rhapsody 8.2 that relate to diagramming: Smart Routing, Alignment Guides, and the Rounded Rectilinear line shape option. Actually, they're pretty cool. You do need to set a property to get Smart Routing to work by default though.

Monday, 2 January 2017

v2.0 of SysMLHelper release now on GitHub

It was a long time coming but I have now completed testing with both Rhapsody 8.1.3 and Rhapsody 8.2 and have confidence to label a v2.0 of the SysMLHelper as stable. It has a lot of features.


Note: I will be splitting the SysMLHelper information into a separate blog so that I can keep the pure Rhapsody and method-specific threads separate. More info will follow on this.

Sunday, 1 January 2017

Executable MBSE: Method Part 2: Functional Analysis

The second stage of the method that follows on from Requirements Analysis is called Functional Analysis.

This is another 10 minute method, in that it should only take 10 minutes to build a model from scratch using the free 'SysML Helper' plugin on Github. The method is highly systematic. The profile provides a "Swiss Army" knife of automation tools for creating the model, transforming the steps and verifying the emergent behavior.

The following video gives an end-to-end example:

In this transformation we need to ensure that all the functions are traced to the same set of functional requirements. As such, one can consider this method to be an evolution of the behavioral model from an activity-model (traced to initial functional requirements) into an interaction model (traced to final functional requirements). This method can be done by the same person or a different person from the Requirements Analysis phase and supports parallel working in separate models, if needed. The focus switches from the left hand side of the V to the right-hand side of the V.

The essential steps are:
  1. Create a functional analysis model structure for performing the model execution based on a given requirements-analysis model.
  2. Take the activity diagram for each use case. Progressively work through it transforming the textual steps into operations, events or attributes. Integrate these system functions, inputs and outputs into an executable state machine. Ensure that the related-requirements trace to transitions in the state machine for coverage.
  3. Execute the state machine to generate a scenario that was described in the original textual-based activity diagram. Validate the emergent behavior of the integrated scenarios. 
  4. Once all the scenarios are integrated, we will start to find missing requirements, hence can fill in the gaps, add new requirements and clarify ambiguous ones in the context of the richer model.
  5. Capture each key usage scenario as a test case that is traced to the requirements. 
  6. Fix issues including removing duplicate requirements, correcting ambiguous requirements, and adding missing requirements prior to hand-off. Sign off all the test cases with stakeholders.
The purpose of the state machine is to ensure that all the paths are consistent. It also allows the verification of the desirable emergent behavior through simulation. Inevitably this finds unexpected and desirable emergent behavior and gaps in the requirements that need to be corrected before cascading into the architectural model (in Design Synthesis). It is very similar to unit testing the requirements model as a suite of tests can be built up and results executed to ensure that modifications do not break existing test cases.

This method aligns in principal and goal to the original Harmony-SE method proven by Dr Hans-Peter Hoffman. As well as working from text-based activity model the SysMLHelper also applies a design pattern to support guard-based, rather than event-based, transitions to be expressed in the state-machine. This is a tailoring of the Harmony-SE method for automotive based applications, and enables a more continuous-based simulation semantic to be expressed. This smooths the hand-off to software engineering teams downstream and eases adoption by engineers familiar with Stateflow.

Importantly, the model is not a software implementation model. It is a requirements definition model and is fully traced to all the functional requirements. It is the test cases traced to functional requirements defined as sequence diagrams that is the primary hand-off to the next level not the state machine. Included in this definition is a set of system functions, system attributes, and events sent to/from the actors that all trace to the functional requirements. In the subsequent stage of the method, Design Synthesis, it is these that will be allocated to components inside the system. This allocation will result in the creation of logical interfaces between the components.

Friday, 30 December 2016

Executable MBSE: Method Part 1: Requirements Analysis

The following video shows the latest SysMLHelper profile in action:

The purpose of this method is to produce functional requirements driven from use case analysis of the system.

The Requirements Analysis method is a 10 minute method. Using the open-source 'SysML Helper' profile takes only 10 minutes to use Rhapsody end-to-end to create a SysML project from scratch and get the requirements created in it into Rational DOORS (it takes about 1 hour to show someone how to do it).

The essential steps are:
  1. Create the Rhapsody project, populate a package structure with a use case diagram and setup the Rhapsody Gateway project to sync requirements into a formal module in DOORS.
  2. Create use cases and their related high-level requirements (goals).
  3. For each use case create a simplified (text-based) activity diagram of the steps including both the sunny and rainy day scenarios.
  4. For each step create a new, or trace an existing, functional requirement, such that all steps are covered by at least 1 functional requirement (in some cases a step may be covered by more than one requirement, or a requirement may be related to more than one step).
  5. (Optional) Sync all requirements into Requirements Management tool such that they can be management and tracked with allocated unique ID's.
  6. (Optional) Sync all diagrams into the RM tool such that they can provide additional information to support the requirements.

Saturday, 10 December 2016

Obtaining, installing and/or recompiling the SysMLHelperProfile

The following slide deck gives instructions for obtaining and installing the SysMLHelperProfile from This includes instructions for recompiling for different Rhapsody versions (at the moment it is built for 8.1.3). If you are upgrading my recommendation would be to move to the new 8.2 rather than 8.1.5., if you can. The profile is starting to look really cool in what you can do (more info to come).

Thursday, 17 November 2016

Version 2.0 of SysML helper is nearing release

Due to overwhelming workload I have been a remiss in posting Rhapsody tips recently. However, that's not to say that I've not been busy. For those that might be interested in Executable MBSE my version 2 of the Rhapsody SysMLHelper that I first showed here is nearing completion.

Version 2 is much more extensive. Latest changes are support for menu localization and a three way option for populating the hierarchy.

 The helper is about 12,000 SLOC of Java plugin code. The latest is v2.0.28 (I did say I was busy). The goal is to make Executable MBSE with Rhapsody simple enough to do without training. Building on my 7+ years experience in IBM with Harmony/SE and subsequent experience. It is designed to be more flexible and easy to adopt, works at a range of modelling scales, and is completely free if you're happy to accept the GPL 3.0 license. More info to follow.

For those interested in knowing more about executable MBSE and other SysML topics my latest Rhapsody MBSE/SysML training course is moving to Dec 6-8th 2016 at HORIBA MIRA. Depending on participants interest I will show the helper in full glory as part of the discussion on methods.