u01-Arquitetura de Software Multicamadas
-
Upload
claudio-martins -
Category
Documents
-
view
381 -
download
12
description
Transcript of u01-Arquitetura de Software Multicamadas
UNID 1 - Arquitetura de Software UNID 1 - Arquitetura de Software
UNAMA – Universidade da AmazôniaPRÓ-REITORIA DE PESQUISA, PÓS-GRADUAÇÃO E EXTENSÃOPÓS-GRADUAÇÃO LATO SENSUCurso de Especialização em Desenvolvimento de Sistemas Baseado em Software Livre
Desenvolvimento de Aplicações Multicamadas
Prof. Cláudio Martins [email protected]
Desenvolvimento de Aplicações MulticamadasProf. Cláudio Martins
2
AssuntosAssuntos
Visão geral – Arquitetura de Software
Arquitetura de uma camada
Arquitetura de duas camadas
Arquitetura multicamadas
Computação distribuída x multicamadas
Computação de aplicações corporativas
Desenvolvimento de Aplicações MulticamadasProf. Cláudio Martins
3
Visão geral – Arquitetura de SoftwareVisão geral – Arquitetura de Software
Esquema de uma queda d'água de Escher
http://pt.wikipedia.org/wiki/Maurits_Cornelis_Escher
Desenvolvimento de Aplicações MulticamadasProf. Cláudio Martins
4
O que é uma arquitetura de O que é uma arquitetura de software?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
Desenvolvimento de Aplicações MulticamadasProf. Cláudio Martins
5
““Arquitetar” é propor soluções (modelar) Arquitetar” é propor soluções (modelar) antes de se contruir.antes de se contruir.
Desenvolvimento de Aplicações MulticamadasProf. Cláudio Martins
6
O papel do Arquiteto de Software (definido O papel do Arquiteto de Software (definido no Processo Unificado)no Processo Unificado)
Desenvolvimento de Aplicações MulticamadasProf. Cláudio Martins
7
O que faz um arquiteto de software?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...
Desenvolvimento de Aplicações MulticamadasProf. Cláudio Martins
8
Desejos, preocupações e proposições de Desejos, preocupações e proposições de projetoprojeto
Direciona para (propostas)
Preocupações dos Interessados (stakeholders)
Atributos de Qualidades (requisitos não funcionais)
* Aumentar participação no mercado... - Modificabilidade, Usabilidade
* Manter a reputação e qualidade... - Desempenho, Usabilidade, Disponibidade
* Adicionar novas características sem problemas... - Desempenho,Disponibidade, Modificabilidade
* Facilitar a programação do software... - Modificabilidade
* Integrar com outros sistemas facilmente... - Interoperabilidade, Portabilidade, Modificabilidade
FONTE: Software Architecture in Practice (3rd Edition) [2012] -Len Bass, Paul Clements, Rick Kazman
Desenvolvimento de Aplicações MulticamadasProf. Cláudio Martins
9
O arquiteto de software e visões (modelos) O arquiteto de software e visões (modelos) do projetodo projeto
Os modelos do Processo Unificado– Cada modelo representa uma visão do projeto – Cada modelo é um ponto de vista ou perspectiva de uma etapa do ciclo de vida do software
Desenvolvimento de Aplicações MulticamadasProf. Cláudio Martins
10
Desenvolvimento de Aplicações e cuidados Desenvolvimento de Aplicações e cuidados com a arquitetura de software 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
Desenvolvimento de Aplicações MulticamadasProf. Cláudio Martins
11
Software para Aplicações Empresariais (Corporativas)
Desenvolvimento de Aplicações MulticamadasProf. Cláudio Martins
12
O que é O que é Software para Aplicações Software para Aplicações Empresariais (Corporativas)?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
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.
Desenvolvimento de Aplicações MulticamadasProf. Cláudio Martins
13
O que não é uma aplicação corporativa?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ção;
– Sistemas aplicativos para escritório (editor de texto, planilha, etc).
Desenvolvimento de Aplicações MulticamadasProf. Cláudio Martins
14
HistóricoHistó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 “nuvens”, Internet, computação pervasiva e ubíqua, convergência entre plataformas e tecnologias (móvel, multimídia, TV Digital, etc). Não sabemos ainda as consequencias dessas mudanças.
Desenvolvimento de Aplicações MulticamadasProf. Cláudio Martins
15
1a. onda - aplicações monolíticas (anos 1a. onda - aplicações monolíticas (anos 1950 a 70)1950 a 70)
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
– Um dos problemas que surgiu foi “ano 2000” ou “bug do milênio”).
Integração estreita entre programa e dados dificultava a evolução e reuso de componentes.
Desenvolvimento de Aplicações MulticamadasProf. Cláudio Martins
16
2a. onda - aplicações cliente/servidor (anos 2a. onda - aplicações cliente/servidor (anos 1980 a 90)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 - clientes “pesados”
– Dificuldade em atualizar versões nas estações
Apesar do compartilhamento e separação de dados dos programas, havia pequeno reuso de lógica empresarial encapsulada (componentes).
Desenvolvimento de Aplicações MulticamadasProf. Cláudio Martins
17
Aplicações cliente/servidor – Duas camadasAplicações cliente/servidor – Duas camadas
Servidor de Banco de Dados
AplicaçãoCliente
AplicaçãoCliente
AplicaçãoCliente
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)
Desenvolvimento de Aplicações MulticamadasProf. Cláudio Martins
18
3a. onda - aplicações distribuídas (metade 3a. onda - aplicações distribuídas (metade dos anos 1990 até hoje)dos anos 1990 até hoje)
Processamento da aplicação é distribuído com 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
Desenvolvimento de Aplicações MulticamadasProf. Cláudio Martins
19
Aplicação Distribuída x MulticamadasAplicaçã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:
– Camada de Apresentação
– Camada de Serviços (Lógica do Negócio)
– Camada de Acesso a Dados (Banco de Dados/Persistência)
Desenvolvimento de Aplicações MulticamadasProf. Cláudio Martins
20
Arquitetura Multicamadas (3 Camadas)Arquitetura Multicamadas (3 Camadas) Em uma aplicação multicamadas qualquer camada se pode ligar a
outra.
O modelo 3Camadas é similar ao modelo cliente/servidor com um servidor de chamadas remotas de processamento no meio (entre o Cliente e o Servidor)
– A lógica do negócio fica disponível na camada do meio
– A camada “do meio” fala com a base de dados
Pró(s)
– Mais flexiilidade (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)
Desenvolvimento de Aplicações MulticamadasProf. Cláudio Martins
21
Padrões de Projeto de Software Padrões de Projeto de Software em Aplicações Corporativasem Aplicações Corporativas
Desenvolvimento de Aplicações MulticamadasProf. Cláudio Martins
22
Padrões de Software em Aplicações Padrões de Software em Aplicações CorporativasCorporativas
Martin Fowler publicou o livro “Patterns of Enterprise Application Architecture” (2003) onde apresenta padrões para aplicações empresariais.
– Estes padrões descrevem soluções comprovadamente boas para problemas recorrentes no desenvolvimento de aplicações empresariais.
Veja o catálogo de padrões em http://www.martinfowler.com/eaaCatalog/
Desenvolvimento de Aplicações MulticamadasProf. Cláudio Martins
23
Padrão “Divisão em Camadas” (Layers)Padrão “Divisão em Camadas” (Layers)
A “divisão em camadas” não é um padrão é um estilo arquitetural.
Fowler identifica 3 camadas fundamentais em sistemas de aplicação empresarial:– Serviços (Apresentação)
– Modelo de Domínio (Lógica de domínio)
– Fonte de Dados
Desenvolvimento de Aplicações MulticamadasProf. Cláudio Martins
24
As 3 Camadas As 3 Camadas
Apresentação: fornecimento de serviços, visualização de informação (em Janelas ou em Páginas HTML), controle de interação do usuário (eventos do mouse e do teclado), pedidos “http”, invocações da linha de comando, etc.
Lógica de domínio: a lógica que é o principal ponto da aplicação (domínio de negócio).
Fonte de Dados: comunicação com a Base de Dados, sistemas de mensagens, gestores de transações e outros pacotes de apoio para acesso a dados.
Desenvolvimento de Aplicações MulticamadasProf. Cláudio Martins
25
Princípios da Divisão em CamadasPrincípios da Divisão em Camadas A “Divisão em Camadas” estimula a organização da
arquitetura do sistema em um conjunto de camadas coesas com fraco acoplamento entre elas.
– Cada camada possui um propósito bem definido.
– A camada superior conhece apenas a camada imediatamente inferior (que fornece seus serviços através de uma interface).
Cliente Camada N
Camada N-1
Camada 1
Chamada
Resposta
Desenvolvimento de Aplicações MulticamadasProf. Cláudio Martins
26
Formas de organizar as CamadasFormas de organizar as Camadas Existem múltiplos esquemas de divisão em camadas, como por
exemplo:
– as 5 camadas de Brown: Presentation, Controller/Mediator (pattern Application Controller), Domain, Data mapping (pattern Data Mapper) e Data Source.
– Padrão MVC: Model, View, Controller
Desenvolvimento de Aplicações MulticamadasProf. Cláudio Martins
27
As vantagens da divisão em camadasAs vantagens da divisão em camadas Coesão: possibilidade de compreender uma única
camada como um todo coerente sem se saber muito sobre as outras camadas
Flexibilidade por mudanças: Possibilidade de substituição de camadas por implementações alternativas dos mesmos serviços
Baixo acoplamento: minimização de dependências entre camadas
Reuso: promovem a padronização e reuso de componentes
– Com uma camada construída, é possível usá-la para muitos serviços de mais alto nível
Desenvolvimento de Aplicações MulticamadasProf. Cláudio Martins
28
Desvantagens da divisão em camadasDesvantagens da divisão em camadas Dificuldade de encapsulamento, por exemplo, as
alterações em cascata.
– Exemplo: adicionando um campo na Base de Dados que impacta na visualização (interface), é necessário atualizar todas as camadas entre a Base de Dados e a interface.
Excesso de camadas pode provocar perda do desempenho.
– Em cada camada os dados necessitam de ser transformados de uma representação para outra. No entanto, o encapsulamento de um função muitas vezes trás ganhos de eficiência que mais do que compensam a potencial perda de performance. Por exemplo, uma camada que controla as transações pode ser otimizada fazendo com que toda a aplicação fique mais rápida.
A principal dificuldade da divisão em camadas é a decisão de que camadas usar e quais as suas responsabilidades.
Desenvolvimento de Aplicações MulticamadasProf. Cláudio Martins
29
Atividades/Exercícios
Desenvolvimento de Aplicações MulticamadasProf. Cláudio Martins
30
Atividade PráticaAtividade Prática Projetar um sistema de venda de ingressos para um
empresa de cinemas.
Definição geral:
– Clientes podem utilizar um website ou quiosques para comprar os ingressos e ver quais filmes estão em cartaz. O pagamento no website é por cartão de crédito. No quiosque pode ser efetuado com crédito ou débito.O sistema emite o bilhete com um código de barras e o bilhete tem um número único.O sistema controla o número de bilhetes e as vagas disponíveis para cada sessão de exibição de um filme em um determinado cinema.Considere que a empresa possui vários locais e salas disponíveis para exibir os filmes.
Desenvolvimento de Aplicações MulticamadasProf. Cláudio Martins
31
Atividade (cont.)Atividade (cont.)
1) Identifique os envolvidos no sistema e acrescente novas regras e requisitos à definição inicial.
2) Modele o domínio dos dados (utilize um DER ou modelo de classes)
3) Definir arquitetura(s)– Escolha os tipos arquiteturais envolvidos na solução.
Justifique as escolhas.
– Desenhe os subsistemas (em blocos) e módulos.
– Identifique os relacionamentos entre as partes envolvidas.
Desenvolvimento de Aplicações MulticamadasProf. Cláudio Martins
32
Questões de Concurso (1)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 dea) 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.
Desenvolvimento de Aplicações MulticamadasProf. Cláudio Martins
33
Questões de Concurso (2,3)Questões de Concurso (2,3)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.
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.
Desenvolvimento de Aplicações MulticamadasProf. Cláudio Martins
34
Questões de Concurso (4, 5)Questões de Concurso (4, 5)4) Prova: FUNCAB - 2010 - SEJUS-RO - Analista de Sistemas
Segundo C. J . Date, um sistema cliente/servidor pode ser considerado um caso particular de um sistema distribuído. Para isso ele deverá atender às seguintes características, EXCETO: a) alguns sites serem clientes e outros serem sites servidores. b) a operação ser uniforme, isto é, fornecer uma completa independência de local. c) todos os dados residiremnos sites servidores. d) as aplicações realizarem acesso remoto transparente ao servidor. e) todas as aplicações serem executadas nos sites clientes.
5) Prova: CESPE - 2010 - SAD-PE - Analista de Controle Interno – Tecnologia da Informação:A figura a seguir apresenta uma proposta de organização da arquitetura de aplicações Internet-web em várias unidades, denominadas tiers ou camadas, destacando-se, no modelo indicado, a presença de cinco unidades: Client, Presentation, Business Logic, Integration e Data. Destaca-se, ainda, uma sequência de comunicações estabelecidas entre essas unidades, numerada de 1 a 7.
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.
Desenvolvimento de Aplicações MulticamadasProf. Cláudio Martins
35
I - A comunicação indicada por 7 é, usualmente, realizada em resposta a um pedido http. II - Em um sistema de arquitetura em três camadas — apresentação, negócio e dados —, podem residir, em uma mesma camada, as unidades integração e dados. III - Do ponto de vista da arquitetura cliente-servidor, existem, na figura apresentada, vários clientes e vários servidores. IV - A troca de informações de modo assíncrono é um mecanismo de uso mais frequente nas comunicações indicadas por 6 e 1 que nas comunicações indicadas por 2 e 5. V - As comunicações indicadas por 3 e 4 realizam-se, exclusivamente, por meio da linguagem SQL.
Estão certos apenas os itens: a) I, II e III. b) I, II e V. c) I, III e IV. d) II, IV e V. e) III, IV e V
Desenvolvimento de Aplicações MulticamadasProf. Cláudio Martins
36
Questões de Concurso (6)Questões de Concurso (6)6) Prova: CESPE - 2009 - TCE-TO - Analista de Controle Externo - Informática - Processamento de Dados
Assinale a opção correta, acerca da tecnologia cliente- servidor. a) Em uma arquitetura do tipo two-tier, as aplicações são normalmente divididas em duas camadas de serviços: de usuário; e de negócio. b) A lógica da aplicação pode residir na interface do usuário ou no servidor produzindo dois modelos, entre eles, o FatClient, em que a interface do usuário e os dados estão no cliente e a lógica do negócio está no servidor. c) No modelo ThinClient, a interface do usuário e a lógica do negócio residem no cliente e a lógica do banco de dados reside no servidor. d) No ambiente Windows, as camadas do modelo three-tier são conhecidas como user services, business services e data services. e) Na arquitetura de três camadas, os dados recebem uma camada separada que pode ser gerenciada por um middleware como o IIS (Internet information server).
Desenvolvimento de Aplicações MulticamadasProf. Cláudio Martins
37
Questões de Concurso (7)Questões de Concurso (7)7) Prova: CESGRANRIO - 2011 - TRANSPETRO - Analista de Sistemas JúniorEm aplicações distribuídas, dois modelos usados são o cliente/servidor (cliente-server, C/S) e o ponto a ponto (peer-to-peer, P2P). Nesse contexto, analise as afirmações abaixo.
I - Assim como no modelo C/S, no modelo P2P, qualquer nó pode iniciar uma conexão com qualquer outro nó. II - Diferente do modelo C/S, o modelo P2P se caracteriza por apresentar a mesma largura de banda nas conexões entre dois nós quaisquer da rede. III - Processamento relativo à sincronização e à comunicação entre nós pode sobrecarregar tanto uma rede C/S quanto uma rede P2P. IV - No modelo P2P, uma rede pode comportar nós chamados superpontos (super-peers), que agem de maneira similar aos nós servidores em uma rede C/S.
São corretas APENAS as afirmativas a) I e II b) I e III c) II e III d) II e IV e) III e IV
Desenvolvimento de Aplicações MulticamadasProf. Cláudio Martins
38
Atividade para avaliação (2 pts) Atividade para avaliação (2 pts)
Leia o capítulo 1 do livro do Martin Fowler, chamado “Criando Camadas” (está disponível para download). Desenvolva as seguintes atividades:– Elabore um resumo de 2 páginas.
– Responda as seguintes questões:a) Explique as diferenças entre os termos layer e tier.
b) Explique o que é o modelo do “cliente gordo” e do “cliente rico”, usado em solução para a aplicações na web.
c) Quais as soluções aplicadas ao modelo “cliente-servidor” (dos anos 1990) para tratar a lógica de domínio dos sistemas corporativos?
Desenvolvimento de Aplicações MulticamadasProf. Cláudio Martins
39
ReferênciasReferências http://pt.wikipedia.org/wiki/Arquitetura_de_software
Padrões de Arquitetura de Aplicações Corporativas. Martin Fowler – Ed. Bookman. 2006