• Nenhum resultado encontrado

ES1 10 Codificacao Introducao Padroes

N/A
N/A
Protected

Academic year: 2019

Share "ES1 10 Codificacao Introducao Padroes"

Copied!
80
0
0

Texto

(1)

Engenharia de Software 1

10 - Codifica¸c˜ao:

Introdu¸c˜ao aos Padr˜oes de Projeto

Alexandre de Andrade Barbosa

(2)

Objetivos

Objetivos

Apresentar alternativas de reuso de software Exibir o conceito de padr˜oes de projeto

Descrever os elementos de um padr˜ao de projeto Fornecer uma vis˜ao geral dos padr˜oes GoF

(3)

Codifica¸c˜ao:

Introdu¸c˜ao aos Padr˜oes de Projeto

(4)

Codifica¸c˜ao:

Introdu¸c˜ao aos Padr˜oes de Projeto

Introdu¸c˜ao

(5)

Codifica¸c˜ao:

Introdu¸c˜ao aos Padr˜oes de Projeto

Introdu¸c˜ao

Por muito tempo a ES focou no desenvolvimento tradicional Atualmente existem muitos esfor¸cos para aumentar o reuso no desenvolvimento de software

(6)

Codifica¸c˜ao:

Introdu¸c˜ao aos Padr˜oes de Projeto

Introdu¸c˜ao

As unidades de software reusadas podem se basear em unidade com tamanhos diferentes

Reuso de aplica¸c˜oes. Reuso baseado na incorpora¸c˜ao de aplica¸c˜oes inteiras com ou sem adapta¸c˜oes

Reuso de componentes. Reuso de subsistemas inteiros que fornecem um conjunto de servi¸cos

(7)

Codifica¸c˜ao:

Introdu¸c˜ao aos Padr˜oes de Projeto

Introdu¸c˜ao

(8)

Codifica¸c˜ao:

Introdu¸c˜ao aos Padr˜oes de Projeto

Introdu¸c˜ao

Quais s˜ao os benef´ıcios do desenvolvimento baseado em reuso: menores custos de produ¸c˜ao e manuten¸c˜ao - partes do sistema j´a foram implementadas;

entregas mais r´apidas - o tempo necess´ario para desenvolver do zero ´e maior do que se uma solu¸c˜ao j´a implementada for adotada; aumento da qualidade do software - o sistema j´a foi usado e testado diversas vezes;

uso eficiente de recursos humanos - os especialistas n˜ao executar˜ao trabalho repetido;

(9)

Codifica¸c˜ao:

Introdu¸c˜ao aos Padr˜oes de Projeto

Introdu¸c˜ao

(10)

Codifica¸c˜ao:

Introdu¸c˜ao aos Padr˜oes de Projeto

Introdu¸c˜ao

Quais s˜ao os problemas do desenvolvimento baseado em reuso: s´ındrome do n˜ao inventado aqui - os desenvolvedores tendem a pensar que suas solu¸c˜oes s˜ao melhores que a de terceiros; falta de documenta¸c˜ao do componente a ser reutilizado - os criadores podem n˜ao ter criado material de apoio para suas solu¸c˜oes;

custos de manuten¸c˜ao podem aumentar no in´ıcio - a curva de aprendizado inicial pode ser custosa;

(11)

Codifica¸c˜ao:

Introdu¸c˜ao aos Padr˜oes de Projeto

O panorama do reuso

Existem muitas abordagens diferentes para reuso que podem ser usadas

(12)

Codifica¸c˜ao:

Introdu¸c˜ao aos Padr˜oes de Projeto

(13)

Codifica¸c˜ao:

Introdu¸c˜ao aos Padr˜oes de Projeto

O panorama do reuso

Design patterns (Padr˜oes de projeto). Solu¸c˜oes abstratas que resolvem problemas recorrentes no desenvolvimento

Desenvolvimento baseado em componentes. Integra¸c˜ao de componentes (conjuntos de objetos) em uma aplica¸c˜ao Frameworks. Conjuntos de classes abstratas e concretas que pode ser adaptado ou ampliados na cria¸c˜ao de uma aplica¸c˜ao Linhas de produto. Adapta¸c˜ao de uma arquitetura comum a uma fam´ılia de produtos

(14)

Codifica¸c˜ao:

Introdu¸c˜ao aos Padr˜oes de Projeto

O panorama do reuso

Qual t´ecnica ´e mais apropriada?

