Virtualisierung und Compilation
Virtualisierung und Compilation
Virtualisierung und Compilation
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
technische universität<br />
dortm<strong>und</strong><br />
<strong>Virtualisierung</strong> <strong>und</strong> <strong>Compilation</strong><br />
Bernhard Steffen<br />
Lehrstuhl für Programmiersysteme<br />
B. Steffen & O. Rüthing VuC 2011/2012<br />
Name Autor | Ort <strong>und</strong> Datum
technische universität<br />
dortm<strong>und</strong><br />
<strong>Compilation</strong><br />
WAS-Beschreibung<br />
WIE-Beschreibung<br />
Name<br />
B. Steffen<br />
Autor<br />
&<br />
|<br />
O.<br />
Ort<br />
Rüthing<br />
<strong>und</strong> Datum<br />
VuC 2011/2012 2
technische universität<br />
dortm<strong>und</strong><br />
<strong>Compilation</strong><br />
Ursprünge<br />
50er Jahre: FORTRAN [1957]<br />
John Bakus: We certainly had no idea<br />
that languages almost identical to the<br />
one we were working on would be used<br />
for more than one IBM computer, not to<br />
mention those of other manufactures.<br />
Name<br />
B. Steffen<br />
Autor<br />
&<br />
|<br />
O.<br />
Ort<br />
Rüthing<br />
<strong>und</strong> Datum<br />
VuC 2011/2012 3
technische universität<br />
dortm<strong>und</strong><br />
<strong>Compilation</strong><br />
Entwicklung<br />
WAS-Beschreibungen:<br />
• Höhere Programmiersprachen (Deklarativ, objektorientiert,..)<br />
• Domainenspezifische Sprachen<br />
• Verteilung (Module, Bibliotheken, Aspekte,..)<br />
• Modellierungssprachen (UML,BPEL,..)<br />
• …<br />
Name<br />
B. Steffen<br />
Autor<br />
&<br />
|<br />
O.<br />
Ort<br />
Rüthing<br />
<strong>und</strong> Datum<br />
VuC 2011/2012 4
technische universität<br />
dortm<strong>und</strong><br />
<strong>Compilation</strong><br />
Entwicklung<br />
WIE-Beschreibungen:<br />
• Architekturen (Multicore, Threading, Speculation, .. )<br />
• Speicher (Register, Caches, Persistenz,..)<br />
• Verteilung (Client-Server, Internet, ..)<br />
• …<br />
Name<br />
B. Steffen<br />
Autor<br />
&<br />
|<br />
O.<br />
Ort<br />
Rüthing<br />
<strong>und</strong> Datum<br />
VuC 2011/2012 5
technische universität<br />
dortm<strong>und</strong><br />
<strong>Virtualisierung</strong><br />
Fazit: WAS-WIE -Graben in den letzten Jahrzehnten<br />
stark gewachachsen<br />
Lösung: Vitualisierungsebeben<br />
• Abstraktion von spezifischen Details der Plattformen<br />
• Unterstützung der automatischen Codeerzeugung aus den WAS<br />
Beschreibungen<br />
Name<br />
B. Steffen<br />
Autor<br />
&<br />
|<br />
O.<br />
Ort<br />
Rüthing<br />
<strong>und</strong> Datum<br />
VuC 2011/2012 6
technische universität<br />
dortm<strong>und</strong><br />
<strong>Virtualisierung</strong><br />
Beispiel: Java Virtual Machine<br />
Quellprogram<br />
Compiler<br />
Class-File<br />
(inkl. Byte Code)<br />
JVM<br />
JVM<br />
Windows<br />
PC<br />
SUN<br />
Sparc<br />
JVM<br />
Apple<br />
Mac<br />
B. Steffen & O. Rüthing VuC 2011/2012 ‹Nr.›<br />
Name Autor | Ort <strong>und</strong> Datum
technische universität<br />
dortm<strong>und</strong><br />
Vorlesungsplan<br />
Teil 1: Klassischer Compilerbau<br />
• Lexikalische Analyse<br />
• Syntaxanalyse<br />
• Codegenerierung<br />
• Virtuelle Maschinen<br />
Teil 2: Neue Herausforderung<br />
• Neue Sprachniveaus<br />
• Neue Plattformen<br />
• Long Running Transactions …<br />
Begleitend:<br />
Praktische Projekte mit Tooleinsatz, z.B.:<br />
AntLR, Eclipse, (Soot), Xtext (einst openArchitectureWare), jABC, ….<br />
Name<br />
B. Steffen<br />
Autor<br />
&<br />
|<br />
O.<br />
Ort<br />
Rüthing<br />
<strong>und</strong> Datum<br />
VuC 2011/2012 8
technische universität<br />
dortm<strong>und</strong><br />
Organisation<br />
• Vorlesung (4 SWS) + Übungen (2 SWS)<br />
• Termine:<br />
Vorlesung: Montag: 14:15 - 15:45 (OH 14, R 104)<br />
Donnerstag: 12:15 - 13:45 (OH 14, R 104)<br />
Übungen: Doodle-Umfrage (siehe Vorlesungsseite)<br />
• Material (Folien & Übungen) → Downloadbereich<br />
B. Steffen & O. Rüthing VuC 2011/2012 9<br />
Name Autor | Ort <strong>und</strong> Datum
technische universität<br />
dortm<strong>und</strong><br />
Modalitäten<br />
• Basismodul in den Masterstudiengängen Informatik <strong>und</strong><br />
angewandte Informatik<br />
Forschungsbereich: Software, Sicherheit <strong>und</strong> Verifikation<br />
• Credits: 8 (5+3)<br />
• Modulprüfung: mündliche Prüfung (30 Minuten)<br />
• Studienleistungen: regelmäßige, aktive Teilnahme an der Übung<br />
sowie Anfertigung eines Praxisprojektes inklusive eines<br />
Abschlussberichtes<br />
Keine Voraussetzung für Modulprüfung<br />
Name<br />
B. Steffen<br />
Autor<br />
&<br />
|<br />
O.<br />
Ort<br />
Rüthing<br />
<strong>und</strong> Datum<br />
VuC 2011/2012 10
technische universität<br />
Motivation Teil 1<br />
dortm<strong>und</strong><br />
Why Study Compilers<br />
• <strong>und</strong>erstand existing languages<br />
• appreciate current limitations<br />
• talk intelligently about language design<br />
• see a great example of theory in practice<br />
• implement your very own general-purpose language<br />
• implement lots of useful domain-specific languages<br />
• process/translate/manage information.<br />
Name<br />
B. Steffen<br />
Autor<br />
&<br />
|<br />
O.<br />
Ort<br />
Rüthing<br />
<strong>und</strong> Datum<br />
VuC 2011/2012 11
technische universität<br />
dortm<strong>und</strong><br />
Name<br />
B. Steffen<br />
Autor<br />
&<br />
|<br />
O.<br />
Ort<br />
Rüthing<br />
<strong>und</strong> Datum<br />
VuC 2011/2012 12
technische universität<br />
dortm<strong>und</strong><br />
Issues of <strong>Compilation</strong><br />
• Understanding implementation issues:<br />
- How is this implemented<br />
- Why does this run so slow<br />
- Why does the compliler/runtime system report<br />
this error message<br />
• Understand language design issues:<br />
- Why does/doesn‘t the language definition offer<br />
this feature<br />
• Backgro<strong>und</strong> for language implementation:<br />
- How to write or modify compilers/interpreters<br />
- How to improve code quality<br />
Name<br />
B. Steffen<br />
Autor<br />
&<br />
|<br />
O.<br />
Ort<br />
Rüthing<br />
<strong>und</strong> Datum<br />
VuC 2011/2012 13
technische universität<br />
dortm<strong>und</strong><br />
Myth<br />
People are better at optimizing their programs than compilers<br />
for (i = 0; i < N; i++)<br />
{<br />
a[i] = a[i] * 2000;<br />
a[i] = a[i] / 10000;<br />
}<br />
b = a;<br />
for (i = 0; i < N; i++)<br />
{<br />
*b = *b * 2000;<br />
*b = *b / 10000;<br />
b++;<br />
}<br />
Which loop runs faster<br />
Name<br />
B. Steffen<br />
Autor<br />
&<br />
|<br />
O.<br />
Ort<br />
Rüthing<br />
<strong>und</strong> Datum<br />
VuC 2011/2012 14
technische universität<br />
dortm<strong>und</strong><br />
The Answer is …<br />
Loop<br />
Optimization<br />
SPARC<br />
MIPS<br />
Alpha<br />
array<br />
none<br />
20.5<br />
21.6<br />
7.85<br />
array<br />
opt<br />
8.8<br />
12.3<br />
3.26<br />
array<br />
super<br />
7.9<br />
11.2<br />
2.96<br />
pointer<br />
none<br />
19.5<br />
17.6<br />
7.55<br />
pointer<br />
opt<br />
12.4<br />
15.4<br />
4.09<br />
pointer<br />
super<br />
10.7<br />
12.9<br />
3.94<br />
Name<br />
B. Steffen<br />
Autor<br />
&<br />
|<br />
O.<br />
Ort<br />
Rüthing<br />
<strong>und</strong> Datum<br />
VuC 2011/2012 15
technische universität<br />
dortm<strong>und</strong><br />
Why<br />
• Pointers confuse most compilers<br />
• difficult to tell what they refer to<br />
• use arrays whenever possible<br />
• Compilers use sophisticated register allocation<br />
algorithms<br />
• languages don’t give enough control<br />
• it is too expensive to compute a good assignment by<br />
hand<br />
• High-level languages are for people<br />
• write clear code and let the compiler optimize it<br />
Jeder soll tun, was er am besten kann!<br />
Name<br />
B. Steffen<br />
Autor<br />
&<br />
|<br />
O.<br />
Ort<br />
Rüthing<br />
<strong>und</strong> Datum<br />
VuC 2011/2012 16
technische universität<br />
dortm<strong>und</strong><br />
Phasen der <strong>Compilation</strong><br />
SCAN<br />
PARSE<br />
WEED<br />
RESOURCE TYPE SYMBOL<br />
CODE<br />
OPTIMIZE<br />
EMIT<br />
© Copyright 2005, Matthew B. Dwyer and Robby. Kansas State University.<br />
Name<br />
B. Steffen<br />
Autor<br />
&<br />
|<br />
O.<br />
Ort<br />
Rüthing<br />
<strong>und</strong> Datum<br />
VuC 2011/2012 17
technische universität<br />
dortm<strong>und</strong><br />
Theory in Practice<br />
• in the 60s compilation was art<br />
• in the 70s compilation was studied by theoreticians<br />
• in the 80s compilation was studied as a software product<br />
line, and<br />
• it is probably the most mature software domain you will<br />
ever work in.<br />
Name<br />
B. Steffen<br />
Autor<br />
&<br />
|<br />
O.<br />
Ort<br />
Rüthing<br />
<strong>und</strong> Datum<br />
VuC 2011/2012 18
technische universität<br />
dortm<strong>und</strong><br />
Literatur<br />
Name<br />
B. Steffen<br />
Autor<br />
&<br />
|<br />
O.<br />
Ort<br />
Rüthing<br />
<strong>und</strong> Datum<br />
VuC 2011/2012 19
technische universität<br />
dortm<strong>und</strong><br />
Motivation für Teil 2<br />
Name<br />
B. Steffen<br />
Autor<br />
&<br />
|<br />
O.<br />
Ort<br />
Rüthing<br />
<strong>und</strong> Datum<br />
VuC 2011/2012 ‹Nr.›
technische universität<br />
dortm<strong>und</strong><br />
Edsger Dijkstra: The Humble Programmer<br />
1972<br />
"[The major cause of the<br />
software crisis<br />
is] that the machines have become several orders of<br />
magnitude more powerful! To put it quite bluntly: as<br />
long as there were no machines, programming was<br />
no problem at all; when we had a few weak<br />
computers, programming became a mild problem,<br />
and now we have gigantic computers, programming<br />
has become an equally gigantic problem."<br />
Name<br />
B. Steffen<br />
Autor<br />
&<br />
|<br />
O.<br />
Ort<br />
Rüthing<br />
<strong>und</strong> Datum<br />
VuC 2011/2012 21
technische universität<br />
dortm<strong>und</strong><br />
ICSE 1996: "Software Crisis: where is it"<br />
Sir Tony Hoare<br />
"How did Software get so Reliable<br />
without Proof"<br />
• Defensive programming<br />
• Over engineering<br />
• Requirement verification remains<br />
to be key.<br />
Name<br />
B. Steffen<br />
Autor<br />
&<br />
|<br />
O.<br />
Ort<br />
Rüthing<br />
<strong>und</strong> Datum<br />
VuC 2011/2012 22
technische universität<br />
dortm<strong>und</strong><br />
`Sociological Reasons´<br />
• Global Libraries<br />
• Millions of Testers<br />
• Enhanced Development Processes<br />
• Better Tool Support<br />
• Lightweight Formal Methods<br />
• Typing,<br />
• Code Generation,<br />
• Model Checking,<br />
• Model-Based Testing.<br />
But: Rarely Formal Verification (except safety critical systems, ..)<br />
Name<br />
B. Steffen<br />
Autor<br />
&<br />
|<br />
O.<br />
Ort<br />
Rüthing<br />
<strong>und</strong> Datum<br />
VuC 2011/2012 23
technische universität<br />
dortm<strong>und</strong><br />
`Sociological Reasons´<br />
Model-Driven<br />
• Global Libraries<br />
Software Development<br />
(MDSD)<br />
• Millions of Testers<br />
• Enhanced Development Processes<br />
• Better Tool Support<br />
• Lightweight Formal Methods<br />
• Typing,<br />
• Code Generation,<br />
• Model Checking,<br />
• Model-Based Testing.<br />
But: Rarely Formal Verification (except safety critical systems, ..)<br />
Name<br />
B. Steffen<br />
Autor<br />
&<br />
|<br />
O.<br />
Ort<br />
Rüthing<br />
<strong>und</strong> Datum<br />
VuC 2011/2012 24
technische universität<br />
dortm<strong>und</strong><br />
Models in Software Development<br />
OMG: „Modeling is the designing of software<br />
applications before coding. [...] A model plays the<br />
analogous role in software development that<br />
blueprints and other plans (site maps, elevations,<br />
physical models) play in the building of a skyscraper.“<br />
Name<br />
B. Steffen<br />
Autor<br />
&<br />
|<br />
O.<br />
Ort<br />
Rüthing<br />
<strong>und</strong> Datum<br />
VuC 2011/2012 25
technische universität<br />
dortm<strong>und</strong><br />
MDSD: The big picture<br />
Models<br />
Code Generator<br />
Text<br />
Name<br />
B. Steffen<br />
Autor<br />
&<br />
|<br />
O.<br />
Ort<br />
Rüthing<br />
<strong>und</strong> Datum<br />
VuC 2011/2012 26
technische universität<br />
dortm<strong>und</strong><br />
Metametamodel<br />
Model<br />
Hierachies<br />
Metamodel<br />
Model<br />
Model Instance<br />
Name<br />
B. Steffen<br />
Autor<br />
&<br />
|<br />
O.<br />
Ort<br />
Rüthing<br />
<strong>und</strong> Datum<br />
VuC 2011/2012 27
Virtualization<br />
<strong>Compilation</strong><br />
technische universität<br />
dortm<strong>und</strong><br />
Requirements<br />
What<br />
Modelling<br />
What<br />
How<br />
Design<br />
What<br />
How<br />
Implementation<br />
Machine Code<br />
What<br />
Dijkstra<br />
How<br />
How<br />
Name<br />
B. Steffen<br />
Autor<br />
&<br />
|<br />
O.<br />
Ort<br />
Rüthing<br />
<strong>und</strong> Datum<br />
VuC 2011/2012 ‹Nr.›
technische universität<br />
dortm<strong>und</strong><br />
Project: Model-based development of DSL<br />
Xtext:<br />
• Eclipse tool<br />
• Various meta model formats (BNF,UML,..)<br />
• Generates:<br />
models<br />
oriented editors<br />
• Template engine for code generation<br />
• Static analyses<br />
• Here MGPL (Mini game programming language)<br />
Name<br />
B. Steffen<br />
Autor<br />
&<br />
|<br />
O.<br />
Ort<br />
Rüthing<br />
<strong>und</strong> Datum<br />
VuC 2011/2012 29
technische universität<br />
dortm<strong>und</strong><br />
Extreme Model-Driven Development (XMDD) [XMDD]<br />
Sven Name<br />
B. Steffen Jörges Autor | & VuC |<br />
O.<br />
Ort WiSe Rüthing<br />
<strong>und</strong> Datum 09/10<br />
VuC 2011/2012 30
technische universität<br />
dortm<strong>und</strong><br />
XMDD = MDD + SO + XP + AOP<br />
• Model driven development<br />
• Service oriented architecture<br />
• Extreme programming<br />
• Aspect oriented programming<br />
Name Autor | Ort <strong>und</strong> Datum
technische universität<br />
dortm<strong>und</strong><br />
User-Centric Modelling<br />
• User focus<br />
• User control<br />
• User satisfaction<br />
Driving a car needs no engineer<br />
Name<br />
B. Steffen<br />
Autor<br />
&<br />
|<br />
O.<br />
Ort<br />
Rüthing<br />
<strong>und</strong> Datum<br />
VuC 2011/2012 32
technische universität<br />
dortm<strong>und</strong><br />
User-Centric Process Models<br />
One-Thing-Approach mit proQuality Suite (Präsentation V0.5.0) --- copyright by provalida ®, Bochum, Germany<br />
Name<br />
B. Steffen<br />
Autor<br />
&<br />
|<br />
O.<br />
Ort<br />
Rüthing<br />
<strong>und</strong> Datum<br />
VuC 2011/2012 33
One-Thing-Approach technische mit universität proQuality Suite<br />
dortm<strong>und</strong><br />
Delivery<br />
Management<br />
SLG<br />
Document<br />
Management<br />
Shipment of<br />
Goods<br />
Document<br />
Management<br />
Process<br />
(embedded)<br />
Name<br />
B. Steffen<br />
Autor<br />
&<br />
|<br />
O.<br />
Ort<br />
Rüthing<br />
<strong>und</strong> Datum<br />
VuC 2011/2012 34
technische universität<br />
dortm<strong>und</strong><br />
User-Centric Development Cooperation<br />
based on One Thing<br />
Modelling<br />
Realization<br />
Dokumentation<br />
Control<br />
Collaboration<br />
Cooperative development between Business and IT by horizontal and<br />
vertikal Completion<br />
Name Autor | Ort <strong>und</strong> Datum<br />
B. Steffen & O.<br />
Rüthing<br />
VuC 2011/2012<br />
35
technische universität<br />
dortm<strong>und</strong><br />
Summary …<br />
• Programs become Process Models<br />
• Programming becomes Orchestration + Programming in the Small<br />
• Verification becomes more<br />
• Requirement Validation<br />
• Property Checking + SLA and<br />
• Runtime Checking<br />
• The Model Landscape becomes just One Thing + Views<br />
• <strong>Compilation</strong> becomes more challenging<br />
B. Steffen & O. Rüthing VuC 2011/2012 ‹Nr.›<br />
Name Autor | Ort <strong>und</strong> Datum