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

Category: Rhapsody (Page 10 of 14)

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)

 

 

Incredible India

Recently I visited India for a 10 days. In Hyderabad to be precise. So after arriving at home Friday night after a week of training in Bückeburg I had to unpack and re-pack my bags. Saturday morning early my KLM plane for Delhi would leave from Schiphol.
It was an old 747, I haven’t flown a 747 since a long time, i didn’t even know that they were still in use. But I saw a couple of them so KLM is still using them, On the inside you could clearly see that the 747 is a bit old. No USB chargers, I tried to operate the miniature inflight entertainment screen (That was not much larger than my iPhone) and just before i started to get annoyed because it wouldn’t accept my inputs I realized it wasn’t a touch-screen… The rest was also outdated but…. still OK. The plane left a bit before 13:00u (1pm) and would arrive 7,5 hours later in New Delhi. Too early to sleep, but I had a connecting flight with a long stop-over so I thought I could find some other time to sleep a bit.

I had an Economy plus seat, a bit more room and… luck because the middle seat stayed empty. You could choose between Indian food and Western food. Easy choice… for me. Nice detail: all the food on the flight was vegetarian! And very, very good… I tried a nap after the lunch but i was not tired enough. So after almost 8 hours we landed on Indira Ghandi International Airport in New Delhi.

I got out pretty early, just after the Business Class and I was in line for the customs early. Unfortunately, KLM had forgotten to supply us with the visa papers… so I had to go back and fill it in and then line up behind the rest of the plane… Took quite a while but in the end they let me in. I’ve been to India before, last time it took me 2 days at the embassy in The Hague to get a Visum, the online Visum is a huge improvement.

After that searching for my suitcase (I had a big case with Training Material) and after I finally found that I went to an exchange shop to change some euro’s into Rupees. A bit of cash money is always convenient. I brought some (Well.. actually a lot…) from my last visit but India decided to use new banknotes and make the old ones invalid. Thanks India!
I had 4,5 hours for my stopover so I was very relaxed, going to the last check at the customs, bought myself a SIM-card so I could use Mobile Data in India (My mobile plan covers much but it does not cover India…) and then I started searching for the place where I could check-in my luggage for the flight with IndiGo Airway… That turned out to be in the domestic terminal. And that was on an airport with the same name but that name was also used for an older airport on the other side of Delhi… So I had to cross the airport to the shuttle terminal and drag my stuff into an old bus together with 50 other people with too many suitcases and other luggage. I managed to get a ticket and waited for the bus in the most air polluted place I’ve ever been. Half an hour equaled 10 packs of cigarettes. Yikes.

Slowly however… time ran out. The bus came and had to drive almost an hour… after arriving only 40 minutes would be left. If you have ever been to an airport in India you know that is not nearly enough… Luckily a nice Indian gentleman next to me in the bus understood my problem and helped me out. He arranged 2 guys on the airport that took my suitcases and led me through some “secret” airport elevators and hallways. They spoke with a lady behind the counter and I was the first one in a long, long line… Costed me EUR 10,- Not “compliant” I’m afraid but saved a lot more… With 1 minute left I made it to the bus to the plane.

At the plane it was time for a surprise, it was an Airbus A320neo. Almost brand new (although I read today that some of them are grounded due to Pratt&Whitney engine trouble) It took off precisely in time at 5am and flew to Hyderabad in just over 2 hours. The fight was more or less OK but I learned one more thing: Indian pilots fly just as Indian taxi drivers drive….

After 2 hours we were in Hyderabad. We tried landing twice and twice it made a fly-over. (According to the pilot “a completely safe maneuver “) Yes please….
After circling for an hour the plane accelerated and the pilot told us we would fly to Chennai. Cool, I did not expect to ever go there and before you know… But information was scarce and I did not really know what to expect. Directly after the landing and parking all other passengers stood up and started moving to the door and shouting through each other. Some guy from IndiGo got in the plane and mastered the chaos. He let he passengers out that had to be in Chennai anyway. We waited for 2 hours in the burning sun. We got a lunch box with chips and (Yeah!!) water. After 2 hours we took off again and an hour later we landed in Hyderabad.

