Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Modellbasierte Software-Entwicklung eingebetteter Systeme

Ähnliche Präsentationen


Präsentation zum Thema: "Modellbasierte Software-Entwicklung eingebetteter Systeme"—  Präsentation transkript:

1 Modellbasierte Software-Entwicklung eingebetteter Systeme
Prof. Dr. Holger Schlingloff Institut für Informatik der Humboldt Universität und Fraunhofer Institut für offene Kommunikationssysteme FOKUS

2 Noch Fragen? Schema für Controller in C? Was ist ein Codegenerator?
Prinzip der Übersetzung Scicos – C? Behandlung von Schleifen? Unterschied Gleitkomma-Festkomma? Codeoptimierungen – welche? Absicherung der Codegenerierung? X-in-the-Loop: Was ist X?

3 Codegenerierung Codegenerierung aus SysML/UML Codegenerierung aus State Machines Codegenerator ist „Compiler für Modelle“ Wiederverwendung schnelle Prototyp- und Produkterstellung erhöhte Zuverlässigkeit gegen Programmierfehler automatische Optimierung des generierten Codes Ziel: automatische Übersetzung von Modellen in ausführbaren (C-) Code

4 Codegenerierung aus SysML
Requirement Diagramme (noch) nicht wirklich für Code verwendbar Blockdiagramme (BDD/IBD) VHDL-Code experimentelle Tools (RTaW, c-Lab U Paderborn) SysML to SystemC Aktivitätsdiagramme zur Spezifikation des Kontrollflusses Zustandsdiagramme

5 Example Source: Mura, Panda, Prevostini: Executable models and Verifivation from MARTE and SysML

6

7

8 UML Codegenerierung (Fast) jedes UML Tool behauptet, Code generieren zu können Wiki listet ca. 100 Tools auf (“Comparison of code generation tools”) Unterschiedliche Fähigkeiten Meist: Erzeugung von Schablonen Hohe Schule: Round-trip Engineering Für Eclipse-UML: Acceleo, Modelio (Softeam)

9 Modelio – Demo vertagt

10 UML Zustandsmaschinen
neben Klassendiagrammen die am häufigsten zur Codegenerierung verwendete Diagrammart Übertragung der operationellen Semantik in die Zielsprache Beispiel: Hugo-RT, U Augsburg nimmt beliebiges (Papyrus-) Modell erzeugt Java und Promela (für Model-Checking)

11 Schema Paradigma für funktionale Systeme input-process-output
Paradigma für eingebettete Systeme loop{sense-think-act} Hauptschleife, endlos wiederholt: - lies Sensorwerte - berechne Abweichung oder Aktion - schreibe Aktuatorwerte Innerhalb der Berechnung können verschiedenen Modi (Zustände) angenommen werden Codegeneratoren folgen diesem Paradigma

12 Beispiel Pacemaker

13 Example: VDI-Pacemaker
Verhalten (vereinfacht) wait for an atrial pulse to be sensed wait for at most the AV delay if within this time a ventricular pulse is detected, goto step 1. otherwise, generate a ventricular pulse and goto step 1.

14 Allgemeines Übersetzungsschema
s = off; while (true) { dequeue i from input stack; case s of off: case i of dn: s = tape; end; tape: case i of dn: s = memory; up: s = off; end; memory: case i of dn: s = play; play: case i of dn: s = tape; up: s = off; end; end; } off memory tape play dn up Variable s ist der aktuelle Zustand; Variable i ist der aktuelle Input

15 Sprungtabellentechnik
table=[state]x[input][state]: table=[[off,dn,tape],[tape,up,off], [tape,dn,memory],...] s=off; while (true){ dequeue i from input stack; s=table[s,i]; } off memory tape play dn up Variable s ist der aktuelle Zustand; Variable i ist der aktuelle Input

16 Codegenerierung für Zustandsmaschinen
Behandlung des Event-Pools Behandlung von Parallelität Hierarchisierung Completion Events History-States Übersetzungsschema s = s0; while (true) { dequeue (trigger); let Enabled = {tT | t=(s,(e,c,a),s´), c = true, e=0 or trigger  e} if (Enabled not empty) { choose some t=(s,(e,c,a),s´) from Enabled; execute a; //potentially enqueing other triggers s = s´; }

17 Beispiel: VisualState Codegenerierung

18 Menschen- vs. maschinenlesbarer Code

19 Verifikation und Reportgenerierung
Schlüsselwort: Modellprüfung (model checking)


Herunterladen ppt "Modellbasierte Software-Entwicklung eingebetteter Systeme"

Ähnliche Präsentationen


Google-Anzeigen