270 likes | 487 Vues
DESIGNING COLLABORATIVE APPLICATIONS. Modeling Single and Multi-User Interactions Design Dimensions Coupling Concurrency Control Undo/Redo. Application. Active Display. User. MODELING SINGLE-USER INTERACTION. Flexible Commitment. Editing Commands. Application. Active Display.
E N D
DESIGNING COLLABORATIVE APPLICATIONS • Modeling Single and Multi-User Interactions • Design Dimensions • Coupling • Concurrency Control • Undo/Redo
Application Active Display User MODELING SINGLE-USER INTERACTION Flexible Commitment Editing Commands
Application Active Display Active Display User 1 User 2 MODELING MULTI-USER INTERACTION Coupling Concurrency Control Editing Commands Editing Commands Undo/Redo
DESIGN DIMENSIONS – SEMANTIC ISSUES • Session Management • Single-User Interface • Coupling • Access Control • Concurrency Control • Process Control • Merging • Undo/Redo • Awareness Focus
SEMANTIC ISSUES Coupling Concurrency Control Multi-User Undo/Redo
STRICT WYSIWIS COUPLING User 1 If user 1 moves green window Then green window moves on user 2’s screen If user 2 scrolls up in orange window Then orange window scrolls up on user 2’s screen User 2
STRICT WYSIWIS COUPLING User 1 Pros • Easy to understand • Application-independent • Automatable Cons • Window and scroll wars • Size and view wars • Communication Overhead User 2
RELAXED WYSIWIS COUPLING Independent Window Positions Independent Window State
SEMANTIC ISSUES Coupling Concurrency Control Multi-User Undo/Redo
Allow Concurrent Operations? Controlled (Locks) Free FREE VS. CONTROLLED • Lock Granularity • Explicit/Implicit Locking • Releasing the Lock • Social Protocol • Display Consistency Mechanism?
Session Application Window Paragraph/Drawing Char LOCK GRANULARITY DCS XTV Ensemble GroupKit Fine-grained Variable-grained Coarse-grained (Floor Control) Finer Control Locking Overhead
Explicit Selection-implied Key-implied (no failure) Dragging-implied (no failure) Dragging-implied EXPLICIT/IMPLICIT LOCKING Lock O Append O, E1 Delete O, E2 Unlock O Select Object Lock + Select Object Move Object Resize Object Unselect Object Unselect + Unlock Object Press Key -> Lock Buffer + Insert Character Release Key Unlock Buffer Stop Dragging Lock + Drag + Unlock Object Start Dragging Lock Object + Start Dragging Move Object Stop Dragging Stop Dragging + Unlock Object
Non-Preemptive Preemptive Tickle-Locks RELEASING LOCKS Lock O Insert O, E1 Delete O, D1 Unlock O Lock O Insert O, E1 Lock O Insert O, E1 t > T Lock O Insert O, E2 … Lock O Insert O, E2 … Lock O Insert O, E2 … Pro: Consistency Pro: Low Wait Time Pro: Priority Con: Accidental Locking System: MMConf System: CES
SEMANTIC ISSUES Coupling Concurrency Control Multi-User Undo/Redo
Undo Reasons Single-User Multi-User MULTI-USER UNDO • Recover from • self errors • system errors • Explore alternatives • Recover from • others errors • system errors • Replay facility for newcomers
Single-User Undo Coupling Concurrency Control Multi-User Undo Linear Single-User Undo Model WYSIWIS Coupling Model MULTI-USER UNDO FACTORS
SINGLE-USER UNDO MODEL C3 C3 C3 C3 C3 C2 C2 C2 C2 C2 C2 C1 C1 C1 C1 C1 C1 C1 C1 C2 C3 Undo Redo Undo Redo
Undo GLOBAL (LAST COMMAND) UNDO Semantics C3 C3 C3 C3 C2 C2 C2 C2 C2 C2 C1 C1 C1 C1 C1 C1 C3 Undo or
Delete O2, e2 Delete O2, e2 GLOBAL (LAST COMMAND) UNDO Disjoint Manipulation Insert O3, e2 Insert O3, e2 O1 O2 O3 Undo Insert O1, e1 Insert O1, e1
Undo Undo GLOBAL (LAST COMMAND) UNDO Concurrent Manipulation C3 C3 C2 C2 Atomic Broadcast C1 C1 & C3 C2 C2 Non-Atomic Broadcast C1 C1 C3 & C3 C2 C2 C3 C1 C1
C2 C2 C2 C2 C2 C2 LOCAL, CORRESPONDING UNDO Semantics C3 C3 C3 C3 C1 C1 C1 C1 C1 C1 C3 Undo
Undo Resize O C4 C4 C4 C4 C4 C4 C4 C4 Rotate O C2 C2 C2 C2 C2 C2 C2 C2 Undoing Non-Last Command Undo Undo Move O C3 C3 C3 C3 C3 C3 C3 C3 Create O C1 C1 C1 C1 C1 C1 C1 C1 Dependent action cannot be undone!
C2 C2 C2 C2 C2 C2 SELECTIVE, CORRESPONDING UNDO By Reference Undo Undo (C1) C3 C3 C3 C3 C3 C3 C1 C1 C1 C1 C1 C1
Rotate O1 Create O2 Rotate O1 SELECTIVE, CORRESPONDING UNDO By Filter Rotate O2 Filter (Blue User) Create O1 Filter (O1) Rotate O2 Create O1 Create O1
SEMANTIC ISSUES Coupling Concurrency Control Multi-User Undo/Redo