Você está na página 1de 39

UNAMA Universidade da Amaznia PR-REITORIA DE PESQUISA, PS-GRADUAO E EXTENSO PS-GRADUAO LATO SENSU Curso de Especializao em Desenvolvimento de Sistemas Baseado

o em Software Livre

UNID 1 - Arquitetura de Software


Desenvolvimento de Aplicaes Multicamadas
Prof. Cludio Martins claudiomartins2000@gmail.com

Assuntos
Viso geral Arquitetura de Software Arquitetura de uma camada Arquitetura de duas camadas Arquitetura multicamadas Computao distribuda x multicamadas Computao de aplicaes corporativas

Desenvolvimento de Aplicaes Multicamadas Prof. Cludio Martins

Viso geral Arquitetura de Software

Esquema de uma queda d'gua de Escher http://pt.wikipedia.org/wiki/Maurits_Cornelis_Escher


Desenvolvimento de Aplicaes Multicamadas Prof. Cludio Martins

O que uma arquitetura de software?


arquitetura a estrutura do sistema, que

compreende:
componentes ou partes da implementao as propriedades visveis externamente desses

componentes, e as relaes entre eles.

Bass, Len, Clements, Paul, Kazman, Rick, Software Architecture in Practice 1998
Desenvolvimento de Aplicaes Multicamadas Prof. Cludio Martins

Arquitetar propor solues (modelar) antes de se contruir.

Desenvolvimento de Aplicaes Multicamadas Prof. Cludio Martins

O papel do Arquiteto de Software (definido no Processo Unificado)

Desenvolvimento de Aplicaes Multicamadas Prof. Cludio Martins

O que faz um arquiteto de software?


O arquiteto de software define tecnologias, infra-

estrutura, padres e metodologias que sero utilizadas nos projetos de software.


O arquiteto estabelece as melhores solues para

resolver as questes dos requisitos no funcionais de um sistema:


Desempenho Segurana Escalabilidade Portabilidade Usabilidade Persistncia, e muito mais...
Desenvolvimento de Aplicaes Multicamadas Prof. Cludio Martins

Desejos, preocupaes e proposies de projeto


Direciona para (propostas)

Preocupaes dos Interessados (stakeholders)


* Aumentar participao no mercado... * Manter a reputao e qualidade...
* Adicionar novas caractersticas sem problemas...

Atributos de Qualidades (requisitos no funcionais)


- Modificabilidade, Usabilidade
- Desempenho, Usabilidade, Disponibidade

- Desempenho,Disponibidade, Modificabilidade

* Facilitar a programao do software...


* Integrar com outros sistemas facilmente...

- Modificabilidade
- Interoperabilidade, Portabilidade, Modificabilidade

FONTE: Software Architecture in Practice (3rd Edition) [2012] -Len Bass, Paul Clements, Rick Kazman
Desenvolvimento de Aplicaes Multicamadas Prof. Cludio Martins

O arquiteto de software e vises (modelos) do projeto

Os modelos do Processo Unificado


Cada modelo representa uma viso do projeto Cada modelo um ponto de vista ou perspectiva de uma etapa do ciclo de vida do software

Desenvolvimento de Aplicaes Multicamadas Prof. Cludio Martins

Desenvolvimento de Aplicaes e cuidados com a arquitetura de software Sistemas so frequentemente substitudos ou redesenhados no porque suas funcionalidades so deficientes as substituies geralmente so idnticas em termos de funcionalidades mas porque eles so difceis de manter, portar, escalar, ou porque so 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 Aplicaes Multicamadas Prof. Cludio Martins

10

Software para Aplicaes Empresariais (Corporativas)

Desenvolvimento de Aplicaes Multicamadas Prof. Cludio Martins

11

um software desenvolvido para atender as

O que Software para Aplicaes Empresariais (Corporativas)?

necessidades de processos de negcio e de fluxo de dados de uma empresa.


Geralmente manipulam grandes bases de dados,

necessitam compartilhar dados com vrios usurios ou integr-los com outros sistemas.
Empresarial, ou simplesmente Aplicaes Corporativas

