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

Tag: USA (Page 1 of 2)

From the Depths to the Heights: Rhapsody SE and the Grand Canyon

Every year in January I go to Phoenix (Scottsdale actually), for the yearly 321-Gang kick-off. Like last year, I took Jannie with me (i have a truckload of KLM miles to spend), and although I had to work, we had some free time to see some things. So we decided to go to the Grand Canyon. Yes, that’s quite a drive, but I like driving, certainly in the USA. Very relaxed there.

I’ve been at the Grand Canyon before—many years ago on a road trip from Minneapolis to Las Vegas. But that’s a story for another time.

The drive from Phoenix was nice enough—20°C and sunny (and no, I don’t use FreeDumb Units). But once we got up to the South Rim? Different story entirely. Way, way colder. Like, “why didn’t I pack better clothes for this” cold.

[Photo: Grand Canyon winter view - those layered rock formations]

Jannie was smart enough to bring proper winter gear. Me? Not so much. But hey, the views were worth the frozen fingers.

A Canyon of Perspective
(and Frozen Fingers)

Standing there at the rim, trying to take decent photos while my fingers slowly turned into ice cubes, watching the layers of geological history unfold in the winter light, I couldn’t help but think about layers of a different kind—the architectural layers we’ve been building in the new IBM Rhapsody Systems Engineering (Rhapsody SE).

The Grand Canyon has this way of putting things into perspective, doesn’t it? There I was, looking down at rock formations that took millions of years to create, thinking about how we systems engineers are always trying to manage complexity and time in our own projects. The Vishnu Schist at the bottom? That’s like our foundational architecture. The Kaibab Limestone at the top? Well, that’s probably the user interface everyone actually sees and judges us by.

But here’s where it gets interesting (and where my mind inevitably wandered back to work, because apparently I can’t help myself even at one of the world’s natural wonders)—the Grand Canyon makes all those layers visible. You can see the relationships, the dependencies, the way each layer built upon the previous one. And that’s exactly what we’ve been trying to achieve with systems engineering for… well, forever.

Enter Rhapsody SE
(From the Outside Looking In)

Which brings me to the real reason I’m writing this post. Now, full disclosure—I’m still an “old fashioned” Rhapsody Classic guy. Haven’t made the jump to Rhapsody SE yet. But I’ve been reading about it, talking to people who have tried it, and honestly? It sounds like someone finally listened to what we systems engineers actually needed.

[Screenshot placeholder: Rhapsody SE web interface - if someone can send me one!]

What’s Different This Time?

First off, it’s web-based. No more “Can you install this on my machine?” or “The license server is down again” conversations. You just… open a browser. Revolutionary, right? Well, for our industry, it kind of is.

But here’s the thing that really caught my attention: SysML V2 support. Finally! I mean, we’ve all been waiting for this for what feels like forever. It’s supposed to be like moving from a horse-drawn carriage to a Tesla. Sure, both get you there, but one makes the journey significantly more pleasant and efficient.

[Photo: Me looking cold but happy at the Grand Canyon - because why not?]

Of course, I’m still stuck in Classic Rhapsody land for now. But a guy can dream, right?

The Collaboration Game-Changer

Standing at Hopi Point (thankfully they had a heated visitor center), watching tourists from around the world gather to see the same incredible view despite the cold, it struck me how good collaboration really needs that shared perspective—that common view of what you’re all working on. That’s what Rhapsody SE is supposed to be all about.

In Classic Rhapsody, collaboration often feels like playing telephone. You work on your part of the model, export it, someone else imports it, merge conflicts happen, and suddenly you’re in a three-hour meeting trying to figure out why the state machine doesn’t match the interface definition anymore.

Sound familiar? Yeah, thought so.

From what I’m hearing, Rhapsody SE is supposed to change this. Everyone’s looking at the same “canyon”—the same live model, the same data, the same current state of the architecture. No more version conflicts, no more “Well, in my version…” discussions.

At least, that’s the promise. I’ll believe it when I see it, but I’m cautiously optimistic.

[Screenshot placeholder: Rhapsody SE collaborative interface showing real-time updates - anyone?]

Real-Time Everything

