Pode ser vista como uma organização fundamental de um sistema, incorporada em seus componentes, seus
relacionamentos com o ambiente, os princípios que conduzem seu design e evolução (ISO/IEEE 1471-2000).
Ela define o modo de integração e interação com os demais sistemas necessários para que os requisitos
definidos sejam atendidos.
como selecionar?
A escolha por uma arquitetura ou outra depende da nossa necessidade e das características do sistema que
estamos tentando desenvolver. É importante que você escolha uma boa arquitetura, pois fazendo isso você
obterá vários benefícios
quais os benefícios?
Possibilidade de divisão do sistema de informações em várias partes, cada uma com suas respectivas
funções e responsabilidades, facilitando o gerenciamento.
Melhor flexibilidade – novos requisitos do negócio podem ser satisfeitos rapidamente.
Melhor adaptabilidade – possibilidade de customização de uma aplicação para vários usuários, usando
várias alternativas de entrega dos serviços da aplicação com impacto mínimo ao núcleo da aplicação.
Melhor manutenabilidade – possibilitando de atualização de uma aplicação, minimizando o impacto da
maioria das mudanças.
Melhor reusabilidade – possibilidade montagem rapidamente de aplicações únicas e dinâmicas.
Melhor aproveitamento do legado – possibilidade de reusar a funcionalidade de sistemas legados em novas
aplicações.
Melhor interoperabilidade – possibilidade de integrar duas aplicações executando em plataformas diferentes.
Melhor escalabilidade – possibilidade de distribuir e configurar a execução da aplicação para satisfazer
vários volumes de transação.
Menor tempo de desenvolvimento – possibilidade de melhoria da produtividade e com baixo orçamento.
Melhor robustez – possibilidade de ter soluções com menos defeitos, com mais confiabilidade e
disponibilidade.
Padrão em Camadas
como se caracteriza?
Uma arquitetura em camadas se caracteriza pela separação de seus artefatos de softwares constituintes em
partes distintas (camadas) e pela restrição de conexão imposta por essa divisão.
divisão
A divisão em camadas representa um agrupamento ordenado dos componentes e recursos, sendo que cada
camada de um sistema repousa sobre a outra e a camada mais baixa ignora a existência da camada mais
alta. O número e a composição das camadas dependem da complexidade do domínio do projeto e do espaço
de solução.
Vantagens
Você pode compreender uma única camada como um todo coerente sem saber muito sobre as outras
camadas.
Podemos substituir camadas por implementações alternativas dos mesmos serviços básicos.
Você minimiza as dependências entre as camadas.
O uso de camadas pode facilitar a padronização.
Podemos fazer reuso de camadas.
Desvantagens
Às vezes resultam em alteração em cascata.
Camadas extras podem prejudicar o
desempenho. Em cada camada os dados
precisam, tipicamente, ser transformados de
uma representação para outra.
Tipos de Camadas
Uma Camada (Single-Tier)
Inicialmente os aplicativos eram monolíticos: não havia uma separação clara entre a linguagem de
programação e o acesso ao banco de dados.
XBase, Cobol, Tabelas Paradox (Delphi)
Duas Camadas (Two- Tier)
Essa arquitetura é a Cliente/Servidor. Nela existe uma divisão clara entre o aplicativo e o acesso ao banco
de dados. Para resolver os problemas da arquitetura de uma camada, foram criados os servidores de bancos
de dados. A ideia é criar um programa ("servidor de banco de dados"), que é o único com permissão para
acessar os arquivos de dados. Todas as consultas e atualizações devem ser pedidas para este programa.
Isto resolve diversos problemas, pois o servidor de banco de dados pode:
Efetuar verificações adicionais de segurança (validar usuários,
por exemplo).
Garantir que as atualizações sejam realmente
efetuadas completamente ou então descartadas.
Três Camadas (Three-Tier)
Consiste em separar as funcionalidades em camadas: uma camada para a lógica de apresentação; outra
para a lógica de negócio; e outra para a lógica de acesso a dados.
A separação em três camadas torna o sistema mais flexível, de modo que partes podem ser alteradas
independentemente. Com o emprego de arquitetura em três camadas, qualquer alteração em uma
determinada camada não influi nas demais, desde que o mecanismo de comunicação entre elas permanece
inalterado. Isto permite substituir uma camada inteira por outra, independente de qual camada seja, ou que
um projeto desenvolvido para web possa abranger também dispositivos móveis ou standalone, a partir da
inclusão de uma nova camada de apresentação.
N Camadas (N-Tier)
Nesta arquitetura, retiramos a apresentação do cliente e a centralizamos em um servidor Web. Dessa forma,
não temos mais o cliente como um programa que precisa ser instalado em cada computador da rede, pois o
acesso à aplicação é feito por meio de um navegador. Ainda, com o deslocamento da camada
de apresentação para um Servidor Web, resolvemos o problema de termos que atualizar a aplicação em
centenas ou milhares de computadores cada vez que a interface for alterada, o que torna a atualização das
aplicações, uma tarefa mais gerenciável.
Padrão MVC
A ideia desse padrão é separar a lógica de negócio da interface com o usuário, fazendo com que a segunda
seja mudada sem que seja necessária qualquer mudança na primeira. Para tanto, separamos a aplicação em
três partes distintas: Model, que está relacionada à tarefa administrada pela aplicação; View, que está
relacionada à exibição dos dados ou informação dessa aplicação; e Controller, que é a responsável pela
coordenação das duas anteriores.
Model - representa as regras de negócio.
PADRÃO OBSERVER
View - apresenta os dados representados pelo modelo, acessando-os por meio do modelo e especifica como o dados serão apresentados.
PADRÃO COMPOSITE
Controller - traduz a interação do usuário com a visão em ações a serem executadas pelo modelo.
PADRÃO STRATEGY
Utiliza os padrões de projeto:
Observer- separar objetos de maneira que mudanças ocorridas em um possam afetar um número qualquer de
outros objetos, sem exigir que o objeto alterado conheça detalhes dos outros.
Composite-ocorre sempre que queremos agrupar objetos e tratar o grupo com um objeto individual e outras
classes definem objetos compostos.
Strategy-o relacionamento view-controller é um exemplo desse padrão. Ele é útil quando você quer substituir
o algoritmo tanto estático como dinamicamente.