This is a description of the organization of the Toolpack software development environment. The Toolpack project is an attempt to promote the widespread use of modern software tools by providing a set of high-quality tools and a software environment to integrate and coordinate them.
The heart of the Toolpack environment is a tree-structured file system which holds, for each program or subprogram in the software under development, a diverse collection of files which relate to it or are derived from it in some way. These might include such things as multiple versions of the source text; different “views” of a version, such as its parse tree, symbol table, or flowgraph; test data sets and results of test runs; and instrumented versions, in which code has been inserted to produce traces or to check assertions. Then a software tool is implemented as a program which derives such files from one or more existing files, inserting the new files in the appropriate place in the tree. A tool will know where to find the data it needs in the tree, or how to derive that date (if possible) if it is not already present.
Some of the proposed tools are a syntax-directed editor; a source code reformatter; a structurer (which, for example, converts “goto” loops to “while” loops); a tool for instrumenting programs for tracing or assertion checking; a debugger; static analysis tools for detecting data flow anomalies and portability problems; documentation generation aids; and assorted program transformation tools. It seems to me that such a set of tools would be quite useful in the development of any kind of software, not just mathematical software. In fact, the only way in which Toolpack is oriented toward mathematical software seems to be that the source language supported is FORTRAN 77.
Experience will tell whether the Toolpack effort will succeed in its purpose, and whether the organization of the Toolpack environment will turn out to be an effective one. However, everything which is proposed in this paper seems quite plausible. Anyone planning to build a software development environment should study the Toolpack project as an example of significant current work. A similar account of the Toolpack project appeared in [1].