Dissertação

SQUARES : A SQL Synthesizer Using Query Reverse Engineering EVALUATED

Actualmente, com a enorme quantidade de dados com que os analistas de dados precisam de lidar diariamente, estes frequentemente encontram tabelas com dados interessantes e não sabem como estas tabelas foram geradas. Deste modo, há uma necessidade crescente de sistemas capazes de resolver o problema de Engenharia Reversa de Consultas (ERC, Query Reverse Engineering da literatura inglesa). Dada uma base de dados D e uma tabela de saída Q(D), estes sistemas precisam encontrar uma consulta Q, de modo que, ao executar Q em D, o resultado é igual a Q(D). ERC pertence à área de Síntese de Programas. O objetivo da área de Síntese de Programas é gerar automaticamente programas que atendem a uma determinada especificação de alto nível. Desde os anos 60, Síntese de Programas é um problema bem estudado e tem sido considerado o Santo Graal da Ciência da Computação. Até agora, os sintetizadores de programas usavam uma única árvore para representar programas. Neste trabalho propomos um novo sintetizador de SQL baseado em enumeração, SQUARES, que usa uma nova representação por linhas na qual cada linha do programa é representada pela sua própria subárvore. Resultados experimentais na síntese de consultas SQL mostram que a codificação proposta baseada em linhas permite uma enumeração mais rápida de programas quando comparada à codificação usual baseada em árvore e permite encontrar programas com uma sequência maior de operações. Resultados experimentais na síntese de consultas SQL da OutSystems mostram que o SQUARES supera o Scythe, um sintetizador de SQL de última geração.
Síntese de Programas, Engenharia Reversa de Consultas (ERC), Teorias de módulos de satisfação (TMS), Síntese baseada em enumeração, SQL

novembro 15, 2019, 14:30

Publicação

Obra sujeita a Direitos de Autor

Orientação

ORIENTADOR

Vasco Miguel Gomes Nunes Manquinho

Departamento de Engenharia Informática (DEI)

Professor Associado

ORIENTADOR

Miguel Monteiro Ventura

OutSystems

Lead Software Engineer