Software architectural tactics are design decisions made by software architects to address important quality attributes of software systems such as security, availability, and reliability. Software developers incorporate API of software frameworks, as building blocks, for implementing architectural tactics in a software system to achieve the mentioned quality attributes. The correct implementation of such tactics is a challenging and error-prone task, especially for novice programmers. Component-based program synthesis aims to help such programmers by automatically constructing a code snippet from a given set of components, e.g., APIs, as well as the specification of the desired code. However, despite the advances in this field, the current trend of synthesis approaches suffers from a twofold shortcoming regarding architectural tactic implementation tasks. First, the specification of the desired tactic has to be explicitly expressed, which is out of the knowledge of such programmers. Second, these approaches synthesize a block of code and leave the task of breaking down the synthesized code into smaller pieces, adding each piece to its proper location in the code, and establishing correct dependencies between each piece and its surrounding environment as well as the other pieces, to the programmer. To mitigate these challenges, this dissertation introduces \textsc{IPSynth}, a novel inter-procedural program synthesis approach that automatically learns the specification of the tactic, synthesizes the tactic as inter-related code snippets, and adds the synthesized code pieces to their corresponding locations in an existing code base. In that regard, the approach learns the tactic specification model from two sources, (i) some sample programs that incorporate the API of frameworks to implement the tactic, and (ii) the source code of frameworks that provide the incorporated APIs. Then, the approach will be able to automatically annotate the learned API usage model, identify correct mappings between model annotations and corresponding locations in the code, generate sketches of to-be-synthesized code snippets, and finally, resolve the created sketches. The experimental study as well as the comparative analysis shows that the approach can effectively generate tactic codes and outperforms the state of the art in the given tasks. The deliverables of the research, including different components of the approach, created datasets, as well as developed tools, have been open-sourced and shared with the community.

Library of Congress Subject Headings

Software frameworks; Software architecture; Application program interfaces (Computer software)

Publication Date


Document Type


Student Type


Degree Name

Computing and Information Sciences (Ph.D.)


Mehdi Mirakhorli

Advisor/Committee Member

Venera Arnaoudova

Advisor/Committee Member

Mohamed Weim Mkaouer


RIT – Main Campus

Plan Codes