Guilherme PiresGustavo Royer Chaurais
Orientação: Olinto José Varela Furtado
Banca: José Eduardo De Lucca eRicardo 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
0001037180320071737000000000000000000000000000000000000010112345 LUIZ INÁCIO DA SILVA3103200700001945000010254321 FERNANDO HENRIQUE CARDOSO3103200700020003000010312121 ITAMAR FRANCO3103200700011235000090317370000000000000000000000000000000000000000000000000
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 LINHASe 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 Guilherme Pires Gustavo Royer Chaurais
Orientação Olinto José Varela Furtado
Banca José Eduardo De Lucca Ricardo Azambuja Silveira
Top Related