Enabling Technologies for Collaborative CAD


Enabling Technologies for Collaborative CAD

Mark D. Spiller and Francis Chan

Abstract

The explosive growth of the world wide web and network computing promises to affect all facets of computing, including computer aided design (CAD). As design complexity continues to grow exponentially, so also do the potential advantages of network design environments and collaboration. This paper describes several pieces of infrastructure that we have built to enable network EDA systems, including java client extensions and applications, object-oriented server technology, and network communication protocols.

Description

Introduction and Vision

Our intent in undertaking this project was to continue with our ongoing focus on the infrastructure required to build a networked design environment for CAD. To this end we began with a set of assumptions concerning technology that we would like to use and take part in developing over the next few years. Features and trends included: Since it was clearly impossible for a semester project to encompass all of the above functionality, the goal of this project was to attempt to take an initial step in the direction, and focus on developing useful and flexible infrastructure leading towards the realization of these goals.


Figure 1 : System Architecture

Persistent Object Package

The PersistentObject package allows Java (client) objects to be managed and manipulated by a network data server. One of the main goals of building the PersistentObject package was to empower application developers and users to add value to our system. The simple API, which consists of commands such as load, save, attach, etc., completely abstracts away the complexity of the underlying operations from the user, thus making it extremely straight-forward to develop applications which make use of the package. The overhead for using the package is also minimal, and exists mainly in object definition and instantiation. Currently, the object/application developer only has to add the extends PersistentObject clause in class definition, declare specific class-dependent variables, overload abstract methods in the PersistentObject declaration and perform a netObjSetup call during object construction, in order to take advantage of the PersistentObject functionality.

