SSI Toolboxes: Software for Subsurface Sensing & Imaging


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 Hyperspectral Toolbox -  developed at UPRM
The Multi-View Tomography Toolbox - developed at NU
The Rensselaer Generalized Registration Library (RGRL) - developed at RPI
Generalized Dual Bootstrap-ICP - developed at RPI
The Integrated Medium for Subsurface Sensing and Imaging (IM-SSI) - under development at NU

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 ensure adherence to solid software development practices, the CenSSIS Software Engineering Team has adopted practices consistent with the Software Engineering Institute's Capability Maturity Model, Level 3.

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.