part of the compiler. All members of the team were obliged to describe their parts of the compiler by means of flow-diagrams and English prose in complete detail at design time. The book grew very large — eventually to about 4000 pages. It was a lot of work to maintain it — perhaps 10–20% of our total effort — but it was worth it.
d’Agapeyeff: We make great use of seminars as an aid in preventing disasters, and in determining what to do when a disaster occurs. To participate in such seminars it is necessary to communicate fully and to a greater degree than has been possible here. For example, if I were suddenly to recruit you lot and form a rather good software house it would be excellent publicity, but it would not actually work. It certainly wouldn’t work at first, because you do not have a sufficient level of communication. One way to obtain this is by a commonality of experience. This is a major difficulty because it leads exactly to the point made by Buxton. It encourages you to work with your friends. But you have to remember that those who are incompetent find each other’s company congenial.
5.3. PRODUCTION — TECHNICAL ASPECTS
5.3.1. TOOLS
As a partial solution to the problems of making a success of the ‘human-wave’ approach to producing large Systems, David suggested:
David: (from Some thoughts about production of large software systems (1))
»A reliable, working system incorporating advanced programming and debugging tools must be available from the beginning. One requirement is an accessible file system for storing system modules and prototypes. An adequate file system should act as a common work space for system programmers and should have back-up facilities to insure against loss of valuable records.«
The most ambitious plans for a set of tools to aid in the production of large systems that were presented at the conference were those contained in a working paper by Bemer.
Bemer: (from Machine-controlled production environment)
»Tools for Technical Control of Production
1. Goals
a. Maximizing programmer effectiveness and personnel resources.
b. Minimizing time and costs for original production, changes and checkout.
c. Maintaining the best-conditioned system from a quality viewpoint.
2. Attainment
By utilizing the machine-controlled production environment, or software factory. Program construction, checkout and usage are done entirely within this environment using the tools it contains. Ideally it should be impossible to produce programs exterior to this environment. This environment should reside on the computing system intended for use, or in the case of manufacture of a new system, on the most powerful previous system available.
3. Functions Provided
a. Service
(i) Computing power and environment
(ii) A file system
(iii) Compilation
(iv) Building test systems
(v) Building final systems and distribution