modellbasierte software-entwicklung eingebetteter systeme
Post on 05-Jan-2016
39 Views
Preview:
DESCRIPTION
TRANSCRIPT
Modellbasierte Software-Entwicklung eingebetteter Systeme
Prof. Dr. Holger SchlingloffInstitut für Informatik der Humboldt Universität
und
Fraunhofer Institut für offene Kommunikationssysteme FOKUS
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?
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
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
Folie 5H. Schlingloff, SS2014 – modellbasierte Software-Entwicklung eingebetteter Systeme
Example
Source: Mura, Panda, Prevostini: Executable models and Verifivation from MARTE and SysML
Folie 6H. Schlingloff, SS2014 – modellbasierte Software-Entwicklung eingebetteter Systeme
Folie 7H. Schlingloff, SS2014 – 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)
Folie 9H. Schlingloff, SS2014 – modellbasierte Software-Entwicklung eingebetteter Systeme
Modelio – Demo vertagt
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)
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
Folie 12H. Schlingloff, SS2014 – modellbasierte Software-Entwicklung eingebetteter Systeme
Beispiel Pacemaker
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.
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
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
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´; } }
Folie 17H. Schlingloff, SS2014 – modellbasierte Software-Entwicklung eingebetteter Systeme
Beispiel: VisualState Codegenerierung
Folie 18H. Schlingloff, SS2014 – modellbasierte Software-Entwicklung eingebetteter Systeme
Menschen- vs. maschinenlesbarer Code
Folie 19H. Schlingloff, SS2014 – modellbasierte Software-Entwicklung eingebetteter Systeme
Verifikation und Reportgenerierung
• Schlüsselwort: Modellprüfung (model checking)
top related