0% acharam este documento útil (0 voto)
22 visualizações21 páginas

Grupo 8 - Padrões de Projeto e Arquitetura

Enviado por

Railson da Silva
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
22 visualizações21 páginas

Grupo 8 - Padrões de Projeto e Arquitetura

Enviado por

Railson da Silva
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 21

Engenharia Software

Padrões de Arquitetura e Projeto


Grupo:

Matheus de Camargo Martins


Rodrigo de Oliveira Rodrigues
Luiz Felipe da Silva Pereira
Guilherme de Sousa Pereira
Geovanna David Gonzaga
Marcos Paulo Santos Prado
Padrões de Arquitetura
● Definição: padrões de arquitetura são soluções estruturais para problemas comuns no
design de sistemas de software.

● Determinam a maneira como a estrutura do projeto inteiro é organizada.

● Facilitam a manutenção, escalabilidade e promove as boas práticas de


desenvolvimento.
Arquitetura em Camadas
Arquitetura em camadas é um padrão que organiza o sistema em níveis, onde cada um tem
uma responsabilidade específica. Exemplos:

● Apresentação: interface comunicando com o usuário;


● Aplicação: lógica do aplicativo, contendo possíveis validações;

● Domínio: estruturação dos modelos de dados e métodos de acordo com a regra de

negócio;

● Persistência: camada de conexão com o banco de dados, recuperação de

informação;
Arquitetura em Camadas
Model-View-Controller (MVC) e aplicação no TutorMatch

● Model (Modelo): Representa os dados e a lógica de negócios. No TutorMatch, seria


responsável por representar entidades como "Aluno", "Monitor", "Monitoria", e fazer as
interações com o banco de dados.

● View (Visão): Exibe a interface gráfica para os usuários (alunos e monitores),


apresentando as telas de login, busca de monitores, agendamento de monitorias, etc.

● Controller (Controlador): Garante a lógica da aplicação, processa as requisições dos


usuários e interage com o Modelo para entregar os dados à View.
Model-View-Controller (MVC)
Event-Driven Architecture (EDA)
Definição: EDA é uma arquitetura onde sistemas reagem a eventos, que são mudanças no
estado do sistema (ex.: "novo pedido", "pagamento aprovado").

● Produtor: É a parte do sistema que gera e emite eventos quando algo acontece.
● Consumidor: É a parte do sistema que recebe os eventos e realiza ações em resposta
a eles (ex.: confirmar um pedido).
● Broker: Um intermediário que distribui e gerencia o fluxo de eventos entre produtores
e consumidores, facilitando a comunicação.
Event-Driven Architecture (EDA)
Microsserviços
● Definição: Microsserviços é um estilo de arquitetura para o desenvolvimento de
aplicativos.

● Permitem que um aplicativo grande seja separado em partes independentes menores,


com cada parte tendo sua própria responsabilidade.

● Para atender a uma única solicitação do usuário, um aplicativo baseado em


microsserviços pode chamar muitos microserviços internos para compor a resposta.

● Cada microsserviço é responsável por uma função específica do sistema


Microserviços
● Os microseviços se comunicam com outros serviços por meio de APIs ou protocolos
leves, como HTTP/REST ou mensageria.

● Essa abordagem permite que cada serviço seja desenvolvido, implantado e escalado
de forma independente

● Vantagens: Promovendo maior flexibilidade, manutenção e resiliência no sistema


como um todo

● Exemplo: Autenticação e autorização; processamento de pagamentos


Microserviços
Padrões de Projeto
● Definição: padrões de projeto são conceitos que fornecem soluções eficientes para
problemas comuns em nível de código.

● Permitem a organização da interação entre objetos, escalabilidade maior e facilita


manutenções posteriores.

● Um mesmo projeto pode ter mais de um padrão aplicado.


Singleton (Padrão Criacional)
Um padrão de projeto criacional que garante que uma classe tenha apenas uma
única instância em todo o sistema, oferecendo um ponto de acesso global a essa
instância.

O padrão Singleton pode ser aplicado no TutorMatch para garantir que haja uma
única instância de certas classes que devem ser globais ao sistema, como:

● Gerenciador de Sessão de Usuário: Uma classe que controla a sessão de login e logout dos alunos e
monitores. O Singleton garantiria que haja apenas uma instância dessa sessão ativa por vez para cada
usuário.
Diagrama padrão Singleton aplicado ao Gerenciador de
Sessão de Usuário
Factory Method (Padrão Criacional)
Factory Method é um padrão criacional de projeto que fornece uma interface para criar
objetos em uma superclasse, mas permite que as subclasses alterem o tipo de objetos que
serão criados.

Principais Características
● Interface de Criação: O padrão define uma interface para criar objetos, permitindo que
as subclasses implementem a lógica de criação.
● Desacoplamento: O código que utiliza os objetos não precisa conhecer detalhes
sobre como os objetos são criados. Isso reduz o acoplamento entre as partes do
código.
● Flexibilidade: Novos tipos de objetos podem ser introduzidos sem modificar o código
que usa a interface, apenas criando novas subclasses.
Aplicação do Factory Method no Tutor Match
● Criação de Perfis: Podemos usar o Factory Method para criar diferentes tipos de
perfis (mentores e alunos). Em vez de ter um código fixo que gera perfis de maneira
estática, teríamos uma classe que determina qual tipo de perfil criar com base nas
necessidades do usuário.
● Correspondência de Mentores e Alunos: Ao implementar a lógica de
correspondência, podemos criar uma interface para a busca de mentores. Dependendo
da área de interesse do aluno (por exemplo, ciências, artes, tecnologia), a fábrica
decidirá qual algoritmo de correspondência utilizar.
● Feedback e Avaliações: Quando um aluno termina uma sessão com um mentor,
podemos ter diferentes tipos de feedback ou avaliações. A fábrica pode criar o tipo de
avaliação apropriada, dependendo do tipo de interação ou do nível do curso.
Observer
● Definição: É um padrão que permite que um objeto (sujeito), notifique uma lista de
objetos dependentes (observadores), sobre quaisquer mudanças em seu estado

● Implementação: O sujeito deve manter uma lista de observadores e fornecer métodos


para adicionar e remover observadores dessa lista

● Quando o estado do sujeito muda, ele chama um método notificar em cada observador
na lista, passando informações relevantes sobre a mudança de estado
Observer
● Os observadores implementam uma interface comum que permita ao sujeito
notificá-los e atualizá-los sobre as mudanças de estado

● Cada observador pode então atualizar seu próprio estado com base nas informações
fornecidas pelo sujeito.
Observer
Decorator
● Definição: Permite adicionar funcionalidades a objetos de forma flexível e dinâmica,
sem alterar a estrutura da classe original

● Classes decoradoras "envelopam" o objeto original, fornecendo comportamentos


adicionais, seguindo o princípio da composição, onde objetos podem ser compostos de
outros objetos para estender suas capacidades.

● Vantagens: Extensibilidade Flexível; Uso de Composição; Separação de


Preocupações

● Desvantagens: Complexidade Aumentada; Dificuldade de Depuração; Criar Muitos


Objetos
Decorator

Você também pode gostar