Aplicando Padrões de Projeto no Desenvolvimento de DSL: Um estudo de caso 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 DSL - Domain-Specifc Language Facade Interpreter Strategy DSL - Domain-Specifc Language DDD - Domain-Driven Design Exemplos de DSL Tipos de DSL 26 de março de 2017
Agenda Conclusões e Trabalhos Futuros 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 26 de março de 2017
Introdução Motivação Objetivo 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. 26 de março de 2017
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. 26 de março de 2017
Padrões de Projeto Alguns Elementos Classificações Nome Problema Solução Conseqüências Classificações Finalidade Criacionais, Comportamentais e Estruturais Escopo Objeto e Classe 26 de março de 2017
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. 26 de março de 2017
Padrão de Projeto Facade Figura 1 – Entendendo o padrão Façade (GAMMA et al., 2006, p. 179) 26 de março de 2017
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. 26 de março de 2017
Padrão de Projeto Interpreter Figura 2 – Estrutura do Padrão Interpreter (GAMMA et al, 2006, p. 234) 26 de março de 2017
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. 26 de março de 2017
Padrão de Projeto Strategy Figura 3 – Estrutura do padrão Strategy (GAMMA et al, 2006, p. 294) 26 de março de 2017
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 26 de março de 2017
DSL - Domain-Specific Languages SQL Figura 3 – Exemplo de DSL Externa – SQL 26 de março de 2017
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. 26 de março de 2017
Aplicando Padrões de Projeto Modelo: 26 de março de 2017 Figura 4 – Modelo do Estudo de Caso
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; 26 de março de 2017
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 26 de março de 2017
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. 26 de março de 2017
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 26 de março de 2017
Conclusões e Trabalhos Futuros 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. 26 de março de 2017
OBRIGADO!!!