This is a UC Berkeley Computer Science Ph.D. thesis; the research was done as part of the Xerox PARC Cedar project.
Here’s the abstract.
Breaking a program up into modules is an important technique for managing the complexity
of large systems. As the number of modules increases, the modules themselves need to be
managed. Changing even a single module can be difficult. Compilation and loading are
complicated. Saving the state of a program for others to build on is quite error-prone. The
development of a large program as part of a multi-person project is even worse. This thesis
presents solutions to these problems. We use new languages to describe the modules that
comprise a system and tools that automate software development.
The first solution developed is a version control system of modest goals that has been used to
maintain up to 450,000 lines of code over the past year. Users of this system list versions of files
in description files (DF files) that are automatically maintained for the user. DF files may refer to
other DF files when one software package depends on another. A working set of software that is
saved in a safe location is called a release. The need for a release process was identified and an
iterative algorithm that uses DF files to perform releases has been developed.
Based on experience with the DF system and the desire to automate the entire compile-edit-debug-release cycle, a second solution was developed in which the development cycle is controlled by the System Modeller. The modeller automatically manages the compilation, loading. and saving of new modules as they are produced. The user describes his software in a system model that lists the versions of files used, the information needed to compile the system, and the interconnections between the various modules. The modeller is connected to the editor and is
notified when files are edited and new versions are created. To provide fast response, the modeller behaves like an incremental compiler: only those modules that change are analyzed and recompiled.
This is a UC Berkeley Computer Science Ph.D. thesis; the research was done as part of the Xerox PARC Cedar project.
Here’s the abstract.
Breaking a program up into modules is an important technique for managing the complexity of large systems. As the number of modules increases, the modules themselves need to be managed. Changing even a single module can be difficult. Compilation and loading are complicated. Saving the state of a program for others to build on is quite error-prone. The development of a large program as part of a multi-person project is even worse. This thesis presents solutions to these problems. We use new languages to describe the modules that comprise a system and tools that automate software development.
The first solution developed is a version control system of modest goals that has been used to maintain up to 450,000 lines of code over the past year. Users of this system list versions of files in description files (DF files) that are automatically maintained for the user. DF files may refer to other DF files when one software package depends on another. A working set of software that is saved in a safe location is called a release. The need for a release process was identified and an iterative algorithm that uses DF files to perform releases has been developed.
Based on experience with the DF system and the desire to automate the entire compile-edit-debug-release cycle, a second solution was developed in which the development cycle is controlled by the System Modeller. The modeller automatically manages the compilation, loading. and saving of new modules as they are produced. The user describes his software in a system model that lists the versions of files used, the information needed to compile the system, and the interconnections between the various modules. The modeller is connected to the editor and is notified when files are edited and new versions are created. To provide fast response, the modeller behaves like an incremental compiler: only those modules that change are analyzed and recompiled.