terça-feira, 19 de março de 2013

Arquitetura em 3 Camadas

Válquíria Akemi, Cristiane Pereira, Thamires S. Guimarães

Arquitetura 3 camadas é um padrão de arquitetura que descreve como três camadas de desenvolvimento relacionam entre si. Essa arquitetura fornece uma maneira de dividir as funcionalidades envolvidas na manutenção e apresentação de uma aplicação. Foi desenvolvida com objetivo de mapear as tarefas de entrada, processamento e saída para o modelo de interação com o usuário, assim sendo mais fácil mapear os conceitos no domínio de aplicações.
As camadas são:
  • Camada de Apresentação: tem como função exibir as informações. Usada para receber as entradas e apresentar o resultado, ou seja, é a interface com o usuário.
  • Camada de Regra de Negócio: responsável por controlar todo o fluxo de informação. Intermediária entre a camada de apresentação e acesso a dados. Nesta camada é executada a regra de negócio (inteligência do sistema).
  • Camada de Acesso a Dados: é responsável pela persistência e acesso aos dados da aplicação.
Vantagens e Desvantagens
Como qualquer arquitetura, possui vantagens e desvantagens, são elas:
Vantagens:
  • Facilita o reaproveitamento de código.
  • Facilita a manutenção e adição de recursos.
  • Maior integração da equipe e/ou divisão de tarefas.
  • Facilita em manter o seu código sempre limpo.
  • É possível ter desenvolvimento em paralelo para o modelo, visualizador e controle, pois não são dependentes.
 
Desvantagens:
  • Requer tempo para analisar e modelar o sistema.
  • Requer pessoas especializadas.
  • Não é aconselhável para pequenas aplicações.
Uso de Aplicações em Camadas no segmento Varejo
A seguir, faremos os comentários da divisão em camadas de um terminal PDV.
Definição PDV
  • Sistema computadorizado que registra vendas e trata de pagamentos.
  • Tipicamente usado em lojas de varejo e acoplado a um leitor de código de barra.
Divisão em Camadas
Camada Apresentação: são equipamentos de hardware que fazem interação com o usuário e onde são exibidas as informações, como exemplo: monitor LCD, teclado com visor, display cliente, leitor de código de barra, leitor CMC7, impressora fiscal (ECF), etc.
Camada Regra de Negócio: é a aplicação utilizada. O software onde são realizados os cadastros de formas de pagamentos e tipos de vendas, configurações de parâmetros, emissão de relatórios de vendas, validação do produto após a leitura do código de barra, cálculo da quantidade de itens vendidos e totais de venda.
Camada de Acesso a Dados: quando é feita a validação do cadastro do produto, os dados são enviados para esta camada. A aplicação acessa as tabelas necessárias do banco de dados para verificar se o item é existente.
O item presente em todas as camadas da divisão do PDV é a impressora fiscal, pois realiza a impressão do cupom fiscal e faz interação com o usuário (Camada Apresentação). Quando calcula os itens da venda, realiza processos como leitura X, redução Z, e etc. utiliza um software interno (Camada de Negócios), e ao armazenar todas as transações da venda em seu banco de dados eletrônico (dados são gravados na memória da fita detalhe) faz o uso da 3ª camada: persistência e acesso a dados.

 