The package is also flexible in handling policies such as caching and security. While the infrastructure is present for implementing these policies (such as a isDirty field and a dbId field in the objects), no policy is enforced in the current implementation. Application developers are free to use the structures provided to implement the policies that suit their application-specific needs (e.g. dirty bit propagation through the object's parent hierarchy was the chosen implementation for saving and loading OctObjects in Java-Based Oct).

Due to the object-oriented nature of Java, it is very easy to extend the functionalities of the base package. For instance, developers are free to create additional objects that inherit from PersistentObject or to simply override existing methods. The classes are organized in a functionally-modular way so that any component can be changed if certain parameters need to be altered, such as the client-server communication protocol (PO_CommandConstructor.java) or the network connection (PO_NetClient.java) mechanism.

Object-Oriented Directory Structure

In order to facilitate a directory structure in the OODB server, a special class of PersistentObject (DirObject) was implemented. In addition to the PersistentObject functionality, DirObjects also provide special connection-related commands such as detach and getContext. A DB Browser graphical user interface (DBDialog) has been implemented in Java to allow users of the system to peruse the directory structure.

Object-Oriented Database Back-End Server

The back-end is currently supported by the Objectivity OODBMS system. However, there is no underlying restriction on back-end implementations, and it would be quite feasible to build similar support on top of other platforms such as traditional file system servers, hierachical databases, and relational databases.

Currently, the OODBMS supports two separate schema; one for the HTTP protocol, and one for our object protocol, which is described below. At this point, the two are still slightly separate due to different development paths, but with the creation of the object-oriented directory structure mentioned above, a few simple additions to the server and protocol will make it possible for clients to access the same data using either protocol. (Previously, the system was geared towards OCT, with cells provided as entry points and naming structure. This updated version focuses on generalizing the naming structure, which makes it possible for HTTP access to be supported by both the protocol and the generic object system.)
(*HTTP is a fairly well-known protocol, and is not discussed here. For more information, please see the references.)

The data server accepts generic network socket connections, and thus can accommodate any client language that can open a socket. This includes Java, C/C++, PERL, etc, and allows the server to support both next-generation and legacy tools. Upon message reception, the server goes through a dispatch loop in which actions are taken based upon the message. Functionality of the server includes saving objects, loading objects both by id and by query, connecting objects, and traversing object connections.

Client-Server Communication Protocol

The communication protocol between the client and server follows a modified version of the HTTP protocols. The string "\n\r" is used to delimit fields, with a double occurrence indicating the end of the message. The protocol is fairly efficient in the sense that minimal overhead is sent along with the message. (To see the actual protocol, click the above link).

Although fairly short and straight-forward, this protocol can be used to create and link existing objects in a completely arbitrary manner. The persistent objects used in the front-end clients are mirrored onto the server over the network using a translation mechanism that the protocol enables. Although a "root directory" into the object-oriented filesystem is provided, no structure is imposed onto the application programmer at this point, and there are many alternate ways in which objects can be ordered and stored. Although additional structure will be added in the future to support additional users and applications, our intent is to leave as much flexibility and power as possible in the hands of the application developer.

Proxy Server

The current Netscape Java security model imposes the restriction that applets are only allowed to open socket connections to the machine from which they were downloaded. This restriction is intended to prevent applets from being run inside a firewall from making connections behind the firewall, potentially causing damage or sending confidential information from behind the firewall out to the applet writer. While this is a reasonable security policy, it severely restricts the server-client possibilities of Java applets.

One result of this security model is that due to the platform/licensing dependencies of some of the server software (such as the Objectivity OODBMS and the Synopsys Design Compiler, both of which are licensed and distributed to run on our Sparc 20 only), the heaviest loaded server must carry the additional weight of being a full Netscape http server! (Although the astute reader will note that this load will become a problem anyway in the future, since it is envisioned that the OODBMS will eventually encompass most of the functionality of an http server as well. A potential fix for this might be the use of a distributed database). More importantly, it means that it is not feasible for a single socket server to be accessible to applets loaded from different sources.

Our short-term solution for this problem was to create a "proxy server" to be run on the same machine as the http server. This initial proxy server is very simple - it only knows enough about the communication protocols to detect the message termination string ("\n\r\n\r"). Messages on a given port are automatically forwarded to the same port on another machine. As a result, applets downloaded from a variety of http servers running proxies can now all access the same OODBMS server.

There are a number of beneficial and interesting functionalities that the proxy server could handle if it was made more sophisticated and implemented to take advantage of detailed knowledge of the protocols. These possibilities include:

We intend to continue to explore the possibilities of intelligent proxies in network design environment.

Results

The PersistentObject package has undergone two revisions and has been used as the basic object structures for a Java-Based Octtools system and WebProj (A web-based project management application). Due to Netscape security constraints, the back-end aspect (mainly load and save) of the Java-Based Oct system was not thoroughly utilized. Enabled by proxy capability, a directory structure and extended object management features, WebProj has been able to fully demonstrate the functionality of both the client and server.

Currently, however, only a single-user environment has been available for testing of the complete system architecture, which has limited our ability to make conclusive judgments on system feasibility. Similarly, although only small network communication lag time has been encountered between clients, servers, and proxies, most of the existing tests have occurred on a protected local area network, and thus are not representative of general Internet performance. However, to our surprise, Java applet performance, which was expected to be a serious impediment, has been quite reasonable (perhaps due to the inherent brilliance of our programmer-guru, Francis Chan). This is very promising, especially in conjunction with the anticipated performance improvements that future optimizations such as just-in-time compilers will offer. In the future, we intend to gain insight into usability issues by stress-testing the robustness and scalability of the system in multi-user environments and in wide-area network collaboration with groups such as the NCSU CAD Benchmarking Laboratory.


Demonstrations


Figure 2 : WebProj Application Snapshot

Several applications which make use of the infrastructure have been implemented. We first created a general object infrastructure which could also be used to simulate a Java-based environment similar to that of the OctTools system for ee244 homework 1. Both the project description as well as many of the working applications created by the students are available on the WWW.

Implementing the Oct system in Java has given us much insight into ways of handling and representing generic object structures. Throughout this effort, we continued to monitor the issues and design approaches present in similar Java-based client applications. These outside influences helped us to extend the functionality of both the client and server environment.

Most of the features of our system can be demonstrated by a Java-Based Project Management application, WebProj, that Francis has been working on. The current functionality of the application is described below along with a table that pinpoints the demonstrated infrastructural capabilities.

Application Walk-through

Users can access the WebProj system either as a Java application or as an applet running through a Java-enabled network browser. Registered users log on to the application environment via a Profile window. After filling in the fields of the Profile window, a password window prompts the user for a password. The password is compared with the corresponding Member object in the back-end data server. After the verification process, the profile is saved and a e-mail is sent to the administrator indicating that a login has occurred. The main window of the application then appears, allowing the user to create new projects, updating existing projects, etc.. Through a database dialog window, the user can access desired additional information (i.e. members, projects, etc.) as allowed by his/her permissions.

(NOTE: Due to licensing, server load, and continued development, the OODBMS server will not be running constantly, and as a direct result it may not be possible for outside users to access its functionality with WebProj. However, we would be happy to arrange a demonstration upon request - please feel free to contact us!).

Activity

Infrastructure Capability Displayed

Loading from WWW-CAD.eecs.berkeley.edu
(web server theseus)
with data server at
yoyodyne.eecs.berkeley.edu
Proxy Server
Password Verification Loading Objects
Query
Saving Profile (during log in) Saving Object
E-mail Notification (during log in) Messaging through e-mail
Opening Project Database Browser
Directory Structure Traversal
Attachment Traversal

A more detailed description of the application can be found here.


Conclusions and Future Work

In conclusion, this project has built infrastructure geared towards an end goal of creating integrated network design environment for CAD. In the process, many additional issues worth researching were identified. Potential areas of interest include: Our ongoing research in the area of network design environments has proven to be very fruitful and encouraging, and we firmly believe that the realization of our vision is very possible in the next several years... The future looks very bright for the next generation of CAD!

Related Work and References


Last modified: Tue Dec 10 18:41:40 PST