Máquina Draco-PUC

A máquina Draco é uma instância do paradigma Draco. Neighbors projetou e desenvolveu a primeira máquina Draco, tendo como funcionalidades prover :

Suporte para encapsulamento de domínios

Derivação semi-automática de código executável através de uma descrição escrita em uma ou mais linguagens de domínio

A principal característica do paradigma Draco é a utilização de linguagens para representar os domínios. A máquina Draco deve dar suporte a construção de linguagens de domínios, assim como o uso destas linguagens para o desenvolvimento de software.







Encapsulamento de Domínios

Encapsulamento de domínios é feito por desenhistas de domínios, que expressam em uma linguagem de domínio os dados reunidos pelos analistas de domínios.(vide figura acima) Uma linguagem de domínio tem sua sintaxe descrita por uma gramática e sua semântica descrita por transformações e refinamentos .

Um aspecto importante do paradigma Draco é a distinção entre transformações horizontais e verticais.

As transformações horizontais tem como objetivo atingir optimização de código e manipulação da estrutura utilizada como representação interna (AST). Estas transformações atuam dentro de um mesmo domínio, e basicamente, tentam aumentar a eficiência.

As transformações verticais fazem o mapeamento das estruturas sintáticas de um domínio em estruturas sintáticas equivalentes em outros domínios, com semânticas bem definidas. Estas transformações atuam entre diferentes domínios e são organizadas em componentes.




Desenvolvimento de Software

O desenvolvimento de Software é acompanhado pela produção de um programa executável, dado um conjunto de domínios e descrições de uma aplicação escritas em uma linguagem ou um conjunto de linguagens de domínios.

A máquina Draco produz, semi-automaticamente, um programa executável. Analistas de sistemas reutilizam informações fornecidas pelos desenhistas de domínios. A aplicação é definida como um programa Draco e então, traduzida para um programa executável. Um programa Draco é uma descrição escrita em uma ou mais linguagens de domínios.

Dado um programa draco, este será analisado por um parser de linguagens de domínios. Outros parsers podem ser chamados, se necessário para produzir uma forma interna(AST) chamada, na terminologia do Draco, de DAST (Draco AST).

Uma DAST armazenará a descrição da aplicação, um programa Draco, para futura manipulação durante as transformações. Um domínio é selecionado e o desenhista de sistema concentra sua atenção em uma área específica da árvore(DAST), onde as transformações horizontais serão aplicadas. O próximo passo será seguir uma série de transformações verticais gerando uma descrição em outra linguagem de domínio. O programa final, depois das transformações, é compilado ou interpretado gerando o produto executável.