So chamados tambm de Sistemas de Informao

So exemplos (de domnios de sistemas):


Controle de gesto: financeiro, recursos humanos, compras Processos Industriais: para produo industrial ou processos de

fabricao integrados aos sistemas de gesto


Comercial: sistemas de vendas e suporte a clientes Sistemas bancrios, de seguro, entre outros.
Desenvolvimento de Aplicaes Multicamadas Prof. Cludio Martins

12

O que no uma aplicao corporativa?


O software no um sistema de informao

empresarial (Aplicao Corpotativa), quando atende um problema especfico de uso pessoal ou industrial, por exemplo:
Sistemas embarcadas (em carros, televiso digital,

console de vdeo, controles de um rob, para cmera digital, etc).

Sistemas para telefonia e telecomunicao; Sistemas aplicativos para escritrio (editor de texto,

planilha, etc).

Desenvolvimento de Aplicaes Multicamadas Prof. Cludio Martins

13

Histrico
Podemos encontrar algumas formas de organizar

a evoluo dos sistemas empresariais, mas em geral, encontramos trs grandes momentos ou ondas (com alguns autores chamam):
1a. Onda: aplicaes monolticas (anos 1950 a 70) 2a. Onda: aplicaes cliente/servidor (anos 1980 a 90) 3a. Onda: aplicaes distribudas (metade dos anos

1990)

Observem que estamos convivendo com a evoluo da

terceira onda, onde h computao em nuvens, Internet, computao pervasiva e ubqua, convergncia entre plataformas e tecnologias (mvel, multimdia, TV Digital, etc). No sabemos ainda as consequencias dessas mudanas.
Desenvolvimento de Aplicaes Multicamadas Prof. Cludio Martins

14

Uso de mainframes (hardware

1a. onda - aplicaes monolticas (anos 1950 a 70)

era muito caro) em salas fechadas (CPD)

aplicaes de software

monolticas (uma camada), com programas e dados firmemente entrelaados.


Cada desenvolvedor de

aplicao escolhia como estruturar e armazenar os dados e usava freqentemente tcnicas para minimizar o caro armazenamento
Um dos problemas que surgiu foi

Integrao estreita

ano 2000 ou bug do milnio).


Desenvolvimento de Aplicaes Multicamadas Prof. Cludio Martins

entre programa e dados dificultava a evoluo e reuso de componentes.


15

2a. onda - aplicaes cliente/servidor (anos 1980 a 90)


Sistemas passam a usar software para gerenciamento de

banco de dados.

Separao de programa aplicativo dos dados armazenados

em SGBD (duas camadas).


Adoo de interfaces grficas (janelas) e acesso de

informao em tempo real em estaes de trabalho (desktops) ao SGDB das empresas. clientes pesados

Aumento no tamanho e complexidade de aplicaes cliente Dificuldade em atualizar verses nas estaes

Apesar do compartilhamento e separao de dados dos

programas, havia pequeno reuso de lgica empresarial encapsulada (componentes).


Desenvolvimento de Aplicaes Multicamadas Prof. Cludio Martins

16

Aplicaes cliente/servidor Duas camadas


Camada Cliente
Aplicao com lgica de
Servidor de Banco de Dados

negcio e apresentao (janelas)

Muito processamento Uso de meddleware para

conexo ao servidor

Camada Servidora
SGBD (relacional)

Aplicao Cliente

Aplicao Cliente

Aplicao Cliente

Armazenamento usando um Algumas regras de negcio

armazenadas no banco (em forma de stored procedure e triggers)


Desenvolvimento de Aplicaes Multicamadas Prof. Cludio Martins

17

Processamento da

3a. onda - aplicaes distribudas (metade dos anos 1990 at hoje)


aplicao distribudo com vrias mquinas

Evoluo do C/S Modelos fsicos:


Cliente/Servidor Peer-to-peer (ponto-a-

ponto) Email)

