Entwicklungswerkzeuge

Effiziente Software-Entwicklung mit Automate

27. Mai 2014, 11:44 Uhr | von Mike Pagel und Martin Thiede
Diesen Artikel anhören

Fortsetzung des Artikels von Teil 6

Makros

Die direkte Ableitung der Automate DSL aus dem AUTOSAR-Metamodell bringt einige Vorteile mit sich. Unter anderem hat der Entwickler dadurch einen sehr direkten Kontakt zum Modell. Andererseits enthält das Metamodel aber auch Konstrukte, die für bestimmte Anwendungsfälle unnötig kompliziert sind und sich vereinfachen ließen.
Weil bei solchen Vereinfachungen in der Regel projektspezifische Annahmen getroffen werden, sind sie nicht fest in Automate eingebaut. Vielmehr hat der Nutzer mit Hilfe des Makromechanismus die Möglichkeit, auf einfache Weise selbst abstraktere Kommandos (DSL-Erweiterungen) zu erstellen. Die Makrodefinitionen sind dabei Teil des Modells und können mit ihm im Projekt versioniert werden.

Beispiel 2.1: Einfacher Aufbau

AUTOSAR {
  ARPackage System {
    CompositionSwComponentType Comp {
      SwComponentPrototype lightController, type: /Lights/SwcLightController
      SwComponentPrototype lightMaster, type: /Lights/SwcLightMaster
      AssemblySwConnector conn1 {
        PPortInCompositionInstanceRef contextComponent: lightController, targetPPort: controlPort
        RPortInCompositionInstanceRef contextComponent: lightMaster, targetRPort: controlPort
      }
    }
  }
}

Beispiel 2.1 zeigt einen einfachen Aufbau bestehend aus zwei Component Prototypes, die mit einem Connector verbunden sind. Der Connector wird dabei entsprechend dem Metamodell durch drei Modellelemente repräsentiert. Mit Hilfe eines Makros lässt sich die Connector-Definition vereinfachen.

Beispiel 2.2:  „AtmConnector”

AUTOSAR {
  ARPackage System {
    CompositionSwComponentType Compostion {
      @macro: AtmConnector <name>, <pcp>:, <pport>:, <rcp>:, <rport>:
      AssemblySwConnector <name> {
        PPortInCompositionInstanceRef contextComponent: <pcp>, targetPPort: <pport>
        RPortInCompositionInstanceRef contextComponent: <rcp>, targetRPort: <rport>
      }
    }
  }
}

Beispiel 2.2 definiert das Makro „Atm­Connector“. Eine Makrodefinition besteht aus einem Modellfragment, bei dem ein Element durch eine Annotation „@macro“ markiert wird.
Des Weiteren werden alle konkreten Attributwerte und Referenzen auf andere Elemente durch Platzhalter ersetzt und diese in der Annotation verwendet. Makrodefinitionen werden in einem beliebigen, separaten Makro-Verzeichnis abgelegt.

Beispiel 2.3: Reduzierte Form

AUTOSAR {
  ARPackage System {
    CompositionSwComponentType Compostion {
      SwComponentPrototype lightController, type: /Lights/SwcLightController
      SwComponentPrototype lightMaster, type: /Lights/SwcLightMaster
      AtmConnector „conn1“, pcp: lightController, pport: controlPort, rcp: lightMaster, rport: controlPort
    }
  }
}

Mit Hilfe des so definierten Makros kann Automate den Connector bei der nächsten Konvertierung von ARXML zu Text (a2t) in der reduzierten Form darstellen (Beispiel 2.3). Drei Modellelemente verschmelzen dabei zu einem einzigen und ein Connector lässt sich prägnant in einer Zeile ausdrücken. Insgesamt reduzieren sich hierbei elf Zeilen ARXML auf eine Zeile Text.
Auch bei Verwendung von Makros ist die Transformation von ARXML in die textuelle DSL und zurück verlustfrei: Modellfragmente werden nur dann in die Makrodarstellung reduziert, wenn das Muster des Makros passt. So ist sichergestellt, dass bei der Rücktransformation stets das Ausgangsmodell – mit eventuell explizit gemachten Änderungen – entsteht. Passt ein Makromuster nicht, wird das Modell in der normalen textuellen Darstellung repräsentiert.


  1. Effiziente Software-Entwicklung mit Automate
  2. Autoren-Tools mit grafischer Oberfläche
  3. Autoren-Tools mit textueller Syntax
  4. Automate: Konzepte und Anwendung
  5. Generische Syntax
  6. ARXML/Text-Synchronisation
  7. Makros
  8. Editor-Support
  9. Checks und Automatisierung
  10. Ausblick
  11. Weiterentwicklung von Automate
  12. Die Autoren

Lesen Sie mehr zum Thema


Das könnte Sie auch interessieren

Jetzt kostenfreie Newsletter bestellen!

Weitere Artikel zu BMW AG