10 comentários:

  1. Muito Bom o trabalho.

    Trabalho em uma empresa com implementação de Bi no ramo varejista, e por este motivo, tenho algum conhecimento das camadas envolvidas neste ramo.

    Basicamente, a estrutura em camadas de um software voltado para Varejo depende muito do porte da empresa em questão.

    Em algumas empresas "Supermercados" de pequeno porte, não é natural haver tanta divisão em camadas, bastando para o cliente, ter um servidor no qual ele armazena :
    - Banco de dados
    - Aplicações (Softwares específicos)
    - Firewall

    A desvantagem é obvia, com o tempo, este cliente passa a ter uma degradação de performance considerável.

    No entanto, para um "Mercadinho", é suficiente, pois o mesmo não dispõem de tantos recursos quanto grandes empresas do ramo.

    Agora, no caso de ser uma empresa GRANDE, é comum ocorrer maior divisão em camadas.

    Clientes deste porte, devido às inúmeras transações que efetuam no Banco de dados, acabam investindo em uma camada somente para o BD.

    Podemos encontrar inclusive, uma camada designada apenas aos serviços e aplicações, estes processos, costumam ser processos automatizados, como:

    - Importação de cupons (cupons de venda que são gerados por ECF's)
    - Sincronização (estabelece conexões com outras camadas)
    - Serviços de Retaguarda (Serviços que mantem os outros serviços ativos)
    - Outros mais.

    Acaba sendo interessante também, ter um servidor somente para firewall (é raro, mas tem)

    A grande vantagem de clientes que optam por estas divisões, é performance e manutenção.

    A Desvantagem, é sem dúvida nenhuma o preço.

    De modo geral, o Software acaba sendo desenvolvido para trabalhar com a quantidade de camadas relativas ao porte do cliente, bastando à empresa dona do software, parametrizar o mesmo, para se adequar as especificações.

    Clientes com maior poder aquisitivo, consequentemente optam por uma divisão maior ( mesmo que as vezes queiram gastar o mínimo possível)

    Já Clientes pequenos, quanto mais barato e simples melhor.


    ResponderExcluir
  2. Este comentário foi removido pelo autor.

    ResponderExcluir
  3. Belo Trabalho Meninas!!
    Muito interessante e estiga o leitor a ir até o final na leitura.

    Estava conversando com meu primo, e ele disse que existe um modelo chamado MVC que é um modelo de desenvolvimento de Software, utilizada na Engenharia de Software.

    O modelo isola a "lógica" (A lógica da aplicação) da interface do usuário (Inserir e exibir dados), permitindo desenvolver, editar e testar separadamente cada parte.

    Ele me disse que MVC e arquiteturas em três camadas seriam a mesma coisa...Fui pesquisar um pouco e vi que são coisas parecidas, mais não são as mesmas coisas e que esses dois temas confundem muito as pessoas, como meu proprio primo.

    Pesquisando vi que muitos dizem que MVC é arquitetura de Aplicação e Camadas são arquitetura de Sistemas.

    Se alguem puder postar algo sobre isso como não tenho tanto conhecimento neste assunto, gosatria de saber se realmente são coisas destintas ou elas tem relação?

    Até

    ResponderExcluir
    Respostas
    1. Boa tarde a todos,

      Renan, alguns dizem ser um Design Pattern, outros um Architecture Pattern.

      MVC (Model View Controller) divide o sistema em camadas independentes entre si onde resolvo problemas de entendimento, manutenção e outros.

      MODEL: O Model é utilizado para manipular informações de forma mais detalhada, sendo recomendado que, sempre que possível, se utilize dos modelos para realizar consultas, cálculos e todas as regras de negócio do nosso sistema. Em outras palavras é o coração do sistema, nela está contidas as classes de negócio, entidades, etc.

      VIEW: A view é responsável por tudo que o usuário final visualiza, podendo ser uma página web, mobile, desktop dentre outros.

      CONTROLLER: É a camada responsável por controlar o fluxo das informações, está entre a view e o model. No caso de uma aplicação web em java, como citado na aula passada é a servlet e auxiliares.

      Como descrito, posso ter uma aplicação bancária em que o núcleo do sistema(MODEL) está em produção no servidor central e o cliente(VIEW) possa ser o internet banking, caixa eletrônico, aplicativo mobile, POS de cartão de crédito... por aí vai.



      Excluir
    2. Acredito que MVC deve ser mais um padrão de arquitetura do que camadas de desenvolvimento.

      Pois as camadas, pelo menos as quais nos referimos quando falamos no desenvolvimento de tal forma, seria serviços diferentes como BD, servidor de aplicação, regras de negócio, cliente, cada um responsável por um processamento.

      Já no MVC isso é o sistema em si que pode estar em uma dessas camadas, mas não cada componente em um lugar diferente (Embora em pastas diferentes na aplicação).

      Espero ter sido claro, qualquer dúvida pode perguntar pra mim na sala, já trabalho um tempo com um framework MVC em PHP, de repente é uma coisa interessante...

      Valeu!

      Excluir
  4. Muitos profissionais acreditam que só pelo fato do Banco de Dados estar centralizado em um servidor dedicado e todo mundo acessando esse servidor, pensam estar utilizando a arquitetura em 3 camadas.
    O fato do banco de dados estar isolado em um servidor e através das máquinas Cliente você acessar os dados que estão nesse servidor não quer dizer que você esteja utilizando arquitetura em 3 camadas.
    Só pode dizer que está sendo utilizado essa arquitetura quando você começar a retirar da parte do Cliente todo o processamento, ou seja, você começar a trabalhar com Stored Procedure que ficam no servidor de banco de dados e/ou Componentes que ficam no servidor de aplicativo.

    Vejamos agora como é realizado o caminho em uma Arquitetura de 3 camadas desde um simples clique em botão “Gravar” do Front-End do aplicativo até o retorno com a mensagem “Dados gravados com sucesso”:

    1. Quando o cliente clica no botão “Gravar” o seu aplicativo envia uma solicitação para o sistema operacional da máquina do Cliente. Com isso o sistema operacional realiza o empacotamento e solicita para a rede levar esse pacote até o servidor de componente.

    2. O sistema operacional do Server Application recebe o pacote, abre e identifica que é uma requisição para o Serviço de Componente. O componente (programa executável que foi desenvolvido por você) então é acionado e solicita informações para o banco de dados. Mais uma vez o sistema operacional é acionado, empacota a requisição e solicita para rede para levar esse pacote até o Server Database.

    3. Nesse instante o SGBD é acionado, abre uma conexão, realiza todo seu trabalho de verificar o parse do comando, checar se a informação está na memória e então executa a solicitação. Quando tem o retorno ele devolve para quem o solicitou, que nesse caso foi o Server Application.

    4. É nesse instante que o componente recebe os dados ele realiza todo processamento “pesado” (regras de negócios, cálculos, enfim).

    5. Após o término do processamento o componente devolve para o Cliente que fez a solicitação.

    Esse procedimento pode ser ilustrado com a figura do link abaixo, onde está numerado o passo a passo de como é realizado o processo acima:

    http://www.devmedia.com.br/imagens/02-07-2007pic01.JPG

    ResponderExcluir
    Respostas
    1. Na verdade aplicações em 3 camadas são compostas, basicamente, do cliente + servidor de aplicação + BD, afinal, é um sistema totalmente separado da sua aplicação, você passa parâmetros e ele os processa retornando resultados.

      Pelo que entendi do texto do comentário, ele está se referindo a uma aplicação Cliente + BD, tudo bem dizer que não é 3 camadas, são 2, sistemas antigos como Delphi + Firebird (Foi longe em) rodavam na mesma máquina, a do "cliente". Apesar de serem executados na mesma máquina, ainda é considerado 2 camadas. Ou 1 aplicação web rodando localmente pode ser considerada 3 camadas, Browser + Servidor de aplicação (XAMPP, por ex.) + BD.

      Espero ter ajudado :)

      Excluir
  5. Muito bom trabalho meninas, parabéns!

    Vale lembrar que as aplicações não param apenas em aplicações três camadas, mas também existem aplicações de quatro camadas.

    A idéia básica de aplicações de quatro camadas é retirar a apresentação do cliente e centralizá-la em um determinado ponto que na maioria dos casos é um servidor WEB. Com isso o cliente deixa de existir como um programa que deve ser instalado, ao invés disso o cliente passa a acessar o serviço através da web utilizando Chrome, Mozilla, etc.

    A aplicação em quatro camadas é dividida da seguinte forma:

    Cliente: nesse caso é o navegador que o usuário utiliza para acessar o serviço.

    Apresentação: A apresentação é passada para o servidor web . A interface pode ser composta de páginas HTML, JSP,ASP, PHP ou qualquer outra tecnologia capaz de gerar conteúdo para o Navegador.

    Lógica: São as regras de negócio.

    Dado: Servidor de banco de dados.

    Dessa forma resolvemos o problema das atualizações que ao invés de ser instalada uma a uma em cada cliente, ela fica concentrada em apenas um local que é o servidor web.
    OBS: Para aplicações pequenas onde o browser será executado na mesma máquina em que o servidor se encontra, ela pode ser chamada de três camadas.

    http://www.dsc.ufcg.edu.br/~jacques/cursos/j2ee/html/intro/intro.htm
    http://www.juliobattisti.com.br/artigos/ti/ncamadas.asp

    ResponderExcluir
  6. O trabalho ficou muito bom!

    Trabalho em uma empresa de automação comercial que desenvolve software para retaguarda e frente de caixa e para nós a divisão das aplicações em camadas é essencial.

    Nos supermercados onde são implantados nossos sistemas, a arquitetura divide-se da seguinte forma:
    Um servidor de banco de dados central que concentra as informações de todas as lojas, um servidor de aplicação onde fica a aplicação principal (ERP), um sistema intermediador de comunicação entre o servidor de banco de dados e o software no frente de caixa e, por fim, o software no frente de caixa.

    A principal importância desta divisão em camadas é o número de transações entre os softwares no frente de caixa e o banco de dados central. O sistema intermediador é responsável por gerenciar os registros de vendas que são enviados pelos softwares no frente de caixa e salvá-los no banco de dados central. Sem essa camada intermediadora, o tráfego de informações seria tão alto quando chegasse ao banco de dados central que este não conseguiria dar conta.

    Resumindo, além da divisão em camadas, a definição da responsabilidade de cada uma é vital para evitar que uma prejudique ou sobrecarregue a outra e garantir o bom desempenho das aplicações.

    ResponderExcluir
  7. Complementando o comentário do Matheus sobre arquitetura em 4 camadas, centralizar a apresentação do cliente em um determinado ponto, além de resolver o problema de ter que atualizar a aplicação em cada computador, cada vez que a interface for alterada, os servidores de Aplicação, servidor Web e servidor de Banco de dados, não precisam, necessariamente, ser servidores separados, isto é, uma máquina para fazer o papel de cada um dos servidores.

    Veja mais em:

    http://www.diegomacedo.com.br/arquitetura-de-aplicacoes-em-2-3-4-ou-n-camadas/

    ResponderExcluir