He suggests that any program should be considered a member of a family of programs, all of which perform related tasks. If one plans for change when a program is designed less effort may be required to produce future revisions.
Today there is an emphasis on building software components for reuse.
Components may be designs, programs, functions, classes, or code segments. Processes have been developed to introduce and support reuse programs. The disciplines of domain engineering and software synthesis emphasize creating families of components and developing tools to assist in constructing them. Component generation is a prominent part of most efforts. Until recently, the literature has focused on the processes.