Você está na página 1de 34

PW1 2023.

1 – Aula 03:
Padrões arquiteturais para
aplicações Web
Prof. Paulo Ewerton – paulo.fragoso@ifpb.edu.br
Prof. Fábio abrantes – fabio.diniz@ifpb.edu.br
Arquitetura de sistemas
• ...
Arquitetura de sistemas
• Não há um consenso em relação ao conceito de arquitetura de
sistemas de software, mas existem duas características
constantes:
• Uma arquitetura é o modelo de maior nível das partes que compõem
o software e
• Mudanças nesse modelo são difíceis de fazer
• Há uma granularidade associada à arquitetura, ou seja, é
possível que tenhamos diferentes "arquiteturas" definidas para
um sistema
• Todas representam os componentes principais do sistema e a
interação entre eles
Arquitetura de sistemas
• ...
O que é Arquitetura de sistemas?

Está associada a detalhes internos do


software na medida que esses detalhes
manifestam-se externamente
Arquitetura de sistemas
• ...
O porquê da Arquitetura de sistema?
• Uma abordagem adhoc leva a sistemas difíceis de mudar ou
adaptar
Impactos na escolha da Arquitetura

• ...
Confllitos na escolha da Arquitetura

• ...
Documento da Arquitetura de sistemas

• ...
Exemplo de representação gráfica

• ...
Exemplo de representação gráfica

• ...
Exemplo de representação gráfica

• ...
Exemplo de representação gráfica

• ...
Exemplo de representação gráfica

• ...
Exemplo de representação gráfica

• ...
Exemplo de representação gráfica

• ...
Exemplo de representação gráfica

• ...
Exemplo de representação gráfica

• ...
Padrões de Arquitetura
• Outro termo difícil de definir em engenharia de software é o de
padrão, mas em geral temos algumas concordâncias:
• Um padrão objetiva solucionar um problema comum que ocorre com
frequência
• Um padrão é fruto da prática
• Podemos pensar, então, que um padrão é uma solução para
um dado problema no desenvolvimento de software que pode
ser utilizado várias e várias vezes
• Importante: padrões não devem ser utilizados sem critério;
é preciso avaliar o problema sob análise
Padrões de Arquitetura
Divisão em camadas
• Uma prática comum em computação quando se quer dividir um
problema complexo em partes menores é utilizar o conceito de
camadas
• Por exemplo: TCP/IP
• As vantagens da modelagem em camadas incluem:
• É possível compreender uma camada de forma auto-contida
• É possível substituir um serviço base sem modificar a camada
• Diminui-se a dependência entre uma camada e outra
• Camadas são padronizáveis
• Uma vez estabelecidas, as camadas podem servir a diferentes propósitos
Desvantagens da divisão em camadas
• Camadas nem sempre encapsulam bem certas características
do sistema;
• por exemplo: mudanças nas entidades de um software
• A adição de camadas pode trazer problemas de performance,
• já que há um custo associado à transformação dos dados que
percorrem as diferentes camadas
• A parte mais desafiadora, no entanto, é definir quantas
camadas e quais suas atribuições
Principais camadas de um sistema
corporativo
• Apresentação: responsável pela interação com o usuário, ou
seja, exibir informações e interpretar entradas que afetaram as
outras camadas do sistema
• CLI, GUI, front-end de apps Web, requisições HTTP
• Domínio: trata-se da lógica de negócio, ou seja, aquilo que o
sistema precisa fazer dentro do domínio
• Lógica do sistema, validação das entradas vindas da camada de
apresentação, alterações de dados
• Fontes de dados: refere-se à comunicação do software com
outros sistemas, geralmente sistemas de bancos de dados
• SGBDs, sistemas de transação, mensageria, APIs externas
Principais camadas de um sistema
corporativo
Arquitetura de sistemas web
Padrão MVC: Model View Controller
• Divide a interação com a
interface do usuário em três
camadas distintas
MVC - Características
• Modelo: refere-se à lógica de negócio, ou seja, ao domínio da
aplicação
• Representa os dados da aplicação e as regras de negócio que governam
o acesso e a atualização desses dados

• Visão: representa a exibição de elementos da interface do


usuário
• Numa aplicação Web, a visão é uma página HTML e seus componentes

• Controlador: interpreta as entradas do usuário,


• modificando o modelo e atualizando a visão apropriadamente
Separação da visão e do modelo
• É uma das melhores práticas do projeto de software, por várias
razões:
• Visão e modelo possuem atribuições fundamentalmente diferentes
• Dependendo do contexto é possível modificar completamente a
apresentação do sistema
• Facilidade nos testes
• A apresentação depende do modelo, mas o modelo não
depende da apresentação: trabalho de desenvolvimento
independente
Separação do controlador e da visão
• Em alguns tipos de aplicação, as vantagens desta separação
não é tão óbvia, o que não é o caso em aplicações Web
• Em aplicações GUI, por exemplo, muitas vezes não se separam a
apresentação do controlador
• Nas aplicações Web, precisamos de um componente
intermediário na maioria dos casos
• Geralmente, teremos um controlador (ou função controladora) para
cada página (ou conjunto de páginas) na aplicação
MVC Resumo
MVC Resumo
MVC Resumo
Referências
• Fowler, Martin. Patterns of Enterprise Application
Architecture. Reino Unido, Pearson Education, 2012.

Você também pode gostar