General Navigation Buttons - Home | Search | Contact Us | Site Map | Whats New
products graphic
white space
products
Software Technology Roadmap
What's New
Background & Overview
Technology Descriptions
Defining Software Technology
Technology Categories
Template for Technology Descriptions
Taxonomies
Glossary & Indexes
Feedback & Participation
Software Engineering Information Repository (SEIR)
white space
About SEI|Mgt|Eng|Acq|Collaboration|Prod.& Services|Pubs
pixel
Rollover Popup Hints for Topic Navigation Buttons above
pixel
Ada 95


Status

Complete

Purpose and Origin

Ada is a general-purpose, internationally-standardized computer programming language developed by the U.S. Department of Defense (DoD) to help software designers and programmers develop large, reliable applications. The Ada language enhances portability, maintainability, flexibility, reliability, and provides interoperability by standardization [Lawlis 96].

The Ada 95 (1995) version [AdaLRM 95] supersedes the 1983 standard Ada 83. It corrects some shortcomings uncovered from nearly a decade of using Ada 83, and exploits developments in software technology that were not sufficiently mature at the time of Ada's original design. Specifically, Ada 95 provides extensive support for object-oriented programming (OOP) (see Object-Oriented Programming Languages), efficient real-time concurrent programming, improved facilities for programming in the large, and increased ability to interface with code written in other languages.

When distinguishing between the two versions of the language, the 1983 version is referred to as Ada 83, and the revised version is referred to as Ada or Ada 95.

Technical Detail

Ada 95 consists of a core language that must be supported by all validated compilers, and a set of specialized needs annexes that may or may not be implemented by a specific compiler. However, if a compiler supports a special needs annex, all features of the annex must be supported. The following is the set of annexes [AdaLRM 95]:

Required annexes (i.e., part of core language)
A. Predefined Language Environment
B. Interface to Other Languages
J. Obsolescent Features

Optional special needs annexes
C. Systems Programming
D. Real-time Programming
E. Distributed Systems
F. Information Systems
G. Numerics
H. Safety and Security

Annexes K - P are for informational purposes only and are not part of the standard.

As in Ada 83, Ada 95 compilers are validated against established written standards- all standard language features exist in every validated Ada compiler. To become validated, a compiler must comply with the Ada Compiler Validation Capability (ACVC) suite of tests [AdaIC 97a, 97b]. Because of language standardization and required compiler validation, Ada provides an extremely high degree of support for interoperability and portability.

Like Ada 83, the Ada 95 language is independent of any particular hardware or operating system; the interface to any given platform is defined in a specific "System" package. Ada 95 improves on the Ada 83 features that support portability, which include the ability to define numerical types using system-independent declarations and the ability to encapsulate dependencies.

By requiring specifications such as type specifications, by performing consistency checks across separately compiled units, and by providing exception handling facilities, Ada 95, like Ada 83, provides a high degree of reliability when compared to other programming languages.

The Ada language was developed explicitly to support software engineering- it supports principles of good software engineering and discourages poor practices by prohibiting them where possible. Features supporting code clarity and encapsulation (use of packages, use of generic packages and subprograms with generic parameters, and private and limited private types) provide support for maintenance and reusability. Ada 95 also provides full support for object-oriented programming, which allows for a high level of reusability:

 

  • encapsulation of objects and their operations
  • OOP inheritance- allowing new abstractions to be built from existing ones by inheriting their properties at either compile time or runtime
  • an explicit pointer approach to polymorphism- the programmer must decide to use pointers to represent objects [Brosgol 93]
  • dynamic binding

Ada 95 also provides special features (hierarchical libraries and partitions) to assist in the development of very large and distributed software components and systems.

Ada 95 improves on the flexibility provided by Ada 83 for interfacing with other programming languages by better standardizing the interface mechanism and providing an Interface to Other Languages Annex.

Ada 95 improves the specification of previous Ada features that explicitly support concurrency and real-time processing, such as tasking, type declarations, and low-level language features. A Real-Time Programming Annex has been added to better specify the language definition and model for concurrency. Ada 95 has paid careful attention to avoid runtime overhead for the new object-oriented programming (OOP) features and incurs runtime costs commensurate with the generality actually used. Ada 95 also provides the flexibility for the programmer to specify the desired storage reclamation technique that is desired for the application.

