• Nenhum resultado encontrado

aula1 definicao classificacao descricao

N/A
N/A
Protected

Academic year: 2021

Share "aula1 definicao classificacao descricao"

Copied!
30
0
0

Texto

(1)

Padr˜

oes de Projeto de Software

Introdu¸c˜ao

Paulo Gomide

Departamento de Ciˆencia da Computa¸c˜ao Universidade de Ita´una

(2)

Sumary

Motiva¸c˜ao

Introdu¸c˜ao

Por que Padr˜oes?

Por que Padr˜oes de Projeto?

O que ´e um Padr˜ao de Projeto?

Defini¸c˜oes

Componentes de um Padr˜ao

Formas de Classifica¸c˜ao dos Padr˜oes de Projeto?

Quanto `a Finalidade

Quanto ao Escopo

Quadro de Classifica¸c˜oes dos Padr˜oes de Projetos

Descri¸c˜ao dos Padr˜oes

Como Descrever um Padr˜ao?

Fim

(3)

Desenvolvimento de Pequenos Projetos versus

Desenvolvimento de Grandes Projetos

Implementado por uma pessoa Implementado por ou por uma equipe pequena uma grande equipe

Todos desenvolvedores Ningu´em conhece ou conhecem todos os ´e respons´avel por todos aspectos do projeto os aspectos do projeto

O maior esfor¸co ´e voltado O maior esfor¸co ´e voltado para a estrutura¸c˜ao do

para a estrutura¸c˜ao sistema como um todo e e o desenvolvimento a comunica¸c˜ao entre as

dos algoritmos diferentes partes e padr˜oes do projeto

(4)

Desenvolvimento versus Engenharia de Software

Um desenvolvedor Equipe de Desenvolvedores

Aplica¸c˜oes Simples Sistemas Complexos

Vida Curta Vida Longa

Um ou Poucos Interessados Muitos Interessados Desenvolvedor = Usu´ario Desenvolvedor 6= Usu´ario

Usu´ario = Cliente Usu´ario 6= Cliente

Solu¸c˜ao Ad-hoc Preocupa¸c˜ao com Reusabilidade

(5)

Dificuldades no Desenvolvimento de Software

Complexidade

• C´alculo da complexidade/tempo do desenvolvimento;

• Crescimento da complexidade ´e n˜ao linear em rela¸c˜ao ao tamanho.

Inconstˆ

ancia

• Software visto como infinitamente male´avel;

• Mudan¸cas em rela¸c˜ao ao projeto original como: novos requisitos do

usu´ario, novas tecnologias, novas leis e regulamenta¸c˜oes, etc.

Reusabilidade

• Desenvolver um software orientado a objetos ´e dif´ıcil;

(6)

Vantagens no Desenvolvimento de Software de Qualidade

Reusabilidade

• Redu¸c˜ao do tempo e do custo de desenvolvimento no futuro;

• Maior confian¸ca na utiliza¸c˜ao de c´odigos j´a testados.

Experiˆ

encia

• Frieza para estudar padr˜oes utilizados anteriormente, evitando a

solu¸c˜ao mais ´obvia a princ´ıpio;

(7)

Aspectos Cruciais na Programa¸c˜

ao Orientada a Objetos

• Definir objetos pertinentes em rela¸c˜ao aos requisitos;

• Represent´a-los em classes na granularidade certa;

• Definir as interfaces das classes;

• Definir as hierarquias das heran¸cas;

(8)

Por que Padr˜

oes?

Padr˜

oes

• Solu¸c˜ao para acelerar a tomada de tantas decis˜oes presentes no

desenvolvimento.

• Tentativa de definir uma solu¸c˜ao para um problema estrutural

recorrente.

Tipos de Padr˜

ao

• Alto n´ıvel de abstra¸c˜ao → Padr˜oes Arquiteturais

Ex.: Client-Server

• M´edio n´ıvel de abstra¸c˜ao → Padr˜oes de Projeto

Ex.: Abstract Factory

• Baixo n´ıvel de abstra¸c˜ao → Padr˜oes de Programa¸c˜ao

(9)

Por que Padr˜

oes de Projeto?

Problemas Iguais → Solu¸c˜

oes Iguais

• Garantia de que “novas” solu¸c˜oes n˜ao ser˜ao “redescobertas”;

• Confiablidade, eficiˆencia e bom tratamento de “d´ej`a-vu” no

desenvolvimento;

• Garantia de um sistema mais flex´ıvel, elegante e, sobretudo,

reus´avel;

(10)

Por que Padr˜

oes de Projeto?

N´ıvel de Abstra¸c˜

ao Intermedi´

ario

• Sobre diferentes pontos o Padr˜ao definido para um sistema pode ser

tipo como apenas um bloco primitivo em outro;

• Os padr˜oes de projeto que ser˜ao estudados apresentam um n´ıvel de

abstra¸c˜ao intermedi´ario;

• N˜ao s˜ao baixo n´ıvel a ponto de definir estruturas de dados a serem

