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

Tag: Personal (Page 1 of 3)

🎸 Retired but Not Gone — and Rhapsody Plays On

So. It finally happened. And for a career spent living out of airports, I marked the occasion by doing the most gloriously retired thing I could think of: I took the train to Paris. No security lines, no gate changes — just the countryside sliding by, a coffee that didn’t cost eight euros, and absolutely nowhere I needed to be in a hurry. Retirement, lesson one: take it easy.

As of Wednesday, April 8th, I am officially retired — after 25 years with Willert and later SodiusWillert (to April 11th, if we’re being precise about it, and after this many years I’ve earned the right to be precise). A quarter of a century. That is… a lot of models.

There’s a lovely bit of symmetry to the timing, too. April 8th also happens to be Jannie’s birthday — my wife, who came along for the trip (that’s her in the photos below). So this year I gave her a slightly unconventional present: a full-time husband. She is being remarkably gracious about it.

And fittingly, I didn’t sign the papers at some grey desk back home. I signed them in Paris — a city that does endings and beginnings better than anywhere, with good coffee, better views, and not a single license-server error in sight. If you’re going to draw a line under a career, do it somewhere with a proper terrace. Highly recommended.

The room in Paris where it happened

And before anyone starts writing the eulogies: I’m retired, not gone. There’s a difference, and it’s an important one.

Here’s what retired means for me: no more 6 AM alarms to catch a flight to a customer site. No more license-server tickets at 23:00 on a Friday (Classic Rhapsody veterans know exactly what I’m talking about). No more juggling five time zones in a single week. I’ve done enough of that — honestly, I’ve done plenty. It’s time for the quieter life: more time with Jannie, more time for the things I kept saying I’d get to “after this next project.”

Jannie in Paris

Here’s what not gone means: I’m still here. Still writing this blog — probably more of it, now that I actually have the time. Still an IBM Champion, still knee-deep in Model-Based Systems Engineering, because you don’t spend 25 years loving this stuff and then just switch it off like a license server (which, again — IYKYK). You’ll still find me at DCUG Day, at TechXChange, at MESCONF, at ESE, at the conferences, in the community. Just… without the alarm clock.

Think of it as going from full-time to full-enthusiasm.

Meanwhile, the world keeps turning — Rhapsody 10.0.3

And of course, the field doesn’t pause just because I clocked out. Right on cue, IBM Engineering Rhapsody 10.0.3 landed — and it’s a genuinely good release, aimed squarely at large models and distributed teams. A few things caught my eye:

  • One-Click Environment Setup. Cygwin and the Rhapsody transforms installed in a single click, turning what used to be an afternoon of yak-shaving into a couple of minutes. Every new engineer who never has to fight that setup owes 10.0.3 a quiet thank-you.
  • A load progress indicator that actually moves. Small thing, huge relief. No more staring at a frozen-looking Rhapsody wondering if it died or is just thinking. It’s thinking. Now it tells you.
  • Zoom (100–500%) and type-to-filter in tables and matrices. If you live in the big traceability matrices like I do, this is the quality-of-life upgrade you didn’t know you were allowed to ask for.
  • Auto-generated flowcharts from legacy code. Point it at the old code, get operational flowcharts out. Anyone who’s ever inherited a mystery codebase will appreciate this one.

And then there’s the one that made me laugh out loud: 10.0.3 ships an MCP server — read access to your Rhapsody models via the Model Context Protocol, near-instant analytics, “Bring Your Own AI.” Now… where have I heard that idea before? 😏 Those of you who’ve followed my little rhapsodymcp.com adventures know this has been my personal playground for a while now. So let me just say: it’s wonderful to see MCP go official in the product. Great minds, and all that. I’ll be poking at IBM’s version very soon — retired hobby project, meet enterprise feature.

One more chapter

The best part of retirement, I’m discovering, is that curiosity doesn’t retire. I get to play with Rhapsody 10.0.3 purely because I want to, not because a project needs it by Thursday. That’s a good place to be.

