Ada Programming Support Environment
The original goals that led to the definition of the Ada language included the following:
1. Handle software throughout its life cycle.
2. Improve program reliability.
3. Promote the development of portable software.
4. Promote the development of software development tools.
It became apparent from the beginning that these objectives could not be met by Ada alone. Ada was envisaged as just one component of a comprehensive, integrated programming environment.
A series of requirements documents for an Ada programming support environment (APSE) was produced culminating in a final document called Stone-man (Stoneman, 1980). This final document outlined tools that were considered to be necessary for handling the software throughout its life cycle in a cost-effective manner.
Here we examine the objectives of an APSE and then outline the mechanisms for meeting these objectives.
Objectives. In examining some of the primary objectives of an Ada environment, a host target configuration is assumed throughout the discussion. In this configuration, the software development for the target machine, which runs the software, is supported on a host machine.
An important objective of an Ada environment is to support an application throughout its life cycle, that is, from its initial requirements specification through to its maintenance. The support of this objective implies that the environment must be:
1. Initially designed to support an application through its life cycle.
2. Designed so that its database holds all relevant application information (e.g., source code and documentation) and provides configuration control.
Configuration control records and analyzes the ways in which database objects are created and used.
The Stoneman report firmly recommends that an open-ended environment be used. In such an environment, the user may develop individual support tools. This approach permits the upgrading of the tool kit to reflect recent developments in the disciplines, thereby avoiding obsolescence. A potential disadvantage of the open-ended environment approach is the potential lack of programmer portability, that is, a programmer may experience difficulty in moving from one environment to another. Another perhaps more serious disadvantage is the lack of the capability of recording a complete and accurate set of relationships among database objects.
A second important objective is the support for the Ada language as a vehicle for reducing software development and maintenance costs. Whenever possible, the environment should offer strong support for the language and support program libraries. The level of support provided by the environment makes Ada a prime candidate as the implementation language for the support tools in the Ada environment.
The Ada environment should provide project team support. All the relevant information about an application throughout its life cycle should be captured in an environment database. Such an approach would permit a project controller to assign development responsibilities, police interfaces, and merge results.
Portability is another very important consideration in the design of an Ada environment. Project portability, tool portability, retargetability, rehostability, etc., are all important issues.
The KAPSE / MAPSE / APSE approach. We now briefly describe the parts of an environment intended to meet the various objectives just outlined. Because of the portability objective, the Stoneman report recognized three distinct levels within the environment as shown in Fig. 3-2. An APSE consists of a kernel APSE (called KAPSE), a minimal APSE (called MAPSE), and additional tools specific to a particular APSE. The KAPSE is a system and tool portability level that interfaces with an existing operating system (if present) and provides run-time support and several other basic (i.e., low-level) functions. For example, a KAPSE may contain basic routines for input/output, data-base management, and program invocation and control.
The MAPSE contains minimal support tools for the Ada software of an application throughout its life cycle. A typical MAPSE would include an Ada compiler, a database management system, a linker/loader, an editor, a debugger, and other tools. It is likely that most (if not all) of the tools in an APSE would be written in Ada.
More details on Ada programming support environments can be found in a special issue of IEEE Computer (June 1981), and particular environments are proposed by Stenning (Stenning et al., 1981) and Wolfe (Wolfe et al., 1981).
Software Technology for Adaptable Reliable Systems (STARS)
Recall that an APSE provides automated support for the software life cycle. The STARS program broadens this support further to include the unautomated, and in many cases unautomatable, aspects of the environment. The goal of the STARS program is to improve productivity while achieving greater system reliability and adaptability.
Figure 3-2 The Stoneman model
Figure 3-3 Software technology for adaptable systems (STARS)
The overall objective of the STARS effort, to improve software practice by improving the environment, consists of three objectives: improving the personnel, improving the tools, and encouraging more extensive use of the tools. Each of these three objectives can be subdivided into several subobjectives as shown in Fig. 3-3. More details on the STARS program can be found in a special issue of IEEE Computer (Noverfiber 1983).