Application of AI planning techniques to automated code synthesis and testing

Rapid growth in the demand for embedded systems and the increased complexity of embedded software pose an urgent need for advanced embedded software development techniques. One attractive approach is to enable semi-automated code generation and integration of systems from components. However, the implementation and validation of these systems requires a steep learning curve due to the large number, variety, and complexity of software components. In this paper, we discuss the potential application of AI planning techniques in assisting with the synthesis of glue code for assembling a system from existing components as well as automated testing of the system. The approach works by transforming component specifications into rules that operate on a domain-specific state space. Each rule captures the semantics of a method in a class. The code assembly and testing requirements are described by identifying conditions (goals) that should be achieved. An automated planning system computes a sequence of rules and their instantiations that will achieve the goal state. This sequence is then used to synthesize the code or to generate test cases. The approach is illustrated using an example.

[1]  Kazuhiko Ozeki,et al.  An adaptive filtering algorithm using an orthogonal projection to an affine subspace and its properties , 1984 .

[2]  Alan W. Brown,et al.  Enterprise-scale CBD: building complex computer systems from components , 1999, STEP '99. Proceedings Ninth International Workshop Software Technology and Engineering Practice.

[3]  Dusko Pavlovic,et al.  Composition and refinement of behavioral specifications , 2001, Proceedings 16th Annual International Conference on Automated Software Engineering (ASE 2001).

[4]  A. Mili,et al.  Storing and retrieving software components: a refinement based system , 1994, Proceedings of 16th International Conference on Software Engineering.

[5]  Balbir S. Barn,et al.  Methods and tools for component based development , 1998, Proceedings. Technology of Object-Oriented Languages. TOOLS 26 (Cat. No.98EX176).

[6]  Stefano Ceri,et al.  Toward megaprogramming , 1992, CACM.

[7]  Tim Sheard,et al.  Accomplishments and Research Challenges in Meta-programming , 2001, SAIG.

[8]  Edward A. Lee,et al.  Ptolemy: A Framework for Simulating and Prototyping Heterogenous Systems , 2001, Int. J. Comput. Simul..

[9]  Ing-Ray Chen,et al.  Reliability assessment of multiple-agent cooperating systems , 1997 .

[10]  Roland Mittermeir,et al.  Storing and retrieving software components: a refinement based system , 1994, ICSE '94.

[11]  Walid Taha,et al.  MetaML and multi-stage programming with explicit annotations , 2000, Theor. Comput. Sci..

[12]  Ralph Johnson,et al.  Object-oriented megaprogramming (panel) , 1992, OOPSLA '92.

[13]  Jeannette M. Wing,et al.  Specification matching of software components , 1997 .

[14]  James A. Hendler,et al.  Computing similarity in a reuse library system: an AI-based approach , 1992, TSEM.