So: thank you — to everyone at Willert and SodiusWillert, and to everyone I’ve worked with, learned from, argued about UML with, and shared a stage (or a beer) with over these 25 years. This isn’t goodbye. It’s just the start of a slightly slower, considerably more enjoyable, verse.

Paris in spring

See you in the comments. And at the next conference.

P.S. — Yes, I’ll still answer your Rhapsody questions. No, not before coffee. Some things retirement will never change. And Jannie — happy birthday. Sorry the gift was me.

What’s your favourite 10.0.3 feature so far — and if you’ve stepped back from the daily grind but not the passion, how’s that working out for you? Let me know in the comments below.


Happy Modeling ( preferably with Rhapsody)!!

Walter van der Heiden
walter@vdh-informatica.com

Code generation

Introduction

I am a heavy FaceBook user. ( I know, I know….) One of the things FaceBook does is some kind of daily report with things that you posted exactly x years back.
I used to really like that but in this COVID times these now start to annoy me because they remind me of the travelling times I had before.
I am now officially no longer the “Travelling Modeler” but the “Stay at Home Modeler”…
Well, it is what it is. Since 2 weeks I am not even allowed to travel to the office anymore since Germany does not want to have Dutch people without being tested or quarantined.

Now I assumed my life would be a lot less stressful but nothing is more untrue, I’m now clicking myself from online meeting to online meeting with Zoom via Webex, Skype and Teams back to my own desktop.
When there is time at night, the family takes up that time. Don’t get me wrong, I love that and it’s fantastic but there is hardly time left to write a BLOG. Like I used to have in Airport Lounges and Hotel Rooms.

So I just have to take that time otherwise and I hope I will succeed in giving you the Rhapsody info you need from my home.
The main picture of this post is the view from my living room. Could be worse I think.

Conspiracy Theory

They’ve always been there but in the Netherlands it’s a hot item nowadays: Conspiracy Theories about everything but now more than ever about COVID. I am not going to discuss that here, that is where I have FaceBook for, but I want to discuss one work related “Conspiracy Theory”: People are denying Code generation. This is where I want to stand up and convince people.

Because this hits me, time after time. Why on earth would you want to use UML and SysML to just draw pictures and then write software by hand if your tool can generate the code for you???

The sad thing about people believing in Conspiracy Theories is that it is extremely hard to convince them otherwise. They always have arguments “out of the blue” mostly lacking any truth or “conveniently” bending truths.

Same with the “Anti-CGers”. All their arguments have been wiped away years ago but they keep popping up.

  • Code Generation makes code too slow/big/unreadable
    Not true. In fact, our Code generator makes smaller code than the average developer does. Certainly when projects get either large or old or both. We all have seen “old” code that is no longer understandable. certainly if the developer is a fan of “It was hard to write, it should be hard to read”.
    Generated code is also faster and perfectly readable. in fact, the consistent structure of the code makes that you can read ALL code. Also the stuff your colleagues have written. The fact that you can make changes to your state-machine and the whole code is written new, from the ground up, instead of decorated with all sorts of work-arounds is saving valuable development and testing time.
  • creating a model that is suitable for Code Generation takes longer than simply write the code.
    Not even closely true. When using Code generation from a UML model you have to create a correct model anyway. Otherwise your model is something that only you can understand. UML and SysML have a very precise semantic, if you don’t follow that,your code has nothing to do with your model.
  • Generated Code can not be certified.
    On the contrary: Certifiers love the consistency and, for all, the traceability of generated code. Yes, traceability. Automatically generated if you create the links from the requirements to your model, the code generator automatically inserts the requirements numbers and text in your code. Without an error. Since testing can be done from the model (but also in the generated code) automatically, setting up that for a certification is easy. I know, I’ve done it. Multiple times.
  • Code generators are expensive.
    Well that depends on what your perception on “expensive” is. But for less than 5k you have a UML Tool that generates code in ‘C’, ‘C++’ or ‘JAVA”, including highly optimized framework and debugger. Including a full year of support. By me. Or my colleagues. I think that is a great deal.

