Padrões de Projeto. Conteúdo. Objetivos

Documentos relacionados
Projeto Orientado a Objetos

Introdução a Padrões, GRASP. Nazareno Andrade (baseado no material de Hyggo Almeida e Jacques Sauvé)

UML & Padrões Aula 7. UML & Padrões - Profª Kelly C C Silva

Engenharia de Software

ESTUDO DO PADRÃO DE PROJETO OBSERVER NO DESENVOLVIMENTO DE SOFTWARES UTILIZANDO A ARQUITETURA MVC RESUMO

Modulo II Padrões GRASP

Padrões de Desenho (Design Patterns)

Agenda da Aula. Arquitetura de Software e Padrões Arquiteturais. Elementos de um Padrão. Arquitetura de Software. Arquitetura de Software

Análise e Projeto Orientados por Objetos

PADRÕES DE PROJETO: DESIGN PATTERNS

ELABORAÇÃO. GRASP General Responsibility Assignment Software Patterns. Core of OODesign. Artefactos de input para OOD

Criar um modelo conceitual inicial (modelo de domínio) Distinguir entre conceitos, atributos e relacionamentos

Diagrama de Sequência Notação Objetos. Diagrama de Sequência Notação Mensagens. Diagrama de Sequência Notação Mensagens. Tipos de Mensagens

Introdução à Análise e Projeto de Sistemas

Análise e Projeto Orientados por Objetos

Padrões GRASP. Leonardo Gresta Paulino Murta

Padrões de Projeto de Software Orientado a Objetos

UNIVERSIDADE FEDERAL DO PARANÁ - UFPR Bacharelado em Ciência da Computação

Definindo um padrão para arquitetura Web

Modelagem de dados usando o modelo Entidade- Relacionamento (ER)

MODELOS DE PROCESSOS (PARTE 2)

Padrões de Análise. Martin Fowler, Analysis Patterns: Reusable Object Models, Addison-Wesley, Osvaldo Kotaro Takai João Eduardo Ferreira

Processo de Desenvolvimento de Software

ENGENHARIA DE SOFTWARE. Aula 03 Processos de Software

Padrões de projeto 1

Engenharia de Software

Programação Avançada. Padrões de Projeto de Software. Fonte: Oswaldo B. Peres e K19 Treinamentos

UML. Rodrigo Leite Durães.

Requisitos de Software e UML Básico. Janaína Horácio

UNIVERSIDADE FEDERAL DO PARANÁ - UFPR Bacharelado em Ciência da Computação

Notas de Aula 03: Introdução a Orientação a Objetos e a UML

Padrões de Projeto de Software

Arquitetura de Software: Documentação

UML (Linguagem Modelagem Unificada) João Paulo Q. dos Santos

English version at the end of this document

Introdução à Gestão de Processos de Negócios

Padrões de Software (Software Patterns)

Diagrama de Colaboração Exemplos - Padrões GRASP Diagrama de Classes

RUP RATIONAL UNIFIED PROCESS PRÁTICAS RECOMENDADAS. Prof. Fabiano Papaiz IFRN

Visão Geral da UML. SSC Engenharia de Software I Profa. Dra. Elisa Yumi Nakagawa 2 o semestre de 2012

Padrões de Projeto de Software

Complexidade do Software

Processos de Software by Pearson Education Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 4 Slide 1

Rational Unified Process (RUP)

Banco de Dados Relacional

Arquitetura de Software

O Fluxo de Requisitos

Levantamento de classes (Análise de casos de uso)

Projeto Detalhado. Projeto Detalhado. Modelo de decomposição em módulos. Passos de Projeto. Análise e Projeto OO. Análise e Projeto OO

Manutenção Corretiva Baseada em Padrões e Antipadrões de Casos de Uso

SOFTWARE PATTERNS: FUNDAMENTOS, TIPOS E DESCRIÇÃO Sérgio Teixeira de Carvalho

Arquitetura de software

Arquitetura de Software: Introdução

As Visões. Visões arquiteturais (revisão)

