Rhapsody TechBlog

BLOG about IBM Rhapsody. Contains technical information as well as more private travel stories.

Page 10 of 16

Florida 3: Hard-Rock Café

Hard Rock Café

The Hard-Rock Café is a must-visit on all my trips. I always buy a t-shirt (although my wife tells me that I have more than enough t-shirts already…)
The fun with the HRC t-shirts is that they have the name of the city printed on it. You can only buy them local, not on the internet, they have only neutral shirts there.
So if you see someone with an HRC t-shirt from some far, far away destination, he or she has either been there or has a good friend who has been there. (No, I will not bring you a t-shirt…. go there yourself…)

So on the Florida trip we decided to visit ALL the Florida HRC’s. Yes, all of them…
Key West, Miami, Fort Lauderdale, Tampa, Orlando, Daytona Beach and Nassau (On the Bahama’s, not exactly Florida as you can read on …)

We did Key West so the next day we left Arno’s house to drive via Tampa (HRC in the airport) , Orlando (HRC is in the Universal Studios) to Daytona Beach where we stayed in the Hard Rock Hotel. Then on to Miami (next to the Harbour See … )  via Kennedy Space Center (read …) Fly to Nassau and stay on the Bahama’s for a day (See: … ) and finally to Fort Lauderdale ( HRC in the Casino ) and then back to Fort Myers. Great trip, I can recommend it!

Sequence

I receive many questions about how to influence the Rhapsody generated code. Now you can post-process the code using the simplifier or even change the rules with our rules-composer but sometimes you should make life not more complicated than it already is.
There are more ways to ensure Rhapsody generates exactly what you want.
Ask most modeling guru’s (and the traveling modeler agrees…) and they will tell you: You have to model in a way that sequence doesn’t matter. As already said: I agree. But…..
There are circumstances where you just cannot model as you want to. The smaller the controller, the more rigid the real-time requirements, the more trouble to fit everything in and to certify it works.

Classes

Open a new model and if you create 4 classes (in this sequence!) “A”, “B”, “D”, “C”, you will see in your browser that under the default package you have the 4 classes, sorted alfabetically, A, B, C, D. BrowserUnsorted.JPGThis is just the “visual” sort, you can switch that of with either a property or with “View”, “Browser Display options”, “Enable Ordering”. This will switch on the small yellow arrows on top of the browser that let you order items as you want. (Only Visual!!)

Now the sequence of Code generation is not relevant for classes since they have their own file. The sequence of attributes or operation within a class can be important!OrderMenu.JPGBrowserSorted.jpgNow that can also be achieved easily. Rhapsody offers the sorting from within the browser. Depending on if you have switched on the “Enable Ordering” all elements

Editorder.JPGare either shown alfabetically or in the sequence that you have entered them in the model.
The code generation for attributes and operations is not depending on that setting!! Code is generated in alfabeticall sequence, or the sequence that you give in the “Edit Order of Attributes (Operations)”.
This opens a dialog where you can precisely select the generated source code sequence.

Now if you have created objects statically using “Make an Object” or by just creating them you can do the same. Right click on “Objects” and you can select “Edit order of Objects” you can select the order that the objects are instantiated. (Do a regenerate, Active Code View is not automatically updated) The same applies for singleton Objects.

This also works with dependencies (with Usage, that will select the sequence of include)

Happy modeling with Rhapsody

Walter van der Heiden (wvdheiden@willert.de)

AUTOSAR in Noordwijk

Introduction

Lately a lot of automotive companies reach out to us for help with their development. Mostly their problem is that in spite of all the (expensive!) tools they use, they still have trouble getting all development done correctly, in-time and thoroughly tested.
I understand that, you can use several AUTOSAR Tools, you can use Simulink or ASCET or TargetLink or whatever, most of these tools do not solve your problems with, amongst others, complexity, timing and architecture.

With AUTOSAR you are able to develop very distributed. That is a big advantage but at the same time also the main problem with it.

Using AUTOSAR does not automatically mean you are using modeling, also modeling does not equal modeling. Using Simulink is completely different from using Rhapsody or another UML modeling tool.

This week I was in Noordwijk together with Clemens to define and implement some of our AUTOSAR/Rhapsody solutions.

How hard can it be?

As the famous Jeremy Clarkson always says when he and his former Top gear, now the Grand Tour, mates are doing something that is nearly impossible: “How hard can it be”.
I can tell you one thing: making software for cars is hard. Very hard.
In my opinion, cars are the most complex thing people build. Not planes or rockets ( The expression, “It’s not rocket science” should actually be: “it’s not automotive software”, IMHO )
Parts of that complexity stems from the fact that the Automotive sector suffers from a drastic price policy. If their purchase department can purchase a CPU that is €0,20 cheaper, they will do that, regardless of the fact that this can skyrocket the effort of building software. Well maybe it’s not that drastic but this is closer than what the Aerospace people do, they only use certified CPU’s. What they cost is pretty irrelevant, you never notice it on the price of a plane and they will only build a limited number of planes, not millions like car ECUs.
Other reasons for complexity is the environment of a car. Planes can fly and therefore already solve the problem of having millions of moving obstacles on their path. Air Control tell te plane where to go, how fast and how high. Makes things much more easy.
So the reason is this complexity, that will only be more now we are implementing autonomous driving.

UML or SysML?

