Modelo de Camadas
O Modelo de Camadas provê uma forma de se estruturar o software de
maneira que classes com propósitos semelhantes sejam agrupadas em
uma mesma camada.
Camada: encapsula as funcionalidades de um conjunto de classes que
têm comportamento similar.
Camadas disciplinam a direção do fluxo de mensagens entre certos
tipos de classes.
Dentro de uma camada, a troca de mensagens entre suas classes
pode ocorrer livremente.
Kecia A. M. Ferreira 5
Camada de Interface
A Camada de Interface agrupa as classes que têm por propósito
implementar interação como o usuário.
Mensagens fluem apenas da Camada de Interface para a Camada de
Negócios, e o contrário não é permitido.
Benefício: mudanças na interface não afetam a Camada de Negócios.
Kecia A. M. Ferreira 7
Camada de Negócios
A Camada de Negócios agrupa as classes que modelam o
domínio do problema.
Encapsula as funcionalidades da aplicação, sem se preocupar
com interfaces de usuário e persistência de dados.
O fluxo de mensagens é da Camada de Negócios para a
Camada de Persistência.
Kecia A. M. Ferreira 8
Camada de Persistência
A Camada de Persistência agrupa classes que têm por finalidade
prover criação, remoção, alteração e recuperação de dados
persistentes.
Não é o próprio mecanismo de persistência (banco de dados ou
arquivo), mas um front-end que empacota o acesso a ele.
O fluxo de mensagem é da Camada de Negócio para a Camada de
Persistência.
Benefício: torna possível realizar alterações na forma de persistência
de dados sem impacto para o restante do sistema.
Kecia A. M. Ferreira 9
Camada de Sistema
Classes da camada de sistema fornecem acesso aos recursos
do sistema, tais como:
sistema operacional;
componentes de hardware;
componentes de comunicação.
Benefício: empacotar as funcionalidades de sistema aumenta a
portabilidade do software para vários ambientes.
Kecia A. M. Ferreira 10
Camada de Sistema
Camada de Sistema mantém comunicação com todas as demais
camadas do sistema. Tais comunicações têm as seguintes
características:
Camada de Interface: a troca de mensagens deve ser rara, para
garantir maior portabilidade.
Camada de Negócio:o fluxo de mensagem é ocasional.
Camada de Persistência: o fluxo de mensagem é frequente, pois
a camada de persistência necessita, para a maioria de suas
funcionalidades, solicitar serviços da Camada de Sistema, tais
como aqueles relacionados à manipulação de arquivos, acesso a
rede, etc.
Kecia A. M. Ferreira 11
Camada de Sistema
O fluxo de mensagens da camada de sistema com as demais é
bi-direcional.
Mensagens podem partir da Camada de Sistema no caso de
métodos de rechamada.
Métodos de rechamada: quando um método A estabelece
comunicação com um outro método B e solicita que no futuro B
envie uma mensagem M sempre que um certo evento ocorrer, o
método B é dito método de rechamada.
Kecia A. M. Ferreira 12
Identificação de Uma Camada para Uma
Classe
Camada de Devem ser incluídas nesta camada as classe que:
Interface representam ou controlam uma janela, um formulário ou
qualquer outra interface com usuário;
representam um relatório.
Camada de Fazem parte desta camada as classes que:
Negócios implementam um conceito do negócio da aplicação;
foram descritas pelos usuários do sistema.
Kecia A. M. Ferreira 14
Identificação de Uma Camada para Uma
Classe
Camada de As classes incluídas nesta camada devem prover
Persistência a criação, a busca, a atualização ou a remoção de
dados em um mecanismo de persistência, como
um arquivo ou banco de dados.
Camada de Sistema Deve-se verificar se a classe a ser incluída nesta
camada:
esquematiza funcionalidade específica do sistema
operacional;
empacota acesso a outro sistema ou aplicação;
pode ser desenvolvida sem informações
provenientes dos usuários do sistema;
necessitaria alteração caso o sistema operacional
mude.
Kecia A. M. Ferreira 15
Benefícios
Permite a organização dos esforços de desenvolvimento por
camadas. Um grupo de desenvolvedores pode trabalhar em uma
camada de forma independente dos outros grupos. Isso elimina
a necessidade de se ter uma parte do sistema concluída para
que a outra possa ser desenvolvida.
Favorece modularidade e manutenibilidade, uma vez que
disciplina e reduz o número de conexões entre as classes de
camadas diferentes.
Kecia A. M. Ferreira 17
Bibliografia
AMBLER, Scott W., Análise e Projeto Orientado a Objeto. Volume 2,
IBPI Press, Livraria e Editora Infobook AS, 1988.
Kecia A. M. Ferreira 18