Baixe o app para aproveitar ainda mais
Prévia do material em texto
Fundamentos de PADRÕES DE PROJETO ROBSON GODOI Recife, 10 de fevereiro de 2012 • Atualmente a área de desenvolvimento de sistemas na Tecnologia da Informação (TI) vem enfrentando vários problemas no tocante ao uso da Engenharia de Software, em especial na constante necessidade de padronização de código. Motivação • Padrões de Softwares se apresentam como soluções reutilizáveis para problemas reincidentes, ocorridos durante o processo de desenvolvimento de software. • A experiência permite o analista acostumado com padrões identificar soluções que podem ser empregadas em tipos específicos de problemas. A documentação de padrões permite que analistas menos experientes possam fazer uso de resoluções eficazes empregadas anteriormente, evitando dispêndio de esforços e trabalhos repetitivos. Motivação trabalhos repetitivos. • Padrões de projeto apresentam um novo paradigma de desenvolvimento de software, incorporando novas metodologias que atenuam ou resolvem problemas antigos da Engenharia de Software. • Principais benefícios: – Redução de prazos e custos, decorrente do ganho de produtividade proporcionado pela geração de grande parte do código; – Portabilidade: aumentando o reuso de componentes e modelos; – Interoperabilidade: garantindo que padrões baseados em múltiplas tecnologias implementem funções de negócio Benefícios múltiplas tecnologias implementem funções de negócio cooperativas; – Foco da equipe de desenvolvimento de aplicações em aspectos de negócio ao invés de aspectos técnicos; – Garantia de aderência a padrões e arquitetura, aumentando a qualidade do produto gerado. • Padrões de Projeto beneficiam os desenvolvedores: – Ajudando a construir um software confiável com arquiteturas testada e perícia acumulada pela indústria. – Promovendo a reutilização de projetos em futuros sistemas. – Ajudando a identificar equívocos comuns e armadilhas que ocorrem ao construírem sistemas. – Ajudando a projetar sistemas independentemente da linguagem Benefícios – Ajudando a projetar sistemas independentemente da linguagem em que eles, em última instância, serão implementados. – Estabelecendo um vocabulário comum de projeto entre os desenvolvedores. – Encurtando a fase de projeto no processo de desenvolvimento de um software • Maneira testada ou documentada de alcançar um objetivo qualquer – Padrões são comuns em várias áreas da engenharia • Design Patterns ou Padrões de Projeto – Padrões para alcançar objetivos na engenharia de software O que é um padrão? – Padrões para alcançar objetivos na engenharia de software usando classes e métodos em linguagens orientadas a objeto • A ideia de padrões foi apresentada por Christopher Alexander em 1977 no contexto de Arquitetura (de prédios e cidades): – Cada padrão descreve um problema que ocorre repetidamente de novo e de novo em nosso ambiente, e então descreve a parte central da solução para aquele problema de uma forma que você pode usar esta solução um milhão de vezes, sem nunca Inspiração você pode usar esta solução um milhão de vezes, sem nunca implementa-la duas vezes da mesma forma. • Um padrão encerra o conhecimento de uma pessoa muito experiente em um determinado assunto de uma forma que este conhecimento pode ser transmitido para outras pessoas menos experientes. • Outras ciências (p.ex. química) e engenharias possuem Catálogo de soluções • Outras ciências (p.ex. química) e engenharias possuem catálogos de soluções. • Padrões são um repertório de soluções e princípios que ajudam os desenvolvedores a criar software e que são codificados em um formato estruturado consistindo de: • Nome • Problema que soluciona • Solução do problema Padrões de Projeto • O objetivo dos padrões é codificar o conhecimento (knowing) existente de uma forma que possa ser reaplicado em contextos diferentes • Não é um código final, é uma descrição ou modelo de como resolver o problema do qual trata, que pode ser usada em muitas situações diferentes. • Desde 1995, o desenvolvimento de software passou a ter o seu primeiro catálogo de soluções para projeto de Padrões de Projeto o seu primeiro catálogo de soluções para projeto de software: o livro GoF. • E. Gamma and R. Helm and R. Johnson and J. Vlissides. Design Patterns - Elements of Reusable Object-Oriented Software. Addison-Wesley, 1995. Gang of Four (GoF) • Passamos a ter um vocabulário comum para conversar sobre projetos de software. • Soluções que não tinham nome passam a ter nome. • Ao invés de discutirmos um sistema em termos de pilhas, filas, árvores e listas ligadas, passamos a falar de coisas de muito mais alto nível como Fábricas, Fachadas, GoF - Contribuições muito mais alto nível como Fábricas, Fachadas, Observador, Estratégia, etc. • Nome • Problema – Quando aplicar o padrão, em que condições? • Solução – Descrição abstrata de um problema e como usar os elementos disponíveis (classes e objetos) para solucioná-lo Elementos de um padrão disponíveis (classes e objetos) para solucioná-lo • Consequências – Custos e benefícios de se aplicar o padrão – Impacto na flexibilidade, extensibilidade, portabilidade e eficiência do sistema • Segundo Gamma et al, são classificados de duas formas: – Por propósito: (1) criação de classes e objetos, (2) alteração da estrutura de um programa, (3) controle do seu comportamento – Por escopo: classe ou objeto • Segundo Metsker, são classificados em 5 grupos, por intenção (problema a ser solucionado): Classificação • Segundo Metsker, são classificados em 5 grupos, por intenção (problema a ser solucionado): – Oferecer uma interface; – Atribuir uma responsabilidade; – Realizar a construção de classes ou objetos; – Controlar formas de operação; – Implementar uma extensão para a aplicação. • Introduzidos por Craig Larman em seu livro “Applying UML and Patterns”[4] • GRASP:General Responsibility and Assignment Software Patterns – Os padrões GRASP descrevem os princípios fundamentais da Padrões GRASP – Os padrões GRASP descrevem os princípios fundamentais da atribuição de responsabilidades a objetos, expressas na forma de padrões • Esses padrões exploram os princípios fundamentais de sistemas OO – 5 padrões fundamentais – 4 padrões avançados • Se você conhece os padrões GRASP, pode dizer que Padrões GRASP • Se você conhece os padrões GRASP, pode dizer que compreende o paradigma orientado a objetos. • Padrões são específicos a uma determinada área (padrões J2EE, padrões de implementação em Java, em C#, padrões para concorrência, sistemas distribuídos, etc.) • Exemplos: – Dependency Injection: um caso particular de um dos padrões Outros padrões – Dependency Injection: um caso particular de um dos padrões GRASP (Indirection) bastante popular no momento (também conhecido como Inversão de Controle) – Aspectos: uma extensão ao paradigma orientado a objetos que ajuda a lidar com limitações dos sistemas OO
Compartilhar