We describe an initial prototype of a software engineering environment that combines case-based reasoning (CBR) and explanation-based learning (EBL) functions. CBR and EBL are used to evolve the environment's understanding of software principles as it is used. The case base serves as a repository for reusable solutions to software engineering problems. New solutions are synthesized from the case base through a process of adaptation, evaluation, and repair. When a new solution is returned, the user has the option of rnodioing it through a series of primitive edit operations. The environment is capable of abstracting from these operations using explanation-based generalization, and synthesizing a new repair rule on the basis of the
['Sidney C. Bailin', 'Robert H. Gattis', 'Walt Truszkowski']
A Learning-based Software Engineering Environment