component‐based design in tako (a case study)eecs.ucf.edu/~leavens/savcbs/2008/talks/sudhir... ·...

99
Component‐based design in Tako (a case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo

Upload: phungthuan

Post on 26-Apr-2018

217 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

Component‐baseddesigninTako(acasestudy)

ArunSudhir•GregoryKulczycki•JyotindraVasudeo

Page 2: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory
Page 3: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

GregoryKulczycki

Page 4: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

GregoryKulczycki

ArunSudhir

Page 5: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

GregoryKulczycki

ArunSudhir

JyotindraVasudeo

Page 6: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory
Page 7: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

FallsChurch,VA

Page 8: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

Component‐baseddesigninTako(acasestudy)

Page 9: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

(1)WhatisTako?

(2)WhatisTakodesign?

Page 10: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

(1)WhatisTako?

Page 11: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

Tako≈Java+Resolve

Page 12: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory
Page 13: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

WhatisResolve?

Page 14: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

integrated

programming&specification

language

Page 15: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

fullformalverification

(full=heavyweight)

Page 16: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

Staticallyprove...

CODEiscorrectw.r.t.SPEC

Page 17: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

VerifyingCompiler

GrandChallengeTonyHoare,2003

Page 18: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

Resolveandlanguagedesign

Page 19: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

Makethingsassimpleaspossible...

butnosimpler.

–AlbertEinstein

Page 20: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

SimplicityinReasoning

SophisticatedLanguageFeatures

Page 21: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

nopointers

noinheritance

noconcurrency

!!!

Page 22: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

pointers

inheritance

concurrency

(butdisciplined)

Page 23: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

Pointers

Page 24: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

Pointers=References

⇒Aliasing

Page 25: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

{x=true}

y:=false

{x=???}

Page 26: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

{x=true}

y:=false

{x=???}Isx

aliasedtoy?

Page 27: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

referencecopying⇒aliasing

objectcopying⇒expensive

Page 28: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

x:=:y

x

y

before

x

y

after

Page 29: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

UsingResolve/C++JoeHollingsworthetal,2000

Page 30: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

100,000linesofcode

Page 31: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

swapping/copying‐based

pointer‐based⤴

Page 32: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

WhatisResolve?

Page 33: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

(1)Goal–fullverification

(2)Language–swapping

Page 34: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

(1)WhatisTako?

Page 35: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

Tako≈Java+Resolve

Page 36: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory
Page 37: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

sex‐appeal

Page 38: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

sex‐appeal

popular

Page 39: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

sex‐appeal

popular

notlogical

Page 40: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

sex‐appeal

popular

notlogical

idealist

Page 41: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

sex‐appeal

popular

notlogical

idealist

rational

Page 42: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

sex‐appeal

popular

notlogical

idealist

rational

know‐it‐all

Page 43: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

sex‐appeal

popular

notlogical

idealist

rational

know‐it‐all

Page 44: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

Takoisacompromise

Page 45: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory
Page 46: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

x

[•,•,•]

O M G

arr

Page 47: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

WhyTako?

Page 48: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

(1)Teachformalreasoning

(2)Simplifyinformalreasoning

Page 49: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

p:=q;q.enqueue(t);t.clear();//initializettoΦ

p=<Ψ,Φ>q=<Ψ,Δ,Ψ,Δ>t=Δ

p=???q=???t=???

Pre‐state:

Post‐state:

Page 50: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

0

15

30

45

60

Copy Swap Reference

PercentCorrect

Page 51: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

0

60

120

180

240

300

Copy Swap Reference

AverageTime(toanswercorrectly)

Page 52: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

Futureforswapping‐basedOO?

Page 53: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

Ourcasestudy

Page 54: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory
Page 55: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

WestofHouseYouarestandinginanopenfieldwestofawhitehouse,withaboardedfrontdoor.

Thereisasmallmailboxhere.

> examinemailboxThesmallmailboxisclosed

> openmailboxOpeningthesmallmailboxrevealsaleaflet.

> getleafletTaken

>

Page 56: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

Parser GameWorld

Page 57: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

Parser

action=OPEN

subject=PLAYERobject1=BOX

object2=NOTHING

“openthebox”⤴

Page 58: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

Parser:Tako≈Java

Page 59: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

GameWorld

TreeofGameObjects

Page 60: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

IndexedTree

Page 61: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory
Page 62: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory
Page 63: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory
Page 64: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory
Page 65: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

a

f g

d

e

b

x z

c

Page 66: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

a

f g

d

e

b

x z

c

Page 67: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

G=(V,E)rank(v)ROOT,CSRVcontents(v)

Model

Page 68: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

Constraints

acyclicconsistentrank

Page 69: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

DEN

insert(DEN,den_obj)

Page 70: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

DEN

insert(TOM,tom_obj)

DEN TOM

Page 71: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

DEN

advance()

DENTOM TOM

Page 72: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

enter()

DENTOMDENTOM

Page 73: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

moveSubtreeToCursor(TOM)

DEN

TOM

DENTOM

Page 74: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

GameWorld

TreeofGameObjects

Page 75: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

GameWorld

Page 76: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

moveObjectIntoSecond(OBJ1,OBJ2)

moveObjectBeforeSecond(OBJ1,OBJ2)

updateObjectProperty(OBJ,PROP)

objectHasProperty(OBJ,PROP)

Page 77: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

setObjectProperty(BOX,OPEN)

DEN

TOM BOX

PERSONMALE

BIN

ROOMLIGHT DEN

TOM BOX

PERSONMALE

BINOPEN

ROOMLIGHT

Page 78: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

setObjectProperty(BOX,OPEN)

DEN

TOM BOX

PERSONMALE

BIN

ROOMLIGHT DEN

TOM BOX

PERSONMALE

BINOPEN

ROOMLIGHT

Page 79: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

setObjectProperty(BOX,OPEN)

DEN

TOM BOX

PERSONMALE

BIN

ROOMLIGHT DEN

TOM BOX

PERSONMALE

BINOPEN

ROOMLIGHT

Page 80: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory
Page 81: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

1.Createdummynode

Page 82: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

1.Createdummynode

2.Gototarget

Page 83: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

1.Createdummynode

2.Gototarget

3.Swapnodeout

Page 84: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

1.Createdummynode

2.Gototarget

3.Swapnodeout

4.Modifynode

Page 85: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

1.Createdummynode

2.Gototarget

3.Swapnodeout

4.Modifynode

5.Swapnodein

Page 86: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

1.Createdummynode

2.Gototarget

3.Swapnodeout

4.Modifynode

5.Swapnodein

Page 87: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory
Page 88: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

tray

dish fork

ricepeas

Page 89: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

>lookYouseeatraycontainingadish(containingriceandpeas)andafork.

Page 90: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

tray

dish fork

ricepeas

Page 91: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

1.getFormattedList

2.getSubtree/insertSubtree

3.getTreeExplorer(read‐onlyiterator)

4.advance/enter/swapNodes

Page 92: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

value‐basedcomponents

list⤴tree⤴

Page 93: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

GameWorld

IndexedTree

PointerMap

Page 94: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

Whatdidwelearn?

Page 95: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

(1)Algorithms–similartoJava

(2)Datastructures–difference(a)updates–swapin/out(b)strongownership

Page 96: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

Questions?

Page 97: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

aliasavoidance

think“uniquereferences”

x

Page 98: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

Obama‐Palin

McCain‐Biden⤴

Page 99: Component‐based design in Tako (a case study)eecs.ucf.edu/~leavens/SAVCBS/2008/talks/Sudhir... · case study) Arun Sudhir • Gregory Kulczycki • Jyotindra Vasudeo. Gregory

thesimplestanswerisnotalwayscorrect