Hbrido (ex: Web, Vrias Camadas


Desenvolvimento de Aplicaes Multicamadas Prof. Cludio Martins

18

Aplicao Distribuda x Multicamadas


A diferena conceitual. Aplicao distribuda um conceito genrico para

denominar a distribuio de algum tipo de processamento da aplicao entre mquinas que esto na rede. aplicao distribuda onde esto claramente identificadas pelo menos as trs principais camadas fsicas e a comunicao ocorre com objetos distribudos:
Camada de Apresentao Camada de Servios (Lgica do Negcio) Camada de Acesso a Dados (Banco de Dados/Persistncia)

Aplicao multicamadas conceitualmente aquela

Desenvolvimento de Aplicaes Multicamadas Prof. Cludio Martins

19

Arquitetura Multicamadas (3 Camadas)


Em uma aplicao 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 lgica do negcio fica disponvel na camada do meio A camada do meio fala com a base de dados

Pr(s)
Mais flexiilidade (crescimento, tolerncia a falhas, etc) Maior independncia dos dados por parte do cliente

Contra(s)
Muita complexidade para controlar/gerenciar Muitos tipos de implementao e padres tecnolgicos (Java RMI,

EJB, .Net, RPC, Corba, Web, XML, Ajax, etc)


Desenvolvimento de Aplicaes Multicamadas Prof. Cludio Martins

20

Padres de Projeto de Software em Aplicaes Corporativas

Desenvolvimento de Aplicaes Multicamadas Prof. Cludio Martins

21

Martin Fowler publicou o livro Patterns of Enterprise Application

Padres de Software em Aplicaes Corporativas

Architecture (2003) onde apresenta padres para aplicaes empresariais.


Estes padres descrevem solues comprovadamente boas

para problemas recorrentes no desenvolvimento de aplicaes empresariais.

Veja o catlogo de padres em http://www.martinfowler.com/eaaCatalog/


Desenvolvimento de Aplicaes Multicamadas Prof. Cludio Martins

22

Padro Diviso em Camadas (Layers)


A diviso em camadas no um padro um

estilo arquitetural.
Fowler identifica 3 camadas fundamentais em

sistemas de aplicao empresarial:


Servios (Apresentao) Modelo de Domnio

(Lgica de domnio)
Fonte de Dados

Desenvolvimento de Aplicaes Multicamadas Prof. Cludio Martins

23

As 3 Camadas
Apresentao: fornecimento de servios,

visualizao de informao (em Janelas ou em Pginas HTML), controle de interao do usurio (eventos do mouse e do teclado), pedidos http, invocaes da linha de comando, etc.
Lgica de domnio: a lgica que o principal

ponto da aplicao (domnio de negcio).


Fonte de Dados: comunicao com a Base de

Dados, sistemas de mensagens, gestores de transaes e outros pacotes de apoio para acesso a dados.
Desenvolvimento de Aplicaes Multicamadas Prof. Cludio Martins

24

Princpios da Diviso em Camadas


A Diviso em Camadas estimula a organizao da

arquitetura do sistema em um conjunto de camadas coesas com fraco acoplamento entre elas.
Cada camada possui um propsito bem definido. A camada superior conhece apenas a camada imediatamente

inferior (que fornece seus servios atravs de uma interface).


Cliente Camada N

Chamada Resposta

Camada N-1

Camada 1
Desenvolvimento de Aplicaes Multicamadas Prof. Cludio Martins

25

Formas de organizar as Camadas


Existem mltiplos esquemas de diviso 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.

Padro MVC: Model, View, Controller

Desenvolvimento de Aplicaes Multicamadas Prof. Cludio Martins

26

As vantagens da diviso em camadas


Coeso: possibilidade de compreender uma nica

camada como um todo coerente sem se saber muito sobre as outras camadas substituio de camadas por implementaes alternativas dos mesmos servios entre camadas componentes

Flexibilidade por mudanas: Possibilidade de

Baixo acoplamento: minimizao de dependncias Reuso: promovem a padronizao e reuso de


Com uma camada construda, possvel us-la para

muitos servios de mais alto nvel


Desenvolvimento de Aplicaes Multicamadas Prof. Cludio Martins

27

Desvantagens da diviso em camadas


Dificuldade de encapsulamento, por exemplo, as

alteraes em cascata.
Exemplo: adicionando um campo na Base de Dados que impacta

na visualizao (interface), necessrio 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 representao para outra. No entanto, o encapsulamento de um funo muitas vezes trs ganhos de eficincia que mais do que compensam a potencial perda de performance. Por exemplo, uma camada que controla as transaes pode ser otimizada fazendo com que toda a aplicao fique mais rpida.

A principal dificuldade da diviso em camadas a deciso

de que camadas usar e quais as suas responsabilidades.


Desenvolvimento de Aplicaes Multicamadas Prof. Cludio Martins

28

Atividades/Exerccios

Desenvolvimento de Aplicaes Multicamadas Prof. Cludio Martins

29

Atividade Prtica
Projetar um sistema de venda de ingressos para um

empresa de cinemas.
Definio geral:
Clientes podem utilizar um website ou quiosques para

comprar os ingressos e ver quais filmes esto em cartaz. O pagamento no website por carto de crdito. No quiosque pode ser efetuado com crdito ou dbito. O sistema emite o bilhete com um cdigo de barras e o bilhete tem um nmero nico. O sistema controla o nmero de bilhetes e as vagas disponveis para cada sesso de exibio de um filme em um determinado cinema. Considere que a empresa possui vrios locais e salas disponveis para exibir os filmes.
Desenvolvimento de Aplicaes Multicamadas Prof. Cludio Martins

30

Atividade (cont.)
1) Identifique os envolvidos no sistema e acrescente novas regras e requisitos definio inicial. 2) Modele o domnio dos dados (utilize um DER ou modelo de classes) 3) Definir arquitetura(s)
Escolha os tipos arquiteturais envolvidos na soluo.