Uma serie de fatores influenciam, por exemplo: tipo de software que ser´a desenvolvido; tecnologias utilizadas;

ativos reus´aveis dipon´ıveis;

preferˆencias da equipe de desenvolvimento;

(15)

Codifica¸c˜ao:

Introdu¸c˜ao aos Padr˜oes de Projeto

Planejar e adotar

O reuso n˜ao vai acontecer da noite para o dia

Planejamento ´e necess´ario para que se possa adotar solu¸c˜oes de reuso

A adapta¸c˜ao da equipe pode levar algum tempo e diminuir a produtividade em um primeiro momento

Para adotar qualquer solu¸c˜ao de reuso ´e necess´ario: Descobrir

(16)

Codifica¸c˜ao:

Introdu¸c˜ao aos Padr˜oes de Projeto

Planejar e adotar

Planejamento de reuso deve levar em considera¸c˜ao: cronograma do projeto - aprendizado inicial pode demorar; ciclo de vida previsto do software - para ciclos longos o melhor ´e facilitar a manuten¸c˜ao;

equipe de desenvolvimento - levar em considera¸c˜ao o conhecimento e as habilidades da equipe;

propriedades emergentes - requisitos de performance pode n˜ao ser garantidos;

outros

(17)

Padr˜oes de projeto

Criar um bom projeto de software ´e uma tarefa complicada Projeto O.O. reutiliz´avel e flex´ıvel dificilmente ´e obtido na primeira especifica¸c˜ao

Projetistas experientes costumam realizar bons projetos, pois se baseiam em solu¸c˜oes anteriores

(18)

Padr˜oes de projeto

(19)

Padr˜oes de projeto

O que projetistas experientes sabem que os novatos n˜ao sabem?

(20)

Padr˜oes de projeto

Um sistema O.O. cont´em objetos que trocam mensagens para realizar uma funcionalidade

Solu¸c˜oes que mostraram ser eficientes na resolu¸c˜ao de um problema devem ser reutilizadas

Com o reuso de solu¸c˜oes surgem padr˜oes de objetos e de comunica¸c˜oes entre estes

(21)

Padr˜oes de projeto

Uma analogia...

Autores de cinema, novela, teatro... reutilizam elementos b´asicos em seus roteiros

(22)

Padr˜oes de projeto

Uma analogia...

Autores de cinema, novela, teatro... reutilizam elementos b´asicos em seus roteiros

(23)

Padr˜oes de projeto

Muitos problemas que ocorrem em um projeto j´a devem ter sido resolvidos em projetos anteriores

O problema ´e que dificilmente algu´em ir´a lembrar como o problema foi resolvido

Padr˜oes de projeto consistem em registros destas experiˆencias para o projeto de software

Exemplos de padr˜oes:

Padr˜oes GRASP (General Responsibility Assignment Software Patterns)

(24)

O que ´e um padr˜ao de projeto?

“...cada padr˜ao descreve um problema no nosso ambiente e o n´ucleo de sua solu¸c˜ao...”

(25)

O que ´e um padr˜ao de projeto?

Um padr˜ao representa a solu¸c˜aoreutiliz´avel para um problema

recorrenteem um determinado contexto

Os padr˜oes s˜ao descritos utilizando quatro elementos essenciais: nome - r´otulo (sugestivo) utilizado para identificar o padr˜ao problema - descri¸c˜ao do tipo de problema e seu contexto solu¸c˜ao - descri¸c˜ao abstrata dos elementos do projeto utilizado para resolver o problema

(26)

O que ´e um padr˜ao de projeto?

(27)

Descri¸c˜ao dos padr˜oes

Os padr˜oes de projeto GoF s˜ao descritos utilizando as seguintes descri¸c˜oes:

(28)

Descri¸c˜ao dos padr˜oes

Nome e classifica¸c˜ao

O nome representa o padr˜ao expressando seu objetivo de forma breve

A classifica¸c˜ao descreve a finalidade e o escopo do padr˜ao Inten¸c˜ao e objetivo

Declara¸c˜ao breve sobre o que o padr˜ao faz, qual tipo de problema ele ataca, ...

Sinˆonimos

(29)

Descri¸c˜ao dos padr˜oes

Motiva¸c˜ao

Descri¸c˜ao de um cen´ario ilustrativo do problema e de como o padr˜ao soluciona este problema

Aplicabilidade

