Flow
of data and information through an example NFT graphic interface.
Software programs in the NOAA Fisheries Toolbox combine a
sophisticated graphical interface with an independent calculation
engine. The calculation engine forms the core of each program, applying
statistical modeling data manipulation functions and outputting the
results. The graphical interface's primary job is to make data entry
and selection of modeling criteria easier for the user and to present model results in easily accessible charts and tables.
The VPA model is a good example of how this design works. VPA's calculation engine, an age
structured estimation model, was written entirely in FORTRAN and
compiled into a binary executable file format. The graphical interface was
developed in Visual Basic with some C language utilities and also
compiled into a separate executable program. Communication
between the calculation engine and
the graphical interface is accomplished through ASCII text
input and output files.
To use the VPA model you would run VPA's graphic interface.
You can add new data by copying data from a spreadsheet and
pasting directly into the graphic interface's grids and text input
boxes. You can select modeling
options from drop down menus, check boxes and buttons. When you save
the data VPA does some basic
validity checking to make sure all necessary inputs the calculation
engine needs are specified, and then writes the ASCII text file that
the calculation engine will read.
If you have a VPA scenario already constructed, you can have
the graphic interface load the data from the existing ASCII text files
and edit the data as needed.
When you want to run the estimation model, the VPA graphic
interface launches the calculation engine as an independent process. The calculation engine, in
turn, reads in the saved ASCII text files, executes the
necessary mathematical functions, and writes the results to another set
of ASCII text files for storage. The graphic interface reads in the
output files the calculation just produced and displays the modeling
results in tables and plots.
Since
model results are stored in files after the computations are completed
you don't have to re-run the model each time if you want to view the
model results at a later time. If so desired, each scenario you construct can be saved for
archiving purposes by keeping the ASCII input and output files.
Plots in the graphic interface can be easily customized and
can also be copied to your computer individually or in batch mode.
Tabular output data can also be copied to the clipboard and pasted into
other files for further analysis outside of the program.
Having the calculation engine separate from the graphic
interface has a number of advantages:
It creates a robust and expandable
framework. The calculation module can be developed
independent of the graphical interface, and the development can be done
in different offices. This was the case with ASPIC,
which was a completely developed application to which a
graphical interface was later applied. Another example is
ASAP, where the
calculation engine was developed with the software package AD Model
Builder and the graphical interface was written in Visual
Basic independently
of the calculation engine.
It facilitates testing and debugging since calculation
issues can be kept separate from graphical
issues.
Using this approach assures that there is a verifiable
path from the
data entered by the user via the graphical interface to the data
utilized by the calculation engine.
Using this approach helps to ensure accurate
computation and
appropriate error detection. Wherever possible, professionally
programmed, time tested
software routines are used. Many applications use International
Mathematics and Statistics Library (IMSL) routines to perform numerical
and statistical
calculations.
Standardized routines from the IMSL library are used where appropriate
especially for random number generation. The software package
AD Model
Builder
is used for many of the models in the Toolbox.