asml abstract state machine language humboldt universität zu berlin institut für informatik...

44
AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog

Upload: walthari-stoyer

Post on 05-Apr-2015

114 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog

AsmLAbstract State Machine LanguageAbstract State Machine Language

Humboldt Universität zu BerlinInstitut für InformatikSeminar Systementwurf WS 05/06Vortrag: Mike Herzog

Page 2: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog

2

ins kalte Wasser

var A = [3, 10, 5, 7, 1]indices = {0, 1, 2, 3, 4}

Main() step DO_SORT: until fixpoint choose i in indices, j in indices where i < j and A(i) > A(j) A(i) := A(j) A(j) := A(i) step OUTPUT: WriteLine(A)

var A = [3, 10, 5, 7, 1]indices = {0, 1, 2, 3, 4}

Main() step DO_SORT: until fixpoint choose i in indices, j in indices where i < j and A(i) > A(j) A(i) := A(j) A(j) := A(i) step OUTPUT: WriteLine(A)

Page 3: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog

3

ins kalte Wasser (2)

class Personvar age as Integer

var Amy as Person(20)var Bob as Person(16)var Jim as Person(40)

People = {Amy, Bob, Jim}

GrowOlder()forall p in People

p.age := p.age + 1

var year = 2006

class Personvar age as Integer

var Amy as Person(20)var Bob as Person(16)var Jim as Person(40)

People = {Amy, Bob, Jim}

GrowOlder()forall p in People

p.age := p.age + 1

var year = 2006

Main()step while year < 2012

WriteLine(`In ` + year)

WriteLine(Amy.age)WriteLine(Bob.age)WriteLine(Jim.age)GrowOlder()year := year + 1

Main()step while year < 2012

WriteLine(`In ` + year)

WriteLine(Amy.age)WriteLine(Bob.age)WriteLine(Jim.age)GrowOlder()year := year + 1

Page 4: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog

4

ins kalte Wasser (3)

reachable of T(root as T, arcs as Set of (T,T))as Set of Tvar reachable = {root}

step until fixpointforall (l, r) in arcs

if l in reachable and r notin reachable then

add r to reachablestep return reachable

Main()arcs = {(1,2), (2,3), (4,5), (3,1), (5,6)}WriteLine(reachable(3,arcs))

reachable of T(root as T, arcs as Set of (T,T))as Set of Tvar reachable = {root}

step until fixpointforall (l, r) in arcs

if l in reachable and r notin reachable then

add r to reachablestep return reachable

Main()arcs = {(1,2), (2,3), (4,5), (3,1), (5,6)}WriteLine(reachable(3,arcs))

Page 5: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog

5

Gliederung

1. Propaganda Offizielles von Microsoft

2. Einsatz Vorbereitungen In Aktion

3. Arbeitsweise Interessantes aus den Innereien

4. Referenz und Beispiele Symbole Variablen Schlüsselwörter

Page 6: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog

6

1. Propaganda

YuriGurevich

WolfgangGrieskamp

WolframSchulte

NikolaiTillman

MargusVeanes

Page 7: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog

7

„Ausführbare Spezifikationssprache basierend auf der Theorie der Abstract State Machines“

Aktuell Version 2 für Visual Studio .NET

Nutzung von MS Word 2002 und XML-Technologie für Spezifikation

Enge Zusammenarbeit mit anderen Visual Studio .NET Komponenten

1. Propaganda

Page 8: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog

8

2. Einsatz in Word XP

Nutzung eines speziellen AsmL-Templates

Spezielle Formatierungen für AsmL in Word anlegen

... und benutzen

Page 9: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog

9

Page 10: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog

10

2. Einsatz in Word XP

Kompilieren

Fehler beseitigen (?)

Ausgaben

angucken...

Page 11: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog

11

2. Einsatz in der DOS-Box AsmL Datei

kompilieren... dann ausführen

Page 12: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog

12

2. Einsatz im .NET Framework Integration in Visual Studio .NET

Nutzen von Daten und Typen Aufrufen von Methoden etc.

Nur leider nicht bei ...

.

Page 13: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog

13

3. Arbeitsweise

Zustände sind Belegungen von Variablen

Zustandsübergänge sind Schritte, in denen sich Belegungen ändern

Ein Lauf einer Maschine ist eine Folge von Zustandsübergängen

Page 14: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog

14

3. Arbeitsweise

Parallelität So oft wie möglich zu verwenden Realisiert durch step Anweisung Reihenfolge der Anweisungen innerhalb