Justifique as escolhas.

Desenhe os subsistemas (em blocos) e mdulos. Identifique os relacionamentos entre as partes

envolvidas.

Desenvolvimento de Aplicaes Multicamadas Prof. Cludio Martins

31

Questes de Concurso (1)


1 - ( Prova: FCC - 2010 - TRT - 22 Regio (PI) - Tcnico Judicirio - Tecnologia da Informao) Em relao arquitetura de sistemas multicamadas, considere as assertivas abaixo.

Os itens I a IV referemse, 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.

Desenvolvimento de Aplicaes Multicamadas Prof. Cludio Martins

32

Questes de Concurso (2,3)


2 - ( Prova: FCC - 2010 - TRT - 20 REGIO (SE) - Tcnico Judicirio - Tecnologia da Informao)
A arquitetura multicamadas divide-se em trs camadas lgicas. So elas: a) Apresentao, Negcio e Acesso a Dados. b) Apresentao, Natureza e Acesso a Dados. c) Apresentao, Negcio e Alterao. d) Manipulao, Natureza e Acesso a Dados. e) Manipulao, Negcio e Acesso a Dados.

33)

Prova: ESAF - 2006 - CGU - Analista de Finanas e Controle - rea - Tecnologia da Informao - Prova

Com relao arquitetura em camadas no desenvolvimento Orientado a Objetos correto afirmar que: a) uma camada diretamente dependente de todas as outras camadas existentes na aplicao. b) as camadas se comunicam da base para o topo. c) na camada de apresentao a lgica de interface do usurio 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 negcio responsvel pelo armazenamento e recuperao dos
dados.
Desenvolvimento de Aplicaes Multicamadas Prof. Cludio Martins

33

Questes 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 distribudo. Para isso ele dever atender s seguintes caractersticas, EXCETO: a) alguns sites serem clientes e outros serem sites servidores. b) a operao ser uniforme, isto , fornecer uma completa independncia de local. c) todos os dados residiremnos sites servidores. d) as aplicaes realizarem acesso remoto transparente ao servidor. e) todas as aplicaes serem executadas nos sites clientes. 5) Prova: CESPE - 2010 - SAD-PE - Analista de Controle Interno Tecnologia da Informao: A figura a seguir apresenta uma proposta de organizao da arquitetura de aplicaes Internet-web em vrias unidades, denominadas tiers ou camadas, destacando-se, no modelo indicado, a presena de cinco unidades: Client, Presentation, Business Logic, Integration e Data. Destaca-se, ainda, uma sequncia de comunicaes estabelecidas entre essas unidades, numerada de 1 a 7. A partir dessas informaes e dos conceitos de arquitetura de aplicaes para ambiente Internet, arquitetura de trs camadas e arquitetura cliente-servidor, julgue os itens seguintes.
Desenvolvimento de Aplicaes Multicamadas Prof. Cludio Martins

