The Ground Processing Scheduling System (GPSS) computer program is used to develop streamlined schedules for the inspection, repair, and refurbishment of space shuttles at Kennedy Space Center. A scheduling computer program is needed because space-shuttle processing is complex and it is frequently necessary to modify schedules to accommodate unanticipated events, unavailability of specialized personnel, unexpected delays, and the need to repair newly discovered defects. GPSS implements constraint-based scheduling algorithms and provides an interactive scheduling software environment. In response to inputs, GPSS can respond with schedules that are optimized in the sense that they contain minimal violations of constraints while supporting the most effective and efficient utilization of space-shuttle ground processing resources.

The present version of GPSS is a product of re-engineering of a prototype version. While the prototype version proved to be valuable and versatile as a scheduling software tool during the first five years, it was characterized by design and algorithmic deficiencies that affected schedule revisions, query capability, task movement, report capability, and overall interface complexity. In addition, the lack of documentation gave rise to difficulties in maintenance and limited both enhanceability and portability.

The goal of the GPSS re-engineering project was to upgrade the prototype into a flexible system that supports multiple-flow, multiple-site scheduling and that retains the strengths of the prototype while incorporating improvements in maintainability, enhanceability, and portability. The major enhancements were the following:

  • The implementation of container objects (e.g., lists and maps) was made more efficient by use of the C++ Standard Template Library (STL).
  • Improvements in the management of schedule network objects were made. An embedded schedule-data configuration-management subsystem, similar to systems used for software configuration management, was built. This subsystem accommodates multiple versions and revisions of each schedule, including direct descendants and branches. It also implements a concept of user sessions that enables each user to maintain multiple current instances of the same schedule and full schedule data files with sizes of the order of 1MB.
  • Improvements in calendar operations were made. The original implementation required the full, time-series expansion of all calendars, giving rise to a large memory overhead. Furthermore, some calendar features (e.g., holidays), were "hard-coded." In the re-engineering, calendar memory requirements were reduced by providing for all calendar calculations to be performed in real time and by removing all hard-coded elements.
  • Re-engineering of a robust query subsystem was perhaps the most challenging aspect of the project. The prototype utilized a Prolog-like query language that was scanned, parsed, and executed in a C program. The query code was problematic and difficult to understand. The re-engineering involved the building of a real (but similar) query language, utilizing the FLEX language and the Bison program to define a scanner and parser that includes all elements of logical inference (for example, AND, OR, and NOT) as well as full capability for building and incorporating user-customizable queries.
  • An improved report architecture was developed. The prototype featured a significant number of hard-coded user options, and too little care was taken initially to develop a consistent but flexible report architecture. The re-engineering of the affected software components involved design around a new report class that contains attributes that describe the class of objects (e.g., tasks) represented in a report, the presentation style (e.g., Gantt chart or tabulation), and the time frame of the report. All report definitions are saved in files that the user can edit to customize reports.
  • Several improvements in algorithms were made to solve backward- movement problems, provide a more robust implementation of achievers, and improve memory management through the use of smart pointers and "lazy load" of persistent data. Also included is an updated implementation of an object-oriented callback system to the Motif widget set.

The benefits of the re-engineered version of GPSS hinge on the object- oriented approach. The use of STL and the improvements in schedule and query operations are incorporated in C++ libraries that may prove useful on succeeding projects. The rewriting of software in C++ increases portability. For the users, every effort was made in the re-engineering to maximize flexibility and improve upon the intuitive nature of the interface without sacrificing any of the capabilities that made the prototype successful.

This work was done by Joseph A. Barretta, Earl P. Johnson, Rocky R. Bierman, Juan Blanco, Kathleen Boaz, Lisa A. Stotz, Michael Clark, George Lebovitz, Kenneth J. Lotti, James M. Moody, Tony K. Nguyen, Kenneth A. Peterson, Susan Sargent, Karma Shaw, Mack D. Stoner, Deborah S. Stowell, Daniel A. Young, and James H. Tulley, Jr., of United Space Alliance for Kennedy Space Center. For further information, contact the Kennedy Commercial Technology Office at 321-867-8130.