Introdução e Motivação: Arquiteturas em n Camadas
Um Problema: Pressões do negócio
- Steve Jobs fala: "Few companies have the luxury of reinventing themselves when they
compete on Internet time"
- "Internet time" é um novo conceito (final dos anos 1990) e significa que as empresas
devem implementar novos sistemas muito rapidamente
- Muitos sistemas de empresas devem migrar para Internet/Intranet/Extranet
- Novos tipos de sistemas devem ser desenvolvidos para usar a tecnologia como business advantage, dando um diferencial nos negócios
- Muitos sistemas devem mudar devido a mudanças nos negócios
- Resultado: tem muito mais software a fazer, muito
mais rapidamente
- Mas há pressões para manter custos de IT (Information Technology) baixos
- Hoje (início dos anos 2000), de 4 a 6% da receita é gasta com TI! É altíssimo!
Outro Problema: Pressões Tecnológicas
- O desenvolvimento de software ficou muito mais complexo nos últimos anos
- Pelos motivos acima
- Porque usuários querem funcionalidade mais sofisticada
- Problemas de complexidade
- O desenvolvimento de muitos grandes sistemas tem fracassado recentemente
- A figura mais citada: 80% dos projetos são fracassos!
- Resumindo: fazer sistemas de produção customizados do zero in-house:
- É muito caro
- Demora muito tempo
- Não produz boa qualidade
Requisitos da Solução: O que queremos com a TI?
- O que grandes empresas, com grandes problemas de desenvolvimento de sistemas, querem,
tecnologicamente?
- Melhor flexibilidade
- Possibilitando satisfazer novos requisitos do negócio (=funcionalidade) rapidamente
- Melhor adaptabilidade
- Possibilitando customizar uma aplicação para vários usuários, usando várias
alternativas de delivery dos serviços da aplicação com impacto mínimo ao
núcleo da aplicação
- Melhor manutenabilidade
- Possibilitando atualizar uma aplicação, mas minimizando o impacto da maioria das
mudanças
- Melhor reusabilidade
- Possibilitando rapidamente montar aplicações únicas e dinâmicas
- Melhor aproveitamento do legado
- Possibilitando reusar a funcionalidade de sistemas legados em novas aplicações
- Melhor interoperabilidade
- Possibilitando integrar 2 aplicações executando em plataformas diferentes
- Melhor escalabilidade
- Possibilitando distribuir e configurar a execução da aplicação para satisfazer
vários volumes de transação
- Menor tempo de desenvolvimento
- Possibilitando viver em "Internet time" e com baixo orçamento
- Equivalente a querer Produtividade do Programador
- Melhor robustez
- Possibilitando ter soluções com menos defeitos
- Possibilitando ter confiabilidade e disponibilidade
- Menor risco
- Possibilitando tudo que falamos acima e ainda não se arriscar a ter projetos
fracassados
- Resumindo: tudo que ISO 9126 caracteriza como "qualidade de
software"
- Funcionalidade, Manutenibilidade, Usabilidade, Eficiência, Confiabilidade,
Portabilidade
- E mais algumas coisinhas ...
Solução: Aplicações Multicamadas Distribuídas
- Faremos um resumo histórico das arquiteturas de aplicações
Arquitetura centralizada
- Dominantes até década de 80 como arquitetura corporativa
- Problema básico: interface não amigável
Arquitetura em 2 camadas
- Sistemas em camadas surgiram para:
- Melhor aproveitar os PCs da empresa
- Oferecer sistemas com interfaces gráficas amigáveis
- Integrar o desktop e os dados corporativos
- Em outras palavras, permitiram aumentar a escalabilidade de uso de Sistemas de
Informação
- Os primeiros sistemas cliente-servidor eram de duas camadas
- Camada cliente trata da lógica de negócio e da UI
- Camada servidor trata dos dados (usando um SGBD)

Arquitetura em 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 (legado CICS, 3270, ...)
- Inventou-se a arquitetura em 3 camadas
- Camada de apresentação (UI)
- Camada de aplicação (business logic)
- Camada de dados

- Problemas de manutenção foram reduzidos, pois mudanças às camadas de aplicação e de
dados não necessitam de novas instalações no desktop
- Observe que as camadas são lógicas
- Fisicamente, várias camadas podem executar na mesma máquina
- Quase sempre, há separação física de máquinas
Arquitetura em 3/4 camadas Web-Based
- 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 à camada de
apresentação
- Não se pode instalar software facilmente num desktop que não está sob seu controle
administrativo
- Em máquinas de parceiros
- Em máquinas de fornecedores
- Em máquinas de grandes clientes
- Em máquinas na Internet
- Então, usamos o Browser como Cliente Universal
- Conceito de Intranet
- A camada de aplicação se quebra em duas: Web e Aplicação
- Evitamos instalar qualquer software no desktop e portanto, problemas de manutenção
- Evitar instalação em computadores de clientes, parceiros, fornecedores, etc.
- Às vezes, continua-se a chamar isso de 3 camadas porque as camadas Web e Aplicação
freqüentemente rodam na mesma máquina (para pequenos volumes)

Arquitetura distribuída em n camadas
- Os problemas remanescentes:
- Não há suporte a Thin Clients (PDA, celulares, smart cards, quiosques, ...) pois
preciso usar um browser (pesado) no cliente
- Dificuldade de criar software reutilizável: cadê a componentização?
- Fazer aplicações distribuídas multicamadas é difícil. Tem que:
- Implementar persistência (impedance mismatch entre o mundo OO e o mundo dos BDs
relacionais)
- Implementar tolerância a falhas com fail-over
- Implementar gerência de transações distribuídas
- Implementar balanceamento de carga
- Implementar resource pooling
- etc.
- As empresas não querem contratar PhDs para implementar sistemas de informação!
- O truque é introduzir middleware num servidor de aplicação que ofereça esses
serviços automaticamente
- Além do mais, as soluções oferecidas (J2EE, .Net) são baseadas em componentes

- As camadas podem ter vários nomes:
- Apresentação, interface, cliente
- Web
- Aplicação, Business
- Dados, Enterprise Information System (EIS)
intro-1 programa