PROGRAMMING LANGUAGES AND LIFECYCLE COST
30 August 1997
Ada Joint Program Office
Center for Computer Systems Engineering
Joint Interoperability & Engineering Organization
Defense Information Systems Agency
SLIDE 2 - Purpose
The purpose of this presentation is to provide a collection of quantitative information on lifecycle cost implications of programming language use, primarily Ada versus its main competitor, C/C++.
Have you ever heard, or even made, the statement, “Let’s use C/C++ or Smalltalk or Powerbuilder or anything else. It’s less costly and less error-prone than Ada”?
C/C++ is an influential language today for many reasons. But, there is a growing consensus that Ada is actually becoming the best choice for your software engineering requirements.
SLIDE 3 - Outline (Introduction)
- Before we get into the specifics, we need to set the stage by defining the scope of the presentation, providing a little background, and defining some of the terms we will be using.
- Then we’ll take a look at some of the cost factors used to identify and track a programming language’s software development lifecycle cost.
- Next, we will take a detailed look at several language studies conducted by the Air Force, MITRE, and a few others.
- Finally, we will review some current projects, their results/findings and conclusions.
- When we’re done, I think you will agree that Ada is the programming language of choice.
SLIDE 4 - Caveats
- Language debate is usually subjective and inconclusive.
Many people have a negative reaction to the DOD Ada mandate. They perceive Ada as an (unwanted) programming language that DOD is attempting to impose on them.
Some people are put off by assumptions like “Ada is intelligible and complex” or “C maintenance costs are too high.”
Some are influenced by the first language they learn or the language they know best. They attempt to create a feature for feature comparison of languages and ignore new and potentially more appropriate language features.
Others see Ada as a radical departure from what they already know, requiring a steep learning curve.
Still others fear that it is an immature and unsupported language, resulting in a high cost and low availability of tools.
- These qualitative arguments do little to resolve the key issues.
- Unfortunately, actual quantitative data is difficult to obtain.
Software development lifecycle cost data requires discipline to collect;
productivity data is often proprietary;
and “experiments” implementing large, complex systems in multiple languages are too expensive.
SLIDE 5 - Sources
As you can see by this slide, the sources for information in this presentation come from a wide variety of places, spanning both DOD and private industry.
SLIDE 6 - Background
- C was created in the 1970s as a “portable assembly language” to support system software development.
- Ada 83, adopted as a standard in 1983, was designed to meet the requirements of developing large, complex systems. But, Ada 83 lacked complete support for object-oriented programming.
- Ada 83 has been used successfully for many DOD/NASA and commercial projects since 1983. There are 10’s of millions of lines of Ada code available, most of which can be reused.
- C++ has been marketed by the industry heavyweights and is seeing increased use. It features object-oriented programming and builds on the popularity of C, which currently enjoys widespread use in commercial industry; but C++ is not standardized, thereby making portability extremely difficult. (A) C++ standard is not expected until September of 1998 with compiler vendors having a stable implementation soon thereafter.
- Ada 95 contains revisions based on a decade of experience.
Enhanced support for real-time processing
Distributed-systems capabilities
Hierarchical name space and other features for large programming efforts.
Complete support for object-oriented programming
Decimal arithmetic (which Ada 83 lacked).
Direct support for the development of Management Information Systems.
Highly reliable for safety and critical systems
Numerous other features.
- Ada 83 is used predominantly in complex, real-time systems.
SLIDE 7 - Software Growth
Back in the 1960s and 1970s, DOD was developing unique languages for specific purposes. A 1977 study, A Common Programming Language for the Department of Defense - Background, History and Technical Requirements, identified 450 as the minimum probable number of general purpose languages and dialects in use for DOD programs.
Along with this proliferation in programming languages, there was also a steady increase in the size (number of source lines of code) of individual software development programs.
The increased size and complexity of projects is a precursor to the “Software Crisis”
SLIDE 8 - Software Growth (continued)
The adoption of Ada 83 resulted in a substantial decrease in the number of different languages used. As that proliferation has decreased and the trend for adopting standards increased, Ada has become the No. 1 choice in programming languages for weapons systems, with C the second most popular. C is not one of the official languages for warfighter software.
SLIDE 9 - Outline (Cost Factors)
We will now discuss the various cost factors used in determining a programming language’s lifecycle cost.
Certainly, it is important to use technology that lowers the cost of developing software. It’s possible to have four scenarios:
Development / Maintenance- / -
/ -
- /
/
A check mark (“”) means that a technology “lowers the cost of developing software”. A “-” means that it is either neutral or does not “lower the cost of developing software”.
Ada will certainly lower costs during maintenance. (as is shown in the next section on “studies”). Certain common technologies will lower the immediate development costs at the expense of maintenance. Often, however, Ada will lower the costs of both development and maintenance. Ada is especially helpful by catching errors earlier, at compile time, and reducing integration and testing time.
SLIDE 10 - Cost Factors
Factors that must be considered in determining software development lifecycle costs include:
- a programming language’s commercial viability — with regard to Ada, it is certainly viable. As is shown on the next slide, DOD alone has 50M SLOC of Ada code. Worldwide there may be more than 100M SLOC. Tools, developers, etc. for this technology will be available for the foreseeable future.
- standardization and portability (Ada 83 and Ada 95 are ISO standards, C is an ANSI standard, and C++ is still in the approval process). Standardization has a direct impact on portability.
- lifecycle productivity (which includes training, programmer productivity, reuse, and maintainability)
- process and tools (we need to consider the cost of compilers and support tools). Ada 83 did not fare as well as other languages in this area of “up front” costs. Ada 95 tools are much more comparable to those of other languages. As always, though, it pays to shop around. One can find examples where Ada costs more and where Ada costs less.
- and reliability and safety (things such as runtime validation, error rates, type checking). Remember that it costs less to fix an error the sooner it is found. Ada excels at early error detection.
The next slides will address how Ada affects each of these areas by showing the results of studies conducted on Ada’s usage.
SLIDE 11 - DOD Weapon Systems
In June 1994, the Assistant Secretary of Defense for Command, Control, Communications and Intelligence commissioned a programming language survey of the DOD. The purpose of the survey was to identify the number of programming languages being used today in the DOD as compared to 20 years ago when the DOD first began developing the Ada language.
This slide shows part of a table indicating that Ada is the most commonly used 3rd GL for Weapon Systems. The corresponding table for Information Systems shows Ada second to COBOL in that domain.
excerpts from the study’s executive summary:
A 1977 study, "A Common Programming Language for the Department of Defense-Background, History and Technical Requirements", identified "450" as the minimum, probable number of general purpose languages and dialects used in the DOD, but went on to say that the actual number was not known. How this estimate, and the method used to count root languages, versions, and dialects, came to be is still questioned. For this survey, as part of establishing a strong methodology, counting the number of languages used today required input from the organizations developing or maintaining automated information systems (AISs) and weapon systems. A census sample would include new systems, those being modernized, and those being maintained. For this study, a judgment sample of weapon systems was identified from the 1994 Presidential Budget requests for Research, Development, Test and Evaluation (RDT&E) programs exceeding $15 million and Procurement programs exceeding $25 million. Of the 1,300 programs identified, 423 programs were selected because they included software applications. The current DOD list of 53 major AISs was used as a sample population for non-weapon systems.
Experts in the field of programming languages have differed dramatically in classifying programming languages for counting purposes, particularly in defining the terms "dialect" and "version." For this paper, we use the term "dialect" to indicate a relatively minor change in a language whereas "version" indicates a larger change and usually has a different "name" although the new "name" may only be the concatenation of a different year or number to the baseline name (e.g., Jovial, Jovial 73). We counted a "version" of a root language as a distinct language. The methodology and data collection approach is explained in detail in this report to allow further expansion of the sample population.
Findings and Conclusions
- The estimated 237.6 million source lines of code in this survey are distributed among five generations (Tables ES-1 and ES-2).
- There are 37 third generation general and special purpose languages, the latter being used only in weapon systems. (Tables ES-3 and ES-4).
- For both weapon systems and AISs, over 80% of the applications are written in third generation languages.
- There is a greater use of fourth generation languages in AIS applications due to commercial off-the-shelf products for such applications as data management, interactive graphical displays, and editors.
- There is greater use of first and second generation languages (machine and assembly, respectively) in weapon systems than in AIS applications. This difference is due to the use of special purpose embedded computers in weapon systems.
- Most respondents indicated that more than one language is being used in application software. This multi-language use includes languages from all five generations. With modern programming languages and compilers, increased use of COTS products, and re-use of software components, it will become a common practice to produce applications with components written in different languages
SLIDE 12 - Non-DOD Ada Examples
For more examples beyond those on p. 20 & 21, check out the following sources:
Many of the systems described on these two pages have detailed write ups located at the above Web pages.
Additionally, the AdaIC can provide copies of a 12 minute video tape that includes interviews with many of the commercial users described here
Use of Ada in non-DOD Government programs as well as commercial enterprises is on the rise. It is increasingly the language of choice for some application domains, and software developers worldwide who are discovering its unique benefits. Ada’s commercial use dominates over its military use in Europe and Asia.
Here we see some specific examples of Ada use in non-DOD applications. The FAA Display System Replacement (DSR) with 2.3M source lines of code, the Nippon Communication Products with over 4M source lines of code, and the Boeing 777 with 10M source lines of code, to point out a few, exemplify the use of Ada in larger, more complex systems.
Ada has been chosen for all Boeing 777 software, and you are probably flying on an Ada-developed system when you travel on a Boeing 747.
SLIDE 13 - Commercial Ada Use
This slide attests to Ada’s commercial viability. From the transportation industry (air traffic control, commercial aircraft, and rail) to communications (communications, navigational, and scientific satellites), the use of Ada is increasing.
Ada is particularly important in commercial and non-commercial avionics. For example, over 25 different countries around the world use Ada in their air traffic control systems.
Software in Ada supports communications satellite systems in the US, Europe, and Japan. Industrial process control systems are developed in Ada. Large, complex financial management systems developed in Ada are executing successfully in commercial organizations.
What do these applications have in common? They are large (over 100K SLOC), they require high reliability, and they demand an engineering approach to software development.
Also notice the degree to which Ada has been accepted and used worldwide. Ada is not just an American technology nor a US DOD technology.
SLIDE 14 - Language Use
The graph is based an article in IEEE Computer Magazine.
SLIDE 15 - Foundation Languages
This chart shows the results of a University of Michigan Computer Science Department survey comparing foundation languages worldwide versus the US. For more specific information on this survey and on academic use in general, check out:
A foundation language is the first one taught at a university.
We can see that, at the time this survey was taken in 1995, although Ada did not dominate as a foundation language (no one language did) — it did have the second highest percentage of use both worldwide and in the US.
SLIDE 16 - Ada As A Foundation
Ada is rapidly gaining ground as a foundation language. Over a five year period from 1991 to 1997, the number of institutions teaching Ada as a computer science foundation language more than tripled - from 40 to 150. The most current version of this information is at:
For more specific information on this survey and on Academic use in general, check out:
or
The AdaIC has a comprehensive education page on their web site at
SLIDE 17 - Standardization
Ada 83 and Ada 95 are both ISO standards.
C is, as we all know, an ANSI standard.
C++ on the other hand is not yet a standard - and may not be for some time to come. The results of a recent ISO survey indicated that C++ still had a way to go. Current C++ ISO committee estimates are September of 1998.
Standardization has a direct link to portability. It alone doesn’t solve that problem, but without a standardized language, the project is locked into one vendors’ dialect.
SLIDE 18 - Ada Viability
As you have seen by the last few slides, Ada is gaining acceptance in the US. We saw that a significant portion of the DOD weapon systems source code is Ada; that there is increased non-DOD and commercial use of Ada; that there has been a continuing increase in the number of universities that teach Ada as a foundation language; and that the upgrades in Ada 95 (and the free GNAT Ada 95 compiler) are likely to contribute even more to this increased use.
There is also a very high degree of acceptance of Ada in Europe. This is reinforced by the fact that European projects rarely request waivers from European Defense groups or from NATO.
Ada’s acceptance in the Far East is indicated by the fact that sales of Ada compilers is greater than in the US and Europe combined!
So the Ada market appears at worst to be stable — but perhaps even increasing. Much of the data does not really account for the effects of Ada 95. For example, there is no good data on how much the availability of a high quality free Ada 95 compiler on the Internet is doing to increase the use of Ada 95. However, based on anecdotal conversations with Ada Core Technologies, the maintainers of GNAT, it is clear that many organizations that were not previously looking at Ada are now at least trying Ada 95.
SLIDE 19 - Outline
In the next section, we discuss the results of studies comparing the productivity and quality achieved on projects using various programming languages.
SLIDE 20 - Language Studies
Language studies have been conducted by the Air Force and many other government and commercial organizations. We will undertake an analysis of comparative language productivity based on such studies.
Several of these are archived by the AdaIC. Check out:
and
and
as well as others
The USAF “Ada and C++: A Business Case Analysis” is available only in hardcopy. Contact the AdaIC for more information.
The STSC survey’s cited here and in graphs on the following pages were never publicly released. Les Dupaix has collected the information and cited some of it in a past article in the STSC publication “Crosstalk” in 1995. (see for a copy of the article.) The study of “numerous government studies over 100M SLOC) has not been able to be released. However, Les has agreed to provide detailed information to anyone who wants it. He may be contact at: <>
The IDA survey on the use of languages within DOD can be found at:
The MITRE Study was published in the 1995 Software Technology Conference sponsored by the USAF STSC. It is available on the AdaIC’s Web site at
SLIDE 21 - Air Force Study
This slide describes some of the studies on which our language analysis has been used. As you can see, we are including data from DOD organizations, non-DOD agencies, research organizations, and several commercial organizations.
This slide highlights the five substudies that were conducted as a part of the 1991 Air Force comparison of Ada (83) and C++. A summary of the report is available: The entire report is several hundred pages long and is only available in hard copy form. The AdaIC can assist groups in obtaining copies.
This slide summarizes some of the important data. The basic bottom line on this study was that Ada was either equal to C++ or had more advantages as of the early ’90s.
SLIDE 22 - STSC European Survey
Additionally, the Air Force Software Technology Support Center (STSC) conducted a survey of the 11 European aerospace and defense contractors shown on this slide.
Software products from these companies represent an Ada code base of over 25 million source lines of code.