The Ada 95 Airfields project is a classic example of a modern information systems re-engineering effort. It is also an example of Ada 95 hard at work, helping a dedicated, yet inexperienced team of programmers to deliver a product according to an aggressive schedule and with limited resources.
The Airfields information system provides military commanders with access to data on airfields and airports worldwide. The COBOL version of Airfields was part of the Worldwide Military Command and Control System (WWMMCS); once re-engineered into Ada, Airfields was to be part of the Defense Information Systems Agency's (DISA's) Global Command and Control System (GCCS), a new, integrated command and control environment.
Airfields owes much of its success to the teamwork of its developers and the cooperation between the programmers and the Ada Joint Program Office (AJPO).
The developers, all formerly COBOL programmers, worked together to learn Ada and to deliver a fully re-engineered system. Velma D. Blue, Airfields Team Leader, stressed the importance of teamwork in getting the job done: "The success of the project was highly dependent upon a strong and supportive team. Team building is a key ingredient in producing a successful product for users."
Blue also highlighted the benefits of the team's collaboration with the AJPO: "It must be stated that without the support of the mentors the success of the project would have been more difficult to bring to closure, especially using an Ada 95 compiler before it was matured."
Because Airfields took part in the AJPO's Ada 95 Early Adopter Partnership program, the lessons learned throughout the project are available to a wide audience.
Re-engineering called for the completion of a number of tasks:
- Move Airfields from COBOL to Ada 95.
- Move it from a Honeywell mainframe to a Sun Sparcstation.
- Move it from the General Comprehensive Operating System (GCOS) to Solaris 2.3.
- Move from code that accesses a series of flat files to an Oracle database with an SQL interface.
- Move from a character-based user interface to a graphical user interface (GUI) using the X-Windows system.
- Move from dumb terminals and mainframes to a client/server system.
- Do it within deadline, with whatever resources you have at hand.
For every project, there are inevitable complications. In the case of Airfields, the two major complicating factors were:
(1) the need to field an operational system under imposed deadlines [driven by the shutdown of WWMMCS, the project would be fielded in June and enhancements would be added during the following months] and (2) the lack of a complete hardware suite suitable for building the project.
DISA initially assembled the Airfields team in October of 1994. There were eight COBOL developers, two managers, one configuration manager/quality assurance/documentation person, and one database expert on loan from another project. The team was supported by two full-time mentors supplied by the AJPO and one part-time database expert from DISA's Center for Software. From October 1994 to January 1995, the team received training in Ada 83, Ada 95, Unix, and Oracle.
Ada training was provided in two steps: (1) going from a COBOL background to Ada 83 and (2) going from Ada 83 to Ada 95. The two-step approach was taken because, at the time, no vendor offered an Ada 95 course for non-Ada programmers. Since that time, several courses have been made available and, if the team were to be trained today, a single Ada 95 course for non-Ada programmers would be preferred.
During December 1994 and January 1995, the team assessed the upward compatibility of the Joint Automated Message Editing System (JAMES) software written in Ada 83. The software consisted of approximately 48,000 lines of Ada code (counted as carriage returns) or approximately 14,000 Ada statements (";" count). The team determined that the existing software was 100% upward compatible, there were no needed changes. One factor that may have contributed to this was that the software had already been ported among several Ada 83 compilers, platforms, and operating systems; therefore, many implementation dependencies had already been removed.
In addition to determining the team's workload, the assessment allowed the team to gain further familiarity with Ada 95 and with the tools that they would use on the Airfields project. It also helped the team to better understand the environment they would use, including the publicly available GNU Ada Translator (GNAT) Ada 95 compiler. (The team used the GNAT compiler for initial development, but transitioned to an ObjectAda compiler from Thomson Software Products to meet DoD requirements to use validated compilers for fielded software.)
Requirements Analysis and System Design
By February 1995, the team had gathered enough information about the legacy system to begin their formal requirements analysis effort. The legacy system provided a clear baseline of functionality that had to be implemented. So the team focused on analyzing their enhanced, Motif-based, user interface using the ScreenMachine GUI-builder tool from Objective Interface Systems (OIS). In addition to acting as an analysis tool, the ScreenMachine automatically produces most of the GUI code, allowing the developers to be more productive and removed from the details of X-Windows.
The project's schedule and aggressive nature did not allow the team to receive any formal training in object-oriented technology. But with the informal introduction they received in their Ada training and the support of the mentors, the team was able to approach the analysis and design of Airfields using an informal packaging-oriented approach to good Ada design. Initially, the team concentrated on understanding major Ada design issues such as packaging and private types.
On the advice of the mentors, the team made use of Ada 95 features only where they could be shown to simplify the design. This kept the group from diving into features simply because they were new and exciting. As the design progressed, it became clear that both tagged types and hierarchical library units would be useful in several places in the architecture. Additionally, the team used some of the new predefined units of Ada 95 (e.g., Ada.Strings.Unbounded).
Another benefit of using Ada 95 was the team's ability to use Ada 83 tools to build their software. For example, OIS was able to provide the Ada 83 version of the Screen Machine GUI Builder, which generated code that needed no modification - even after OIS provided versions that worked with the GNAT and Thomson ObjectAda compilers. The GUI builder was modified to work with the new compilers, but neither the tool, nor the Ada to X-Windows software that it uses had any Ada 95 features. Similarly, the Oracle Pro*Ada software used only Ada 83 technology. The underlying bindings were ported to GNAT and ObjectAda, but no Ada 95 code was produced by the version of Pro*Ada used here.
Using Ada 95's New Features
Using the new features of Ada 95 was one of the biggest advantages to the Airfields team, according to Blue. Features such as hierarchical library units (HLUs), unbounded-length strings, and tagged types significantly increased the speed with which the project was developed. For example, HLUs made development easier because they allowed developers to map their Ada 95 code naturally to the structure of the underying RDBMS.
Heavy use of the new unbounded-length string feature was also helpful. Unbounded strings were used to display the reports on the screen. The majority of the Airfields data records had variable lengths; with unbounded strings, the team did not have to worry about the size of the reports. In addition, using unbounded-length strings meant the developers did not access wasted space when retrieving and manipulating the data.
Tagged types were used to manipulate the data based on the user's selection criteria. Selection criteria narrowed down retrievals for specific report generation. Ada 95's tagged types allow all of the selection criteria to be processed correctly by dynamically selecting the appropriate Ada subprogram to process the user's selection criteria.
Reviewing the Design
On January 5, 1996, the Defense Information Systems Agency (DISA) delivered Airfields, the first completed project written in Ada 95.
The system was acepted as part of the Global Command and Control System (GCCS), DISA's new integrated command and control environment, on March 16, 1996.
Blue summed up the Airfields effort: "Working on this project has been a unique experience for me. There were many challenges to face and many obstacles to overcome. I am thrilled that all have been resolved. I could not have done it without the support of the team. The team had a 'can do' attitude. The most beneficial experience for this project was the access to and the utilization of expert support from the AJPO mentors."
Blue stated, "The Ada language was a complex language to grasp initially, but the benefits paid off, and the results were obvious... The team would prefer to continue programming in Ada and would not choose to program in any other language."