The solution “du Jour” for this is now to use System Engineering or SysML (System Modeling Language) Is this better than UML? That is not a statement that you can make. It depends on what you are doing. I noticed lately that most people ask for SysML but they almost all end up with making software anyway, not systems. That does not mean that you should not use SysML but there are things in SysML that are different. Plus that you have “yet another Tool” and “yet another language” to learn.
So if you can be sure that no-one from any other department than the software guys will use SysML: choose UML. You can also mix SysML and UML (Even for Software development, we are embedded so in the end we always do some systems engineering as well.) The disadvantage is that you often have to do things double. Or put effort in model transformation or intelligent “helpers” that convert and link your model elements. (e.g. like the Harmony profile does)
But OK… since the UML has (still) not reached the critical mass in users, I gladly accept SysML (Which is nothing more than a UML profile) as the UML savior.

Multiple captains on one ship

That’s one of the problems with the mult-tool approach. It is generally a good idea to use the right tool for the right task. Unfortunately all tools think that they are capable of doing everything, which they are most definitely not. It’s like having 2 or more captains on a ship shouting contradictory commands.
The only way to use multiple tools where you have development information that is used in different tools is when you:

  • use automatic synchronisation.
  • use a tool that help you connect the information
  • use a very rigorous process that tells you where the information is created, kept, supplemented and changed.
  • Automate as much as possible

AUTOMOTIVE Spice

There is, luckily a process that you can use for development. This is a big help in defining your artefacts and how to store and process them.
Not really easy to implement but hey: we do complex stuff, this is never going to be easy. I could write a book about this but I won’t. Not here. You can read all about Aspice here.

Rhapsody can do AUTOSAR, can’t it?

Exactly. It can. You can load an AUTOSAR profile (Most AUTOSAR Versions are available) and then you can import and export ARXML files. You are no longer using UML, you use AUTOSAR. And you can model it, draw diagrams, make connections add AUTOSAR artefacts. You can even use UML State-machines you first have to create a so-called RIMBO (Rhapsody Implementation Block) and connect that to all AUTOSAR connectors.

You have to consider a few things. The ARXML import/export is using Java and uses a lot of memory. It turns out that Rhapsody 64-Bit is really much faster when importing or exporting ARXML. If you use Rhapsody 8.3 you’re OK, you can use the 64-Bit. For older versions you can still install the 64-Bit version just for import and export and do the modeling in the 32-Bit version.

If this is the solution, I want my problem back

This is not always the most optimal solution. In my opinion people want to use a UML/SysML tool because they want to use UML/SysML. And that is what you can do. The Willert Automotive Profile for Rhapsody delivers you the possibility to implement other use-cases with Rhapsody. You can use Rhapsody to:

  • implement functionality that uses state-machines and/or Activity diagrams with Code generation. The Automotive RXF is small and fast and will be called in your system in the form of 2 runnables. The names are imported from an ARXML file that you create with another AUTOSAR tool like ArcCore or so.
  • You can also model your AUTOSAR application in UML in Rhapsody, the stereotyped model elements can then be exported as ARXML and used in other AUTOSAR tools.
  • We have defined a base model that includes many Automotive modeling examples, that shows a lot of modeling best-practices and already some very useful helpers.

There are some limitations to using this, not everything is possible (yet). We are working on automatically generating code for communication between runnables (Sender/Receiver ports) You can do this by hand now, however.

OK, we also walked on the beach, drank a few beers in a beach club but we worked very hard on the Willert Modeling for Automotive Solution! In one of my next BLOG entries I will take you through a complete automotive example.

Happy modeling with Rhapsody!

Walter van der Heiden (wvdheiden@willert.de)

 

 

 

 

Florida 2: The Keys

The Keys

The Florida Keys are the small strain of Islands that lie south of the Florida peninsula. They are connected to each other via a couple of bridges and a long highway.
I’ve been there before but that had to happen on one day and before the flight back so I had not much time to enjoy the beautiful scenery and the islands itself.
The attraction is of course Key West where you are very close to Cuba (90 miles, 145km)

distance-from-cuba-to-key-west-1

So this time we planned a bit longer visit and even an overnight stay. Getting a room was OK, apparently it was not the tourist season. Still it was quite busy on Duval Street that is the main attraction. Lots of cruise-ships stop at Key West, unloading lots of passengers. That is the main income of the islands.

The trip to the island is (for me…) the main attraction. We were driving there in a BMW 430i convertible. That was pretty cool.

Hemingway’s House (& cats)

One of the attractions of Key West is the house of Ernest Hemingway.

IMG_1123.jpg

It is now a museum (you have to pay for it… very undutch…) and shows the house in its original state. The walls are full with Hemingway memorabilia and explanations about his life.
I had heard of Hemingway of course but never read anything from him. I immediately started to read “The old man and the sea”.
The house is populated by many cats that are all descendants of Hemingway’s cat “Snow White” who had 6 toes on each foot. The cats there all (as far as i could see) have that to and is quite remarkable.

How to associate Rhapsody model files in the explorer with a specific Rhapsody version

After installing a new Rhapsody version, e.g. for testing purposes, you might still want to let the Windows Explorer open your .rpy or .rpyx Rhapsody model files with another Rhapsody version you are still using for production. This how-to briefly describes where to configure the file extension to application association.

how to associate rpyx

Step-by-step guide

  1. Open the Windows Registry Editor (regedit.exe)
  2. Navigate to “HKEY_CLASSES_ROOT\.rpyx” (or “HKEY_CLASSES_ROOT\.rpy”)
  3. Make sure the value name “(Default)” contains the data “rpyxFile” (or “rpyFile”) (without quotes)
  4. Navigate to “HKEY_CLASSES_ROOT\rpyxFile\Shell\Open\command” (or “HKEY_CLASSES_ROOT\rpyFile\Shell\Open\command”)
  5. Modify the value named “(Default)” to contains the data (including quotes):
    <Full path to your desired Rhapsody version program path>\Rhapsody.exe” -cmd=open “%1”
    If you have a multi language installation but per default want to open Rhapsody in a specific language or edition, you can add additional arguments before “-cmd…”.
    Examples:

    1. Development Edition in C: -dev_ed -lang=c
    2. Architect for Software: -architect
  6. You might also want to check HKEY_CLASSES_ROOT\rpy[x]File\DefaultIcon

