A Learning-Based Software Engineering Environment
Abstract
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 modifying 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 abstraction. We have successfully taught the environment a non-trivial design repair rule by means of a single example, and have observed the environment apply this learned rule to the solution of a new input problem.