Modellierung

Objektorientierung und modellbasierte Werkzeuge

Seite: 4/5

Anbieter zum Thema

Herausforderungen und Mühen

Insbesondere aus Sicht des Entwicklers bieten sich in der täglichen Anwendung von Rhapsody einige Hürden, mit denen man zu leben lernen muss. Im Folgenden seine einige Beispiele genannt. Vieles könnte unserer Meinung nach leicht abgestellt werden, wenn der Wille zur Pflege des Produkts noch ausgeprägt wäre.

Der RPY Code- und Modell-Editor

  • Das Kopieren/Einfügen/Modifizieren (ein häufig angewandtes Entwicklungsmuster) von Modellelementen geht zwar häufig, aber nicht immer. Probleme treten insbesondere bei den Elementen unterhalb des Standard-Packages „Components“ auf oder aber auch beim Kopieren zwischen verschiedenen Projekten.
  • Ein Kopieren aus ReadOnly-Fenstern (z.B. in eine Mail) ist nicht möglich. Auch kann man in ReadOnly-Fenstern nicht scrollen.
  • Windows Key-Belegung (Ctrl-Entf, Ctrl-Einfg) funktioniert nicht, nur Ctrl-C und Ctrl-V.
  • Autovervollständigung im Code-Editor funktioniert nur unvollständig (nur einmal pro Zeile, nur lokale Elemente, keine Literale, …)
  • Generierter Code der einem Package zuzuordnen ist, kann nicht automatisch mit einem Prefix versehen werden.
  • Refactoring ist mühsam, da der händisch hinterlegte Code vom Tool nicht mit einbezogen wird.

Properties

Welche Properties bei der Code-Generierung wie, wann wirken ist sehr undurchsichtig. Hier hilft oft nur Probieren.

Beispielsweise ist das Property C_CG::Type::ReturnType nicht wirksam, wenn man sich über 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ückgegeben werden.

Versionierung

Die Files in denen Rhapsody seine Informationen hinterlegt, sind leider nicht sehr „Merge“-freundlich gestaltet. Insbesondere werden in Files häufig Zeitstempel und GUIDs geändert, obwohl sie ansonsten keinerlei Änderungen erfahren haben. Um ein gemeinsames Arbeiten zu ermöglichen, haben wir daher häufig vor dem Commit mit den Mitteln des Konfiguration-Managements-Tools manuell kontrolliert, welche Files wirkliche inhaltlich geändert wurden.

Bei tatsächlichen Konflikten war mitunter auch Handarbeit mit dem Merge-Tool notwendig, sofern sich diese Konflikte nicht im Vorfeld durch Absprachen umgehen ließen.

OO in C

Wir arbeiten gerne und häufig mit konstanten, privaten Daten-Tabellen, die dann durch den Code ausgewertet werden. Leider können Statische-Member bei Klassen nicht angelegt werden (wie es in C++ möglich ist). Anwendungsbeispiele wären:

  • Tabellen gestützter CRC-Algorithmus
  • HW-Konfigurationen
  • Tabellen von Callback-Funktionen

Umgehungsmöglichkeiten ergeben sich teilweise durch die Definition von Types, aber z.B. nicht für die Callback-Funktionen, da die Funktionsprototypen im generierten Code erst nach den Types angeordnet werden.

(ID:44055654)