CASCADE is a testbed that operates as a functional tool for collaborative authoring. The system currently has two forms. An ``X/Unix'' form and an ``SQL/RPC'' (client/server) form. The X/Unix form is a large executable based on more than 200 modules that does all of the CASCADE work based on information stored in the Unix file system and a series of flat files. The interface is X/Motif and is served from the application across the network to a workstation. This form of CASCADE is relatively easy for developers to work with, can be quickly modified, and can have new features installed in minutes. At the same times, it does not scale well, nor does it work well over congested networks. For that purpose, CASCADE is in the process of being redesigned as a true client server application. The code has been split into client and server portions and the server in being redesigned piece by piece to replace the Unix and flat file information with information from an SQL compliant database residing on the server. Instead of processing all of the information on the server and shipping X to the clients, the SQL version will use RPC protocols. The clients will be manifest to the users as interfaces written in the native form of the platform they use -- Windows, X, Mac. While the X/Unix prototype is useful for demonstrating general functionality, it will be abandoned in the future for two reasons:
Figure: Structural Architecture
The client and server software using RPC will be developed with an eye to CORBA. Ultimately, CORBA-compliant clients will communicate with other CORBA-compliant objects as needed. The server will remain a significant partner in the communication, but CORBA compliance will allow local communication and service as well as direct service from the SQL/CORBA compliant DBMS as needed.
The agent architecture is an important component of the research effort. Agents will be developed so that they may be executed as independent software entities constructed to be CORBA compliant. Specific agent functions may also be developed in line as components of the CASCADE client or server modules--for purposes of efficiency. The term ``agent'' is used increasingly in the literature and means very different things to different people. We view agents as pieces of code that undertake tasks on behalf of a user of the system. Agents might be classified based upon the sophistication of the service provided. We believe that 5 levels may be a more appropriate classing for the kinds of tasks we have in mind.