Modellbasierte Software-Entwicklung eingebetteter Systeme

19
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

description

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. Noch Fragen?. Schema für Controller in C? Was ist ein Codegenerator? - PowerPoint PPT Presentation

Transcript of Modellbasierte Software-Entwicklung eingebetteter Systeme

Page 1: Modellbasierte Software-Entwicklung eingebetteter Systeme

Modellbasierte Software-Entwicklung eingebetteter Systeme

Prof. Dr. Holger SchlingloffInstitut für Informatik der Humboldt Universität

und

Fraunhofer Institut für offene Kommunikationssysteme FOKUS

Page 2: Modellbasierte Software-Entwicklung eingebetteter Systeme

Folie 2H. Schlingloff, SS2014 – modellbasierte Software-Entwicklung eingebetteter Systeme

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?

Page 3: Modellbasierte Software-Entwicklung eingebetteter Systeme

Folie 3H. Schlingloff, SS2014 – modellbasierte Software-Entwicklung eingebetteter Systeme

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

Page 4: Modellbasierte Software-Entwicklung eingebetteter Systeme

Folie 4H. Schlingloff, SS2014 – modellbasierte Software-Entwicklung eingebetteter Systeme

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

Page 5: Modellbasierte Software-Entwicklung eingebetteter Systeme

Folie 5H. Schlingloff, SS2014 – modellbasierte Software-Entwicklung eingebetteter Systeme

Example

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

Page 6: Modellbasierte Software-Entwicklung eingebetteter Systeme

Folie 6H. Schlingloff, SS2014 – modellbasierte Software-Entwicklung eingebetteter Systeme

Page 7: Modellbasierte Software-Entwicklung eingebetteter Systeme

Folie 7H. Schlingloff, SS2014 – modellbasierte Software-Entwicklung eingebetteter Systeme

Page 8: Modellbasierte Software-Entwicklung eingebetteter Systeme

Folie 8H. Schlingloff, SS2014 – modellbasierte Software-Entwicklung eingebetteter Systeme

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)

Page 9: Modellbasierte Software-Entwicklung eingebetteter Systeme

Folie 9H. Schlingloff, SS2014 – modellbasierte Software-Entwicklung eingebetteter Systeme

Modelio – Demo vertagt

Page 10: Modellbasierte Software-Entwicklung eingebetteter Systeme

Folie 10H. Schlingloff, SS2014 – modellbasierte Software-Entwicklung eingebetteter Systeme

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)

Page 11: Modellbasierte Software-Entwicklung eingebetteter Systeme

Folie 11H. Schlingloff, SS2014 – modellbasierte Software-Entwicklung eingebetteter Systeme

Schema

• Paradigma für funktionale Systemeinput-process-output

• Paradigma für eingebettete Systemeloop{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

Page 12: Modellbasierte Software-Entwicklung eingebetteter Systeme

Folie 12H. Schlingloff, SS2014 – modellbasierte Software-Entwicklung eingebetteter Systeme

Beispiel Pacemaker

Page 13: Modellbasierte Software-Entwicklung eingebetteter Systeme

Folie 13H. Schlingloff, SS2014 – modellbasierte Software-Entwicklung eingebetteter Systeme

Example: VDI-Pacemaker

• Verhalten (vereinfacht)1. wait for an atrial pulse to be sensed2. wait for at most the AV delay3. if within this time a ventricular pulse is detected,

goto step 1.4. otherwise, generate a ventricular pulse and goto

step 1.

Page 14: Modellbasierte Software-Entwicklung eingebetteter Systeme

Folie 14H. Schlingloff, SS2014 – modellbasierte Software-Entwicklung eingebetteter Systeme

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; up: s = off; end; play: case i of dn: s = tape; up: s = off; end; end;}

off

memorytape play

dn

dn dn

dn

up up up

Variable s ist der aktuelle Zustand;Variable i ist der aktuelle Input

Page 15: Modellbasierte Software-Entwicklung eingebetteter Systeme

Folie 15H. Schlingloff, SS2014 – modellbasierte Software-Entwicklung eingebetteter Systeme

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

memorytape play

dn

dn dn

dn

up up up

Variable s ist der aktuelle Zustand;Variable i ist der aktuelle Input

Page 16: Modellbasierte Software-Entwicklung eingebetteter Systeme

Folie 16H. Schlingloff, SS2014 – modellbasierte Software-Entwicklung eingebetteter Systeme

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 = {tT | 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´; } }

Page 17: Modellbasierte Software-Entwicklung eingebetteter Systeme

Folie 17H. Schlingloff, SS2014 – modellbasierte Software-Entwicklung eingebetteter Systeme

Beispiel: VisualState Codegenerierung

Page 18: Modellbasierte Software-Entwicklung eingebetteter Systeme

Folie 18H. Schlingloff, SS2014 – modellbasierte Software-Entwicklung eingebetteter Systeme

Menschen- vs. maschinenlesbarer Code

Page 19: Modellbasierte Software-Entwicklung eingebetteter Systeme

Folie 19H. Schlingloff, SS2014 – modellbasierte Software-Entwicklung eingebetteter Systeme

Verifikation und Reportgenerierung

• Schlüsselwort: Modellprüfung (model checking)