Thanks to Eike for writing this down!

Here some pictures of the keys.

That’s it! Happy modeling with Rhapsody!

Walter van der Heiden (wvdheiden@willert.de)

Florida 2: The Keys

The Keys

The Florida Keys are the small strain of Islands that lie south of the Florida peninsula. They are connected to each other via a couple of bridges and a long highway.
I’ve been there before but that had to happen on one day and before the flight back so I had not much time to enjoy the beautiful scenery and the islands itself.
The attraction is of course Key West where you are very close to Cuba (90 miles, 145km)

distance-from-cuba-to-key-west-1

So this time we planned a bit longer visit and even an overnight stay. Getting a room was OK, apparently it was not the tourist season. Still it was quite busy on Duval Street that is the main attraction. Lots of cruise-ships stop at Key West, unloading lots of passengers. That is the main income of the islands.

The trip to the island is (for me…) the main attraction. We were driving there in a BMW 430i convertible. That was pretty cool.

Hemingway’s House (& cats)

One of the attractions of Key West is the house of Ernest Hemingway.

IMG_1123.jpg

It is now a museum (you have to pay for it… very undutch…) and shows the house in its original state. The walls are full with Hemingway memorabilia and explanations about his life.
I had heard of Hemingway of course but never read anything from him. I immediately started to read “The old man and the sea”.
The house is populated by many cats that are all descendants of Hemingway’s cat “Snow White” who had 6 toes on each foot. The cats there all (as far as i could see) have that to and is quite remarkable.

How to associate Rhapsody model files in the explorer with a specific Rhapsody version

After installing a new Rhapsody version, e.g. for testing purposes, you might still want to let the Windows Explorer open your .rpy or .rpyx Rhapsody model files with another Rhapsody version you are still using for production. This how-to briefly describes where to configure the file extension to application association.

how to associate rpyx

Step-by-step guide

  1. Open the Windows Registry Editor (regedit.exe)
  2. Navigate to “HKEY_CLASSES_ROOT\.rpyx” (or “HKEY_CLASSES_ROOT\.rpy”)
  3. Make sure the value name “(Default)” contains the data “rpyxFile” (or “rpyFile”) (without quotes)
  4. Navigate to “HKEY_CLASSES_ROOT\rpyxFile\Shell\Open\command” (or “HKEY_CLASSES_ROOT\rpyFile\Shell\Open\command”)
  5. Modify the value named “(Default)” to contains the data (including quotes):
    <Full path to your desired Rhapsody version program path>\Rhapsody.exe” -cmd=open “%1”
    If you have a multi language installation but per default want to open Rhapsody in a specific language or edition, you can add additional arguments before “-cmd…”.
    Examples:

    1. Development Edition in C: -dev_ed -lang=c
    2. Architect for Software: -architect
  6. You might also want to check HKEY_CLASSES_ROOT\rpy[x]File\DefaultIcon

Thanks to Eike for writing this down!

Here some pictures of the keys.

That’s it! Happy modeling with Rhapsody!

Walter van der Heiden (wvdheiden@willert.de)

Animation in Florida

Vacation

Even traveling modelers have vacation, sometimes. Although my life sometimes lookes like a long vacation, it still is work. I usually have only limited time to really look at something.
So I decided to spend 2 weeks in the United States, in Florida. Finally time to see more than airports and security checks.
My youngest son joined me and on may 1 we left in the morning to fly to Fort Myers via Detroit. I will tell a lot more about where we went and what we did.

The planning is to visit The Keys, Tampa, Orlando, Daytona Beach, Bahamas, Miami and of course my friend Arno in Fort Myers.
That is quite a program for 10 days but we’ll see. First we spend a day at Arno’s to join the pool….

Animation

