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
LUIZ INÁCIO DA SILVA FERNANDO HENRIQUE CARDOSO ITAMAR FRANCO
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;
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 Guilherme Pires Gustavo Royer Chaurais Orientação Olinto José Varela Furtado Banca José Eduardo De Lucca Ricardo Azambuja Silveira