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.

 

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 analyzes frameworks’ source code, mines a repository of code, identifies frameworks’ APIs used in programs, and creates API usage models. This approach is called ArCode.

 

Publications:
  • Shokri, A., 2021. A Program Synthesis Approach for Adding Architectural Tactics to An Existing Code Base. to be published in 2021 IEEE/ACM 36th International Conference on Automated Software Engineering (ASE).
  • Shokri, A. and Mirakhorli, M., 2021. DepRes: A Tool for Resolving Fully Qualified Names and Their Dependencies. arXiv preprint arXiv:2108.01165.
  • Shokri, A. and Mirakhorli, M., 2021. ArCode: A Tool for Supporting Comprehension and Implementation of Architectural Concerns. In 2021 IEEE 29th International Conference on Program Comprehension (ICPC) (pp. 485-489). IEEE.
  • Shokri, A., Santos, J.C. and Mirakhorli, M., 2021, March. ArCode: Facilitating the Use of Application Frameworks to Implement Tactics and Patterns. In 2021 IEEE 18th International Conference on Software Architecture (ICSA) (pp. 138-149). IEEE.