Open architecture is a relatively novel approach to software reuse in which independent third-party developers may introduce new functional modules, replace or remove existing modules, or alter module bindings or interrelationships.  This approach is an improvement over other customization techniques, which may permit third parties to extend applications but restrict replacement or removal of functional modules, either explicitly or because of tight coupling among the existing modules. An open architecture development model insures that the base platform is capable of supporting third-party extensions, often at multiple levels of abstraction, and that changes in the base platform can be made without breaking the community-developed plug-ins. 

The Eclipse Rich Client Platform (RCP) is one such open architecture effort that supports thousands of community-contributed plug-ins, making it a popular development platform for many diverse applications [11], including the Science Activity Planner developed at JPL for the Mars rovers. Eclipse is an implementation of the OSGi (formerly Open Services Gateway initiative) framework for defining, composing, and executing components and plug-ins.  The OSGi Alliance is a worldwide consortium of technology innovators that advances a proven and mature process to assure interoperability of applications and services based on its component integration platform. The Eclipse RCP can be used to build a variety of user applications that support a high-quality end user experience for a particular domain.  The UIs support common desktop motifs such as drag and drop, system clipboard, navigation and customization.
GLIDER, based on the Eclipse RCP, is designed and built as an open, extensible data environment that can be customized easily via “plug-ins” to a build rich client tool.

A.    What is an RCP?

A rich client platform is typically used as a building block to create a client for a backend service such that the client delivers a rich user experience.  It is platform independent, so that clients based on the RCP can run with little or no modifications on multiple platforms and devices.  An RCP has a robust component model that is extensible, allowing it to be easily customized.  It also typically has an integrated update mechanism.

B.    Why base GLIDER on Eclipse RCP?

The Eclipse RCP was considered as the basis for building GLIDER because of its many advantages, particularly reusability. The notion of reusability is not just limited to class reusability, but full component or module reuse. Such reuse typically is not easy to achieve but Eclipse's architecture makes this much more possible than other platforms.  The Eclipse RCP also serves as a generic extensible scalable GUI client that makes possible extremely rapid development.  It provides a set of generic components that can be customized for specific applications.  These components manage the GUI layout including layouts, sizing and allowing users to configure layouts using perspectives. RCP promotes code reuse for commonly used features such as commands, menus and command handlers.  It allows client applications to be branded using a customized splash screen, introduction screens, icons and buttons.  Thus, the final product looks and feels distinctly unique.   Finally, the Eclipse RCP has a large user community that has already created a large suite of existing plug-ins.  This allows us to leverage existing plug-ins and build on existing third party functionality for GLIDER. 

There are also disadvantages of using the Eclipse RCP.  For starters, there is a step learning curve, and it may be hard to figure out and manage dependencies between plug-ins.  The GUI widgets in the Eclipse RCP are based on SWT and JFace, causing compatibility issues when reusing code with Swing components.  These issues had to be resolved during the GLIDER development.

C.    GLIDER Architecture
The GLIDER architecture is shown in Figure 1.  The Eclipse workbench, which allows plug-ins for user interface, has been extended via three custom plug-ins.  The Image View plug-in is based on IVICS and provides the user the capability to visualize the satellite imagery in its native swath view.  The Earth View plug-in uses the World Wind SDK and is used to display the satellite image on a 3D globe.  The Plots plug-in uses the JFree Charts java library to create custom plots for analysis.  These plots include scatter plots, histogram, spectral profile etc.

Figure 1.     GLIDER Architecture

All the ADaM modules are being added as plug-ins to the Eclipse platform.  These algorithms have been categorized into three groups based on their function and the data model on which they operate.  All the image processing plug-ins operate on a simple binary image format.   The ARFF data format, which holds the feature vector data, is used by all the pattern recognition plug-ins.  The utility plug-ins support both the image processing and the pattern recognition capabilities within GLIDER.  The key component within GLIDER is the set of data translation operations.  These operations, also added as plug-ins, provide the glue between the different visualization and analysis plug-ins.  These operations include modules to read and calibrate MODIS L1 data in HDF-EOS data format. 

Picture4.jpg53.64 KB