Você está na página 1de 29

UNIVERSIDADE FEDERAL DE VIÇOSA - CAMPUS RIO PARANAIBA

SIN221 – ENGENHARIA DE SOFTWARE I

TEMA 10

Padrões de Software (Padrões de análise,


projeto e arquitetura)

TURMA 2

RIO PARANAÍBA
2023
UNIVERSIDADE FEDERAL DE VIÇOSA - CAMPUS RIO PARANAIBA
SIN221 – ENGENHARIA DE SOFTWARE I

GRUPO 9
Diego Augusto - 8794
Felipe Eduardo - 8813
Igor Freitas - 8167
Victoria Joyce - 7137

RIO PARANAÍBA
2023
3 3
INTRODUÇÃO

Durante o desenvolvimento de um software, algumas situações se repetem


e soluções comuns são usadas para solucioná-las.

Dessa forma, a utilização de padrões no desenvolvimento de software é


estudada amplamente em todas as fases de desenvolvimento

Análise Projeto Codificação Verificação Manutenção


4
DESCRIÇÃO DE UM PADRÃO 4

1. Contexto: Descrição de onde o padrão se aplica.

2.Problema: Descrição do problema que o padrão se propõe a solucionar.

3. Forças: As forças que atuam na formação da solução.

4. Solução: A solução proposta pelo padrão que resolve as forças envolvidas.


PADRÕES DE ANÁLISE 5

• O que são padrões?


São ideias que foram úteis em algum contexto e
que provavelmente permanecerá úteis em
outros.

• O que são padrões de análise?


- São grupos de conceitos úteis na modelagem
de domínios de negócio.
- Podem se aplicar a um único domínio ou a
vários domínios. Fonte: Lecom Tecnologia
- Fornecem soluções para situações que se
repetem durante a análise de sistemas de
software.
PADRÕES DE ANÁLISE 5 6

Catálogo proposto por Martin Fowler:


• Padrões que descrevem relacionamentos definidores
Padrões de Organização e de responsabilidades entre as partes que
Responsabilidade se relacionam. Estes padrões incluem relações
organizacionais e contratuais.

• Considera padrões capazes de registrar fatos sobre o


Padrões de Observações e mundo da área de saúde.
medições

• Fornece padrões que descrevem como um conjunto de


Padrões de Inventário e contas e regras de lançamento podem formar um
Contabilidade sistema contábil ativo.

• Padrões relacionados ao planejamento e registro de


Padrões de Planejamento recursos.
5
EXEMPLO 7

Exemplos de padrões de análise:


Padrões de Inventário e Contabilidade (Inventory and Accounting): Padrão Transaction

Entry
Account 1 • Amount: Quantity 2 1 Transaction

Problema: Garantir que nada seja perdido em uma


conta. Constraint:
• Sum (entries.amount)=0
Solução: Usar transações para transferir itens
entre contas.
5
EXEMPLO 8

Padrões de Planejamento (Planning): Padrão Proposed and Implemented Action

Fonte: Patterns in Software Engineering

Problema: Representar tanto o que se pretendia fazer quanto o que realmente foi feito.

Solução: Usar objetos separados para as ações propostas e as ações implementadas.


PADRÕES DE SOFTWARE 9

Modelos de análise e de projetos são bem parecidos!!

Análise Projetos
Construir
Entender o
uma
problema
solução
6
PADRÕES DE PROJETO 10

• O que são padrões de projeto?

• Padrões de projeto é o mesmo que


algoritmos?

Fonte: Refactoring.Guru
PADRÕES DE PROJETO 11

VANTAGENS EM USAR PADRÕES DE PROJETO

As principais vantagens em usar padrões de projeto são:

• Fornecem soluções que já foram testadas e aprovadas;

• Tornam os sistemas mais fácil de entender e manter;

• Torna a comunicação entre desenvolvedores mais fácil;


PADRÕES DE PROJETO 12

CATALOGO DE PADRÕES DE PROJETO

Padrões • Criação dos objetos


Criacionais

Padrões • Composição de objetos


Estruturais

Padrões • Atribuição de responsabilidades


Comportamentais entre os objetos
EXEMPLO 13

Exemplos de Padrões de Projetos:

Padrões de Criação: Padrão Prototype

Problema: Necessidade de criar uma cópia


exata do seu objeto, não sendo possível
pela cópia de cada um dos valores dentro
desse objeto, pela possibilidade de serem
privados ou classe não fixa.

Solução: Criação de uma interface comum


para todos os objetos que suportam
clonagem, sendo versátil para objetos de
diferentes classes, sem um método Fonte: Refactoring.Guru
específico para cada uma.
EXEMPLO 14

Padrões de Estruturais: Padrão Adapter

