| Overview | Design Advantages |
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.
Back to Top
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.
Back to Top
website last modified May 16, 2016