Code generation

Introduction

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

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

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

Conspiracy Theory

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

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

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

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

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

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

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

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

Walter van der Heiden (wvdheiden@sodiuswillert.com)

2 thoughts on “Code generation

  1. Hi Walter,

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

    Yes, that hurts me too. I can feel your pain.

    But I regard code generation is only as one artifact among many other artifacts that can be generated based on an UML model. Even plain vanilla UML models, without having (custom) profiles attached can be the base of so many artifacts including user and maintenance manuals. Yes, even manuals: use cases “annotated” by interactions not only help developers to understand what the system should do, but also can be used to generate manuals.

    /Carsten

    Like

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.