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.
Resources
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
Tools
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