Especialização em Tecnologias de Software para Ambiente Web. Guidelines. Prof. Dr. Sandro Ronaldo Bezerra Oliveira

Engenharia de Software I: Introdução. Graduação em Informática 2009 Profa. Itana Gimenes

Reutilização de Software

Padrões de Arquitetura de Software. Leandro Tonietto Unisinos fev-09

PADRÕES DE SOFTWARE. Jerffeson Teixeira de Souza, Ph.D. Tarciane de Castro Andrade. Grupo de Padrões de Software da UECE (GPS.

1 Introdução. 1.1 Teoria dos Sistemas 23/4/2010

UML. Modelando um sistema

Visão de Processos de Negócio

Processo. Processo unificado. Principais Características do UP. Principais Características do UP RUP. Unified Process (Processo Unificado)

ANÁLISE E PROJETO DE SISTEMAS TÓPICO IV - INTRODUÇÃO A UML

Tópicos da Aula. POO e Padrões de Projetos. Considere três classes... Reuso de Classes. Locadora de DVD. Sistema Acadêmico

A modelagem é tida como a parte central de todas as atividades para a construção de um bom sistema, com ela podemos:

SISMO - Sistemas e Mobilidade Departamento de Informática / UFMA. Junho de 2008

Requisitos de sistemas

Apresentação do Capítulo 4 MDA (Model-Driven Archtecture) ALUNO: DOMENICO SCHETTINI FILHO NÚMERO USP:

Introdução INTRODUÇÃO AO SWEBOK. Origens do corpo de conhecimentos da Engenharia de Software: Introdução a Computação e Engenharia de Software

ANÁLISE E PROJETO DE SISTEMAS

Prof. Luiz A. Nascimento

Alguns Exercícios Resolvidos

Desenvolvimento Baseado em Componentes: Tecnologia J2EE

Unidade II MODELAGEM DE PROCESSOS. Profa. Gislaine Stachissini

Modelagem de Processos. Rômulo César

Diagrama de Classes. Diagrama de Classes. Diagramas de Classe. POST Criando Diagramas de Classe. Como construir (2)

Comparação entre Metodologias Rational Unified Process (RUP) e extreme Programming(XP)

ENGENHARIA DE SOFTWARE

Requisitos de Sistemas

Prof. Esp. Fabiano Taguchi

Interface vs. Implementação Herança vs. Composição

Desenvolvimento ágil de software

27) Em relação aos Projetos de Sistemas de Software, assinale a sequência correta de desenvolvimento de um sistema:

Universidade Estadual de Ponta Grossa PRÓ-REITORIA DE GRADUAÇÃO DIVISÃO DE ENSINO

Arquitetura e Organização de computadores

Resolução dos exercícios da lista BD01

ENGENHARIA DOS REQUISITOS

Modelagem Orientada a Objeto

Por que IHC é importante?

Engenharia de Software. Processos. Desenvolvimento de Software Tradicionais 2014/2. Prof. Luís Fernando Garcia

ARQUITETURA DE SOFTWARE III

Ferramenta MVCASE - Estágio Atual: Especificação, Projeto e Construção de Componentes

Processos de software

Arquitetura de Software: Introdução

Transcrição:

Padrões de Projeto Conteúdo O que são Padrões de Projeto? Para que servem? Vantagens/Desvantagens, Pontos Fortes/Fracos Exemplos e Alternativas Objetivos Conhecer diferentes padrões; Entender sua utilidade; Pensar no tópico que o grupo pesquisará Slide 1

Exemplos Slide 2

Exemplos Slide 3

Motivação Projetar software de boa qualidade não é trivial Mistura de específico + genérico Difícil de acertar da primeira vez Projetistas experientes usam soluções com as quais já trabalharam no passado Padrões de projeto Uso sistemático de: nomes, explicações, exemplos e avaliações Durante a última década, uma comunidade de padrões foi desenvolvida Slide 4

