Table of Contents
Previous Chapter
CHAPTER 5 Software Overview
At the highest level, the WFO-Advanced system can be decomposed into a number of major software subsystems: Data Acquisition, Data Management, Workstation Display, and Text. Each of these subsystems is described in more detail in one or more chapters of this document. The intent of this chapter is to give the big-picture overview of the system, and also to describe some services available to each of these subsystems, such as interprocess communications and the foundation class library. Please note that this is a rather cursory overview.
The following are the major subsystems of WFO-Advanced discussed in this document.
- The Data Acquisition subsystem is responsible for receipt and storage of all meteorological data sets, including any communications interfaces or required decoding. Data Acquisition uses services provided by Data Management for storage and notification.
- Data Management is responsible for storage, retrieval, and maintenance of meteorological data sets, including purging and product notification. Data Management also provides access to static tables of system configuration and other information. Since data is the lifeblood of WFO-Advanced, all other subsystems make use of services provided by Data Management.
- The Workstation Display subsystem provides graphical display of meteorological data, including the user interface for data selection, examination, and manipulation. Workstation Display relies on Data Management for meteorological data access and notification, and static configuration tables. Major components of Workstation Display are the User Interface, the Display, and Depictables. Each of these has a separate chapter in this document.
- The Text subsystem provides for display, editing, and dissemination of textual meteorological products. In this document, text data acquisition and data management are considered part of the Text subsystem, as well.
The WFO-Advanced project has developed a software framework to handle interprocess communications (IPC). The currently implemented mechanism is based on TCP sockets, but the design will accommodate the addition of alternative communication mechanisms. IPC functionality depends upon inheriting from or using the following classes in the ipc source directory.
- ArgPkg: The ArgPkg class is the base class for a set of template classes that provides for marshalling of arguments into a sendable byte stream, and back.
- Connection: The Connection class represents the mechanism used to deliver a message from one place to another. Currently, SocketConnection inherits from Connection, and is the only implemented mechanism.
- Dispatcher: The Dispatcher isn't abstract, or generally overridden, but rather implements the dispatching of messages received by a particular process to the appropriate Receiver.
- IPC_Target: The IPC_Target represents the target process of a message.
- Message: This is the Message itself the data moving from one process to another. New kinds of messages are implemented by inheriting from Message.
- ParameterizedMessage: Messages that use the ArgPkg argument marshalling mechanism inherit from ParameterizedMessage, which in turn inherits from Message.
- Receiver: A Receiver represents a target within a particular process that should receive a particular type of message. When new modules need to receive new types of messages, a new class is created as a descendent of Receiver. The Dispatcher is responsible for routing a message to the appropriate Receiver.
Note: The original DMQ-based IPC software was replaced in the AWIPS Build 3 handoff system (WFO-A version fxa-3.0, completed 2/97) with a socket-based system. See the design document for more information.
A library of low-level utility classes has been assembled in our foundation directory, including a heavily-used set of container classes, and a number of common data classes.
WFO-Advanced makes heavy use of a set of container classes, implemented as template classes. The dictionary and sequence classes are the most used of these.
- The Dictionary Classes. These templates implement associative arrays parameterized by both key and value. Specialized variants exist to reduce template code bloat for combinations where the key or value or both are pointers.
- The Sequence Classes. These templates implement ordered sequences of arbitrary parameterized classes. A specialized variant exists to reduce template code bloat for sequences of pointers.
- AbsTime. This class, built on UNIX time concepts, implements the concept of a particular date and time. It provides an easier and less error-prone interface to use than the UNIX time library calls.
- TextString. This is a powerful and easy-to-use class for text string manipulation, much less error-prone than using C strings.
WFO-Advanced has a standard C++ interface, the LogStream class, for writing messages to log files. To the user, the log request looks just like a standard iostream write. Multiple message types are available, and the set of messages logged can be tailored at run time.
Both commercial off-the-shelf (COTS) and freely-available software packages are or have been used in WFO-Advanced. (Those in italics are no longer in use.)
OI (Object Interface) is a commercial C++ X11 user interface widget software library. The Build 3 user interface library module (uiLib) was built on top of OI. In late summer 1997, we completed converting the entire UI to Tcl/Tk. This eliminates the uiLib, as well.
Tcl/Tk (Tool Command Language/Tool Kit) is a freely-available scripting language (Tcl) and a User Interface tool kit (Tk). Tcl/Tk provides a very high-level user interface development language, and a powerful set of UI widgets, and supports rapid development of flexible user interfaces.
DMQ (DEC Message Queue) is a commercial message-based communications product. It is a descendent of PAMS, a DEC VMS messaging product used successfully in the DARE workstation project. While the product has a number of virtues, its proprietary black-box nature made it difficult at times to diagnose interprocess communications bottlenecks and other problems. During 1997, we rewrote our interprocess communication (IPC) routines to replace DMQ with TCP sockets. The IPC software is fully described in CHAPTER 5a.
Informix is a commercial relational database product, used in WFO-Advanced for the text and hydrology databases.
NetCDF is a freely available data storage and retrieval software interface and file structure. NetCDF provides portable, self-describing data files, particularly well-suited to uniform multi-dimensional data sets such as gridded data and satellite images. WFO-Advanced makes extensive use of netCDF for gridded data, satellite images, and some point data sets.
Table of Contents
Next Chapter
This document is maintained by Joe
Wakefield. Last updated 7 May 98.