Not really a theme for me… The Willert Version of Rhapsody does not support Animation (Therefor we include our “world-famous” Target Debugger.
A question came in from a customer about the use of animation with more than one Rhapsody version (So you can animate different applications)
This is actually quite easy once you understand how Animation works.
Rhapsody generates extra code when you switch on Animation, every function has some Macro in it, different macros for different functions.
Also the framework includes the Animation and tracing Framework, that provides the functions you need to animate.
If you start the Rhapsody developer it will reserve a TCP/IP Port for the Animation communication. The number is 6423. This is the reason that when you start a second instance of the developer there is an error message that says: “Rhapsody cannot create socket” or something like that.

Solution

There are multiple solutions.
They both involve the Rhapsody,ini file, this file must be right next to your Share directory.

  • Create a second Data directory for Rhapsody and change the Animation Port Number. Create shortcuts that start Rhapsody in different directories.
    Advantage is that you gave control over he port number and you can decide which one to start.
  • Add a line AnimationPortRange=10 to your Rhapsody.ini file. Now Rhapsody will use a new port number (after 6423 or whatever you have configured in rhapsidy.ini) each time you start a new Rhapsody instance.
    You have to generate and build your code (It contains the correct port number) to use the correct port.

That’s it for today, Happy Modeling with Rhapsody!

 

Walter van der Heiden (wvdheiden@willert.de)

Moving Rhapsody

Kings Day

Today is Kings Day in the Netherlands. We celebrate that our King (“Willem Alexander” but we may call him “Willy:) has his birthday. That is quite a party over here, I can certainly recommend being in the Netherlands on that day (and the night before)

Koningsdag-Op-Vrijdag

Kings Day Party in the Netherlands

So everybody in the Netherlands has a day-of. Unfortunately I work in Germany… so I have to work. Therefor I have many other holidays that are unknown to the Dutch…

Willy en Familie.jpeg

Willy and family

Happy 51th Birthday, Willy!

How to move Rhapsody (or parts of it)

I’m sure it has happened to you and it did happen to me yesterday. I always install Rhapsody in “C:\Dev Tools” (Yes, with a space, we need to test that…)  but I mistyped (These characters get smaller every year….) and I typed: “C:\De Tools”.
The cowards way out is to de-install and then re-install.
I decided to try out if i could repair it…. As the Germans say: “Nur die Harten kommen in Garten” (Means something like: “Only the tough ones go to heaven”)

I just moved all files and then started thinking that I might have traces left in the registry. So i started…. not regedit. That is a bad tool, come on Microsoft… you can do better. If you dump a very bad idea known as “The Registry” on us, then give us something useful to work on it.
luckily there are better tools, I have the pro version of Registrar (there is a free version that works fine) where you can search and replace in the complete registry. And much more.

So I searched and replaced “c:\De tools” with “c:\DevTools” and it started to look better. Of course i had to repair the shortcuts and now I also “moved” the Rhapsody “Share” directory, Rhapsody was whining when I started it. I had to edit the Rhapsody.ini and the DiffMerge.ini files. Then it was OK. This did not really saved time but it was fun to do.

Splitting the Data Directory

What I forgot is that on our development systems we cannot use the convenient way of installing outside of the Windows “Program Files” directories and then “Install all files in one directory”. i did that but because we have to generate install and setup files from our development installation automatically we need to split the directories. So I had to move the “Data Directory”
If you already installed the Data separately it is easier, you only have to edit the Rhapsody.ini and the DiffMerge.ini (Even if you do not use the latter: edit it! If you ever want to use it it won’t work and you have no clue why!)

Moving the “Share” directory

Well… if you have everything Rhapsody in one directory it’s actually a bit more than just the “Share” dir. You also have to move:

  • Share
  • Samples
  • Sodius
  • Gateway,
    • NOT completely… just the “examples” subdirectory!!
  • Test Conductor
    • A bit more complicated….Screen Shot 2018-04-27 at 10.09.28.png
      This are the files that you have to move to the “Data” part.
  • DiffMerge.ini
    • Search and Replace all instances of the “old” directory
  • Rhapsody.ini
    • Search and Replace some of the instances of the “old” directory, if you had the paths splitted it is easy, if you want to split the installation by hand note this:
      • NOT!!! The paths under the “WelcomeWizard and the WelcomeScreen_Gateway!!! These need to be pointing to the “Program” directory!
      • NOT!! The JavaClassPath and the other Paths under JVM! They also need to point to the “Program” directory!
      • There is also an Entry: “WORKSPACE_ROOT”, you can make that point to a directory where you want to start new Projects by Default!
      • Other directories: check if they point to something that exists…

And then your are OK! At best use a decent editor (Notepad++ or so) and do Search and replace with confirmation.

It does not seem to affect anything but you can repair the Registry so that it seems that Rhapsody was really installed the way you have moved it now.
Just take care that you do not make any mistakes…

Having everything installed in one place is not really making things easy when moving and splitting up Rhapsody. With a decent Registry Editor you can do it quite quick, in case of Test Conductor I think that de-install and re-install (All add-ins can be re-installed! Just call the installer and press “Modify”!) is a lot faster than setting everything by hand.

Note: I installed 32Bit and 64Bit next to each other on one system. Perfectly possible, just rename the Data and program directories (I used 8.3 for 64Bit and 8.3-32 for 32Bit)

Happy Kingsday and have fun modeling with Rhapsody!

Walter van der Heiden (wvdheiden@willert.nl)

Deploy back

Introduction

The title is a bit double today, i was deployed back from india to home and I will explain how you can deploy to your Rhapsody project and not lose the “roundtrip” feature!

Deploy back Rhapsody

The purpose is to deploy and leave all files exactly where Rhapsody has generated them so that you are still able to do roundtripping.
It is not completely straightforward but certainly doable.

Assuming that you have a directory c:\work. In that you have 2 directories, Model and Code. The structure is as follows:

  • c:\Work
    • \Model
      • \MyModel
        • \MyComponent
          • \MyConfiguration
            • “This is where Rhapsody generates your code”
    • \Code
      • “This is where the project file for the IDE is
      • “Generated Model”
      • “RXF”
  • RXF install
    • Tools
      • WSTDeployer
        • WSTDeployyer.properties

The trick is to map the “Generated Model” directory to the “MyConfiguration” Directory. Depending on the age of your deployer this is very easy, easy or just a bit of work….

In some deployers you can edit the name of the “Generated Model” directory in the dialog. If not than there is a deployer.ini file in the RXF installation directory, you can change the name of the “Generated Model” directory to the name of MyConfiguration.

Then move the project file (or the complete project if you have already content in it) to the MyComponent directory, start the Deployer Configuration (In Rhapsody under “Tools”) and select the just moved project file.

That’s it.

Deploy back the traveling modeler

Now that turned out to be a lot more difficult… The planning was to fly home on Sunday Evening. Or technically on monday morning, the flight from Delhi to Paris would leave at 00:15 Delhi Time, 19:45 CET ) I had a late flight (19:30-21:50)  from Hyderabad to Delhi and so less than 1,5 hours for my stop-over. From the trip to India I had learned that this was not nearly enough.
At first I thought, well lets just see what happens but since I did not book the flight as a complete flight, missing the plane from Delhi (to Paris) would not be an option.
So I checked the goindigo.in website and I found out I had been clever enough to book a flight with rebook and cancel options. Yeah….
So I rescheduled that flight to be early enough (16:00-18:25) That would be more than enough.
So I left the hotel exactly at 12:00 (CET: 7:30 Sunday )packed and paid. On my way home! I took a Uber to the airport, that was almost an hour drive ( and almost €8.- )