usadas e seu funcionamento;

• N˜ao s˜ao alto n´ıvel a ponto de estruturar por completo a arquitetura

(11)

Defini¸c˜

ao 1

“Each pattern describes a problem which occurs over and over again in our environment, and then describes the core of the solution to that problem, in such a way that you can use this solution a million times over, without ever doing it the same way twice”

Christopher Alexander, A Pattern Language, 1977

(12)

Defini¸c˜

ao 2

“The design patterns are descriptions of communicating objects and classes that are customized to solve a general design problem in a particular context.”

Gang of Four, Design Patterns: Elements of Reusable Object-Oriented Software, 2000

(13)

Defini¸c˜

ao 3

“A design pattern is a general reusable solution to a commonly occurring problem in software design. (...) It is a description or template for how to solve a problem that can be used in many different situations.

Object-oriented design patterns typically show relationships and interactions between classes or objects, without specifying the final application classes or objects that are involved.”

Wikip´edia, Portuguˆes,

(14)

Componentes de um Padr˜

ao

Nome

• Descreve um problema de design, sua solu¸c˜ao e as consequˆencias

desta em uma ou duas palavras;

• Enriquece o vocabul´ario t´ecnico, facilitando a comunica¸c˜ao entre

projetistas e desenvolvedores;

• Facilita a discuss˜ao sobre os padr˜oes e sobre as vantagens e

desvantagens de sua utiliza¸c˜ao;

• Facilita at´e mesmo a tomada de decis˜oes quanto ao padr˜ao adotado

para um projeto;

(15)

Componentes de um Padr˜

ao

Problema

• Descreve quando aplicar o padr˜ao, explicando o problema e seu

contexto;

• Descreve problemas de design espec´ıficos que o padr˜ao resolve;

• Possivelmente, inclui uma lista de requisitos que devem ser

(16)

Componentes de um Padr˜

ao

Solu¸c˜

ao

• Descreve os elementos que comp˜oem o design, seus

relacionamentos, responsabilidades e colabora¸c˜oes;

• Descreve o modelo geral de funcionamento, sem se preocupar com

um design particular ou sua implementa¸c˜ao;

• Fornece uma descri¸c˜ao abstrata de um problema de design e explica

(17)

Componentes de um Padr˜

ao

Consequˆ

encias

• Compreendem os resultados, vantagens e desvatagens de aplicar o

padr˜ao;

• Descrevem o impacto da sua utiliza¸c˜ao sobre a extensibilidade,

flexibilidade ou portabilidade do sistema, facilitando avaliar o n´ıvel de reusabilidade do mesmo;

• Apresentam o funcionamento do padr˜ao tamb´em em rela¸c˜ao a

espa¸co e tempo, ou utiliza¸c˜ao de mem´oria e processamento;

• Sua an´alise ´e fundamental na avalia¸c˜ao das alternativas de padr˜oes cab´ıveis ao projeto e no entendimento dos custos e benef´ıcios do padr˜ao.

(18)

Requisitos de um Padr˜

ao de Software

Um Padr˜

ao de Software Deve:

• solucionar um problema de design espec´ıfico, estruturando os

elementos do sistema de maneira flex´ıvel, elegante e reus´avel;

• ser geral o suficiente para servir de solu¸c˜ao para problemas e

requisitos futuros que apresentem aspectos similares;

• ser facilmente referenciado e permitir sua reutiliza¸c˜ao em um novo

(19)

Quanto `

a Finalidade

Padr˜

oes Criacionais

Referem-se ao processo de cria¸c˜ao dos objetos.

Ex.: Builder : separa a constru¸c˜ao de um objeto complexo de sua

representa¸c˜ao, permitindo a utiliza¸c˜ao de um mesmo processo na cria¸c˜ao de diferentes representa¸c˜oes.

(20)

Quanto `

a Finalidade

Padr˜

oes Estruturais

Tratam a composi¸c˜ao das classes e objetos.

Ex.: Composite: Comp˜oe objetos em ´arvores de agrega¸c˜ao

(relacionamento parte-todo), permitindo que objetos agregados sejam

(21)