Usage Considerations

Ada 95 is essentially an upwardly-compatible extension to Ada 83 with improved support for embedded software systems, real-time systems, computationally-intensive systems, communication systems, and information systems [Lawlis 96]. In revising Ada 83 to Ada 95, incompatibilities were catalogued, tracked, and assessed by the standard revision committee [Taylor 95]. These incompatibilities have proven to be mostly of academic interest, and they have not been a problem in practice.1

Combined with at least static code analysis or formal proofs, Ada 95, like Ada 83, is particularly appropriate for use in safety-critical systems.

The Ada Joint Program Office (AJPO) supports Ada 95 by providing an Ada 95 Adoption Handbook [AJPO 95] and an Ada 95 Transition Planning Guide [AJPO 94], and helping form Ada 95 early adoption partnerships with DoD and commercial organizations. The Handbook helps managers understand and assess the transition from Ada 83 to Ada 95 and the Transition Guide is designed to assist managers in developing a transition plan tailored for individual projects [Patton 95]. Another valuable source for Ada 95 training is a multimedia CD-ROM titled Discovering Ada. This CD-ROM contains tutorial information, demo programs, and video clips [AdaIC 95].

Ada 95 is the standard programming language for new DoD systems; the use of any other language would require a waiver. Early DoD adoption partnerships who are working Ada 95 projects include the Marine Corps Tactical Systems Support Activity (MCTSSA), Naval Research and Development (NRAD), and the Joint Strike Fighter (JSF) aircraft program [AdaIC 96a].

The AJPO supported the creation of an Ada 95-to-Java J-code compiler. This means that Java programs can be created by using Ada. The compiler generates Java "class" files just as a Java language compiler does. Ada and Java components can even call each other [Wheeler 96]. This capability gives Ada, like Java, extensive portability across platforms and allows Internet programmers to take advantage of Ada 95 features unavailable in Java.

Maturity

On February 15, 1995, Ada 95 became the first internationally-standardized object-oriented programming language. As of April 1997, 51 validated compilers were available [Compilers 97]. The current validation suite (Version 2.1) provides the capability to validate the core language as well as the additional features in the annexes [AdalC 97b].

Results from early projects, such as the Joint Automated Message Editing Software (JAMES) and Airfields [AdaIC 96a], indicate that Ada 95 is upwardly-compatible with Ada 83 and that some Ada 95 compilers are mature and stable enough to use on fielded projects [Patton 95]. However, as of the spring of 1996, Ada 95 tool sets and development environments were, in general, still rather immature as compared to Ada 83 versions. As such, platform compatibility, bindings (i.e., database, user interface, network interface) availability, and tool support should be closely evaluated when considering Ada 95 compilers.

Costs and Limitations

Common perceptions and conventional wisdom regarding Ada 83 and Ada 95 have been shown to be incorrect or only partially correct. These perceptions include the following:

 

  • Ada is far too complex.
  • Ada is too difficult to teach, to learn, to use.
  • Ada is too expensive.
  • Using Ada causes inefficiencies.
  • Training in Ada is too expensive.
  • Ada is old-fashioned.
  • Ada is not object-oriented.
  • Ada does not fit into COTS software.

Mangold examines these perceptions in some detail [Mangold 96].

Alternatives

Other programming languages to consider are Ada 83, C, C++, FORTRAN, COBOL, Pascal, Assembly Language, LISP, Smalltalk, or Java.

Complementary Technologies

The Ada-95-to-Java J-code compiler (discussed in Usage Considerations) enables applications for the Internet to be developed in Ada 95.

Index Categories

This technology is classified under the following categories. Select a category for a list of related topics.

Name of technology

Ada 95

Application category

Programming Language (AP.1.4.2.1),
Compiler (AP.1.4.2.3)

Quality measures category

Reliability (QM.2.1.2),
Maintainability (QM.3.1),
Interoperability (QM.4.1),
Portability (QM.4.2),
Scalability (QM.4.3),
Reusability (QM.4.4)

Computing reviews category

Programming Languages (D.3)

References and Information Sources

[AdaLRM 95]

Ada95 Language Reference Manual, International Standard ISO/IEC 8652: 1995(E), Version 6.0 [online]. Available WWW
<URL:
http://www.adahome.com/rm95/> (1995).

[AdaIC 95]

