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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
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
41
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
Oxlintはいいぞ
yug1224
5
1.3k
Amazon Bedrockを活用したRAGの品質管理パイプライン構築
tosuri13
5
760
【卒業研究】会話ログ分析によるユーザーごとの関心に応じた話題提案手法
momok47
0
200
Smart Handoff/Pickup ガイド - Claude Code セッション管理
yukiigarashi
0
140
React 19でつくる「気持ちいいUI」- 楽観的UIのすすめ
himorishige
11
7.4k
Data-Centric Kaggle
isax1015
2
780
Basic Architectures
denyspoltorak
0
680
ぼくの開発環境2026
yuzneri
0
240
AIによる開発の民主化を支える コンテキスト管理のこれまでとこれから
mulyu
3
370
AIと一緒にレガシーに向き合ってみた
nyafunta9858
0
250
AIフル活用時代だからこそ学んでおきたい働き方の心得
shinoyu
0
140
KIKI_MBSD Cybersecurity Challenges 2025
ikema
0
1.3k
Featured
See All Featured
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
66
Accessibility Awareness
sabderemane
0
53
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7k
Six Lessons from altMBA
skipperchong
29
4.2k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
320
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
120
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
310
Reality Check: Gamification 10 Years Later
codingconduct
0
2k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
350
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
34k
What does AI have to do with Human Rights?
axbom
PRO
0
2k
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