In times where we have less social contact between the developers of projects, using a good structured code is becoming even more important. Cooperating is hard enough, let’s cooperate on model level so the communication is much clearer. Let the Code Generator do the hard work.

The truth is that for many die-hard ‘C’ and even ‘C++’ programmers it is hard to leave their “guru-status” behind and use a code-generator that writes better, smaller, faster and more readable code.
But like with COVID: it is what it is. You will not become a “lesser Guru” by letting a code generator do the largest (and mostly boring) part of your job.
Even the best code generator needs a smart human being to operate it the right way: you.

So! Happy code generating (at home!) with Rhapsody!

Walter van der Heiden (wvdheiden@sodiuswillert.com)

Berlin #100

Intro

It is not only work… After a lot of work and travel it was time for a short break. For some time now I promised my sons to take them to Berlin and finally we managed to find the time.
First we drove to Bückeburg by car to stay at my apartment, the next day we would leave early to catch the train to Berlin. As I have found out a car is useless in most big cities, there is perfect public transport and parking is nearly impossible and costs a fortune.

100

This is BLOG # 100! Never thought 2 years ago that I would write 100 articles! This year also KLM (my favorite airline) celebrates 100 years, congrats!

Police

First we had to overcome some police activity. As soon as we crossed the border a fast BMW overtook us and a sign came up “Police, Follow”. I thought that would be a border control but it turned out I had forgotten my MOT for 1,5 years… In the Netherlands they send you an email when it is due but in Germany they don’t….
Also my tires were “Formula 1 ready” So I had some explaining to do. Luckily the police man were quite understanding, they soon figured out that I did not do that on purpose and they let me go with a small fine and the promise that I would take care of it.

Train

Trains are cool in germany. If you book on time and stick to a certain train you can travel quite far for a small amount of money. We even had first class seats. It was a nice drive and it went very fast. Impossible to match that with a car.

Hotel

The hotel was right next to the central station, perfect to use as a base to sightsee Berlin. The room had bunk 2 bunk beds but Robbert volunteered to sleep “upstairs”. Further it was not large but we were not there to enjoy the hotel room, but clean and the breakfast was good.

Berlin

Time to hit the city. We did the usual stuff, Parliaments building, Brandenburger gate, Jewish monument, Checkpoint Charlie etc.
On Wednesday a friend who was born in East-Berlin, showed us around in the eastern part, very very nice. We had lunch in the TV Tower (207 meters high) Also we saw the largest part of the Wall that is still there.
The next day we took the metro to see some other stuff like the Karl-Marx allee and much more. Berlin is very very nice. After every corner there is a reason to visit the city again. This month also is the celebration of 30 years since breaking the Berlin Wall.

AUTOSAR Workflow

Being without a car still cannot drag me away from AUTOSAR. We now have quite a nice AUTOSAR workflow.
You can start with SysML and then use M2M to create an AUTOSAR model, export that to an AUTOSAR authoring tool, add some more information and even use Rhapsody to implement AUTOSAR compliant SWC’s that contain statemachines.
You can also start with ARXML from a third party, read that in, use M2M to create a SysML model (Or UML) and the create your architecture there.

Back Home

Finally we had to return home, or at least to Bückeburg by train. Really tired (we walked more than 40 kilometer…) we hit our beds. On Friday I kept my promise to the policeman and went to the TÜV for a checkup. 2 days later the Dutch garage would switch my tires to wintertires. All is OK again.

Happy modeling with Rhapsody!

Walter van der Heiden

Dauwpop & using Rhapsody code in a library

