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 83


Status

COMPLETE

Purpose and Origin

Ada is a general-purpose, internationally-standardized computer programming language developed by the U.S. Department of Defense to help software designers and programmers develop large, reliable applications. The Ada language enhances portability, maintainability, flexibility, reliability, and provides interoperability by standardization. The Ada 83 (1983) version [ANSI 83] (international standard: ISO/IEC 8652: 1987) is considered object-based as opposed to object-oriented (see Object-Oriented Programming Languages) because it does not fully support inheritance or polymorphism [Lawlis 96].

Technical Detail

The Ada language supports principles of good software engineering and discourages poor practices by prohibiting them when possible. Features that support 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 also features strong typing--stronger than C or C++.

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

Ada 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. Because of language standardization and required compiler validation, Ada provides an extremely high degree of support for interoperability and portability.

Ada 83 includes features that can be used for object-based programming, but it stops short of providing full support for object-oriented programming (OOP); this is partly because of concerns regarding runtime performance during Ada's development.

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

Ada 83 provides features such as tasking, type declarations, and low-level language features to give explicit support of concurrency and real-time processing. However, Ada 83 does not specify tasking and type declarations in such a way that the resulting performance can always be predicted; this has been a criticism of the language in certain application areas such as embedded, real-time systems.

Usage Considerations

Ada was originally developed to support embedded software systems, but it has proven to provide good support for real-time, computationally-intensive, communication, and information system domains [Lawlis 96].

When combined with static code analysis or formal proofs, Ada can be used in safety-critical systems. For example, Ada has successfully been used in the development of the control systems for the safety-critical Boeing 777 Aircraft [AdaIC 96].

When considering performance, benchmarks performed on both Ada and C software with language toolsets of equal quality and maturity found that the two languages execute equally efficiently- with Ada versions having a slight edge over C versions [Syiek 95]. The quality of the compiled code is determined mostly by the quality of the compiler and not by the language. The burden of optimization is somewhat automated in Ada, as opposed to languages like C, where it is manually performed by the programmer.

When attempting to interface Ada 83 with other languages, several technical issues must be addressed. In order for Ada to call subroutines written in another language, an Ada compiler must support the pragma interface for the other language and its compiler. Similarly, if another language must call Ada subroutines, that language's compiler may also need modifications. The data representation between Ada and the other language must be compatible. Also, the system runtime support environment may need to be modified so that space is not wasted by functionally redundant support software [Hefley 92].

Ada 83 has recently been superseded by Ada 95 (see Ada 95). This new version places the software community into a transition period. Among the issues to be considered in transitioning from Ada 83 to Ada 95 are the following:

The current "philosophy" is that unless a demonstrated need exists, current operational systems or systems currently in development using Ada 83 do not need to transition to Ada 95 [Engle 96]. Refer to the Ada 95 technology description for more information on transitioning from Ada 83 to Ada 95.

A significant resource that addresses management and technical issues surrounding the adoption of Ada is the Ada Adoption Handbook [Hefley 92].

Maturity

Ada 83, with over 700 validated compilers [Compilers 96], has been used on a wide variety of programs in embedded, real-time, communication, and information system domains. It is supported by many development environments. Over 4 million lines of Ada code were successfully used in developing the AN/BSY-2 and AN/BQG-5 systems of the Seawolf submarine- a large, extensive, embedded system [Holzer 96]. Ada has become the standard programming language for airborne systems at Boeing Commercial Airplane Group (BCAG). Boeing used Ada to build 60 percent of the systems on the Boeing 777, which represents 70% of the 2.5 million lines of developed code [Pehrson 96, ReuseIC 95].

Ada is increasingly being taught in schools- approximately 323 institutions and companies are teaching Ada- a trend of 25% growth per year in schools and courses; this indicates increased and continued acceptance of Ada as a programming language [AdaIC 96].

Costs and Limitations

In a study performed in 1994, it was found that for life-cycle costs, Ada was twice as cost effective as C [Zeigler 95].

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:

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

Alternatives

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

Index Categories

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

Name of technology Ada 83
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

[AdaIC 96] AdaIC NEWS [online]. Available WWW
<URL: http://sw-eng.falls-church.va.us/AdaIC/news/> (1996).
[ANSI 83] ANSI/MIL-STD-1815A-1983. Reference Manual for the Ada Programming Language. New York, NY: American National Standards Institute, Inc., 1983.
[Compilers 96] Ada 83 Validated Compilers List [online]. Available WWW
<URL: http://sw-eng.falls-church.va.us/AdaIC/compilers/83val/83vcl.txt> (August 1996).
[Engle 96] Engle, Chuck. Re[2]: Ada 83/Ada 95 [email to Gary Haines], [online]. Available email: ghaines@spacecom.af.mil (August 19, 1996).
[Halang 90] Halang, W.A. & Stoyenko, A.D. "Comparative Evaluation of High-Level Real-Time Programming Languages." Real-Time Systems 2, 4 (November 1990): 365-82.
[HBAP 96] Ada Home: The Home of the Brave Ada Programmers (HBAP) [online]. Available WWW
<URL: http://lglwww.epfl.ch:80/Ada/> (1996).
[Hefley 92] Hefley, W.; Foreman, J.; Engle, C.; & Goodenough, J. Ada Adoption Handbook: A Program Manager's Guide Version 2.0 (CMU/SEI-92-TR-29, ADA258937). Pittsburgh, PA: Software Engineering Institute, Carnegie Mellon University, 1992.
[Holzer 96] Holzer, Robert. "Sea Trials Prompt U.S. Navy to Tout Seawolf Sub's Virtues," Defense News 11, 28 (July 15-20, 1996): 12.
[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.
[Pehrson 96] Pehrson, Ron J. Software Development for the Boeing 777 [online]. Available WWW
<URL: http://www.stsc.hill.af.mil/CrossTalk/1996/jan/Boein777.html> (1996).
[Poza 90] Poza, Hugo B. & Cupak Jr., John J. "Ada: The Better Language for Embedded Applications." Journal of Electronic Defense 13, 1 (January 1990): 47.
[ReuseIC 95] Boeing 777: Flying High with Ada and Reuse [online]. Available WWW
<URL: http://sw-eng.falls-church.va.us/ReuseIC/pubs/flyers/boe-reus.shtml> (1995).
[Syiek 95] Syiek, David. "C vs. Ada: Arguing Performance Religion." ACM Ada Letters 15, 6 (November/December 1995): 67-9.
[Tang 92] Tang, L.S. "A Comparison of Ada and C++," 338-49. Proceedings of TRI-Ada `92. Orlando, FL, November 16-20, 1992. New York, NY: Association for Computing Machinery, 1992.
[Zeigler 95] Zeigler, Stephen F. Comparing Development Costs of C and Ada [online]. Available WWW
<URL: http://sw-eng.falls-church.va.us/> (1995).

Current Author/Maintainer

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

External Reviewers

John Goodenough, SEI

Modifications

20 June 97: updated URLs for [AdaIC 96] and [Pehrson 96].
10 Jan 97 (original)


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/ada83_body.html
Last Modified: 11 January 2007