System development is a multi-faceted activity, in which it is particularly true that the chain is only as strong as its weakest link. Some of its elements are: project management, configuration management, quality assurance, metrics, development process maturity, requirements specification and analysis, development methods (including test methods), automated tools, reviews, and personnel selection. A great deal of work has been carried out in recent years by this author and others addressing various of these elements; several of these workers properly emphasize the Systems nature of system development.
It remains, however, to address all the elements in a unified way, and this paper is an attempt to do so. It addresses all of the elements of system development, using the Software Engineering Institute's Capability Maturity Model as a guide, and defines the proper roles of process, methods, and tools.