Using programming expertise for controlling software synthesis
Rattikorn Hewett · Journal of Experimental & Theoretical Artificial Intelligence · 1996
Achieving efficient software implementations requires a great deal of knowledge, intelligence, and expertise on the part of programmers. One way to enhance software productivity is to incorporate the knowledge and skills of expert programmers into software synthesis systems to automate software development processes. Although many software synthesis systems have been developed, automatic control of synthesis remains a difficult problem. Understanding the role of expertise in software synthesis, and making it more explicit, can help us not only to gain autonomy in controlling the synthesis processes but also to better justify the design, implementations, selection of data structures or algorithms employed in constructing code. Our project aims at making synthesis as autonomous as possible by advances in intelligent control mechanisms to reduce user interaction in the synthesizer. In our earlier work, a blackboard control framework for controlling synthesis processes was introduced. This paper describes how the control framework language was designed and how knowledge in the knowledge bases of the framework was acquired and constructed. We present an example that shows how programming expertise can be used to increase the degree of autonomy in synthesis control, in particular by automating the selection of an appropriate data structure implementation.