Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Managing the Object Soup in Ambient-Oriented Ap...
Search
Nick De Cooman
September 07, 2012
Programming
0
600
Managing the Object Soup in Ambient-Oriented Applications
This deck summarizes my master's thesis and was presented at the final defense in September 2012.
Nick De Cooman
September 07, 2012
Tweet
Share
More Decks by Nick De Cooman
See All by Nick De Cooman
Serverless Architecture
ndecooma
1
38
React Native: Modern web techniques for mobile
ndecooma
0
270
Sigfox — A cellular networks, just for things
ndecooma
0
400
An Introduction to Unclouded.io
ndecooma
0
320
AmbiScrabble Game for the iPhone
ndecooma
0
240
What My Master Thesis is About
ndecooma
1
190
Other Decks in Programming
See All in Programming
Azure AI Foundryではじめてのマルチエージェントワークフロー
seosoft
0
190
ruby.wasmで多人数リアルタイム通信ゲームを作ろう
lnit
3
490
脱Riverpod?fqueryで考える、TanStack Queryライクなアーキテクチャの可能性
ostk0069
0
260
Quand Symfony, ApiPlatform, OpenAI et LangChain s'allient pour exploiter vos PDF : de la théorie à la production…
ahmedbhs123
0
210
Composerが「依存解決」のためにどんな工夫をしているか #phpcon
o0h
PRO
1
270
MDN Web Docs に日本語翻訳でコントリビュートしたくなる
ohmori_yusuke
1
130
#kanrk08 / 公開版 PicoRubyとマイコンでの自作トレーニング計測装置を用いたワークアウトの理想と現実
bash0c7
1
790
Team operations that are not burdened by SRE
kazatohiei
1
320
“いい感じ“な定量評価を求めて - Four Keysとアウトカムの間の探求 -
nealle
2
11k
PipeCDのプラグイン化で目指すところ
warashi
1
280
Rubyでやりたい駆動開発 / Ruby driven development
chobishiba
1
740
Rails Frontend Evolution: It Was a Setup All Along
skryukov
0
160
Featured
See All Featured
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Mobile First: as difficult as doing things right
swwweet
223
9.7k
Agile that works and the tools we love
rasmusluckow
329
21k
How to Think Like a Performance Engineer
csswizardry
25
1.7k
How GitHub (no longer) Works
holman
314
140k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
31
1.3k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.9k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
Being A Developer After 40
akosma
90
590k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
830
Embracing the Ebb and Flow
colly
86
4.7k
The World Runs on Bad Software
bkeepers
PRO
69
11k
Transcript
MANAGING THE OBJECT SOUP IN AMBIENT-ORIENTED APPLICATIONS NICK DE COOMAN
2 Life More and More Mobile Mobile ad hoc networks
No shared infrastructure Volatile connections Dynamic network topology
3 WeScribble
3 WeScribble
3 WeScribble
4 Functional Requirements for WeScribble 1 2 Remote drawers can
only read the properties of a shape, not change it. A shape can be temporary owned by one drawer at a time and this only for a limited duration.
5 In this Thesis... We propose software abstractions to organize
the object reference soup
5 In this Thesis... We propose software abstractions to organize
the object reference soup
6 Aliasing Behavioral Protocol actor actor
6 Aliasing Behavioral Protocol actor actor def a := object:
{ ... }
6 Aliasing Behavioral Protocol actor actor uponDefiningPrincipal Protocol def a
:= object: { ... }
6 Aliasing Behavioral Protocol actor actor uponDefiningPrincipal Protocol def a
:= object: { ... }
6 Aliasing Behavioral Protocol actor actor uponDefiningPrincipal Protocol A
6 Aliasing Behavioral Protocol actor actor uponDefiningPrincipal Protocol A def
b := a
6 Aliasing Behavioral Protocol actor actor uponBindingLocalAlias uponDefiningPrincipal Protocol A
def b := a
6 Aliasing Behavioral Protocol actor actor uponBindingLocalAlias uponDefiningPrincipal Protocol A
B
6 Aliasing Behavioral Protocol actor actor uponBindingLocalAlias uponDefiningPrincipal Protocol A
B def addShape(arg){...}; addShape(a)
6 Aliasing Behavioral Protocol actor actor uponBindingLocalAlias uponLocalAliasing uponDefiningPrincipal Protocol
A B def addShape(arg){...}; addShape(a)
6 Aliasing Behavioral Protocol actor actor uponBindingLocalAlias uponLocalAliasing uponDefiningPrincipal Protocol
A B ARG
7 Aliasing Behavioral Protocol actor actor uponBindingLocalAlias uponLocalAliasing uponDefiningPrincipal Protocol
A B ARG
7 Aliasing Behavioral Protocol actor actor uponBindingLocalAlias uponLocalAliasing uponDefiningPrincipal Protocol
A
7 Aliasing Behavioral Protocol actor actor uponBindingLocalAlias uponLocalAliasing uponDefiningPrincipal Protocol
A when: ServiceTag discovered: { |c| ... } remote reference acquired C
7 Aliasing Behavioral Protocol actor actor uponBindingLocalAlias uponLocalAliasing uponDefiningPrincipal Protocol
A when: ServiceTag discovered: { |c| ... } C
7 Aliasing Behavioral Protocol actor actor uponBindingLocalAlias uponLocalAliasing uponRemoteAliasing uponDefiningPrincipal
Protocol A when: ServiceTag discovered: { |c| ... } C
7 Aliasing Behavioral Protocol actor actor uponBindingLocalAlias uponLocalAliasing uponRemoteAliasing uponDefiningPrincipal
Protocol A when: ServiceTag discovered: { |c| ... } C
7 Aliasing Behavioral Protocol actor actor uponBindingLocalAlias uponLocalAliasing uponRemoteAliasing uponDefiningPrincipal
Protocol A C
7 Aliasing Behavioral Protocol actor actor uponBindingLocalAlias uponLocalAliasing uponRemoteAliasing uponDefiningPrincipal
Protocol A def d := c C D
7 Aliasing Behavioral Protocol actor actor uponBindingLocalAlias uponLocalAliasing uponRemoteAliasing uponBindingRemoteAlias
uponDefiningPrincipal Protocol A C D
7 Aliasing Behavioral Protocol actor actor uponBindingLocalAlias uponLocalAliasing uponRemoteAliasing uponBindingRemoteAlias
uponDefiningPrincipal Protocol A Receiving remote reference = acquiring remote reference + resolving remote reference C D
Aliasing Behavioral Protocol at Work 8 Distributed object graph inspector
Ownership Domains CASE STUDY 1 CASE STUDY 2
Typestate-oriented Programming 9 10 Aliasing behavioral protocol alone is insufficient
to organize the object soup
Chameleon Objects 10 Typestate-oriented programming for ambient-oriented applications remote reference
local reference transition()
Chameleon Objects 10 Typestate-oriented programming for ambient-oriented applications remote reference
local reference transition()
Chameleon Objects Typestate-oriented programming for ambient-oriented applications remote reference local
reference 11 transition()
Ownership Type Tags 12 Out of the box aliasing strategies
Aliasing behavioral protocol + Chameleon objects LOCAL READONLY UNIQUE
13 Local Ownership Type Tag Bob Alice local object ✕
messages disallowed remote client object def raiseError := { raise: XIllegalOperation.new("Cannot expose remote alias") }; def uponRemoteAliasing(localProxy, aliasReceiver, remoteAlias){ raiseError() }; def uponBindingRemoteAlias(localProxy, aliasReceiver, fieldObj, remoteAlias){ raiseError() }; LOCAL
14 ReadOnly Ownership Type Tag Bob Alice local object only
read messages remote client object READONLY
15 Unique Ownership Type Tag Waiting Released Expired Acquired Eve
Bob Alice UNIQUE remote client object acquired waiting expired
16 WeScribble def makeShape(color, position, size){ def shape := object:
{ def getShapeData(){ [position, color, size] }; def changeColor(newColor){ color := newColor }; def reposition(newPosition){ position := newPosition }; def becomeTemporaryOwner(){ temporaryOwned }; def remove(){ ... }; } taggedAs: [ReadOnly]; def temporaryOwned := object: { def changeColor(newColor){ shape.changeColor(newColor) }; def reposition(newPosition){ shape.reposition(newPosition); } } taggedAs: [Unique]; export: shape as: ShapeObj; shape } READONLY SHAPE shape temporaryOwned UNIQUE
17 Conclusion LOCAL READONLY UNIQUE Ownership Type Tags Chameleon Objects
Aliasing Behavioral Protocol
18 Research Training Promoter Prof. Dr. Wolfgang De Meuter Elisa
Gonzalez Boix - Christophe Scholliers Advisors
18 Research Training Promoter Prof. Dr. Wolfgang De Meuter Elisa
Gonzalez Boix - Christophe Scholliers Advisors http://sites.google.com/site/nickdecooman
19 Related Work
19 Related Work Alias Detection
19 Related Work Alias Advertisement
19 Related Work Alias Prevention
19 Related Work Alias Control
Typechecking Chameleon Objects 20 def obj := chameleonObject: { |
install | def state1 := object: { def change(){ toState2() }; def foo(){ n()+2 }; }; def state2 := object: { def change(a){ foobar(bar(a)) }; def bar(b){ 9 }; }; def foobar(z){ toState1(z) }; def toState1(a){ install(state1) }; def toState2(){ install(state2) }; def n(){ 22 }; toState1(n()) }; obj.foo(); obj.change(); obj.bar(7); obj.change(33); state2 state1 change change BODY toState2 foobar toState1
Dynamically Tagged Objects 21 Chameleon object should obtain type tags
of the current state def obj := dynamicallyTaggedObject: { ... }; tag: obj as: [TypeTag1, TypeTag2]; when: obj isTaggedAs: TypeTag1 do: { ... };
22 Conclusion LOCAL READONLY UNIQUE Ownership Type Tags Chameleon Objects
Aliasing Behavioral Protocol