High costs and long backlogs in software development and maintenance often constrict an organization's ability to compete. Proposed solutions frequently include organizational changes and methodologies for systematic software reuse. The approach described in this article integrates the reengineering of legacy software and the reuse-based production of new software applications. In addition, the authors propose methodologies and enabling technologies for transitioning from current practices. The main innovation lies in the role and impact of reengineering legacy software in the proposed software life cycle. <p>The top-down comprehensive methodologies advocated to date for transitioning from the prevailing software development and maintenance modes to the software reuse mode have proven to be costly and risky, with long-delayed payback periods for recovering the initial investment. However, the integration of legacy software reengineering in a reuse-based software life cycle, supported by enabling computer-aided-software-engineering environments, accelerates and economizes on the transitional processes and their ongoing operation. The authors illustrate this approach from their experience with integrating existing automatic software engineering/reengineering environments. </p> <p>The cost of developing software for even a few applications using a conventional methodology should approximately equal the cost of developing the domain reuse components from legacy software and generating the applications from them. The payoff comes in the declining incremental costs of engineering new applications from reusable components.</p>