Here are various Ada-related documents sorted by general topic, with
some additional commentary by me.
These documents, or at least the topics, are
referenced in the Lovelace tutorial.
Key Ada Documents
The following are key Ada documents, and are simply referred to by
title in Lovelace.
of these reference documents are available electronically.
Ada Language Reference Manual (LRM).
The Ada LRM is like a legal contract between a user of the Ada language
and an Ada compiler developer; it defines the rights and responsibilities
of each party.
The Ada Rationale is a document that
explains why Ada is designed the way it is.
Ada Quality and Style: Guidelines for Professional Programmers
(AQ&S), developed by the Software Productivity Consortium (SPC).
provides a set of specific guidelines to help developers produce better
Basically it's the distilled experience of other Ada users;
most Ada developers use it.
The Annotated Ada Reference Manual (AARM)
is an extended version of the LRM.
The AARM is simply the LRM with a large number of additional notes
in each section on the ramifications and implications of every part.
The AARM is used mostly by compiler vendors.
Various Ada Books
Booch, Grady. 1987.
Software Components with Ada: Structures, Tools, and Subsystems.
Menlo Park, California: Benjamin/Cummings Publishing Company, Inc.
A set of reusable software components in Ada 83 as well as discussions
on how to create reusable components.
Includes Stacks, Lists, Strings, Queues, Deques, Rings, Maps, Sets, Bags,
Trees, Graphs, utilities, sorts, and searches.
Booch, Grady. 1991.
Object Oriented Design With Applications.
Redwood City, California: Benjamin/Cummings Publishing Company, Inc.
A discussion of how to design programs using an
The following are classics on developing efficient programs by
Bentley, Jon Louis.
Writing Efficient Programs.
Englewood Cliffs, New Jersey: Prentice-Hall, Inc.
ISBN 0-13-970251-2 or 0-13-970244-X.
This book presents Bentley's methodology and a set of rules for improving
program efficiency, and includes a large number of examples.
Reading, Massachusetts: Addison-Wesley Publishing Company.
These are selected essays from Bentley's column in the
Communications of the ACM. He discusses a wide variety of issues in
program improvement, include a large number on efficiency.
Software Safety Overview
The following are survey papers that give an overview of the
field of software safety. All are easy to read and discuss a wide
range of issues.
Leveson, Nancy. 1995. Safeware.
Addison-Wesley Publishing Company.
This is a book on software safety.
Leveson, Nancy G. June 1986. "Software Safety: Why, What,
and How." Computing Surveys. Vol. 18, No. 2, pp. 125-163.
This is a survey paper by Nancy Leveson, and
has the more technical depth of than the two papers below.
Leveson, Nancy G. "Software Safety in Embedded Computer Systems."
Communications of the ACM. Vol. 34, No. 2, February 1991.
This is a brief discussion of software safety
by one of the primary experts in the field, Nancy Leveson.
Place, P. and K. Kang. Safety-Critical Software: Status
Report and Annotated Bibliography. CMU/SEI-93-TR-5. Pittsburgh, PA:
Software Engineering Institute (SEI).
1993] is freely available through the Internet.
This SEI document
briefly describes hazard identification, hazard analysis,
and development techniques, discusses a number of safety-related
standards, and has an annotated bibliography that is useful for
learning more about specific issues.
Software Fault Tree Analysis (FTA)
Leveson, Nancy G. and Peter R. Harvey.
"Analyzing Software Safety."
IEEE Transactions on Software Engineering.
Vol SE-9, No. 5, September 1983, pp. 569- 579.
This paper provides a general discussion on
software FTA, and discusses its application to an existing
scientific-satellite control program.
The technique found a condition
in which the satellite could be accidentally destroyed.
Leveson, Nancy G., Stephen S. Cha, Timothy J. Shimeall.
"Safety Verification of Ada Programs Using Software Fault Trees."
IEEE Software. pp 48-59.
This paper shows specifically how to apply
software FTA to an Ada program, including a discussion of Ada specific
software constructs and a demonstration of its application to a simple
Miscellaneous Documents on Software Safety
[DoD 882] United States Department of Defense. 1984 (version B). System
Safety Program Requirements. MIL-STD-882.
Military standard MIL-STD-882 was developed by the US Department of
Defense (DoD) and requires that contractors establish and maintain a
formal system safety program.
This document is often referenced in U.S. DoD projects involving
Version B is obsolete but
provides much more specific (and useful) advice than the later
Gowen, Lon D. and James S. Collofello. Assessing
Traditional Verification's Effectiveness on Safety-Critical Systems.
Journal of Systems and Software. Vol. 26, No. 2, August 1994. NY, NY:
Elsevier Science Inc.
This paper shows, through an experiment, why relying on testing
alone is insufficient for safety-critical systems.
[Pyle 1991] Pyle, Ian C. 1991.
Developing Safety Systems: A Guide Using Ada.
Hemel Hempsted, England: Prentice Hall International (UL) Ltd.
This book discusses issues related to developing safe systems
It omits keys approaches and is UK-centric, and I find it very wordy.
However, its chapter 8 does discuss a number
of Ada-specific issues that are worth considering.
[UL 1994] Underwriters Laboratory. January 4, 1994. Standard for
Safety-Related Software. UL 1998. ISBN 1-55989-550-0.
This is a software safety standard from the Underwriters
This standard is especially interesting because of the different
tack UL has taken.
Most software safety related standards concentrate on the software
development process, but the UL has
developed a software standard that is very product-oriented.
This is probably
worth examining at least to find some potential practical measures for
reducing software risks, even if your product does
not need to conform to this standard.
The Science of Programming.
New York: Springer-Verlag, Incorporated.
ISBN 0-387-90641-X, 3-540-90641-X, 0-387-96480-0, 3-540-96480-0.
This is a basic introduction to specification and proof
of program correctness using basic predicate calculus and the
weakest precondition approach.
Z: An Introduction to Formal Methods.
New York: John Wiley and Sons, Incorporated.
Liu, Shaoying, Victoria Stavridou, and Bruno Dutertre.
"The Practice of Formal Methods in Safety-Critical Systems".
Journal of Systems and Software.
New York: Elsevier Science Incorporated.
This paper describes several industrial-scale applications
of formal methods in safety-critical systems, and discusses
benefits, limitations, and problems in their application.
"What Every Computer Scientist Should Know About Floating-Point Arithmetic".
ACM Computing Surveys.
Volume 23, Number 1. pp 5-48.
New York: ACM Press.
This paper presents a tutorial on the aspects of floating point
arithmetic that have a direct impact on designers of computer systems,
and includes a discussion of the IEEE floating point standards.
You can also:
This page was last modified on 3-May-1995.
David A. Wheeler (email@example.com)