Collaboration Systems 11/10/2018 Collaboration Systems Prasun Dewan Department of Computer Science University of North Carolina CB 3175 Sitterson Hall Chapel Hill, NC 27599-3175 dewan@cs.unc.edu http:/www.cs.unc.edu/~dewan 11/10/2018 290-63:Overview
Issues Advanced? Writing Programming Presentation Integrated with 291 Programming Careful Vs Bulk Combined with 243 Presentation Pick a Project Quickly Nature of Area Look at Web Page 11/10/2018 290-63:Overview
Overview Why Collaborative Applications? Related Areas Nature of System Support Concrete Examples Lessons 11/10/2018 290-63:Overview
Benefits: Towards Being There Face-to-Face Interaction Computer-Supported Interaction Network 11/10/2018 290-63:Overview
Gesture Cam: Remote Surrogate 11/10/2018 290-63:Overview
Benefits: Beyond Being There Face-to-Face Hollan & Stornetta ‘92 Interaction Computer-Supported Interaction Network 11/10/2018 290-63:Overview
Action Workflow Director Manager 2 Schedule Interview Status By Candidate Workflow Step 3 1 4 Manage Review Manager Director 7 10 Manager Technical Directors Submit Evaluation Form 5 6 Director Manager Declare Assessment 9 8 11/10/2018 290-63:Overview
Dual Collaboration Goals Towards Being There Beyond Being There 11/10/2018 290-63:Overview
Collaboration Vs Virtual Environments Shared Whiteboard Nanomanipulator Remote VE Collaborative Applications VE Immersive VE Telepresence Colab. Nanomanipulator Asynchronous/ Face-to-face Collaboration 11/10/2018 290-63:Overview
Collaboration Vs Real-Time & Distributed Apps. Factoring Prime Numbers Audio/Video Conferencing Multi-Mouse Whiteboard Distributed Applications Real-Time Applications Collaborative Applications Shared Whiteboard Colab VE Lotus Notes Embedded Systems 11/10/2018 290-63:Overview
Collaboration Vs Mobile Apps. Disconnected Shared Editing with Syncing Disconnected Editing with Syncing Collaborative Applications Mobile Applications Shared Notebook Electronic Notebook 11/10/2018 290-63:Overview
Relationship with Object-Oriented and User Interface- Technology Interactive Applications Collaborative Applications O-O Applications Beans Model-View-Controller-Coupler, Jitter Manager, ... Collaborative Beans Model-View-Controller 11/10/2018 290-63:Overview
System Support Applications Applications System Support Windows Apps Existing Windows Apps Competing Systems User Interface Interoperability Extensibility/Composability Applications Distribution Performance/Resource Management Functionality Coupling System Support 11/10/2018 290-63:Overview
System Support Applications Applications System Support Existing Interoperability Extensibility/Composability Applications Performance/Resource Management Functionality System Support X, Windows, Java Apps. 11/10/2018 290-63:Overview
Shared Window System WYSIWIS Coupling Audio/Video User 1 User 2 Application + Tightly-Coupled Meetings + Easy to Understand + Application-Independent + Automatable Window Window WYSIWIS Coupling Audio/Video User 1 User 2 11/10/2018 290-63:Overview
Centralized Architecture XTV (‘88) VConf (‘87) Rapport (‘88) NetMeeting X Client Pseudo Server Pseudo Server X Server X Server User 1 User 2 11/10/2018 290-63:Overview
Shared Window System WYSIWIS Coupling Audio/Video User 1 User 2 Application - Scroll Wars + Tightly-Coupled Meetings - Window Wars + Easy to Understand - No Flexibility + Application-Independent - Performance + Automatable - Consistency Window Window WYSIWIS Coupling Audio/Video User 1 User 2 11/10/2018 290-63:Overview
System Support Applications Applications System Support Existing Interoperability Extensibility/Composability Applications Performance/Resource Management Functionality System Support X, Windows, Java Apps. 11/10/2018 290-63:Overview
System Support Applications Applications System Support Existing Interoperability Extensibility/Composability Applications Performance/Resource Management Functionality System Support Beyond WYSIWIS 11/10/2018 290-63:Overview
Flexible Model of Collaboration Application Session Management User Window Version 1 Window Version 1 Coupling Merging Undo/Redo Awareness CC/AC 11/10/2018 290-63:Overview User 1 User 2
System Support Applications Applications System Support Existing Interoperability Extensibility/Composability Applications Performance/Resource Management Functionality System Support Coupling, Merging, Diffing, Undo, User Interface, Security, Concurrency Control 11/10/2018 290-63:Overview
Performance/Resource Management System Support Applications Existing Interoperability Extensibility/Composability Applications Performance/Resource Management Functionality System Support Distributed Architecture, Jitter & Latency Control 11/10/2018 290-63:Overview
XTV Centralized Architecture X Client Pseudo Server X Server X Server X Server X Server User 1 User 2 User 3 User 4 Laptop++ Laptop Handheld 11/10/2018 290-63:Overview
Migration X Client Pseudo Server Pseudo Server Pseudo Server X Server User 2 User 3 User 4 Laptop Handheld Handheld 11/10/2018 290-63:Overview
Migration X Client Pseudo Server Pseudo Server X Server X Server User 3 User 4 Handheld Handheld 11/10/2018 290-63:Overview
Centralized -> Replicated X Client X Client Pseudo Server Pseudo Server X Server X Server User 3 User 4 Handheld Handheld 11/10/2018 290-63:Overview
Replication -> Centralized X Client Pseudo Server Pseudo Server Pseudo Server Pseudo Server X Server X Server X Server X Server User 1 User 2 User 3 User 4 Laptop++ Laptop Handheld Handheld 11/10/2018 290-63:Overview
Performance/Resource Management System Support Applications Existing Interoperability Extensibility/Composability Applications Performance/Resource Management Functionality System Support Distributed Architecture, Jitter & Latency Control 11/10/2018 290-63:Overview
Extensibility/Composability System Support Applications Existing Interoperability Extensibility/Composability Applications Performance/Resource Management Functionality System Support 11/10/2018 290-63:Overview
Monolithic System Pseudo Server Suite Shared Windows Merging Logging Coupling Replication User-Interface 11/10/2018 290-63:Overview
Component-based System Pseudo Server Suite Shared Windows Merging Logging Coupling Replication User-Interface Logging 11/10/2018 290-63:Overview
Composability XTV 1 Logging Service XTV 2 Logging Service XTV Logging A logging service can dynamically compose with different instances of a client. A client can dynamically compose with different instances of a server. Logging Service XTV 1 XTV 2 Logging Service XTV Logging Service 11/10/2018 290-63:Overview
Genericity XTV Logging Service Suite A logger can compose with different loggables at different levels of abstraction. Logging Service XTV Suite 11/10/2018 290-63:Overview
Generic API 11/10/2018 290-63:Overview
Ease of Programming (a) XTV Implementing Latecomer Service X Client X UI Protocol XTV Specialized Logging Service Other Services X UI Protocol X Servers (a) XTV Implementing Latecomer Service X Client XTV X UI Protocol Generic UI Protocol Interface to Logger (Translation) Generic Logging Service Other Services X UI Protocol X Servers (b) XTV Using Logger for Latecomer Service 11/10/2018 290-63:Overview
Connection Bus Pseudo Server Suite Shared Windows Merging Connection Facets Collaboration Bus Merging Logging Coupling Replication User-Interface 11/10/2018 290-63:Overview
Proxy Support Model Out In Model 11/10/2018 290-63:Overview
Extensibility/Composability System Support Applications Existing Interoperability Extensibility/Composability Applications Performance/Resource Management Functionality System Support Generic Interfaces, Design Patterns, Connection Managers 11/10/2018 290-63:Overview
System Support Applications Applications System Support Existing Interoperability Extensibility/Composability Applications Performance/Resource Management Functionality System Support Coupling, Concurrency Control, Merging, Access Control 11/10/2018 290-63:Overview
Interoperation Inter-operation Our Organization’s Collaborative Spreadsheet Your Organization’s Collaborative Spreadsheet User 1 User 2 User 3 User 4
Interoperation Example Habanero Spreadsheet Custom Spreadsheet Lock Controller Spreadsheet Model Spreadsheet View WYSIWIS Coupler Floor Controller Flexible Coupler Spreadsheet Replica User 1 User 2 User 3 User 4
Interoperating Coupling Dynamic Composition Local Semantics Preserved Spreadsheet Model WYSIWIS Coupler Flexible Coupler Spreadsheet Replica Spreadsheet Replica Dummy User Spreadsheet Replica/View Spreadsheet View Spreadsheet View User 1 User 2 User 3 User 4
System Support Applications Applications System Support Existing Interoperability Extensibility/Composability Applications Performance/Resource Management Functionality System Support Coupling, Concurrency Control, Merging, Access Control 11/10/2018 290-63:Overview
System Support Applications Applications System Support Existing Interoperability Extensibility/Composability Applications Performance/Resource Management Functionality System Support 11/10/2018 290-63:Overview
Lessons Being there Beyond Being there NetMeeting, Shared whiteboards, video-conferencing successful Being there Communication Software Inspection Review Control Workflow Beyond Being there Flexibility Needed 11/10/2018 290-63:Overview
Life Cycle Requirements Design Programming Debugging Testing Review Maintenance Mostly Synchronous Mostly Asynchronous Integration of Sync and Async Integration of Life Cycle Steps 11/10/2018 290-63:Overview
Lessons Flexibility New area explored faster Training needed Exploratory Environment How to see effects on other users textual descriptions animations network simulations? 11/10/2018 290-63:Overview
Lessons Infrastructure Make different tradeoffs XTV Suite Rendezvous Constraint-based languages Lotus Notes GroupKit Java Enterprise Beans Java Shared Data API Make different tradeoffs 11/10/2018 290-63:Overview
Favoring Automation/Reusability XTV Programmer User
Favoring Performance/Flexibility Suite Programmer User
Lessons Reuse Importance Flexibility Importance NetMeeting, X Shared Whiteboards, Chat, Lotus Notes Flexibility Importance 11/10/2018 290-63:Overview
Composibility of Generic Interfaces is Useful Generic User Interface Spreadsheet User Interface Access Control Spreadsheet Bus Agent Coupler
Usefulness of Interoperation? Our Organization’s Collaborative Spreadsheet Your Organization’s Collaborative Spreadsheet User 1 User 2 User 3 User 4
Composition, Interoperation Related Habanero Spreadsheet Bus Spreadsheet Translator Interoperation uses Composition Interoperation example Specific Logging Client Specific to Generic Generic Logging Server Composition Uses Interoperation Composition Example
Java Experience Portability Introspection Support Interfaces JSDA Swing RMI Version Evolution Existing Colab Systems Powerful but slow!
Lessons Infrastructure is Important ICICLE built from scratch CIS, CAIS built using Suite 11/10/2018 290-63:Overview
11/10/2018 290-63:Overview
11/10/2018 290-63:Overview
11/10/2018 290-63:Overview
11/10/2018 290-63:Overview
11/10/2018 290-63:Overview
Server-defined Protocol Combining Benefits Server Client Server-defined Protocol Traditional Approach introspects Client Server App.-defined Protocol Bean Approach
Composition and Interoperation Related Floor to Lock Lock to Floor Bus Spreadsheet Habanero Spreadsheet Interoperation Example Specific Logging Client Specific to Generic Generic Logging Server Composition Example
Concurrency Control Policy 1 FloorControlSystem User 1 User 2 False User 3 LockConrolSystem User 4 User 5 User 6 11/10/2018 290-63:Overview
Concurrency Control Policy 2 LockControlSystem False User 1 User 2 User 3 FloorConrolSystem User 4 User 5 User 6 11/10/2018 290-63:Overview
Proxies Events Generated: LockRequestedEvent LockAcquiredEvent LockReleasedEvent System 1 (Spreadsheet) System 2 Lock Manager Floor Controller LockToFloor Proxy Invoke methods: AcquireFloor ReleaseFloor System 1 (Spreadsheet) System 2 Lock Manager Floor Controller FloorToLock Proxy Events Generated: FloorRequestedEvent FloorAcquiredEvent FloorReleasedEvent Invoke Methods: AcquireLock ReleaseLock 11/10/2018 290-63:Overview