eines Schrittes nicht deterministisch

Updatemengen Vorrat an bei nächstem step zu

aktualisierenden Variablen Konsistenz von Updates beachten

Page 15: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog

15

Gliederung

1. Propaganda Offizielles von Microsoft

2. Einsatz Vorbereitungen In Aktion

3. Arbeitsweise Interessantes aus den Innereien

4. Referenz und Beispiele Symbole Variablen Schlüsselwörter

Page 16: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog

AsmL - Referenz

Wie sich das Große aus den Kleinen zusammensetzt

Wie sich das Große aus den Kleinen zusammensetzt

Page 17: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog

17

Die step Anweisung Markiert den nächsten Schritt Fasst alle Anweisungen eines Schrittes zusammen

Main() initially F as File? = null initially FContents = ´´ step 1: F := Open(´MyFile.txt´) step 2: FContents := Read(F, 1) step 3: FContents := FContents + Read(F, 1) step 4: WriteLine(FContents)

const myList = [1, 2, 3]

Main() step foreach i in myList WriteLine(i)

Page 18: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog

18

Die step Anweisung (cont.) kennt Abbruchbedingungen für Anweisungsblöcke

Main() initially x = 1 step until x > 9 x := x + 1

oder:

Main() initially x = 1 step while x < 10 x := x + 1

Page 19: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog

19

Die step Anweisung (cont.) AsmL erkennt Fixpunkt-Operationen enum EnumMode

Initial Started Finished

Main() initially Mode = Initial initially Count = 0 step until fixpoint if Mode = Initial then Mode := Started Count := 1 if Mode = Started and Count < 10 then Count := Count + 1 if Mode = Started and Count => 10 then Mode := Finished

Page 20: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog

20

Updates

Variablen mit neuen Werten belegen

Durch das := Symbol angezeigt

Immer bei der nächsten step Anweisung

Reihenfolge innerhalb eines Blocks nicht vorhersagbar

Auf Konsistenz achten!

Page 21: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog

21

Updates (cont.)

Udates passieren erst bei der nächsten step Anweisung:

var x = 0var y = 1

Main() step x := 5 WriteLine(`erst ist x=0: ` + x) step WriteLine(`x wurde aktualisiert` + x)

Page 22: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog

22

Updates (cont.)

das Austauschen von Variablen-Werten ist ebenfallsASM-konform:

var x = 0var y = 1

Main() step // x und y vertauschen x := y y := x step // x ist nun 1 // y ist nun 0

Page 23: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog

23

Methoden

Ähnlich anderen Programmiersprachen

Funktionen vs. Update-Prozeduren

Unterscheidung lokaler und globaler Variablen

Method Overloading ebenfalls unterstützt

Page 24: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog

24

Methoden (cont.)

var Count

Increment() // update Prozedur Count := Count + 1

CurentCounter() as Integer // Funktion return Count

Main() step Increment() step WriteLine( currentCounter )

var Count

Increment() // update Prozedur Count := Count + 1

CurentCounter() as Integer // Funktion return Count

Main() step Increment() step WriteLine( currentCounter )

Page 25: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog

25

Methoden (cont.)

s = {1, 8, 2, 12, 13, 6}

Max ( i as Integer, j as Integer) as Integer return (if i > j then i else j)

Max (s as Set of Integer) as Integer return (any m | m in s where not (exists n in s where n > m) )

Main() step WriteLine( Max(s)) WriteLine( Max(2 ,3))

s = {1, 8, 2, 12, 13, 6}

Max ( i as Integer, j as Integer) as Integer return (if i > j then i else j)

Max (s as Set of Integer) as Integer return (any m | m in s where not (exists n in s where n > m) )

Main() step WriteLine( Max(s)) WriteLine( Max(2 ,3))

Page 26: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog

26

Werte

„Normale“ Variablen Eingebaute Datentypen

Null, Bool Byte, Short, Integer, Long, Float, Double, Char,

String Seq, Set, Map Tupel

Benutzerdef. Strukturen und Klassen

Konstanten Optional typisiert lokal oder global

Page 27: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog

27

Werte: Strukturen structure InputEvent

case KeyInputkey as Char

case SwitchInputtoggle as Boolean

case CoinReturn//no data needed

HandleInput(e as InputEvent) match e KeyInput(k): WriteLine(`Key: ` + k) SwitchInput(t): WriteLine(`Switch: `+ t)

CoinReturn(): WriteLine(`Coin return`)

