O principal objetivo dessa página é disseminar nosso
conhecimento sobre uma forma de produção de software inovadora, mas ainda em
fase de pesquisa.
A grande meta de nosso projeto é dispor no futuro, não só de uma máquina de pordução
automática de sistemas, mas também de muitos domínios que tornarão possível o uso efetivo
dessa máquina. No estágio atual temos utilizado a máquina em tarefas de tradução de linguagens como também para a re-engenharia de sistemas (vide as referências).
Comentários e dúvidas sobre o nosso projeto podem ser feitos através do nosso livro de visitas
ou por e-mail para draco@inf.puc-rio.br
A máquina Draco-PUC é uma implementação
parcial do Paradigma Draco no desenvolvimento de software.O paradigma Draco defende
a possibilidade de desenvolver
software baseado no reuso de abstrações de alto
nível, as quais são escritas em linguagens de proprósitos
especiais. Estas linguagens são chamadas linguagens de
domínios.
O nome Draco reflete o fato de estarmos tratando com uma constelação e portanto
com um conjunto de estrelas, que no caso seriam as linguagens. Clique
aqui
para pesquisar páginas relacionadas a astronomia.
Nosso trabalho na PUC-Rio é fundamentado na re-engenharia do protótipo construído por Neigbohrs e na construção de domínios.
A idéia de domínios e análise de domínios tem sido um importante tema na pesquisa de reuso de software. O ganho na produtividade pelo reuso de abstrações de alto nível compensa o investimento na modelagem, organização e armazenamento das abstrações.
A máquina Draco-PUC reúne tecnologias
que permitem a construção e uso de domínios
do Draco.Estes domínios podem ser classificados em três
grupos :
Domínios
de Aplicação
Domínios de Modelagem
Domínios Executáveis
Domínios de Aplicação são domínios que encapsulam conhecimento não relacionado a Ciência da Computação. Domínios de Modelagem são modelos básicos utilizados em aplicações e desenvolvidas por especialistas, assim como base de dados, interfaces e sistemas operacionais. Domínios executáveis são linguagens de programação.
Os Domínios são descritos em linguagens, logo temos linguagens pertencendo a diferentes classes. Por exemplo, um dominiio de aplicação X pode ter sua semântica descrita nas linguagens C,B e D, onde,: C está descrita em Y e Z, B está descrita em Y e W, D está descrita em T, e Y e Z estão descritas em T, de modo que T e W são domínios executáveis.
A rede de domínios é um conjunto
de linguagens onde uma linguagem possui sua semântica descrita
em linguagens do Draco. A Figura abaixo indica que : a análise
de domínios executáveis é responsável
pela escolha da linguagem de programação; a análise
de domínios de modelagem busca na literatura e define um
conjunto de modelagens de domínios; a análise de
domínios de aplicação, elicitam com os clientes
a definição de um domínio de aplicação,
e os projetistas de domínio encapsulam as informações
na forma de domínios, com a possibilidade de reutilizar
domínios já construídos.

A hipótese por trás de nosso projeto de pesquisa
é que o uso do paradigma Draco aumentara a produtividade da produção
de software com base na reutilização de domínios.(vide figura abaixo)

Analistas de Sistemas reutilizam
as abstrações de alto nível para elicitar
e representar as nececidades dos clientes. Os desenhistas do sistema
reusam modelos já existentes para a geração
automática de código.
O objetivo de nossa pesquisa é investigar
a praticidade do paradigma Draco. A estratégia que estamos
seguindo é baseada na existência de uma máquina,
Draco-PUC, na construção de domínios e na
utilização destes domínios no desenvolvimento
de software. Atualmente ainda estamos centrando nossa atenção na parte
da máquina. Como resultado do processo de re-engenharia, conseguimos
hoje uma máquina extremamente versátil sob o ponto de vista de análise
sintática e um sistema transformacional bastante poderoso.