Traveling Modelers also need vacation once and a while. So last week I had that! And enjoyed it at home. The only thing I did was visiting a Music Festival. But that was on walking distance from my home. It’s called “Dauwpop” which means “Dew Pop”, dew as the stuff that makes the grass wet in the morning and Pop after Popmusic.
It is called that way because in the Netherlands we have a tradition on Ascension Day: “Dauwtrappen”. That is to step on the morning dew. And that is what happens. On that day, mostly young people, go out very early and walk or ride bikes. They do that while taking drinks and stop regularly to drink something.

The festival also starts in the morning although not that early… My main reason for going was that M<Ali Jazz (from Faithless) would be there with a DJ session. But he cancelled last minute. Bad luck, but I still went there with my 2 sons and we had a great day.

A customer asked us a question via support this week. They wanted to use Rhapsody code in a library. The main code was made in Qt (pronounced “cute”) but they wanted to use Rhapsody for the control logic.

So the code must be compiled and then linked into a library.

That, unfortunately, is not it, some more must be done to get it working.

In the general Tab of a Rhapsody Component there are three selections, “Executable”, “Library” and “Other”. There is only one choice possible here. Both the OXF and the RXF use that to generate different code.

When you only use non-active and non-reactive classes and initialize everything dynamically, you don’t have to do anything. You can then just include the correct .h files where you want to use Rhapsody generated classes. But if you do use static objects you have to call the InitRelations() function that is generated, And if you use state-charts and/or activity diagrams you have to initialize and start the framework.

When “Executable” is selected, Rhapsody will generate your main function (Or a function that is directly called by main, depending on the OS you use) In case of a “Library”, a function is generated to start the framework and to initialize the objects in your model. This is true for both RXF and OXF. (In some RXF Versions this was not totally implemented…. take the generated file for the EXE and use that for the LIB… that’ll work.)

The best way to learn how to do this is to start with a simple model first. Create 2 Components with <Name>_LIB and <Name>_EXE, select “Executable” and “Library” respectively and generate code. I always use beyond compare to compare two directories but there are enough other good working compare tools.

Then create 2 classes (“A” and “B”), connect them using an association, create a third class with a structure diagram to instantiate the other 2 (Don’t forget to create an instance of that class !!) now give them a small state-machine (or activity diagram) and make one of them active.

Again, generate code and see the differences. I made life simple for you…. I made the model and saved it (In Rhapsody 8.1.5, old but probably useable by everybody)

Happy Modeling with Rhapsody

Walter van der Heiden (wvdheiden@sodiuswillert.com)

Transylvania

Je komt nog eens ergens

That is Dutch and means something like: “You go places”. Yes I certainly do. This time I had to be in Rumania to do a training for a customer that has a development center there.
Because everything was organized in a hurry I did not really prepare well for this trip. That is, I did the necessary things but no more than that. So I was not be able to visit the HardRock Cafe in Bucharest since that is a 5 hour drive away from Sibiu where I was located. My flights would stop in Bucharest but not long enough unfortunately.
My original plan to fly to Bucharest and take a car was not a good one, Romania does not have a concept of highways like we do. So the average speed will be under 50km/h which effectively rules out using a rental car. Also the rentals were really expensive, no idea why, cars are not really expensive in Rumania.
I also did not look up anything about the place I was about to visit..

Rumania is not _really_ Europe

They are part of the European Union, without the Euro though, they use their own currency, but that was not really noticeable. KLM did not offer flights to Sibiu on their website although I managed to find flights from AMS via OPT to SBZ (OPT = Bucharest, SBZ is Sibiu) via another website. I decided to phone with the Platinum Hotline (Hey! You have to use what you’ve got!) and they advised me to use the Air France Website and…. bingo. That was possible. The wonders of Air Travel.. KLM-Air France say they are one organization but as far as I know they are far from that.
Also going in and out I had to show my ID. Schengen??? “Never heard of”…

Looking Good, or?

