|
Complete
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.
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.
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.
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.
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].
Other programming languages to consider are Ada
83, C, C++, FORTRAN, COBOL, Pascal, Assembly Language, LISP,
Smalltalk, or Java.
The Ada-95-to-Java J-code compiler (discussed in Usage
Considerations) enables applications for the Internet to be
developed in Ada 95.
This technology is classified under the following categories.
Select a category for a list of related topics.
|
[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).
|
Capt Gary Haines, AFMC SSSG
Cory Vondrak, TRW, Redondo Beach, CA
Charles (Chuck) Engle (former AJPO director)
John Goodenough, SEI
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)
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.
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
|