Main() step 1: HandleInput(KeyInput(`a`)) step 2: HandleInput(CoinReturn())

structure InputEventcase KeyInput

key as Charcase SwitchInput

toggle as Booleancase CoinReturn

//no data needed

HandleInput(e as InputEvent) match e KeyInput(k): WriteLine(`Key: ` + k) SwitchInput(t): WriteLine(`Switch: `+ t)

CoinReturn(): WriteLine(`Coin return`)

Main() step 1: HandleInput(KeyInput(`a`)) step 2: HandleInput(CoinReturn())

Page 28: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog

28

Werte: Klassen

Enthalten (Daten-) Felder Ermöglichen Referenzen Ableitungen wie OO

class Person var name as String var age as Integer

p1 = new Person(`Anne`, 37)p2 = new Person(`Kurt`, 12)

Writeline(p1.name)

Page 29: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog

29

Werte: Klassen (cont.)

class BasicBox var length as Double var width as Double var heigth as Double

Volume() as Double return (length * width * heigth)

class FragileBox extends BasicBox Volume() as Double return (0.85 * length * width * heigth)

basicBox1 = new BasicBox(1.0, 1.0, 2.0)

WriteLine(basicBox1.Volume())

class BasicBox var length as Double var width as Double var heigth as Double

Volume() as Double return (length * width * heigth)

class FragileBox extends BasicBox Volume() as Double return (0.85 * length * width * heigth)

basicBox1 = new BasicBox(1.0, 1.0, 2.0)

WriteLine(basicBox1.Volume())

Page 30: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog

30

Werte: Mengen

A = {1, 3 ,5 ,7, 11}

B = {1..20}

C = {i | i in B where 2 * i in B}

E = (L union F)

I = (L intersect F)

n = size(L)

A = {1, 3 ,5 ,7, 11}

B = {1..20}

C = {i | i in B where 2 * i in B}

E = (L union F)

I = (L intersect F)

n = size(L)

Definition durch Aufzählung Wertebereich arithmetischen

Ausdruck

Operationen Vereinigung,

Durchschnitt, Mächtigkeit, ...

Relationen Teilmenge,

Element, ...

Page 31: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog

31

Werte: Listen

leer = []

l = [1, 2, 4, 4, 2]

Main() step WriteLine(l(1)) // gibt 2 aus, da Listen null-basiert sind

leer = []

l = [1, 2, 4, 4, 2]

Main() step WriteLine(l(1)) // gibt 2 aus, da Listen null-basiert sind

Wie Mengen: nur Elemente

gleichen Typs zulässig

Anders als Mengen: Reihenfolge wird

beachtet Elemente können

mehrfach vorkommen

Page 32: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog

32

Werte: Maps

var phoneNumber as Map of String to Integer

phoneNumber = {`Bob`-> 100, `Carla`-> 102}

WriteLine(`Carlas number is ` + phoneNumber(`Carla`))

var phoneNumber as Map of String to Integer

phoneNumber = {`Bob`-> 100, `Carla`-> 102}

WriteLine(`Carlas number is ` + phoneNumber(`Carla`))

Abbildungen von Schlüsseln auf Werte

Definition durch: Explizite Einträge Arithmetische

Ausdrücke

Operationen Indizes, Werte Vereinigung

Page 33: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog

33

Werte: Maps (cont.)

var phoneNumber as Map of String to Integer = {`Bob` -> 100, `Carla` -> 101, `Jim` -> 102, `Denni` -> 103 }

Main() step y = {j | i -> j in phoneNumber where j < 103}

WriteLine(y)

var phoneNumber as Map of String to Integer = {`Bob` -> 100, `Carla` -> 101, `Jim` -> 102, `Denni` -> 103 }

Main() step y = {j | i -> j in phoneNumber where j < 103}

WriteLine(y)

Page 34: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog

34

Werte: Arrays

Nutzung von Mengen, Listen und Abbildungen statt Arrays

Iteration mit step foreach step forall

Adressierung eines bestimmten Eintrags c = [r, b, g] WriteLine(c(0))

Auswahl eines beliebigen Eintrags choose x in {`ja`, `nein`, `vielleicht`}

Page 35: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog

35

Werte: Aufzählungstypen enum Farben

Rot Gelb Grün Blau

var f as Farben = Rot

WriteLine(f) // gibt Rot aus

enum Farben Rot Gelb Grün Blau

var f as Farben = Rot

WriteLine(f) // gibt Rot aus

Symbolische konstanten wie beispielsweise in C++

