Dissertação

{en_GB=Pure Function Synthesis in the OutSystems Platform} {} EVALUATED

{pt=A síntese de programas consiste em gerar automaticamente um programa a partir de uma especificação usada para definir a intenção do utilizador. A plataforma OutSystems é uma plataforma de desenvolvimento low-code que permite o desenvolvimento de aplicações através de uma interface gráfica. A plataforma OutSystems permite que a lógica das aplicações seja implementada através de fluxos de ações, que por sua vez podem ser usados para executar várias operações complexas e recorrentes, tais como as operações de manipulação de dados. Para tal, as funções puras podem ser usadas em expressões usadas pela linguagem OutSystems de forma a executar estas operações. As funções puras são um tipo de função que não tem quaisquer efeitos secundários e o seu valor de retorno é determinado pelos seus valores de input. Contudo, escrever este tipo de funções pode tornar-se uma tarefa repetitiva e aborrecida devido à sua frequência, e pode ainda ser uma tarefa difícil para utilizadores com menos experiência. Neste documento apresentamos o PUFS, um sintetizador de funções puras, que dado um conjunto de exemplos input-output, como especificação do comportamento da função desejada, sintetiza uma função pura. A nossa solução consiste numa combinação entre sketches de programas como uma representação parcial de uma função parcial e procura enumerativa em conjunto com Satisfazibilidade Módulo Teorias (SMT), para preencher os sketches de programas de forma a obter a função completa. Avaliámos a nossa solução em instâncias do mundo real, mostrando resultados experimentais promissores para muitas das funções puras recorrentes e comuns., en=Program synthesis consists in automatically generating a program from a specification used to define user intent. The OutSystems platform is a low-code development platform which allows the development of applications through a graphical user interface. The OutSystems platform allows business logic to be implemented through action flows, which can be used to perform several complex and recurrent operations, such as data wrangling operations. In order to do this, pure functions can be used within OutSystems language expressions to perform these operations. Pure functions are a type of functions that have no side-effects and their returned value is determined by its inputs. However, writing this type of functions might become a tedious and repetitive task due to its recurrence, and might even be a difficult task for less experienced users. In this work we present PUFS, a pure function synthesizer that given a set of input-output examples, as a specification of the function's desired behavior, synthesizes a pure function. Our solution consists of a combination between program sketches as a representation of a partial function and enumeration based search alongside Satisfiability Modulo Theories (SMT) to fill the sketches in order to obtain the complete function. The proposed solution was evaluated on a set of real-world examples, showing promising results for recurrent and common pure functions. }
{pt=Síntese de Programas, Satisfazibilidade Módulo Teorias, Programação-por-Exemplo, en=Program Synthesis, Satisfiability Modulo Theories, Programming-by-Example}

Janeiro 14, 2021, 10:30

Orientação

ORIENTADOR

Maria Inês Camarate de Campos Lynce de Faria

Departamento de Engenharia Informática (DEI)

Professor Associado

ORIENTADOR

Miguel Ângelo da Terra Neves

OutSystems

Senior Research Scientist