Guilherme Pires
Gustavo Royer Chaurais
Orientação: Olinto José Varela Furtado
Banca: José Eduardo De Lucca e
Ricardo Azambuja Silveira

Cada vez mais




Pessoas capazes de desenvolver seu próprio software
Produtividade
Evolução natural
Muitos conceitos atuais tentam

Em vez de escrevermos código compreensível pelo
computador, faremo-lo entender o que queremos de
uma maneira inteligível por nós




Novo paradigma a substituir a Orientação a
Objetos
Possibilidade de mais pessoas poderem
construir seu software
Aumento da compreensão e, portanto, da
produtividade no desenvolvimento
Fortemente baseado em Domain Specific
Languages
00010371803200717370000000000000000000000000000000000000
10112345
LUIZ INÁCIO DA SILVA31032007000019450000
10254321
FERNANDO HENRIQUE CARDOSO31032007000200030000
10312121
ITAMAR FRANCO31032007000112350000
90317370000000000000000000000000000000000000000000000000
procedure LeiaLinha(const Linha: TLinha);
begin
if PegaCaracteres(Linha, 0, 1) = 0 then //HEADER
begin
NroBanco := PegaCaracteres(Linha, 2, 3);
DataGeracao := PegaCaracteres(Linha, 8, 8);
HoraInicioGeracao := PegaCaracteres(Linha, 17, 4);
end
else if PegaCaracteres(Linha, 0, 1) = 1 then //REGISTRO
begin
NSR := PegaCaracteres(Linha, 4, 5);
NomeCliente := PegaCaracteres(Linha, 9, 28);
DataVencto := PegaCaracteres(Linha, 37, 8);
ValorAPagar := PegaCaracteres(Linha, 45, 8);
end;
else if PegaCaracteres(Linha, 0, 1) = 9 then //TRAILER
begin
NroRegistros := PegaCaracteres(Linha, 2, 2);
HoraTerminoGeracao := PegaCaracteres(Linha, 4, 4);
end;
end;
LER LINHA
Se linha for HEADER
NroBanco inicia em 2, contando 3 caracteres,
DataGeracao inicia em 8, contando 8 caracteres,
HoraGeracao inicia em 17, contando 4 caracteres.
Se linha for REGISTRO
NSR inicia em 4, contando 5 caracteres,
NomeCliente inicia em 9, contando 28 caracteres,
DataVencto inicia em 37, contando 8 caracteres,
ValorAPagar inicia em 45, contando 8 caracteres.


Quem de nós (desenvolvedores) nunca
imaginou uma tarefa que pudesse ser
automatizada e seu resultado fosse código
fonte?
Problema: sistema para setor imobiliário




Solução procurar uma DSL para o domínio
Caso exista  Utilizá-la
Caso contrário  Criamos uma
Resultado final: código construído por uma ou
mais Domain Specific Languages focados em uma
plataforma/framework.


Estudo de caso em sistema para Cálculo de
Folhas de Pagamento
Desenvolvimento de duas versões:
Orientada a Objetos
 Language Oriented


Posterior análise comparativa

Versão Orientada a Objetos
Linguagem de Programação: C#
 Ambiente de Desenvolvimento: Microsoft Visual
Studio 2005
 Metodologia Utilizada: Test-Driven Development


Versão Language Oriented

Ferramenta para construção de DSLs: Microsoft DSL
Tools

Versão Orientada a Objetos

Módulos resultantes
 PayrollCalc
 PayrollTests
 PayrollInterface
 PayrollCalc.Regras
 PayrollCalc.Exportadores

Versão Language Oriented

Linguagens construídas/utilizadas
 Payrule – Regras
 Payxport - Exportadores
Vídeo de Exemplo

Geração de Código Final em LOP


Raramente um programa executável será resultante
Ferramentas Utilizadas


O Microsoft DSL Tools é baseado em diagramas
gráficos
Talvez para a linguagem Payxport seria mais fácil
utilizarmos um ambiente baseado em texto

LOP torna muito mais fácil a compreensão
sobre o programa escrito


Muito facilmente alguém que possua conhecimentos em
Cálculos de Folha de Pagamento poderia realizar uma
alteração nas Regras
Tempo para a construção de um projeto
Language Oriented



Conhecimento sobre metodologia e ferramenta de
desenvolvimento das DSLs
Documentação e exemplos disponíveis
Pré-existência das linguagens envolvidas





Necessita amadurecimento
Facilita a compreensão por qualquer pessoa
Agiliza o processo
Caso não seja com esse nome, muitos conceitos
estarão presentes no próximo paradigma
Previsões



Padrões para desenvolvimento de DSLs
Diferença bastante grande entre programador de
Domain Specific Languages e desenvolvedor de
sistemas
Empresas especializadas na construções desse tipo
de linguagem



Domain-specific language approach to
modelling UI architecture of mobile
telephony systems (Lee, J.-S.; Chae, H.S.)
Using domain specific languages to
instantiate object-oriented frameworks
(Fontoura, M.; Braga, C.; Moura, L.; Lucena, C.)
A domain-specific language approach to
programmable networks (G. Muller; J.L.
Lawall; S. Thibault; R.E. Voel Jensen)



Construção de ferramenta para a elaboração de
Domain Specific Languages
Utilização de uma DSL por não-programadores
Desenvolvimento de padrões para construção e
uso de DSLs

Orientandos



Orientação


Guilherme Pires
Gustavo Royer Chaurais
Olinto José Varela Furtado
Banca


José Eduardo De Lucca
Ricardo Azambuja Silveira
Download

Language Oriented Programming