The Grand Canyon was carved by the Colorado River over millions of years, but today’s business environment doesn’t give us millions of years to get our systems right. We need real-time everything: real-time collaboration, real-time updates, real-time validation.

SysML V2 and other data and workflow APIs enable model-based integrations with downstream domains as cross-domain digital threads, boosting productivity and accelerating system engineering processes. This is the kind of integration we’ve been promising stakeholders for years. Finally, we can actually deliver on it.

The View from Here

As I walked the Rim Trail that day, moving from viewpoint to viewpoint, each offering a slightly different perspective on the same magnificent canyon, I realized that’s what good systems engineering is about—providing multiple perspectives on the same system, helping stakeholders understand the relationships and dependencies that aren’t immediately obvious.

Rhapsody SE feels like it’s finally giving us the tools to create those multiple perspectives without having to maintain separate models or worry about consistency. The solution supports systems of all sizes, from small projects to large enterprises, by providing layers of abstraction to manage different levels of detail and keep models clear and manageable.

The Verdict (From Someone Who Hasn’t Used It Yet)

Will Rhapsody SE solve all our systems engineering problems? Probably not. (Nothing ever does, really.) Will it make some of our daily frustrations disappear? Maybe. And after using Classic Rhapsody for over a decade, I’m willing to be hopeful.

The Grand Canyon took millions of years to become what it is today, and it’s still changing. Our systems engineering practices are evolving too, just a bit faster. Rhapsody SE sounds like it might be a significant step in the right direction—a tool that finally acknowledges that systems engineering is inherently collaborative and that maybe, just maybe, we should make that collaboration as seamless as possible.

Plus, it’s web-based. Did I mention it’s web-based? Because after years of Classic Rhapsody license server issues, that alone makes me want to try it.

Now I just need to convince management to let me play with it…

[Photo: Final Grand Canyon shot - the vastness that puts everything in perspective]

P.S. – If you’re ever at the Grand Canyon in winter, pack warm clothes. Trust me on this one. And yes, Hermit’s Rest still has the best coffee and least crowded viewpoint, even in January.


What are your thoughts on the evolution of systems engineering tools? Have you tried Rhapsody SE yet? Let me know in the comments below.

Detroit Rhapsody Rock Units

Introduction

For our US Automotive Day I flew to Detroit again! I really like Detroit, it’s way better than its reputation!
We organized a day after the German Automotive Day example. Our Marketing Guru, Tom Hollowell, discovered a racing track. It offered a great conference place and a race track where we were driven around.
No we were not allowed to take the wheel, unfortunately, but we were chauffeured by 2 professional racing drivers.
It was pretty awesome. We had just enough rides for everybody. Luckily, not everybody had enough nerves to go in a fast car around the track.
So I went twice… Loved it…

Rhapsody Units

There are still people asking what “Units” are in Rhapsody. And it is easy: it is the smallest “Unit” you can store in CM separately. Default units are:

  • Model
  • Package
  • Component

Units are easily ( if you have good eyes, that is… ) recognizable by the small icon decorator in the lower left corner. The decorator is either Grey (saved) or Red ( not saved). This indicates that Rhapsody will store that “unit” in a separate file. It allows it to be stored separately in a CM (That is mostly file-based). By right-clicking on a “non-Unit” element in Rhapsody, you can select “Create Unit.” This will give you the opportunity to store a Unit in its own file. The property General::Model::DiagramIsSavedUnit causes all diagrams to be saved in a separate file. In the same Subject::Metaclass, you can also find properties like BlockIsSavedUnit, ClassIsSavedUnit, and ComponentFileIsSavedUnit. There are also properties like ComponentIsSavedUnit (Default on), FileIsSavedUnit, and FolderIsSavedUnit. You will find ObjectIsSavedUnit and PackageIsSavedUnit (Default on) too. With these, you can control what is a Unit and what not.

The file extensions are: (add an “x” for the post 8.3 file format)

ElementOld < 8.3New > 8.3
Model.rpy.rpyx
Package/Profile.sbs.sbsx
Component.cmp.cmpx
Object Model Diagram.omd.omdx
Sequence Diagram.msc.mscx
Use-Case Diagram.ucd.ucdx
Structure Diagram.std.stdx
Deployment Diagram.dpd.dpdx
Collaboration Diagram.clb.clbx
Panel Diagram.pld.pldx
Timing Diagram.tmd.tmdx
Class/Object.cls.clsx
Did I miss one????????x