Coincidentally I looked on my phone in the Air France app and I noticed that there was a message. I looked on it and it said: Your flight is cancelled, please contact the ticketing Buro.
Cool. What if I had not looked??? So phone again with the hotline. This was all done during my previous trip in a car driving from Germany to France via Switzerland… They said the last part of the trip was cancelled. This was the Tarom (Rumanian Air Company) flight from OTP-SBZ. First they told me I had to fly on another day. After i (still politely) explained them that that was a real bad idea because people would be waiting for me… They completely rebooked me to a Lufthansa flight AMS-VIE-MUC-SBZ (Yes… Vienna, Munich in that order…) Hopping through Europe like a crazy kangaroo… Also I would arrive at 1:10 am on the next day.

Later at home I phoned again and now they had a better alternative, AMS-MUC-SBZ, arriving 18:00 on the correct day. “Geht doch”…

Without Status…

I had already arranged that my XP would still be booked (important, I do not want to lose my fresh status on KLM) but I noticed that contrary to KLM (Where they really treat you well as a status passenger) Lufthansa did not know me at all…. And did not let me in their lounge nor would they give me a nice chair. They promised me a window seat on the flight from Munich. I had a seat next to the place where normally the windows are. Unfortunately not on that row….
But I arrived. And on time. The hotel was also close to the airport and the company where I had to be. Going by foot was not advised so i still used taxis but they are very cheap in Rumania. (Even when the taxi driver screws you…)

Dracula

Yes… I have to mention it… The part of Rumania where I was is Transylvania. Home of the famous Count Dracula. And Vampires and so. Luckily I do not believe in that.
Sibiu is a very nice city, definitively worth another visit!!!
My friend Jan Scholten (who has been in Rumania before) told me that Sibiu has a German speaking minority and that the town was also known as “Hermannstadt“. Since it has been the cultural capital of Europe (in 2007) a lot of Restoration took place and it looks really beautiful!

Training

This was again an example of the necessity of having a training when you start to use Rhapsody. There are so many things that you can learn very fast from an experienced person but can hardly read in a book because you cannot find the connection between all that is written.
The Rhapsody manual is 600 pages, it does not nearly cover all topics and still you find nothing unless you really know what you are looking for.
Yes, partly that is due to the fact that the Rhapsody GUI is not always as easy as it could be. But I know that people are working very, very hard to improve that. Rhapsody 8.4 will be a great step in that direction. But even if the GUI would have been perfect, it is still a lot of stuff you have to learn.

Shortcuts

Three times in a row I met people that were quite experienced in Rhapsody but still did not know the keyboard shortcuts that make life so much easier….

  • Pressing “Alt” during resizing elements on diagrams will only resize the “outer” element and leave the content of the resized element as it is. (You can do that via the normal menu as well…)
  • Pressing “Shift” when dragging up or down in a sequence diagram will shift everything under the cursor up or down. (That way you can create or fill space on a Sequence diagram)
  • You can “multi” select using Shift and/or CTRL. You can then delete multiple items but also change “common” features or Display Options.
  • In the (OK…not so really cool) Editor you can select Rhapsody Model elements with CTRL-Space. (Intellivisor) The one in Eclipse (Or VS) is better but it’s not bad at all! Saves typing!
    Have you already tried the “Mouse menu” feature? Right clicking in a diagram gives you all possible model elements for that position. You don’t have to move the mouse to the menu and back!

That’s it! Have fun modeling with Rhapsody!

Walter van der Heiden (wvdheiden@willert.de)

Roger Waters Factory Pattern

Us + Them

That is the name of the Roger Waters tour. I managed to buy tickets for the concert in the ZiggoDome on June 22 and I went there with my cousin and my son. It was a bit stressful… I just arrived from Switzerland, went home by train and back to 020 by car. But I managed and… I have seen a lot of concerts, ranging from mwoah OK to fabulous but this was one of the best (if not the best) I ever saw. And I have seen Pink Floyd (Rotterdam 1993), Genesis, U2, the Stones and Peter Gabriel (multiple times)