Problema: Sua aplicação utiliza um


formato específico porém uma aplicação de
terceiros, usada como microsserviço, utiliza
outra.
Solução: Criar um adaptador, ou seja, um
objeto especial que converte a interface de
um objeto para que outro objeto possa
entendê-lo.

Fonte: Refactoring.Guru
EXEMPLO 15

Padrões de Comportamentais: Padrão Observer

Fonte: Refactoring.Guru Fonte: Refactoring.Guru

Problema: A notificação sobre ações de um determinado objeto acaba sendo irrelevante para alguns
outros, mesmo que economize a busca de alguma ação pelo objeto observador.
Solução: Criar uma espécie de assinatura, onde a notificação de ação só chegará aos objetos que
necessitem dessa informação.
PADRÕES DE ARQUITETURA 16

- A maneira como modularizamos porções de código e como estabelecemos


ligações entre esses módulos.

-Vantagens

Manutenabilidade: Grau ou facilidade de uma manutenção ser feita na


arquitetura.

Se bem projetada a arquitetura, conseguindo alta coesão e baixo acoplamento,


podemos por exemplo, modificar apenas uma parte em específico sem
impactar outras partes da arquitetura, logo a manutenção acaba sendo menos
cara e danosa á arquitetura
PADRÕES DE ARQUITETURA 17

Reuso: Capacidade de reutilizar partes da arquitetura para criar outros sistemas.


Uma grande parte de um software criado para uma área específica de uma
empresa, pode ser usado em outra área, (esse reuso é mais fácil quando usamos o
padrão de Componentes), porem em um padrão de Camadas, por exemplo, também
conseguimos reutilizar algumas camadas (camadas de persistência, responsável por
salvar os dados de um banco de dados)

Rastreabilidade: Capacidade de encontrar erros ou rastrear o lugar específico onde


determinadas porções de código estão dentro da arquitetura.
Sempre que tivermos um problema relativo a segurança, por exemplo, você vai
procurar direto na parte, módulo, camada ou componente responsável pela
segurança, se o problema for no banco de dados, você vai procurar na camada de
persistência.
PADRÕES DE ARQUITETURA 18

Qualidade: A qualidade de software pode ser vista de duas formas


O grau com que o sistema de software cobre as funcionalidades que o cliente pediu
(funcional).
Ou o grau em que atende as exigências do cliente de maneira (não funcional).
Ao criar uma arquitetura de software, normalmente não há criamos do zero, usamos
padrões, quando escolhemos um padrão, favorecemos determinados atributos de
qualidade, como desempenho, segurança ou tolerância a falhas.

Vocabulário de Diálogo: Ao criar uma arquitetura, nos damos nomes para as partes
principais do software e o time de desenvolvimento pode se comunicar utilizando esses
nomes.
Por exemplo: Um dev pode solicitar uma alteração no componente de “segurança” ou
um ajuste em uma classe na “Interação com o usuário”, ou reportar um bug a
“Persistência”.
PADRÕES ARQUITETURAIS 19

MVC = Model - View –


Controller
MVC é um padrão de
arquitetura de software,
separando sua aplicação em 3
camadas.
A camada de interação com
o usuário (view), a camada de
manipulação de dados
(model) e a camada de
controle (controller).
Fonte: Usando Python
ARQUITETURA EM CAMADAS 20

A arquitetura em camadas é um estilo


arquitetônico monolítico. Ao invés de concentrar
o código em grandes lotes que se comunicam
Camada de Apresentação fechada
entre si, temos camadas de responsabilidade
bem definidas.
Camada de Negócio fechada
Cada uma dessas camadas terá alguma
relação de modularidade e componentes dentro Cama de Persistência fechada
delas. Mas ao longo da mesma categoria de
apresentação, normalmente, esses lotes Camada do Banco de Fados fechada

possuem uma camada de apresentação, uma


camada de negócio para lógica de negócios,
uma camada de persistência para gerenciar o
mapeamento relacional de objetos e o banco de
dados.
ARQUITETURA EM CAMADAS 21

A arquitetura em camadas é uma forma de organizar suas classes. Uma de suas


vantagens é o fechamento de cada uma dessas camadas. Isso significa que as
solicitações que chegam a essa arquitetura devem ir do topo por todas as camadas.
Por exemplo, para chegar à camada de persistência, você precisa ter passado pela
camada de negócios e de apresentação. Ele só aceita solicitações da camada
imediata, logo acima dela.

O objetivo desta arquitetura é duplo.

O principal é agregar todas as coisas semelhantes, ou seja, fazer a separação de


interesses.
ARQUITETURA EM CAMADAS 22

Podemos facilmente fazer uma


