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. All of these reference documents are available electronically.

  1. 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.
  2. The Ada Rationale is a document that explains why Ada is designed the way it is.
  3. Ada Quality and Style: Guidelines for Professional Programmers (AQ&S), developed by the Software Productivity Consortium (SPC). This document provides a set of specific guidelines to help developers produce better Ada programs. Basically it's the distilled experience of other Ada users; most Ada developers use it. (you can also access the AQ&S through the AdaIC).
  4. 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 and Papers

  1. [Booch 1987] Booch, Grady. 1987. Software Components with Ada: Structures, Tools, and Subsystems. Menlo Park, California: Benjamin/Cummings Publishing Company, Inc. QA76.73.A35B65 1987. ISBN 0-8053-0610-2. 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.
  2. [Booch 1991] Booch, Grady. 1991. Object Oriented Design With Applications. Redwood City, California: Benjamin/Cummings Publishing Company, Inc. ISBN 0-8053-0091-0. A discussion of how to design programs using an object-oriented approach.
  3. [Elam 1992] Elam and Lawlis. March 1992. ``Ada Whips Assembly''. Crosstalk. Software Technology Support Center. Hill Air Force Base, Utah: Defense Printing Service. Originally printed in Tri-Ada '92 as C Outperforms Assembler. A documented case where an Ada compiler and a novice Ada programmer did better than experienced assembly language programmers. This paper is available on-line.
  4. [Hook 1995] Hook, Audrey A. Bill Brykczynski, Catherine W. McDonald, Sarah H. Nash, and Christine Youngblut. January 1995. A Survey of Computer Programming Languages Currently Used in the Department of Defense. Alexandria, VA: Institute for Defense Analyses. IDA Paper P-3054. This survey found that in weapons systems modernization, Ada is the most commonly used language in the U.S. Department of Defense. This paper is available electronically through the Ada Information Clearinghouse.
  5. [Syiek 1995] Syiek, David. 1995. "C vs. Ada: Arguing Performance Religion", ACM Ada Letters, Nov/Dec 1995, pp. 67-69. This paper demonstrates that Ada and C programs run at about the same speed using compilers of approximately equal maturity, with Ada having a slight performance edge because the Ada compiler has more information to work with.
  6. [Taft 1996] Taft, Tucker. 1996. "Programming the Internet in Ada 95". Reliable Software Technologies - Ada-Europe '96. Lecture Notes in Computer Science Volume 1088. Alfred Strohmeier, Volume Editor. Proceedings of the 1996 Ada-Europe International Conference on Reliable Software Technologies, Montreux, Switzerland, June 10-14, 1996. Berlin, Germany: Springer-Verlag. ISBN 3-540-61317-X. pp. 1-16. This paper is available electronically. You might also see related information available at Intermetric's section on Ada and Java.
  7. [Wheeler 1992] Wheeler, David A. August 1992. Analysis and Guidelines for Reusable Ada Software. Alexandria, VA: Institute for Defense Analyses. IDA Paper P-2765.

Performance Improvement

The following are classics on developing efficient programs by Jon Bentley:

  1. [Bentley 1982] Bentley, Jon Louis. 1982. 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.
  2. [Bentley 1986] Bentley, Jon. 1986. Programming Pearls. Reading, Massachusetts: Addison-Wesley Publishing Company. ISBN 0-201-10331-1. 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.

  1. [Leveson 1995] Leveson, Nancy. 1995. Safeware. Addison-Wesley Publishing Company. ISBN 0-201-11972-2. This is a book on software safety. An outline of this book is available from Addison-Wesley.
  2. [Leveson 1986] 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.
  3. [Leveson 1991a] Leveson, Nancy G. "Software Safety in Embedded Computer Systems." Communications of the ACM. Vol. 34, No. 2, February 1991. pp. 34-46. This is a brief discussion of software safety by one of the primary experts in the field, Nancy Leveson.
  4. [Place 1993] Place, P. and K. Kang. Safety-Critical Software: Status Report and Annotated Bibliography. CMU/SEI-93-TR-5. Pittsburgh, PA: Software Engineering Institute (SEI). [Place 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)

  1. [Leveson 1983] 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.
  2. [Leveson 1991b] 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 Ada program.

Miscellaneous Documents on Software Safety

  1. [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 safety-critical systems. Version B is obsolete but provides much more specific (and useful) advice than the later versions.
  2. [Gowen 1994] 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.
  3. [Pyle 1991] Pyle, Ian C. 1991. Developing Safety Systems: A Guide Using Ada. Hemel Hempsted, England: Prentice Hall International (UL) Ltd. ISBN 0-13-204298-3. This book discusses issues related to developing safe systems using Ada. 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.
  4. [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 Laboratory (UL). 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.

Formal Methods

  1. [Gries 1981] Gries, David. The Science of Programming. 1981. 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.
  2. [Diller 1990] Diller, Antoni. Z: An Introduction to Formal Methods. New York: John Wiley and Sons, Incorporated. ISBN 0-471-92489-X.
  3. [Liu 1995] Liu, Shaoying, Victoria Stavridou, and Bruno Dutertre. January 1995. "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.


  1. [Wheeler 1996] Wheeler, David, Bill Brykczynski, Reg Meeson. 1996. Software Inspection: An Industry Best Practice. Los Alamitos, CA: IEEE Computer Society Press. IEEE Order Number BP07340. Library of Congress Number 95-41054. ISBN 0-8186-7340-0. This book describes the software inspection process and includes a number of papers on the topic, including results from many different users of the process. More information about this book is available electronically.
  2. [Fagan 1986] Fagan, Michael E. July 1986. "Advances in Software Inspections". IEEE Transactions on Software Engineering, Vol. 12, Number 7, July 1986, pp. 744-751. Reprinted in Tutorial: Software Project Management, Richard H. Thayer, 1990, pp. 416-423, IEEE Computer Society Press, Los Alamitos, California.


  1. [Goldberg 1991] Goldberg, David. March 1991. "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.
  2. [Kernighan 1978] Kernighan, Brian W. and P. J. Plauger. 1978. The Elements of Programming Style. New York: McGraw-Hill Book Company. ISBN 0-07-034207. An ancient book that still contains lots of useful general software development principles.

HOME     You can return to the Lovelace home page.

You can also:
This page was last modified on 9-May-1996.

David A. Wheeler (