Lista de situa¸c˜oes onde o padr˜ao pode ser aplicado com sucesso Estrutura

(30)

Descri¸c˜ao dos padr˜oes

Participantes

Descri¸c˜ao das classes e/ou objetos que participam do padr˜ao e quais s˜ao as responsabilidades associadas a cada um

Colabora¸c˜oes

Descri¸c˜ao das colabora¸c˜oes entre os participantes Conseq¨uˆencias

(31)

Descri¸c˜ao dos padr˜oes

Implementa¸c˜ao

Sugest˜oes e observa¸c˜oes relacionadas aos cuidados que se deve ter na implementa¸c˜ao do padr˜ao

Exemplo de c´odigo

Trechos de c´odigo implementando o padr˜ao Usos conhecidos

Exemplos de sistemas que utilizam o padr˜ao Padr˜oes relacionados

(32)
(33)

Cat´alogo de padr˜oes

23 padr˜oes de projeto GoF, s˜ao eles:

Abstract Factory Factory Method Proxy

Adapter Flyweight Singleton

Bridge Interpreter State

Builder Iterator Strategy

Chain of Responsibility Mediator Template Method

Command Memento Visitor

Decorator Observer

(34)

Cat´alogo de padr˜oes

Os padr˜oes de projeto variam em granularidade e em seu n´ıvel de abstra¸c˜ao

Dois crit´erios s˜ao adotados na classifica¸c˜ao dos padr˜oes de projeto GoF:

(35)

Cat´alogo de padr˜oes

Os padr˜oes de cria¸c˜ao - se preocupam com o processo de cria¸c˜ao de objetos

Os padr˜oes de estrutura - lidam com a composi¸c˜ao de classes ou de objetos

(36)

Cat´alogo de padr˜oes

(37)

Cat´alogo de padr˜oes

Cria¸c˜ao Estrutura Comportamento Factory Method Adapter (classe) Interpreter

Classe Template Method

Abstract Factory Adapter (objeto) Chain of Responsibility

Objeto Builder Bridge Command

Prototype Composite Iterator Singleton Decorator Mediator

Fa¸cade Memento Flyweight Observer

Proxy State

(38)

Padr˜oes de comportamento

Template Method

Template Method

(39)

Padr˜oes de comportamento

Template Method

Inten¸c˜ao e objetivo:

“Definir o esqueleto de um algoritmo em uma opera¸c˜ao, postergando alguns passos para subclasses. Permite que subclasses redefinam certos passos de um algoritmo sem mudar a estrutura do mesmo.”

(40)

Padr˜oes de comportamento

Template Method - Motiva¸c˜ao

Considere um framework para aplica¸c˜oes para manipula¸c˜ao de documentos

(41)

Padr˜oes de comportamento

Template Method - Motiva¸c˜ao

Aplica¸c˜oes baseadas no framework poder˜ao criar subclasses de Application eDocument com algoritmos espec´ıficos

(42)

Padr˜oes de comportamento

Template Method - Motiva¸c˜ao

Classe abstrata define o algoritmo para abrir e ler um documento

