220 likes | 477 Views
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 Facade Interpreter Strategy DSL - Domain-Specifc Language
E N D
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 • Facade • Interpreter • Strategy • DSL - Domain-Specifc Language • DDD - Domain-Driven Design • DSL - Domain-Specifc Language • Exemplos de DSL • Tipos de DSL
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
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.
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.
Padrões de Projeto • Alguns Elementos • Nome • Problema • Solução • Conseqüências • Classificações • Finalidade • Criacionais, Comportamentais e Estruturais • Escopo • Objeto e Classe
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.
Padrão de Projeto Facade Figura 1 – Entendendo o padrão Façade (GAMMA et al., 2006, p. 179)
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.
Padrão de Projeto Interpreter Figura 2 – Estrutura do Padrão Interpreter (GAMMA et al, 2006, p. 234)
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.
Padrão de Projeto Strategy Figura 3 – Estrutura do padrão Strategy (GAMMA et al, 2006, p. 294)
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
DSL - Domain-Specific Languages • SQL Figura 3 – Exemplo de DSL Externa – SQL
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.
Aplicando Padrões de Projeto • Modelo: 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;
Aplicando Padrões de Projeto • Padrão de Projeto Interpreter Tabela 1 – Exemplo de Aplicação do Padrão Interpreter
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.
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
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.