CISTO
NASA GSFC Sciences and Exploration Directorate - Software Systems Support Office pFUnit

+ Home > pFUnit

pFUnit

pFUnit

pFUnit is a Fortran testing framework utility developed in 2005 by Tom Clune and Brice Womack (Northrup Grumman TASC). pFUnit offers a convenient, lightweight mechanism for Fortran developers to create and run software tests that specify the desired behavior for a given piece of code. pFUnit is now available to the general public under a NASA Open Source Agreement.

The costs associated with development, maintenance, documentation, training, and verification of software systems represents a significant fraction of NASA's budget for scientific modeling. The direct and indirect value of techniques and tools for significantly reducing such costs and/or improving productivity of NASA software developers is therefore considerable. One approach to cost reduction that has gained widespread acceptance in the general (i.e., business and industry) software development community is that of test driven development (TDD). However, this approach requires language-specific tools known as unit-testing frameworks to be reasonably effective. Adoption of these techniques in the scientific development community has been slowed in large part by the difficulty of implementing a flexible testing framework for Fortran due to its limited ability to support certain modes of abstraction.

In addition to the general capabilities offered by frameworks for other languages, pFUnit provides developers the means to express tests for parallel applications on state-of-the-art high-end computing platforms. This support of parallelism is critical for NASA's modeling community. Other features of relevance to the high-performance community include an extensive set of assertions for multi-dimensional floating-point data.

General benefits from using pFUnit include:
* Improvement in long-term productivity
* Reduced development and maintenance costs
* Confidence in the behavior of the code at all times
* Ability to rapidly detect and isolate defects as they are introduced
* Enhanced ability to accurately schedule delivery of new features
* Reduction in external documentation requirements and spin-up time for new developers, because tests provide useful examples of how interfaces are meant to be used
* Functional requirements of the system are captured by the unit tests
* Improved overall design as an indirect benefit to designing code that can be tested

pFUnit is relatively portable and currently supported for the following environments:
* Linux with gfortran, Intel, PGI Fortran compilers
* Apple OS X with gfortran, Intel Fortran compilers

+ Open Source Release