{"id":8079,"date":"2025-11-29T09:41:23","date_gmt":"2025-11-29T08:41:23","guid":{"rendered":"https:\/\/web-dev-weissblau.de\/microconsult\/?p=8079"},"modified":"2026-02-11T05:03:53","modified_gmt":"2026-02-11T04:03:53","slug":"object-oriented-and-model-based-tools","status":"publish","type":"post","link":"https:\/\/www.microconsult.de\/en\/oo-und-modellbasierte-werkzeuge\/","title":{"rendered":"Object-oriented and model-based tools"},"content":{"rendered":"<h2>Ein Werkstattbericht<\/h2>\n<p style=\"text-align: left;\" align=\"center\">Autoren: Dr. Andreas Wagener, Dr. Fritz Faulhaber GmbH &amp; Co. KG, Robert Stemplinger und Markus Pauls, b1 Engineering Solutions GmbH<\/p>\n<h3>Beitrag &#8211; Embedded Software Engineering Kongress 2015<\/h3>\n<p><strong>\u00dcber Tools wie Rhapsody kann aus der Modellierung direkt Code auch f\u00fcr Embedded Systeme generiert werden. Im betrachteten Projekt wird das gesamte System derart in Rhapsody entworfen und implementiert. Stacks und signalverarbeitender Code werden mit eingebunden. Dazu sind einige Vorarbeiten n\u00f6tig, das Abstraktionsniveau steigt f\u00fcr alle Beteiligten &#8211; verbunden mit der Chance, bis zum Produkt eine klar erkennbare Architektur umzusetzen und damit ein gut wartbares Produkt zu erhalten.<\/strong><\/p>\n<p>Die Dr. Fritz Faulhaber GmbH &amp; Co. KG entwickelt, fertigt und verkauft Klein- und Micromotoren, die dazu passenden Positionsgeber und Ansteuerungen zum geregelten Betrieb der Motoren. Die Ansteuerungen sind in Ausf\u00fchrungen als reine Drehzahlregler oder auch als Positionsteuerungen im Programm. Realisiert sind diese als eingebettete Steuerungen auf der Basis von \u00b5Controllern, in denen alle Stufen der Regelung rein digital abgebildet werden. Betrachtet werden sollen hier die Positioniersysteme.<\/p>\n<p>Die Software einer Motoransteuerung f\u00fcr einen Servoantrieb kann grob in die Teile<\/p>\n<ul>\n<li>Hardwaretreiber,<\/li>\n<li>Motorregelung,<\/li>\n<li>Steuerung und Diagnose,<\/li>\n<li>Kommunikation und<\/li>\n<li>Parametersprecher (Objekt-Verzeichnis oder Management Information Base (MIB))<\/li>\n<\/ul>\n<p>gegliedert werden. Erweiterungen und Anpassungen an ver\u00e4nderte Anforderungen, aber auch Beschr\u00e4nkungen des Zielsystems erforderten in den Bestandssystemem den klaren Entwurf zu verlassen. Dies f\u00fchrt zu der klassischen Situation bei eingebetteten Steuerger\u00e4ten mit deutlich ineinander \u00fcbergehenden Softwareanteilen.<\/p>\n<p>Trotz dieser Beschr\u00e4nkungen stellt der Motion Controller ein sehr stabiles Ger\u00e4t dar, Erweiterungen erfordern jedoch einen h\u00f6heren Aufwand und Entwicklungszeitraum. Insofern war f\u00fcr eine n\u00e4chste Ansteuerungs-Generation klar, dass insbesondere die Wartbarkeit und Erweitbarkeit durch eine klare und modulare Software-Architektur deutlich verbessert werden sollte.<\/p>\n<p>Funktionale Anforderungen waren:<\/p>\n<ul>\n<li>ein deutlich gesteigerter Umfang an unterst\u00fctzenden Betriebsarten,<\/li>\n<li>die Unterst\u00fctzung mindestens eines Ethernet-basierten Feldbusses als Option,<\/li>\n<li>eine wesentlich gesteigerte Flexibilit\u00e4t in der Konfiguration.<\/li>\n<\/ul>\n<p>Die Anforderungen waren mit der Erwartung verbunden, k\u00fcnftig wieder deutlich schneller auf Kundenw\u00fcnsche eingehen zu k\u00f6nnen.<\/p>\n<p>Gleichzeitig sollte der Wechsel auf eine aktuelle und zukunftstr\u00e4chtige Prozessorfamilie erfolgen, die Software aber so entwickelt werden, dass auch k\u00fcnftige Prozessorwechsel deutlich vereinfacht werden.<\/p>\n<h2>Grundentscheidungen<\/h2>\n<p>Aufgrund der sehr verwobenen Struktur nach Abbildung 1 (siehe\u00a0<a title=\"OO und modellbasierte Werkzeuge (PDF)\" href=\"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/11\/fachinfo_ese_mod_oo_und_modellbasierte_werkzeuge_wagenerstemplingerpauls_dr._fritz_faulhaber__b1_engineering_solutions.pdf\" target=\"_blank\" rel=\"noopener\">PDF<\/a>) war relativ schnell klar, das aus dem bestehenden Produkt eigentlich nur die Erfahrungen im Betrieb von elektrischen Kleinantrieben \u00fcbernommen werden konnten. Alle Teile der Software mussten neu entworfen werden.<\/p>\n<p>Eine Aufgabe war daher die Suche nach einer Prozessorplattform f\u00fcr die speziellen Anforderungen von integrierbaren Kleinantrieben. Die andere Aufgabe war die Suche nach einer geeigneten Entwurfs-Methodik, verbunden mit der Suche nach geeigneten Werkzeugen, die es erlauben w\u00fcrden, die Grundentscheidungen aus dem Entwurf auch in der Implementierung abzusichern.<\/p>\n<p>Abweichend vom bisherigen Vorgehen sollte ein objekorientierter Ansatz verfolgt werden, auch um den Entwurf \u00fcber die Mechanismen der UML zu strukturieren.<\/p>\n<p>Bereits bisher kamen f\u00fcr die Entwicklung der signalverarbeitenden Softwareteile in der Regelung und Positionsauswertung Target Link f\u00fcr die Code-Erzeugung aus SIMULINK Modellen zum Einsatz. Dieser Ansatz eignet sich aber nicht, um die eher event-basierten Softwareteile aus der Treiber-Schicht, dem Parameterhandling, der Kommunikation und auch der Antriebssteuerung zu beschreiben und dann auch zu implementieren.<\/p>\n<p>Nach einer ersten Evaluation und auf der Basis der Erfahrungen aus fr\u00fcheren Projekten [1] fiel die Entscheidung auf Rhapsody bzw. f\u00fcr die Embedded Version, wie sie von der Fa. Willert angeboten wird. Hauptargumente waren:<\/p>\n<ul>\n<li>Arbeitet nativ im OO-Entwurf<\/li>\n<li>Unterst\u00fctzung von typischen Embedded Plattformen auch in C bei guter Lesbarkeit<\/li>\n<li>Ausreichende Durchg\u00e4ngigkeit vom Entwurf bis in die Implementierung<\/li>\n<li>Guter Einstieg m\u00f6glich, da wenig Legacy Anteile zu \u00fcbernehmen<\/li>\n<\/ul>\n<p>Es war aber von Beginn an klar, dass damit auch eine erhebliche Lernkurve sowohl hinsichtlich der Bediensicherheit des Werkzeugs als auch in der Entwurfsmethodik anstehen w\u00fcrde. Klar war daher auch, dass wir uns einen erfahrenen Partner f\u00fcr die anstehenden Kernthemen suchen mussten, den wir in der Fa. Tieto bzw. Tieto Embedded Systems &#8211; heute b1 Engineering Solution fanden (siehe dazu auch Abb. 2,\u00a0<a title=\"OO und modellbasierte Werkzeuge (PDF)\" href=\"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/11\/fachinfo_ese_mod_oo_und_modellbasierte_werkzeuge_wagenerstemplingerpauls_dr._fritz_faulhaber__b1_engineering_solutions.pdf\">PDF<\/a>).<\/p>\n<h2>Architektur &amp; Design<\/h2>\n<p>Basierend auf der erarbeiteten Spezifikation, den Use-Cases des Systems und den Erkenntnissen aus dem Bestandssystem entstand zun\u00e4chst eine Grobarchitektur:<\/p>\n<ul>\n<li>Aufteilung der Gesamtfunktion in Pakete und z.T. auch schon in Objekte<\/li>\n<li>Definition der treibenden Aktivit\u00e4ten des Systems<\/li>\n<li>Kl\u00e4rung der Datenverwaltung bzgl. des Umgangs mit den Parametern und deren Speicherung<\/li>\n<\/ul>\n<h2>Umsetzung<\/h2>\n<p>Angewandte Muster waren die Schichtbildung (Layering) mit insbesondere einer eindeutigen Zuordnung von Verantwortlichkeiten f\u00fcr die Kapselung der \u00b5Controller-typischen Peripherieeinheiten im HAL und einer darauf aufsetzenden Middleware-Schicht (siehe Abb. 3,\u00a0<a title=\"OO und modellbasierte Werkzeuge (PDF)\" href=\"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/11\/fachinfo_ese_mod_oo_und_modellbasierte_werkzeuge_wagenerstemplingerpauls_dr._fritz_faulhaber__b1_engineering_solutions.pdf\" target=\"_blank\" rel=\"noopener\">PDF<\/a>). Die Middleware-Schicht stellt deutlich abstrahierte Informationen wie die Motorgeschwindigkeit als Ergebnis unterschiedlichster Sensorsysteme zur Verf\u00fcgung oder errechnet Stellgr\u00f6\u00dfen aus allgemeinen Vorgaben, wie z.B. die passende Ansteuerung f\u00fcr den angeschlossenen Motor aus der Sollspannung des Reglers.<\/p>\n<p>Um eine Signalflussrichtung entgegen den definierten Abh\u00e4ngigkeitsbeziehungen zu realisieren, wurde das Publish\/Subscribe-Pattern bzw. Beobachter-Muster verwendet. Dazu registrieren Informationskonsumenten aus h\u00f6heren Schichten Callback-Funktionen\u00a0und\u00a0Instanz-Zeiger bei den Informationsproduzenten in den niedrigeren Schichten. Dieses Pattern wird gleicherma\u00dfen f\u00fcr den \u00dcbergang zwischen Interrupt-Kontext und Task-Kontext als auch zwischen Task-Kontexten verwendet. Um die Nebenl\u00e4ufigkeiten zu beherrschen, wird in den Callback-Funktionen daher im Allgemeinen ein Event der Laufzeitumgebung an die adressierte Objekt-Instanz versendet. Es ist vielfach ausreichend, genau einen Subscriber bereits w\u00e4hrend der Initialisierung zu registrieren (siehe Abb. 4,\u00a0<a title=\"OO und modellbasierte Werkzeuge\" href=\"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/11\/fachinfo_ese_mod_oo_und_modellbasierte_werkzeuge_wagenerstemplingerpauls_dr._fritz_faulhaber__b1_engineering_solutions.pdf\" target=\"_blank\" rel=\"noopener\">PDF<\/a>).<\/p>\n<p>Die Aktivit\u00e4ten des Systems k\u00f6nnen aufgeteilt werden in die streng zeitlich getriebenen Aktivit\u00e4ten einerseits:<\/p>\n<ul>\n<li>der Timerinterrupt f\u00fcr die Motorregelung (100\u00b5s, synchron zu PWM)<\/li>\n<li>ein Timerinterrupt mit 1ms Zykluszeit f\u00fcr Diagnoseaufgaben<\/li>\n<\/ul>\n<p>Beide werden \u00fcber einen Interrupt angesto\u00dfen und auch im Interrupt-Kontext ausgef\u00fchrt. Diese signalverarbeitenden Systemteile werden in SIMULINK entworfen und \u00fcber TargetLink in C-Code mit einer zum Systementwurf passenden Schnittstellengestaltung \u00fcberf\u00fchrt.<\/p>\n<p>Auf der anderen Seite stehen die eher reaktiven Aktivit\u00e4ten:<\/p>\n<ul>\n<li>Externe Ereignisse, wie z.B. der Empfang einer kompletten Botschaft aus den Kommunikations-Stacks (die Verarbeitung der einzelnen Zeichen, z.B. der RS232 Schnittstelle, werden komplett im Schnittstelleninterrupt-Kontext ausgef\u00fchrt).<\/li>\n<li>Time-outs \u00fcber einen niedriger priorisierten Timer<\/li>\n<\/ul>\n<p>In beiden F\u00e4llen wird der Interrupt-Kontext verlassen und ein Event ausgel\u00f6st, der typisch \u00fcber eine Zustandsmaschine bearbeitet wird. Die Modellierung der Interaktion kann hier vorteilhaft \u00fcber Kommunikationsidagramme, die Systemreaktion \u00fcber Zustandsmaschinen entworfen werden.<\/p>\n<h2>Anteile der Laufzeitumgebung<\/h2>\n<p>Innerhalb des Willert Framework werden Zustandsmaschinen und die n\u00f6tige Eventbehandlung direkt nativ angeboten, d.h. aus Zustandsdiagrammen und den dazu geh\u00f6renden Events kann direkt lauff\u00e4higer Code erzeugt werden. Da die Reaktion auf jeden Event am St\u00fcck abgearbeitet wird (run to completion), k\u00f6nnen Zustandsmaschinen auch verwendet werden, um quasi gleichzeitige Ereignisse zu serialisieren, indem die Ereignisse in einer Event-Queue einer Zustandsmaschine eingestellt werden \u2013 so z.B. f\u00fcr die Bearbeitung von \u00fcber die serielle Schnittstelle erhaltener Anfragen in Konkurrenz zu intern erzeugten asynchronen Botschaften.<\/p>\n<h2>Umsetzung in Rhapsody<\/h2>\n<p>Das Gesamtsystem wurde in eine Reihe von parallelen Rhapsody Projekten zerlegt, die je f\u00fcr eine Komponente die Arbeitsumgebung aus Implementierung und Testpaket beinhalteten. Damit k\u00f6nnen die Komponenten weitgehend getrennt bearbeitet werden &#8211; wichtig f\u00fcr die Arbeit im Team.<\/p>\n<p>Die Komponenten wurden dann entsprechend den Abh\u00e4ngigkeiten und Schichten von Beginn an zu Integration zusammengef\u00fcgt (Top Down), deren Funktionsumfang dann schrittweise wachsen konnte.<\/p>\n<p class=\"MMTopic2\">Die Basis bildet ein Projekt, in dem lediglich Typ- und Stereotype-Definitionen beheimatet sind, die sich aus der Programmierrichtlinie ergeben. Darauf setzten die Fachpakte auf, die je aus der zu entwickelnden Komponente und optional einem Test-Package bestehen. \u00dcber das Test-Package k\u00f6nnen aus dem Fachpaket ausf\u00fchrbare Testkomponenten erzeugt werden, die je nur den Umfang der betrachteten Fachkomponente nutzen. Auf oberster Ebene werden die Komponenten im Integrationsprojekt referenziert (siehe Abb. 5,\u00a0<a title=\"OO und modellbasierte Werkzeuge (PDF)\" href=\"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/11\/fachinfo_ese_mod_oo_und_modellbasierte_werkzeuge_wagenerstemplingerpauls_dr._fritz_faulhaber__b1_engineering_solutions.pdf\" target=\"_blank\" rel=\"noopener\">PDF-Datei<\/a>)<\/p>\n<h2 class=\"MMTopic2\">Integration von C-Code<\/h2>\n<p>F\u00fcr die Integration und die zu erstellenden Bin\u00e4rfiles stellen die Rhapsody-Projekte die Build-Umgebung dar. Der gesamte Code wird \u00fcber die Projekte in ein Projekt der C-Entwicklungsumgebung (hier Keil \u00b5Vision) verschoben und dort nur gebildet und debuggt. Die exportierten C-Files unterliegen damit nicht dem Konfigurationsmanagement.<\/p>\n<p>Trotzdem m\u00fcssen auch in C vorliegende Code-Teile, wie z.B. gekaufte Kommunikations-Stacks oder die \u00fcber TargetLink erzeugten Code-Anteile, integriert werden. Aufgaben sind dabei, die vorhandenen Codes jeweils aktuell ins C-Projekt zu kopieren, sowie ggf. die Gestaltung von Schnittstellen, um die externen Code-Anteile im Projekt nutzen zu k\u00f6nnen.<\/p>\n<p>Der erste Teil der Aufgabe gelingt \u00fcber make-File Erweiterungen, die innerhalb der in Rhapsody erstellten Komponenten angelegt werden k\u00f6nnen und die Kopieranweisungen aufnehmen.<\/p>\n<p>F\u00fcr die Integration ins Modell wurden typisch Wrapper-Klassen angelegt. So kann z.B. mit TargetLink sehr gut ein Regler erstellt werden. Auch k\u00f6nnen die Parameter und Variablen in je einer klassenartigen Struktur gesammelt und auch an der Funktionsschnittstelle der eigentlichen Rechenroutine verwendet werden. Das so erzeugte C-Modul kann dann als externer Code im Projekt eingebunden werden. F\u00fcr den Zugriff auf die einzelnen Parameter der Regler-Struktur werden in TargetLink aber keine zur Integration geeigneten Zugriffsmethoden bereitgestellt. Bliebe der Direktzugriff auf die Member der Struktur, oder eben ein Wrapper, der daf\u00fcr die Read- und Write-Handler bereitstellt und das Wissen \u00fcber die C-Struktur kapselt.<\/p>\n<h2>Vorteile<\/h2>\n<p>Das Projekt ist noch nicht abgeschlossen, eine vorl\u00e4ufige Bewertung l\u00e4sst als Vorteile erkennen:<\/p>\n<ul>\n<li>Durch die Strukturierung des Systems \u00fcber die Mechanismen der OO bleibt der Grundentwurf der Architektur st\u00e4ndig im Blick. Abh\u00e4ngigkeiten werden bewusst gezogen, das Schichtenmodell konsequent eingehalten.<\/li>\n<li>Bei sauberer Trennung zwischen den zeitgetrieben und den eventgetriebenen Aufgaben des Systems k\u00f6nnen die Mechanismen der in der Laufzeitumgebung hinterlegten Event-Queues voll zur Geltung kommen. Trotz einer Reihe von Nebenl\u00e4ufigkeiten sind die Entwickler nicht mehr mit den zur Synchronsiation n\u00f6tigen Mechanismen wie Semaphoren und Interrupt-Sperren befasst.<\/li>\n<li>Die Lesbarkeit des erzeugten Codes ist grunds\u00e4tzlich hoch, es bleibt aber die Aufgabe der Entwickler bzw. des Projektleiters darauf zu achten, dass die Komplexit\u00e4t der Methoden und Klassen beherrschbar bleibt. Das Werkzeug leistet dabei keine Unterst\u00fctzung.<\/li>\n<\/ul>\n<h2>Herausforderungen und M\u00fchen<\/h2>\n<p>Insbesondere aus Sicht des Entwicklers ergeben sich in der t\u00e4glichen Anwendung von Rhapsody einige H\u00fcrden, mit denen man zu leben lernen muss. Im Folgenden seien einige Beispiele genannt. Vieles k\u00f6nnte unserer Meinung nach leicht abgestellt werden, wenn der Wille zur Pflege des Produkts noch ausgepr\u00e4gter w\u00e4re.<\/p>\n<h2>Der RPY Code- und Modell-Editor<\/h2>\n<ul>\n<li>Das Kopieren\/Einf\u00fcgen\/Modifizieren (ein h\u00e4ufig angewandtes Entwicklungsmuster) von Modellelementen geht zwar h\u00e4ufig, aber nicht immer. Probleme treten insbesondere bei den Elementen unterhalb des Standard-Packages &#8222;Components&#8220; auf oder aber auch beim Kopieren zwischen verschiedenen Projekten.<\/li>\n<li>Ein Kopieren aus ReadOnly-Fenstern (z.B. in eine Mail) ist nicht m\u00f6glich. Auch kann man in ReadOnly-Fenstern nicht scrollen.<\/li>\n<li>Windows Key-Belegung (Ctrl-Entf, Ctrl-Einfg) funktioniert nicht, nur Ctrl-C und Ctrl-V.<\/li>\n<li>Autovervollst\u00e4ndigung im Code-Editor funktioniert nur unvollst\u00e4ndig (nur einmal pro Zeile, nur lokale Elemente, keine Literale, &#8230;)<\/li>\n<li>Generierter Code, der einem Package zuzuordnen ist, kann nicht automatisch mit einem Prefix versehen werden.<\/li>\n<li>Refactoring ist m\u00fchsam, da der h\u00e4ndisch hinterlegte Code vom Tool nicht mit einbezogen wird.<\/li>\n<\/ul>\n<h2>Properties<\/h2>\n<p>Welche Properties bei der Code-Generierung wie oder wann wirken, ist sehr undurchsichtig. Hier hilft oft nur Probieren. Beispielsweise ist das Property C_CG::Type::ReturnType nicht wirksam, wenn man sich \u00fcber das Property C_CG::Attribute::AccessorGenerate automatisch einen Accessor generieren lassen will. Im genannten Fall sollte anstelle einer Kopie einer Struktur (default) ein Const-Zeiger auf die Struktur zur\u00fcckgegeben werden.<\/p>\n<h2>Versionierung<\/h2>\n<p>Die Files, in denen Rhapsody seine Informationen hinterlegt, sind leider nicht sehr &#8222;Merge&#8220;-freundlich gestaltet. Insbesondere werden in Files h\u00e4ufig Zeitstempel und GUIDs ge\u00e4ndert, obwohl sie ansonsten keinerlei \u00c4nderungen erfahren haben. Um ein gemeinsames Arbeiten zu erm\u00f6glichen, haben wir daher h\u00e4ufig vor dem Commit mit den Mitteln des Konfigurations-Management-Tools manuell kontrolliert, welche Files wirklich inhaltlich ge\u00e4ndert wurden. Bei tats\u00e4chlichen Konflikten war mitunter auch Handarbeit mit dem Merge-Tool notwendig, sofern sich diese Konflikte nicht im Vorfeld durch Absprachen umgehen lie\u00dfen.<\/p>\n<h2>OO in C<\/h2>\n<p>Wir arbeiten gerne und h\u00e4ufig mit konstanten, privaten Daten-Tabellen, die dann durch den Code ausgewertet werden. Leider k\u00f6nnen Staircase-Member bei Klassen nicht angelegt werden (wie es in C++ m\u00f6glich ist). Anwendungsbeispiele w\u00e4ren:<\/p>\n<ul>\n<li>Tabellen-gest\u00fctzter CRC-Algorithmus<\/li>\n<li>HW-Konfigurationen<\/li>\n<li>Tabellen von Callback-Funktionen<\/li>\n<\/ul>\n<p>Umgehungsm\u00f6glichkeiten ergeben sich teilweise durch die Definitionen durch Types, aber z.B. nicht f\u00fcr die Callback-Funktionen, da die Funktionsprototypen im generierten Code erst nach den Types angeordnet werden.<\/p>\n<h2>Voraussetzungen<\/h2>\n<p>Die Erfahrung zeigt, dass f\u00fcr ein effizientes Arbeiten mit Rhapsody fr\u00fchzeitig die richtigen Voraussetzungen zu schaffen sind. Aus unserer Sicht sind folgende Punkte wichtig:<\/p>\n<ul>\n<li>F\u00fcr die projektspezifischen Einstellungen sollte von Beginn an ein Profil angelegt und durchg\u00e4ngig referenziert werden (siehe Abbildung 5,\u00a0<a title=\"OO und modellbasierte Werkzeuge (PDF)\" href=\"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/11\/fachinfo_ese_mod_oo_und_modellbasierte_werkzeuge_wagenerstemplingerpauls_dr._fritz_faulhaber__b1_engineering_solutions.pdf\" target=\"_blank\" rel=\"noopener\">PDF<\/a>). Da es am Anfang aufgrund fehlender Erfahrung meist noch unklar ist, welche Property-Einstellungen wie zu setzen ist, lassen sich auf diese Art und Weise ansonsten weitreichende nachtr\u00e4gliche \u00c4nderungen relativ einfach einbringen.<\/li>\n<li>Bestimmte Property-Einstellungen sollten an Stereotypes gebunden werden. Sie sind dann deutlich im Modell erkennbar und k\u00f6nnen einheitlich gehandhabt werden. Beispiele:\n<ul>\n<li>SimpleType: z.B. f\u00fcr enums, die sollen im Allgemeinen per Value \u00fcbergeben werden.<\/li>\n<li>Volatile: setzt das Property C_CG::Attribute::PreDeclarationModifier zu \u201cvolatile\u201d und sollte f\u00fcr volatile Attribute verwendet werden.<\/li>\n<li>PackedT: setzt des Property C_CG::Type::PreDeclarationModifier zu \u201c__packed\u201d und sollte f\u00fcr gepackte Strukturen verwendet werden.<\/li>\n<\/ul>\n<\/li>\n<li>Packages sollten gro\u00dfz\u00fcgig verwendet werden, um die Zusammenarbeit mehrerer Entwickler zu erleichtern. Diese Packages k\u00f6nnen dann in den jeweiligen Entwickler-Projekten referenziert werden. Packages werden standardm\u00e4\u00dfig als eigene Unit in einem separaten File gespeichert.<\/li>\n<li>Es ist vorteilhaft, ein &#8222;Helper&#8220;-Package mit allgemeing\u00fcltigen Typen und Algorithmen (z.B. CRC) ganz unten im Layering zu definieren, das f\u00fcr alle dar\u00fcber liegenden Layern wiederverwendbar ist. Das hatten wir \u2013 abgesehen von den \u00fcblichen Integer-Datentypen \u2013 nicht gemacht. Dies sp\u00e4ter nachzuholen, ist nur noch mit viel Aufwand realisierbar.<\/li>\n<\/ul>\n<p>Unabh\u00e4ngig von der konkreten Entwicklungsmethodik ist ein gutes Grundverst\u00e4ndnis der Dom\u00e4nen-spezifischen Probleme immer ein wesentlicher Erfolgsfaktor. In diesem Falle ist es z.B. das Verst\u00e4ndnis der treibenden Aktivit\u00e4ten und die Zuordnung in den zeitgetriebenen Interrupt-Kontext oder den ereignisbasierten Task-Kontext.<\/p>\n<p>Durch den abstrakteren, modellhaften Ansatz muss von den beteiligten Entwicklern noch mehr entsprechendes Wissen abverlangt werden. Man darf sich bei der Methodik nicht gleich in die Bits und Bytes fl\u00fcchten und im Nachhinein schauen, wie man alles zusammenf\u00fcgt. Der Vorteil von entsprechenden Modellierungs- und Codier-Richtlinien muss sicherlich nicht extra hervorgehoben werden.<\/p>\n<h2>Ergebnisse<\/h2>\n<p>Die bisherigen Ergebnisse m\u00fcssen differenziert betrachtet werden. Aus Sicht des Architekten erlaubt die modellbasierte Arbeit einen z\u00fcgigen \u00dcbergang von der Architektur bis in die Implementierung. Insbesondere bleiben durch die expliziten Notationen die Grundentscheidungen der Architektur stets im Blick.<\/p>\n<p>F\u00fcr die Entwickler stellt der Wechsel auf OO und Rhapsody eine erhebliche Umstelung ihrer Arbeitsweise dar. Statt in C-Files und sehr ausgefeilten C-Editoren entsteht der Code im Editor von Rhapsody. \u00c4nderungen in den C-Files w\u00e4hrend des Tests m\u00fcssen sorgf\u00e4ltig zur\u00fcckgepflegt werden. Nicht untersch\u00e4tzt werden darf auch der Paradigmenwechsel von einer Main-Loop auf ene Event-basierte Systemarchitektur.<\/p>\n<p>Aus Sicht des Projektverantwortlichen bestand die gr\u00f6\u00dfte Herausforderung in der Suche nach geeigneten Partnern. Der Umstieg auf einen OO-Entwurf gelingt nicht aus dem Stand. Rhapsody stellt ein sehr m\u00e4chtiges Werkzeug dar, mit eher \u00fcberschaubarer Dokumentation. Trotz eines vorgelagerten Evaluationsprojekts und begleitender Schulungen w\u00e4re das Projekt diesen Umfangs und Neuigkeitsgrades ohne die erfahrenen Partner nicht in der ohnehin knappen Vorgabezeit zu bew\u00e4ltigen gewesen.<\/p>\n<p>Kritisch anzumerken bleibt, dass ein erheblicher Teil der Zeit &#8211; typisch f\u00fcr embedded Systeme &#8211; in die Entwicklung von Middleware-Schichten geflossen ist. Diese weisen dadurch zwar ebenso wie die Applikation eine klare Struktur auf, dienen aber nicht zur Produktdifferenzierung. Hilfreich w\u00e4ren hier k\u00fcnftig ggf. st\u00e4rker standardisiere Middlewarepakete, die aber sicher Branchen- bzw. Anwendungstypisch ausgef\u00fchrt sein m\u00fcssen.<\/p>\n<h2>Literatur- und Quellenverzeichnis<\/h2>\n<p>[1] A. Wagener, Ch. K\u00f6rner, P. Seger, H. Kabza, Anpassung eines Embedded Target f\u00fcr verteilte Steuer- und Regelungsaufgaben an den RTW von Matlab\/Simulink, Embedded Intelligence 2001, N\u00fcrnberg<\/p>\n<p>[2] U. Lefarth, T. Beck, Qualit\u00e4ts- und Effizienzsteigerung bei der Entwicklung von Steuerger\u00e4te-Software, 3. Stuttgarter Symposium Kraftfahrwesen und Verbrennungsmotoren, 1999, Stuttgart.<\/p>\n<p>[3] Dr. Gary Morgang, AUTOSAR \u2013 ein Projekt zur Entwicklung von Steuerger\u00e4te-Software, Elektronik automotive 1\/2006<\/p>\n<p><a title=\"OO und modellbasierte Werkzeuge (PDF)\" href=\"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/11\/fachinfo_ese_mod_oo_und_modellbasierte_werkzeuge_wagenerstemplingerpauls_dr._fritz_faulhaber__b1_engineering_solutions.pdf\" target=\"_blank\" rel=\"noopener\"><strong>Beitrag als PDF downloaden<\/strong><\/a><\/p>\n<hr \/>\n<h2>Modellierung &#8211; MicroConsult Trainings &amp; Coachings<\/h2>\n<p><strong>Wollen Sie sich auf den aktuellen Stand der Technik bringen?<\/strong><\/p>\n<p>Dann informieren Sie sich\u00a0<a title=\"Alle Trainings und Termine\" href=\"https:\/\/www.microconsult.de\/alle-trainings-termine-komplettuebersicht\/\" target=\"_blank\" rel=\"noopener\"><strong>hier<\/strong>\u00a0<\/a>zu Schulungen\/ Seminaren\/ Trainings\/ Workshops und individuellen Coachings von MircoConsult zum Thema Modellierung \/Embedded- und Echtzeit-Softwareentwicklung.<\/p>\n<p><strong>Training &amp; Coaching zu den weiteren Themen unseren Portfolios finden Sie\u00a0<a title=\"Training &amp; Beratung - alle Themen\" href=\"https:\/\/www.microconsult.de\/training-beratung\/\" target=\"_blank\" rel=\"noopener\">hier<\/a>.<\/strong><\/p>\n<hr \/>\n<h2>Modellierung &#8211; Fachwissen<\/h2>\n<p>Wertvolles Fachwissen zum Thema Modellierung \/Embedded- und Echtzeit-Softwareentwicklung steht\u00a0<a title=\"Embedded- und Echtzeit-Softwareentwicklung\" href=\"https:\/\/www.microconsult.de\/embedded-und-echtzeit-softwareentwicklung\/\" target=\"_blank\" rel=\"noopener\"><strong>hier<\/strong>\u00a0<\/a>f\u00fcr Sie zum kostenfreien Download bereit.<\/p>\n<p><a title=\"Embedded- und Echtzeit-Softwareentwicklung\" href=\"https:\/\/www.microconsult.de\/embedded-und-echtzeit-softwareentwicklung\/\" target=\"_blank\" rel=\"noopener\"><strong>Zu den Fachinformationen<\/strong><\/a><\/p>\n<p><strong>Fachwissen zu weiteren Themen unseren Portfolios finden Sie\u00a0<a title=\"Fachinformationen\" href=\"https:\/\/www.microconsult.de\/fachwissen\/\" target=\"_blank\" rel=\"noopener\">hier<\/a>.<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ein Werkstattbericht Autoren: Dr. Andreas Wagener, Dr. Fritz Faulhaber GmbH &amp; Co. KG, Robert Stemplinger und Markus Pauls, b1 Engineering Solutions GmbH Beitrag &#8211; Embedded Software Engineering Kongress 2015 \u00dcber Tools wie Rhapsody kann aus der Modellierung direkt Code auch f\u00fcr Embedded Systeme generiert werden. Im betrachteten Projekt wird das gesamte System derart in Rhapsody [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_et_pb_use_builder":"","_et_pb_old_content":"","_et_gb_content_width":"","inline_featured_image":false,"footnotes":""},"categories":[],"tags":[],"class_list":["post-8079","post","type-post","status-publish","format-standard","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.9 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>OO und modellbasierte Werkzeuge - MicroConsult Academy GmbH<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.microconsult.de\/en\/object-oriented-and-model-based-tools\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"OO und modellbasierte Werkzeuge - MicroConsult Academy GmbH\" \/>\n<meta property=\"og:description\" content=\"Ein Werkstattbericht Autoren: Dr. Andreas Wagener, Dr. Fritz Faulhaber GmbH &amp; Co. KG, Robert Stemplinger und Markus Pauls, b1 Engineering Solutions GmbH Beitrag &#8211; Embedded Software Engineering Kongress 2015 \u00dcber Tools wie Rhapsody kann aus der Modellierung direkt Code auch f\u00fcr Embedded Systeme generiert werden. Im betrachteten Projekt wird das gesamte System derart in Rhapsody [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.microconsult.de\/en\/object-oriented-and-model-based-tools\/\" \/>\n<meta property=\"og:site_name\" content=\"MicroConsult Academy GmbH\" \/>\n<meta property=\"article:published_time\" content=\"2025-11-29T08:41:23+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-02-11T04:03:53+00:00\" \/>\n<meta name=\"author\" content=\"weissblau media\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"weissblau media\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimated reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"15 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/oo-und-modellbasierte-werkzeuge\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/oo-und-modellbasierte-werkzeuge\\\/\"},\"author\":{\"name\":\"weissblau media\",\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/#\\\/schema\\\/person\\\/b6d4c4ae959b068fbe8d9416ed019a0a\"},\"headline\":\"OO und modellbasierte Werkzeuge\",\"datePublished\":\"2025-11-29T08:41:23+00:00\",\"dateModified\":\"2026-02-11T04:03:53+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/oo-und-modellbasierte-werkzeuge\\\/\"},\"wordCount\":2728,\"commentCount\":0,\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.microconsult.de\\\/oo-und-modellbasierte-werkzeuge\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/oo-und-modellbasierte-werkzeuge\\\/\",\"url\":\"https:\\\/\\\/www.microconsult.de\\\/oo-und-modellbasierte-werkzeuge\\\/\",\"name\":\"OO und modellbasierte Werkzeuge - MicroConsult Academy GmbH\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/#website\"},\"datePublished\":\"2025-11-29T08:41:23+00:00\",\"dateModified\":\"2026-02-11T04:03:53+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/#\\\/schema\\\/person\\\/b6d4c4ae959b068fbe8d9416ed019a0a\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/oo-und-modellbasierte-werkzeuge\\\/#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.microconsult.de\\\/oo-und-modellbasierte-werkzeuge\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/oo-und-modellbasierte-werkzeuge\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.microconsult.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"OO und modellbasierte Werkzeuge\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/#website\",\"url\":\"https:\\\/\\\/www.microconsult.de\\\/\",\"name\":\"MicroConsult Academy GmbH\",\"description\":\"Professionelle Schulungen, Beratung und Projektunterst\u00fctzung\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.microconsult.de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-GB\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/#\\\/schema\\\/person\\\/b6d4c4ae959b068fbe8d9416ed019a0a\",\"name\":\"weissblau media\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/bbb409da4970da9446f6c49465d453cb8a0dae301e4d4f465b5c4e62408daa2e?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/bbb409da4970da9446f6c49465d453cb8a0dae301e4d4f465b5c4e62408daa2e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/bbb409da4970da9446f6c49465d453cb8a0dae301e4d4f465b5c4e62408daa2e?s=96&d=mm&r=g\",\"caption\":\"weissblau media\"},\"sameAs\":[\"https:\\\/\\\/www.microconsult.de\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Object-oriented programming and model-based tools - MicroConsult Academy GmbH","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.microconsult.de\/en\/object-oriented-and-model-based-tools\/","og_locale":"en_GB","og_type":"article","og_title":"OO und modellbasierte Werkzeuge - MicroConsult Academy GmbH","og_description":"Ein Werkstattbericht Autoren: Dr. Andreas Wagener, Dr. Fritz Faulhaber GmbH &amp; Co. KG, Robert Stemplinger und Markus Pauls, b1 Engineering Solutions GmbH Beitrag &#8211; Embedded Software Engineering Kongress 2015 \u00dcber Tools wie Rhapsody kann aus der Modellierung direkt Code auch f\u00fcr Embedded Systeme generiert werden. Im betrachteten Projekt wird das gesamte System derart in Rhapsody [&hellip;]","og_url":"https:\/\/www.microconsult.de\/en\/object-oriented-and-model-based-tools\/","og_site_name":"MicroConsult Academy GmbH","article_published_time":"2025-11-29T08:41:23+00:00","article_modified_time":"2026-02-11T04:03:53+00:00","author":"weissblau media","twitter_card":"summary_large_image","twitter_misc":{"Written by":"weissblau media","Estimated reading time":"15 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.microconsult.de\/oo-und-modellbasierte-werkzeuge\/#article","isPartOf":{"@id":"https:\/\/www.microconsult.de\/oo-und-modellbasierte-werkzeuge\/"},"author":{"name":"weissblau media","@id":"https:\/\/www.microconsult.de\/#\/schema\/person\/b6d4c4ae959b068fbe8d9416ed019a0a"},"headline":"OO und modellbasierte Werkzeuge","datePublished":"2025-11-29T08:41:23+00:00","dateModified":"2026-02-11T04:03:53+00:00","mainEntityOfPage":{"@id":"https:\/\/www.microconsult.de\/oo-und-modellbasierte-werkzeuge\/"},"wordCount":2728,"commentCount":0,"inLanguage":"en-GB","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.microconsult.de\/oo-und-modellbasierte-werkzeuge\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.microconsult.de\/oo-und-modellbasierte-werkzeuge\/","url":"https:\/\/www.microconsult.de\/oo-und-modellbasierte-werkzeuge\/","name":"Object-oriented programming and model-based tools - MicroConsult Academy GmbH","isPartOf":{"@id":"https:\/\/www.microconsult.de\/#website"},"datePublished":"2025-11-29T08:41:23+00:00","dateModified":"2026-02-11T04:03:53+00:00","author":{"@id":"https:\/\/www.microconsult.de\/#\/schema\/person\/b6d4c4ae959b068fbe8d9416ed019a0a"},"breadcrumb":{"@id":"https:\/\/www.microconsult.de\/oo-und-modellbasierte-werkzeuge\/#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.microconsult.de\/oo-und-modellbasierte-werkzeuge\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.microconsult.de\/oo-und-modellbasierte-werkzeuge\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.microconsult.de\/"},{"@type":"ListItem","position":2,"name":"OO und modellbasierte Werkzeuge"}]},{"@type":"WebSite","@id":"https:\/\/www.microconsult.de\/#website","url":"https:\/\/www.microconsult.de\/","name":"MicroConsult Academy GmbH","description":"Professional training, consulting and project support","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.microconsult.de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-GB"},{"@type":"Person","@id":"https:\/\/www.microconsult.de\/#\/schema\/person\/b6d4c4ae959b068fbe8d9416ed019a0a","name":"weissblau media","image":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/secure.gravatar.com\/avatar\/bbb409da4970da9446f6c49465d453cb8a0dae301e4d4f465b5c4e62408daa2e?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/bbb409da4970da9446f6c49465d453cb8a0dae301e4d4f465b5c4e62408daa2e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/bbb409da4970da9446f6c49465d453cb8a0dae301e4d4f465b5c4e62408daa2e?s=96&d=mm&r=g","caption":"weissblau media"},"sameAs":["https:\/\/www.microconsult.de"]}]}},"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/posts\/8079","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/comments?post=8079"}],"version-history":[{"count":7,"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/posts\/8079\/revisions"}],"predecessor-version":[{"id":11601,"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/posts\/8079\/revisions\/11601"}],"wp:attachment":[{"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/media?parent=8079"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/categories?post=8079"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/tags?post=8079"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}