Ann Arbor

After the event I was invited by Tom and Carol to a dinner in Ann Arbor. A beautiful place, we drove around after dinner. (Thanks again! It was great!) Tom always posts sunsets on FaceBook… unbeatable.

Have fun modeling with Rhapsody

Walter van der Heiden ( walter@sodiuswillert.com )

Rhapsody to Cameo: Save Time and Effort.

Introduction

So… you are a Rhapsody user. Always have been, always will be. Like me, I also have a love/hate relationship with it. More love but there are times when I think: “Rhapsody??? really???”

But suppose you work somewhere in a place where people want to force you to use MagicDraw (Cameo). Not a bad tool, definitely not, but no Rhapsody. Because in spite of all it’s peculiarities, it’s a brilliant tool. And then there’s Code Generation.

Your protest is futile: You have no choice. You have to. But… What to do with all your old models? Make them again? Use XMI (Spoiler alert: doesn’t work very well)

That’s only one use-case for a product we call “Publisher.” A tool that can take Rhapsody Models and save them as perfect Cameo models. Or the other way around. Or from System Architect. Or RSA. Or even Enterprise Architect!

Another use-case is that the US Defense Ministry demands models to be in Cameo format. In that case, you want a converter that 1:1 copies your Rhapsody Project to Cameo. Or saves it as a Cameo Model.

Wait! There’s more: If you really like Cameo (and who doesn’t!) then you can use it for Systems Engineering and then use the Rhapsody CG to do Software Engineering.

So as you will understand: SodiusWillert has that. A perfect way to save your valuable models in another format with the certainty that no information is lost in the process.

Vegas. Really??

Yep. It seems all large events are in Vegas nowadays. Also the Siemens Realize live I had to visit. My regular readers know how I think about Las Vegas, read this BLOG entry if you don’t.

But the Siemens conference was great, it was in the Mandalay Bay, which is a bit less bad IMHO. We had a booth there and it was quite successful, I think.
My personal highlight was the Keynote by Tony Hemmelgarn, CEO of Siemens DI SW. He spoke about the advantages of MBSE and mentioned Rhapsody in a very nice and loving way. I cannot remember an IBM event where I heard anybody speak in such a way about modeling (Except for me, of course! 😉 )

The best news was, however, that next years event will be in Detroit. And the European version in Amsterdam. Less travel. Also, only 6 hours of time difference and not 9. The latter is a real burden on the communication with home, there’s just not enough time overlap left. And the times that you are both awake, there is the fact that the times don’t sync. One always is doing something when the other has time to call and vice versa.

We spent some time walking around. I must confess that this “Sphere” was pretty impressive.

Back to the Publisher

First of all: here you can read all about it and… Try Before You Buy!

Convert systems models from IBM Rhapsody to Cameo Systems Modeler and Cameo MagicDraw with one click. Our Publisher for Rhapsody supports the conversion of modeling formats like SysML, UML, and UPDM and all model diagrams, elements, structure, and hierarchy. Convert large systems models fully automated with full support for diagrams, logging of model transformation action and configurable diagram layouts.

Save time manually cleaning up your target model by leveraging user-configurable settings and display styling in the conversion. Publisher for Rhapsody provides two configuration files that allow teams to control and consistently apply their defined methods and styling.

Publisher for Rhapsody implements model checking to identify, log, and report inconsistencies in the source model, then converts UML, UPDM, or SysML elements​ such as hierarchy, diagrams, and relationships to ensure 100% compatibility in Cameo Systems Modeler. For UPDM elements, it also converts Architecture Description, Packages, and Viewpoints.

The Publisher does the complete model. All model elements, also all diagrams! It keeps your diagrams in the same shape so you will recognize them in the blink of an eye! It even check-ups your models before converting them, we don’t want “garbage in, garbage out!”

Even roundtripping is supported. So if you want to exchange models that will be changed in both tools: All possible!

