00:00:00
[Música]
00:00:08
eu sou o professor Marcelo Fantinato
00:00:10
Esta é a disciplina de engenharia de
00:00:12
software e Nesta aula nós vamos falar
00:00:14
sobre estilos arquiteturais bom se você
00:00:19
por acaso acabou de ver a aula anterior
00:00:21
você deve se lembrar que eu falei sobre
00:00:24
padrões de software padrões
00:00:26
arquiteturais ou estilos arquiteturais
00:00:29
mencionei que nós falaríamos disso numa
00:00:31
aula posterior e é justamente nessa aula
00:00:34
que nós vamos falar sobre isso sobre os
00:00:35
estilos arquiteturais e o que são então
00:00:39
estilos
00:00:41
arquiteturais estilos arquiteturais são
00:00:43
também chamados de padrões arquiteturas
00:00:46
né Eu já havia mencionado estilos
00:00:48
arquiteturais ou padrões arquiteturais
00:00:50
padrões e arquitetura estilo e padrão é
00:00:53
mais mais ou menos usado como sinônimo
00:00:56
alguns autores diferenciam mas em geral
00:00:58
é usado como se fosse sinônimo Mas o
00:01:01
mais importante é para que serve eles
00:01:04
são usados para apresentar compartilhar
00:01:08
e
00:01:09
reusar conhecimento sobre arquiteturas
00:01:12
de sistemas de software enfim ah com o
00:01:16
passar do tempo muitos profissionais
00:01:19
muitos Engenheiros de software foram
00:01:21
desenvolvendo projetando arquiteturas de
00:01:23
um software projetar na arquitetura de
00:01:25
outro software e com o passar do tempo
00:01:28
eles perceberam que muitas arquiteturas
00:01:30
de software eram parecidas entre si
00:01:33
Claro que não todas do mundo inteiro mas
00:01:35
para um tipo de software as as
00:01:39
arquiteturas de software eram parecidas
00:01:41
entre si para outro tipo de software as
00:01:43
arquiteturas deles eram parecidas entre
00:01:45
si então um estilo arquitetural é uma
00:01:49
forma de você documentar essa
00:01:52
arquitetura de uma forma que você possa
00:01:55
apresentá-la compartilhá-la e
00:02:00
sempre que for eh apropriado Então essa
00:02:03
é a ideia de um estilo arquitetural bom
00:02:07
ah existem vários estilos arquiteturais
00:02:11
já documentados na literatura por
00:02:14
profissionais né é como se fosse um tipo
00:02:16
de uma boa prática que pode ser seguido
00:02:19
em vez de você pensar Ter que pensar do
00:02:22
zero você segue um exemplo de alguém que
00:02:25
já seguiu e de certa forma já disse olha
00:02:28
funcionou já o dier isso várias vezes
00:02:31
siga também que eh é o Caminho das
00:02:34
Pedras
00:02:36
Ah bom E aí ah alguns eh eh dos mais
00:02:42
famosos eh estilos arquiteturais
00:02:45
documentados na literatura estão
00:02:47
listados aqui nesse slide eh o mais mais
00:02:51
famoso né é possível que vocês já tenham
00:02:53
ouvido falar é o mvc o Model vi
00:02:57
Controller ou do português modelo eh
00:03:00
visão controlador ah essa sigla mvc ela
00:03:04
é bastante conhecida na engenharia de
00:03:06
software muita coisa é feita em função
00:03:09
desse padrão arquitetural é possível
00:03:12
mesmo é possível até que vocês já tenham
00:03:14
usado alguma coisa relacionado ao mvc e
00:03:18
eventualmente nem saibam que é é um
00:03:20
estilo arquitetural mas é um estilo
00:03:23
arquitetural outros talvez já saibam né
00:03:26
que é um estilo arquitetural legal ah
00:03:29
mas também existem outros estilos
00:03:31
arquiteturais propostos documentados na
00:03:34
na literatura por exemplo a arquitetura
00:03:36
de repositório Ahã Arquitetura em
00:03:39
camadas o padrão cliente servidor que
00:03:42
também é bastante famoso né Eu acho que
00:03:44
todo mundo já ouviu falar em cliente
00:03:46
servidor em arquitetura cliente servidor
00:03:49
eh e também arquitetura duto e filtro eh
00:03:54
eu vou vou mostrar para vocês aqui eh
00:03:58
alguns exemplos bas basicamente eh Mais
00:04:01
especificamente o mvc a arquitetura em
00:04:03
camadas e a arquitetura duto e filtro
00:04:07
certo eh e no material de vocês vocês
00:04:10
têm acesso a todas essas em outras
00:04:14
referências em outros livros em artigos
00:04:17
vocês vão eh em sites da internet vocês
00:04:19
vão eventualmente encontrar outros
00:04:22
estilos arquiteturais A ideia é sempre
00:04:25
pensar bom para esse tipo de software
00:04:27
que eu tô estou desenvolvendo qual Qual
00:04:29
é o melhor estilo arquitetural na
00:04:32
verdade existe algum estilo arquitetural
00:04:35
que se aplique e Se sim qual é o melhor
00:04:39
caso exista mais do que um bom vamos dar
00:04:42
uma olhada eh primeiramente no que é
00:04:45
chamado do padrão mvc bom primeiro que
00:04:48
um estilo arquitetural ele é sempre
00:04:51
apresentado como um resumo eh similar a
00:04:55
esse que está aqui na tela agora tá
00:04:59
então então e na verdade isso vai mais
00:05:02
do que um padrão arquitetural mas um
00:05:04
padrão de software de uma forma geral e
00:05:07
nós vamos ter uma aula também de uma
00:05:09
para tratar de padrões de software de
00:05:10
uma forma geral e vocês vão ver que
00:05:12
Normalmente eles são apresentados assim
00:05:14
numa forma de uma tabela nesse caso aqui
00:05:17
então está sendo apresentado o padrão
00:05:19
mvc
00:05:21
e E aí sempre tem o nome obviamente e
00:05:25
depois uma
00:05:27
descrição as letrinhas pequenas aqui
00:05:30
porque não caberia tudo ah no slide mas
00:05:33
eh lendo rapidamente aqui para vocês
00:05:35
nesse caso eu acho interessante ler o o
00:05:38
a descrição dele pro mvc particularmente
00:05:41
para vocês entenderem né Em que formato
00:05:45
aparece os objetivos a descrição a
00:05:47
finalidade de um padrão arquitetural
00:05:50
vejam bem olha separa a apresentação e a
00:05:54
interação dos dados do sistema então
00:05:57
separa o que é apresentação
00:06:00
dos da dos dados do sistema apresentação
00:06:03
em cima dados embaixo o sistema é
00:06:05
estruturado em três componentes lógicos
00:06:08
que interagem entre si o componente
00:06:11
modelo né modelo visão controladora mvc
00:06:15
O componente modelo gerencia os dados do
00:06:18
sistema e as operações a eles associadas
00:06:21
o componente visão define e gerencia
00:06:24
como os dados são apresentados ao
00:06:26
usuário e o componente controlador
00:06:29
gerencia e a interação do usuário por
00:06:31
exemplo pressionamento de teclas cliques
00:06:34
de mouse e passa essas interações para o
00:06:37
visão e modelo aí tem aqui ver figura 6
00:06:40
6.5 porque is isso aqui é retirado do do
00:06:43
do livro que eu uso com vocês então aqui
00:06:46
tem uma descrição normalmente essa
00:06:48
descrição se você não conhece se você tá
00:06:50
lendo pela primeira vez ela não vai te
00:06:52
ajudar muito né vai te dar uma ideia o
00:06:55
que tá dizendo aqui é vamos dividir o
00:06:57
sistema em três grandes partes em três
00:06:59
grandes eh componentes eu ia falar
00:07:02
camadas mas não são camadas por quê
00:07:03
Porque não fica uma em cima da outra
00:07:05
existe um modelo em camadas que eu vou
00:07:07
falar depois que aqu ele sim é uma em
00:07:09
cima da outra mas aqui eu já vou
00:07:11
adiantar Olha o modelo tá vendo os três
00:07:13
componentes interagem um com os outros
00:07:16
dois então não são camadas não é correto
00:07:18
falar que são três camadas são três
00:07:21
componentes vejam que o controlador se
00:07:23
comunica com o modelo o modelo se
00:07:25
comunica com visão e o visão se comunica
00:07:26
com o controlador certo eh voltando para
00:07:30
cá então A ideia é que o padrão ele vá
00:07:34
além né ele vai ter o exemplos que é
00:07:36
justamente esse exemplo que eu mostrei
00:07:38
aqui para vocês no slide seguinte quando
00:07:40
ele é usado quando há várias maneiras de
00:07:43
visualizar e interagir com os dados
00:07:45
Então você tem um conjunto de dados mas
00:07:47
você pode visualizar de uma forma você
00:07:49
pode visualizar de outra você pode
00:07:51
interagir com esses dados de uma forma
00:07:53
de outra então a forma de gerenciar os
00:07:56
dados no banco de dados é padrão Mas
00:07:58
você pode visualizar esses dados de
00:08:00
diferentes formas Então você quer
00:08:02
separar essas formas você quer separar
00:08:05
no seu software quem vai controlar os
00:08:08
dados e quem vai apresentar e manipular
00:08:11
os dados Então você vai fazer essa
00:08:13
separação
00:08:15
Ah E aí vai ter algumas vantagens
00:08:18
algumas desvantagens vou pular essa
00:08:20
parte tá nós eh eh deixo para vocês
00:08:23
olharem com mais detalhes Mas então aqui
00:08:25
olha
00:08:26
só o modelo tá o componente modelo é que
00:08:30
vai tratar eh dos dados propriamente
00:08:33
dito ele vai encapsular o estado da
00:08:36
aplicação ele é que vai gerenciar os
00:08:39
dados e ele vai
00:08:41
notificar o componente visão que é quem
00:08:45
apresenta os dados na interface de
00:08:48
usuário sempre que houver mudança de
00:08:51
estado sempre que houver mudança de
00:08:53
dados certo ah e o e a visão também faz
00:08:57
a consulta do Estado então o visão por
00:09:00
sua vez consulta para saber se houve uma
00:09:02
mudança de estado e o modelo por sua vez
00:09:05
sempre que houver a mudança ele também
00:09:07
notifica o a
00:09:09
visão E também temos o controlador que
00:09:13
mapeia as ações do usuário com
00:09:15
atualizações do modelo então o
00:09:18
controlador é o componente que vai
00:09:20
mapear sempre que houver uma ação do
00:09:22
usuário com atualizações do modelo
00:09:26
selecionando e a visão de novo Pode
00:09:29
parecer um pouco abstrato num primeiro
00:09:31
momento
00:09:33
mas o o padrão arquitetural ele é
00:09:36
apresentado com mais com com com
00:09:38
exemplos Aqui nós temos eh aqui é a
00:09:42
arquitetura propriamente dita e aqui Ops
00:09:46
em algum eh nós podemos ter exemplos
00:09:49
eh detalhando essa esse padrão um
00:09:53
exemplo de o o padrão ele vem
00:09:55
acompanhado de um exemplo eh para um
00:09:58
determinado software Arquitetura em
00:10:00
camada sim é aquela arquitetura que é
00:10:02
uma camada em cima da outra de forma que
00:10:05
a a interface com usuário é lá em cima
00:10:10
embaixo é o apoio ao sistema so banco de
00:10:13
dados e existem camadas intermediárias
00:10:16
né ah uma camada intermediária que é a
00:10:20
lógica principal do negócio e uma outra
00:10:23
camada intermediária mais próxima da
00:10:25
interface que é o gerenciamento de
00:10:27
interface com usuário
00:10:30
e Aqui nós temos um exemplo e de
00:10:33
Arquitetura do sistema
00:10:34
iarn em que nós mostramos todos os
00:10:38
componentes que existem no Sistema desde
00:10:41
a interface com o usuário aqui em
00:10:44
cima passando por várias camadas Até
00:10:47
chegar na camada mais embaixo percebam
00:10:50
que por exemplo na camada eh na segunda
00:10:54
camada aqui que é a
00:10:57
camada de lógica principal do negócio
00:11:01
nós temos vários componentes e-mails
00:11:04
mensagens videoconferência arquivo de
00:11:06
imprensa eh processamento de texto
00:11:08
simulação armazenamento de vídeo Enfim
00:11:11
uma série de componentes para dar
00:11:13
suporte a ao sistema ao software e são
00:11:18
componentes de negócio certo enfim é uma
00:11:22
forma de organizar o sistema e nesse
00:11:26
tipo a camada de cima se comunica com a
00:11:28
de baixo o que que se comunica com a de
00:11:30
baixo o que que se comunica com a de
00:11:31
baixo eh fazendo requisições e recebendo
00:11:35
as respostas não há outra forma de
00:11:37
comunicação
00:11:39
Ah e por fim a arquitetura duto e filtro
00:11:43
arquitetura duto e filtro ela é usada
00:11:47
quando você tem um um sistema que é
00:11:51
inerentemente
00:11:53
eh voltado paraa execução de um processo
00:11:58
quando você percebe percebe que o seu
00:12:00
software o seu sistema de software é
00:12:02
bastante voltado paraa execução de
00:12:05
etapas passo a passo então você pode
00:12:08
eh projetar a arquitetura do seu
00:12:11
software no formato de arquitetura duto
00:12:14
e filtro o que isso significa que você
00:12:18
vai organizar os componentes do seu
00:12:21
software não no formato como por exemplo
00:12:25
anterior em que você tem componentes
00:12:29
indo para camadas de baixo que vão
00:12:32
respondendo para de cima que novamente
00:12:34
pede pras de baixo que de novo responde
00:12:36
para de cima mas
00:12:39
sim no formato de componentes que entra
00:12:43
algo aqui processa e entrega pro próximo
00:12:45
entrega pro próximo entrega pro próximo
00:12:47
entrega pro próximo e terminou e não
00:12:50
volta por exemplo esse caso aqui é
00:12:54
um um exemplo de arquitetura para um
00:12:57
duto e filtro para um sistema de
00:12:59
processamento em lotes no caso
00:13:02
eh leitura de faturas e identific
00:13:06
identificação de
00:13:07
pagamentos por exemplo para para uma
00:13:10
empresa de telefonia por exemplo que ou
00:13:12
de companhia de de energia elétrica que
00:13:15
emite fatura você vai fazer a vai vai
00:13:17
receber a fatura você como um cliente
00:13:19
vai pagar e aí
00:13:21
a a companhia vai dar baixa eh dizendo
00:13:25
que que foi realizado o pagamento ou não
00:13:29
então o primeira etapa é ler as faturas
00:13:32
feitas com base nas faturas então chegam
00:13:36
as faturas eh Então essa figura aqui
00:13:39
esse retângulo representa
00:13:42
dados nós temos faturas temos pagamentos
00:13:45
temos recibos e temos lembretes como
00:13:48
dados ah como arquivos de entrada ou de
00:13:52
saída faturas e pagamentos são de
00:13:54
entrada e recibos e lembretes de saída e
00:13:57
a esse esses outros desenhos aí formato
00:14:02
meio de elipse né são os processos
00:14:05
propriamente dito então o primeiro é
00:14:07
entram as faturas existe o processo ler
00:14:10
faturas feitas o resultado de ler
00:14:13
faturas feitas vai para identificar
00:14:16
pagamentos tendo como entrada também os
00:14:19
pagamentos então para para determinadas
00:14:23
faturas os pagamentos que foram feitos O
00:14:27
resultado é emitir fatura
00:14:29
aliás emitir recibos E aí eu tenho a
00:14:32
saída do recibos para aquelas faturas
00:14:34
que foram identificados pagamentos ou
00:14:37
então encontrar pagamentos vencidos que
00:14:40
é para aqueles que não para quem eu não
00:14:43
emito um recibo eu vou encontrar
00:14:45
pagamentos vencidos e emitir lembretes
00:14:48
de pagamento e emito um lembrete de
00:14:50
pagamento de necessidades de pagamento
00:14:53
na verdade né de conta vencida então eu
00:14:56
executei o processo da esquerda para
00:14:59
paraa direita e o processo acabou num
00:15:01
num segundo momento eu começo de novo tá
00:15:04
aquela conta vencida ela vai entrar
00:15:07
novamente como fatura para saber quais
00:15:09
foram os pagamentos que entraram no dia
00:15:11
seguinte e eu executo novamente aquele
00:15:14
processo então vejam dependendo da
00:15:16
natureza do processo esse tipo de
00:15:18
arquitetura ela não vai se aplicar para
00:15:20
um para um para um software como no caso
00:15:23
anterior aqui que era um sistema
00:15:25
e-learning que é um sistema de
00:15:27
aprendizado é virtual que é o sistema
00:15:31
justamente o sistema que vocês usam aqui
00:15:33
na na na na Univesp que é um sistema em
00:15:37
que vocês né o Blackboard vocês se logam
00:15:39
vocês têm uma interface dentro dessa
00:15:41
interface existe uma série de
00:15:44
aplicativos mandar mensagem acessar
00:15:47
vídeo E aí vocês na interface vão
00:15:51
fazendo requisições que vão mandando
00:15:52
pros níveis mais baixos níveis mais
00:15:54
baixos até chegar no software né no no
00:15:57
hardware desculpa e aí voltam as saídas
00:16:00
e vocês ficam nessas interações faz uma
00:16:03
requisição vem uma saída faz uma
00:16:05
requisição vem uma saída é um outro tipo
00:16:08
de abordagem é uma outra forma de pensar
00:16:10
a arquitetura de um software
00:16:13
Ah bom então são três exemplos de
00:16:16
arquitetura existem outros estilos
00:16:18
arquiteturais E vocês como bom
00:16:21
Engenheiros de software precisam ah ter
00:16:24
um bom conhecimento desses estilos
00:16:25
arquiteturais para que quando vocês
00:16:28
estiverem desenvolvendo um novo sistema
00:16:30
de software vocês percebam Ah esse
00:16:33
software aqui é daquele tipo de
00:16:35
arquitetura então eu vou aplicar aquele
00:16:38
padrão
00:16:40
arquitetural Ok é isso então como
00:16:43
referências o nosso já conhecido livro
00:16:46
engenharia de software do Summer viw 10ª
00:16:49
edição de 2018 é isso obrigado
00:16:56
[Música]
00:16:59
k
00:17:04
[Música]