alteração sem ter que movimentar Camada de Apresentação FECHADA
todo o código do sistema, o que é
muito bom.do sistema. Camada de Negócio FECHADA
Outra consequência muito útil
dessa arquitetura são as camadas Camada de Serviço ABERTA
de isolamento. Essas camadas
normalmente estão isoladas umas Cama de Persistência FECHADA
das outras e se comunicam por
meio de interfaces bem definidas. Camada do Banco de Fados FECHADA
EXEMPLO 23

Padrão MVC (Model – View - Controller)


- Tradicionalmente usado para
interfaces gráficas de usuário (GUI’s).

- Popular em projetos de aplicações web e


até mesmo aplicações móveis, para desktop
e para outros clientes.

- Feito para separar representações de


informação internas dos modos como a
informação é apresentada para e aceita pelo
usuário, levando ao desenvolvimento
Fonte: Marketing com Digital paralelo de maneira eficiente
24

PADRÕES SÃO UM PONTO


DE PARTIDA, NÃO O
DESTINO.

Fonte: Marketing com Digital


PERGUNTAS 25

Grupo 1: Qual é o processo de aplicação de um padrão de software em um projeto de


desenvolvimento?
Identificação do problema  escolha do padrão  compreensão do padrão  adaptação ao contexto
 Implementação

Grupo 2 e 3: Quais são as melhores práticas para documentar e comunicar efetivamente o uso
de padrões de software em equipes de desenvolvimento?

Grupo 4 - Quando se fala em padrões de projetos, como pode ser implantado a ideia na
hora de execução do código-fonte?
O padrão não é um pedaço de código específico, mas um conceito geral para resolver um problema
em particular. Você pode seguir os detalhes do padrão e implementar uma solução que se adeque às
realidades do seu próprio programa.
PERGUNTAS 26

Grupo 5: Quais padrões de software são fundamentais para que um


desenvolvedor front-end adquira domínio?
Um desenvolvedor de front-end pode se beneficiar de vários padrões,mas padrões de design
centrados no usuário vão ajudar a criar interfaces mais amigáveis, como o padrão de análise
User-centered Design.

Grupo 6: Como os padrões de software contribuem para a manutenção e evolução de


sistemas de software?
Ao aplicar padrões, os desenvolvedores podem criar sistemas com estruturas sólidas e bem
projetadas, facilitando futuras modificações.

Grupo 7: Quais são os padrões emergentes ou tendências recentes no campo de


padrões de software?
PERGUNTAS 27

Grupo 8: Quais são os custos para se ter um padrão de software?


Podemos dizer que para implantar um padrão tem custos pois a equipe de desenvolvimento
vai ter que tirar um tempo para entender, adaptar e implementar o padrão.

Grupo 10: Como a aplicação do padrão de arquitetura de software 'camadas' pode


facilitar a manutenção e a evolução de sistemas complexos de software ao longo do
tempo?

A aplicação do padrão de arquitetura em camadas é uma boa prática pois facilita a


manutenção e a evolução de sistemas. Esse padrão divide um sistema em camadas
distintas,com cada camada tendo uma responsabilidade específica.
REFERENCIA 28

ARQUITETURA em Camadas. Imasters, [S. l.], p. 1-5, 1 jan. 2022. Disponível em:
https://imasters.com.br/arquitetura-da-informacao/arquitetura-em-camadas. Acesso em: 31 out.
2023.

O QUE é MVC? Entenda arquitetura de padrão MVC. Usando Python, [S. l.], p. 1-1, 22 mar.
2023. Disponível em: https://www.usandopy.com/pt/artigo/o-que-e-mvc-entenda-arquitetura-de-
padrao-mvc/#google_vignette. Acesso em: 31 out. 2023.

PADRÕES de Projeto. [S. l.]: Refactoring Guru, 2013. Disponível em: https://refactoring.guru/pt-
br/design-patterns. Acesso em: 30 out. 2023.
REFERENCIA 29

PADRÕES de Análise - Ao desenvolver diferentes sistemas de software, é possível


perceber que algumas. Studocu, 2021. Disponível em:
https://www.studocu.com/pt-br/document/universidade-do-grande-rio/estrategias-de-programacao-
orientada-a-objeto/padroes-de-analise-ao-desenvolver-diferentes-sistemas-de-software-e-possivel
-perceber-que-algumas/7787192?origin=organic-success-document-viewer-cta
. Acesso em: 30 out. 2023.

TAKAI, Osvaldo Kotaro; FERREIRA, João Eduardo. Padrões de Análise. IME-USP, [S. l.], p. 1-
48, 10 ago. 2005. Disponível em: https://www.ime.usp.br/~jef/PA-Introducao.pdf. Acesso em:
30 out. 2023.

Você também pode gostar