That’s it for today. Feel free to contact me if you have any questions;

Happy Modeling with (either Cameo or ) Rhapsody.

Walter van der Heiden walter@sodiuswillert.com

Nashville/Florida/Toronto

I’ve been in the USA for quite some times. But Nashville was new, never been there before. So I increased my State count to 39! 11 to go.
The cheapest flight I could get was from Hannover. Via Amsterdam (which is closer to me, but don’t skip a leg, that’ll cost you….amazing in this time of saving the environment….)
So I got on the plane to AMS early for the stopover to… Toronto! I’ve been there before, twice. Nice city! There I would get on a plane to Nashville.

I was in Nashville for the Kick-off Conference of our beloved USA partner 321-Gang.

After the Kick-Off there was, luckily, some time left to visit Florida, a real must in winter time 😉 After 3 nice warm days I was on the way back ( ;-( ;-( ;-( ) But that was less easy then I thought… Again I would fly via Toronto but the plane coming from Toronto had a delay (Cause: medical Emergency…)
The information on the duration of the delay was very fuzzy. I tried to find out an alternative way to fly home but there was no real alternative.
So I gambled on the original flight that was earlier then expected.
It was, for hours and hours, on the tipping point of “Not going to make it” and “Just in Time”. I hate that.
To cut a long story short: The fact that I had to cross customs in Canada made me miss my plane.
So I had to spend another 24 hours in Canada. With only T-Shirts. And with -13ºC outside…
Luckily KLM was very, extremely good and they shifted my flight (They didn’t have to, i was on the cheap non-refundable flight) WestJet (Canada air-carrier operating for Delta) did not want to reimburse my Hotel costs.. “Use your insurance”…. Yeah I will.

Reverse and Roundtrip

In the last versions of Rhapsody we receive an increasing number of complaints about issues with Reverse and/or Roundtrip Engineering.

Issues

The issues are:

  • Reverse Engineering seems to start but does not give a result.
  • “Populate Diagram” is missing in the “Operation” menu

Rhapsody Version/License

A possibility is that your license is too old. What?? But everything works fine, except….
That is correct. Your old license also works for newer Rhapsody versions, I don’t understand that either, i’d link that to newer versions and support payments but hey, I know nothing about that….
So, exactly right. In some version of Rhapsody there was an entry added in the license file for Reverse/Roundtrip. Adding this solves the problem. You can generate a new license file in the License Key Center. (If you have a support contract with SodiusWillert (or Sodius or Willert or event somewhere else) we’ll help you.

32/64-bit

Most of these problems are related to the 32/64-bit version of Rhapsody. Due to some historic reasons the 64-bit version of Rhapsody lacked a lot of options that the 32-bit version had.
Also because of the way Windows is built, it is not easy to almost impossible to start 32-bit apps from 64-bit apps and vice-versa.

Solution

You can install both the 32-bit and the 64-bit version of Rhapsody even from the same install version. Remember that you then also need both Service Packs if you upgrade!
Then you can start 32-bit if you want to do stuff that involves any roundtrip or reverse engineering and use the 64-bit for everything else. Models are interchangeable.

So. That’s it. Have fun modelling with Rhapsody

Walter van der Heiden (wvdheiden@sodiuswillert.com)

Back in Motown, continue the adapter

Introduction

The next part of the trip was to Detroit, aka Motown. There were some customer visits planned and some internal training for a new colleague.

57817841614__6087F444-1266-44A6-810C-5F4A53BF0CB7
The flight was OK and everything went smooth. I picked up my rental car and then after typing in stuff for a long time the lady from Hertz told me that she could not find my car in the system…. I said, well that’s cool, I just take it and then I don’t have to take it back…
Nice try but she wasn’t going to do that. But she was nice, asked me politely to bring the car back and then pick another. Any other… So I ended up with a cool Infinity Q50. With 400 HP… cool…

IMG_0587

The rest of the trip was without incidents… except for some flooding. But I only saw that on the TV. Haven’t had any trouble with it.

IMG_0589

Back to work II

So from the MakeFileContent property there are some things you have to adapt.

What when it doesn’t work?

If you re-read the  model and you get an error message then…. you did something wrong 😉
Debugging is not so difficult. In Rhapsody go to the features of your model and open the “Makefilecontent” property. This will show you exactly to where it could be read…
When the make doesn’t work, try removing (or temporary) switch of the “echo off” with a rem before it. Also you can edit the makefile that is generated, copy the “cc” line and put an echo in it. Then you can see what happens.

 

Build the new Framework

Now the framework also needs to be built. This can be done from the Rhapsody Menu (“Code”, “Build the Framework”) This is only visible if you can rebuild the framework i.e. when the following property is set:

CPP_CG::QNXv7NeutrinoMomentics::buildFrameworkCommand
"$OMROOT/etc/Executer.exe" "\"\"$OMROOT\"\etc\qnxv7cwmake.bat 
qnxv7cwbuild.mak build \"CPU=$CPU\" \"CPU_SUFFIX=$CPU_SUFFIX\" \"

This should contain the call to the batchfile (and makefile) that builds the framework. The same paths and changes you’ve made to the makefile content should be applied to all the makefiles that you can find in the batchfile, they are in the OXF, OMCOM, TOM, AOM and WebComponents directories. You actually only need the OXF but do the rest (that is only needed for animation) anyway.

TARGETS= oxflibs omcomlib tomlib aomlibs  webcomponentslib

CPU=aarch64
CPU_SUFFIX=le
MAKE=make CPU=$(CPU) CPU_SUFFIX=$(CPU_SUFFIX)  all 

all: $(TARGETS)

oxflibs:
$(MAKE)  -C oxf -f QNXv7CWoxf.mak CFG=oxf
$(MAKE)  -C oxf -f QNXv7CWoxf.mak CFG=oxfinst

omcomlib:
$(MAKE)  -C omcom -f QNXv7CWomcom.mak CFG=omcomappl

tomlib:
$(MAKE) -C tom -f QNXv7CWtom.mak CFG=tomtrace
$(MAKE) -C tom -f QNXv7CWtom.mak CFG=tomtraceRiC

aomlibs:
$(MAKE)  -C aom -f QNXv7CWaom.mak CFG=aomtrace
$(MAKE)  -C aom -f QNXv7CWaom.mak CFG=aomanim 

webcomponentslib:
$(MAKE)  -C WebComponents -f QNXv7CWWebComponents.mak CFG=WebComponents
This is the content of the batch file, all calls have already been edited to the new environment.
Then in all makefiles set the correct include paths and compiler calls: (This is my example, adapt to your own paths)
ADDED_CPP_FLAGS = $(CPU_FLAG) $(DEFAULT_CPP_FLAGS) 
 -I$(QNX_TARGET)/usr/include/c++/5.4.0 
 -I$(QNX_TARGET)/usr/include/c++/5.4.0/aarch64-unknown-nto-qnx7.0.0 
 -I$(QNX_TARGET)/usr/include -DOM_STL -I.. 
 -I../osconfig/QNX -D_MSL_NO_VECTOR_BOOL -DUSE_IOSTREAM 
  $(RHAP_FLAGS)
That should be it.
The menu recommendation for today is the poutine… (In HopCat in Royal Oak in Detroit they have a “Wladimir Poutine” on the menu. It is not healthy (and looks awful) but tastes very very good.
57859282305__6C1A0295-6104-4B96-941A-E3F784C4F2EE
OK, Happy modeling with Rhapsody
Walter van der Heiden (wvdheiden@willert.de)

 

USA and Adding support for compilers

Introduction

I receive a lot of questions from people who want to generate and compile code from Rhapsody using another compiler than the ones that are in the standard installation.
Since IBM is delivering some pre-adapted frameworks but does not officially supports them it is the users responsibility to do some adaptation work.
My usual answer is: switch to the RXF. Is smaller, faster and more comfortable since we took the command-line out of the workflow.
But sometimes this is not the answer. Adapting an OXF to a new RTOS is a bit difficult but using another compiler is not that hard.
Unfortunately the documentation to do this is very scarce and not really clear. So here is a (hopefully) better guideline to do that.

USA

Last weeks I was quite busy (and in another time-zone…) Yes back in the US! Again, Florida and Michigan.
In Florida I, of course, visited my friend in Fort Myers and then went to Orlando for the IBM IoT Exchange. I had a presentation there together with Ed Grinberg from Depuy, Boston. I made the movie using my iPhone so the quality is a bit less than professional…

I was also interviewed together with Tom Capelle by the great guys of Quick Bytes, Graeme & Ryan. We spoke about the Sodius-Willert Merger.

Back to Work….

OK.. How do you create an adapter for another compiler. We assume you use C++ and want to adapt the QNX adapter to a newer version.

  1. Never change the original files of the framework. Always make copies and create your own adapter.
  2. When you have changed property files: re-read the model to update the properties in your model.
  3. Use a decent editor to edit files. I recommend notepad++, is free and awesome.
  4. The instructions are for C++, just replace C++ with C and that will work as well.
  5. Either install all tools in the same directory on ALL workstations of everybody in the project or use environment variables to align all differences. (First solution is preferred)
  6. A property file (Only the factory, factory<lang>, site and site<lang> files, not your own!) must have an extra “end” on a newline. Also escape all quotes (“) and backslashes (\)

How does it work?

If you generate code in Rhapsody, a makefile is also generated. When you press build, Rhapsody will call your makefile using an available make for that environment. How does Rhapsody knows what to call? It’s all in the properties, mate!
So assume you’ve selected

The Share Directory

This directory contains all the secrets to Frameworks. The following subdirectories are interesting:

  • etc
    contains files that must be added to the build process and the makefiles for the frameworks itself. Also contains the batch files that Rhapsody calls when building applications.
  • Lang<Language> (C, Cpp, Java, Ada)
    This contains the source-code from the framework
  • MakeTmpl
    Contains files added to the make process.
  • Profiles
    The profiles that can be loaded (The RXF is completely adapted using profiles)
  • Properties
    Contains all property files. This is where Site,prp and Site<language>.prp are located. Also the Factory.prp and the Factory<language>.prp are here. NEVER NEVER NEVER edit these!!!!

There are more directories but these are the interesting ones when making an Adapter.

Step 1, edit the sitec++.prp

So in Share\properties you’ll find siteC++.prp that is usually empty unless you have already added something. We have to add only one (1) property that we can copy from the factoryC++.prp file (Open that factoryC++.prp.  search for environment and copy the line. Add that to your siteC++.prp file)

Subject CPP_CG
  Metaclass Configuration
    Property Environment Enum      
        "MSVC,MSVCDLL,MSVCStandardLibrary,VxWorks,
         VxWorks6diab,VxWorks6gnu,VxWorks6diab_RTP,
         VxWorks6gnu_RTP,Solaris2,Cygwin,MicrosoftWinCE600,
         OseSfk,Linux,Solaris2GNU,QNXNeutrinoGCC, 
         QNXNeutrinoMomentics,NucleusPLUS-PPC,
         WorkbenchManaged,WorkbenchManaged653,
         WorkbenchManaged_RTP" "MSVC"
  end
end

end

This is the “standard”. Now I recommend deleting all the environments that you will never use to make stuff more readable. Then add your own environment, in our case we will call it QNXv7Momentics. We want all changes for our environment in a separate file, that makes it easier to exchange the new adapter with others. This file can be included in the siteC++.prp file with the “Include” statement. The content of the siteC++.prp is something as follows:

Include "QNXv7Momentics.prp"
Subject CPP_CG
  Metaclass Configuration
    Property Environment Enum      
 "MSVC,MSVCDLL,Cygwin, QNXv7Momentics, QNXNeutrinoMomentics," "MSVC"
  end
end

end

Now copy the donor environment (QNXNeutrinoMomentics) to a new file QNXv7Momentics.prp in the Properties directory. (Same procedure, open factoryC++.prp and search for “QNXNeutrinoMomentics”). You have to add the Subject, that is CPP_CG. (Properties always have a Subject and a Metaclass but you can group them in a prp file) Don’t forget the “end” statements!

Edit the properties

Now it is time to edit. You probably have to edit more but that goes beyond the scope of this BLOG. I will describe the most important ones (here you can see the escaping of the backslash and the quotes, don’t forget that!!):

Property InvokeMake String "\"$OMROOT/etc/Executer.exe\" 
\"\\\"\\\"$OMROOT\\\"\\etc\\qnxv7cwmake.bat 
$makefile $maketarget \\\" \""

Here you fill in the name of your batchfile that compiles the Rhapsody generated code. You have to create that file later (In the “Share\etc” directory)
This file contains the commands to call the make command in your environment. Now it is time to figure out how the make command of your environment works.

@echo off
if "%2"=="" set target=all
if "%2"=="build" set target=all
if "%2"=="rebuild" set target=clean all
if "%2"=="clean" set target=clean

set QNXROOT=<The root of your QNX Install>
set MAKEFLAGS=-I%QNXROOT%/target/qnx7/usr/include 
          -I%QNXROOT%/target/qnx7/usr/include/c++/5.4.0
set QNX_TARGET=%QNXROOT%/target/qnx7
set QNX_HOST=%QNXROOT%/host/win64/x86_64
set QCC_CONF_PATH=%QNX_HOST%/etc/qcc
set LD_LIBRARY_PATH=%QNXROOT%/target/qnx7/lib
set PATH=%QNXROOT%/host/win64/x86_64/usr/bin;%PATH%

make -s %target% -f %1 %3 %4 %5 %6 %7 %8 %9

This is the example for my installation, fill in the correct paths for your environment.

More Properties

The following properties determine what you give the compiler. OmFileCPPCompileSwitches is what you fill in the “Settings” Tab of your Rhapsody component.

Property CPPCompileCommand MultiLine 
" @echo Compiling $OMFileImpPath
$(CREATE_OBJ_DIR)
@$(CC) $OMFileCPPCompileSwitches -o $OMFileObjPath $OMFileImpPath
"

Property CompileSwitches MultiLine "-lang-c++ -I. 
  -I$OMDefaultSpecificationDirectory -I$(OMROOT) -I$(OMROOT)/LangCpp 
  -I$(OMROOT)/LangCpp/oxf $(INST_FLAGS) $(INCLUDE_PATH) 
  $(INST_INCLUDES) -DUSE_IOSTREAM -DOM_USE_NOTHROW_GEN 
  $OMCPPCompileCommandSet -c "
Property CCCompileCommandString ""
Property CPPCompileDebug String "-g"
Property CPPCompileRelease String "-O"
Property LinkSwitches String "-Bstatic"
Property LinkDebug String "-g"
Property LinkRelease String "-O"

The next step is to create the makefile. This is generated from Rhapsody. There is a template for the makefile with “magic” macros that expand to the information inside the Rhapsody model.

Property MakefileContent MultiLine "
**** Lots of Stuff ****
"

If your environment is close to the donor environment then you do not have to change much here. Otherwise it is possible that you have to go to all the lines and decide if that is still correct.

So… the rest will be in the next episode

Happy Modeling with Rhapsody

Walter van der Heiden (wvdheiden@willert.de)

Da Boston Broker

Introduction

This week I’m in Boston at a customer that is starting a new project. I’m helping setting it up, setting up the model and the rest of the development environment.

In the beginning of our Rhapsody days, we were always happy to tell people we were the experts in “Systems with limited resources”. Now. in fact, we still are, just because we have a lot of experience in that area. I don’t think many people know how to handle the specific requirements of modeling in small 8- or 16bit systems with kilobytes of memory and microseconds to respond.

But slowly we have been growing with our customers and we also do larger systems. This week I helped setting up a “larger” system. This a “normal” PC with Linux on it, accompanied by a couple of other boards that do small tasks (and have smaller controllers!)

The use of Linux as operating system immediately introduced one big question: how are we going to implement a framework?
Linux has processes and threads. ( See BLOG entry ) Are we using a distributed framework? Or the normal framework with Threads?
Both have advantages and disadvantages. Distributed Framework is more difficult to implement but just threads will influence the way you can use your system and will not give you all the advantages of memory protection.

We decided to use both ways with a “simple” framework and use IPC to communicate. So we would actually use multiple applications that communicate with the use of the OS.
The trouble with IPC is always that you need some base information to start the communication. You can use a “zeroconf” system like Apple’s bonjour where every client starts and assumes it is the “Master” until it finds another client that already is the master. Or you create a Master that is known by all clients.

We have chosen the last variant. A Master-broker is in the system, waiting and listening on a fixed IPC Channel. Clients report to that Channel with their name and the Master sets up the communication. The client then opens up for its local clients to publish/subscribe that it will communicate with the Master-broker that registers all clients in the complete network. C++ makes a lot of this easier.

It was real fun to set this up. Most work was spend on setting up the development environment and describing how to use it. We use GIT and Sharepoint to do that.
The compiler/IDE is Eclipse in Ubuntu Linux, we deploy code to a shared directory with Windows. IPC on Linux is done with named pipes.

We spend some time setting up the Rhapsody model so that the package structure was logical and ready for use by multiple people. The model will contain a lot of components that must be built separately. Luckily you can tell Rhapsody to “build all” (which will generate and deploy all in our case) Eclipse can also build a complete project with multiple executables. We also built some test tools to test the Broker setup.

This is what many people underestimate when starting to use MBSE. The UML Tool will not do that for you. It is a UML Tool, UML is a language, not a process nor a development environment. It is very important to spend time setting that up and documenting it. Use a central documentation tool like Confluence, Sharepoint or MediaWiki, your success depends on it!

So… just work in Boston? Nope… in my 3rd Boston visit I finally had the time to visit “Cheers”, the bar of one of my favorite TV series.
I’ll end this one with a quote from Norm:

“Can I pour you a beer, Mr. Peterson?”
“A little early isn’t it, Woody?”
“For a beer?” “No, for stupid questions.”

“Cheers!” and Happy modeling with Rhapsody

Walter van der Heiden (wvdheiden@willert.de)

Florida 5: Bahama’s

Introduction

Preparation is everything. That is valid for everything. For modeling but also for vacation…..
Both Robert and I have never been to the Bahama’s and it seemed like a great idea to visit it. The flight was pretty cheap so we decided to just go there on an early flight and leave again in the evening. (Yes, we are the “Been there, Bought the t-shirt type tourists…)
But we did not do any other preparation…. we just went to the airport early. That was not difficult, the time zone works in our advantage.
The flight was very nice and shorter than planned. But then the first “small” issue crossed our path.
We both assumed that the Bahama’s were part of the USA. They are not… as it turned out… It is a country. With customs and borders and so… On the airport we had to fill in a Visa application form. Luckily there was nothing to do upfront.
Now the good part was that nobody gave us a hard time, everybody was extremely friendly but at first we were worried. But we got in quite quickly.
Then we wanted to check on the web where we had to go just to find out that even my super-duper cell phone plan did not cover the Bahama’s… Being online was extremely expensive so we had to stay in the airport WiFi to figure out where to go.
The speed of the WiFi was, well, very low. So I just saw that Uber would not work and that Nassau was on the opposite part of the island from the airport.
So we decided to rent a car. Hertz (my normal rental company) was out of cars but I managed to rent a car.
It was a VW Polo, Automatic and Aircon but not in a good shape. There we were confronted with preparation again.. There was a big sticker on the windshield that said “Keep Left”. But confusingly he car had a left-hand side steering wheel…
Then I realized that the Bahama’s have been English. These guys leave their marks thorough… So the road signs were exactly as in the UK and people drove left.
Not very cool with a “normal” car but I managed.
We were also not able to tell what kind of units they were using. The first sign after the airport was “45” but it took a while to figure out that they used miles or kilometers. With the state of the cars there, kilometers would not have been unlogical. So miles and not metric like the speedometer of the car. It didn’t even had the small inner “mile” indicator.

Conclusion

The Bahamas are very much worth a visit, one day is enough unless you are the sunbath type. The day was very relaxing and in the evening an hour before flying back we returned the car. At the check-in the lady told us that we were just in time. It turned out that you had to check-in an hour before when flying to the US, we had 2 minutes left… This proved again that preparation is everything. For traveling but certainly also for things like modeling. Gather all information you can get and model your application based on that.

 

Walter’s Rules #10: “Assumption is the mother of all f***-ups.”

Happy modeling with Rhapsody

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 ↑