View
210
Download
5
Category
Tags:
Preview:
Citation preview
Enabling Enabling Collaboration Collaboration Transparency withTransparency withComputational Computational ReflectionReflection
Pedro García LópezUniversitat Rovira i Virgili
pedro.garcia@urv.cat
MotivationMotivation
Neurolearning project:– Neuro-rehabilitation– Brain training environment for
degenerative diseases designed by neuropsychologists
– Tons of tasks created by partners– They asked for:
• Synchronous interaction (pacient-therapeut, pacient-pacient)
• Monitoring (store, reply, analyze)
Collaboration Transparency ?Collaboration Transparency ?
Definition: The conversion of legacy single-user applications to collaborative multi-user tools without modifying the source code of the original application.
Two Types: Blackbox: complete transparency, it works
with user interface libraries and input events.
Whitebox: it requires “code archaeology”, delving into the code to find proper interceptors.
Related WorkRelated Work
Most recent works are whitebox approaches:– Weaving a social fabric into existing
software (2005)– Transparent adaptation of single-
user applications for multi-user real-time collaboration (2006)
Blackbox approaches– Flexible collaboration transparency:
supporting worker independence in replicated application-sharing systems (1999!)
Flexible JAMM (Bo Begole)Flexible JAMM (Bo Begole)
JAMM (Java Applets made multiuser)– Replaces UI libraries (Swing) with
collaborative UI components– Not complete transparency, it
requires code adaptations: swing and serialization
– No source code available
• Reflection is the ability of a program to manipulate as data something representing the state of the program during its own execution. There are two aspects of such manipulation: introspection and intercession.
– Introspection is the ability for a program to observe and therefore reason about its own state.
– Intercession is the ability for a program to modify its own execution state or alter its own interpretation or meaning.
• Both aspects require a mechanism for encoding execution state as data: provising such encoding is called reification[Paepke'92]
Computational ReflectionComputational Reflection
AOP (Aspect Oriented Programming) enables the clean separation of cross-cutting concerns thanks to aspect weaving.
– Interception points (pointcut) and triggered code (advice)
– Systems like AspectJ enable inter-type declarations (changing inheritance tree)
– Compile-time weaving & load-time weaving– Implies “Code Archaeology”
Aspect Oriented Programming Aspect Oriented Programming
Collaboration transparency Vs collaboration awareness
Blackbox model Vs whitebox model Replicated event broadcasting Vs
centralized display broadcasting Software Wrapper Vs UI Library
Replacement AOP Vs code adaptations
Problem StatementProblem Statement
BestBest
Event Broadcasting Contextual information External Resources Launching support Late joining support Floor Control
ChallengesChallenges
BestBestEvent BroadcastingEvent Broadcasting
It requires accessing the Event Queue to capture input events (Mouse, Keyboard)
It requires the possibility of cancelling local events to inject them remotely
It requires the identification of the source of each event
It requires accessing all the available components
UI Introspection !!
BestBestContextual InformationContextual Information
Collaboration awareness: telepointers, radar views It requires: multiple cursors, painting over UI
components (context layer) Swing solution: Transparent Glasspane
Component What if the tool is using AWT ?
Interception: AOP !
BestBestExternal ResourcesExternal Resources
External Resources: Network, Files, Random Numbers
It requires the interception or replacement of external resources with controlled Proxies.
Interception: AOP !
BestBestLaunching Support:Launching Support: AOP + AOP + load-time weavingload-time weaving
BestBestValidationValidation: low overhead: low overhead
BestBestOpen problemsOpen problems
Late Joining support:– Very difficult to solve in a transparent way– From the moment, we could not convert
variables to transient in Java with AOP– Event Replay is probably the best solution
Floor Control:– Already solved– The wrapper can control floor control in the
process of event injection
Open problemsOpen problems
BestBestOpen problemsOpen problems
Advanced Computational reflection and metaprogramming are important tools !
– Allan Kay: Reinventing programming Complete Blackbox Collaboration transparency can
be achieved combining UI introspection (event queues, component reflection), software interception (AOP) and wrapping support (load-time weaving)
Unfortunately, most existing environments do not offer such functionalities: Java SWT, C#, Browsers, OS
And Meta-programming tools are complex (AOP)
ConclusionsConclusions
Recommended