31.01.2015 Views

Virtualisierung und Compilation

Virtualisierung und Compilation

Virtualisierung und Compilation

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!