Research

Toolboxes

What are CenSSIS Toolboxes?

CenSSIS toolboxes are collections of software utilities designed to
address classes of problems that exist within the subsurface sensing and
imaging research domain. Currently, four toolboxes are available or
under development within CenSSIS:

The Toolbox Development Process

A primary goal is to develop toolboxes that are consistent with the
CenSSIS motto "Diverse Problems, Similar Solutions". The design approach
is to construct general-purpose tools that are widely applicable within
a particular SSI subdomain, that can be extended to meet an individual's
specific needs, and that contain sufficient functionality so as to be
useful "out of the box".

To meet these goals, solid object-oriented design is critical. As
the development of the CenSSIS toolboxes has often been inspired by
existing software, it has been found that the prototype model of
software development is the most appropriate.

To date, the toolboxes have been or are being developed primarily
using C++, with MATLAB interfacing capabilities included in some
instances. C++ provides the capabilites needed for computationally
intensive algorithms. In addition, the object-oriented features of C++
are essential to future toolbox extensions. MATLAB provides a robust
visualization and interfacing environment in addition to a
straight-forward scientific programming environment.

Toolbox Development Resources

The Software Engineering Team recommends a number of tools to aid in
the software development process:

Software Development:

Although no specific integrated
development environment (IDE) is recommended over any other, the use of
an IDE can be helpful in the software development process. An IDE can
provide language- specific editing, compilation control, and debugging
capabilities. Examples of IDEs include Emacs, a free GNU tool,
and commercial products such as JBuilder and CodeWarrior. The use of a
compilation tool such as CMake is
encouraged. CMake is a cross-platform make utility, which helps with
code portability issues.

Version Control:

As with any large software project, the
ability to manage the code base is essential. The use of a tool such as CVS is strongly advised. For
development teams spread across several locations, an on-line repository
such as SourceForge is very
useful. Note that SourceForge repositories are open-source.

Documentation: Doxygen
and Doc++ are
widely used documentation systems for C, C++, and Java (as well as
several other languages). Both are capable of generating documentation
files in LaTeX and HTML formats. In addition, Doxygen can create
documentation in several other formats. Doxygen is the preferred tool
for CenSSIS.

Software Maintenance

The Dart System
is a graphical, client/server system for tracking software quality
issues. Dart is especially useful for distributed software development
projects and projects distributed across multiple development platforms.
Using Dart, individual developers submit test results to a centralized
server, which then produces a "dashboard": a graphical display
summarizing the current state of the project. In particular, the
dashboard will highlight how a current build of the software has
performed on specific tests. Dart is an open-source project under active
development, and there is not much in the way of supporting
documentation currently available. However, the installation
instructions are straight-forward.