Buscar

Aula 10 - (2012)

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 59 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 59 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 59 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

16/03/2012
1
2
Capa de livro
clássico na área de 
Arquitetura de
software
16/03/2012
2
3
4
16/03/2012
3
� Projeto de arquitetura:
◦ Processo para identificar os subsistemas que compõem um
sistema e a estrutura para controlar a comunicação entre os
subsistema
• A saída desse processo é uma descrição da
arquitetura do software
5
• Fase inicial do processo de concepção do sistema.
• Representa a ligação entre a especificação e a
codificação.
• Muitas vezes realizadas em paralelo com algumas
atividades de especificação.
• Trata-se de identificar os principais componentes do
sistema e suas comunicações.
6
16/03/2012
4
7
8
Enactment
GenericDataSource ContractManagement
DiscoverDataLocation SystemInformationManagement
DataChannel MessagesChannel DiscoveryChannel DataExchangeFormat
NotificationInterface
Jxta Channels IMPL (Socket, RMI, WebServices, ....)
ARQUITETURA EM CAMADAS DA EXECUCAO DISTRIBUIDA NO SISTEMA P2Process
O nivel de abstracao cresce de baixo para cima.
No nivel inferior encontram-se os componentes que utilizam diretamente a API JXTA.
No nivel superior esta a interface de execucao de modelos de processos do sistema.
OBS: Dentro de cada pacote há uma descrição breve da funcionalidade de cada camada e componente.
A
B
C
D
E
16/03/2012
5
9
ContractValidationInter...
isValid()
DateContractValidation
beginDate : String
endDate : String
DateContractValidation()
isValid()
ConditionContractValidation
condition : String
ConditionContractValidation()
isValid()
This interface defines a validation 
operation to one contract. The first 
operation after access the contract would 
be look if it's still valid or not.
Different implementation classes should 
provide different kind of contracts goals : 
date, condition, goal reached, etc....
Here the relationship between 
contract and Software 
Development Organizations is 
defined. 
For a contract, one organization 
can be the supplier or can be ...
With Organization Metrics and Reputation Information 
(inside package reputation) a customer can classify 
and sele ct the bes t Organization to develop one sys tem 
or task. 
The ope ration to choose the best Organization is 
supposed to be a high time consuming task and thi s 
information can be used to accelerate thi s process 
...
OrganizationMetric
OrganizationMetric()
Condition
startValidDate : Date
endValidDate : Date
validPeriod : Period
Condition()
Right
type : String
Right()
Organization
Organization()
0..n
0..n +theOrganizationMetric
0..n
+theOrganization0..n
OrganizationManager
d igitalUUID : String
0..n
1..n
+theOrganization
0..n
1..n
theOrganizationMan...
Rule
ruleID : String
ruleDescription : String
type : int
validPeriod : Period
Rule()
1..n
1 +isConditionOf
1..n+hasCondition
1
1
0..n
+theRigh t
1
0..n
ContractMetric
ContractMetric()
PeerHost
hostName : String
hostAddress : String
hostDescription : String
peerState : String
PeerHost()
1..n
1
+thePeerHos t
1..n
+theOrganization1
Contract
validationKey : String
definitionPeriod : Period
contractState : String
contractValidationInterface : ContractValidationInterface
Contract()
0..n
1..n
0..n
+customers1..n
isCustomerInCont...
1..n
0..n
+suppliers
1..n
+isSupplierInContract
0..n
1..n
0..n
+theOrganizationManager
1..n
+theContract
0..n
0..n1..n
+isPartOf
0..n
+containsRule
1..n0..n0..n +theContract 0..n+theContractMetric0..n
0..n
0..n
+isInvolved
0..n
+contaisPeerHost
0..n
FieldCondition
atributeName
name
allow : boolean
FieldCondition()
ClassCondition
className
packageName
ClassCondition()
0..11
+theFieldCondition
0..11
ObjectCondition
objectOid
objectID
ObjectCondition()
Validation key is generated after contract 
definition. 
All messages received trying to access 
data based on contract definition need 
to be validated with this key. 
Only hosts that know contract content 
must know this private key. With this 
caution the system try to avoid "fake 
peers" on network.
de onde tu tiraste os requis ito s para esta histór ia aqui? O Arna ldo es tá de 
acordo?
ADAILTON:
Es ta definição inicia l foi baseada na idéia de Metric, que já existe no modelo 
do WebAPSEE. Esta questão de cus tos re lacionados com a escolha da 
melhor parceira é tratada no texto do prof Arnaldo.
O amadu recimento desta idéia surgiu com a conce ituacao dos "repu tation 
systems", que proveêm estruturas de dados para análise de dados entre 
hosts, m uito usado hoje para redes p2p na verificação de hosts "sad ios" e 
hosts que enviam virus e arquivos errados.
Melhor de finição destes dados deve cons tar no pacote reputat ion (logo acima 
deste pacote atual). [PS: o pacote reputation nao esta totalmen te definido, 
pois estou avaliando as inform acoes dados pelo Mr Kinateder , pesquisador 
...
Period
beginDa te : Date
endDate : Date
validationCondition
Defines a 
time pe riod
10
under 
definition
defined
valid
finished
manager started contract defini...
manager finished contract definition / generate contract validation...
contract defined and isValid()==...
not valid
contract defined and isValid()==f...
supplier defines that all activitities are concl...
isValid()==false, because condition has changed to f...
isValid()==true, because condition has changed to ...
supplier defines that all activitities are concl...
16/03/2012
6
� A arquitetura de software, programa ou 
sistema computacional é a estrutura do 
sistema que abrange: 
◦ Os componentes de software;
◦ As propriedades externamente visíveis destes 
componentes; e
◦ As relações entre eles
11
Bass et al apud Pressman
� A arquitetura não é software funcional
� Porém, permite a um Engenheiro de Software:
◦ Analisar a adequação de um projeto no atendimento 
dos requisitos estabelecidos
◦ Considerar alternativas arquiteturais em um estágio 
em que as mudanças do projeto ainda são fáceis e 
baratas
◦ Reduzir os riscos associados com a construção de 
software
12
16/03/2012
7
� Facilitador da comunicação entre os 
envolvidos com um sistema
� Destaca decisões iniciais de projeto que 
impactam profundamente em todas as outras 
fases do projeto
� Modelo relativamente pequeno, 
intelectualmente inteligível de como o 
sistema é estruturado e como seus 
componentes trabalham em conjunto
13
� O O O O projetoprojetoprojetoprojeto nãonãonãonão podepodepodepode ser “ser “ser “ser “bitoladobitoladobitoladobitolado””””
◦ Um bom projetista deve considerar abordagens
alternativas, julgando cada uma com base nos requisitos
� O O O O projetoprojetoprojetoprojeto devedevedevedeve estarestarestarestar relacionadorelacionadorelacionadorelacionado aoaoaoao modelomodelomodelomodelo de de de de 
análiseanáliseanáliseanálise
◦ Como um único elemento do projeto pode estar 
relacionado com vários requisitos, é necessários ter 
recursos para estabelecer como os requisitos serão 
satisfeitos pelo projeto
� O O O O projetoprojetoprojetoprojeto nãonãonãonão devedevedevedeve reinventarreinventarreinventarreinventar a a a a rodarodarodaroda
◦ Sistemas são construídos usando um conjunto de padrões 
de projeto, muitos dos quais estão descritos amplamente 
na literatura
14
16/03/2012
8
� O O O O projeto deve “minimizar a distância intelectual” projeto deve “minimizar a distância intelectual” projeto deve “minimizar a distância intelectual” projeto deve “minimizar a distância intelectual”entre entre entre entre o software e o o software e o o software e o o software e o problemaproblemaproblemaproblema
� O O O O projeto deve exibir uniformidade e projeto deve exibir uniformidade e projeto deve exibir uniformidade e projeto deve exibir uniformidade e integraçãointegraçãointegraçãointegração
◦ Em um projeto uniforme parece que uma única pessoa 
desenvolveu ele todo. 
◦ Regras de estilo e formato além de interfaces devem ser 
definidas para uma equipe de projeto antes que o trabalho 
inicie.
� O projeto deve ser estruturado para acomodar O projeto deve ser estruturado para acomodar O projeto deve ser estruturado para acomodar O projeto deve ser estruturado para acomodar 
modificaçãomodificaçãomodificaçãomodificação
15
� Projeto Projeto Projeto Projeto não é codificação. Codificação não é não é codificação. Codificação não é não é codificação. Codificação não é não é codificação. Codificação não é 
projeto projeto projeto projeto 
◦ Mesmo quando os mais detalhados projetos procedimentais 
são criados para os componentes de programa, o nível de 
abstração de projeto é maior que o do código-fonte
� O O O O projetoprojetoprojetoprojeto devedevedevedeve ser ser ser ser avaliadoavaliadoavaliadoavaliado quantoquantoquantoquanto à à à à qualidadequalidadequalidadequalidade, à , à , à , à 
medidamedidamedidamedida quequequeque é é é é criadocriadocriadocriado, , , , nãonãonãonão depoisdepoisdepoisdepois de ser de ser de ser de ser criadocriadocriadocriado
◦ Uma variedade de conceitos e medidas de projeto está 
disponível para auxiliar o projetista na avaliação de 
qualidade. 
� O projeto deve ser revisto para minimizar erros O projeto deve ser revisto para minimizar erros O projeto deve ser revisto para minimizar erros O projeto deve ser revisto para minimizar erros 
conceituais (semânticos)conceituais (semânticos)conceituais (semânticos)conceituais (semânticos)
◦ A equipe de projeto deve garantir que os principais 
elementos conceituais (omissões, ambigüidade e 
inconsistência) tenham sido tratados
16
16/03/2012
9
� Deve-se considerar de maneira detalhada o 
atendimento aos requisitos não-funcionais
◦ Segurança
◦ Escalabilidade
◦ Eficiência
◦ Plataforma operacional
◦ Disponibilidade: 24 x 7
◦ ...
17
16/03/2012
10
� AbstraçãoAbstraçãoAbstraçãoAbstração – Diferentes visoesdados (procedimento
e controle)
� RefinamentoRefinamentoRefinamentoRefinamento - elaboração dos detalhes de todas as 
abstrações
� ModularidadeModularidadeModularidadeModularidade - criação de módulos ou pacotes
para dados e funções
� ProcedimentoProcedimentoProcedimentoProcedimento - os algoritmos que fornecem as 
funções desejadas
� OcultamentoOcultamentoOcultamentoOcultamento dadadada InformaçãoInformaçãoInformaçãoInformação - interfaces definidas
19
� Abstração
◦ De dados
20
porta
Definido como uma estrutura de dados
fabricante
modelo
tipo
material
peso
mecanismo de abertura
preço
16/03/2012
11
� Abstração
◦ Procedimental
21
abrir
Definido tendo o “conhecimento” do
do objeto que está associado com Abrir
Detalhamento
algorítmico
� Modularidade
◦ Facilidade para construir, facilidade para modificar, 
facilidade para conserto, ...
22
A 
pa
rt
e 
de 
im
ag
e
m 
co
m 
id
en
tifi
ca
çã
o 
de 
rel
aç
ão 
rI
d3 
nã
o 
foi 
en
co
nt
ra
da 
A parte de 
imagem com 
identificação de 
relação rId4 não 
foi encontrada 
no arquivo.
A parte de imagem 
com identificação 
de relação rId5 não 
foi encontrada no 
arquivo.
A parte de imagem 
com identificação 
de relação rId6 não 
foi encontrada no 
arquivo.
A parte de imagem com identificação de relação rId7 não foi encontrada 
no arquivo.
A parte de imagem com identificação de relação rId8 não foi encontrada no arquivo.
A parte de imagem com identificação de relação rId9 não foi encontrada no arquivo.
A parte de imagem com 
identificação de relação 
rId10 não foi encontrada 
no arquivo.
A parte de imagem com 
identificação de relação 
rId11 não foi encontrada 
no arquivo.
A 
part
e 
d
A 
part
e d…
A 
parte 
de 
image
m c
A 
parte 
de 
image
m co
A parte de imagem com 
identificação de relação …
A parte de imagem com 
identificação de relaçã…
A parte de imagem com identificação de relação rId18 não foi encontrada 
no arquivo.
A parte de imagem com identificação de relação rId19 não 
foi encontrada no arquivo.
A parte de imagem com identificação de relação rId20 
não foi encontrada no arquivo.
A parte de imagem com identificação de relação 
rId21 não foi encontrada no arquivo.
16/03/2012
12
� Modularidade
23
MODULE
What's 
inside??
How big 
is it??
Qual o tamanho “correto” dos módulos?Qual o tamanho “correto” dos módulos?
� Modulo deve ser Independente
◦ Coesão
� Medida da identidade funcional de um módulo
� I.e., módulo realiza uma única função
◦ Acoplamento
� Grau de dependência entre módulos
◦ Ideal: coesão alta e acoplamento baixo
◦ Obs: apesar destas medidas terem surgido para 
Análise Estruturada, são também aplicáveis em 
métodos OO
24
16/03/2012
13
� Ocultamento da Informação
◦ Information Hiding, Parnas 1972
25
módulomódulo
interfaceinterface
””segredosegredo""
• • algoritmoalgoritmo
• • estruturaestrutura de dadosde dados
• • detalhedetalhe dada interface interface externaexterna
• • políticapolítica de de alocaçãoalocação de de recursorecurso
OutrosOutros MódulosMódulos
� Ocultamento da Informação
◦ Reduz a ocorrência de “efeitos colaterais”
◦ Limita o impacto global das decisões locais de projeto
◦ Enfatiza comunicação através de interfaces 
controladas
◦ Desencoraja o uso de dados globais
◦ Leva ao encapsulamento
� Atributo de projeto de alta qualidade
◦ Resulta em qualidade de software
26
16/03/2012
14
� Introdução
� 1 - Arquitetura e Projeto de Software
� 2222---- Estilos ArquiteturaisEstilos ArquiteturaisEstilos ArquiteturaisEstilos Arquiteturais
� 3 - Padrões de Projeto
� 4 - Estilo em Camadas e MVC – detalhamento
� Exercícios e trabalhos práticos
27
28
Arquitetura = Componentes
+
Conectores
16/03/2012
15
� Arquitetura é composta de:
◦ Subsistemas ou componentes
� Responsáveis pelo comportamento do sistema
◦ Conexões entre componentes
� Possibilitando vários tipos de interação e 
compartilhamento de informação entre esses 
componentes
29
� Cada estilo descreve uma categoria de sistemas 
que engloba:
◦ Um conjunto de componentescomponentescomponentescomponentes (banco de dados, 
módulos de interface, módulos funcionais) que realiza 
uma função requerida pelo sistema
◦ Um conjunto de conectoresconectoresconectoresconectores que fornecem 
“comunicação, coordenação e cooperação” entre os 
componentes
◦ RestriçõesRestriçõesRestriçõesRestrições que definem como os componentes podem 
ser integrados para compor um sistema
◦ Modelos Modelos Modelos Modelos semânticossemânticossemânticossemânticos que permitem ao projetista 
entender as propriedades gerais do sistema pela 
análise das propriedades conhecidas de suas partes
30
16/03/2012
16
� PipesPipesPipesPipes & & & & FiltersFiltersFiltersFilters (Dutos e Filtros)(Dutos e Filtros)(Dutos e Filtros)(Dutos e Filtros)
� Cliente Servidor
� Camadas
� Centrada em Dados
� Invocação implícita
31
� Centradas em Fluxo de dados ou Pipes and 
Filters
32
Exemplo: sistemas workflow
Considera uma rede pela qual flui
dados de uma extremidade (origem) à
outra (destino)
16/03/2012
17
� Centradas em Fluxo de dados ou Pipes and
Filters: Aplicação em compiladores
33
Análise Léxica
Análise
Sintática
Otimização
Análise
Semântica
Geração de
código
Exemplo 2 Exemplo2 Exemplo 2 Exemplo 2 Código intermediário para atender portabilidade entre plataformasCódigo intermediário para atender portabilidade entre plataformasCódigo intermediário para atender portabilidade entre plataformasCódigo intermediário para atender portabilidade entre plataformas
Exemplo 1Exemplo 1Exemplo 1Exemplo 1
Análise Léxica
Análise
Sintática
Análise
Semântica
Otimização
Geração de
código
Função de análise Função de síntese
Geração de
Código
Intermediário
Análise Léxica
Análise
Sintática
Análise
Semântica
Otimização
Geração de
código
Função de análise Função de síntese
Geração de
Código
Intermediário
� Pipes & Filters
� Cliente ServidorCliente ServidorCliente ServidorCliente Servidor
� Camadas
� Centrada em Dados
� Invocação implícita
34
16/03/2012
18
• Modelo de sistema distribuído em que apresenta como os dados
e processamento são distribuídos através de uma série de
componentes
• Pode ser implementado em um único computador ou em vários.
• Exemplo:
• Um conjunto de servidores autônomos que prestam serviços específicos,
tais como impressão, gerenciamento de dados, etc e um conjunto de
clientes que solicitam estes serviços.
• Rede que permite aos clientes acessar os servidores.
35
� Chamada e Retorno
◦ Estrutura relativamente fácil de ampliar e mudar
◦ Subestilos:
� Programa Principal/Subprograma
� Chamada de Procedimentos Remotos
36
16/03/2012
19
37
� Pipes & Filters
� Cliente Servidor
� CamadasCamadasCamadasCamadas
� Centrada em Dados
� Invocação implícita
38
16/03/2012
20
� Camadas
39
� Inspirado em 
Sistemas 
Operacionais
�Utilizado hoje 
para segmentar 
IU, Lógica da 
aplicação, e BD 
(normalmente)
� Camadas
40
http://www.ime.usp.br/~andrers/aulas/bd2005-
1/img/arquitetura_n_camadas.jpg
16/03/2012
21
41
� Camadas
◦ Número de camadas depende da funcionalidade a ser 
oferecida pelo sistema
◦ Definição de critérios de abstração para agrupar subtarefas na 
composição de uma camada
� Critérios: persistência, interação com usuário, lógica de negócio, 
etc.
◦ Vantagem: flexibilidade
◦ Desvantagem: o desempenho fica comprometido face à 
necessidade de um caso de uso passar por várias camadas
◦ Desafio do projeto em camadas: 
� encontrar equilíbrio entre número de camadas x tempo de resposta
42
16/03/2012
22
� Camadas
◦ Protocolos de redes de 
computadores
43
física
enlace
rede
transporte
sessão
apresentação
aplicação
� Camadas
◦ Desenho de aplicação “aberta”
44física
enlace
rede
transporte
sessão
apresentação
aplicação
física
enlace
rede
transporte
sessão
apresentação
aplicação
protocolo da camada 7
protocolo da camada 6
protocolo da camada 5
protocolo da camada 4
protocolo da camada 3
protocolo da camada 2
protocolo da camada 1
Sistema X Sistema Y
física
enlace
rede
transporte
sessão
apresentação
aplicação
física
enlace
rede
transporte
sessão
apresentação
aplicação
protocolo da camada 7
protocolo da camada 6
protocolo da camada 5
protocolo da camada 4
protocolo da camada 3
protocolo da camada 2
protocolo da camada 1
Sistema X Sistema Y
16/03/2012
23
� Pipes & Filters
� Cliente Servidor
� Camadas
� Centrada em DadosCentrada em DadosCentrada em DadosCentrada em Dados
� Invocação implícita
45
� Centradas em Dados
◦ Repositório
◦ Usado quando um sistema é descrito como um 
armazém centralizado de dados que se comunica
com um número de clientes
46
16/03/2012
24
• Subsistemas devem trocar dados. O que pode ser feito de duas
maneiras:
• Dados compartilhados são guardados em um banco de dados central ou
repositório e podem ser acessados por todos os subsistemas;
• Cada subsistema mantém seu próprio banco de dados e
transmite dados explicitamente para outros subsistemas.
• Quando grandes quantidades de dados devem ser
compartilhadas, é mais comum o uso do modelo de repositório
compartilhado pois esse é um eficiente mecanismo de
compartilhamento de dados.
47
� Centradas em Dados - Repositório
◦ Acesso a um repositório com dados comuns para os 
clientes
◦ Componentes - clientes podem ser modificados ou 
adicionados sem preocupação com os outros
48
Repositório
de dados
Software do
cliente
Software do
cliente
Software do
cliente
Software do
cliente
Software do
cliente
16/03/2012
25
49
� Centradas em Dados
◦ Baseada em SGBDs “ricos”
� Pode ser visto como um repositório passivo ou blackboard
ativo 
� O próprio banco pode ser usado para notificar clientes
� O banco fornece recursos de programação, ferramentas para 
geração de telas e relatórios, tipos de dados customizáveis, 
etc
� Por exemplo: Oracle, DB2
◦ Vantagem:
� simplifica o desenvolvimento de ferramentas diversas, 
independentes
◦ Desvantagem:
� Dependência de um produto/tecnologia/fornecedor.
50
16/03/2012
26
� Pipes & Filters
� Chamada e Retorno
� Orientadas a Objeto
� Camadas
� Centrada em Dados
� Invocação implícitaInvocação implícitaInvocação implícitaInvocação implícita
51
� Invocação Implícita (baseada em eventos)
◦ Objetivo principal: baixo acoplamento
◦ Funcionamento:
� Componentes são registrados com o interesse em responder 
a tipos de eventos
� Quando um determinado componente deseja invocar um 
procedimento este não o faz diretamente. Ele anuncia um 
evento
� Quando um evento é anunciado, o sistema por si só invoca 
os procedimentos registrados para atender ao evento
� Portanto, um evento implicitamente causa a invocação de 
procedimentos em diversos outros módulos
52
16/03/2012
27
� Invocação implícita
◦ Diferença com relação à invocação explícita:
� Os componentes do sistema usam eventos para se 
comunicar entre si.
� Os conectores são ligações fracas entre eventos e 
métodos dos componentes, os quais podem ser 
redefinidos em tempo de execução.
53
� Recado Final
◦ Leitura adicional é necessária para observar 
exemplos de aplicações
� Garlan e Shaw é uma ótima leitura
◦ Arquiteturas híbridas
� Invariavelmente um sistema adotada mais de um estilo 
arquitetural simultâneo
54
16/03/2012
28
� Introdução
� 1 - Arquitetura e Projeto de Software
� 2- Estilos Arquiteturais
� 3 3 3 3 ---- Padrões de ProjetoPadrões de ProjetoPadrões de ProjetoPadrões de Projeto
� 4 - Estilo em Camadas e MVC – detalhamento
� Exercícios e trabalhos práticos
55
� Motivação
◦ Projetar software orientado a objetos não é uma 
tarefa fácil
◦ Projeto de software reutilizávelreutilizávelreutilizávelreutilizável é difícil
� encontrar objetos pertinentes
� desenvolve-los em classes no nível correto de 
granularidade
� definir as interfaces das classes e hierarquias de 
herança
� estabelecer relações-chave entre eles
56
16/03/2012
29
� Motivação
◦ Projetistas experimentes possuem maior facilidade 
em construir projetos orientados a objetos
� Razão: a experiência com projetos anteriores leva a um 
contínuo aperfeiçoamento a partir da reutilização de 
projetos bem sucedidos
� Quando uma boa solução é encontrada, esta é 
utilizada repetidamente
� Padrões de classes e de comunicação entre objetos 
que reaparecem freqüentemente
57
� Motivação
◦ Padrões existem em diferentes áreas
� Literatura
� Arquitetura de prédios
58
16/03/2012
30
� Consideração
◦ Apesar de todos os avanços na tecnologia de 
software um problema básico existe: 
� a a a a comunicaçãocomunicaçãocomunicaçãocomunicação entre entre entre entre pessoaspessoaspessoaspessoas, das , das , das , das melhoresmelhoresmelhoresmelhores práticaspráticaspráticaspráticas e ee e 
soluçõessoluçõessoluçõessoluções emememem EngenhariaEngenhariaEngenhariaEngenharia de Softwarede Softwarede Softwarede Software
59
© Copyright Clenio F. Salviano 1997
� Conhecimento de Pessoas Experientes
◦ É intangível e muita valioso
� Principais Fatores para: [Capers Jones 96]
� Sucesso: Gerentes e Técnicos Experientes
� Fracasso: Gerentes e Técnicos Inexperientes
◦ Experiência é adquirida lentamente, como resultado
de trabalho e persistência
◦ Como este conhecimento é organizado?
� CapturarCapturarCapturarCapturar, , , , comunicarcomunicarcomunicarcomunicar e e e e assimilarassimilarassimilarassimilar elementoselementoselementoselementos destedestedestedeste
conhecimentoconhecimentoconhecimentoconhecimento é é é é difícildifícildifícildifícil
60
© Copyright Clenio F. Salviano 1997
16/03/2012
31
� A adoção de padrões pode
◦ tornar mais fácil reutilizar projetos e arquiteturas 
bem-sucedidas
◦ ajudar na escolha de alternativas de projeto que 
tornam um sistema mais reutilizável
61
� Os anti-padrões podem ser de dois tipos:
◦ Aqueles que descrevem uma solução ruim para um 
problema que resultou em uma situação ruim.
◦ Aqueles que descrevem como evitar uma situação 
ruim e como proceder para, a partir dela, atingir 
uma boa solução.
62
16/03/2012
32
� O que é um padrão de projeto (design pattern)?
◦ Um padrão de projeto sistematicamente nomeianomeianomeianomeia, 
explicaexplicaexplicaexplica e avaliaavaliaavaliaavalia um projeto importante e recorrente 
em sistemas orientados a objetos
◦ Descrição de “moldes” para a(s) (microa(s) (microa(s) (microa(s) (micro----) arquitetura(s) ) arquitetura(s) ) arquitetura(s) ) arquitetura(s) 
de softwarede softwarede softwarede software
◦ Captura a experiência de projeto para serem usadas 
efetivamente
◦ Documentação em forma de catálogo
◦ Um padrão de projeto encapsula uma técnica testada técnica testada técnica testada técnica testada 
e aprovadae aprovadae aprovadae aprovada
63
� Projeto de Software
◦ Compromisso com a implementação
◦ Reutilização
◦ Eficiência
◦ Influênciado pelos elementos do ambiente de 
implementação
� Linguagens de programação
� Sistemas de Banco de Dados
64
16/03/2012
33
� Histórico
◦ Christopher Alexander
� “cada padrão descreve um problema no nosso ambiente e o 
núcleo da sua solução, de tal forma que você possa usar esta 
solução mais de um milhão de vezes, sem nunca fazê-lo da 
mesma maneira” (1977)
� Arquitetura de construções e cidades
◦ The Gang of Four (GoF)
� Microarquiteturas de software
� Gamma (ex-Taligent, autor de ET++)
� Helm (IBM T.J. Watson R.C.)
� Jonhson (Smalltalk, University of Illinois)
� Vlissides (IBM T.J. Watson R.C.)
� http://hillside.net/patterns/DPBook/GOF.html
65
66
http://hillside.net/patterns/DPBook/DPBook.html
16/03/2012
34
� Contexto, ProblemaContexto, ProblemaContexto, ProblemaContexto, Problema, Forças e Solução
◦ Contexto: Você tem bastante experiência prática na
sua área. 
◦ Você tem notado que utiliza certas soluções para
problemas que ocorrem comumente. 
◦ Você gostaria de compartilhar sua experiência com 
outros
◦ Problema: Como compartilhar esta solução de 
problemas recorrentes com outros para que ela possa
ser reutilizada?
67
� Contexto, Problema, ForçasForçasForçasForças e Solução
◦ Forças:
� Manter a solução com você não requer esforço
� Compartilhar verbalmente ajuda somente alguns
� Escrever a solução é difícil e requer refexão
� Transformá-la de específica em geral é difícil
� As pessoas não devem utilizá-la se não entenderem as 
razões sobre porque utilizá-la
� Escrever as soluções talvez atrapalhe seu negócio
68
16/03/2012
35
� Contexto, Problema, Forças e SoluçãoSoluçãoSoluçãoSolução
◦ Solução: 
� Escreva a solução na forma de um pattern. 
� Capture ambos o problema e a solução, e também as razões 
porque (e onde) a solução é aplicável.
� Apresente os Elementos Obrigatórios para garantir que as 
informações necessárias estão comunicadas de forma clara. 
� Distribua o pattern para grandes audiências, que não 
comprometa seu negócio. Às vezes é melhor publicar o 
pattern apenas internamente.
69
� Onde encontrar patterns?
◦ Livro GoF: 23 padrões
� http://www.hillside.net/patterns/
◦ Padrões para Java
� http://java.sun.com/blueprints/patterns/index.html
◦ Padrões para Delphi:
� http://www.obsof.com/delphi_tips/pattern.html
◦ ...
70
16/03/2012
36
� Elementos essenciais na definição 
de um padrão
◦ Nome
◦ Problema
◦ Solução
◦ Conseqüências
71
� Elementos essenciais na definição de um 
padrão
◦ Nome
� Referência para descrição de um problema de projeto, 
suas soluções e conseqüências em uma ou duas 
palavras
72
16/03/2012
37
� Elementos essenciais na definição de um 
padrão
◦ Problema
� Descreve quando aplicar um problema
� Explica o problema e seu contexto
� Estruturas de classe
� Lista de condições que devem ser satisfeitas para que 
faça sentido aplicar o padrão
73
� Elementos essenciais na definição de um 
padrão
◦ Solução
� Descreve os elementos que compõem o projeto, seus 
relacionamentos, suas responsabilidades e 
colaborações
� Arranjo geral de elementos que resolvem um problema
� Uso de UML para descrição de soluções
74
16/03/2012
38
� Elementos essenciais na definição de um 
padrão
◦ Conseqüências
� Análise crítica do padrão fornecido, incluindo 
vantagens, desvantagens e limitações
� Elementos que influenciam decisivamente na escolha 
de um padrão como solução para um problema
75
� Descrição completa de um padrão de projeto (Gamma et 
al)
◦ Nome e classificação do padrão
◦ Intenção e Objetivo
◦ Também conhecido como
◦ Motivação
◦ Aplicabilidade
◦ Estrutura (UML)
◦ Participantes
◦ Colaborações
◦ Conseqüências
◦ Implementação
◦ Exemplo de código
◦ Usos conhecidos
◦ Padrões relacionados
76
16/03/2012
39
� Organização do Catálogo de Gamma et al
◦ 23 padrões de projeto são propostos
◦ Padrões orientados para SmallTalk e C++
◦ Para permitir a reutilização é fundamental que o 
projetista consiga localizar facilmente o padrão que seja 
útil
◦ Padrões de projeto variam quanto
� Granularidade
� Classe
� Objeto
� Propósito
� De criação
� Estrutural
� Comportamental
77
78
16/03/2012
40
� Os padrões de criaçãopadrões de criaçãopadrões de criaçãopadrões de criação abstraem o processo 
de instanciação. 
� Eles ajudam a tornar um sistema 
independente de como seus objetos são 
criados, compostos e representados.
� Os padrões de criação se tornam mais 
importantes à medida que os sistemas 
evoluem no sentido de depender mais da 
composição de objetos do que da herança 
de classes
79
� SingletonSingletonSingletonSingleton
◦ Classificação:Classificação:Classificação:Classificação:
� Granularidade: de classe
� Propósito: de criação
◦ IntençãoIntençãoIntençãoIntenção
� Garantir que uma classe tenha somente uma instância 
e fornecer um ponto global de acesso para a mesma
80
16/03/2012
41
� SingletonSingletonSingletonSingleton
◦ MotivaçãoMotivaçãoMotivaçãoMotivação
� É importante para algumas classes ter uma, e apenas 
uma, instância. 
� Por exemplo, um sistema de contabilidade será dedicado a 
servir somente a uma companhia.
� Como garantimos que uma classe tenha somente uma 
instância e que esta instância seja facilmente acessível? 
� Uma variável global torna um objeto acessível, mas não 
impede você de instanciar múltiplos objetos
� Uma solução melhor seria tornar a própria classe responsável 
por manter o controle da sua única instância. 
81
� SingletonSingletonSingletonSingleton
◦ AplicabilidadeAplicabilidadeAplicabilidadeAplicabilidade
� Use o padrão Singleton quando� Deve haver apenas uma instância de uma classe, e essa 
instância deve dar acesso aos clientes através de um 
ponto bem conhecido;
� Quando a única instância tiver de ser extensível através de 
subclasses, possibilitando aos clientes usarem uma 
instância estendida sem alterar o seu código
82
16/03/2012
42
� SingletonSingletonSingletonSingleton
◦ Estrutura
83
Singleton
static Instance()
singletonOperation()
getSingletonData()
static uniqueInstance
singletonData
return uniqueInstance
� SingletonSingletonSingletonSingleton
◦ Participantes
� Singleton define uma operação Instance que permite 
aos clientes acessarem sua única instância
� O padrão pode ser responsável pela criação da sua 
própria instância única
◦ Colaborações
� Os clientes acessam uma instância Singleton
unicamente pela operação Instance do Singleton
84
16/03/2012
43
� SingletonSingletonSingletonSingleton
◦ Implementação
� Garantindo uma única instância (cont.)
� A implementação correspondente é a seguinte:
� Os clientes acessam o singleton através da função Instance
85
Singleton* Singleton::_instance = 0;
Singleton* Singleton::Instance() {
if (_instance == 0) {
_instance = new Singleton;
}
return _instance;
}
� SingletonSingletonSingletonSingleton
◦ Exemplo de código
� Classe existente: MazeFactory
� Classe responsável pela criação de labirintos (compostos 
por salas, paredes e portas)
86
Class MazeFactory {
Public:
static MazeFactory* Instance();
// código existente entra aqui
Protected:
MazeFactory();
Private:
static MazeFactory* _instance;
};
MazeFactory* MazeFactory::_instance = C
MazeFactory* MazeFactory::Instance() {
if (_instance == 0) {
_instance = new MazeFactory;
}
return _instance;
}
16/03/2012
44
� SingletonSingletonSingletonSingleton emememem
◦ Teste
87
� Padrões Estruturais
◦ Preocupam-se como serão criados os objetos para 
obtenção de estruturas maiores.
◦ Utilizam herança para compor interfaces ou 
implementações.
◦ Descrevem maneiras de compor objetos para obter 
novas funcionalidades.
◦ Define um estrutura para o compartilhamento de 
objetos.
◦ Exemplo
� Façade (Fachada)
� Adapter
88
16/03/2012
45
� A intenção do padrão façadefaçadefaçadefaçade
é prover uma interface única 
para um conjunto de 
interfaces de um 
subsistema.
� Torna a aplicação mais fácil 
já que toda a comunicação 
entre as classes ocorre a 
partir de uma única 
interface.
89
FaFaççadeadeFaFaççadeade
� Quando utilizar o Façade?
◦ Quando se deseja construir um interface mais 
simples de acesso às classes;
◦ Para tornar o sistema mais reutilizável;
◦ Para encapsular o acesso aos dados de SGBD.
90
16/03/2012
46
� Considerações sobre implementaçãoConsiderações sobre implementaçãoConsiderações sobre implementaçãoConsiderações sobre implementação
◦ Redução do acoplamento do cliente-subsistema.
◦ Ocorre tornando o Façade uma classe abstrata 
com subclasses concretas.
� Classe Classe Classe Classe de subsistemas: públicas ou de subsistemas: públicas ou de subsistemas: públicas ou de subsistemas: públicas ou 
privadas?privadas?privadas?privadas?
◦ A classe Façade deve ser pública.
◦ As classes envolvidas no processo podem ser 
privadas.
91
92
16/03/2012
47
package noticia;
import java.sql.*;
import java.util.Vector;
public class Fachada {
private String msg=null;
private ResultSet rs=null;
private CadUsuario cadusr;
private CadNoticia cadnt;
public Fachada() {
}
93
Definição da estrutura da 
classe classe Façade, 
referenciando operações 
entre objetos.
94
16/03/2012
48
� Adapter
◦ Converte a interface de uma classe em outra
interface que os clientes esperam.
◦ O padrão Adapter permite que classes que não
poderiam trabalhar juntas devido a interfaces 
incompatíveis trabalhem juntas.
◦ É importante na migração de sistemas legados
95
� Adapter
◦ Estrutura
96
16/03/2012
49
� Padrões que definem a dinâmica do 
funcionamento
� Envolvem troca de mensagens
� Exemplos mostrados aqui:
◦ State
◦ Observer
97
� StateStateStateState
◦ ClassificaçãoClassificaçãoClassificaçãoClassificação
� Comportamental de Objeto
◦ PropósitoPropósitoPropósitoPropósito
� Permitir a um objeto alterar o seu comportamento
quanto o seu estado interno mudar
� O objeto irá aparentar mudar de classe
◦ TambémTambémTambémTambém conhecidoconhecidoconhecidoconhecido comocomocomocomo
� Objects for States
98
16/03/2012
50
� State
◦ Objetivo: usar objetos para representar estados e
polimorfismo para tornar transparente a execução de 
tarefas dependentes de estado.
◦ Simula a troca de classe de um objeto
99
� State: Estrutura
10
0
16/03/2012
51
� State: Participantes
◦ ContextContextContextContext
� Define a interface de interesse para os clientes
� Mantém uma instância de uma subclasse ConcreteState que
define o estado corrente
◦ StateStateStateState
� define uma interface para encapsular o comportamento
associado com um estado particular do contexto
◦ ConcreteStateConcreteStateConcreteStateConcreteState
� Implementa um comportamento associado a um estado do 
Context
10
1
10
2
16/03/2012
52
� Observer
◦ Também conhecido como Publish/Subscribe
◦ Usado para monitorar o estado de um objeto 
10
3
10
4
16/03/2012
53
� Observer - Participantes
◦ Subject
� Classe abstrata que provê uma interface para anexar e
desanexar observadores (observers). Possui uma lista
privada de observers. Contém estes métodos:
� Attach – Adiciona um novo observer para a lista
� Detach – Remove um observador existente
� Notify – Notifica cada observer pela chamada a update() –
quando ocorre alguma mudança
10
5
� Observer - Participantes
◦ ConcreteSubject
� Esta classe provê o estado de interesse para os
observadores.
� Também envia a notificação a todos os observadores
através da chamada da função Notify (em sua
superclasse ou classe básica == classe Subject).
� Contém a função
� getState – retorna o estado do subject
10
6
16/03/2012
54
� Observer – Participantes
◦ Observer
� Esta classe define uma interface de atualização para
todos os observers para receberem notificações de 
atualização do Subject.
� A classe Observer é abstrata
� Contém a função:
� Update – método abstrato para ser substituído por
observers concretos.
10
7
� Observer - Participantes
◦ ConcreteObserver
� Classe cujos objetos mantêm referência com 
ConcreteSubject para receber o estado de um Subject 
quando uma notificação é recebida.
� Contém a função
� Update – função que é herdada da superclasse. Quando
chamada pelo Subject, o ConcreteObserver chama a 
função getState do Subject para atualizar a informação
sobre o estado do Subject.
10
8
16/03/2012
55
� Introdução
� 1 - Arquitetura e Projeto de Software
� 2- Estilos Arquiteturais
� 3 - Padrões de Projeto
� 4 4 4 4 ---- Estilo em Camadas e MVC Estilo em Camadas e MVC Estilo em Camadas e MVC Estilo em Camadas e MVC –––– detalhamentodetalhamentodetalhamentodetalhamento
� Exercícios e trabalhos práticos
10
9
� O uso de camadas é um padrão arquitetural
que ajuda na tarefa de: 
◦ Separar responsabilidades
◦ Promover baixo acoplamento
◦ Promover alta coesão
© Carla A. Lima Reis e Rodrigo 
Quites Reis (LABES-UFPA) / 2010
11
0
16/03/2012
56
� Introdução
◦ Variação mais de arquitetura em camada conhecida: 
3 camadas
� Permite alterar as regras de negócio, o interface ou o
acesso aos dados independentemente. 
11
1
� É um padrão arquitetural que divide as 
aplicações em 3 camadas “independentes”.
� Permite que um mesmo aplicativo possa ser 
visualizado atravésde várias interfaces.
16/03/2012
57
� Camadas do MVC:
◦ Camada de Apresentação (View)
� Inclui os elementos de exibição no cliente: HTML, XML, 
Applets.
� É usada para receber a entradas de dados e apresentar o 
resultado.
◦ Camada de Lógica da Aplicação (Model)
� Modela os dados e o comportamento por trás do processo
de negócio.
� Se preocupa apenas com o armazenamento e geração dos 
dados.
◦ Camada de Controle
� Interpreta as ações do usuário e as mapeia para chamadas
do modelo.
� É responsável pelo fluxo da aplicação.
© Carla A. Lima Reis e Rodrigo 
Quites Reis (LABES-UFPA) / 2010
11
3
© Carla A. Lima Reis e Rodrigo 
Quites Reis (LABES-UFPA) / 2010
11
4
16/03/2012
58
� Sem o MVC
◦ Na primeira fase da evolução apenas eram
produzidas páginas em HTML estático para mostrar
informações estáticas.
◦ Na próxima fase evolutiva, foram usadas
tecnologias de geração dinâmica de páginas como
o CGI, Servlets e JSP.
© Carla A. Lima Reis e Rodrigo 
Quites Reis (LABES-UFPA) / 2010
11
5
� .NET
◦ Microsoft UIP
◦ Maverick.NET
� ActionScript
◦ ARP
◦ PureMVC
� Java
◦ JavaServer Faces
◦ Spring Framework
◦ Struts
� PHP
◦ Zend Framework
◦ Symfony Framework
© Carla A. Lima Reis e Rodrigo 
Quites Reis (LABES-UFPA) / 2010
11
6
16/03/2012
59
1) O que é projeto de arquitetura?
2) O que é Arquitetura de Software?
3) Identifique e explique os estilos 
arquiteturais apresentados.
11
7
4) Identifique os tipos de padrões de projeto e 
cite exemplos e explique-os.
5) Explique o modelo MVC.
11
8

Continue navegando