4. Software engineering

FlowCast has been developed to provide a simple user interface to implement the previously defined forecasting and skill testing algorithms. Its development required decisions into many software engineering concepts including: software engineering tools; program structure; key program functionality; graphical user interface; program inputs; and program outputs and analyses. FlowCast’s implementation of these concepts will now be presented in turn.

4.1 Software engineering tools

FlowCast has been developed in C++ as a Win32 application with a multi-threaded object-oriented design structure under Microsoft Windows using Borland C++Builder and the Visual Class Library (www.codeweavers.com). XML (extensible Mark-up Language), and XSLT technologies (www.w3.org/xml) were chosen to develop the reporting and storage components of the software while prototyping was undertaken using XML Spy Suite software (www.altov.com). Several third party libraries including TeeChart (www.teemach.com) and VirtualTreeView (www.delphi-ges/VirtualTreeview) feature predominantly throughout FlowCast.


4.2 Program Structure

FlowCast has been designed to be highly modular focusing on the key elements of forms, managers, data, engines and analyses (Figure 5). This benefits of this includes:

  • Simplifying the process of future enhancement and modification;
  • Separation of user-interface and non-user-interface code;
  • Interchangeability of components, such as the forecasting and skill testing algorithms; and
  • Reuse of code from co-developed software.

The two key parts of the software are the main-form and the program-manager. The main-form is a central Graphical User Interface (GUI) component that serves as the entry point to the program. The program-manager is a non-GUI component created by the main-form to coordinate all program functionality and communication. It acts as an intermediary between the GUI and mathematical functionality and provides the program’s input/output operations. The central data entity is the ‘project’, which contains both input and output data. Task-oriented managers are located inside of the program-manager that deal with functionalities such as generating reports, spatial mapping, browsing data, and viewing forecast probabilities. Each manager is associated with one or more graphical analyses that display the outputs of these tasks. Calculation engines such as the forecast and skill testing engines are also located in the program manager so that they are central to all calling functions.

Figure 5: FlowCast program structure

Figure 5: FlowCast program structure

4.3 Program functionality

The program structure, interface design, and operational direction is focused around four principal functionalities:

  1. Organising the project: This allows maps, predictors, predictand and rule-sets to be imported into the project, with project information available as reports.
  2. Exploring the time-series data: Allows the linked time-series data to be inspected, compared and explored using a suite of graphical and textural viewers. It is intended that this functionality will be used when any new data is imported to check on the quality and characteristics of the data.
  3. Performing “station” analyses: Used to generate and analyse forecasts for individual stations. Provides many detailed analyses exploring temporal variability.
  4. Performing spatial analyses: Provides GIS based outputs for dozens of forecast and skill test variables. Provides limited temporal analysis capabilities.

Several ‘comparison modes’ are have been developed for the different program functionalities. For example, when analysing station data, FlowCast can be configured to simultaneously compare and display results of multiple analyses of predictands (default), predictors, rulesets, output types and seasons. These options give FlowCast much flexibility, but are potentially dangerous in the hands of inexperienced and untrained users, as results can easily be misinterpreted. Therefore, FlowCast has been developed with two ‘user-operational modes’; a basic mode with only the default comparisons accessible by the user and restricted spatial analysis functionality; and an extended mode that is password protected and permits all program functionality.