Baixe o app para aproveitar ainda mais
Prévia do material em texto
Análise e Projeto de Sistemas II Material das Aulas disponível no AVA Aula 2 MSc. Karen Figueiredo – karen@ic.ufmt.br Introdução aos Padrões de Projeto Reuso de Software 2 Contexto: Maioria das Engenharias Composição de componentes existentes Componentes usados em outros projetos Engenharia de Software Antes Focado no desenvolvimento original Agora Processo de desenvolvimento baseado em um reuso de software Software com melhor qualidade Desenvolvimento mais rápido Menor custo Reuso de Software 3 Tipos: Reuso de Sistemas Incorporação de um sistema, sem alterá-lo, em outro sistema (COTS - commercial off-the-shelf) Desenvolvimento de famílias de aplicações Reuso de Componentes Subsistemas de uma aplicação Reuso de Objetos e Funções Objetos simples e bem definidos Funções/Operações Reuso de Software 4 Vantagens: Confiabilidade Crescente Toda vez que um software é utilizado, ele é novamente testado Componentes já utilizados e testados em outros sistemas são mais confiáveis que novos componentes Risco de Processo Reduzido A margem de erro dos custos de reuso é menor que dos custos de desenvolvimento Uso Efetivo de Especialistas Especialista desenvolve software reutilizável encapsulando seu conhecimento Desenvolvimento Acelerado Redução do tempo de desenvolvimento e de validação Reuso de Software 5 Problemas: Custos de Manutenção Dificuldade de adaptar componentes sem o código fonte Falta de Ferramentas de Suporte Ferramentas CASE podem não suportar desenvolvimento com reuso Síndrome do “não foi inventado aqui” Falta de confiança Desenvolver é mais desafiador para a equipe Criar e Manter uma biblioteca de Componentes Exige esforço - Classificar, catalogar, recuperar, etc. Busca de Novos Componentes Exige esforço - Encontrar, entender, adaptar, etc. Reuso de Software 6 Visões do Reuso: Reuso de Software 7 Visões do Reuso: Padrões de Projeto Abstrações genéricas que ocorrem nas aplicações Desenvolvimento Baseado em Componentes Sistemas desenvolvidos pela integração de componentes Frameworks Coleção de classes abstratas e concretas que podem ser adaptadas e estendidas para a criação de aplicações Empacotamento de Sistemas Legados Interfaces podem ser definidas para prover acesso a sistemas legados Sistemas Orientados a Serviços Sistemas desenvolvidos pela ligação com serviços compartilhados Reuso de Software 8 Visões do Reuso: Linhas de Produto de Aplicação Tipo de aplicação generalizada em uma arquitetura comum que pode ser adaptada de diferentes modos para clientes diferentes Integração de COTS Sistemas desenvolvidos pela integração de aplicações existentes Aplicações Verticais Configuráveis Desenvolvimento de um sistema genérico que pode ser configurável para um sistema específico Biblioteca de Programas Bibliotecas de classes e funções comumente usadas Geradores de Programas Geração automática de software Padrões de Projeto 9 Definição: Padrões de Projeto 10 Definição: Padrões de Projeto 11 Definição: Forma de reusar conhecimento abstrato sobre um problema e sua solução Suficientemente abstrato para ser reusado sob diferentes contextos Aplicáveis em problemas bem conhecidos Soluções que funcionam, tornando-se receitas para situações similares Frequentemente usa características da OO como herança e polimorfismo Padrões de Projeto 12 Os Padrões por GoF: Inspirados em “A Pattern Language” de Christopher Alexander Padrões de arquiteturas de cidades, casas e prédios Design Patterns: Elements Of Reusable Object-Oriented Software Catálogo publicado em 1994 Gamma, Vlissides, Jonhson e Helm (The Gang of Four - GoF) 23 padrões de projeto Padrões de Projeto 13 Os Padrões por GoF: “Projetar software orientado a objetos é difícil, mas projetar software reutilizável orientado a objetos é ainda mais difícil.” Identificar objetos Granularidade corrreta Definir interfaces Relacionamentos Requisitos futuros Uma coisa que os melhores projetistas sabem que não devem fazer é começar algo do zero Nenhum dos padrões do livro são novos ou não testados Padrões de Projeto 14 Benefícios: Aprendizagem com a experiência dos outros Identificação de problemas comuns de projeto de software Utilização de soluções testadas e bem documentadas Ajuda um novato a agir como um mais experiente Produção de bons projetos OO Normalmente utilizam boas práticas OO Utilizam polimorfismo, herança e composição Vocabulário comum Ajuda na documentação Ajuda na conversão de um modelo de análise em um modelo de implementação Aumento da produtividade Padrões de Projeto 15 Composição: Nome Problema Quando aplicar o padrão e em que condições Solução Como usar os elementos disponíveis (classes, objetos, relacionamentos) para solucionar o problema Consequências Custos e benefícios Impactos (flexibilidade, reusabilidade, eficiência, etc) Padrões de Projeto 16 Categorias dos Padrões: Padrões de Criação Abstraem o processo de instanciação Tornam um sistema independente da forma como os objetos são criados, compostos e representados Padrões de Projeto 17 Categorias dos Padrões: Padrões Estruturais Lidam com a composição de classes o objetos para formar grandes estruturas no sistema Padrões de Projeto 18 Categorias dos Padrões: Padrões Comportamentais Caracterizam a forma como classes ou objetos interagem Distribuem responsabilidade Padrões de Projeto 19 23 Padrões GoF:
Compartilhar