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 é 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.
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.