Chapter 2
Why Adopt Ada 95?
- Summary of Adoption Issues
- What is Ada 95?
- Why Was Ada 95 Developed?
- Why Use Ada 95 Over Ada 83?
- Why Use Ada 95 Rather Than Language X?
- Ada 95 Provides New and Unique Features
- Moving from Procedural Languages: FORTRAN, C, COBOL, JOVIAL, CMS-2, etc.
- Choosing among Object-Oriented Languages: Ada 95, C++, Smalltalk, etc.
- Using with 4GLs: DBase, Focus, etc.
- Trial Ada 95 Technology Available
- Stability of the Ada 95 Definition
- DOD's Policy on Ada 95
- Early Results of Using Ada 95
- Support for Migration Systems and Multi-Language Development
- Conclusions
PEOs and PMs now have the opportunity to adopt Ada 95. This chapter provides a
rationale for why they may want to take advantage of Ada 95 features and
benefits. As noted in the Introduction, subsequent chapters will address the
risks associated with Ada 95 adoption and provide risk mitigation strategies.
Each subsection in this chapter describes the reasons why PEOs and PMs
would consider adopting Ada 95 from both the perspective of those using Ada 83
and those using other languages. Tables 1 and 2
summarize the key management and technical benefits that Ada 95 may provide.
Table 1: Key Management Benefits in the Switch
to Ada 95
Table 2: Key Technology Reasons to Switch to
Ada 95
Ada 95 is the informal name for the current Ada standard (ISO/IEC 8652:1995).
It is an incremental improvement of the Ada 83 (ANSI/MIL-STD-1815A)
programming language. It is neither a new language nor some radical redesign.
When moving to Ada 95, you keep your Ada 83 software and your investment in
Ada 83 training, tools, or technology. The transition is a natural evolution.
As Figure 1 shows, the new language overcomes some
limitations of Ada 83 and adds new features to the existing Ada 83 language.
So, why is here an Ada 95? One reason is that users demanded it. Programming
technology advances rapidly -- many technologies have matured since 1983,
including object-oriented programming, client/server and distributed
computing, and improved real-time scheduling algorithms -- just to name a few.
Like most software users, Ada's customers demanded both new features and
improvements to existing ones. Feedback from the users of Ada 83 was positive;
their projects were successful. But people wanted features that weren't
available in Ada 83.
ANSI standards must be reviewed every five years. The Ada Board, based on its
perception that there were things that should be changed and added to Ada 83,
recommended that the standard be revised. When the Ada revision process
started in 1988, users around the world sent in more than 750 revision
requests. The language revision was an open, publicly reviewed process. This
consensus-based approach included involving users who reviewed and commented
on the changes to the language at workshops, conferences, through the Internet
and, of course, as part of the formal standards committee.
Ada 95 is the next version upgrade to the language. Table 3
summarizes the management benefits of the major new technical features
available in Ada 95. If your system has the properties shown in the first
column of the table ("Systems That Have These Characteristics"), then you are
likely to benefit from Ada 95.
Management reasons to switch to Ada 95 include:
- Lower Costs through Software Reuse - Object-oriented programming
and interfacing features of Ada 95 will support large-scale reuse (i.e., use
of existing class libraries, etc.).
- More Efficient Development - New hierarchical libraries will reduce
the amount of recompilation needed to develop and maintain large software
systems, thus accelerating development and making your software workforce more
productive.
- More Efficient Software - Several new, more efficient concurrency
features will enhance real-time performance.
- Improved Maintainability - Both object-oriented programming and
hierarchical libraries will make software changes to meet new user
requirements quicker and more efficient.
- Eventual Loss of Ada 83 Support - Vendors will be targeting the
majority of their resources to support the new versions of Ada compilers.
Although support for both Ada 83 and Ada 95 will be available for a period of
time, eventually only Ada 95 will be supported.
Ada 95 makes available new language features not found in Ada 83. Table 3 summarizes their benefits. These features are grouped
into four major categories:
- Object-Oriented Programming (OOP) - The ability to develop new
software components by specifying how they are similar to and different from
existing components. OOP is a popular approach to help make software
easier to modify and less costly to build and maintain.
- Hierarchical Library Units: Increased Support for Programming-in-
the-Large - The ability to structure large packages into groups of small
related "subsystems" that are more understandable, can compile and recompile
faster, and can decrease executable code size. The hierarchical library
units result in software that can be modified more easily, greater developer
productivity, and lower cost.
- Real-Time Enhancements - New real-time constructs (e.g.,
protected types) provide more efficient support for data-oriented
concurrency. More direct support for interrupting processing to
respond to mode changes is provided. These real-time features
decrease the risk of using Ada over assembly languages. Real-time
enhancements also increase software efficiency.
- Interfacing with Other Software - Better and more intimate
interoperation with COTS and GOTS software written in other languages.
This interfacing feature increases software interoperability.
- Specialized Needs Annexes - The annexes define support
for many domains. Packages to help support legacy applications
in information systems. An annex providing a portable model for
producing distributed Ada programs supports client/server computing
and distributed computing. Real-time systems are supported by
packages and commands to provide more sophisticated scheduling
and concurrency needs. Additionally, auxiliary libraries support
areas such as formatted IO and advanced math functions. Specialized
needs annexes allow vendors to provide greater amounts of specialized
support to their customers within the standard.
Once an organization has decided to consider a language change, several issues
must be considered. Typically, an organization will move from its existing
language to another language when the benefits of the new language clearly
outweigh the effort to change the status quo (e.g., training, buying new
tools, etc.). The following subsections describe some of the advantages and
the disadvantages Ada 95 has, compared with other programming languages.
Individually, many of these features are not unique to Ada 95, but taken
together, they make Ada 95 a good alternative to other languages.
Ada 95 will keep developers competitive. Ada 95
provides the same kinds of features found in other modern languages.
These include: support for object-oriented programming, strong
real-time building blocks, and the ability to more directly access
the hardware system. All these features supplement the features
of Ada 83: packages and generics (promoting reuse and modifiability),
tasking directly integrated into the language (supporting concurrency
and real-time programming), exception handling (promoting safety
and reliability), and a rich set of built-in structures and types
(making the software reflect the real world).
Choosing Ada 95 keeps development efforts abreast of Industry.
Ada 95's developers have taken lessons from the best Object-Oriented
Programming Languages (OOPLs) to ensure that it will be a language
for the 20th and the 21st centuries. Ada 95 doesn't just
provide technical parity with other languages, in some ways it
surpasses them. Ada 95 provides a rich set of OOP features and
integrates them with tasking and generics. Table 4 compares features
found in C++ and Smalltalk with those in Ada 95. Ada 95
provides the power of object-oriented programming - reuse, higher
productivity and lower maintenance costs.
Table 4: Comparison of the OOP Features of Ada
95 and Other Popular OOPLs
Using a high-level language, for real-time applications,
decreases technical risks, provides increased productivity, lower
cost and greater system reliability. Ada 95 provides enhanced
support for embedded weapons systems and other real-time projects.
New real-time features include a more efficient language primitive
for providing exclusive access to shared data (protected types),
more flexible ways to respond to a mode change or interrupt (the
new "select with" abort ), and more flexible scheduling of tasks.
These features enable the use of Ada 95 where assembly language
or low-level languages were previously used, thus providing increased
productivity and reliability while lowering cost. It also supports
PEOs and PMs in the move from specialized hardware platforms (e.g.,
UYK-43 and UYK-44) to open systems (e.g., commercial platforms
using POSIX, etc.).
Ada's unique features include special support for many common
application domains. Ada 95 provides several "specialized
needs annexes", which define additional libraries and support
for particular domains such as real-time, numerical, distributed,
and information systems. These capabilities will make Ada 95 the
first distributed, concurrent, object-oriented programming language
to become an international standard. These specialized needs annexes
will increase portability for applications within specific domains
by ensuring standard interfaces to needed services. However, projects
will only achieve this when they use compilers that support those
annexes. For maximum portability, projects should use only the
features found in the core of Ada 95.
Standard interfaces to other languages are included so that Ada
programs may make use of existing code written in C, COBOL, and
FORTRAN. In fact, Ada 95 is intended to exist cooperatively in
a multi-language environment; this makes it suitable for migrating
and re-engineering legacy systems so groups can continue to use
the old system as a part of the new effort. Finally, standard
Ada 83 bindings exist that permit Ada to be used with SQL. Ada
95 bindings to SQL-2 are under development.
Ada 95 provides all the benefits of Ada 83 - a 10-year track
record of higher productivity, lower maintenance costs, and lower
technical risks because Ada 83 is the core of Ada 95.
Ada 95 is also an opportunity to adopt modern methods and
processes. PEOs and PMs are migrating their organizations
and re-engineering their legacy systems. These migration efforts
offer an opportunity to introduce more modern software engineering
technology. Migration and re-engineering efforts allow the PEO
and PM an opportunity to adopt a newer programming language. Ada
95 is an important option -- it brings with it the ability for an
organization to improve its entire software development process.
Both events can have a synergistic effect.
Adopting Ada 95 lowers the project's risks because Ada 95
provides the improvements of other modern languages - with some
significant differences. Once PEOs or PMs have decided
to move from their existing procedural language, the choice is
then, to what new language? If the move stems from a desire to
adopt an OOPL, then Ada 95 is a good choice compared with other
current alternatives: it possesses a richer set of features than
Smalltalk; and it is simpler to understand, read, and maintain
than C++. Its facilities for real-time support are unparalleled
in any other standardized language. All these benefits are part
of an ANSI and ISO standardized language. In addition, Ada represents
a DOD core competency - DOD has the skills, tools, and infrastructure
to support Ada. When PEOs and PMs consider changing from
procedural programming languages, Ada 95 is the low-risk alternative.
Ada 95 builds upon the lessons learned from other OOPLs; therefore, it
lowers the risk PEOs and PMs take when adopting a new programming
language. With the large numbers of OOPLs that have emerged in the
past few years, choosing the right one can be difficult. In addition to
evaluating the technical merits of the language (see Table
4), managers should be aware of other impacts of choosing a language such
as:
- Vendor Independence (through use of a standardized language) - Ada
95 will become an international standard ahead of all other OOPLs; this
ensures that all compilers, from all vendors, will provide the same language
facilities. Projects making use of only core Ada 95 features will find this to
be true for all compilers. Those making use of features from the annexes will
find it true for those compilers that support those annexes.
Standardization enhances portability - there are fewer incompatibilities
when moving from Vendor A's Ada to Vendor B's.
- Lower Development Cost and Maintenance Cost - PEOs must consider
the trade-off of development costs now versus maintenance costs later. Ada 95
provides balanced support to both a fast time to market (through Ada's large
set of standard libraries and good reuse support), and long-lived projects
(common standards to lower maintenance costs and a common language to
facilitate a pool of skilled software engineers). In balancing these demands,
Ada 95 is as strong as C++. It does not try to replace rapid prototyping
technology, however. These reuse benefits accrue to projects that use existing
components. PEOs and PMs should remember that projects that create reusable
components are making an investment and must be prepared for that extra cost.
Ada 95's features, such as high readability and hierarchical library
units, supplement Ada's OOP features in supporting both quick time to market
and lower maintenance costs.
- Ability to Trade Performance for Power/Productivity - Ada 95 is
based on the philosophy of providing developers with building blocks. This
enables them to know the costs associated with any language features they use.
Ada 95 was designed to enable the technical staff to use the right tool
for the right job.
- Acceptable Training Costs - Training costs are related
to the time required to learn and use the language. Ada
95 is more expressive (powerful) than many OOPLs and also provides
this expressive power in ways that may make learning Ada 95 no
more difficult than learning C++. Although there is only
limited experience through tutorials and industry classes, early
Ada 95 training costs seem comparable to those of other languages.
See Table 4 for a detailed comparison of the features found in
Ada 95, C++, and Smalltalk.
Ada 95 co-exists with and supplements 4GLs, allowing PEOs and PMs to
gain the power of both technologies and lowering the risk for information
systems to move to Ada 95. There are some instances when a project may
want to choose a procedural 3GL, such as Ada 95, over a non-procedural 4GL,
especially when the 4GL doesn't provide enough functionality to supply
special, application-specific behaviors. In this case, Ada 95 may either
replace the use of a 4GL or be used to implement application-specific routines
that are called from the generated 4GL code (e.g., actions when a user presses
a button on a graphical user interface [GUI] screen). In other applications,
Ada 95 could be used jointly with 4GLs -- especially since Ada 95 has added
new features that allow it to be called by other programming languages as well
as call on them. One common strategy will be to use the 4GL for the GUI and
database access components and have Ada 95 code serve as the application
specific functionality.
Low-risk, low-cost options are available to introduce Ada 95 into
a project. Inexpensive sources of Ada 95 technology are available,
allowing the PEO or PM the opportunity to try the technology before
undertaking full-scale adoption. Appendix A lists a
number of ways to get information and products including: a free
compiler for Ada 95, called GNAT,
which is useful for training and pilot project efforts; free software
components; and example programs, booklets, articles and tutorials. The
availability of this technology lowers the cost of evaluating and adopting Ada
95, compared to Ada 83's costs. Team members will be able to find out quickly
and easily about the new Ada 95 features and see how to apply them.
Development teams can assess the cost/benefit trade-off for each new
feature and use only those that benefit their project. Teams will not pay a
cost for Ada 95 features they don't use. Users may adopt Ada 95
incrementally, using only a few of the new features at one time. The language
designers made sure that systems that don't use a new Ada 95 feature will
not suffer any performance cost (either size or speed). This means that
a new feature will affect a development effort only if it is used. For
example, if a project does not make use of OOP features, then the project will
not suffer any execution time penalty in speed or size.
The international standardization of Ada 95 has produced careful
language scrutiny and review, which ensures that the language definition is
stable and mature. This means lower risk for projects adopting Ada 95.
In addition, the presence of an international standard increases portability
and supports DOD's efforts to make use of commercial standards.
Ada 95 became the first internationally standardized object-oriented
programming language on February 15, 1995. It has been sanctioned as meeting
FIPS standard 119-1 and is undergoing ANSI standardization. There will be
no DOD specific Standard. This supports DOD's quest to move toward
greater use of commercial standards maintained by outside standards bodies. It
also makes Ada 95 more attractive to commercial firms. Ada 95 is a
stable, international standard that will provide PEOs and PMs with lower risk
on their projects.
Ada 95 is the current version of Ada. Therefore, no special
permission is needed to use Ada 95.
In addition, Emmett Paige, Jr., the Assistant Secretary of Defense for
Command, Control, Communications and Intelligence [ASD(C3I)] has issued a
memo, Figure 2, encouraging the early adoption and use of
Ada 95.
The DOD policy on Ada 95 will allow the use of either Ada 83 or Ada 95 for
a transition period. After that transition period, Ada 95 usage will be
required. This approach parallels the way tool vendors support new versions of
their products and phase out support for the older versions over time.
Figure 2: Early Use of Ada 95 Memorandum
Partial Ada 95 implementations have been used during the language
definition. Their lessons learned have reduced the risk for projects now
adopting Ada 95. During the process of defining Ada 95, the language
revision team worked with three User/Implementor teams to prototype Ada 95
technology and verify that the language would work as envisioned. These teams
built partial Ada 95 compilers and used them on pilot projects to test the new
language features. Early results were encouraging. In the area of real-time
systems, the teams found that Ada 95 concurrency features yield large
efficiency gains over using Ada 83 tasking. In the OOP area, the early users
found that they gained the promised benefits of reuse and productivity, with
surprisingly low overhead.
PEOs and PMs should remember, however, that these were early results with
partial compilers. It remains to be seen whether the complete implementations
of the standard language work better, the same, or not as well in these and
other areas.
In addition to these teams, production projects have begun using Ada 95. Among
these early adopters is the Patriot Fire Control system, which is re-engineering
legacy assembly and JOVIAL code into Ada 95 software. The AJPO is
supporting a number of technology transition partners in the early adoption of
Ada 95. Drawn from all services, four major project efforts encompass the
information systems, command and control, and embedded weapons systems
domains. These projects include:
- The joint U.S. Air Force, U.S. Marine Corps and U.S. Navy project on Joint
Applications Support Technology (JAST) - an embedded weapons system to support
new aircraft.
- The U.S. Army's Common Applications Support System - a command and control
support system. This is the common support system for the Army Tactical
Command and Control System (ATCCS) project.
- DISA's Airfields project - a part of the Global Command and Control System
(GCCS).
Ada 95 reduces the risks to projects that must support multiple
programming languages. Both cost and schedule will benefit by the improved
ability to interface with legacy software, COTS, GOTS and other "class
libraries" of reusable components -- those written in Ada and those written in
other languages.
Many software projects of the 1990s are either migration systems efforts
(which consolidate several systems into one) or re-engineering efforts (which
take legacy code and obtain a more maintainable modern system while preserving
the work invested in the legacy code). Both types of projects are similar
because they require that the new code smoothly integrate with the existing
legacy software. Multi-language development has always been a difficult task,
but Ada 95 has several new features that make this simpler than it has been
before.
As already noted, Ada 95 defines standard mechanisms for interfacing
with other programming languages. In addition, the standard defines
additional support packages to simplify interfacing with C, FORTRAN and COBOL.
These support packages provide a portable, efficient and standard interface to
legacy software. Built-in support from the language lowers the risk present in
the new development effort and enhances characteristics such as portability.
It also allows Ada 95 programs to use proven building blocks written in other
languages as part of the Ada 95 application. This "peaceful coexistence"
feature allows PEOs and PMs to make use of libraries of COTS or existing code.
This reduces costs and speeds development.
PEOs and PMs should be aware that while the standard allows interfacing to
any language, it does not require that all languages be supported by all
compilers. Projects should be sure to evaluate each compiler's support for
interfacing to their particular programming languages as a part of the
compiler selection process.
Additionally, Ada 95 has the ability to be called by code written in other
languages. This "call-in" capability allows Ada 95 code to be used to
incrementally replace functionality present in a legacy system under
maintenance, with minimal risk and disruption.
Whether moving from Ada 83 or from another language, Ada 95 can
provide significant benefits to help PEOs and PMs minimize budget and schedule
disruptions and other risks. Ada 95 adoption can help a software team to
provide more capabilities for every dollar spent. However, to exploit these
opportunities, the process of adopting Ada 95 - as with the adoption of any
new technology - must be managed in order to minimize transition-related risks. The next chapters will help PEOs and PMs understand the
adoption process, assess and manage the risks, and successfully transition to
Ada 95 wherever it is appropriate and effective to do so.
Previous Chapter - Introduction
Next Chapter - Ada 95
Adoption Risks: Analysis and Mitigation
Table of Contents