After a non successful search for the hotel shuttle I gave up and took a taxi to the hotel where I arrived 24 hours after leaving home.

OK… this is a Rhapsody BLOG….

I have some news on Rhapsody as well. Some of it was written by Eike Römer on our Download Portal. I copied it here.

  • The 8.3 Version is now OK to use from our point of view with restrictions:
    • only with iFix 2 (all available on our Download Portal)
    • Be ware if you use it for existing projects! Either your Version history is lost (or retained with much effort) or you have to meticulously save in the old format.
    • for new projects it is OK
  • The 64Bit version is also free to use! read here how you can update the frameworks.

 

Rhapsody 8.3 with the RXF Frameworks

Our existing Realtime eXecution Frameworks (RXF) available on the Willert Download Portal (https://download.willert.de/) can be used together with Rhapsody 8.3 iFix 2. However, RXF versions that have been tested and released with an earlier Rhapsody version than 8.1.5 need the applied JDK workaround documented on: https://download.willert.de/rhapsody-8-1-5-support/

RXF-Cert is Rhapsody Version Specific

RXF-Cert frameworks (prepared for safety critical software development certification) are an exception, as they have been documented, tested and prepared for certification for one specific Rhapsody version. Please contact us and discuss the Rhapsody upgrade path for your specific certification environment if you want to migrate to Rhapsody 8.3 iFix 2.

Rhapsody 32- vs. 64-Bit

Until today we highly recommended only installing Rhapsody in the 32-bit edition. The main reason was a limitation in features like roundtripping, reverse engineering etc.

With Rhapsody 8.3 iFix 2 this has changed. You may now also work with the 64-bit edition of Rhapsody. However the Willert Installer (Setup.exe as part of an RXF release) needed to learn how to handle Rhapsody 64-bit installations. All RXF releases after 2018-03-13 can handle Rhapsody 64-bit installations out-of-the-box. For older RXF releases you need to replace the old Setup.exe with the one you can download here:

https://download.willert.de/downloads/setup_2018-03_64bit/

 

That was it! happy modeling with Rhapsody

Walter van der Heiden (wvdheiden@willert.de)

 

Incredible India

Recently I visited India for a 10 days. In Hyderabad to be precise. So after arriving at home Friday night after a week of training in Bückeburg I had to unpack and re-pack my bags. Saturday morning early my KLM plane for Delhi would leave from Schiphol.
It was an old 747, I haven’t flown a 747 since a long time, i didn’t even know that they were still in use. But I saw a couple of them so KLM is still using them, On the inside you could clearly see that the 747 is a bit old. No USB chargers, I tried to operate the miniature inflight entertainment screen (That was not much larger than my iPhone) and just before i started to get annoyed because it wouldn’t accept my inputs I realized it wasn’t a touch-screen… The rest was also outdated but…. still OK. The plane left a bit before 13:00u (1pm) and would arrive 7,5 hours later in New Delhi. Too early to sleep, but I had a connecting flight with a long stop-over so I thought I could find some other time to sleep a bit.

I had an Economy plus seat, a bit more room and… luck because the middle seat stayed empty. You could choose between Indian food and Western food. Easy choice… for me. Nice detail: all the food on the flight was vegetarian! And very, very good… I tried a nap after the lunch but i was not tired enough. So after almost 8 hours we landed on Indira Ghandi International Airport in New Delhi.

I got out pretty early, just after the Business Class and I was in line for the customs early. Unfortunately, KLM had forgotten to supply us with the visa papers… so I had to go back and fill it in and then line up behind the rest of the plane… Took quite a while but in the end they let me in. I’ve been to India before, last time it took me 2 days at the embassy in The Hague to get a Visum, the online Visum is a huge improvement.

After that searching for my suitcase (I had a big case with Training Material) and after I finally found that I went to an exchange shop to change some euro’s into Rupees. A bit of cash money is always convenient. I brought some (Well.. actually a lot…) from my last visit but India decided to use new banknotes and make the old ones invalid. Thanks India!
I had 4,5 hours for my stopover so I was very relaxed, going to the last check at the customs, bought myself a SIM-card so I could use Mobile Data in India (My mobile plan covers much but it does not cover India…) and then I started searching for the place where I could check-in my luggage for the flight with IndiGo Airway… That turned out to be in the domestic terminal. And that was on an airport with the same name but that name was also used for an older airport on the other side of Delhi… So I had to cross the airport to the shuttle terminal and drag my stuff into an old bus together with 50 other people with too many suitcases and other luggage. I managed to get a ticket and waited for the bus in the most air polluted place I’ve ever been. Half an hour equaled 10 packs of cigarettes. Yikes.

Slowly however… time ran out. The bus came and had to drive almost an hour… after arriving only 40 minutes would be left. If you have ever been to an airport in India you know that is not nearly enough… Luckily a nice Indian gentleman next to me in the bus understood my problem and helped me out. He arranged 2 guys on the airport that took my suitcases and led me through some “secret” airport elevators and hallways. They spoke with a lady behind the counter and I was the first one in a long, long line… Costed me EUR 10,- Not “compliant” I’m afraid but saved a lot more… With 1 minute left I made it to the bus to the plane.

At the plane it was time for a surprise, it was an Airbus A320neo. Almost brand new (although I read today that some of them are grounded due to Pratt&Whitney engine trouble) It took off precisely in time at 5am and flew to Hyderabad in just over 2 hours. The fight was more or less OK but I learned one more thing: Indian pilots fly just as Indian taxi drivers drive….

After 2 hours we were in Hyderabad. We tried landing twice and twice it made a fly-over. (According to the pilot “a completely safe maneuver “) Yes please….
After circling for an hour the plane accelerated and the pilot told us we would fly to Chennai. Cool, I did not expect to ever go there and before you know… But information was scarce and I did not really know what to expect. Directly after the landing and parking all other passengers stood up and started moving to the door and shouting through each other. Some guy from IndiGo got in the plane and mastered the chaos. He let he passengers out that had to be in Chennai anyway. We waited for 2 hours in the burning sun. We got a lunch box with chips and (Yeah!!) water. After 2 hours we took off again and an hour later we landed in Hyderabad.

After a non successful search for the hotel shuttle I gave up and took a taxi to the hotel where I arrived 24 hours after leaving home.

OK… this is a Rhapsody BLOG….

I have some news on Rhapsody as well. Some of it was written by Eike Römer on our Download Portal. I copied it here.

  • The 8.3 Version is now OK to use from our point of view with restrictions:
    • only with iFix 2 (all available on our Download Portal)
    • Be ware if you use it for existing projects! Either your Version history is lost (or retained with much effort) or you have to meticulously save in the old format.
    • for new projects it is OK
  • The 64Bit version is also free to use! read here how you can update the frameworks.

 

Rhapsody 8.3 with the RXF Frameworks

Our existing Realtime eXecution Frameworks (RXF) available on the Willert Download Portal (https://download.willert.de/) can be used together with Rhapsody 8.3 iFix 2. However, RXF versions that have been tested and released with an earlier Rhapsody version than 8.1.5 need the applied JDK workaround documented on: https://download.willert.de/rhapsody-8-1-5-support/

RXF-Cert is Rhapsody Version Specific

RXF-Cert frameworks (prepared for safety critical software development certification) are an exception, as they have been documented, tested and prepared for certification for one specific Rhapsody version. Please contact us and discuss the Rhapsody upgrade path for your specific certification environment if you want to migrate to Rhapsody 8.3 iFix 2.

Rhapsody 32- vs. 64-Bit

Until today we highly recommended only installing Rhapsody in the 32-bit edition. The main reason was a limitation in features like roundtripping, reverse engineering etc.

With Rhapsody 8.3 iFix 2 this has changed. You may now also work with the 64-bit edition of Rhapsody. However the Willert Installer (Setup.exe as part of an RXF release) needed to learn how to handle Rhapsody 64-bit installations. All RXF releases after 2018-03-13 can handle Rhapsody 64-bit installations out-of-the-box. For older RXF releases you need to replace the old Setup.exe with the one you can download here:

https://download.willert.de/downloads/setup_2018-03_64bit/

 

That was it! happy modeling with Rhapsody

Walter van der Heiden (wvdheiden@willert.de)

 

Think!

This is the week of the IBM Think! in Las Vegas. I actually hate Las Vegas, it is a very aggressive place to be for my poor Asperger brain. I already had some serious “Sensor Overload Errors” there. I prefer Florida but you can’t win them all. IBM wants met to go to Vegas…

Also the IBM Conferences get bigger and bigger every year. The I loved the Innovate in Florida, not just because of Florida but also because it was much smaller. You could really find all the people you need. In LV it is almost impossible to meet somebody.

Luckily there is the German IoT Conference (and hopefully the US IoT Conference) I feel a lot more at home there.

At least “Think!” is a great name, thinking is generally a good idea.

Hyperlinks

To gather information in your model it is a good idea to use Hyperlinks. You can use hyperlinks to save links to:

  • model elements (Change the view of your elements)
  • websites (Compiler, CPU, Willert!)
  • documents on your disk (For use in the project)

For documentation it is better to use “controlled files”, they will be part of the model and can be transferred to others.

Package Hyperlinks are a bit hidden, you have to right-click on a package and select “Add New”, “Relations” , “Hyperlinks”. Don’t forget that a click on a hyperlink will not open the features but the target of the hyperlink.

 

Explorer Helperhelper_explorer.JPG

I often search for my Model directory. Rhapsody does not always show it in the File Menu and you then have to open the configuration, go to the Settings Tab and look where the generated source is. There is a better way to do that.
Goto “Tools” “Customize” “Helpers…”.
Add a new item there, call it Explorer (or what you like) and fill in “explorer” at the command and “.” at the arguments.
This will give you a menu item under Tools that opens an explorer window with your project directory. Cool eh?

Happy Modeling with Rhapsody!

Walter van der Heiden ( wvdheiden@willert.de )

RXF Best Practice

Introduction

Today I will write about our RXF. I hear a lot of users that have issues and worse, there are a lot of users that do not speak about issues…. We find out indirectly that there was trouble.Most issues can be traced back to errors in the install procedure, take really good care that this is done properly.Also a big source of problems is the installation of a new version of the RXF. OK, this is not straight forward, I admit.Although the RXF has its own Macros for sending events, if you want to use the same model in an OXF environment, you better use the IBM macros.Assign the Memory Properties in the Component. Make new components if you want to experiment with these values.

Hints and Tips for installation

  • We are there to help you. Really. I know you are afraid that your friend Google might be insulted if you ask someone else for help, but really: he is not.
  • Install should run without errors!
    Yes. If install gives you an error, it’s serious. There is something wrong. You should not ignore it.
    • Install can tell you after entering a path for a compiler, RTOS or Rhapsody that it cannot find some file. Pressing “Yes” will much later expose errors that you cannot map on the install anymore!
    • READ!!! OK, OK… we do not always write clearly but you should be able to understand what the install program wants from you.
    • if you cannot read: ASK!
    • Check if the install path is not to long! (c:\user\thatsme\Install directory for tools\Rpy_CPP_embOS_IAR5_CM3_EFM32\Rpy_CPP_embOS_IAR5_CM3_EFM32\Rpy_CPP_embOS_IAR5_CM3_EFM32 is too long. Install will either give errors or just not copy everything. Sometimes without error message….
    • The version numbers of Compiler, RTOS and Rhapsody are not given in the install fore nothing. That means that the RXF is tested with these specific versions. Installing the RXF using older or newer versions can work, but not necessarily…
    • Do not install the RXF under a “magic” windows directory like “c:\Program Files” or any language/bitsize variant. As already said in one of the first entries: Installing Rhapsody.
  • If, in spite of being careful, you have problems: tell us! Windows is a complex environment, that in combination with differences in hardware and interfering IT departments can cause nightmares.
  • If you want to use the Willert Software Tools Embedded UML Studio: You HAVE to install and RXF! Just install, you don’t have to use it.

Hints and Tips for re-install

  • We are still there to help you. Never mind your girl-friends Siri and Alexa, we are better, much better!
  • Regularly check http://download.willert.de for updates.
  • Speak with us when you want to use a new version of Rhapsody, Compiler or RTOS (Or even CPU)
  • There are different use-cases for re-install.
    • You have a new version of Rhapsody but want to use the same RXF
      • You still have to re-install the RXF…. It may seem to work but it is not integrated in your Rhapsody…. No problem, it is still working in your old Rhapsody, that is… if you install the RXF to the same path as where it was.
    • You have the same Rhapsody but a new RXF
      • Is more difficult. Best is to install the new RXF and load the profile in the existing model. You have to check which stereotypes are used in your model and manually re-assign them to the new profile. A good test is to try and delete a profile, if there are stereotypes used, Rhapsody will refuse to delete it.
      • The properties for the static memory blocks are the same… but the MetaClass changes… you have to re-assign them to the correct properties.

I hope this makes your life with Rhapsody a bit easier!

Walter van der Heiden ( wvdheiden@willert.de )

Your license is safe in Switzerland. Very Safe…

Introduction

This week I’m in Switzerland. helping a customer to install and use Rhapsody and a lot of other tools. Switzerland is cool, very nice to travel to because of the beautiful landscape. Not nice to travel to because everything is soooo expensive… For the price of a  normal meal I can feed my entire family in Germany… This time I was lucky, finding a very nice and quit hotel where the food was delicious and not even that expensive (Well not for Switzerland…) I was also lucky with picking up my rental car: a free upgrade… OK, not a Merc, but the BMW 420D X-Drive was a nice car. And the snow on the last day was a piece of cake with the 4-wheel drive and the winter tires.

Back to work

As I have written before, it is not easy to install all tools in a way that everything works. Careful planning is required here.

Willert RXF License

The RXF does not have a license. There are 2 types of customers: One that is willing to pay and one that will never pay for software. License mechanisms are only there to annoy the first type: People that have paid for software and are legally entitled to use it.
The second type tries to hack it and if that is not possible: they will use other software.
We at Willert have rather that people steal our software then that they buy it from our competitors.

IBM Rhapsody license

IBM uses the so-called Flexible License Manage (Flex-LM), in spite of the name it is a very inflexible piece of software. Many things can go wrong there. We literally spend hours to get the stuff running sometimes.

Steady or Floating?

There are many different license types for Rhapsody depending on how you use the software and what version you use.

  • AU – Authorized User
  • FL – Floating User

The difference between these 2 is that an AU License is for a named person. This has to be the same person, always! (You can, of course, move the license internally but not on an hourly basis)
An FL can be used by multiple persons that not even have to be on the same location just not on the same time. Theoretically, if you have sites all over the world, you can have 3 people working a full day with same license. IBM allows that, Telelogic had a special (more expensive) license for that.
NOTE: IBM requires you to have a list available with the licenses you use and the names of the actual user! They are entitled to check that. (This is one of the points in the license agreement that you have not read)

Server, Locally or Dongle?

Flex-LM works with a license file. There are parts built into the software that uses it to check the file and determine if you are allowed to start it.

  • Server, you have a server that is reachable for everyone in the company (Yes that can be an international server)
  • Locally Server, you have the Flex-LM server on your local machine
  • Locally license file, there is no Flex-LM server, Rhapsody will read and decode the license file itself. The license file uses your network cards MAC address as a “key”.
  • Locally Dongle, you have a license file that uses the Dongle “ID” as a “key”

For the Server (local or remote) you need to install the Flex-LM key Manager

Have I already told you that I hate Windows?

I do. Really. It is such a @#$%^&*( OS. The fact that you must distinguish between 32-Bit and 64-Bit is already a pain not to mention everything else.
So for the dongle driver you need to check if you have 32- or 64-Bit. Also it seems to be a bit of a problem when you have the latest Windows 10 version. (although it seems to be Windows Type, (Home, Pro, ultimate, etc) dependant.
You can download your driver here.

OK. I did all that. It doesn’t work. Now what?

First: Don’t get mad or sad, this is not abnormal… Here are some pointers where you can start to get stuff running:

  • As always: You can ask us. We help you.
  • You can ask google. You’ll be surprised what google knows when you type in your exact error message.
  • READ the error message. Flex-LM mostly says exactly what the problem is.
  • find your lmtools.exe program, it helps you finding what is wronglmtoolsMain
  • There is an environment variable TELELOGIC_LICENSE_FILE that points to license files or paths where license files are (The latter only finds “license.lic” files). Unfortunately this is not the only source for locations, there is also:
  • A Registry Entry: HKEY_CURRENT_USER\Software\FLEXlm License Manager also has a Field “TELELOGIC_LICENSE_FILE” that contains the path information. If you want to delete incorrect entries you have to do it here as well… Flex-LM updates this entry when you add new paths to the Environment Variable but does not delete any when you change the Env Var again…
  • Check the number of your Dongle (Do this also physically on the Dongle itself) in the lmtools tab: “System Setting” and in the license file.
  • Any change in your system, OS update or Rhapsody update can influence the working of your license. beware of that. So if your license does not work anymore, try to check if something happens to the OS or other software (Check logs files)
  • Do you have a new network card? Most licenses work with your MAC address. Sometimes you can change the MAC address of your network card. But you can ask for a new license, IBM will give you one (Not every week of course…)

So. I hope this helps a little bit!

Happy modeling with Rhapsody!

Walter van der Heiden (wvdheiden@willert.de)

 

Computer problems

Somehow my Schiphol flights are jinxed. Last year my Zürich flight was cancelled twice, once with snow, the other one while the flight control center wasn’t working. But I was not thinking about that in the train to Schiphol. Today I fly to Bristol, that is… when KLM, Schiphol or whoever is letting me…

It is snowing very lightly so the plane arrived late, but that’s OK… Dropping of my suitcase was real quick today (thanks SkyPriority ) I could even pass the really long line for the passport check (What??? Yep… Brexit, remember…) But I always carry my real passport with me so I could use the electronic line. 5 minutes instead of 1,5 hours… Cool. I thought…

But at the gate, where I met Robert who was flying in from Detroit, we were waiting and waiting and waiting… After a while the PA system explained that they had computer problems and that boarding might take a while. Oh great.

But it was faster than feared and we were in the bus pretty fast. Wait the bus??? Yep.. Since Brexit the UK travels via gate D6 in the basement, you have to go by bus to the place where they park the, relatively small, airplanes (Embraer 175/190) After entering the bus and driving a bit we were waiting before an airplane. And waiting… and waiting… until the electronic Bus voice told us that the bus was leaving…

And after a small drive we were being dropped of at the terminal. When all passengers were back they told us that the plane we saw was really there but they couldn’t find the crew….

I’m typing this while waiting for a crew. Hoping we still go, it would be very inconvenient when the flight would be cancelled now.
After almost 3 Hours (The time after which KLM would have to start pay….) they finally managed to get a crew and get us in the air.. Hey! Flying is fun. Always.

C or C++

Always the question. I don’t want to answer it now, I just want to give some tips and tricks. In Rhapsody, a model (a.rpy file) has a language. if you open the file with a text editor you can see that on the first line, it says “C” (or “C++” or “Java”) Now, all units, which are files basically, have this language indicator in them. There is also a “*”, that indicates a “don’t-care” what the language is. That is very useful for profiles that are more or less language independent (e.g. a “Styles” profile that contains stuff to influence the GUI )

So it is possible to switch parts of your model to another language, just right click on the unit, select “Edit Unit” and then you can select the language. Now there are some side-effects. You can change the language of a component but it can only contain packages and classes/objects of the same language in its scope. So that is why not all browser elements show up. Also… there is a way to make elements show up in both, the “*” method. You have to edit the .sbs files by hand but it works.

I already tried that for you and…. it works…;-) You can create a “C” package, include that in the scope of a “C” Component, close the model, edit the package file by hand to be the other language, open the model and…. you can include it in the other component. Then edit the package file to be “*” (after closing the model…) and you will see that you can generate 2 different languages from the same package.

32Bit or 64Bit

I think that Rhapsody 8.3 has a real good 64Bit version. If the issues with the new file format and extensions (and some other issues) are solved, we start to test our RXF and other tools for the use with 64Bit. That will solve some problems! Also 64Bit is a lot faster when handling large AUTOSAR Models!

IFix2

– IBM just released iFix2 for Rhapsody 8.3.

That’s it for today, happy Modeling with Rhapsody

Walter van der Heiden (wvdheiden@willert.de)

Publisher Subscriber

On the road again….

Last week I was on tour in Germany by car. Not by myself but together with Andreas. That makes traveling a lot more fun, alone is OK but with someone to talk to (or to listen to Jazz on my Burmester…) is a lot cooler.

img_0058

S-class Burmester speaker

First evening stage was from home to Bückeburg. Sunday evening is perfect for driving, it is quit on the road and trucks are only allowed on the street after 22:00u. Then the next morning early to Stuttgart but via Karlsruhe. We had a visit to a partner company, show them our AUTOSAR solution. then to Stuttgart for the hotel.

Next two days was at an automotive customer to help them using Rhapsody to create the architecture for some very cool stuff. Sorry,…can’t tell you any more… sometimes stuff must be kept secret….

During that 2 days I came across an old friend, the Publisher-Subscriber Design Pattern and I decided to write something about it.

Design Pattern

Publisher Subscriber is a design pattern. A design pattern is not just a library function, it is a standard way to solve a problem, you can not give standard code for it but you can give example code that you must adapt to implement in your own realm. (Not always, due to clever inheritance it is possible to give some standard stuff for OO languages.)

What is PS (Publisher – Subscriber) ? It is just what it says. Somebody publishes something and somebody else can subscribe to it.
Suppos you have a button in your system and you want an event when the button is pressed. Easy, just do a CGEN (me->receiver, evOfInterest() )….
If it only were that easy… Of course this is not a solution, you probably want to re-use the button in other applications. If you have solved it like this, you have to change the button each time you want to re-use it. Better is to let the button be unaware of anything from the application and:

Reverse the Relation

Yes. The application should have a relation with the hardware and not the other way around. The hardware should have a “subscribe()” function that allows an interested user to be notified when the event of interst comes by.

*^@#$&*( “C”…

Yes… the old “C” fan starts to see the advantages of “C++”… “C” definitely has its uses but design patterns just work so much easier when you have encapsulation, inheritance templates and overloading.

image-1

A very cool example of ‘C’…

The publisher subscriber pattern works as follows, you have a publisher that “publishes” a certain service, let’s say a button can be pressed, you can “subscribe” to that press. This is done by a subscribe function where a function pointer and (We’re using Rhapsody in”C”!) a “me”-pointer are passed. The function stores them in attributes and can call the function via the pointer. Sounds easy but there are some caveats. You have to know the signature of the function to “type” the attribute and the subscribe functions’ arguments. This is a bit awkward since you can not “just” take any function, your compiler will protest. Also the “me”-pointer has to be of type “void *”, you can never predict which object it will be. Depending on the compiler you need some casts… not really elegant.PublSubsc

Elegant C++

Compare that to “C++” where you just create a Publisher Class that has a relation with a subscriber class. The publisher Class has the “subscribe” function that has a pointer to the class as argument. This will be stored in the “Subscriber”, that has an abstract Notify function that needs to be implement in the inheriting class (Since it is abstract) Screen Shot 2018-03-28 at 16.12.29.png
You can use the subscriber type as a template and you have a ready made function that works for most cases. You only have to adapt the subscriber function but you can even make multiple functions with different parameters, the compiler will help you.

To make life easier I have put this in a Rhapsody 8.2.1 model, download here: PublSubsc.
As always: If you need an older Version: please respond.

That was it for today! Happy modeling with Rhapsody!

Walter van der Heiden (wvdheiden@willert.de)

München in winter – Rhapsody 8.3!

Muenchen

This week I was in München again. We have lots of customers there so traveling to Munich once and a while is unavoidable.

This time I went there by plane. There are more possible ways to go to Munich, plane, train and car. I let it depend on the starting point (from Home, which is 150km further then from the Office) The weather forecast (not very good, snow and ice) and my own personal feeling at the time (don’t wanted to drive far) So… KLM, do your job…

This time they did, no snow or wind to cancel the flights. And then flying is pretty easy for me. Just hop on the train in the city I live, check in (Yes… the Netherlands have a “public Transport Chipcard”. Just hold it against the check-in pole and it beeps. Check out again 1,5 hours later at Schiphol and you’re done. Eat your heart out, Germany…..

Flying went fast and comfortable. I like flying with KLM. In Munich I took the S-Bahn to the hotel. Always a challenge to find out where to go and which train you need. Giving the right directions in the right dose is an art, Munich does not have that.
But OK, München is OK. I don’t like their football team (at least not “that one”) but the city is cool. So I arrived at the hotel and checked in. # days of AUTOSAR modeling before me, later more about that!

Rhapsody 8.3

Almost in Nikolaus day (December 6) IBM released Rhapsody 8.3. As I already mentioned before: If it ain’t broke, don’t fix it….
If you really want to update: please wait until we have tested the release and determined the parts that require special attention.
In a complex world, development environments are becoming more and more complex. Even small changes can have large consequences. Here I will give you a heads-up on the changes and some caveats we (and a helpfull customer!) have already established.

File Format and extensions

To allow a better integration in the Jazz platform, IBM needed to change the format that Rhapsody uses to store its models. until now that format was propriety (but working quite well) IBm changed that to an XML format. To indicate the change they changed the file extension (Like Microsoft did in Word and Excel, the went from .doc and .xls to .docx and .xlsx) Rhapsody files now also have an x behind it (.rpyx, .sbsx, etc)
This seems like a minor issue but is deadly when you want to keep your historical information in your config management files.
Some CM systems allow you to change the name of files but you have to do that by hand. Not a small job if you have large models….

Not new

In fact, the new database format was already there, it was just optional in version 8.2.1. It was there in the release notes but it was not really noticed. To be clear: I like this change. But it is a complex one, it takes time to solve all the pieces of the puzzle.

DiffMerge

OK, a new file format. Does that work with DiffMerge? The good new: Yes it does. The bad news: it only saves as .<file>x. converting old into new.

Save As?

The question that comes up immediately is: Can I still save in the old format. Yes you can! Like all (since 7.4) Rhapsody versions you can do “File”, “Save As” and then go back 2 Database versions. I don’t have an official statement from IBM yet but to me this looks like this option will be gone after 2 more releases.

When to update?

So this does not bother you? And you want to update to 8.3 anyway. Well… don’t do that yet. Certainly not if you use Eclipse (Plugin and Workflow), there have been some issues there.
There has been an iFix already but that did not solve all problems. IBM is working on this with high priority but it takes some time. I’ll keep you posted.
If you also use the RXF you also have to be a little patient, we have to test it first. Check our download portal, we keep you informed.

Happy modelling with Rhapsody (8.2.1)

Walter van der Heiden (wvdheiden@willert.de)

« Older posts Newer posts »

© 2025 Rhapsody TechBlog

Theme by Anders NorenUp ↑