CSCW系统本质上是一个分布式多媒体系统,所以要设计构造一个CSCW系统离不开现有的分布式技术。随着分布式技术的不断发展,如异构环境下的互操作,多媒体技术等,这些都是  CSCW系统的基本需求。所以要设计一个满足一般性需求的CSCW系统,必须从分布式技术出发。为了充分利用现有的分布式系统所能提供的一些基本功能,人们提出在传统的分布式计算机平台之上建立一个"CSCW支持层",来弥补一般分布式系统处理问题的方式不完全适用于CSCW系统的不足。
  CSCW系统最终目的是支持群体成员有效地协作,如果采用群体协作的活动--任务一合作模型,系统不仅需要管理各任务之间的关系及任务的执行速度,而且还要对完成具体任务时群体所进行的各类活动进行有效的支持。由于活动的种类及活动所完成任务的应用领域的不同,对各类活动进行支持需要处理的问题也各不相同,为了使系统的结构灵活,便于扩充和配置,可以采用一个CSCW应用程序来处理一类活动的特殊问题,如对一个文档的共同编辑活动,用协同编著应用程序来处理,而对一个机械零件的共同设计活动,用协同设计应用程序来处理。系统通过提供多种CSCW应用程序就可以对多种活动进行支持。而这些应用程序之间关系的维护以及它们中的公共功能,可在独立于各应用程序的系统一级进行提供。可以将这些功能与上述弥补分布式系统不足的"CSCW支持层"功能相结合,形成了一个CSCW支撑平台SPCSCW(Supporting Platform for CSCW)。这样,一般分布式系统、CSCW支撑平台SPCSCW及各种CSCW应用程序就构成了一个可以较好地满足CSCW系统三方面需求的CSCW系统的通用体系结构。
  此体系结构以CSCW支撑平台SPCSCW为中心,SPCSCW利用下层的分布式系统提供的功能,弥补其在支持群体协作上的一些不足,向上层的各种CSCW应用程序提供一些面向CSCW的公共服务。特别地它为同步紧耦合的CSCW应用程序提供了公共的群体协作关系的建立与维护机制,为异步CSCW应用程序提供了通过共享对象的协作机制及各种对象库的管理。此外它还允许应用程序间直接的实时交互,并对不同应用程序访问资源的冲突进行协调,维护各应用程序间的各种关系。这些功能都以一个开放的接口提供。利用SPCSCW提供的这些功能,各种新的CSCW应用程序可以集中处理特定与该应用领域的特殊问题,使得其构造简便易行。并且只要新的应用程序符合该接口,它就可以在不影响原有系统的情况下,方便地集成到系统中,并通过SPCSCW与系统中原有的应用程序之间建立语义关系,与它们有机地结合,同时对群体的协作进行全面的支持。
   8.38 CSCW系统的层次结构
  
  一、通用CSCW系统的层次结构
  从整体上看此体系结构,可将其粗略地分为四层,如图8.38所示。
  ① 分布环境与服务。体系结构的最底层为基本的分布环境与服务,它是体系结构中其他部分的基础,这一层主要是现有的一些分布功能和服务。它首先包括由各种网络相连的各种计算机系统,这是分布环境的硬件基础;除此之外是对通信和共享等各种分布性问题进行处理与控制的分布式操作系统,它负责提供一些基本的分布服务。当然为了更好地处理各种环境下分布式应用程序间的互操作问题,它还应该包括分布式对象服务,而为了处理分布环境中有关多媒体信息的特殊性问题,还应该包括多媒体功能与服务,如分布式多媒体系统服务等。这一层使得CSCW系统的分布性以及在各种异构环境下的互操作性成为可能。
  ② CSCW支撑平台SPCSCW。在分布环境与服务层之上,是CSCW支撑平台SPCSCW,此平台一方面完成一些特定的CSCW定功能,提供协作意识机制、基于角色的信息共享以及组通信等面  向CSCW的服务,以弥补一般分布式系统在支持群体协作上的一些不足,另一方面它还具有管理功能,它不仅能够管理系统的状态,而且还维护群体间的动态协作关系,以及基于其上的各种CSCW应用程序之间的关系。此管理模块在图8.38中表现为平台的突出部分,因为此管理功能是通过平台直接提供用户界面供用户访问的。以上这些功能和服务以一组完善的应用程序编程接口(APIs)进行提供,使得新的CSCW应用程序可以方便地构造并加入到环境中来。
  ③ 各种CSCW应用程序。体系结构中对各种应用领域特殊问题的处理以及对各种协作形式的支持都是通过不同的应用程序完成的,这些应用程序位于支撑平台SPCSCW之上,它们利用  平台提供的各种服务在平台的统一管理下为群体间的各种协同工作进行全面的支持。在CSCW领域中,根据对协作支持的处理方式的不同,可以将应用程序分为隐式协作型(Collaboration-Transparent)与显式协作型(Collaboration-Aware)。隐式协作型应用程序本身并不处理多用户协作的问题,它只是通过提供多个用户接口,并通过控制应用程序的多路输入输出来支持多个用户的访问,它只能进行显示级的共享,限制了用户的行为,不能很好的支持群体的协同工作。在这里只是在对已有单用户应用程序进行共享、使其可被多个用户访问时,采用这种方法。对于显式协作型应用程序而言,程序本身要处理群体协作问题,因此它可以提供各种协作支持方式,提供显式级、视窗级、对象级的信息共享,从而合理有效地支持多用户间的协作。此体系结构中的CSCW应用程序就是指这种应用程序。
  ④ 用户界面。为了使用户界面的管理灵活方便,体系结构中凡是需要与用户进行直接交互的地方,都提供一个与语义处理部分分开的用户界面。协同工作的群体成员通过用户界面访问系统,并通过系统与其他成员建立联系进行通信,共享信息共同完成协作任务。

  二、通用CSCW系统中的运行部件
  上述层次结构是将分布式的CSCW系统作为一个统一的整体来进行抽象讨论的结果。但是在实际中,CSCW系统是由通过网络相互连接的多个计算机系统组成的。我们将这些计算机系统称为节点,并且为了以后讨论的方便,我们用一个自然数来唯一地表示一个节点,用i(i?N)表示组成CSCW系统的第i个节点。以上层次结构中的每一层功能都是由分布在各节点上的系统运行部件及它们之间的相互作用来完成的。
  把系统看成由多个节点组成时,就存在着如何确定各节点功能的问题。目前存在两种分配节点功能的结构,一种为集中式(Centralized),一种为复制式(Replicated)。集中式结构以Client/Server模式组织各节点,系统中的某节点为Server,而其他节点为Client。这种方法易于实现一致性检测和并发控制,然而当Server节点出故障时,系统随之瘫痪。随着用户的增加,Server的负担明显加重,用户响应时间较慢,网络负担过重,通信开销大。复制式结构的各节点地位相等,这种方法中的一致性检测和并发控制的实现比较困难,然而,由于各节点自治性加强,系统对用户响应加快,由于只传输事件和更改数据,网络开销也大大减少,它容易适应硬件的变化,各地可根据自己的特征进行配置,有利于大规模系统的构造。
  由于CSCW系统支持的是用户的协作,而在协作中用户最关心的是系统的响应时间及系统的性能。此外,复制式结构中各部件之间的关系比较符合现实生活中群体之间的关系,可较好地刻划用户之间的交互。鉴于此,我们将体系结构设计成完全分布的形式,也就是复制式,系统在所有节点上的部件所提供的功能完全一样。系统中的并发控制与一致性检测由这些部件相互作用共同解决。当然在一次实际运行过程中,由于使用各节点参与协作的用户在协作角色上有所不同,因此在实际运行时,各节点中的系统部件所起的作用是不一样的。具体地,系统中的主要运行部件的组成如图8.39所示,其中包括:
  (1) 分布环境与服务。在组成系统的各节点中都有一些运行部件来处理系统的各种分布性问题,这些部件相互作用,向其上层提供各种分布服务。由于体系结构中分布性问题的处理利用的是已有的各种分布式技术,本章不对其进行详细的讨论,为了便于对有关CSCW功能的说明,在这里我们把这些彼此相互作用的部件看成一个整体,并将其作为使各节点相互沟通的途径,以及为完成这一功能所提供的其他辅助的服务。
  (2) 支撑平台部件。在组成系统的每个节点中都有一个支撑平台部件,各节点中的支撑平台部件通过分布环境与服务彼此相通,它们相互作用,构成了统一的CSCW支撑平台,向各种CSCW应用程序提供面向CSCW的公共服务,并维护各种CSCW应用程序之间的各种关系。为了便于以后的讨论,我们用Pi(i?N)表示第i个节点中的支撑平台部件(Platform Component),也说是系统中的所有的支撑平台部件,构成完整的CSCW系统支撑平台。对于完全分布的系统而言,各pi(i=1,2,…n)是相同的。
  (3) CSCW应用程序部件。系统中的每个CSCW应用程序在每个节点中也都有一个运行部件,这些运行部件通过相应的平台部件彼此相连,相互作用,形成完整的分布式应用程序,为群体的协作提供具体的支持。由于系统中允许有多个不同的CSCW应用程序,每一个应用程序都是如此,可以称为CSCW系统应用程序部件(Application Component),也就是说与所有支撑平台部件相连的相同CSCW应用程序部件,它们构成一个完整的分布式CSCW应用程序,可对群体的协作进行具体的支持。
   8.39 CSCW系统中的运行部件
  
  在图8.39中我们略去了系统中各个运行部件的用户界面部分,因为在此体系结构中虽然各用户界面部分与语义处理部分是分离的,然而界面与语义部分是直接的一一对应的关系,其输入输出没有经过重定向,因此在概念上可将它们看成一个整体,认为各运行部件管理自己相应的用户界面。当然这一点对已有单用户应用程序的共享是例外,在后面我们将对其进行专门的讨论。
  从以上CSCW系统的运行部件图中我们可以看出CSCW支撑平台在整个系统中所起的作用。从概念上讲它为各种CSCW应用程序提供了两种软总线。首先就一个节点而言,其中的支撑平台部件为各种CSCW应用程序部件提供了一种软总线,它使该节点中的各种不同的CSCW应用程序部件联系在一起,不仅向它们提供各种服务,而且还协调它们对资源的访问,支持它们之间的信息交换,维护它们之间的语义关系,这样新的CSCW应用程序部件只要符合平台的接口,就可以在保持与其他应用程序之间各种关系的前提下插接到此软总线上,访问平台提供的服务。
  就CSCW系统整体而言,各节点中的支撑平台部件通过分布环境与服务彼此相连,它们相互作用共同形成一个分布式的软总线,使各节点中的CSCW应用程序部件可以彼此沟通,形成完整的分布式应用程序,支持多个用户的协作。例如某用户在其使用的节点中启动一个CSCW应用程序部件后,此程序部件就插接到这个分布式的软总线上,并通过它与系统中其他节点上相同程序部件建立联系,这样该用户就可以通过此CSCW应用程序与其他同样运行该应用程序的用户进行协同工作完成具体的任务。
  支撑平台在同一节点上形成的软总线与在分布式环境下形成的软总线从总体上来说可以维护多种不同的分布式CSCW应用程序之间的关系。

  三、通用CSCW系统中的信息存储
  信息的交换与共享在CSCW系统中起着非常重要的作用。有很多CSCW应用程序为用户提供的是基于共享信息的协作,如各种协同著作系统。在这些系统中共享信息是系统的中心,各用户利用CSCW系统对这些共享信息进行操作,用户间的彼此了解还可以通过共享信息状态改变事件来完成。鉴于信息在群体协作中的重要位置,支撑平台提供了对信息的管理功能。
  为了允许用户的个人工作与协同工作的结合,系统中必然同时存在着私有信息与共享信息。私有信息只属相应的个人所有,不能被其他人访问,而共享信息被参与协作的群体所共享,各个用户都可对其进行访问。我们以对象的形式表示系统中的信息,系统中的信息存储为每个节点有一个私有对象库(Private Repository),由该节点上的支撑平台部件管理,存放用户的私有信息。整个环境中有一个共享对象库(Shared Repository),它独立于各节点,由分布式数据库管理系统进行管理,属于分布环境与服务层的功能。实际系统中共享对象库可能包含多个分布的数据库,然而通过分布式数据库管理系统的管理,完全可以将其看成一个库。
  在系统运行过程中,随着协作的进行,一些私有信息会成为共享信息,允许多个用户访问,这时该信息对象就需要从某私有对象库中移到(Migration)共享对象库中。当然共享信息也会成为私有信息,而使信息对象从共享对象库中移到私有对象库中。
  以上所讨论的信息都是一种静态的信息,也就是被应用程序处理完了,或还没有被处理的信息。对于那些正在被应用程序处理的活动信息而言,为了提高响应速度,各节点中的对该应用程序部件将拥有信息的一份拷贝。在要对某信息进行处理时,各应用程序部件都通过支撑平台取得一份信息,然后通过各程序部件的相互作用维护这些信息的一致性并对其进行处理,在处理完之后,通过平台存入数据库中。

  四、CSCW系统支撑平台具体结构
  CSCW系统体系结构的核心是CSCW支撑平台SPCSCW,它利用一般分布式系统提供的功能,一方面向各CSCW应用程序提供面向CSCW的公共服务,成为分布式系统与CSCW应用程序之间的适配层,另一方面它还维护各种不同的CSCW应用程序之间的各种关系,使它们成为有机统一的整体。
  在分布式环境下,支撑平台是由分布在各节点中的支撑平台部件相互作用共同组成的,出于对系统响应时间和性能的考虑,此体系结构具有完全分布的结构,在组成系统的各节点中,软件的组成模块与提供的功能完全相同,在一个节点中CSCW支撑平台的具体结构如图8.40所示。
  在建立CSCW支撑平台具体结构时,出于对灵活性的考虑,可以采用有别于传统程序通常所采用的处理问题的方法。对于传统的程序而言,一般有:
     程序 = 数据 + 算法
  也就是说,程序是通过某种固定的算法对一定的数据进行处理,最后得出结果的一种过程,对数据进行处理的步骤被固化在程序中,程序对相同数据的处理结果总是相同的。这种处理问题的方式对科学计算问题是非常有效的,然而在CSCW系统中采用就显得缺乏灵活性,因为这样一来对用户协作的支持方式就被固定在系统中,而不能改变。但对于不同的用户群体而言,其工作习惯及开展协作的方式是不一样的,就是对同一群体而言,根据实际情况的不同也会采用不同的协作方式。如进行讨论时的发言权控制,有时希望采用自由的无控制方式,讨论参与者随时都可以发言,而有时又想采用由主持人决定唯一发言者的方式。这种控制方式的转换应该非常灵活。为了达到这一目的,CSCW支撑平台采用了:
     程序 = 数据 + 处理机 + 处理规则
  的方式。系统中要用到的所有数据、协作控制的规则以及其他的各种知识等都用数据库进行管理,而支持平台在用户或CSCW应用程序的输入下,根据当时所确定的一套协作规则进行活动,这样所选择的协作规则不同,系统所提供的协作支持方式就不一样。
  具体的,支撑平台大致地分为两个部分:群体协作功能单元与数据库接口单元(如图8.40所示)。
   8.40  CSCW支撑平台具体结构
  
  (1) 群体协作功能单元。此单元完成平台的各种操作,是平台的处理机,它主要由以下子部分组成:
  ① 资源访问协调。它对各种共享的计算机资源及多媒体设备进行管理,向协作代理提供对资源及设备的访问协调服务;
  ② 多媒体通信。进行面向多媒体信息的通信,通过对逻辑会话与逻辑通道的管理,可根据用户需要,通过协商向各CSCW应用程序提供不同服务质量(QoS)的通信服务,在用户间传输诸如实时音频、实时视频及其他各种媒体信息,并维护各信息流的关系。这部分功能将随着面向多媒体传输的网络(如ATM)的发展以及一般分布式系统本身对多媒体通信支持的增加而减少。
  ③ 系统信息服务。管理系统中所需的所有信息,如用户目录、各种CSCW应用程序的信息、系统的状态信息、各种实际的操作信息以及各种协作规则、知识等。
  ④ 协作代理。这是CSCW支撑平台核心,它通过调用资源访问协调服务及多媒体通信服务协调各CSCW应用程序的操作,向它们提供面向协作的功能,并维护它们之间关系。它通过与应用程序及其他节点上的协作代理进行交互来完成支撑平台的主要功能。
  ⑤ 协作管理。提供公共的协作管理功能以及系统状态和协作状态的监测;
  ⑥ 共享引擎。管理已有单用户应用程序的输入与输出,可根据系统的状态及用户的需要控制单用户应用,使其与系统充分融合,从而在协作中被多个用户共享,这样可使系统充分利用已有的程序资源。
  (2)数据库接口单元。系统中所需的所有信息以及为支持用户协作所需的规则和知识都通过数据库接口单元向群体协作功能单元提供。
  以上的讨论仅仅限于CSCW系统本身,对于一个完善的计算机系统而言,除了CSCW系统之外,它还会包括其他分布式应用系统以及单用户应用系统。单用户应用必须调用基本的计算机软硬件系统环境提供的服务。分布式应用必须同时调用分布式系统服务和基本的软硬件系统服务。而CSCW应用却必须调用所有的系统服务,其中包括CSCW支撑平台提供的面向群体协作的服务。当然这些不同的系统是在同一计算机系统中共存的。