A Program Synthesis Approach for Adding Architectural Tactics to An Existing Code Base

Automatically constructing a program based on given specifications has been studied for decades. Despite the advances in the field of Program Synthesis, the current approaches suffer from a twofold issue: highly relying on the programmer for providing the specifications, and leaving the task of incorporating the synthesized code in an existing code base to program developers. Due to its program-wide effects, synthesizing an architectural tactic and reusing it in a program is even more challenging. Architectural tactics need to be synthesized based on the context of different locations of the program, broken down to smaller pieces, and added to corresponding locations in the code. Moreover, each piece needs to establish correct data- and control-dependencies to its surrounding environment as well as to the other synthesized pieces. This is an error-prone and challenging task, especially for novice program developers. In this paper, we introduce a novel program synthesis approach that synthesizes and adds architectural tactics to an existing code base.

[1]  Sumit Gulwani,et al.  Oracle-guided component-based program synthesis , 2010, 2010 ACM/IEEE 32nd International Conference on Software Engineering.

[2]  Ranjit Jhala,et al.  Program synthesis by type-guided abstraction refinement , 2019, Proc. ACM Program. Lang..

[3]  Isil Dillig,et al.  Component-based synthesis for complex APIs , 2017, POPL.

[4]  Binbin Liu,et al.  How Much Support Can API Recommendation Methods Provide for Component-Based Synthesis? , 2020, 2020 IEEE 44th Annual Computers, Software, and Applications Conference (COMPSAC).

[5]  Wei Dong,et al.  Accelerating API-Based Program Synthesis via API Usage Pattern Mining , 2019, IEEE Access.

[6]  Yves Le Traon,et al.  Learning to Spot and Refactor Inconsistent Method Names , 2019, 2019 IEEE/ACM 41st International Conference on Software Engineering (ICSE).

[7]  Mehdi Mirakhorli,et al.  ArCode: A Tool for Supporting Comprehension and Implementation of Architectural Concerns , 2021, 2021 IEEE/ACM 29th International Conference on Program Comprehension (ICPC).

[8]  Mehdi Mirakhorli,et al.  ArCode: Facilitating the Use of Application Frameworks to Implement Tactics and Patterns , 2021, 2021 IEEE 18th International Conference on Software Architecture (ICSA).

[9]  Meiyappan Nagappan,et al.  Roles and Impacts of Hands-on Software Architects in Five Industrial Case Studies , 2018, 2018 IEEE/ACM 40th International Conference on Software Engineering (ICSE).

[10]  C. Cordell Green,et al.  What Is Program Synthesis? , 1985, J. Autom. Reason..

[11]  Sarfraz Khurshid,et al.  EdSynth: Synthesizing API Sequences with Conditionals and Loops , 2018, 2018 IEEE 11th International Conference on Software Testing, Verification and Validation (ICST).

[12]  Anthony Peruma,et al.  Understanding Software Vulnerabilities Related to Architectural Security Tactics: An Empirical Investigation of Chromium, PHP and Thunderbird , 2017, 2017 IEEE International Conference on Software Architecture (ICSA).

[13]  Percy Liang,et al.  FrAngel: component-based synthesis with control structures , 2018, Proc. ACM Program. Lang..

[14]  Emily Hill,et al.  Towards automatically generating descriptive names for unit tests , 2016, 2016 31st IEEE/ACM International Conference on Automated Software Engineering (ASE).

[15]  Daiyan Wang,et al.  ProSy: API-Based Synthesis with Probabilistic Model , 2020, Journal of Computer Science and Technology.

[16]  Humberto Cervantes,et al.  A Principled Way to Use Frameworks in Architecture Design , 2013, IEEE Software.