ABSTRACT This report presents a knowledge-based, life-cycle paradigm for the development, evolution, and maintenance of large software projects. To resolve current software development and maintenance problems, this paradigm introduces a fundamental change in the software life cycle — maintenance and evolution occur by modifying the specifications and then rederiving the implementation, rather than attempting to directly modify the optimized implementation. Since the implementation will be rederived for each change, this process must be automated to increase its reliability and reduce its costs. Basing the new paradigm on the formalization and machine capture of all software decisions allows knowledge-based reasoning to assist with these decisions. This report describes a knowledge-based software assistant (KBSA) that provides for the capture of, and reasoning about, software activities to support this new paradigm. This KBSA will provide a corporate memory of the development history and act throughout the life cycle as a knowledgeable software assistant to the human involved (e.g., the developers, maintainers, project managers, and end-users. In this paradigm, software activities, including definition, management, and validation will be carried out primarily at the specification and requirements level, not the implementation level. The transformation from requirements to specifications to implementations will be carried out with automated, knowledge-based assistance. The report presents descriptions for several of the facets (areas of expertise) of the software assistant including requirements, specification validation, performance analysis, development, testing, documentation, and project management. The report also presents a plan for the development of the KBSA, along with a description of the necessary supporting technology. This new paradigm will dramatically improve productivity, reliability, adaptability, and functionality in software systems.