Escolar Documentos
Profissional Documentos
Cultura Documentos
1 - Arquitetura de Software
(Multicamadas)
(parte 1)
Desenvolvimento de Aplicações Multicamadas
2
Visão geral – Arquitetura de Software
A Arquitetura de
construções:
das ideias às realizações.
4
A Arquitetura de construções (Ex: Projeto da Catedral de Brasília)
em sinal de súplica.
5
O que é uma arquitetura de software?
◆“arquitetura é a estrutura do sistema, que compreende:
− componentes ou partes da implementação
− as propriedades visíveis externamente desses componentes,
e
− as relações entre eles.”
Bass, Len, Clements, Paul, Kazman, Rick, “Software Architecture in Practice” – 1998
6
“Arquitetar” é propor soluções (modelar) antes
de se contruir.
7
O papel do Arquiteto de Software
(definido no Processo Unificado)
8
O que faz um arquiteto de software?
◆ O arquiteto de software define tecnologias, infra-estrutura,
padrões e metodologias que serão utilizadas nos projetos de
software.
◆ O arquiteto estabelece as melhores soluções para resolver as
questões dos requisitos não funcionais de um sistema:
− Desempenho
− Segurança
− Escalabilidade
− Portabilidade
− Usabilidade
− Persistência, e muito mais...
9
Desejos, preocupações e proposições de
projeto
Direciona para
(propostas)
FONTE: Software Architecture in Practice (3rd Edition) [2012] -Len Bass, Paul Clements, Rick Kazman 10
O arquiteto de software e visões (modelos) do projeto
11
Desenvolvimento de Aplicações e cuidados
com a arquitetura de software
“Sistemas são frequentemente substituídos ou
redesenhados não porque suas funcionalidades são
deficientes – as substituições geralmente são
idênticas em termos de funcionalidades – mas
porque eles são difíceis de manter, portar, escalar,
ou porque são muito lentos, ou porque foram
comprometidos por eventos inseguros ...”
FONTE: Software Architecture in Practice (3rd Edition) [2012] -Len Bass, Paul Clements, Rick Kazman 12
Software para Aplicações Empresariais
(Corporativas)
O que é Software para Aplicações Empresariais
(Corporativas)?
◆ É um software desenvolvido para atender as necessidades de
processos de negócio e de fluxo de dados de uma empresa.
− Geralmente manipulam grandes bases de dados, necessitam
compartilhar dados com vários usuários ou integrá-los com
outros sistemas.
− São chamados também de Sistemas de Informação Empresarial, ou
simplesmente Aplicações Corporativas
14
O que é Software para Aplicações Empresariais
(Corporativas)?
◆ São exemplos (de domínios de sistemas):
− Controle de gestão: financeiro, recursos humanos, compras
− Processos Industriais: para produção industrial ou processos de
fabricação integrados aos sistemas de gestão
− Comercial: sistemas de vendas e suporte a clientes
− Sistemas bancários, de seguro, entre outros.
15
O que não é uma aplicação corporativa?
◆O software não é um sistema de informação
empresarial (Aplicação Corpotativa), quando atende
um problema específico de uso pessoal ou industrial,
por exemplo:
− Sistemas embarcadas (em carros, televisão digital, console
de vídeo, controles de um robô, para câmera digital, etc).
− Sistemas para telefonia e telecomunicações;
− Sistemas aplicativos para escritório (editor de texto, planilha,
etc).
16
Histórico
◆Podemos encontrar algumas formas de organizar a
evolução dos sistemas empresariais, mas em geral,
encontramos três grandes momentos ou “ondas” (com
alguns autores chamam):
− 1a. Onda: aplicações monolíticas (anos 1950 a 70)
− 2a. Onda: aplicações cliente/servidor (anos 1980 a 90)
− 3a. Onda: aplicações distribuídas (metade dos anos 1990)
− Observem que estamos convivendo com a evolução da terceira onda, onde há
computação em “nuvem”, Internet das coisas, computação ubíqua, convergência
entre plataformas e tecnologias (móvel, multimídia, TV Digital, etc). Não sabemos
ainda as consequências dessas mudanças.
17
1a. onda - aplicações monolíticas
(anos 1950 a 1970)
◆ Uso de “mainframes” (hardware era
muito caro) em salas fechadas (CPD)
◆ aplicações de software monolíticas (uma
camada), com programas e dados
firmemente entrelaçados.
− Cada desenvolvedor de aplicação
escolhia como estruturar e armazenar os
dados e usava freqüentemente técnicas
para minimizar o caro armazenamento
◆ Integração estreita entre
− Um dos problemas que surgiu foi “ano programa e dados
2000” ou “bug do milênio”). dificultava a evolução e
reuso de componentes.
18
2a. onda - aplicações cliente/servidor (anos 1980 a 90)
◆ Sistemas passam a usar software para gerenciamento de banco de dados.
◆ Separação de programa aplicativo dos dados armazenados em SGBD (duas
camadas).
◆ Adoção de interfaces gráficas (janelas) e acesso de informação em tempo
real em estações de trabalho (desktops) ao SGDB das empresas.
◆ Aumento no tamanho e complexidade de aplicações cliente (os clientes
“pesados”)
− Dificuldade em atualizar versões nas estações
19
Aplicações cliente/servidor – Duas camadas
◆ Camada Cliente
− Aplicação com lógica de negócio e
apresentação (janelas)
− Muito processamento
− Uso de meddleware para conexão ao
servidor
◆ Camada Servidora
− Armazenamento usando um SGBD
(relacional)
− Algumas regras de negócio
armazenadas no banco (em forma de
stored procedure e triggers) 20
3a. onda - aplicações distribuídas
(metade dos anos 1990 até hoje)
◆Processamento da aplicação é distribuído em várias
máquinas
◆Evolução do C/S
◆Modelos físicos:
− Cliente/Servidor
− Peer-to-peer (ponto-a-ponto)
− Híbrido (ex: Web, Email)
− Várias Camadas
21
Aplicação Distribuída x Multicamadas
A diferença é conceitual.
◆ Aplicação distribuída é um conceito genérico para denominar a
distribuição de algum tipo de processamento da aplicação entre
máquinas que estão na rede.
◆ Aplicação multicamadas conceitualmente é aquela aplicação
distribuída onde estão claramente identificadas pelo menos as três
principais camadas físicas e a comunicação ocorre com objetos
distribuídos por meio de troca de mensagens:
− Camada de Apresentação e Serviços (das interfaces com outros sistemas ou com o usuário)
23
Arquitetura típica em Três Camadas
O “cliente” é uma
aplicação com
uma
interface com
o usuário.
24
24
Arquitetura típica em Três Camadas
A camada de
“lógica de negócio”
é responsável pelo
código da
aplicação,
respondendo aos
clientes e
processamento
dados que estão
armazenados em
um banco de
dados, ou
acessando serviços
que estão em
25
outros sistemas.
25
Arquitetura típica em Três Camadas
A camada de
“banco de dados”
(ou de Serviços) é
responsável pelo
armazenamentos
dos dados ou pelo
acesso aos
serviços de dados
que estão em
outros sistemas.
26
26
Arquitetura Multicamadas (3 Camadas)
A distinção entre 3 níveis lógicos, sugere inúmeras
possibilidades para distribuir a aplicação ou partes do
cliente/servidor sobre diferentes máquinas (camadas físicas).
◆ Pró(s)
− Mais flexibilidade (crescimento, tolerância a falhas, etc)
− Maior independência dos dados por parte do cliente
◆ Contra(s)
− Muita complexidade para controlar/gerenciar
− Muitos tipos de implementação e padrões tecnológicos (Java RMI,
EJB, .Net, RPC, Corba, Web, XML, Ajax, etc) 27
Arquitetura em Duas Camadas
• Nessa arquitetura, a organização do software acontece em
duas camadas físicas:
máquinas cliente: contém os programas responsáveis pela
interface com o usuário ou parte da lógica de negócio;
máquina servidor: contém o banco de dados e os programas
que implementam o processamento do negócio e de dados.
Aplicação
Cliente
Arquitetura em 2 camadas
2 Camadas é uma arquitetura mais simples de construir, mas possui variantes de
organização das responsabilidades :
Cliente Magro Cliente Gordo
(Thin Cliente) (Fat Cliente)
Camada 1
(Cliente)
Camada 2
(Servidor)
Desvantagens:
todo o processamento é feito no servidor, que exigirá uma
configuração de máquina superestimada para suportar momentos
de sobrecarga.
difícil de manter (código de negócio oculto no banco, em forma de
31 stored procedures e triggers)
31
2 Camadas: Abordagem Cliente “gordo” (Fat Client):
Nesse caso, as camadas de interface e de aplicação são
unidas em uma única camada, que executa no cliente. A
camada restante continua sendo o banco de dados.
Desvantagens:
Maior parte do processamento é feito no cliente, portanto, a máquina
cliente deve ter um maior poder de computação.
difícil de manter (código “misturado”, com muitas responsabilidades)
difícil de escalar (em número de usuários e acessos) e de implantar
32 (distribuição da aplicação cliente em muitas máquinas)
32
Leitura Adicional
33
Exercícios
34
Questões de Concurso (1)
1 - ( Prova: FCC - 2010 - TRT - 22ª Região (PI) - Técnico Judiciário - Tecnologia da Informação)
Em relação à arquitetura de sistemas multicamadas, considere as assertivas abaixo.
Os itens I a IV referem-se,
respectivamente, aos
modelos de
a) 2, 2, 2 e 2 camadas.
b) 3, 3, 3 e 3 camadas.
c) 2, 2, 3 e 3 camadas.
d) 3, 3, 2 e 2 camadas.
e) 2, 3, 2 e 3 camadas.
35
Questões de Concurso (2)
2 - ( Prova: FCC - 2010 - TRT - 20ª REGIÃO (SE) - Técnico Judiciário - Tecnologia da
Informação)
A arquitetura multicamadas divide-se em três camadas lógicas. São elas:
a) Apresentação, Negócio e Acesso a Dados.
b) Apresentação, Natureza e Acesso a Dados.
c) Apresentação, Negócio e Alteração.
d) Manipulação, Natureza e Acesso a Dados.
e) Manipulação, Negócio e Acesso a Dados.
36
Questões de Concurso (3)
3- Prova: ESAF - 2006 - CGU - Analista de Finanças e Controle - Área - Tecnologia da Informação - Prova 3)
Com relação à arquitetura em camadas no desenvolvimento Orientado a Objetos
é correto afirmar que:
a) uma camada é diretamente dependente de todas as outras camadas existentes
na aplicação.
b) as camadas se comunicam da base para o topo.
c) na camada de apresentação a lógica de interface do usuário é o ponto mais
forte.
d) nenhuma camada pode ser desativada de qualquer outra camada, exceto da
camada imediatamente inferior a ela.
e) a camada de negócio é responsável pelo armazenamento e recuperação dos
dados.
37
Questões de Concurso (4)
4) Ano: 2016 Banca: FGV Órgão: SEE-PE Prova: FGV - 2016 - SEE-PE - Professor de
Desenvolvimento de Sistemas
Com relação às vantagens da arquitetura multicamadas, assinale V para a
afirmativa verdadeira e F para a falsa.
( ) Ajuda a abstrair à lógica do acesso a dados.
( ) Permite a reutilização de objetos por outras aplicações.
( ) Dificulta manutenções na base de dados.
39
A partir dessas informações e dos conceitos de arquitetura de aplicações para ambiente
Internet, arquitetura de três camadas e arquitetura cliente-servidor, julgue os itens
seguintes.
41