A software-development system or versioning system has a collection of
modules for performing individual development functions such as document
editing, keyword processing, and private-copy management. Each module has
an interface compatible with that of the others, so that modules can be
added to or substituted for the original modules, if the new modules
conform to the interface. The architecture of this system supports the
performance of development actions such as document merging and keyword
expansion at any location within the system. The system operates upon
documents and files as objects in an object space, rather than in name
spaces.