There I tried to figure out where I had to be. That is not too easy, the airport did not make announcements and I was pretty early so my flight did not yet show up on the monitors. But I could check in my luggage (I had booked the Fast Forward Option, a good idea in India…) quite fast. I did not have to stand in line.
So I was there hours too early but hee… better than 1 minute too late…. Spend some time shopping for home, drinking a Mango Lassi, eating something.
The plane left in time and flew on-time. My suitcase was in-time, the bus was easy to find and even waited for me so I was on the correct airport terminal early. checked in my suitcase within an hour of landing…. So it is possible.
But I seriously doubt if that is reproducible, So i did not mind being early. What I did mind is that just before boarding time, Air France started to make announcements about delays.

The plane was delayed. For more than an hour. Not cool, my connection in Paris was only 1:20…. not too long.
The plane left too late but promised to make up for lost time. It was an old Airbus 330. Also no USB chargers and very limited seating room for a continental flight..
On top of that the two ladies in front of me immediately reclined their seats the moment the “Fasten your Seatbelts” light went of. Sigh.

Next to me sat an old lady, very friendly but she only spoke French. i do speak a little French but not nearly as much as English or German… This was going to be a long flight.
Normally (I’m used to KLM) on long flights, you first get a drink, then dinner, with drinks and another drink or coffee after dinner. Then the lights go out and you can sleep (if you like) Air France pushed out drinks together with the food as fast as possible.
The ladies in front of me continued “sleeping” and did not eat. And refused to put her chair back. So I had about 30cm for my food. Thanks!
I managed to eat and drink that without accidents and noticed that there was not going to be anything more to drink or eat.
The ladies in front of me thought that this was the right time to change their minds and to order food and drinks. Thanks!
Chairs were kept in the sleep position, of course.
I got my earplugs and my face-mask and prepared to sleep. At take-off the family in the middle row, 2 rows before me already had trouble with their 3 kids but as soon as the lights went out the kids decided that it was time to start waking up the other passengers. Thanks!
The seats in the old A330 were clearly out-dated. So with a back that hurt, no sleep what so ever I ate my breakfast. The pilot had broken his promise and did not make up for the lost time so I would arrive an hour late in CDG, not really my favorite airport..
Flight attendents could not give much information, just that we landed on terminal 2F and that I had to go to 2E. Sounds close, but I know CDG, it is not close…
I gathered my luggage before the landing so I could run out of the plane fast, I even ignored the ladies in front of me and as soon as the plane was stopped I ran to the door. There I waited until it opened and I started my morning sport… I had less than 20 minutes but…. I made it! In spite of passport check and even a security check (WHY???) that cost me my water (grrr) I made it to the plane in time.
I crashed in my seat, luckily here there were some better tempered passengers, they had fun about me sweating and panting.
I didn’t care, I made it in time. I was pretty sure that my suit-case would not but I did not care. Air France would take care of that.

And then the pilot announced that we would have some delay because of the fog in the Netherlands… To make a long story short… that took 3,5 hours. Leaving the plane was not allowed (They would not let you in again…. many passengers with connecting flights left because they would not make their flights) so I stayed. There was water and a sandwich and finally we took off.
I arrived at Schiphol around . I thought: well there is a sunny side: My suitcase has made it now: not. CDG was not able to adapt. So I waited at the luggage belt for nothing. Then to KLM, report missing luggage, then the train home. I arrived home at 5:30pm, 32 hours after I left the hotel…

 

Happy modeling with Rhapsody!

Walter van der Heiden (wvdheiden@willert.de)

 

Deploy back

Introduction

The title is a bit double today, i was deployed back from india to home and I will explain how you can deploy to your Rhapsody project and not lose the “roundtrip” feature!

Deploy back Rhapsody

The purpose is to deploy and leave all files exactly where Rhapsody has generated them so that you are still able to do roundtripping.
It is not completely straightforward but certainly doable.

Assuming that you have a directory c:\work. In that you have 2 directories, Model and Code. The structure is as follows:

  • c:\Work
    • \Model
      • \MyModel
        • \MyComponent
          • \MyConfiguration
            • “This is where Rhapsody generates your code”
    • \Code
      • “This is where the project file for the IDE is
      • “Generated Model”
      • “RXF”
  • RXF install
    • Tools
      • WSTDeployer
        • WSTDeployyer.properties

The trick is to map the “Generated Model” directory to the “MyConfiguration” Directory. Depending on the age of your deployer this is very easy, easy or just a bit of work….

In some deployers you can edit the name of the “Generated Model” directory in the dialog. If not than there is a deployer.ini file in the RXF installation directory, you can change the name of the “Generated Model” directory to the name of MyConfiguration.

Then move the project file (or the complete project if you have already content in it) to the MyComponent directory, start the Deployer Configuration (In Rhapsody under “Tools”) and select the just moved project file.

That’s it.

Deploy back the traveling modeler

Now that turned out to be a lot more difficult… The planning was to fly home on Sunday Evening. Or technically on monday morning, the flight from Delhi to Paris would leave at 00:15 Delhi Time, 19:45 CET ) I had a late flight (19:30-21:50)  from Hyderabad to Delhi and so less than 1,5 hours for my stop-over. From the trip to India I had learned that this was not nearly enough.
At first I thought, well lets just see what happens but since I did not book the flight as a complete flight, missing the plane from Delhi (to Paris) would not be an option.
So I checked the goindigo.in website and I found out I had been clever enough to book a flight with rebook and cancel options. Yeah….
So I rescheduled that flight to be early enough (16:00-18:25) That would be more than enough.
So I left the hotel exactly at 12:00 (CET: 7:30 Sunday )packed and paid. On my way home! I took a Uber to the airport, that was almost an hour drive ( and almost €8.- )