O que são Padrões de Projeto? É um par problema/solução que pode ser aplicado em novas situações, com recomendações sobre como aplicá-lo e discussão de trade-offs. Exemplo: Nome do Padrão: Information Expert (Padrão GRASP) Problema: Qual é o princípio básico para se atribuir responsabilidades a objetos? Solução: Atribua responsabilidade à classe que tem a informação necessária Adicional: consequências/forças Slide 5

O que são Padrões de Projeto? Cada padrão descreve um problema que ocorre frequentemente em seu ambiente, e então descreve o núcleo de uma solução para o problema, de maneira que você possa usar esta solução um milhão de vezes, sem fazê-la do mesmo jeito duas vezes. Christopher Alexander (Arquiteto e Urbanista), 1977 Um padrão é a abstração de uma forma concreta que ocorre muitas vezes em contextos não arbitrários específicos. Riehle and Zullighoven, 1996 [É algo que] resolve um problema. É um conceito provado. A solução não é óbvia. Descreve um relacionamento. Os padrões têm um componente humano significativo. Coplien 1996. Slide 6

O que são Padrões de Projeto? É algo comprovado que captura e comunica os conhecimentos das melhores práticas Descoberto, não inventado Soluções Sucintas e de Fácil Aplicação Capturam, de forma sucinta e facilmente aplicável, soluções de projeto de programas de computador que foram desenvolvidas e evoluíram com o passar do tempo Soluções Exaustivamente Refinadas Resultados de um longo processo de projeto, re-projeto, teste e reflexão sobre o que torna um sistema mais flexível, reusável, modular e compreensível Soluções Compartilhadas Construídas em grupo Uso de um vocabulário comum Slide 7

Para que servem? Design patterns tem vários usos no processo de desenvolvimento de software orientado a objetos: Formam um vocabulário comum: isso favorece uma melhor comunicação entre os desenvolvedores, documentação mais completa e melhor exploração das alternativas de projeto. Reduzem a complexidade do sistema: define abstrações que estão acima das classes e instâncias; Constituem uma base de experiências reutilizáveis: funcionam como peças na construção de projetos de software mais complexos; podem ser considerados como microarquiteturas que contribuem para arquitetura geral do sistema; Podem reduzir o tempo de aprendizado de uma determinada biblioteca de classes; Quanto mais cedo forem usados, menor tende a ser o retrabalho em etapas mais avançadas do projeto. Slide 8

Quando usar? Em soluções que se repetem com variações. Não faz sentido o reuso, se o problema só aparece em um determinado contexto. Soluções complexas, que requerem vários passos. Se o número de passos for pequeno, não há a necessidade do uso desses. Design patterns se aplica bem em situações em que o desenvolvedor está mais interessado na existência de uma solução do que na sua total implementação. Isto ocorre normalmente quando o domínio do problema é o foco da questão. Slide 9

Catálogo de soluções Um padrão representa 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 (exemplo: química) e engenharias possuem catálogos de soluções. Desde 1995, o desenvolvimento de software passou a ter o seu primeiro catálogo de soluções para projeto de software: o livro GoF. Slide 10

Gang of Four (GoF) E. Gamma and R. Helm and R. Johnson and J. Vlissides. Design Patterns - Elements of Reusable Object-Oriented Software. Addison- Wesley, 1995. Slide 11

Desafios com o Catálogo de Padrões Armazenamento, busca e manutenção da documentação de padrões Padrões colecionados em um catálogo precisam ser agrupados Projetistas descobrindo novos padrões precisam considerar onde o seu novo padrão se encaixa no catálogo Publicação de padrões disponíveis Todos os usuários precisam ser atualizados sobre o conteúdo do catálogo Slide 12

O que são padrões GRASP? General Responsibility Assignment Software Patterns Eles descrevem princípios fundamentais no projeto de objetos, e a atribuição de responsabilidades, expressos como padrões A atribuição habilidosa de responsabilidades é extremamente importante; Formam as bases de como o sistema será projetado A atribuição de responsabilidades ocorre durante a criação de diagramas de interação Slide 13