Sound quality was absolutely awesome, before the break the show was fantastic, after the break it became breath-taking. Not bad for a 75-year-old guy…
I think the Pink Floyd guys always had fantastic sound quality but the technology now really offers them what they wanted to have 30 years ago.

The Factory you see is (of course) Battersea Power Station, as seen on the Animals Album. It was projected as were many other things. I am listening to the Animals Album while I am typing this….

Battersea Power Station from the river.jpg
By Alberto PascualOwn work, CC BY-SA 3.0, Link

 

OK… back to work. speaking about Factory…

That reminds me of the factory pattern. A nice pattern that helps you creating objects where you don’t know at compile time what class you want to use.
I always look for design patterns in one of my favourite books: Head First Design Patterns. Do yourself a favour: buy it (And in English please…, the German translation sucks.)

I use the Factory pattern in a model where I have 3 different platforms to generate code for, Linux, Windows and Keil CMSIS, and there is a possibility that it needs to be adapted to QNX as well.
I want to have a common debug output but also some interprocess communication that works different on all platforms.
This sounds easy, just define interfaces and inherit from them. (Or to be correct: create realizations)
Now that sounds cool but when you need to instantiate the objects (semi-)dynamically you cannot use that. You have to call something that is not the same on all platforms.
This is where the factory comes in. You create a global Class/Object (with a fixed name i.e. AbstractFactory) that has a static function “getInstance” (Yes correct… that is a singleton!) that checks if a static variable is already filled with a value. If NULL it will create an object and store it in the class variable otherwise it just returns the variable.

You then have a certified entry point. The Abstract Factory class should then have functions that create concrete factories for the environment. In this case I needed a LinuxFactory, a QNX Factory and a Windows Factory.

In the concrete factories you will make create_xxx functions that create objects for the classes you need. This can be multiple objects but also a singleton.

In a random class you can then call:

MyDebug = AbstractFactory::getInstance()->createDebugOutput()

This will give you a pointer to a class that handles the debug output. This is also a singleton. For the IPC it was just a “new” that created an IPC Channel.

Design Patterns rule!

Some useful reminders:

  • Separate what varies from what stays the same
  • Composition is better than Inheritance
  • Program to an Interface rather than to an implementation.

That was it, happy modeling with Rhapsody

Walter van der Heiden (wvdheiden@willert.de)

2019

Introduction

First of all: All a Happy New Year! OK, OK… the year is already 2 weeks old… Sorry… not much time to write earlier. Anyways… please let 2019 be a year full of modeling. There will be lots of exciting things this year, new versions of tools, new versions of standards and, as usual, a lot of work. Unfortunately there will also be a lot of old stuff this year where we are still fighting with. Let me take you on a trip to memory lane.

Paths

It is 2019…. and still we are fighting with path- and filenames containing spaces and slash and or backslash.
I cannot prove what my assumption is, but I think I’m not far off the truth.

The first DOS (MS-DOS) Version did not contain directories. It was all a flat file system where there was room for a maximum of 128 files in the “root”. Since there were only floppy-disks with 360kB disk space this was not a big problem.

In the same time (Start of the 1980’s) there were other systems, one of them was CP/M. They already had directories, although very primitive. You had 26 directories (You can guess…. ‘A’-‘Z’…)

You already had UNIX at that time which was far more advanced than MS-DOS or CP/M, that had real directories. The Bell Lab guys had thought of that. You could type in paths with a ‘/’ (slash) as separator character.

I think that Bill Gates and his staff just stole the concept from Unix without really understanding the true meaning and working (As they would repeat many many times after that) and exchanged the ‘/’ with ‘\’. So no-one would notice that it was stolen (duh…) and not grasping the concept of the ‘\’ (escape character)

Spaces

Since the MS-DOS file system was an early version of FAT, the filenames were limited to 8.3, 8 characters for the filenames, 3 for the extension. Many versions later Microsoft introduced the concept of long filenames. They were “hacked” into the file system, there was a flag indicating that there was a long filename. The short filename was built up from the long name, removing characters and adding a ‘~’. So we jokingly said that the name of the company should have been changed to “Micros~1”

