Next: Issues
Up: Views of Collaboration
Previous: Systems
:
Collaboration systems are related to and extend
a variety of systems:
- Operating Systems:
The goals of an operating are to (a) provide the basic systems software that comes with
every machine and is used by a wide variety of applications
(b) to manage resources shared among different processes.
Collaboration systems are components of operating systems according to (a) if we believe
collaboration is a fundamental requirement of an interactive application and (b)
if we assume that different processes sharing a set of resources can execute on
behalf of different users.
While current operating systems allow the construction of
a wide variety of collaborative applications,
they have not been designed to support applications supporting
close collaboration and as a result offer only low-level support
for building these applications.
Concepts in these systems can be reused/extended in collaboration
systems.
Important questions to be answered here are:
What kind of collaboration support is required from a kernel?
Does distributed shared memory support the construction of collaborative applications?
- Database Management Systems:
Traditional database management systems
provide automatic storage and access of data shared among processes executing on behalf of
different users - facilities collaborative systems must also support.
What they lack are facilities for defining complex data,
sharing data among cooperating transactions,
and triggering programmer-specified computations in response to access to data.
Collaborations systems must extend database systems to support these facilities.
Important questions to be answered here are:
How should the serializable transaction model be extended to support cooperation?
How can recovery be extended to support multi-user undo/redo?
- Programming Languages:
The goal of a programming language is to provide general abstractions for
supporting the construction of software applications.
In collaborations systems,
we will study how existing programming abstractions must be extended to support
collaborative applications.
Interesting questions here are:
What kind of programming paradigm (e.g. procedural or declarative)
is best suited for supporting collaboration?
Is static or dynamic typing more important in a collaborative system?
- User Interface Systems:
These systems provide abstractions for performing single-user I/O.
We will study how these systems can be extended to support multiuser I/O.
Important questions here are:
At what level of a user interface system must multiuser I/O be supported: window level,
toolkit level,
UIMS level?
What kind of architecture should be used to multiplex input and demultiplex output-
centralized, replicated or something in between?
- Software Engineering:
Many of the techniques and tools developed for supporting
software engineering are relevant for collaborative systems including
tools for supporting process control and interoperability.
Some of the concepts related to these systems are taught in existing courses on
other kinds of systems.
For instance multi-processing and concurrency control,
two important components of collaborative systems,
are taught in courses on operating systems and database systems,
respectively.
In this course,
we will only review these concepts,
and focus mainly on concepts related to collaboration systems that are not
taught in
traditional computer science courses.
Next: Issues
Up: Views of Collaboration
Previous: Systems
Prasun Dewan
Mon Jan 13 14:41:48 EST 1997