34

I - A comunicao indicada por 7 , usualmente, realizada em resposta a um pedido http. II - Em um sistema de arquitetura em trs camadas apresentao, negcio e dados , podem residir, em uma mesma camada, as unidades integrao e dados. III - Do ponto de vista da arquitetura cliente-servidor, existem, na figura apresentada, vrios clientes e vrios servidores. IV - A troca de informaes de modo assncrono um mecanismo de uso mais frequente nas comunicaes indicadas por 6 e 1 que nas comunicaes indicadas por 2 e 5. V - As comunicaes indicadas por 3 e 4 realizam-se, exclusivamente, por meio da linguagem SQL.

Esto 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


35

Desenvolvimento de Aplicaes Multicamadas Prof. Cludio Martins

Questes de Concurso (6)


6) Prova: CESPE - 2009 - TCE-TO - Analista de Controle Externo - Informtica Processamento de Dados Assinale a opo correta, acerca da tecnologia cliente- servidor. a) Em uma arquitetura do tipo two-tier, as aplicaes so normalmente divididas em duas camadas de servios: de usurio; e de negcio. b) A lgica da aplicao pode residir na interface do usurio ou no servidor produzindo dois modelos, entre eles, o FatClient, em que a interface do usurio e os dados esto no cliente e a lgica do negcio est no servidor. c) No modelo ThinClient, a interface do usurio e a lgica do negcio residem no cliente e a lgica do banco de dados reside no servidor. d) No ambiente Windows, as camadas do modelo three-tier so conhecidas como user services, business services e data services. e) Na arquitetura de trs camadas, os dados recebem uma camada separada que pode ser gerenciada por um middleware como o IIS (Internet information server).

Desenvolvimento de Aplicaes Multicamadas Prof. Cludio Martins

36

Questes de Concurso (7)


7) Prova: CESGRANRIO - 2011 - TRANSPETRO - Analista de Sistemas Jnior Em aplicaes distribudas, dois modelos usados so o cliente/servidor (cliente-server, C/S) e o ponto a ponto (peer-to-peer, P2P). Nesse contexto, analise as afirmaes abaixo. I - Assim como no modelo C/S, no modelo P2P, qualquer n pode iniciar uma conexo com qualquer outro n. II - Diferente do modelo C/S, o modelo P2P se caracteriza por apresentar a mesma largura de banda nas conexes entre dois ns quaisquer da rede. III - Processamento relativo sincronizao e comunicao entre ns pode sobrecarregar tanto uma rede C/S quanto uma rede P2P. IV - No modelo P2P, uma rede pode comportar ns chamados superpontos (super-peers), que agem de maneira similar aos ns servidores em uma rede C/S. So 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 Aplicaes Multicamadas Prof. Cludio Martins

37

Atividade para avaliao (2 pts)


Leia o captulo 1 do livro do Martin Fowler,

chamado Criando Camadas (est disponvel para download). Desenvolva as seguintes atividades:
Elabore um resumo de 2 pginas. Responda as seguintes questes:
a) Explique as diferenas entre os termos layer e tier. b) Explique o que o modelo do cliente gordo e do cliente rico, usado em soluo para a aplicaes na web. c) Quais as solues aplicadas ao modelo cliente-servidor (dos anos 1990) para tratar a lgica de domnio dos sistemas corporativos?

Desenvolvimento de Aplicaes Multicamadas Prof. Cludio Martins

38

Referncias
http://pt.wikipedia.org/wiki/Arquitetura_de_software Padres de Arquitetura de Aplicaes Corporativas.

Martin Fowler Ed. Bookman. 2006

Desenvolvimento de Aplicaes Multicamadas Prof. Cludio Martins

39