Software Synthesis

OVERVIEW

Program Synthesis refers to techniques and approaches that automatically generate a program based on a specification described by the programmer or end-user. In this research project, we aim to find ways to improve programmers’ productivity in producing software while preserving the quality of the code.

To achieve the aforementioned goal, we designed an approach that mines a repository of code, identifies frameworks’ APIs used in programs, and creates API usage models. This approach is called SpecMiner.

Then, in an interaction with the programmer, our code generator approach (FSpec2Code) captures the specification of the intended program. Leveraging the mined API usage models alongside program synthesis techniques, FSpec2Code generates a syntax and semantic error-free software.