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.

5.1 WFO-Advanced Subsystems

The following are the major subsystems of WFO-Advanced discussed in this document.

5.2 Interprocess Communications

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.

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.

5.3 Foundation Classes

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.

5.3.1 Container 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.

5.3.2 Common Data Classes

5.3.3 Event Logging

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.

5.4 Off-the-shelf Software Packages

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.)

5.4.1 OI

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.

5.4.2 Tcl/Tk

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.

5.4.3 DMQ

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.

5.4.4 Informix

Informix is a commercial relational database product, used in WFO-Advanced for the text and hydrology databases.

5.4.5 NetCDF

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.