Buscar

12 Desenvolvimento de Software em Camadas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 25 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 25 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 25 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Arquitetura de Software : 
12 Desenvolvimento de Software em 
Camadas Prof. Alexandre Krohn
Desenvolvimento de Software em Camadas 2
Arquitetura de Software
● A modularização de código é o 
príncipio da construção de um 
software organizado, com uma 
manutenção facilitada.
● Mas é só o príncipio...
Desenvolvimento de Software em Camadas 3
Arquitetura de Software
● Uma arquitetura de software têm por 
objetivo capturar e preservar as 
intenções dos designers sobre a 
estrutura e o comportamento do sistema, 
fornecendo assim, uma defesa contra a 
desintegração à medida que o software 
envelhece. (KRUCHTEN;OBBINK; 
STAFFORD, 2006).
Desenvolvimento de Software em Camadas 4
Arquitetura de Software
● Começamos um software analisando seus 
requisitos.
● Quando possuirmos um conhecimento razoável 
desses requisitos, passa-se a definição da 
arquitetura inicial, ou arquitetura candidata
● Depois de sabermos o que fazer, vamos 
planejar como fazer. O ponto de partida pode 
ser organizar nosso software em camadas
Desenvolvimento de Software em Camadas 5
O contra-exemplo:
● Um modelo que não possui uma arquitetura bem definida é representado 
pela ilustração abaixo
● Aplicações que evoluem sem uma arquitetura tendem mais facilmente a 
complexidade.
Desenvolvimento de Software em Camadas 6
Organizar o software em 
forma de camadas
● O objetivo é organizar o software em camadas 
lógicas, que serão implementadas como 
pacotes ou namespaces. 
● Através do uso de serviços e componentes 
será criada uma solução que aos olhos do 
usuário pareça monolítica, mas que fornece 
aos desenvolvedores a flexibilidade de evoluir 
os processos e funcionalidades sem causar 
efeitos colaterais
Desenvolvimento de Software em Camadas 7
Camadas x Camadas
● Tier – Camada física – hardware
● Layer – Camada lógica - programas
Layer J - 1
Layer J
Layer J + 1
Layer J - 1
Layer J
Layer J + 1
Layer J - 1
Layer J
Layer J + 1
Layer J - 1
Layer J
Layer J + 1
n Tiers
10.0.0.1 10.0.0.2
n Layers
Desenvolvimento de Software em Camadas 8
Exemplo de Arquitetura
Desenvolvimento de Software em Camadas 9
Funções das camadas
● User interface layer – gerencia a comunicação da aplicação com o 
usuário, controlando o fluxo de telas através de um workflow de 
interface com o usuário que usa o design pattern MVC.
● Process layer – controla onde o usuário está no processo e 
orquestra as atividades. Basicamente funciona como um controlador 
dos processos empresariais é um auxiliar da User Interface Layer e 
um cliente da camada de serviços;
● Services layer – executa o trabalho da aplicação em conjunto com 
os objetos de negócio invocando métodos, buscando dados e 
retornando os resultados para a camada de processos;
Desenvolvimento de Software em Camadas 10
Funções das Camadas
● Object layer – contém os objetos e coleções – 
realizando busca de dados, transformação, cálculos 
e processamentos de forma geral;
● Persistence layer – isola a aplicação do banco de 
dados e é responsável pelas operações CRUD 
(create, read, update e delete).
Desenvolvimento de Software em Camadas 11
Boas Práticas
● Dependência entre camadas
No desenvolvimento em camadas a camada inferior 
jamais deve depender da camada superior.
Layer J - 1
Layer J
Layer J + 1
Desenvolvimento de Software em Camadas 12
Boas Práticas
● Comunicação Unidirecional
Uma camada inferior jamais pode chamar a camada 
superior.
Layer J - 1
Layer J
Layer J + 1
Descem 
chamadas
de métodos
Sobem retorno
de métodos
e exceções
Desenvolvimento de Software em Camadas 13
Boas Práticas
● Acesso entre camadas
Não é permitido pular camadas, ou seja, uma 
camada não pode ignorar a existência de outra.
Layer J - 1
Layer J
Layer J + 1
Desenvolvimento de Software em Camadas 14
Distribuição de Serviços 
em camadas
● Com a organização da arquitetura 
da aplicação em camadas de 
serviços, obtém-se ganhos 
simplificando a aplicação e 
facilitando a manutenção.
Desenvolvimento de Software em Camadas 15
Interface de serviço
● Toda funcionalidade ocultará as 
classes que representam sua 
implementação através de uma 
interface pública de acesso que 
fornece os serviços relativos a 
funcionalidade. Servindo como uma 
base para ocultar o pacote.
Desenvolvimento de Software em Camadas 16
Serviços
● Serviços são por definição auto-contidos (self-
contained) e modulares. Todo e qualquer serviço 
suporta um conjunto bem definido de interfaces. 
● As interfaces devem ser diretamente 
relacionadas ao domínio do problema, sendo 
que as dependências externas para 
funcionamento de qualquer serviço devem ser 
claramente documentadas e diretamente 
relacionadas ao domínio.
Desenvolvimento de Software em Camadas 17
Modularidade dos Serviços
● Bertrand Meyer definiu os cinco critérios 
para determinar se a modularidade esta 
adequada:
– Decomposição Modular
– Composição Modular
– Compreensão Modular
– Continuidade Modular
– Proteção Modular
Desenvolvimento de Software em Camadas 18
Decomposição Modular
● Refere-se ao processo de quebrar uma aplicação em unidades 
menores de forma recursiva até o ponto que cada unidade seja 
responsável por uma única função distinta. Este processo é 
comumente denominado de “projeto top-down”. 
● O objetivo final do processo é a identificação da menor unidade 
de software que pode ser reusada em diferentes contextos para 
fornecer um determinado serviço. 
● Este processo tende a ser mais focado no domínio do 
problema.
Desenvolvimento de Software em Camadas 19
Composição Modular
● Refere-se a produção de novos serviços que são baseados na 
combinação de outros serviços. Normalmente refere-se a este 
processo como “projeto bottom-up”. 
● Este processo tende a ser mais focado nas funções oferecidas pela 
aplicação. Tipicamente este processo é iniciado quando o processo de 
decomposição modular começa a não produzir mais resultados 
significativos. 
● Recomenda-se ao final deste processo uma análise do funcionamento 
de cada serviço através da criação de cenários de uso com diagramas 
de seqüência que acessam os componentes da Object Layer.
Desenvolvimento de Software em Camadas 20
Compreensão Modular
● Modular understandability :
● A assinatura do serviço deve ser simples de 
forma que a partir da leitura da especificação 
deste seja possível determinar o objetivo de 
cada uma das mensagens quem podem ser 
enviadas para o serviço sem recorrer a 
manuais, Simplificando o processo de 
encontrar e usar os serviços. (Nomes 
adequados nos pacotes, classes e métodos)
Desenvolvimento de Software em Camadas 21
Continuidade Modular
● Mede o impacto que causará uma 
mudança no serviço. Se a interface do 
serviço não ocultar de forma apropriada 
detalhes de implementação do serviço 
ocorrerá um efeito de mudança em 
cascata quando alterações forem 
necessárias na implementação.
Desenvolvimento de Software em Camadas 22
Proteção Modular
● Falhas na operação de um serviço 
não devem influenciar na execução 
de outros serviços que não sejam 
dependentes do serviço falho.
Desenvolvimento de Software em Camadas 23
Resumo
● Não importa o processo de software usado, sempre devemos fazer 
um bom levantamento de requisitos
● Os requisitos ditam como deverá ser modelada a arquitetura do 
software
● Um bom ponto de partida é a organização do software em camadas
● Existem regras indicando como as camadas devem “conversar”
● Os requisitos ajudam a descobrir quantas e quais serão as 
camadas necessárias
● A organização das classes dentro das camadas e a forma como as 
mesmas interagem é definida pelos Princípios SOLID e os Padrões 
de Projeto
Desenvolvimento de Software em Camadas 24
Dúvidas?
Desenvolvimento de Software em Camadas 25
Referências
● https://www.devmedia.com.br/como-conciliar-agilidad
e-e-arquitetura-de-software/33281
● [RYE96] Riel, Arthur J. Object Oriented Design 
Heuristics, Addison-Wesley Longman, 1996
● [MEY96] Meyer, Bertrand, Object Oriented SoftwareConstruction, 
Second Edition, Prentice Hall 1996.
● https://www.profissionaisti.com.br/2011/06/levantamento-de-requisitos-
voce-sabe-o-que-e/
● https://www.devmedia.com.br/tecnicas-para-levantamento-de-
requisitos/9151
https://www.devmedia.com.br/como-conciliar-agilidade-e-arquitetura-de-software/33281
https://www.devmedia.com.br/como-conciliar-agilidade-e-arquitetura-de-software/33281
https://www.profissionaisti.com.br/2011/06/levantamento-de-requisitos-voce-sabe-o-que-e/
https://www.profissionaisti.com.br/2011/06/levantamento-de-requisitos-voce-sabe-o-que-e/
	Slide 1
	Slide 2
	Slide 3
	Slide 4
	Slide 5
	Slide 6
	Slide 7
	Slide 8
	Slide 9
	Slide 10
	Slide 11
	Slide 12
	Slide 13
	Slide 14
	Slide 15
	Slide 16
	Slide 17
	Slide 18
	Slide 19
	Slide 20
	Slide 21
	Slide 22
	Slide 23
	Slide 24
	Slide 25

Outros materiais