2 research outputs found
Bidirectional data transformation by calculation
MAPi Doctoral Programme in Computer ScienceThe advent of bidirectional programming, in recent years, has led to the development of
a vast number of approaches from various computer science disciplines. These are often
based on domain-specific languages in which a program can be read both as a forward
and a backward transformation that satisfy some desirable consistency properties.
Despite the high demand and recognized potential of intrinsically bidirectional
languages, they have still not matured to the point of mainstream adoption. This
dissertation contemplates some usually disregarded features of bidirectional transformation
languages that are vital for deployment at a larger scale. The first concerns
efficiency. Most of these languages provide a rich set of primitive combinators that
can be composed to build more sophisticated transformations. Although convenient,
such compositional languages are plagued by inefficiency and their optimization is
mandatory for a serious application. The second relates to configurability. As update
translation is inherently ambiguous, users shall be allowed to control the choice of a
suitable strategy. The third regards genericity. Writing a bidirectional transformation
typically implies describing the concrete steps that convert values in a source schema to values a target schema, making it impractical to express very complex transformations,
and practical tools shall support concise and generic coding patterns.
We first define a point-free language of bidirectional transformations (called lenses),
characterized by a powerful set of algebraic laws. Then, we tailor it to consider
additional parameters that describe updates, and use them to refine the behavior of
intricate lenses between arbitrary data structures. On top, we propose the Multifocal
framework for the evolution of XML schemas. A Multifocal program describes a
generic schema-level transformation, and has a value-level semantics defined using the
point-free lens language. Its optimization employs the novel algebraic lens calculus.O advento da programação bidirecional, nos últimos anos, fez surgir inúmeras abordagens
em diversas disciplinas de ciências da computação, geralmente baseadas em
linguagens de domínio específico em que um programa representa uma transformação
para a frente ou para trás, satisfazendo certas propriedades de consistência desejáveis.
Apesar do elevado potencial de linguagens intrinsicamente bidirecionais, estas ainda
não amadureceram o suficiente para serem correntemente utilizadas. Esta dissertação
contempla algumas características de linguagens bidirecionais usualmente negligenciadas,
mas vitais para um desenvolvimento em mais larga escala. A primeira refere-se
à eficiência. A maioria destas linguagens fornece um conjunto rico de combinadores
primitivos que podem ser utilizados para construir transformações mais sofisticadas
que, embora convenientes, são cronicamente ineficientes, exigindo ser otimizadas para
uma aplicação séria. A segunda diz respeito à configurabilidade. Sendo a tradução de
modificações inerentemente ambígua, os utilizadores devem poder controlar a escolha
de uma estratégia adequada. A terceira prende-se com a genericidade. Escrever uma
transformação bidirecional implica tipicamente descrever os passos que convertem um
modelo noutro diferente, enquanto que ferramentas práticas devem suportar padrões
concisos e genéricos de forma a poderem expressar transformações muito complexas. Primeiro, definimos uma linguagem de transformações bidirecionais (intituladas de
lentes), livre de variáveis, caracterizada por um poderoso conjunto de leis algébricas. De
seguida, adaptamo-la para receber parâmetros que descrevem modificações, e usamo-los
para refinar lentes intrincadas entre estruturas de dados arbitrárias. Por cima, propomos
a plataforma Multifocal para a evolução de modelos XML. Um programa Multifocal
descreve uma transformação genérica de modelos, cuja semântica ao nível dos valores
e consequente otimização é definida em função da linguagem de lentes