Nowadays most modern tools can handle decent filenames up to 256 characters and long paths. But Windows would not be Windows if it did not have a couple of unpleasant surprises. For compatibility, a lot of old (partly ancient) API calls are still part of Windows and will still work. So some older tools have “side-effects” that show up when you least expect it.

What does this have to do with Rhapsody? Well.. also Rhapsody is sometimes (indirectly) influenced by old Microsoft behavior. If you want to create a path while creating a new project you will notice that Rhapsody cannot create a directory for you directly in the root of your drive… The error message is cryptic ( “No rights to write” or something similar ) so it takes a while to figure that out. Is basically the problem with using the old (but still present) Windows API calls.

Other issues

Further, Rhapsody is mostly not the only tool involved in the development, (certainly not for Willert Customers, I will make sure they use code generation! ) mostly there are other tools. Often called via command line. And this is where the “Microsoft Moments” come up. (A Microsoft Moment: the moment you realize the world can be saved by destroying Redmond WA)
Because the command line has issues, depending on what version. We have searched and searched for inexplicable errors multiple times just to find out that on one machine Windows would not accept the “/” in a path or a space.
Let me not shout too much at Microsoft. The days of “If Microsoft ever makes something that doesn’t suck it will be a vacuum cleaner ” are behind us. Their hardware has actually always been good. And they improved a lot lately. This opposed to Apple who are definitely losing it with every new OS version.

2019

The first weeks have been quiet but 2019 already promises a lot of trips for your traveling modeler. I will be blogging! Happy modeling with Rhapsody!

Walter van der Heiden (wvdheiden@willert.de)

Using Rhapsody in vacation time…

Vacation!

Hi! And sorry for the low BLOG frequency. It’s vacation time. Not that I am on vacation, that would actually mean I have more time to write… No, I am busy at the moment, others are on vacation which leads to more work and I have a lot to do  privately: I’m building a new house.
That is… I have other people build me a house… As I always say: I have two right hands but unfortunately I am left-handed… (BTW: Today August 13 is international left-hander day!!)
So I do not build but that does not mean my work is done… there is a lot to do besides physically building.
So we did not planned a holiday because the house should have been finished around this time….
“Should have been”?? Yep. It’s not.

When software projects go rogue and take longer than planned, one of the things people (non-involved people…) say is: “These software projects… always late… they should learn how to plan just like the people who build houses.”
Well…. That is just sooo not true.. building projects also go rogue. Mine does but others do as well.
Builders plan but the same way software people plan. So plenty of space for mistakes and “unknown”
In my case the architect designed my house with a CAD tool. Not a very advanced one, I am still waiting on a 3D view…, but that is how he did it. The guy is an artist and he draws beautiful houses. We were very enthusiastic about it and we even got the permission to build it from our community (Yes that is needed in the Netherlands)

There were a lot of prerequisites that we had to comply with, it had to fit in a certain part of our (own!!!) ground and it had to have a straw roof (To make it look like the other farms in the neighbourhood)
I did not want that, I wanted Tesla Tiles that create power, but hey…
So the architect draw the straw roof. The drawings of the architect then have to be enhanced by a constructor that knows how you build a house. Then the builder starts organising sub contractors to deliver parts.
It turned out when he ordered the roof that the angle was not steep enough. So the roofer would do it but with our guarantee.
So back to the drawing board and half a year delay (New permit, new calculations…)
So don’t tell me building houses goes better than building software…

So I asked myself: Would modelling have helped here?
I think so. The fact that a straw roof needs an angle of more than 45º is basic knowledge that should have been a design rule in the CAD program.
Moreover, I have not seen anybody work with a tool like Doors or Polarion to fix the house requirements. It is more advanced than the last time I built a house (1986) but it is with Mail, WhatsApp and Word that the house is built.

