SLIDE 54 Learning-Based Software Engineering
- The use of machine learning technique to learn from
some set of data or information retrieval system.
A Learning-Based Software Engineering Environment
Sidney C. Bailin, Robert H. Gattis, and Walt Truszkowski* 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 o f 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 o
f primitive edit operations. The
environment is capable of abstracting from these
- perations using explanation-based generalization, and
synthesizing a new repair rule on the basis o f 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.
1 Introduction
A Knowledge-Based Software Engineering Environ- ment (KBSEE) is being developed as part of the NASA Initiative on Software Engineering. A key subsystem of the KBSEE is the LEARN environment (LEARN stands for Learning Enhanced Automation of Reuse eNgineering), so named because of its ability to learn new methods and techniques. The requirement for a learning capability follows from the extraordinary complexity of software engineering, as contrasted with other domains to which knowledge-based techniques have been applied, and from the fact that the discipline is only incompletely understood by its human practitioners. Moreover, the discipline is evolving: as application requirements become
more demanding and
varied, new approaches to software development are continually being devised. In such a field, it is unreasonable to expect to be able to encode sufficient knowledge directly into a computer system for it to be able solve the problems that humans tackle. Human
*Sidney C. Bailin and Robert H. Gattis are with CTA INCORPORATED, 61 16 Executive Boulevard, Suite 800, Rockville, MD 20852. Walt Truszkowski is with the Data Systems Technology Division of NASA/Goddard Space Flight Center, Greenbelt, MD 20771.
expertise
software grows and develops over
- time. A knowledge-based computer system capable of
- ffloading non-trivial engineering tasks from the human
must also possess such an ability. If a KBSEE is ever to be able to move beyond "toy" problems, it must be able to learn. Our analysis of alternative machine learning approaches led us to propose a combination of two techniques: case-based reasoning (CBR) and explanation-
based learning (EBL). Case-based reasoning is, in
essence, an approach to reusing previously acquired
- knowledge. New situtations are recognized as having
characteristics in common with situations previously
- encountered. Whatever has been learned through the
previous encounter is then applied, with some adaptation
if necessary, to the new situation. In the KBSEE, these
situations (cases) are software engineering problems (for example, a set of requirements), and the reusable knowledge consists of solutions to such problems (e.g., a design meeting the requirements). Explanation-based learning is an approach to learning by abstracting key characteristics from an example provided by the user. In the KBSEE, the user is the software engineer, and the examples represent recommended ways of solving a problem. In every activity that the KBSEE performs, there is an opportunity to learn how to do it better. For example, in matching a new set of requirements to requirements that have been previously satisfied, some judgment of what constitutes a best match is required. This judgment is not easily formalized in a set of rules, but it can be learned piecemeal
- ver time as the user corrects the actions taken by the
- KBSEE. The same is true of adapting a previous solution
to new requirements, checking the new solution for required quality attributes, and refining the solution if the quality assessment fails. In all of these activities, the
KBSEE can learn from the user how to improve the
- process. The KBSEE is thus playing the role of an
apprentice who learns by doing, under the supervision of an expert (the user). Eventually, the apprentice should acquire sufficient knowledge to perform non-trivial tasks independently. This paper describes the fist prototype of LEARN, and walks through an example of the KBSEE learning a new design rule. The prototype consists of a case-based reasoner, into which we have integrated an explanation-
198
0-8186-2605-4/91$1.00 Q 1991 IEEE