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
39
React Native: Modern web techniques for mobile
ndecooma
0
280
Sigfox — A cellular networks, just for things
ndecooma
0
410
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
Kiroで始めるAI-DLC
kaonash
2
580
実用的なGOCACHEPROG実装をするために / golang.tokyo #40
mazrean
1
270
How Android Uses Data Structures Behind The Scenes
l2hyunwoo
0
440
Performance for Conversion! 分散トレーシングでボトルネックを 特定せよ
inetand
0
140
テストコードはもう書かない:JetBrains AI Assistantに委ねる非同期処理のテスト自動設計・生成
makun
0
260
Navigation 2 を 3 に移行する(予定)ためにやったこと
yokomii
0
160
Deep Dive into Kotlin Flow
jmatsu
1
330
AIでLINEスタンプを作ってみた
eycjur
1
230
請來的 AI Agent 同事們在寫程式時,怎麼用 pytest 去除各種幻想與盲點
keitheis
0
120
機能追加とリーダー業務の類似性
rinchoku
2
1.3k
Flutter with Dart MCP: All You Need - 박제창 2025 I/O Extended Busan
itsmedreamwalker
0
150
AI Coding Agentのセキュリティリスク:PRの自己承認とメルカリの対策
s3h
0
200
Featured
See All Featured
Raft: Consensus for Rubyists
vanstee
140
7.1k
Visualization
eitanlees
148
16k
Mobile First: as difficult as doing things right
swwweet
224
9.9k
Fireside Chat
paigeccino
39
3.6k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
33
2.4k
What's in a price? How to price your products and services
michaelherold
246
12k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
53
2.9k
Reflections from 52 weeks, 52 projects
jeffersonlam
352
21k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
7
840
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
30
9.7k
Imperfection Machines: The Place of Print at Facebook
scottboms
268
13k
Designing Experiences People Love
moore
142
24k
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