Back to Rhapsody

Vacation time is a good time to work on improving your Rhapsody models!
Sometimes customers ask me to do a review on a Rhapsody model. What do I do in a review?
It depends of course but for totally new models I do a couple of steps which I want to share with you:

  1. Check how old the model is. You cannot see it all but you can ask (..) and check if the model has CGCompatibilityPreX.Y Settings. They tell you the conversion already performed on the model (And the fact that the creators did not know what to do with it)
  2. Do a Check Model ( “Tools”, “Check Model”, “<name>” ) This should give you a lot of information about the model. Most common warnings are: “Default Names” and “Empty Description” but there are many more.
    The more warnings, the less precise the model is built
  3. Use Metrics to determine the number of elements in the model. Check for requirements, sequence diagrams and classes. There should be a fair number of requirements and a lot of sequence diagrams. unfortunately IBM stopped using the Metrics in 8.2. There is a more complicated system to still do it.
  4. Use the built-in document creator ( “Tools” “Report on model”, then select only “Include Overridden Properties” ) to look at the overridden properties. This should be limited to profiles.
  5. Do a general check.
    1. How do the names look? Consistent?
    2. How many packages compared to classes?
    3. Are there requirements used?
    4. Are there any Sequence Diagrams?
    5. Little number of properties is OK but not much
    6. What is the number of elements on diagrams. Yes that can be more than the “normal” 7+-2 but they should be understandable
    7. Are comments used?
    8. How is the diagram navigation?
    9. How many level of state-chart are there? One level or at most one sub-state-chart is OK. Everything else must be documented and proved necessary.
    10. Are model elements described in comment?

This is something that you can check yourself…. Do it sometimes.

Happy Modeling with Rhapsody

Greetings from Motown!

Walter van der Heiden (wvdheiden@willert.de)

Florida 4 – Kennedy Space Center

Youth dreams

One of the things I had planned a long time was the visit to the Kennedy Space Center in Florida. The chapter is called youth dreams and that is exactly what this was.
As a small kid I was completely mad about everything that had to do with space. I followed everything I could see on television about rockets and so on. I was listening to the radio when Apollo 8 was flying around the moon christmas 1968, shivering when the communication was restored.
And on june 21, 1969 (actually june 22 already in Europe) my parents woke me up in the middle of the night to watch the moon landing “live”
I watched every rocket launch there was on television, sitting behind the couch, not making a single sound so that my parents would not hear me. I later understood that my parents choosed to pretend not to notice me to give me the chance to watch and not loose their credibility…
But in that days I never expected to ever be closer to one of those places like Cape Kennedy or some NASA center.
But times change, the small kid idolate of rockets grew up to be the traveling modeler and travels the world. And now I had time to visit the Space Center, together with my son Robert.

Just Awesome

To give it away up-front: If you ever can: go there. It is not cheap but worth every penny. They have all the cool stuff, moonlander, Apollo, Saturn V rocket, a piece of the moon you can touch (How cool is that?) and many many more. Telling you everything would spoil half the fun. Don’t forget to take the trip to the actual launch center!

Back to reality…

Rhapsody…. It is used a lot for aerospace/avionics The tool fits very nicely with the requirements in that world. They are totally different than the automotive. Short difference: Automotive builds millions of devices for thousands of Euro’s, Avionics build thousands of devices for millions of euro’s. That is a difference. Plus that in avionics the complete top 10 of important items is safety. Not that Automotive doesn’t do safety but they do it different.

OK. Thanks! Happy Modeling with Rhapsody. Remember: the Sky is the limit!

Walter van der Heiden (wvdheiden@willert.de)

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 alphabetically, A, B, C, D. BrowserUnsorted.JPGThis is just the “visual” sort, you can switch that off 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 alphabetical 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)

« Older posts

© 2026 Rhapsody TechBlog

Theme by Anders NorenUp ↑