Trabalho de Conclusão de Curso Moisés Alves Carneiro Filho Orientador: Prof. M. Sc. Marum Simão Filho Agenda Introdução Padrões de Projeto Facade Interpreter Strategy DSL - Domain-Specifc Language DDD - Domain-Driven Design DSL - Domain-Specifc Language Exemplos de DSL Tipos de DSL 5 de novembro de 2015 2 Agenda Aplicando Padrões de Projeto no Desenvolvimento de DSL Domínio Modelo Aplicando padrões de Projeto Aspectos de Implementação DSL e os Padrões de Projeto Facade Interpreter Strategy Conclusões e Trabalhos Futuros 5 de novembro de 2015 3 Introdução Motivação Implementação de uma DSL; Utilização de Padrões de Projeto. Objetivo Aplicar e analisar a utilização de Padrões de Projeto na construção de uma ferramenta que implementa DSL. 5 de novembro de 2015 4 Padrões de Projeto “Cada padrão descreve um problema no nosso ambiente e o cerne da sua solução, de tal forma que você possa usar essa solução mais de um milhão de vezes, sem nunca fazê-lo da mesma maneira” (Alexander, 1979). Conceito: são descrições de boas soluções aplicadas recorrentemente para resolver problemas específicos. 5 de novembro de 2015 5 Padrões de Projeto Alguns Elementos Nome Problema Solução Conseqüências Classificações Finalidade Criacionais, Comportamentais e Estruturais Escopo Objeto e Classe 5 de novembro de 2015 6 Padrão de Projeto Facade Conceito: Fornece uma interface que unifica um conjunto de outras interfaces de um mesmo sistema. Motivações: Redução da complexidade, que torna o projeto livre de maiores dependências, minimizando as comunicações; Organização e controle; Facilita manutenção. 5 de novembro de 2015 7 Padrão de Projeto Facade Figura 1 – Entendendo o padrão Façade (GAMMA et al., 2006, p. 179) 5 de novembro de 2015 8 Padrão de Projeto Interpreter Conceito: “Dada uma linguagem, definir uma representação para a sua gramática juntamente com um interpretador que usa a representação para interpretar sentenças dessa linguagem” (GAMMA et al, 2006, p. 186). Motivações: Resolver problemas de mapeamento de expressões recorrentes onde os termos podem ser mapeados. 5 de novembro de 2015 9 Padrão de Projeto Interpreter Figura 2 – Estrutura do Padrão Interpreter (GAMMA et al, 2006, p. 234) 5 de novembro de 2015 10 Padrão de Projeto Strategy Conceito: define famílias de algoritmos e as torna passíveis de comunicação, permitindo que o algoritmo possa variar, independente dos clientes que o utilizam. Motivações: Quando é necessário permitir que o algoritmo que será executado possa ser escolhido em tempo de execução; Estratégia não utiliza herança como fator principal. 5 de novembro de 2015 11 Padrão de Projeto Strategy Figura 3 – Estrutura do padrão Strategy (GAMMA et al, 2006, p. 294) 5 de novembro de 2015 12 DSL - Domain-Specific Languages Desenvolvimento de Software mais próximo do cliente DDD - Domain-Driven Design Domínio Modelo DSL - Domain-Specific Language Tipos: Interna Externa 5 de novembro de 2015 13 DSL - Domain-Specific Languages SQL Figura 3 – Exemplo de DSL Externa – SQL 5 de novembro de 2015 14 Aplicando Padrões de Projeto Estudo de Caso: Aplicativo para recebimento de resultados de análises clínicas. Domínio: Laboratórios de Análises Clínicas. Modelo: Baseado em um diagrama de fluxo de dados. 5 de novembro de 2015 15 Aplicando Padrões de Projeto Modelo: 5 de novembro de 2015 Figura 4 – Modelo do Estudo de Caso 16 Aplicando Padrões de Projeto Padrão de Projeto Facade Motivações Complexidade nas instruções de leitura de arquivos; Número de funções utilizadas no processo; Objetivos Compreensão do perito do domínio; Manutenção do código; Regras de Negócio envolvidas; 5 de novembro de 2015 17 Aplicando Padrões de Projeto Padrão de Projeto Interpreter SÍMBOLOS SIGNIFICADO -- Muito Abaixo do Normal - Abaixo do Normal Norm Normal + Acima do Normal ++ Muito Acima do Normal Tabela 1 – Exemplo de Aplicação do Padrão Interpreter 5 de novembro de 2015 18 Aplicando Padrões de Projeto Padrão de Projeto Strategy Motivação Formas diferentes de salvar os arquivos tratados; Possibilidade de alteração em tempo de execução. Objetivo Tornar flexível a forma de geração dos arquivos. 5 de novembro de 2015 19 Aplicando Padrões de Projeto Aspectos de Implementação DSL e a Linguagem de Programação Vantagens da utilização dos Padrões de Projeto Facade Necessidade de novos níveis de abstração Interpreter DSL Externas Utilização com cautela Strategy Flexibilidade Criação de níveis de Abstração 5 de novembro de 2015 20 Conclusões e Trabalhos Futuros Conclusões Necessidade de criação de Níveis de Abstração; Padrões de Projeto => Novos Níveis de Abstração; Flexibilidade de Desenvolvimento; Confiança sobre o código escrito. Trabalhos Futuros Análise comparativa de técnicas de desenvolvimento; Desenvolvimento de padrões mais específicos para DSL; Técnicas de construção de modelo do Domínio. 5 de novembro de 2015 21