Process programming by hindsight
ICSE '92 Proceedings of the 14th international conference on Software engineering
The role of analogy in software reuse
SAC '93 Proceedings of the 1993 ACM/SIGAPP symposium on Applied computing: states of the art and practice
A hybrid approach to software reuse
SSR '95 Proceedings of the 1995 Symposium on Software reusability
Automated Software Synthesis: An Application in Mechanical CAD
IEEE Transactions on Software Engineering
IEEE Transactions on Knowledge and Data Engineering
Synthesis of strategies from interaction traces
Proceedings of the 7th international joint conference on Autonomous agents and multiagent systems - Volume 2
Representation, indexing, and retrieval of biological cases for biologically inspired design
ICCBR'11 Proceedings of the 19th international conference on Case-Based Reasoning Research and Development
Hi-index | 0.00 |
The feasibility of derivational analogy as a mechanism for improving problem-solving behavior has been shown for a variety of problem domains by several researchers. However, most of the implemented systems have been empirically evaluated in the restricted context of an already supplied base analog or on a few isolated examples. In this paper we describe a derivational analogy based system, APU, that synthesizes UNIX shell scripts from a high-level problem specification. APU uses top-down decomposition of problems, employing a hierarchical planner and a layered knowledge base of rules, and is able to speed up the derivation of programs by using derivational analogy. We assume that the problem specification is encoded in the vocabulary used by the rules. We describe APU's retrieval heuristics that exploit this assumption to automatically retrieve a good analog for a target problem from a case library, as well as its replay algorithm that enables it to effectively reuse the solution of an analogous problem to derive a solution for a new problem. We present experimental results to assess APU's performance, taking into account the cost of retrieving analogs from a sizable case library. We discuss the significance of the results and some of the issues in using derivational analogy to synthesize programs.