There I tried to figure out where I had to be. That is not too easy, the airport did not make announcements and I was pretty early so my flight did not yet show up on the monitors. But I could check in my luggage (I had booked the Fast Forward Option, a good idea in India…) quite fast. I did not have to stand in line.
So I was there hours too early but hee… better than 1 minute too late…. Spend some time shopping for home, drinking a Mango Lassi, eating something.
The plane left in time and flew on-time. My suitcase was in-time, the bus was easy to find and even waited for me so I was on the correct airport terminal early. checked in my suitcase within an hour of landing…. So it is possible.
But I seriously doubt if that is reproducible, So i did not mind being early. What I did mind is that just before boarding time, Air France started to make announcements about delays.

The plane was delayed. For more than an hour. Not cool, my connection in Paris was only 1:20…. not too long.
The plane left too late but promised to make up for lost time. It was an old Airbus 330. Also no USB chargers and very limited seating room for a continental flight..
On top of that the two ladies in front of me immediately reclined their seats the moment the “Fasten your Seatbelts” light went of. Sigh.

Next to me sat an old lady, very friendly but she only spoke French. i do speak a little French but not nearly as much as English or German… This was going to be a long flight.
Normally (I’m used to KLM) on long flights, you first get a drink, then dinner, with drinks and another drink or coffee after dinner. Then the lights go out and you can sleep (if you like) Air France pushed out drinks together with the food as fast as possible.
The ladies in front of me continued “sleeping” and did not eat. And refused to put her chair back. So I had about 30cm for my food. Thanks!
I managed to eat and drink that without accidents and noticed that there was not going to be anything more to drink or eat.
The ladies in front of me thought that this was the right time to change their minds and to order food and drinks. Thanks!
Chairs were kept in the sleep position, of course.
I got my earplugs and my face-mask and prepared to sleep. At take-off the family in the middle row, 2 rows before me already had trouble with their 3 kids but as soon as the lights went out the kids decided that it was time to start waking up the other passengers. Thanks!
The seats in the old A330 were clearly out-dated. So with a back that hurt, no sleep what so ever I ate my breakfast. The pilot had broken his promise and did not make up for the lost time so I would arrive an hour late in CDG, not really my favorite airport..
Flight attendents could not give much information, just that we landed on terminal 2F and that I had to go to 2E. Sounds close, but I know CDG, it is not close…
I gathered my luggage before the landing so I could run out of the plane fast, I even ignored the ladies in front of me and as soon as the plane was stopped I ran to the door. There I waited until it opened and I started my morning sport… I had less than 20 minutes but…. I made it! In spite of passport check and even a security check (WHY???) that cost me my water (grrr) I made it to the plane in time.
I crashed in my seat, luckily here there were some better tempered passengers, they had fun about me sweating and panting.
I didn’t care, I made it in time. I was pretty sure that my suit-case would not but I did not care. Air France would take care of that.

And then the pilot announced that we would have some delay because of the fog in the Netherlands… To make a long story short… that took 3,5 hours. Leaving the plane was not allowed (They would not let you in again…. many passengers with connecting flights left because they would not make their flights) so I stayed. There was water and a sandwich and finally we took off.
I arrived at Schiphol around . I thought: well there is a sunny side: My suitcase has made it now: not. CDG was not able to adapt. So I waited at the luggage belt for nothing. Then to KLM, report missing luggage, then the train home. I arrived home at 5:30pm, 32 hours after I left the hotel…

 

Happy modeling with Rhapsody!

Walter van der Heiden (wvdheiden@willert.de)

 

Hyderabad

Indian Traffic

My destination was Hyderabad this time. Never been there before but I have been to India before. I really like india, nice people, beautiful country. The country is big (certainly compared to the Netherlands…) and the amount of people is huge (1.3 Billion!)
The traffic is just amazing. In Europe we mostly drive on the right side of the road, in the UK they drive on the left side and in India they drive wherever there is place…

The first time i was in India I was picked up at the airport in Mumbai (Bombay) for a taxi-drive to Pune, a 160 kilometer drive that too almost 4 hours.
The first half hour I spent saying goodbye to my life. I was pretty sure I would not survive the drive. After a while, however, you figure out the (actually very simple) rules of driving in India.

  • What’s behind you is not important. It’s their problem, not yours.
  • Honk at least once a minute. (Otherwise your car will explode, I think)
  • use every free space on the road.
  • use all available room next to a road as well.
  • You have priority if you are there first.
  • don’t be aggressive or mad, the others know what they are doing.

That’s about it. The last one is important. Most drivers know pretty well what they are doing. “But India has the highest mortality rate in traffic” i hear you say. Yes true. But that happens only outside of the city. In the city you just cannot drive fast enough to die in an accident.
In the same way you can cross the very busy streets. Have confidence in the others, they will see you and decide which side they will pass you. So just cross the street and don’t hesitate.

Indian Food

The main reason I really like to go to india is the food. Indian food is really awesome. Spicy and very different from our european food. I found out that Hyderabad is famous for its Biryani and that they eat spicier than in the rest of India.
I don’t mind, i’m used to eating quite spicy.
In India they also eat in a special way: with the hand. Only the right hand, the other hand is used for “other purposes” (Do the math…) That is a bit difficult being a lefty but I managed. Yes I ate with my hands as well. When in Rome, do as the Romans.

Deployer

I learned that the system of “Generate Code, Generate RXF files, Deploy, switch to IDE, compile” is still difficult for people to understand.