AdaIC News Brief: November 3, 1995 [online]. Available WWW
<URL:
http://sw-eng.falls-church.va.us/AdaIC/news/weekly/1995/95-11-03.html >(1995).

[AdaIC 96a]

AdaIC NEWS [online]. Available WWW
<URL:
http://sw-eng.falls-church.va.us/AdaIC/news/> (1996).

[AdaIC 97a]

Validation and Evaluation Test Suites: The Ada compiler certification process [online]. Available WWW
<URL:
http://sw-eng.falls-church.va.us/AdaIC/testing/> (1997).

[AdaIC 97b]

Ada Compiler Validation Capability, Version 2.1 (ACVC 2.1) [online]. Available WWW
<URL:
http://sw-eng.falls-church.va.us/AdaIC/compilers/acvc/95acvc/acvc2_1> (1997).

[AJPO 94]

Ada Joint Program Office. Ada 9X Transition Planning Guide: A Living Document and Working Guide for PEOs and PMs Version 1.0. Falls Church, VA: Ada Joint Program Office, 1994.

[AJPO 95]

Ada Joint Program Office. Ada 95 Adoption Handbook: A Guide to Investigating Ada 95 Adoption Version 1.1. Falls Church, VA: Ada Joint Program Office, 1995.

[Brosgol 93]

Brosgol, Benjamin. "Object-Oriented Programming in Ada 9X." Object Magazine 2, 6 (March-April 1993): 64-65.

[Compilers 97]

Ada 95 Validated Compilers List [online]. Available WWW
<URL:
http://sw-eng.falls-church.va.us/cgi-bin/vcl/report95.pl> (1997).

[HBAP 96]

Ada Home: The Home of the Brave Ada Programmers (HBAP) [online]. Available WWW
<URL:
http://lglwww.epfl.ch:80/Ada/> (1996).

[Lawlis 96]

Lawlis, Patricia K. Guidelines for Choosing a Computer Language: Support for the Visionary Organization [online]. Available WWW
<URL:
http://sw-eng.falls-church.va.us/> (1996).

[Mangold 96]

Mangold, K. "Ada95-An Approach to Overcome the Software Crisis?" 4-10. Proceedings of Ada in Europe 1995. Frankfurt, Germany, October 2-6, 1995. Berlin, Germany: Springer-Verlag, 1996.

[Patton 95]

Patton II, I. Lee. "Early Experiences Adopting Ada 95," 426-34. Proceedings of TRI-Ada '95. Anaheim, CA, November 5-10, 1995. New York, NY: Association for Computing Machinery, 1995.

[Taylor 95]

Taylor, B. Ada Compatibility Guide Version 6.0 [online]. Available WWW
<URL:
http://sw-eng.falls-church.va.us/AdaIC/docs/compat-guide/compat-guide6-0.txt> (1995).

[Tokar 96]

Tokar, Joyce L. "Ada 95: The Language for the 90's and Beyond." Object Magazine 6, 4 (June 1996): 53-56.

[Wheeler 96]

Wheeler, David A. Java and Ada [online]. Available WWW
<URL:
http://www.adahome.com/Tutorials/Lovelace/java.htm> (1996).

Current Author/Maintainer

Capt Gary Haines, AFMC SSSG
Cory Vondrak, TRW, Redondo Beach, CA

External Reviewers

Charles (Chuck) Engle (former AJPO director)
John Goodenough, SEI

Modifications

2 October 97: updated URL for [Compilers 97].
20 June 97: updated URLs for [AdaIC 96a] and [AdaLRM 95].
14 April 97: updated number of validated Ada compilers and validation suite information.
10 Jan 97 (original)

Pending

In March 1997, changes to Ada policy were directed by Mr. Emmett Page (ASD/C31). This technology does not reflect those changes.

A revised assessment of toolset maturity (see Maturity section) is also needed.

Footnotes

1 From John Goodenough, SEI, in email to John Foreman, Re: Ada 95, August 16, 1996.



The Software Engineering Institute (SEI) is a federally funded research and development center sponsored by the U.S. Department of Defense and operated by Carnegie Mellon University.

Copyright 2007 by Carnegie Mellon University
Terms of Use
URL: http://www.sei.cmu.edu/str/descriptions/ada95_body.html
Last Modified: 11 January 2007