Quanto `

a Finalidade

Padr˜

oes Comportamentais

Caracterizam a forma com que as classes e os objetos se interagem e compartilham as responsabilidades.

Ex.: Iterator : Provˆe um modo de acesso sequencial a elementos de um

(22)

Quanto ao Escopo

Classe

Tratam o relacionamento entre as classes e suas subclasses. Como essas rela¸c˜oes s˜ao estabelecida por meio de heran¸ca, elas s˜ao est´aticas (fixadas

em tempo de compila¸c˜ao).

Ex.: Um padr˜ao estrutural de classe utiliza heran¸ca para compor as

(23)

Quanto ao Escopo

Objeto

Tratam o relacionamento entre os objetos. Essas rela¸c˜oes s˜ao mais

dinˆamicas, podendo ser alteradas em tempo de execu¸c˜ao.

Ex.: Um padr˜ao estrutural de objeto descreve como estes devem ser

(24)
(25)

Como Descrever um Padr˜

ao?

• Apesar de muito importante, a representa¸c˜ao gr´afica dos elementos

do padr˜ao n˜ao ´e suficiente, j´a que apresenta apenas a estrutura¸c˜ao dos elementos no design.

• Para garantir a compreens˜ao do padr˜ao e facilitar seu reuso, s˜ao

necess´arios tamb´em registros tratando informa¸c˜oes como as

alternativas existentes, as decis˜oes tomadas, as vantagens e

desvantagens do padr˜ao, exemplos de sua aplica¸c˜ao, etc.

• Seguindo a proposta de “Gang of Four”, a descri¸c˜ao de cada um dos

padr˜oes ser´a dividida em 13 informa¸c˜oes categ´oricas, facilitando assim a compreens˜ao, compara¸c˜ao e utiliza¸c˜ao dos padr˜oes.

(26)

Elementos da Descri¸c˜

ao dos Padr˜

oes

Nome do Padr˜

ao e Classifica¸c˜

ao

Uma denomina¸c˜ao curta que transmite a essˆencia do padr˜ao e passa a

fazer parte do vocabul´ario dos projetistas. Classifica¸c˜oes quanto a

finalidade e escopo.

Prop´

osito

Uma breve descri¸c˜ao que deve responder a perguntas como: “O quˆe o

padr˜ao faz?”, “Qual a sua pretens˜ao?” e “Que tipo de problema ou

caracter´ıstica particular de Design ele trata?”

Tamb´

em Conhecido Como

Conjunto de outros nomes e denomina¸c˜oes que refereciam o padr˜ao, caso

(27)

Elementos da Descri¸c˜

ao dos Padr˜

oes

Motiva¸c˜

ao

Um cen´ario que ilustra o problema de Design e como as estruturas de

classes e objetos no padr˜ao o resolvem.

Aplicabilidade

Uma breve descri¸c˜ao que deve responder a perguntas como: “Quais s˜ao

as situa¸c˜oes em que este padr˜ao pode ser aplicado?”, “Quais s˜ao os

exemplos de designs ruins que a utiliza¸c˜ao dele pode resolver?” e “Como

vocˆe pode reconhecer estas situa¸c˜oes?”.

Estrutura

(28)

Elementos da Descri¸c˜

ao dos Padr˜

oes

Participantes

As classes e/ou objetos pertencentes `aquele par˜ao e suas

responsabilidades.

Colabora¸c˜

oes

Como os participantes interagem para cumprir suas responsabilidades.

Conseq¨

encias

Uma breve descri¸c˜ao que deve responder a perguntas como: “Como o

padr˜ao alcan¸ca seus objetivos?”, “Quais s˜ao as vantagens e desvantagens

da utiliza¸c˜ao do padr˜ao?” e “Quais aspectos da estrutura do sistema

(29)

Elementos da Descri¸c˜

ao dos Padr˜

oes

Implementa¸c˜

ao

Dicas e t´ecnicas ´uteis no processo de implementa¸c˜ao, e poss´ıveis

armadilhas para as quais o projetista deve estar preparado. Rela¸c˜oes do

padr˜ao com uma ou outra linguagem.

odigo Exemplo

Fragmentos de c´odigo que ilustrem como o padr˜ao deve ser implementado

Usos Conhecidos

Exemplos da utiliza¸c˜ao do padr˜ao em sistemas j´a implementados.

Padr˜

oes Relacionados

Lista de todos os padr˜oes fortemente relacionados ao padr˜ao em quest˜ao

(30)

Obrigado pela aten¸c˜ao!

Referências

Documentos relacionados

É perceptível, desta forma, o constante aumento do aprofundamento dos personagens: os “príncipes” têm agora não só nome e falas, mas personalidades bem desenvolvidas,

Caso o Investidor opte por indicar o número de Unidades de Conta, o montante a resgatar em cada Fundo Autónomo será igual ao valor que resultar da multiplicação entre o número

O candidato poderá obter informações e orientações sobre o Simulado Virtual, tais como Editais, processo de inscrição, horário de prova, gabaritos, ranking e resultados

TABELA 5: Poder calorífico superior (Kcal/KG) do fuste sem casca, casca e resíduo, por grupo de árvores. As precisões das estimativas são consideradas adequadas. b) A medição

Para aquisição por permuta serão obedecidos os seguintes critérios:  Materiais doados por permuta e que não serão incorporados ao acervo, serão. enviados para outras

Para saber como o amostrador Headspace 7697A da Agilent pode ajudar a alcançar os resultados esperados, visite www.agilent.com/chem/7697A Abund.. Nenhum outro software

Ligar o cabo dentro da braçadeira ou substituí-lo Há um obstáculo no meio da fotocélula ou não funciona Verificar a ligação, remover qualquer obstáculo Para um comando com

No caso em estudo, observa-se que 65% das famílias são compostas por quatro ou mais moradores, ou seja, são entregues moradias consideradas inadequadas, ou ainda