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

  title={A Program Synthesis Approach for Adding Architectural Tactics to An Existing Code Base},
  author={Ali Shokri},
  journal={2021 36th IEEE/ACM International Conference on Automated Software Engineering (ASE)},
  • A. Shokri
  • Published 16 August 2021
  • Computer Science
  • 2021 36th IEEE/ACM International Conference on Automated Software Engineering (ASE)
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… 

Figures from this paper



Component-based synthesis for complex APIs

This paper presents a novel type-directed algorithm for component-based synthesis using a compact Petri-net representation to model relationships between methods in an API, and implements it in a tool called SyPet.

FrAngel: component-based synthesis with control structures

FrAngel is a new approach to component-based synthesis that can synthesize short Java functions with control structures when given a desired signature, a set of input-output examples, and a collection of libraries (without formal specifications).

Accelerating API-Based Program Synthesis via API Usage Pattern Mining

A novel approach to accelerate the speed of API-based program synthesis via API usage pattern mining using an off-the-shelf API-usage-pattern-mining tool and two strategies to incorporate the information about API usage patterns with program synthesis, and either strategy can improve the efficiency of program synthesis.

EdSynth: Synthesizing API Sequences with Conditionals and Loops

EdSynth is an API synthesis approach that explores the sequence spaces on-demand during the test execution and lazily initializes candidates during the execution of given tests where the part of the candidate completion that is actually executed directly determines the generation of future candidates.

ArCode: A Tool for Supporting Comprehension and Implementation of Architectural Concerns

  • A. ShokriM. Mirakhorli
  • Computer Science
    2021 IEEE/ACM 29th International Conference on Program Comprehension (ICPC)
  • 2021
ArCode, a tool designed as a plugin for a popular IDE, IntelliJ IDEA, is presented, able to learn correct ways of using frameworks’ API to implement architectural concerns such as Authentication and Authorization from two sources, sample programs that practice the framework, and the byte code of that framework.

Program synthesis by type-guided abstraction refinement

This work introduces type-guided abstraction refinement (TYGAR), a new approach for scalable type-directed synthesis over polymorphic datatypes and components, and implemented TYGAR in H+, a tool that takes as input a set of Haskell libraries and a query type, and returns a Haskell term that uses functions from the provided libraries to implement the query type.

Oracle-guided component-based program synthesis

A novel approach to automatic synthesis of loop-free programs based on a combination of oracle-guided learning from examples, and constraint-based synthesis from components using satisfiability modulo theories (SMT) solvers is presented.

How Much Support Can API Recommendation Methods Provide for Component-Based Synthesis?

This paper investigates 5 state-of-the-art API recommendation methods and proposes an approach of API Recommendation via General Search (ARGS), which can support component-based synthesis well and can effectively narrow down the program space and eventually improve the efficiency of program synthesis.

ArCode: Facilitating the Use of Application Frameworks to Implement Tactics and Patterns

A learning-based approach to help novice programmers correctly use frameworks’ APIs to implement architectural tactics and patterns called ARCODE, which demonstrates the feasibility of using ARCODE to learn the specification of a framework and outperforms two famous techniques, MAPO and GrouMiner, on API recommendation and misuse detection tasks.

Roles and Impacts of Hands-on Software Architects in Five Industrial Case Studies

Examination of five large-scale software systems shows that implementing architectural tactics is more complex than delivering functionality, tactics are more error prone than software functionalities, and the architects tend to introduce fewer bugs into the implementation of architectural tactics compared to the developers.