A view of source text for diversely configurable software
Thomas A. Cargill · 1980
It is now accepted that ongoing maintenance activities account for a major proportion of overall software expenses. This phase of a product's lifetime calls for continued, complex interaction between the software's source text and its programmers. Historically, in organizing large programs, the form of presentation of their source text to programmers has suffered in order that the presentation of their source text to language processors might be simplified. The image of source as a linear stream of text, arranged for input to translators, has taken precedence over its role as the realization of a design abstraction. This problem is most readily observed when considering the variance exhibited by the source text of a single program. Source variation is the result of a demand to have variant configurations of software operate across a spectrum of environments, even if this was not anticipated initially. This leads to multiple versions of the components of the source which are sensitive to their environments. The phenomenon of software variation will be perpetuated. As hardware costs continue to fall, even greater demands can be expected for flexible, portable systems. Reading and modifying the source text of a program with many variants can be facilitated by an organization which emphasizes the abstract structure of the program rather than the individual instances of the program as they are implemented. A hierarchical source structure is proposed, which reflects primarily the logical design structure of the software under control. Commonality and variation from version to version of a system are then readily apparent. Because human comprehension motivates the organization of source under this regime, it is not possible to supply source immediately to existing language processors. The structure calls for an extraction mechanism to produce particular source instances for implementation. Although this introduces an additional, preparatory step in implementation, it provides a facility for viewing the source as a database from which any subset of interest can be extracted. This proposal is defended by demonstrating its effectiveness in practice. Successful experience with the management of the source of Thoth, a portable operating system, is described. Pragmatic issues arising out of the design of programming languages and file systems are addressed. Other areas in which this view of source and its management would be beneficial are discussed.