U.S. Department of Transportation
Federal Highway Administration
1200 New Jersey Avenue, SE
Washington, DC 20590

Skip to content U.S. Department of Transportation/Federal Highway AdministrationU.S. Department of Transportation/Federal Highway Administration

Federal Highway Administration Research and Technology
Coordinating, Developing, and Delivering Highway Transportation Innovations

This report is an archived publication and may contain dated technical, contact, and link information
Publication Number: FHWA-RD-04-080
Date: September 2004

Software Reliability: A Federal Highway Administration Preliminary Handbook

PDF Version (697 KB)

PDF files can be viewed with the Acrobat® Reader®

Chapter 8: Tools for Software Reliability

This chapter contains information and resources for software development tools. Some of these tools are directly useful to FHWA. Others (currently applied to non-highway topics) may potentially improve the highway software development process.


The following organizations examine software correctness issues and provide useful information on their Web sites:

  • The National Institute of Standards and Technology (NIST) Software Quality Group (http://hissa.nist.gov). The NIST Software Quality Group maintains several useful software engineering knowledge bases, including the Dictionary of Algorithms, Data Structures, and Problems.

  • Software Engineering Body of Knowledge (SWEBOK). http://www.swebok.org/

  • Center for High Assurance Computer Systems, Naval Research Laboratory (NRL). http://chacs.nrl.navy.mil

  • The Center for High Assurance Computer Systems. The center is a branch within the Information Technology Division of the NRL (http://chacs.nrl.navy.mil).

  • The Software Engineering Institute (SEI). SEI is a federally funded research and development center sponsored by the U.S. Department of Defense (DoD) (http://www.sei.cmu.edu/).
    • To a large degree, SEI has focused on the process of developing software. Featured are the Capability Maturity Models®:
      • Capability Maturity Model for Software (SW-CMM).
      • People Capability Maturity Model (P-CMM).
      • Software Acquisition Capability Maturity Model (SA-CMM).
      • Systems Engineering Capability Maturity Model (SE-CMM).
      • Integrated Product Development Capability Maturity Model (IPD-CMM).

    • Additional SEI processes for software development include the Personal Software Process and the Team Software Process (see http://www.sei.cmu.edu/tsp).

    • SEI has detailed good engineering practices throughout the software life cycle (see http://www.sei.cmu.edu/engineering/engineering.html). Of particular interest:

    • Because SEI's methods were developed for DoD, some are not practical for the lower budget, more decentralized environments of highway software development


The Software Engineering Laboratory of the Department of Computing, Imperial College of Science, Technology and Medicine, University of London, maintains a list of software development tools (http://www-dse.doc.ic.ac.uk:80/sel/tools_env.html), with descriptions and links for each.

The following tools may be useful in the software development process:

  • DOORS (http://www.telelogic.com/corp/products/doors/doors/)is a GUI-based requirements engineering environment that helps manage requirements throughout development life cycles. Requirements are handled within DOORS as discrete objects. Each requirement can be tagged with an unlimited number of attributes (text, integer, Boolean, real, date, enumerations, etc.) to allow easy selection of subsets of requirements for specialist tasks. DOORS appears to be useful for keeping the requirements for large projects organized and tracking their implementation through the software life cycle.

  • Rational Rose (http://www.rational.com) is a collection of Computer-Aided Software Engineering (CASE) tools for object-oriented design, including a tool called visual modeling, which produces diagrams that describe the content of classes in object oriented designs, and the relationship between the classes.

  • Table Tool System (TTS) (http://www.crl.mcmaster.ca/SERG/TTS/ttsHome.html) is a set of tools for creating, verifying, and testing tabular specifications, i.e., tables of mathematical expressions representing software specifications.

In addition to the tools listed above, the Imperial College list contains examples of:

  • Tools that exclusively produce drawings to describe systems.

  • Tools based on formal languages such as Z, in which writing the formal specifications appears harder than coding the system itself.

  • Tools based on finite-state models, where translating specifications into the finite-state model appears error-prone.

Previous | Table of Contents | Next

United States Department of Transportation - Federal Highway Administration