void Application::OpenDocument (const char* name) { if (!CanOpenDocument(name)) {

// cannot handle this document return;

}

Document* doc = DoCreateDocument(); if (doc) {

_docs->AddDocument(doc); AboutToOpenDocument(doc); doc->Open();

(43)

Padr˜oes de comportamento

Template Method - Motiva¸c˜ao

OpenDocument ´e o Template Method

Os passos necess´arios para abrir um documento verifica se o documento pode ser aberto cria o objeto Documento (espec´ıfico)

adiciona o documento ao conjunto de documentos da aplica¸c˜ao As subclasses definem:

o algoritmo que verifica se o documento pode ser aberto (CanOpenDocument)

(44)

Padr˜oes de comportamento

Template Method - Aplicabilidade

O padr˜ao Template Method deve ser utilizado:

para implementar as partes invariantes de um algoritmo uma ´unica vez, deixando os comportamentos espec´ıficos para as subclasses quando o comportamento comum entre subclasses precisa ser fatorado, evitando duplica¸c˜ao de c´odigo

(45)

Padr˜oes de comportamento

Template Method - Estrutura

(46)

Padr˜oes de comportamento

Template Method - Participantes

AbstractClass (Application)

define opera¸c˜oes primitivas abstratas que devem ser implementadas nas subclasses

implementa um m´etodo concreto que invoca opera¸c˜oes primitivas abstratas

ConcreteClass (My Application)

(47)

Padr˜oes de comportamento

Template Method - Colabora¸c˜oes

(48)

Padr˜oes de comportamento

Template Method - Conseq¨uˆencias

Benef´ıcios:

reuso de c´odigo (centraliza¸c˜ao de partes comuns de algoritmos) comportamento padr˜ao extens´ıvel

Cuidados:

(49)

Padr˜oes de comportamento

Template Method - Implementa¸c˜ao

Utilizando controle de acesso - Opera¸c˜oes primitivas que um m´etodo template chama podem ser declaradas como protegidas (protected)

Minimizando opera¸c˜oes primitivas - Um grande n´umero de opera¸c˜oes primitivas abstratas pode tornar a implementa¸c˜ao trabalhosa

(50)

Padr˜oes de comportamento

Template Method - Padr˜oes relacionados

Factory Method - Define uma interface para criar um objeto, mas deixa as subclasses decidirem qual a classe a ser instanciada.

Factory Method s˜ao freq¨uentemente chamados por um template method

Strategy - Define uma fam´ılia de algoritmos, encapsula cada um deles permitindo que eles se tornem intercambi´aveis

(51)

Padr˜oes de estrutura

Fa¸cade

Fa¸cade

(52)

Padr˜oes de estrutura

Fa¸cade

Inten¸c˜ao e objetivo:

“Fornecer uma interface unificada para um conjunto de interfaces em um subsistema. Fa¸cade define uma interface de n´ıvel mais alto que torna o subsistema mais f´acil de ser usado.”

(53)

-Padr˜oes de estrutura

Fa¸cade - Motiva¸c˜ao

Sistema complexos s˜ao estruturados em subsistemas

Cada subsistema fornece e utiliza servi¸cos de outros subsistemas Um objetivo de todo projeto ´e minimizar a comunica¸c˜ao e as dependˆencias entre os subsistemas

(54)
(55)

Padr˜oes de estrutura

Fa¸cade - Aplicabilidade

O padr˜ao Fa¸cade deve ser utilizado quando:

se deseja fornecer uma interface simples para um subsistema complexo

existirem muitas dependˆencias entre clientes e as classes de implementa¸c˜ao de uma abstra¸c˜ao

(56)

Padr˜oes de estrutura

Fa¸cade - Estrutura

(57)

Padr˜oes de estrutura

Fa¸cade - Participantes

Fa¸cade

conhece quais as classes do subsistema respons´aveis pelo atendimento de uma solicita¸c˜ao;

delega solicita¸c˜oes de clientes a objetos apropriados do subsistema Classes de subsistema

implementam a funcionalidade do subsistema;

(58)

Padr˜oes de estrutura

Fa¸cade - Colabora¸c˜oes

Clientes se comunicam com um subsistema atrav´es da fachada, a qual repassa as solicita¸c˜oes para os objetos adequados no

(59)

Padr˜oes de estrutura

Fa¸cade - Conseq¨uˆencias

Benef´ıcios:

Os clientes que utilizam a fachada n˜ao precisam conhecer as classes do subsistema

(60)

Padr˜oes de estrutura

Fa¸cade - Implementa¸c˜ao

Redu¸c˜ao do acoplamento

(61)
(62)

Padr˜oes de estrutura

Fa¸cade - Padr˜oes relacionados

Abstract Factory - Fornece uma interface para cria¸c˜ao de objetos relacionados ou dependentes sem especificar suas classes

concretas

pode ser utilizada uma fachada para cria¸c˜ao de objetos do subsistema de maneira independente do subsistema

Mediator - Define um objeto que encapsula como um conjunto de objetos interage, evita que objetos fa¸cam referˆencia direta uns aos outros

abstrai comunica¸c˜oes arbitr´arias entre objetos-colega,

(63)

Singleton

Singleton

(64)

Singleton

Inten¸c˜ao e objetivo:

“Garantir que uma classe tenha somente uma instˆancia e fornecer um ponto global de acesso para a mesma.”

(65)

-Singleton - Motiva¸c˜ao

Em diversas aplica¸c˜oes ´e necess´ario controlar o acesso a algum recurso:

diversas impressoras podem ser acessadas atrav´es de um ´unico spooler de impress˜ao

o banco de dados pode ser acessado somente atrav´es de uma classe para persistˆencia

Uma solu¸c˜ao ´e determinar a responsabilidade de manter o controle de sua ´unica instˆancia

(66)

Singleton - Aplicabilidade

O padr˜ao Singleton deve ser utilizado quando:

(67)
(68)

Singleton - Participantes

Singleton

define uma opera¸c˜ao Instance (opera¸c˜ao de classe) que permite aos clientes acessarem sua ´unica instˆancia

(69)

Singleton - Colabora¸c˜oes

(70)

Singleton - Conseq¨uˆencias

Benef´ıcios:

(71)

Singleton - Implementa¸c˜ao

Garantindo uma instˆancia ´unica

A instˆancia ´unica de Singleton corresponde a uma instˆancia normal da classe que possui restri¸c˜oes no momento de sua cria¸c˜ao O construtor da classe ´e ocultado

(72)

Singleton - Implementa¸c˜ao

class Singleton {

private static Singleton uniqueInstance = null;

private Singleton () { }

public static synchronized Singleton Instance() { if (uniqueInstance == null) {

uniqueInstance = new Singleton(); }

return uniqueInstance; }

(73)
(74)

Singleton - Padr˜oes relacionados

Diversos padr˜oes podem ser implementados utilizando Singleton Abstract Factory

(75)

Exerc´ıcio

Exerc´ıcio

1 Implemente o exemplo apresentadao para o padr˜aoTemplate Methodno livro ‘Padr˜oes de projeto, Gamma, 2000.’

2 Implemente o exemplo apresentadao para o padr˜aoFa¸cadeno livro ‘Padr˜oes de projeto, Gamma, 2000.’

(76)

Resumo

Resumo

O desenvolvimento tradicional n˜ao ´e suficiente para atender ao conjunto atual de demandas de software

Reuso possibilita uma s´erie de benef´ıcios para o desenvolvimento de software Padr˜oes de projeto s˜ao solu¸c˜oes eficientes que j´a se mostraram ´uteis em diversos contextos

Template method - “Definir o esqueleto de um algoritmo em uma opera¸c˜ao, postergando alguns passos para subclasses. Permite que subclasses redefinam certos passos de um algoritmo sem mudar a estrutura do mesmo.”

Fa¸cade - “Fornecer uma interface unificada para um conjunto de interfaces em um subsistema. Fa¸cade define uma interface de n´ıvel mais alto que torna o subsistema mais f´acil de ser usado.”

(77)

Resumo

Resumo

(78)

Leituras recomendadas

Ian Sommerville.

Engenharia de Software 8a ed., 2007.

Cap´ıtulo 18 - Reuso de Software

Sourcemaking Team

Sourcemaking - Teaching IT professionals

(79)

Leituras recomendadas

Gamma. E. et al.

Padr˜oes de projeto 1a ed., 2000.

Cap´ıtulo 1 - Introdu¸c˜ao P´ag. 130 Singleton

Cay Horstmann

Padr˜oes de projeto orientados a Objetos 2a ed., 2007.

(80)

Perguntas?

Alexandre de Andrade Barbosa

Referências

Documentos relacionados

SENSOR DE

Prof.ª Whitney Introdução ao Estudo da Sintaxe (Módulo 15); Termos Essenciais (Módulo 16); Leitura e Interpretação de

Ao verificar o tipo de abordagem dos policiais pelas ruas e delegacias, o descaso do proprio cidadao comum para a crianca e com o adolescente, a ideia advogada por muitos

A técnica mais utilizada para medir a tensão e a temperatura consiste na aplicação de duas fibras ópticas adjacentes das quais uma é vinculada à entidade que deve ser monitorada

ensino superior como um todo e para o curso específico; desenho do projeto: a identidade da educação a distância; equipe profissional multidisciplinar;comunicação/interatividade

Essas bandas apresentam largura variável, dependendo da força de interação (força da ligação) entre os átomos que compõem os sólidos.. Nos metais, a banda de valência

A seleção portuguesa feminina de andebol de sub-20 perdeu hoje 21-20 com a Hungria, na terceira jornada do Grupo C do Mundial da categoria, a decorrer em Koprivnica, na

INDICADORES AMBIENTAIS ESSENCIAIS: UMA ANÁLISE DA SUA UTILIZAÇÃO NOS RELATÓRIOS DE SUSTENTABILIDADE DAS EMPRESAS DO SETOR DE ENERGIA ELÉTRICA SUL AMERICANO, ELABORADOS