Académique Documents
Professionnel Documents
Culture Documents
• Modelos Arquiteturais
• Estilos Arquiteturais
Conceito de Arquitetura de Software
Componentes
• é uma unidade modular com interfaces
requeridas e fornecidas bem definidas que é
substituível dentro do seu ambiente.
Componentes
• pode ser uma simples operação ou complexo
como um sistema inteiro. Pode ser visto pelo
usuário (humano ou outro software) somente
através da sua interface pública.
Principais elementos arquiteturais
Conectores
• tipo de componente responsável pela interação
entre componentes.
• em sistemas desktop convencionais os
conectores são geralmente representados por
simples chamadas de procedimento (procedure
call) ou acesso a dados compartilhados.
• em sistemas complexos eles passam a ter
identidades, papéis e artefatos de implementação
único.
Modelos arquiteturais
Arquitetura Cliente/Servidor
Vantagens:
▫ Camada de apresentação no Cliente utiliza
processamento local (aproveita PCs da empresa).
▫ Oferecer sistemas com interfaces gráficas
amigáveis
▫ Integrar o desktop e os dados corporativos.
Evolução das arquiteturas
Arquitetura Cliente/Servidor
Desvantagens:
• Escalabilidade limitada
• Enormes problemas de manutenção (mudanças
na lógica de aplicação forçava instalações)
• Cada cliente uma conexão com o SGBD
Evolução das arquiteturas
Evolução das arquiteturas
Arquitetura 3 Camadas
• A arquitetura cliente/servidor em 2 camadas
sofria de vários problemas:
– Falta de escalabilidade (conexões a bancos
de dados)
– Enormes problemas de manutenção
(mudanças na lógica de aplicação forçava
instalações)
• Dificuldade de acessar fontes heterogêneas
Evolução das arquiteturas
Arquitetura 3 Camadas
Vantagens:
• Perda de performance é compensada com
ganho de flexibilidade.
• Aumento da escalabilidade e confiabilidade do
sistema.
• Problemas de manutenção foram reduzidos,
pois mudanças nas camadas de aplicação e de
dados não necessitam de novas instalacões no
desktop.
Evolução das arquiteturas
Arquitetura 3 Camadas
Desvantagens:
• Integração via Internet
– Problema que a maioria não foi projetada
para internet
• Integração entre sistemas 3-
3-tiers
– falta de padronização
Evolução das arquiteturas
Evolução das arquiteturas
Evolução das arquiteturas
Arquitetura n-camadas
• A arquitetura em 3 camadas original sofre de
problemas:
– A instalação inicial dos programas no desktop
é cara.
– O problema de manutenção ainda persiste
quando há mudanças na camada de
apresentação.
– Não se pode instalar software facilmente num
desktop que não está sob seu controle
administrativo
Evolução das arquiteturas
Arquitetura n-camadas
• Uso do Browser como Cliente Universal/Thin
Client
• A camada de aplicação se quebra em duas: Web
e Aplicação
• Evita
Evita--se instalar qualquer software no desktop e
portanto, problemas de manutenção.
• Pode
Pode--se chamar de 3 camadas porque às vezes
as camadas Web e Aplicação freqüentemente
rodam na mesma máquina (pequenos volumes)..
Evolução das arquiteturas
Arquitetura n-camadas
Desvantagens:
• Complexidade
• Fazer aplicações distribuídas multicamadas é
difícil. Tem que:
– Implementar tolerância a falhas
– Implementar gerência de transações
distribuídas
– Implementar balanceamento de carga
– Implementar resource pooling
– Muito middleware envolvido
Evolução das arquiteturas
Arquitetura n-camadas
Desvantagens:
• Informação redundante
• Dificuldade e o custo de desenvolvimento e
manutenção.
• Cresce exponencialmente com o número de
camadas
Evolução das arquiteturas
• Peer
Peer--to
to--Peer
Estilos arquiteturais
• Estilos em Camada
– a arquitetura é separada em camadas
ordenadas, onde um programa de uma camada
pode solicitar serviços de uma camada inferior.
– Virtual Machines – várias camadas
– Client
Client--Server - duas camadas com conexões
em rede
Estilos arquiteturais
• Estilos em Camada - Virtual Machine
Estilos arquiteturais
• Estilos em Camada – Client
Client--Server
Estilos arquiteturais
• Estilos com Memória Compartilhada
– caracterizado pela presença de múltiplos
componentes que acessam o mesmo
repositório de dados e se comunicam através
deste repositório.
–- programas independentes acessam e se
comunicam exclusivamente através de um
repositório global, conhecido como
blackboard..
blackboard
Estilos arquiteturais
• Estilos com Memória Compartilhada
Exemplo: conjunto de ferramentas CASE integrada
Estilos arquiteturais
• Estilos com Memória Compartilhada
Estilos arquiteturais
• Estilos Baseados em Evento
– caracterizados por componentes
independentes que se comunicam somente
através de eventos transmitidos por um
barramento (conector).
– altamente indicado para sistemas com
componentes concorrentes altamente
desacoplados onde, em um determinado
momento, um componente pode estar ou
criando ou consumindo informação.
Estilos arquiteturais
• Estilos Baseados em Evento
– Nesta arquitetura, processos demonstram o
interesse por um evento ou conjunto de
eventos (processo se subscreve) e esperam
pela notificação de qualquer um desses
eventos, gerados por um processo notificador.
– O produtor publica uma informação em um
gerenciador de eventos (middleware) e os
consumidores se subscresvem para receber
as informações deste gerenciador. Eventos e
notificações.
Estilos arquiteturais
• Estilos Baseados em Evento
Estilos arquiteturais
• Peer-to
Peer- to--Peer (P2P)
– consiste em uma rede de peers autônomos
fracamente acoplados.
– cada peer atua como um cliente e como um
servidor.
– peers se comunicam utilizando protocolo de
rede (ex.: napster, gnutella, emule, PPLive)
– descentraliza tanto a informação quanto o
controle, fazendo com que a descoberta de
recursos seja um aspecto importante.
Estilos arquiteturais
• Peer-to
Peer- to--Peer (P2P)
– na descoberta de recursos em sistemas P2P
puro:
• a solicitação é lançada na rede como um
todo
• a requisição se propaga até que a
informação seja descoberta
• se a informação é encontrada o peer
obtém o endereço direto do outro peer e
contacta diretamente.
Estilos arquiteturais
• Peer-to
Peer- to--Peer (P2P)
– na descoberta de recursos em sistemas P2P híbrido:
• processo é otimizado por a presença de peers
especiais, especializados na localização de outros
peers ou disponibilização de diretórios que localizam
as informações. Ex.: napster (utiliza um servidor
central para indexação das músicas e localização de
outros peers).
– estilo popular nas aplicações de compartilhamento de
arquivos, utilizado também B2B commerce, chat, redes
de sensores.
Estilos arquiteturais
• Peer--to
Peer to--Peer (P2P)
Arquiteturas de Sistemas
• Arquiteturas Centralizadas
– Cliente
Cliente--Servidor: terminais bancários
• Arquiteturas Descentralizada
– Peer
Peer--to
to--Peer (P2P): E-
E-Chords
• Arquiteturas Híbridas
– Peer
Peer--to
to--Peer (P2P): BitTorrent, PPLive
Arquiteturas Centralizadas
• Modelo Cliente-
Cliente-Servidor
– processos são divididos em dois grupos
• Modelo Cliente-
Cliente-Servidor: questões, questões!!
• Clientes e Servidores multithreads?
• Comunicação???
• Qual o tipo de aplicação?
• Sem conexão, não confiável (UDP)?
• Com conexão, confiável (TCP)?
Arquiteturas Centralizadas