Software Engineering

Introduction
Object Oriented Programming
Real-Time Systems
Evolutionary Development

Object-Oriented Programming

In meeting our goals, object-oriented methodologies are employed in conformance with current standard software engineering practice. Object-oriented design has better support for building in modularity within applications than the early generation structured design paradigm. It has improved support for reuse which promotes faster software development and higher quality software. Finally, object oriented software tends to be more adaptable and scaleable.

The object-oriented design paradigm first attempts to identify objects in the problem domain. For example, one can think of a microburst as an object. The microburst object has attributes such as location, size, intensity and so forth. The novel idea of object-oriented design is to hide the underlying data representation of these attributes. One might then ask, if the internal data representation of the attributes is hidden how can the user of this object find out anything about the microburst? Object-oriented design solves this problem by having the microburst object provide functions to present information about the object. Thus, the microburst object would have a "display size" function, a "display location" function and a "display intensity" function. Why would one want to hide the internal data representation? The rationale behind this is that the data representation of an object is subject to change. Sensing devices become more accurate so the resolution of the data increases. Storage requirements thus change and so do data representations. The general attributes of the underlying objects, however, are less subject to change. In the case of a microburst, it will always have a location, a size and an intensity.

With regard to object-oriented languages, we primarily use C++ to build the underlying system components which are time-critical such as scientific algorithms, data ingest and numerical data processing components. Java is used when creating graphical applets available for web viewing. We also employ object-oriented scripting languages such as Python and Perl for text processing, building web pages, system administration, system monitoring and as glue languages to glue systems together. Our philosophy in employing these different programming languages is to utilize the best tool for the job at hand.

<< Previous     Next >>


Example of RAP's software engineering: Three-dimensional depiction of weather hazards viewed from an airplane cockpit on approach to Denver International Airport. Shown are microbursts (red circles), Level 5 and 6 thunderstorm reflectivity (red), turbulence (white grid), and a gust front (purple) on the far right. © NCAR

Updated 04/12/2001