Initialisierungen automatisch, partiell oder total möglich

Page 36: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog

36

Exkurs: Datentypen f. F.

Einfache Datentypen String, Integer, Boolean, Null, ... var v0 as Integer var v1 as (Integer, Integer, String)

Options-Typen var v2 as Integer or String var v3 as String or Null var v3 as String?

var v4 as (Integer?, Set of String)?

Page 37: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog

37

Exkurs: Datentypen f. F. (cont.)

SomeFunction(x as Integer or String) as Stringif x is Integer then

return `Found Integer.`else

return `Found String.`

Main()step 1: WriteLine(SomeFunction(2))step 2: WriteLine(SomeFunction(`abc`)step 3: WriteLine(SomeFunction(3.0)

SomeFunction(x as Integer or String) as Stringif x is Integer then

return `Found Integer.`else

return `Found String.`

Main()step 1: WriteLine(SomeFunction(2))step 2: WriteLine(SomeFunction(`abc`)step 3: WriteLine(SomeFunction(3.0)

Page 38: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog

38

Auswahl Ausdrücke

Main()let S = {1, 2, 3, 4, 5}let T = {-1, 2, 5, 7}step

let u1 = (any i | i in S where i < 4)let u2 = (the i | i in S where i < 1)let u3 = (sum i | i in S)

steplet v1 = (max x + y | y in S, y in T)let v2 = (the value | value in T where

value notin S)let v3 = (min x | x in S union T)

Main()let S = {1, 2, 3, 4, 5}let T = {-1, 2, 5, 7}step

let u1 = (any i | i in S where i < 4)let u2 = (the i | i in S where i < 1)let u3 = (sum i | i in S)

steplet v1 = (max x + y | y in S, y in T)let v2 = (the value | value in T where

value notin S)let v3 = (min x | x in S union T)

Page 39: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog

39

Quantoren

S = {1, 2, 3, 4, 5, 6}//...

Main() v1 = forall i in S holds odd(i) v3 = forall i in S where i > 4 holds odd(i) v2 = forall i in S, j in S holds i mod j < 6 v2 = exists i in S where i > 4 v4 = forall i in S holds exists j in S

where i < j v5 = exists i in S where exists j in S

where i < j v6 = exists i in S, j in S where i + 1 = j

S = {1, 2, 3, 4, 5, 6}//...

Main() v1 = forall i in S holds odd(i) v3 = forall i in S where i > 4 holds odd(i) v2 = forall i in S, j in S holds i mod j < 6 v2 = exists i in S where i > 4 v4 = forall i in S holds exists j in S

where i < j v5 = exists i in S where exists j in S

where i < j v6 = exists i in S, j in S where i + 1 = j

Page 40: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog

40

Zusicherungen

Incr(x as Integer) as Integerrequire x >= 0ensure result = x + 1return ((((x + 1) * 2) - 2) / 2) + 1

Main()step WriteLine(Incr(1))step WriteLine(Incr(99))

Incr(x as Integer) as Integerrequire x >= 0ensure result = x + 1return ((((x + 1) * 2) - 2) / 2) + 1

Main()step WriteLine(Incr(1))step WriteLine(Incr(99))

Page 41: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog

41

Die Explore-Anweisung

Finden verschiedener Möglichkeinten bei deterministischen Fkt. nur eine sonst entspr. mehrere

Choose() as (Integer, Integer) x = any i | i in {1..3} y = any i | i in {2..x} return (x,y)

Main() WriteLine(explore Choose()) WriteLine(search Choose())

Choose() as (Integer, Integer) x = any i | i in {1..3} y = any i | i in {2..x} return (x,y)

Main() WriteLine(explore Choose()) WriteLine(search Choose())

Page 42: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog

42

Auswahl der Schlüsselwörteradd and any as case catch choose

class else elseif ensure enum enumerated

error

exists explore

extends fixpoint forall foreach holds

if ifnone implements

implies import in initially

interface

intersect

is let match max merge

min mod namespace

new not notin of

operator

or remove require resulting return search

skip step structure sum the then throw

try type union until var where while

-> .. := += ( ) [ ] { } |

+ - * / < (lt) > (gt) = (eq) <= (le) >= (ge) <> (ne)

Page 43: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog

43

AsmL

Informationen bei Microsofthttp://research.microsoft.com/fse/asml/

Folien zum Vortrag unterwww.informatik.hu-berlin.de/~herzog/Studium/asml.html

Page 44: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog

44