5 Padrões GRASP 1. Information Expert: 2. Creator Qual é o princípio geral para atribuição de responsabilidades a objetos? Quem deveria ser responsável por criar uma nova instância de alguma classe? 3. Controller Quem deveria ser responsável por lidar com um evento de entrada do sistema? 4. High Cohesion Como manter a complexidade gerenciável? (não fazer o que não deve) 5. Low Coupling Como apoiar baixa dependência, baixo impacto em mudança, e aumento de reuso? Slide 14

Yin e Yang de SE Coesão ruim normalmente leva à Acoplamento ruim, e vice-versa! Cohesion and coupling are the yin and yang of software engineering Faça o que deve ser feito, e do modo mais independente possível Slide 15

A Notação UML para Diagrama de Classes ClassName attributes third section is for methods methods Slide 16

Pattern: Information Expert Problema que resolve: Qual é o princípio geral para atribuição de responsabilidades a objetos? Solução: Atribua uma responsabilidade à classe que tem a informação necessária Exemplo: Slide 17

Pattern: Information Expert Problema que resolve: Qual é o princípio geral para atribuição de responsabilidades a objetos? Solução: Atribua uma responsabilidade à classe que tem a informação necessária Exemplo: Em uma aplicação de vendas, algumas classes necessitam conhecer o total geral de Sale Sale date time 1 Contains Quem deveria ser responsável por conhecer o total geral de sale? Slide 18 Sales LineItem quantity 1..* * Described-by 1 Product Specification description price itemid

Que informação é necessária para determinar o total geral? É necessário conhecer todas as instâncias de SalesLineItem de uma Sale e a soma de seus sub-totais. Uma instância de Sale contém esses elementos. Sale é uma classe de objetos adequada para esta responsabilidade. Ela é uma Information Expert para esse trabalho date time Sale 1 Contains Sales LineItem quantity 1..* * Described-by 1 Product Specification description price itemid Slide 19

Diagramas parciais de Interação e de Classe t := gettotal() :Sale Sale date time New method gettotal() Slide 20

Responsabilidades Para responder à responsabilidade de conhecer e responder o total de sale, 3 responsabilidades devem ser atribuídas a 3 classes de design de objetos: Design Class Responsibility Sale Knows sale total SalesLineItem aleslineitem date time Sale gettotal() SalesLineItem ProductSpecification Knows line item sub total Knows product price rice() SalesLineItem Sale :Product pecification thod Slide 21 quantity getsubtotal() Product Specification description price itemid getprice() date time 1 Sales LineItem quantity Contains 1..* * Described-by 1 Product Specification description price itemid

Padrão: Information Expert Information Expert é um princípio básico usado para guiar continuamente o design orientado a objetos A resposta a uma responsabilidade geralmente requer informação que está espalhada em diferentes classes de objetos Isso significa que há muitos information experts parciais que colaborarão Eles precisarão interagir via mensages para compartilhar o trabalho Slide 22

Questões Relativas ao Uso de Padrões Existe algum padrão que trata um problema similar? O contexto do padrão é consistente com o problema real? As consequências do uso de padrão são aceitáveis? O padrão tem uma solução alternativa que pode ser mais aceitável? Existe uma solução mais simples? Existem algumas restrições que sejam impostas pelo ambiente de software que está sendo usado? Slide 23

Perigos do Uso de Padrões O uso de padrões de uma maneira descontrolada pode originar projetos sobrecarregados. Desenvolvedores: Precisam de tempo para entender os catálogos de padrões relevantes Precisam de fácil acesso a catálogos relevantes Precisam ser treinados no uso de padrões Slide 24

Referências Larman, C. (2002) Applying UML and Patterns An Introduction to Object Oriented Analysis and Design and the Unified Process, Prentice-Hall Inc. Muller, P.A. (1997) Instant UML,Wrox Press Ltd. Slide 25

Atividade Investigar o tópico escolhido pelo Grupo (ou trabalhar na implementação) Slide 26