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. It also 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). The report presents descriptions for several of the facets (areas of expertise) of the software assistant including requirements, specification validation, performance analysis, development, testing, documentations, and project management. This report also presents a plan for the development of the KBSA, along with a description of the necessary supporting technology.