  To implement important quality attributes of software such as architectural
security tactics, developers incorporate API of software frameworks, as
building blocks, to avoid re-inventing the wheel and improve their
productivity. However, this is a challenging and error-prone task, especially
for novice programmers. Despite the advances in the field of API-based program
synthesis, the state-of-the-art suffers from a twofold shortcoming when it
comes to architectural tactic implementation tasks. First, the specification of
the desired tactic must 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 it down into smaller pieces, adding each piece to
the 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, we introduce 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 them to
an existing code base. We extend our first-place award-winning extended
abstract recognized at the 36th IEEE/ACM International Conference on Automated
Software Engineering (ASE'21) research competition track. In this paper, we
provide the details of the approach, present the results of the experimental
evaluation of IPSynth, and analyses and insights for a more comprehensive
exploration of the research topic. Moreover, we compare the results of our
approach to one of the most powerful code generator tools, ChatGPT. Our results
show that our approach can accurately locate corresponding spots in the
program, synthesize needed code snippets, add them to the program, and
outperform ChatGPT in inter-procedural tactic synthesis tasks.