if you follow the IBM way of creating an adapter for Rhapsody, you generate code in Rhapsody, that will also generate a makefile and you build from Rhapsody. As already said, we decided to do this differently because:

  • command-line length in Windows. Large Applications cannot be built like this
  • too many settings and extra files you need for embedded targets

So we use a different approach.

  • Generate
    Still generates Code from the Rhapsody model
  • Build
    Does not really build but generates the RXF include files that provide the static settings for e.g. the Memory Blocks etc.
  • Deploy
    Depending on the version of the RXF, we have called deploy in the “run” phase but now we call that mostly in the “Build” phase.
    It takes your Rhapsody generated sources (And the RXF includes _and_ the complete RXF and inserts them in a prepared IDE project.
  • Switch to your IDE
    Windows TAB, your IDE will probably show you that files have changed
  • Compile
    Use your IDE to compile. And Debug.

What you lose in this way is the roundtripping, unless… you select the Rhapsody Generated Source Directory as Home for your IDE Project.

Common misunderstandings/problems:

  • using Tools, <RXF> Deployer Configuration only configures the deployer. It does NOT deploy!
  • You have to prepare your IDE project. We deliver the “Getting Started” project (And a backup) that works. Your own project must include some things like “RXF” and “Generated Source” Folders. Check your Documentation.
  • If you have made changes to your IDE project: SAVE!!!! Deploy will use the IDE settings on the disk and will also overwrite your changes…
  • Clean up your old Rhapsody sources in Rhapsody (Code, Clear Redundant Source Files) to prevent them from being deployed.

I hope this helps you in understanding the RXF!

Back to India

 

OK, that’s it, have fun with Rhapsody and the RXF!

Walter van der Heiden (wvdheiden@willert.de)

Development of Safety-critical Software

Content

This is also published TechLetter 6, written by Eike Römer. Translated by me and published on the Rhapsody BLOG to allow more people to read it.

The development of safety-critical software is often associated with a certification process. Experiences from the certification environment are presented together with possible work steps.

The procedure is based on the V-model. This Tech-letter covers requirements management, implementation, testing, and end-to-end traceability.

The presented experiences can be adapted to own projects.

Grph - Entwicklung sicherheitskritischer Software-290.png

Practical experience and possible work steps

Creating software for embedded systems in safety-critical areas often requires certification as well. Standards such as IEC 61508 or industry-specific standards are intended to ensure functional safety for safety-critical application areas. In this Techletter practical experiences of the Willert Software Tools GmbH in the range of the software certification are presented.

Example RXF-Cert

Willert develops a so-called semi-finished product, that, being only a part of the software, is being built together with the application software of customers later to create a unit. This unit then must be certified as a whole.

In the specific case, it is the “RXF-Cert” [1], a framework on which the code generator can be based on the UML tool IBM Rational Rhapsody [2] (see Figure 1). In addition to the framework source code and UML model, a “Certification package” is delivered consisting of documents and test suites that facilitate certification in the overall context.

Screen Shot 2018-04-03 at 16.43.06

Figure 1 – RXF-Cert as semi-product in the context of the customers application

Management of Requirements

Probably the most important part of the accompanying documents are the requirements. In order to manage their relationships, versions and status changes, many tools have become established in the market. Such tools are, for example, IBM Rational DOORS® [3] and Polarion [4]. Willert has chosen Polarion for his own use as part of the RXF-Cert project.

Screen Shot 2018-04-03 at 16.44.55

Figure 2 – Specifications and their links in the V-Model

The organization of the requirements has been made in the following levels (see Figure 2)::

  • Customer Requirements (Role of the Customer)
  • System-specification (Role of the SW-Architect)
  • (Software-)Module- and Operation-specification (Role of the developer).

The linking should be defined fixed from the lower level to the next highest level, as a “Satisfies” relationship.

A specification should always have one or more relationships with overlying specifications or requirements. Also links from the resulting software or the source code to the specifications are required here. This makes it clear which code section is used to implement which request (s).

The RXF-Cert comes with a Rhapsody UML model. In addition to the module specification and implementation with the associated code generation, this also contains visualizations of the architecture and of scenarios for more complex processes. In case of a certification diagrams bring the advantage that an auditor can more quickly grasp the construction and implementation of the software. Model elements should also have links to the specifications here.

To create representations for requests in UML tools, there are, for example, the IBM Rational Rhapsody Gateway tools [5] and the Willert ReqXChanger [6] tools. For the RXF-Cert the ReqXChanger, developed by Willert Software Tools, is used that connects e.g. Polarion via the standardized Requirements Interchange Format (ReqIF) and directly supports Rhapsody. Thus, representations for UML elements are also created in the requirements management tool and related to the associated requirements. The associated workflow is visualized later in the document in Figure 5

 

Ensuring functionality through Testing

Certification also requires proof that the functionality is being verified by testing. In a first RXF-Cert project, unit tests and code coverage analyzes were conducted on the basis of manually written C test cases and the gcov tool (from the gcc package) [7] in a test environment. Currently, the effort has been greatly reduced by using the model-based Test-tool BTC TestConductor [8]. In addition, these tests are also performed on the hardware of the target system instead of a PC environment. The results are returned to the test model from the target environment (see Figures 3 and 4).

The test case specification for the unit tests has been linked in the UML model with the implementations of the modules, so that also the test specifications from the model are mirrored in the requirements management tool and in conjunction with the specifications, herewith also a cover and Impact analysis up to the unit tests possible (see Figure 1).

Test Conductor

Figure 3 – Test execution on the target with feedback of the test results into the test model.

Coverage

Figure 4 – Results of the Code Coverage Analysis on the target environment

Cross-phase coverage and impact analysis

Coverage analyzes are important in order to determine, for example, whether all requirements have a test or whether all requirements are linked with software elements. In the approach presented above, coverage analyzes of the UML model can also be performed. From this documents can be generated that can be presented to an auditor.

Impact analyzes are necessary if, for example, requirements are changed during development. One goal is to be able to determine through all levels what needs to be adjusted as a requirement changes. The ReqXChanger can mark changed requests with stereotypes when retransferring requests to the UML tool (see Figure 6). For the certification process, it can be ensured that the software always takes into account the current state of the requirements.

Preparation of documents for certification

Traceability

Figure 5 – Exchange between UML Model und requirement Management

Impact Analysis

Figure 6 – Changed Requirement / Specification obtains Stereotype “Changed” in the model

Creating Certification Documents

From the standard it can be extracted which documentation components are expected. However, combining these into suitable documents and maintaining them involves some work. It therefore makes sense to create an overview document of all delivered goods. Here are source texts, documents and other artifacts of the delivery described and clearly identified including the consistent version numbers. The basics also include adding structure elements to each document, such as a table of contents with page references, a version history, and a cover page with the unique identifier and version. Likewise, a page number indicating the total number of pages on each page in order to be able to verify the completeness.

When recording the requirements, it should be noted from the outset that the corresponding documents must be created for certification. Printing the documents from our internal requirements management with Polarion in an appropriate form requires a lot of effort. The documents managed in Polarion itself can not be used to print the specifications if the links and thus the traceability should also be printed. It is not possible to filter only for specific link types or links to desired targets in the view. One of the consequences of this is that requirements list a relation to the IDs of their chapter headings (these have a hierarchical relationship in the document to each other). A certifier will now stumble upon references that he can not find because headings in the references show the Polarion internal ID, but the header itself does not display an ID. It is therefore strongly recommended that when selecting a tool it is taken into account that it can generate the documents accordingly or how to configure it accordingly. Also with Polarion it is possible via wiki or info pages to prepare the documents for printing accordingly.

Conducting (internal) Reviews

The review of the specification and elements of the software should be done in the requirements management tool. It is helpful to specify that for a “review attribute” (here: “status”) of work items (eg requirements) certain values ​​can only be set one after the other (see Figure 7).

Req Review.png

For the “Specify action”, Polarion has been configured to invite specified users to “approve” the work items. Here are two responsible persons. Only when these persons have both given their “Approval”, a status transition to “Reviewed” is possible. This fact is explained in the supplied validation plan and thus ensures the four-eyes principle in the review process.

Also reviews of models can be managed with this mechanism. In addition, the module specifications specify which SVN revision number (of a checked-in model unit) a review was carried out for. For new revisions, new reviews must be made accordingly.

At the code level, we have had good experience with the Crucible tool [9] and have created a PDF export plugin there that can be used to create code review reports suitable for certification.

Evaluation by a certification consultant

In order to assess the described status independently, we have obtained an evaluation of our procedure by an external certification consultant. This has brought many valuable experience. Among other things, we understood better what content and documents are required by the standard. For example, A security officer must be named in the company, who of course also lives up to his task, and there must be a corporate policy statement on the handling of software security in a “Safety Policy” document.

We have received a lot of positive feedback on the approach and process in development, as well as the approach to meeting the standard. For us in the consultation also the large difference in the standard, whether something is certified as software or as a tool (tool), clear. When you certify a tool, you only have to deal with about one-tenth of the IEC 61508 requirements than with a complete software certification. Nevertheless, we strive to classify our RXF-Cert as software in general. This must also be clearly documented and the user should be made aware of the field of application. If our RXF-Cert were e.g. Not only supporting the development of software, but also the systems engineering, would be added to several other requirements.

In conclusion, we still see the effort associated with certifying software as considerable – but it also shows for us that the requirements of the standard are absolutely meaningful. The development process becomes more sophisticated, the software quality can improve significantly and almost as a by-product the software becomes certifiable.

Passed certifications

The RXF-Cert has now been deployed in several functional safety software projects along with the customer applications. The areas Railway, Automotive and Space are represented. Some of these projects have already successfully passed the certification with the RXF-Cert package, others are currently or will only be in the project status in which the certification will be carried out in the near future. Thus, it has already been shown that the general procedure, meaningful use of tools and careful work steps described in this Techletter make it possible to plan and implement certification according to a standard based on IEC 61508.

Referenced Tools

[1] Willert RXF-Cert, Framework for modeling and code-generation of safety-critical Software:
https://www.willert.de/uml-rxf-cert

[2] IBM Rational Rhapsody, UML-Tool:
https://www.willert.de/rhapsody

[3] IBM Rational DOORS®, Requirements Management:
     https://www.willert.de/doors

[4] Siemens Polarion, Application Lifecycle Management:
https://www.willert.de/polarion/

[5] IBM Rational Rhapsody Gateway, Tool for the exchange and trace of Requirements:
https://www.willert.de/gateway

[6] Willert ReqXChanger, Tool for the exchange and trace of Requirements:
https://www.willert.de/reqxchanger

[7] gcov (from the gcc packet), Open Source Tool for Code Coverage Analysis:
https://gcc.gnu.org/onlinedocs/gcc/Gcov.html

[8] IBM Rational TestConductor, Model-based Testing:
http://www.willert.de/testconductor/

[9] Atlassian Crucible, Code Review Tool:
https://de.atlassian.com/software/crucible

 

Happy Modeling with Rhapsody!

Walter van der Heiden (wvdheiden@willert.de)
Eike Römer (eroemer@willert.de)

 

 

« Older posts Newer posts »

© 2025 Rhapsody TechBlog

Theme by Anders NorenUp ↑