Arcle Rambutan - Architecture

Project Foundry

Sign Guestbook
View Guestbook

Requirements Management Tool for Busy System Analysts
The first and only XML-based requirements management software for handheld devices sm.

Architecture Overview

Rambutan consists of two application software: a desktop application and a handheld application. The desktop application is programmed to the Java 2 Standard Edition API (J2SE) while the handheld application is programmed to the SuperWaba API. Both applications are coded in the Java programming language. Using a common implementation language allows the two applications to share some common code – these cross-platform components contains simple algorithms and interface classes that do not rely on either API to function.

Both applications are roughly divided into two layers: a user interface layer, and a data model layer. Currently, the desktop application uses the Swing GUI library available with J2SE (note that Swing is not the only user interface option available in the platform). Since a handheld device is more limited, the handheld application has little option besides using SuperWaba's GUI library.

The two applications shares the RQML Abstraction component. This component is a set of interfaces that defines the RQML data model. In turn, these interfaces are implemented by both the Desktop Model and Handheld Model components. Access to the RQML implementations in both applications utilizes this abstraction as much as possible. Therefore consistency of the data models between the handheld and desktop is enforced – changes to these interfaces will ripple to both implementations in the handheld and desktop. Likewise, a method signature change in the implementing model of one application will require the change to be mirrored in another application. 

Handheld Application

The handheld application actually has three major layers: the user interface (GUI) layer, the data model layer, and the RQML implementation layer. Being a shared component, classes in the RQML Abstraction layer is also included in the handheld application. All layers in the handheld application rely on the SuperWaba API classes.

The GUI layer implements the user interface. Classes in this layer mostly extend from SuperWaba's Window class. Access to the handheld's data by the GUI is done solely through the Handheld Model or the RQML Abstraction layers.

Classes in the Handheld Model layer provide services to manage RQML elements to the GUI. Most operations done by the model rely only to the method signatures defined by the RQML Abstraction component to access the RQML elements. One major exception to this includes object instantiations of the RQML elements (in which the model acts as an abstract factory to its clients).

Since the classes in the RQML Abstraction are all abstract interfaces, they must be implemented to be useful. Straightforwardly called the RQML Implementation layer, these classes implement those interfaces for use in the handheld application. Shielded from the GUI by the Handheld Model and RQML Abstraction layers, internal implementation changes to this layer will not affect the GUI. 

Desktop Application

Similar to its handheld counterpart, the desktop application also consists of three major layers: the user interface, model, and RQML implementation. The RQML Abstraction layer contains the same set of classes as in the handheld application. All layers in the desktop application rely on the J2SE API.

The user interface of the desktop application uses the Swing GUI library available in J2SE. Although its functions are similar to the handheld, the desktop GUI takes advantage of the larger screen and richer user interface capabilities typically available in a desktop computer. Access to the data is also done solely through the model and the RQML Abstraction classes. 

Since a desktop computer offers greater processing and richer user interface capabilities, the desktop model has more features to take advantage of this fact. Therefore, the desktop data model has different methods signatures and implementations from the handheld’s model. Like the handheld, it also relies on the RQML Abstraction interfaces to manipulate the RQML elements in the model and acts as a factory class to instantiate their implementations.

Implementation of the RQML Abstraction layer in the desktop application is different from the handheld. Instead of storing RQML data itself, these classes rely on XML DOM objects to represent the data in-memory. Therefore, classes in this layer are collectively called Element Adapters. The DOM implementation library used is Apache Xerces, an open-source XML parser. Since these adapters communicate with the parser solely through the DOM interfaces provided, another DOM-compliant XML parser besides Xerces may alternatively be used.

Bridge Classes

The desktop application architecture pictured previously depicts only a part of the architecture. A Bridge component is purposely hidden from the picture to improve its legibility. This component is used by the desktop application to access the handheld's data. It handles the conversion between the desktop and handheld models. 

When the user opens a handheld document or saves a handheld document using the desktop application, its user interface calls the Bridge Facade to read the handheld data and loads the data into the in-memory desktop model and vice-versa. This facade in turn delegates the request to the appropriate Import Facade or Export Facade components. The two facades then handle the import or export, respectively.

The Import Facade uses a set of First-Class Importer classes to load data from the handheld model into the desktop. Each of these importer classes imports a certain type of first-class RQML element.

Analogically, the Export Facade uses a set of First-Class Exporter classes to save data from the desktop into the handheld model. Similar to the importers, there are one-to one mappings between the element exporters and an RQML First-Class element type.

Both of the import and export facades relies on a Copy Facade to transfer data between RQML elements. In turn, the facade uses a set of Element Copier classes to copy the data. There are one-to-one mappings between a copier class and an RQML element (both first and second class elements). These copiers only depend on the RQML Abstraction interfaces – they have no knowledge of the underlying implementations of these interfaces. Thus, the copiers may be used to implement RQML importers and exporters of other data models in the future.

The import and export facades interact directly with the both handheld and desktop data models. Acting as a client to both models, they fetch and store RQML data between the two model instances.

Program code for the handheld model is run in the desktop so that the handheld-formatted data may be read and transferred into the desktop model. Although the handheld model is programmed to the SuperWaba API, this is possible due to the simulation layer (SuperWaba to Java bridge) provided by SuperWaba that allows its programs to run on Java 1.1. Thus, there is no need to duplicate code from the handheld application to read the handheld-formatted data. 

Copyright (C) Arcle Technologies, 2002, 2003 - Send comments to