o pai sinto um Olá o vídeo eu sou Adolfo
Neto professor da Universidade
Tecnológica Federal do Paraná e eu sou
Gustavo Pinto Professor aqui na
Universidade Federal do Pará e este éo
Fronteiras da engenharia de software um
podcast feito para refletir sobre o
presente e futuro da engenharia de
software Fronteiras da engenharia de
software é um podcast divulgação
Científica que discutir mensalmente
diversificados temas da engenharia do só
os episódios abordam questões
fundamentais Engenheiro software até os
mais recentes avanços na área da
[Música]
olá bem-vindo ao nosso 8º Episódio hoje
contamos com a presença da Ingrid Nunes
que a professora da UFRGS desde 2012 e
atualmente realizam o estágio
pós-doutoral na universidade de rwth
aniversário de técnica da renânia do
norte-vestfália em Arte na Alemanha ela
Doutora pela puc-rio tendo feito
pesquisa na Kings College London na
Inglaterra ou na universidade de
Waterloo no Canadá e na universidade
técnica de Dortmund na Alemanha também
em 2018 a receber o prêmio o tecnólogo e
do Google e trabalhou com desenvolvedora
de software entre 2005 e 2007 Ingrid Tem
trabalhado com abordagem que auxiliam o
engenheiro de software do projeto
implementação e evolução de software
incluindo abordagens automatizadas no
com
os sistemas auto-adaptativos Mais
especificamente atualmente ela tem
pesquisa na área de recuperação de
arquitetura revisão de código moderna e
abordagens alto adaptativas para tornar
sistema de software resilientes e
eficientes
o olá ao vivo parece tá aqui ó
dificultando sua presença e professora
da ufrs bem você pode apresentar para
esquecer eles Contam tudo bem adoro foi
Gustavo Então agradeço então o convite
para estar participando aqui né e fico
muito feliz e parabéns por poder temos
que ativa que você tem tem Face então eu
vou falar um pouco do que não tá no meu
currículo o que que as pessoas não não
vem na internet né então eu tenho se
interesse por computação por
computadores na real desde pequena e
como eu sempre fui bem matemática e
física no colégio eu olhei ali as opções
do vestibular e vou fazer computação sem
saber como como programar e daí o quando
eu tava na minha primeira semana do
curso de computação eu fiz o meu
primeiro programa né que não foi Hello
foi o somar mais B
e e e eu me sentia a pessoa mais
poderosa do mundo porque se a gente
pensar a gente da Computação tem um
poder imenso porque as máquinas tem
muito poder e nós que estão nos
desenvolvedores devemos O que que a
máquina faz a gente pode ter alguém lá
de Business tomando decisões nós são as
linhas que a gente escreve que estão
codificadas então eu me apaixonei então
pela área de computação e daí eu tive
uma experiência como desenvolvedor de
software né temos antigos um dia a gente
falar dinheiro só e com isso eu vi que a
gente acaba às vezes em função do
ambiente desenvolvimento da dinâmica que
a gente tinha a gente fica pagando muito
fogo e eu pensei assim não eu quero
mudar um Eu quero mudar o mundo para
melhor ele foi aí que eu fui para
academia na o interesse na área de
engenharia de só acabei durante a minha
pós-graduação migrando para
os temas muita gente que a inteligência
artificial distribuído acabou aqui a
minha tese de doutorado foi na área de
inteligência artificial na área de
tomada de decisão e explicações também
que o pessoal hoje mais chama de
questões não vou ai ai mas desde que eu
comecei atuar como professora na UFRGS
eu voltei para o mundo da engenharia de
software porque eu nunca tinha perdido o
contato pelo grupo no colo trabalhava
durante o mestrado doutorado era um
laboratório de engenharia de software e
desde então eu Senhor nos últimos oito
anos a na pesquisa mais focada
engenharia de software e eu vou
apresentar né um pouco curtir um pouco
do meu trabalho ao longo desse desse
Episódio 1
E aí
[Música]
[Risadas]
é muito legal a Ingrid esse seu
interesse de arquitetura de software
aparentemente Não entendi agora né então
talvez você seja a pessoa mais adequada
para perguntar o que é que é arquitetura
de software e qual a diferença de uma
arquitetura de software para um design
de software então eu vou começar pela
segunda pergunta né então assim qual a
diferença de design de arquitetura então
Designer em português né a gente fazer o
projeto gente usa a palavra design para
distinguir o projeto design projeto pode
por isso que a gente acaba usando mais o
termo em inglês e essencialmente design
a gente construir modelos que são
representações que Abstrai alguns
elementos do software que foi
desenvolvido ou está sendo desenvolvido
vai ser desenvolvido e a gente pode
criar modelos com diferentes
perspectivas então a gente sempre faz
analogia né
é uma casa eu posso fazer uma foto
abaixo não tem hidráulica uma planta
elétrika e arquitetura faz parte do
projeto de software é uma dessas visões
que a gente faça a e daí o quê que o que
que é arquitetura de software então
existem múltiplas definições na a gente
não tem uma definição que todo mundo que
haja consenso vamos dizer assim Ah e eu
começo do trazendo uma definição que foi
feita por um cientista da Computação
chamado é ela não sei como pronunciar o
nome dele direito que é o Mudes que ele
disse que é um conjunto de decisões que
se tomadas inadequadamente podem levar
ao cancelamento do projeto Então por
essa frase a gente já vê né a
importância do que que é arquitetura e
daí a gente pensa na o quê que estão as
suas decisões tá então baseadas nas
múltiplas definições primeira coisa que
a gente
e assim tá meio padrão quando a gente
passa a arquitetura é a organização e os
ó Então eu tenho um código né o código
normalmente vai ter muitas línguas né
muitas coisas arquivos muitas faixas e
como é que a gente vai organizar isso A
então a gente organiza o soft né um
partes menores que são aquilo que a
gente chama de módulos Então os modos
ele é grupo ao certo de alimentos a
elementos podem ser classes podem ser
componentes podem ser arquivos e podem
ter também sub-módulos entre si Então os
módulos são os agrupamentos é como o fax
o no meu sócio e a segunda coisa a gente
tem as dependências que é dizendo qual o
módulo pode depender de outro qual o
módulo pode acessar outro e como é que
ocorre essa dependências Independência
enterro de código vai ser uma chamada de
um método chamada de procedimento a
possuir um atributo de uma classe de
outro módulo
em uma classe de outro módulo então isso
cria uma dependência porque no instante
que eu queria uma dependência se eu tô
implementando módulo eu vou ter que
conhecer o módulo do colo dependo então
é importante a gente conhecer essas
dependências também e a terceira coisa
né é as propriedades visivelmente
externas ou seja o módulo que a gente
quer que eles estejam componente meio
caixa preta ou seja se eu tô trabalhando
no módulo a e eu dependo do módulo B eu
não quero conhecer as particularidades
internas do módulo B Então as
propriedades visivelmente externas é são
aquelas que o que que eu vou no mundo
externo conhecer do módulo baby então
isso aí pode ser por exemplo uma PM se
eu tiver falando por exemplo de um
serviço na web eu botei então o que que
seria essa propriedade visivelmente
externa não as chamadas que eu vou poder
fazer então para aquele serviço então
quando a gente definir uma arquitetura
pensando desse ponto de vista
a estrutural o que a gente vai ter são
justamente esses módulos com as
dependências e sabemos como eles podem
se conversar através dessas propriedades
visivelmente externo e eu vou dar um
exemplo assim de como isso é importante
como levar em consideração arquitetura
fascinante a gente Visa evite bugs no
futuro só imagina um sistema tradicional
onde que a gente tem três módulos né
organizados hierarquicamente é o que a
gente chama de camadas onde que a gente
tem a um módulo de viu o módulo de Bis
eo módulo de de data né de resistência
eu ouviu é a interface do usuário mesmos
né é o do Ali os domínio né
desobstruídas que a gente tem ir a gente
tem um módulo de data que é quem vai ser
responsável por persistir aqueles lados
então normalmente a gente passa por
esses três modos chega a requisição do
usuário passa pelo Rio vai para o mesmo
e não vai para persistência agora
o jogador desavisado não sei que não
segue arquitetura ele pode receber uma
chamada navio em vez de passar pelo pelo
módulo de Minas mas ele faz direto uma
persistência sem passar pelo mesmo só
que no Business normalmente as regras de
negócios são validadas então o que que
vai acontecer se ele pular uma e do
caminho e alterar o banco de dados
direto ele pode tá me assistindo uma
coisa que vai violar uma regra de
negócio porque não ela não passou a
verificação aí tu tem um Dante aí o blog
é aberto dizendo a regra de negócio não
cumprido aí o que que esse desenvolvedor
vai fazer em vez de corrigir normalmente
a forma de corrigir o problema da forma
certa vai corrigir complementam da regra
de negócio lá na viu daí tu já começa a
fazer uma bagunça no código porque navio
Tem coisas que são divisas e fora isso
vai ter código duplicado porque agora eu
de negócio e vai estar navio e vai estar
no Bis
oi e daí vamos supor que o sistema
evolui a gente muda a regra de negócio
agora a gente vai ter que lembrar que
ela está implantada em dois lugares e
daí às vezes a gente muda no lugar e vai
ter um outro banho porque eu não no
outro lugar não foi corrigido então a
gente vê como como arquitetura né ela
garante uma evolução organizada do
código início leva né a menos bugs ter
mais qualidade e facilitar a vida dos
desenvolvedores convencidos já sei o que
é sofre agora eu como desenvolvedor como
é que eu faço textura de um sistema de
só eu faço do zero tem algum
conhecimento consolidado no qual eu
posso me basear primeira né existem
princípios básicos de engenharia de
software que a gente tem que levar em
consideração em qualquer nível que a
gente esteja trabalhando Então é os dois
princípios de modularização Esse parece
são de interesse então não interessa se
eu tô
a arquitetura se eu tô passando uma
classe se eu tô pensando no método eu
tenho que pensar em modo larização que
que é uma valorização é a é a gente ter
um baixo ou complemento isso significa
sempre que eu tenho duas partes do
software elas tem que se comunicar o
mínimo possível e entre todas as partes
do software e eu também me comunicar com
menor número de outras partes também
porque porque quanto mais partes Eu me
comunico mais Impacto eu tenho quando eu
faço uma mudança se eu dependo de vamos
supor de cinco outros módulos Se houver
uma mudança em cada um desses módulos
pode ser que eu venho módulo quebre
então só aumenta a probabilidade de de
ter que fazer modificações em função nos
outros módulos é isso gera muito
retrabalho então a gente tem que passar
num baixo ou complemento e também numa
alta coesão não seja os elementos do
módulo eles tem que ter relação em
é porque normalmente se eles não tiverem
relação eles vão estar espalhados em
vários módulos eu de novo vou ter que
entender vários módulos para fazer
alguma evolução ou alguma implementação
de alguma coisa e a separação de
interesses mas também tava acostumada
com a coesão é que cada módulo ele tem
que ter uma responsabilidade única então
quando a gente está pensando né a
posição tomar arquitetura a gente pensar
que cada logo que eu tô definido não é
uma partição aleatórias no sistema e sim
é uma partição na qual a gente vai ter
cada caixinha né cada pedaço do software
com elementos relacionados entre si é
que nem por exemplo imagina que eu tenho
uma estante com 5 gavetas e organizar
roupas ali dentro então tem o camiseta
tem um mês tem um calças né e o que eu
vou fazer em cada caixinha colocar sua
camiseta sua calça só nem aí se eu fazer
uma mistura quando eu quiser procurar
uma meia eu vou ter que abrir todas as
gavetas e procurar e-mail de um monte de
camiseta e um monte de cá
o mesmo então a gente quer fazer essa
separação de interesses que foi por
exemplo exemplo que eu dei uma pergunta
falei na pergunta anterior que é não tem
ali a interface do usuário a gente tem a
camada de meses da camada de
persistência isso até permite que a
gente faça alterações no futuro por
exemplo se eu quero mudar o meu
mecanismo de persistência eu posso né
não preciso mexer no sistema inteira ou
se eu quero por exemplo prover duas
formas de interface com usuário por
exemplo uma página Web ou por exemplo um
rap de celular eu tenho mesmo modo de
Bis e eu posso se as diferentes 1100
conectadas por onde que a gente Pati
primeiro a gente parte do princípio
básico de ingerido sofre de uma
coloração e separação de interesses mas
isso um conhecimento mais abstratos que
é difícil da gente a as vezes que uma
pessoa que com menos experiência colocar
esses princípios em prática e daí o que
a gente tem né agora a gente pode partir
também dos chamados isso
os padrões arquiteturais Então são
estilos de textura né aqui são
conhecidos são documentados então por
exemplo Arquitetura em camadas ou
arquitetura mvc que é moda o que o
controle Então a gente tem arquiteturas
que são conhecidas e que eu posso
instanciar elas no meu sistema eu posso
inclusive combinar diferentes estilos
arquiteturais Então existe um livro que
a gente popularmente chamam livro do
possa né E esse livro aí ele tem um
catálogo de termos arquiteturais ele
mesmos padrões acabam aparecendo em
livros básicos de engenharia de software
I e II São os pontos de partidos e fora
isso retomando aquela definição né de
que a arquitetura é o conjunto de
decisões que se tomadas inadequadamente
podem levar ao lançamento do projeto
estas decisões incluem também as
tecnologias que eu vou usar no sistema
eu não vou para fazer a implementação de
parte de interface uma aplicação web
muitas nunca né nunca muito forte né mas
quase sempre a gente não faz não
reinventa a roda e acaba usando os
planos que estão disponíveis E os
treinos normalmente ele ele já
predeterminam o Marco frescura ele já
por exemplo muitos deles já inflamento
arquitetura mvc Então se assume que se a
pessoa usar corretamente que ele
fermenta ele vai ser uma Instância da
arquitetura mvc sendo então é importante
então quando eu fazer uma escolha
tecnológica né para dizer assim a minha
que te tura né tem esses módulos e eu tô
decidindo usar essa tecnologia eu olhar
qual é a textura daquela tecnologia que
ajuda a proposta né Por quem definiu
aquela tecnologia e tentar seguir ela no
meu sistema então é importante ver se a
gente tem essas arquiteturas vamos ver
pré-definidos a questão é muito
É porque ela vem fumar arquitetura ali
debaixo do braço e não teve a gente não
sabe né mas vamos supor que a gente quer
construir o nosso projeto nosso sistema
E aí a gente não tem cumba fazem foi
morto já desse em a textura né para
gente uma forma transparente e o que que
não deveria eu conservadora vai
consideração para construir a
arquitetura desse sol né aí o que que eu
posso me apoiar eu sei que eu voltei os
requisitos do cliente a gente vai tá
falando em Venda já tá falando em
carrinho de compra vai ter os requisitos
não-funcionais aí de segurança
desempenho como é que eu posso associar
né esses problemas esse requisitos que o
cliente está fazendo para o associar com
algum modelo de arquitetura de software
né você falou que tinha baixo de um
catálogo né Tem um catálogo com vários
tipos de cultura eu consigo associar
eles algum tipo de problema requisito
específico
bom então é primeiro foi bastante
importante do mencionar que os
requisitos né porque é quando a gente
pensa na arquitetura a gente pensa não
só nos requisitos funcionais como também
não funcionais então normalmente a gente
assumi né que quando quando a gente está
usando começando um só filho do zero a
gente vai ter uma visão de um produto
que a gente quer desenvolver e a gente
vai ter pelo menos um conjunto de
requisitos Inicial né pelo que compõem
Essa visão de produto pode ser que eu
esteja usando uma uma forma
desenvolvimento onde que eu não quero
desenvolver tudo de cara né a gente vai
fazer primeiro uma interação com o MVP
alguma coisa nessa linha e uma seu é
importante eu tenho uma visão né onde é
que eu quero chegar com esse produto que
eu tô desenvolvendo e Isso inclui
requisitos funcionais e não funcionais
então quando quando a gente tiver
pensando na hora que textura né Eu sim
eu posso partir desses estilos
arquiteturais
é normalmente os estilos arquiteturais
são bem abstratos e a gente pode definir
módulos dentro dele então por exemplo se
eu tenho um módulo de Business eu tenho
que olhar para os meus requisitos
funcionais e pensar quais são o quê que
está relacionado com meu domínio que
tinha dado um exemplo aí do módulo de
vendas né módulo de coisa pode ser de
pagamento módulo de chip em então quando
eu tiver olhando para meus requisitos é
importante olhar para esses esses
interesse como é que são os conselhos e
o que eu quero fazer é a fazer a
separação dos constantes separação dos
interesses então é importante né o olho
para os meus requisitos e vou olhar
então esses interesses e pensar como eu
vou para adicionar uma coisa que eu
coloco muito importante é que a gente às
vezes tende a pensar proceduralmente e
eu já vi as vezes algumas pessoas
começar falando da arquitetura em termos
de fluxo de como a informação vai para
pagar no sistema e não
Oi gente faz uma arquitetura arquitetura
a gente tem que olhar de uma forma mais
de agrupamento mesmo assim é então assim
não é porque eu vou caminhar lido o
primeiro faço o carrinho de compras para
depois fazer o login é a gente pensar
nos interesse e daí a gente determina o
nosso nosso os nossos modos e tem junto
daí eu sei quisitos não-funcionais que
então a isso que você acredita
Associados com seguranças Associados até
formas a é importantíssimo eu considerar
nesse momento você que Deus não
funcionais porque às vezes a gente não
tá só neles no momento da arquitetura se
eu for deixar para pensar depois a o meu
sistema não vai dar suporte aí se você
quiser se não funcionais por exemplo se
eu tô preocupada com performance eu
tenho que pensar na arquitetura que seja
instalado se eu tô querendo rodar o
nosso sistema de forma distribuída ou
por exemplo querer poder substituir
o meu só tem que baixar o meu sistema
inteiro e subir ele de novo eu tenho que
passar uma costura que me permita fazer
isso pois então como arquitetura de
microserviços a se eu tô fazendo um
sistema por exemplo que eu preciso fazer
auditoria que isso até uma coisa super
importante hoje em dia a gente pega as
leis europeias né que não tem a Judy PR
a luz sistemas que tomam decisões
automatizadas hoje em dia se pede muito
para a gente ter a a explicar a
habilidade do sistema a gente poder
entender né como é que o sistema chegou
naquela decisão então se eu preciso
conseguir auditar todos os espaços hoje
eu tenho que pensar na hora de definir a
arquitetura como é que isso vai ser vai
ser feito como é que eu vou capturar
isso por isso que eu posso definir que
eu preciso usar orientação aspectos para
poder interceptar certas partes do meu
programa e poder fazer auditoria
posteriormente então é é importante
então eu peço
eu não nego produtos com essas
requisitos né que principais pelo menos
né fui daí com isso eu vou definir os
módulos da minha espessura e como isso
vai funcionar e fora isso né De novo
indo para a experiência né com
desenvolvimento de sistemas existem
certos domínios de aplicação que são
recorrentes Então a gente tem ali
aplicações celular ou jogos o sistema de
comer então estes sistemas aí a gente
tem arquiteturas que são ontem que
normalmente são utilizadas esse tipo de
sistema e até mesmo a gente pode
procurar faremos mas não de Independente
de domínio né mas de domínio específicos
e já re usar esses outros setores então
é é importante não considerar todos
esses requisitos na concepção da
arquitetura é olhar né os sistemas e
tentar aprender falando com sistemas
semelhantes como eles foram
implementados usar experiência do
e eu sempre tenho arquitetura no meu
software ou existem sistemas em que a
arquitetura tão simples a ponto de o
nome preocupar então assim essa pergunta
é é um pouquinho vamos dizer complexo né
primeiro a gente pensa assim o que que é
um sistema muito simples são por exemplo
eu já implementei o sistema para mim que
era uma classe que era para gerar um
irmã endereço muitos anos atrás que era
simplesmente eu gostava uma hora o
intervalo e uma um barulho que o sistema
me falar então era uma carta só né Eu
preciso de uma professora para isso eu
não ia evoluir aquele sistema era uma
coisa simples né então arquitetura né
ser uma classe né então não deixa de ser
um arquitetura um sistema simples como
como esse não é um algo para uso pessoal
eu sei que não vai evoluir que vai ser
pequeno né eu posso não é não pensar na
arquitetura mas mesmo assim
o mesmo sendo um sistema só com uma
classe né todo sistema tem uma
arquitetura porque simplesmente o
sistema de uma classe e simplesmente o
único módulo sem comunicação com ninguém
né e e provavelmente Existe coisas ali
dentro então todo o sistema tem uma
textura mesmo que a gente não conheça
mesmo que ela não seja planejada porque
isso vai emergir no instante que eu
tenho vários componentes no meu sócio
várias classes e eu começar a organizar
eles por exemplo um pacotes isso vai
determinar a arquitetura porque eu vou
ter os pacotes Botei as dependências e
isso é uma setor então todo o sistema
tem que sempre é uma uma arquitetura
mesmo que também colisão como nem
particiones offering pacotes eu vou ter
uma arquitetura não é monolítico lá
simplesmente um não vai não vai existir
coisas não não vai existir acoplamento
pensando numa logo né mas é uma
arquitetura é também né então assim mas
falando lá da questão do sistema tão
simples
é daquele sistema tão simples né que é
só uma classe para o meu uso pessoal né
ok né então assim não vou pensar muito
na arquitetura mas se a gente tiver
pensando no sistema aqui é para entrar
em produção eu botei múltiplos usuários
você a gente tá falando novo sistema
pequeno que não é uma classe muda quando
a gente fala às vezes tem lá mil linhas
de código é pequeno se a gente passar
aqui só um produto um produto
normalmente vai resolver então alguém
pode dizer assim não sistema é pequeno
eu não preciso organizar ele porque o
código ele é gerenciável não há para aí
o sistema evolui no Lago Hoje ele tem
medo daqui algum tempo ele pode ter
muito mais que isso então é importante
já mesmo e sistemas simples eu
considerar arquitetura a gente começa a
pensar no futuro até porque né se a
gente pensar a mudança da arquitetura de
um sistema tem um grande Impacto então
por exemplo se eu tô definindo um fluxo
né quando a gente definir as nossas
normalmente um dia pensa Qual é o fluxo
que
e você quando eu tiver tratando Rick de
sonho então se eu mudar esse fluxo eu
vou ter que rever todas todas todas as
minhas funcionalidades do meu sistema E
isso tem um grande Impacto então ou até
mesmo quando eu tinha falado dos
requisitos não-funcionais a gente começa
a fazer um sistema supersimples não tô
preocupada com três horas mas tô
preocupada com sua habilidade e daí eu
vou ter que fazer depois toda uma
Engenharia e a gente tem casos
conhecidos de hardsoft né grande né que
aconteceu do pessoal para tentar fazer
reengenharia porque chegou num ponto que
ele não evoluirá mais e isso as vezes
fez com que o processo de engenharia
fosse tão complexo que o sofres
atualmente acabou morrendo então às
vezes né O que a gente consegue fazer
fazer uma reengenharia aos poucos para a
gente não perder o tempo de mercado mas
é um processo que é bastante trabalhoso
você antes gostoso porque não adianta
dizer a gente vai fazer refatoração
a caixa de automatizados Isso muda que
textura tu vai tá quebrando o seu set
também a porque vai mudar a gente é
fácil né então então um resumo né como
eu falei uma resposta complicada porque
o que que é simples defina simples né
você tiver pensando em Sistemas trás é
sempre importante a gente pensar na
arquitetura mas principalmente porque
sistema de volume eu acho que a
dificuldade que a gente tem conseguir
entender né E você continente visualizar
textura aqui são Abstrações né me de que
maneira a gente consegue entender melhor
né a gente falou de freio e mofo de que
trazem arquiteturas prontos mas a gente
consegue ver entender essas coisas é eu
como desviador preciso criar modelos
para isso talvez usando o ML ou usando
um diagrama de fluxograma tradicional e
assim eu me preocupo com a evolução
desses modelos como você mesmo diz Hero
ontem te amo' líneas amanhã não se sabe
né então à medida que o código rolou e
eu também tem que ter
a evoluir esses modelos ou Existe alguma
forma mais semi ou completamente
automatizada que a gente possa confiar e
apertar o Play e a gente poder entender
as pessoas no sol bom então da mesma
forma que definição de arquitetura não
tenho um consenso né a forma de
visualizar arquitetura também não tem um
consenso então não existe padrão para
isso né a gente fala eu nunca vi um
artigo que realmente mostrar seu dados
os estatísticas Presidente Isso é
verdade meus popularmente a gente fala
que a ferramenta mais utilizada para
fazer espessura do software é o
PowerPoint que a gente vai desenhar lá
as caixinhas né os quadrados estão
módulos com certinho são dependentes
então é a ser chamada assim decisão é
desculpa atenção não é notação informal
aonde que a gente vai ter normal a gente
faz quadrados para representar os modos
e para representar dependência Às vezes
a gente
o usa posição dos nomes pensando que
modos que estão mais acima são módulos
de abstração mais alta mais próximo do
usuário e os módulos que são mais
embaixo mais próximos da máquina que tem
uma pressão mais baixa e quando a gente
empilha esses módulos a gente tá dizendo
que os móveis que estão acima a dependem
dos módulos que estão abaixo esse eu
tenho sub-módulos dentro de um módulo se
não representa normalmente a gente pode
ter ali a interação entre elementos
daquele nós vamos ser uma notação que é
informal a América e ela tem dois
diagramas que permitem que a gente
represente a prefeitura também um deles
é o diagrama de pacotes e é semelhante
essa noção de quadrados excessos só que
em vez de um quadrado a gente tem o
símbolo de um pacote e a gente tem
também a o diagrama de componentes onde
que é a gente vai ter o símbolo dos
componentes são a gente pensa que os
novos podem ser os nossos componentes EA
gente vai ter comunicar
e é entre esses componentes na interface
requerido entre as frases pro vida como
eu tinha dito na a gente tem a
propriedade visivelmente espera dos
módulos e esse a gente pode pensar que
são essas interfaces né que são as apis
e também né a gente tem as a DL né que
são architecture discutir online diz que
permitem a gente descrever Então os
módulos das portas Independência então é
uma outra forma da gente está
representando arquitetura então assim a
gente tem que pensar que qualquer modelo
né porque é uma abstração da
apresentação do software ela tem o
objetivo da gente comunicada a gente se
organizar e como ela fazer isso no
projeto vai depender da equipe da
experiência da equipe a para decidir
qual é a notação que vai ser utilizada e
tu tinha perguntado também essa questão
não se eu posso automatizar alguma coisa
pensando no sistema que já existe e eu
quero
um deles existem ferramentas servem para
gente extrair visualizar as dependências
que existem no Sistema Então essas
ferramentas elas estraguem eu posso da
ir fazendo rir de uma reverso deve ser
pura para entender entender as
dependências e conseguir agrupar e fazer
algum outro modelo que represente isso
por esse entendimento e também a gente
tem uma área de pesquisa na engenharia
de software que se chamarão de
recuperação de arquitetura aqui tem duas
linhas de trabalho principal uma é a
chamada identificação dos módulos né
então a gente tem os vários elementos do
sofre sejam quatro Israel pacotes e daí
essas abordagens aquelas tendem fazer
novamente o baseado em métricas entender
como é que existe o acoplamento e coesão
entre os elementos para dizer quais são
os novos que existem nos sistemas mesmo
que esses elementos estejam espalhados
no código e também aqui eu tenho um
exemplo contra
O que foi publicado no information um
saco de tecnologia onde que a gente
recuperou as regras então tentar extrair
então a Quais são as dependências que
ocorrem nessa frequentemente então
entender por exemplo naquele exemplo de
arquitetura que eu falei do Business e
data né a gente entender né que o viu
depende do vídeo e subs depende do data
isso recuperar isso automaticamente pena
esse trabalho ele foi bastante curioso
porque a própria representação da
arquitetura é algo que é muito subjetiva
para os desenvolvedores a diferença
envolvedores vão representar a
arquitetura do sistema de forma
diferente a dia e às vezes uma
representação a pode ser mais simples
mas ela não trazem informação exatamente
daquilo que a gente pretende que seja no
código em um exemplo que apareceu nesse
trabalho que a gente tem recuperação de
regras da naturais no
Oi gente tem a dois módulos um módulo
depende do outro mas sempre a festa esse
outro módulo através por exemplo de uma
fachada normalmente desenvolvedores não
ideal Rio depende do Business mas o bis
pode ser uma fachada um conjunto de
interfaces e na real a dependência não é
do viu Para Todas As Faces do Bis e sim
frase interface somente e até nesse
trabalho que a gente conseguiu ver essas
diferenças naquilo que que a nossa
abordagem ela recuperava né a chamada
para a interface não problemas como os
outros pé gente tem um trabalho não
publicado recentemente que a gente fez
uma uma empresa onde que usa
envolvedores fizeram arquitetura né do
sistema não existe documentada
manualmente a gente vai esperou as
regras usando essa abordagem e e a gente
perguntou né o qual o modelo que que é
melhor para a gente implementar e
captura melhor essas informações e ele
bom então assim às vezes eles dizem que
o deles tá certo o nosso tá certo é o
nosso tá um pouco melhor então a gente
tem que pensar que às vezes a gente
precisa de diferentes níveis de
abstração então uma para entender o
código como um todo o outro eu preciso
de regras mais específicas para saber
como de fato eu vou implementar isso
tudo né é pesquisa atual né então
existem vários trabalhos nas áreas de
recuperação de arquitetura bom e também
é o último ponto com relação a essa
pergunta né a gente tem que pensar que
arquitetura ela não é usada somente na
concepção do projeto sistema evolui
arquitetura pode eventualmente ter que
evoluir então a importância da gente ter
essa representação visual é ter ela
conhecida e também garantir que ela seja
a respeitada né então é é um modelo tem
que ser o largamente disseminada entre
os desenvolvedores a para quê
eu consiga seguir aquela Arquitetura em
termos de a implementação textura que
todo mundo algumas formas de visualizar
uma coisa que a gente não falou ainda
como é que a gente avaliar a qualidade
dessa arquitetura né as partes do
versículo que as pessoas sabem
implementada mas talvez não pegar sempre
o caso né então de que forma que eu
consigo inserir avaliar medir a
qualidade da minha arte textura né
novamente eu tenho que fazer isso de
forma empírica ou existe algo
ferramental que me ajuda a ter alguma
noção então assim é tem duas questões
aqui uma questão é a qualidade da
arquitetura em si então pensando assim
projetando arquitetura eu quero saber se
é uma arquitetura bolo bom para eu saber
se aquela arquitetura arquitetura do
outro tem de olhar então para
acoplamento e coesão que a modularidade
do
e aqui vai em um sistema vai ter
impulsão daquela arquitetura que eu
defini e também na separação de
interesses para ver se realmente os
novos Netão os interesses estão
colocados em modos diferentes nem sempre
isso é possível a gente tem o chamado os
quais que eu tenho conselhos que são
aqueles função as preocupações que estão
espalhadas no código blog em um exemplo
típico né Mas a gente pode passar não eu
vou usar aspectos então para modularizar
isso então a gente tem que trabalhar
textura a gente tem que olhar para o
corpo amento coesão separação de
interesses e a gente tem métricas para
avaliar isso então uma vez o sistema
implementado né eu vou conseguir coletar
essas métricas e isso vai estar
relacionada então qualquer idade da
minha arquitetura o outro ponto é saber
né o meu sistema Será que ele tá de
acordo com aquela textura que eu
definido bom E daí isso é algo que é
muito importante
uma coisa que até curiosa nesse trabalho
que eu comentei sobre as regras
arquiteturais teve uma vez que a gente
se meteu o artigo E como foi para um
diurno né veio veio a revisão e um dos
revisores são assim água seus assumir
aqui que os módulos são os pacotes do
sistema e nem sempre isso é verdade que
às vezes os elementos estão distribuídos
né e o pacote né Não não é exatamente
aquele Não Está capturando todos os
males daquele modo só que você gente
pensar assim de nada adianta ter um
modelo de arquitetura dizendo que os
meus módulos são esses se o que eu tenho
no meu código é outra coisa indo para o
exemplo a das gavetas eu digo a sem olha
na gaveta a tem tem camisetas na gaveta
besta em falsas na gaveta ser tem mês só
que na verdade está tudo misturado então
não adianta nada Hotel meu modelo
estrutural se aquilo que está
implementado não vale a
o dom é isso é justamente até a
diferença né do do que a gente chama de
arquitetura conceitual e da arquitetura
concreto então estrutura conceitual é
aquela que a gente planeja né Ia
concreta é que existe de fato então eu
entendesse que textura concreta é
fundamental né para eu saber como que eu
tô consistente com a minha arquitetura
eventualmente eu tenho que evoluir uma
modelo Tem que olhar as discrepâncias
entre os dois né e saber o que que tá
certo que tá errado e daí eu uma vez que
eu tenho alguma coisa implementada que
não é aquilo que eu tinha planejado o
que eu tenho que fazer decidir Será que
amanhã implementação tá evoluiu eu
esqueci de documentar a regra ou
realmente a implementação tá errado e eu
tenho que eu tenho que arrumar o meu
sistema mas daí como é que agente faz
para evitar né que baseado numa
estrutura conceitual a gente siga isso
no código bom uma coisa é a gente usar
as ferramentas
se distrair visualizado as dependências
como eu já tinha comentado a e daí assim
eu tenho o meu desenho de arquitetura e
eu vou encher gata as dependências que
estão acontecendo no código estão de
acordo com aquilo que eu tinha mudado a
inclusive essas ferramentas elas
permitem a gente customizados vezes
essas então eu poder dizer assim que a
classe desse pacote não podem fazer
chamadas não podem depender de quase
todo o pacote daí aterramento lá e vai
gritar um alerta de vendo ó isso aqui tá
errado de acordo com a regra que tu
especificou A então isso isso ajuda a
gente garantir né que os moradores não
estão quebrando arquitetura o mesmo se
passa com a própria assadeira naquele já
tinha comentado também aqui tá escrito
online gratis aulas permite a gente
especificar essas regras não existem
ferramentas que permitem validar como
validar o que foi especificado como que
tá implementado também né assim a ideia
de arquitecto
que são as abordagens que normalmente
olham para o código está em uma
arquitetura então seu visualizar aquelas
criaturas ver que ela não parte acordo
com que eu planejei também eu posso
identificar problemas e tem ainda as
abordagens né que detectam violações
arquiteturais um trabalho que foi meio
Pioneiro nessa área de a bem conhecidos
são chamados reflexão olhos eles
justamente eles têm as regras né e pegam
que tá não pode me ver quando tem uma
dependência e a proibida e que aparece
no código ou uma dependência que era
obrigatória que não aparece no código e
isso vai também gerar Alerta Então essas
ferramentas elas servem justamente para
perguntar isso mas nossa que é um
problema na área de arquitetura é que
enquanto a gente fala em coisa em
questões de nível de educação mais baixa
do código e a gente tem um monte de
Bornes e os ideias já colocam de forma a
vamo
e já embutida ali a gente não precisa
ficar selecionando a ferramenta para ver
isso na arquitetura não existe isso
arquitetura Depende muito da prótese da
desenvolvedores quererem pensar na
arquitetura e querer respeitar seguro
uma iniciativa mais recente para ajudar
isso é o jpms né que eu já vai quatro
formas morte o sistema que ele permite
Então essa definição de módulo Porque
até então por exemplo em Java a gente só
tinham os pacotes né E daí com isso a
gente pode informar o que que a gente tá
escutando o que que tá visualizado
visualizável fora daquele módulo o que
que o que que ficou escondido Então foi
uma iniciativa bastante legal para
tornar né o essa essa noção de
arquitetura e módulos explícito no
código né porque é fundamental quando eu
penso na prefeitura não só dizer assim
olha que o meu modelo que bonito aí eu
olhar esse modelo e pensar como e as
Abstrações de modo tão apa
bom então isso é importante ser definido
então pensar como é que ela arquitetura
tá disfarça sendo implementado no código
porque de nada adianta ter um modelo que
não corresponde que tá no código né e
seu olho modelo eu não vou entender o
código se ele tiver em divergência entre
ser muito bom muito bom e agora o que eu
quero saber Ingrid é como arquitetura de
software evolui ao longo do tempo em um
sistema de sol não eu tinha falado um
pouco de evolução antes não é que não é
uma coisa que é bastante fácil mas assim
arquitetura não é assim sistemas evoluem
a inevitável a gente sabe né que
requisitos mudam mudam a toda hora né e
assim arquitetura é importante a gente
tem carré né cansar lá na frente né
porque o curso como eu falei da de
evoluir uma arquitetura né mudar por
exemplo um controle do fluxo é tem um
impacto né bastante grande no sistema
então né é uma se eu tiver volume no meu
sócio é sem
e hoje eu pensar se eu vou precisar
rever as minhas dependências se eu
preciso rever os meus módulos por
exemplo tem um módulo que começou a
crescer muito de tamanho e aí eu posso
pensar e vejo que ele não tá mais muito
coeso que ele tá muito ocupado eu posso
decidir então quebrar esse módulo e
revistas Independentes então quando eu
tiver evoluindo o sistema é importante o
sempre está refletindo sobre essas
questões estruturais até isso eu tenho
os trabalhos mais recentes sem revisão
de código isso inclusive ela é algo que
a revisão de código ajuda muito porque
às vezes o desenvolvedor a gritar por
causa implementar aquilo que ele precisa
fazer o corrigir o bug e muitas vezes os
revisores de código às vezes levantam
essas questões com relação à arquitetura
tem uma visão mais mais Global daquilo
que está sendo modificado a e a gente
tem que cuidar muito para quero
e não fique na panejada arquitetura
conceitual não fique muito não fique
detergente da da Concreto que se eu não
tiver pensando na evolução da
arquitetura ao longo do tempo eu vou ter
uma evolução na organizada né que não
está sendo planejada então a arquitetura
ela pode modificar sem outra pensando
nela né pois como eu falei né todo
sistema tem um arquitetura e eu comece a
criar dependências uma complemento muito
forte né pela evolução dos sistemas e
com isso vai criança essa divergência
entre a estrutura conceitual e concreto
e a gente não quer isso que a gente quer
não é sempre quando a gente tiver
mudando a prefeitura eu faça isso de uma
forma consciente né então assim existe
uma regra básica né que a gente fala nos
soca né que que que é o nosso trabalho
como engenheiro de software é
normalmente eu tenho múltiplas formas de
implementar alguma coisa então sempre
quando eu tenho mais de uma forma de
implementar alguma coisa eu tenho que
pensar na forma que vai te
o custo de dar manutenção no futuro
então isso aí tem que ser cansada né O
que que é o menor curso tem que pensar
também nessa questão arquitetural Então
faz sempre com a minha prefeitura
modularizado né e mantemos separação de
interesses um pouco interessante Ingrid
que na pintura a gente tem sempre aqui
como você disse né tem que a rede não é
pensar um pouco na frente mas se a gente
for lá vai consideração algumas equipe
de que utilizam usages A ideia é que a
gente não gaste muito tempo né
preparando coisas como documentação que
a gente vai usar mas lá na frente do
projeto não gasta também tanto tempo com
requisitos né É como é que funciona tem
uma tensão entre desenhar textura do
sistema de uma maneira muito pregressa e
depois a gente tem que redesenhar é como
é que eu consigo conciliar né a criação
de uma arquitetura não time ágil eu
espero que nesse momento já tenha
convencido
e por ter que aturar ela super
importante então um pão é não importa o
processo método de desenvolvimento por
esteja usando sempre é importante eu ser
essa concepção da arquitetura se eu tô
fazendo um projeto do zero é até tenho
que pegar os próprios métodos ágeis ali
a alguns deles eles têm essa etapa que
se chama arquitecto é o Spice serve
justamente para a concepção da
arquitetura porque eu tenho que partir
de alguma organização então é Nossa
quando a gente pensa nas cidades não eu
não vou estar de lamentando todos os
requisitos do sistema mas eu preciso ter
uma visão do produto eu voltei a almas a
gente backlog que podem ser revistos né
ao longo do tempo mas eu pensar como eu
vou estruturar o meu sistema tem que
acontecer porque senão né a arquitetura
e ela é base para a gente ter uma
evolução organizada e Principalmente
nesse método os agentes onde que os
requisitos
o mesmo sendo revistos e eu vou está
evoluindo o meu sistema não passo rápido
vamos dizer assim é importante eu te
sinot arquitetura eu que vai dar um
Norte que isso a gente pensar é uma
modelo a gente não sai dizendo que a
gente vai ter que fazer o modelo para
cada para cada tarefa que vai ser feita
é a um modelo que vai estudar esse Norte
para o sistema só que assim arquitetura
ela tem que ser validada né então assim
a gente sempre sabe né a gente tá essa
visão de que a gente pode fazer um
projeto do sofre que ele vai ser
implementado qual qual foi projetado
sair meio assim acho que é muito raro a
gente acontecer porque tem tanto detalhe
que na hora de a gente encomendar a
gente sempre ver que tem alguma coisa
que não tinha pensado então acaba o
projeto e implementação é algo que é
imperativo né a gente vai tomar do outro
lado Grosso então eu pensar né textura
somente no modelo
e sem depois pensar em validação não
funciona muito então e mensagens um algo
que é bastante interessante é quando ele
tiver priorizando não sei que existe
para pensar nos primeiros requisitos vão
ser implementados é o pensar em
requisitos complexo suficiente para eu
poder testar minha prefeitura então se
eu tenho modo de segurança o testar ver
como é que acontece o fruto de
seguranças tem um fria ou ver o fluxo
principal do tratamento de requisição
então é importante eu conceber essa
arquitetura Então isso é uma coisa que
eu acho que é fundamental Não é não é um
até meta os ardis né a gente tem essa
essa noção né não é que a gente
negligência documentação disso não é
importante a gente faz a documentação
que agrega valor e um modelo estrutural
é algo que agrega muito valor espero já
ter convencer e do todo mundo a respeito
disso então é dado esta arquitetura e
foi concebida é importante então nas
primeiras iterações do projeto nos
primeiros tem que pensar
e em itens do backlog né que não permite
a gente ter tarefas que vão a permitir a
gente fazer a validação da arquitetura e
agora a próxima pergunta é sobre
microsserviços um com 600 avanços e
microsserviços eu preciso me preocupar
com arquitetura do individual de um
micro serviço ou a preocupação do a
orquestração de serviço então é quando a
gente fala na área desse textura né a
gente tem noção de duas visões né
chamado architecture in the world
architecture News do esmalte isso existe
não é mesmo antes da ideia de
arquitetura de microserviços por exemplo
se a gente está pensando no sistema que
controla um hospital a gente vai ter por
exemplo a parte de agendamento de
consultas a gente vai ter o sistema de
RH a gente vai ter o sistema de exames a
gente vai ter sistema de prescrições de
medicamentos
o e inúmeros modos né que acabam
aparecendo Então não é quando eu tiver
representando aqui esses grandes módulos
eu não vou querer saber como cada um
desses subsistema está estruturado
porque se eu colocar isso tudo no mesmo
modelo esse modelo vai ficar cheio de
detalhes eu não vou conseguir entender
nada aí o objetivo do modelo né também é
ficou Monica então seu modelo tá muito
complexo e eu não consigo entender Eles
não servem para nada então né o
architecture in Duarte nesse caso seria
estruturar esse subsistema se mostrar a
dependência entre ele e o arquitecto e
nos maus seria não eu tenho meu
subsistema né E esse meu subsistema eu
vou pensar Então como é que ele vai tá
estruturada então daí eu vou fazer uma
equipe e resolvi responsável por aquele
subsistema vai tem uma arquitetura
daquele sistema Mas eles tem que
conhecer também o arquitecto en dolares
para saber como eles comunicam com os
outros a subsistema são assim é
é muito né da documentação eu eu fiz o
bastante a gente sempre quando faz
documentação a gente não faz
documentação pode ser fazendo
documentação a gente tem que estar
fazendo para algum propósito esse eu tô
querendo comunicar eu tenho que fazer
algo que esteja comunicando aquilo que
eu quero comunicar no caso de nitro
serviços a gente pode pensar justamente
isso né que eu tenho os meus micro
serviços podem ser sub-módulos no meu
sistema eu vou ter algum arquitecto
Duarte para entender como eles estão se
comunicando e equipes responsáveis por
cada um dos seus serviços vão ter as
arquiteturas internas daqueles micros a
ser definidos para que eles
microsserviços umas tudo depende né do
tamanho daqueles microsserviço se eu
simplesmente peguei um sistema antes que
era monolítico eu fiz micro serviços que
estão pequenos né coca classes ali eu
preciso de uma arquitetura Possivelmente
não
tu tem que tentar entender né Qual é o
tamanho desses nossos né então se esses
momentos serviços são quase do tamanho
de um pacote se eu tivesse falando no
sistema monolítico ele Talvez eu não
preciso de dinheiro textura Então tudo
depende né então vocês meus micos
serviços são complexos suficiente para
pesquisarem de uma textura e eu saber
que ele vai permanecer naquele nível de
complexidade se a gente já falou
devolução né então então eu posso não
precisar tá desenhando uma textura
específica é aquele amigo serviço mas de
forma geral se ele for grande o
suficiente e se for evoluir a de tal
ponto que ele precisa de uma revolução
organizada tem que pensar na arquitetura
dele também Mas é muito importante né
quando a gente fala de cura admiro
serviços é peça Essa visão de mais alto
nível onde que eu só olho para os micro
serviços como uma caixa preta entender
Qual é a dependência dele e no caso de
mente o serviços é super importante a
gente ter o documento arquitetural por
quê
é uma não é uma desvantagem assim do
ponto de vista de de documentação do meu
serviço é que a gente tem Independência
se são mais simples que elas acontecem
em tempo de execução a gente pensar em
chamadas de método essas ferramentas que
eu tinha comentado né que extrai as
dependências ela com análise estática
elas elas conseguem levantar seus
dependentes químicos serviços como a
gente tem chamada de ser motos elas
acontecem termos de execução então a
gente não sabe né porque o qual o
serviço que a gente tá chamando fazendo
análises táticas de Cole então é mais
importante ainda eu peço a documentação
é triturar microsserviços porque essas
dependência exercícios precisam ser
conhecidos e
E aí
[Risadas]
oi oi Ingrid você tem também alguns
trabalhos recentes sobre abordagens de
fast e o nível da aplicação então
Instituto você pode explicar para gente
o que é que são essas abordagens de
Casting como elas funcionam então é
primeira coisa não é a gente falar de
Casting a nível de aplicação na que Cash
né a gente está acostumado né todo mundo
já deve ter ouvido falar de por exemplo
Cash na na memória né computador então
essencialmente a ideia de Casting é que
a gente vai mas na um dados em algum
local cuidado qualquer né em algum local
que possa ser aonde que ele possa ser
testado mais rapidamente do que no local
original para ser usado no futuro então
eu sou uma definição mais atrás
Olá estou ansioso isso por exemplo
exemplo da memória então o que que
acontece a gente tem uma memória grande
né que demora mais para ser consultada
eu tenho uma creche que ela demora menos
para ser consultada na tela é menor
então é elementos que por exemplo são
frequentemente assustados eu posso
trazer para creche então é mais rápido
eu acessar esse das tro da Cash do que
ir lá na memória buscar outro exemplo né
para evitar re computação onde que é eu
tenho por exemplo alguma coisa que foi
computado então requerer requer tempo
para ser computado né os por demora 10
segundos se computar e eu não e é uma
coisa que é frequentemente computados na
mesma forma tem o mesmo as entradas e já
era mesmo saído Então em vez de ficar
computando ele vezes o que eu posso
fazer computar uma vez guardar de alguma
forma e cidadã na cast né e eu eu ganho
tempo que evitam
o coração ou também né isso acontece no
sistema que evitar chamadas espera então
a gente sabe que Normalmente quando eu
saio das Fronteiras meu sistema
apresentou acesso no banco de dados ou
tem uma comunicação remota eu tenho uma
latência ele então também eu posso
colocar esse dado né dentro dos limites
da minha aplicação se eu sei que ele não
vai ser mudar né para o mesmo input
olhar o mesmo e daí em vez de tem
que fazer essa chamada externa eu uso
aquilo que está dentro da creche Então
essa definição do dequech né é que a
gente vai colocar esse dado no local que
ele pode ser testado mais rapidamente no
local original e daí vem um ponto
importante é pra ser usado no futuro
porque não adianta nada levar algo para
cast se eu não vou utilizar ele depois
então para isso tem que ter algum
conhecimento sobre o uso daquele dado
preciso ter alguma informação que me
diga o a potencialmente estudado aqui
vai se reutilizado no futuro porque
é simplesmente colocar elementos na
creche para não re usar ele acaba que eu
tô degradando a performance porque
gerenciar cast trazer elementos para
creche tirada nas Takeshi de validar
elementos quando eles foram atualizados
no local original isso tudo tem um custo
computacional então se eu não tiver eu
uso do daquela daquela computação eu não
vou ter uma melhoria de performance A
então essencialmente é isso a ideia de
Cash em diferentes livre aí falando da
caixinha nível de educação a gente é
Casting já existe na computação há muito
tempo né mas arquitetura de computadores
isso é largamente presente né também
aplicações web a gente tem os próprios
proxy service né que eles vão até as
páginas estáticas normalmente nunca a
gente vai no servidor acaba parando ali
no terno e apps tipos de fast eles são
chamados nos parentes porque os
desenvolvedores estão implementando
notificação ele
E ai a enxergar né ele não vai nem saber
que tá acontecendo festinha ali agora no
sistemas atuais né a gente cada vez mais
tem requisitos relacionados a
performance aumentando é formas scalable
dade então o Cash a nível de aplicação é
o teste que o desenvolvedor manualmente
ele vai enfrentar então eu desenvolvedor
por exemplo detectar aqui um método que
normalmente geram gera o mesmo how to
para into this frequentes então por
exemplo assim eu estou numa rede social
e fiz um tweet e aquele Twitch assim Nem
todo mundo é disso mas a gente vai ter
um monte de gente lembra aquele Twitch
então aquele suíte ele pode ir para
creche e daí o que em vez de fazer o
método em vez de ir buscar nós vamos de
dados ele pode trazer aquele summit da
creche porque no Twitter recent tweets
antigos eles vão estar lá na base de
dados e precisam ser consultados mas
aqueles que aconteceram passou por eles
vão ser largamente do crime
bom então eu coloco na creche Só que
infelizmente isso aí não é automatizada
que nem que nem os outros níveis de Cash
e acaba que os desenvolvedores
implementam na mão então numa forma
totalmente informal e dizer porque são
leva o que é Xem é o Casting
desenvolvedores encomenda normal no meio
do Código da aplicação de São entre Qual
é a relação de Casting com arquitetura
de software vão Então eu expliquei o que
que é fecha né gente tava falando sobre
arquitetura essencialmente né Essa Ideia
do uso de aplicativo móvel Cash está
relacionado com o endereçamento de um
requisito de perform então quando eu
tiver passando numa aplicação não vou
dizer sim eu quero usar
application-level peste não eu vou
partir de um requisito de performance
não eu tô concebendo uma arquitetura e
cansar eu preciso endereço a performance
performance ao nosso sistema E aí
application-level caching acaba surgindo
como uma alternativa é uma a gente pensa
na arquitetura e desonesta
a cena aqui eu vou estar utilizando
Então application-level caching porque
aqui eu tenho vários métodos que apenas
essas características necessárias para
poder usar questionável Fashion ah e daí
então eu isso aí então tem que ser
pensado na cintura até né Isso o
aplicativo levar o resto tinha um
problema porque eu tinha dito da
separação de interesses na espessura
umas um grande desafio o
application-level caching aqui ele é Um
clássico que eu tenho com sangue porque
ele está espalhado na estrutura Então
tem que eu botei nerds espalhados no meu
sistema e eles vão ter o application
level test implementados lá no seu
interior né e o que que significa
implementar a gente leva o resto eu
tenho um método que recebe uma entrada
Quais são as primeiras minhas códigos do
metros é se aquela entrada tá na cast eu
retorno que tá dentro da creche é o
computa e botão na caixa e dá o retorno
e isso vai estar em vários métodos assim
isso aí
o desafio é um dos grandes desafios dia
para questionável Cash em que essa
questão de manutenibilidade a gente tem
algum apoio ferramental então Existem
algumas ferramentas que servem de
componente De Cash porque às vezes a
gente pode implementar até o componente
de creche na mão então a gente tem o e
Cash mesmo teste Web está tem aqui são
as ferramentas que podem ser
incorporadas como como componente De
Cash e mais recentemente né que aí que
vem os meus trabalhos e também existem
alguns outros o meu no caso trabalhando
com dois alunos né o Johnny médico que
trabalhou nisso e o a forma do Maloka
Então a gente tem abordagem na salinha e
também tem um memórias e tirar um grupo
de pesquisadores da Europa e essas
abordagens lá tornam application-level
caching mais transparente então elas
gostam fazer por exemplo a invalidação
de elementos da creche então se eu mudei
o dado
e a ele detectará quando tem que ir vai
lhe dar uma maquete esses dois trabalhos
que eu comentei tanto meu como menores
eles eram já fazer recomendações de
elementos para colocar na cast então no
caso do nosso gente busca fazer um
sistema auto-adaptativo então Pires
forma transparente a festa genitália do
desenvolvedor mas eu já adianto né assim
mesmo assim a gente tem essa abordagem
que a missão é automatizar completamente
ainda é bastante difícil a gente tomar
decisões de cast e ainda requer bastante
input manual para estar tomando decisões
de gerenciando aakash o ponto de vista
de implementação parece que é muito
simples implementar né Faz um Infiel se
tiver eu dado no banco eu e o Davi na
caixa e o resto a fauna se não tiver eu
faço operação em volta na minha caixa no
meu banco é mas me parece que a
dificuldade é entender quando eu devo
fazer aonde eu devo fazer como é que eu
encontro esses locais de utilização
o sistema novamente algo ferramental tem
um bonita que possa apontar olha faz
crédito essa parte aqui que tá mais
trabalho para se esquece que essa parte
aqui que é mais acessada Qual que é o
trade-off aqui pra gente poder local de
encontrar oportunidade de Cash como tu
falou uma das grandes um dos grandes
desafios já peguei chamado eu Casting a
gente decidiu o que que a gente vai
cachear mas a implementação não é tão
trivial assim porque a gente tem
decisões a serem tomadas Então eu tenho
eu vou responder essa pergunta de forma
mais abrangente falando das diferentes
tarefas né que requerem a água quando a
gente adota que precisam ser executadas
quando a gente adota uma abordagem de
cast é um primeiro eu conto que tu
comentou que ela decidiu que que eu vou
cachear para eu decidir o que eu vou
fechar tem duas coisas que tem que ser
pensada com faz sentido eu posso cachear
isso aqui ou não né E quê que é o posso
cachear eu preciso por exemplo falando
de metros
é preciso um método aqui para os medos
imputes eu tenho mesmo aos por um
tempo determinado ao menos porque daí o
que acontece aqui dentro daquela janela
de tempo eu vou ter né o seu uso
daquelas notificação e fora isso dentro
daquele daquele método não podem haver
operações por exemplo de escrita que eu
não posso esquipar não posso passar por
elas então eu tenho que ir para eu poder
encaixar o método ele para o mesmo pude
tem geral geral mesmo puxa pelo menos
por uma janela de tempo para aquele dado
poder ser reutilizar tão usando o mesmo
exemplo do Twitter que eu falei a gente
sabe que não é um tweet pode ser editado
E se ele for editado né dado um input o
a Dida que ele Twitch o prova muitas
vezes o resultado né a leitura da que
depois que vai ser o mesmo mas se a
gente está não vai ser mas pelo menos
durante uma janela que eu não vai poder
ser reutilizada então o primeiro eu
tenho que olhar o que que é
é de cachear a segunda coisa é o
entender aonde vale a pena cachear
porque se eu tenho um método que ele é
muito simples e que não tem curso para
ser ditado eu adicionar as minhas para o
gerenciamento de creche Pois é por isso
que tá na que já tá na creche só isso aí
tem um curso Então se algo não é muito
chamado tem um custo muito baixo né
então não vale a pena que acha ali então
eu tenho que olhar para esses dois
aspectos é o que pode ser cacheado e o
que vale a pena ser cacheado e para
determinar o que vale a pena ser
cacheado a gente existem diferentes
critérios mas os dois Perdigão são os
principais é uma frequência eu chamo
alguma coisa então por exemplo método
que é muito chamado com os mesmos
recursos geral no mesmo pude e o segundo
é o tempo de computação que elas vezes
algo pode não ser muito frequente mas
demora muito a ser complicado então a
gente usa às vezes Justamente a médica é
muito
Além disso né então o número de vezes
que chamada vezes o tempo de execução
isso vai me dar Qual é o tempo que eu tô
economizando ao colocar elementos que
estão na cast nessa linha né para ouvir
o dar isso tem até um ativo que eu tinha
comentado neodi Unimed trabalhou nisso é
um artigo dos protection um soften the
new e onde que a gente viu a diferentes
aplicações e tentam entender como é que
os desenvolvedores é decide o que que
vão baixar ou não e a gente um dos
padrões que a gente se derivou que a
gente chama de caixa Binho e Pata e tem
sete critérios te ajudam a decidir Então
se algo deve ser cacheado ou não e para
avaliar né ser aquilo valeu a pena ou
não né a gente tem as métricas
relacionadas com casting para ver se
aquele aquilo que eu sou aonde que eu tô
colocando o teste está me trazendo ganho
então a gente normalmente avalia tem
diferentes métricas nas duas são muito
usadas é o hit Hit né número de rir que
eu botei para querer
é colocado na creche com relação ao
Vinicius de quando ele não estava
presente e o Fruit é o que a gente quer
aumentar a performance da aplicação isso
né pensando tudo isso de forma manual
mas é como eu comentei né tanto a gente
tem a guardadinho a pele cast foi
baseada nesse padrão que eu comentei E
também o memórias e são ferramentas que
servem para recomendar então para os
desenvolvedores pontos a serem cacheado
só que na nossa própria abordagem que
uma abordagem automatizada a gente não
consegue decidir quais métodos não podem
ser fechados Por que gerariam Burger se
fosse em cacheado então a gente assumi
que o desenvolvedor vai indicar né esse
método aqui ano que é chegou então
automatizar completamente a gente ainda
não consegue tá E essas ferramentas elas
existem tanto para creche como outros
problemas de performance problema de
performance comum é o chamado mesmo e do
outro e quando a gente Estância muitos
objetos né memória ficar cheia de
objetos estão
bom então a gente tem várias ferramentas
para endereçar diferente problemas de
performance né todos eles são trabalhos
acadêmicos mais recentes né mas é as
ideias vão amadurecendo e né e cada vez
mais a gente tem ferramentas mais sua
músicas para auxiliar nesse processo Mas
falando né Não o que a tarefa não é só
decidiu que vai cachear né outra questão
que é muito importante decidir como
implementar então assim não é tão se
pode ser simples como como eu tinha
comentado né está na cash de volta tá na
festa não computa só que a gente pode
enfrentar isso diferentes formas por
exemplo vamos supor que a gente tem uma
um pato não é uma régua uma expressão
regular que a gente montou e ela vai ser
bastante utilizado Então em vez de
computar aquela expressão regular a
gente quer torna ela só que normalmente
é só uma expressão regular a gente sabe
que não vai ter muitas expressões
regulares então a gente pode colocar uma
a única na passa uma variável estática e
usar aquilo como uma variável para
armazenar armazenar aquela expressão
regular e aquilo vai ser a nossa creche
então tem uma variável estática numa
classe é uma forma de evitar
implementando a cast também eu posso
usar regime né então o resto map dentro
da classe uma rendimento global ou como
eu comentei a gente tem esses
componentes de Cash que daí eles nos
auxiliam isso né até Inclusive tem como
alguns algumas Tecnologias para
implementar cast que a gente pode
colocar um método@Cash bunai e daí a não
precisa fazer mais nada e fora isso a
implementação da creche não é limitada a
gente tá vendo está na caixa retornando
que tá na cast porque além de cachear a
gente tem que determinar o chamado time
sorriso estaremos ele vai quanto tempo o
elemento que vai ficar dentro da creche
então assim a esse elemento aqui né
E aí normalmente é usado por 30 segundos
se depois não é usado mais então eu
posso botar um time Felipe e depois de
30 segundos aquele elemento vai sair da
creche outra coisa é o tamanho da creche
normalmente Quanto maior melhor né que a
gente tem mais tamanho Mas a gente sabe
que se passa o limitado e também existem
outras questões né como fazer uma
chamada política de reflexão então
quando a minha festa cheia aqui que eu
faço a gente tem as políticas por
exemplo ela é rio que é o Sr juiz
imperioso ela é frio que ele porque ele
curioso que a para determinar Quais
elementos eu vou tirar da creche quando
eu preciso colocar na novo elemento na
cast e a minha caixa não tem mais
tamanho então eu decidi como implementar
não é limitado essa implementação de
recuperar o elemento na caixa nos como
também de se despedirá configuração da
Cash e é a outra coisa eu tenho que
pensar como manter a consistência por
exemplo no caso que eu odeio o tempo
todo Twitch né então a gente tem lá o
método que leu Twitch mas a gente tem um
método
e vai fazer de São daquele frente então
quando eu editar o Twitter talvez eu não
vá lhe dar aquele tweet que tá na creche
Então a gente tem que ir então uma ir lá
na caixa dizer olha isso aqui não é mais
vale ou por exemplo só tem uma querem
que tá na creche Então isso é bastante
difícil a gente vai baseado naquela com
ela e saber todos os elementos né que
são retomados na naquelas colheres e daí
se o mundo algum daqueles elementos aí
eu sou obrigado a invalidar cast então
mandei a consistência algo bastante
difícil também aqui também existem
abordagens que servem justamente para
gerenciar essa consciência
automaticamente uma alternativa é temos
playoff do Flash e testei eu deito na
que que é o flash nos fecha no seu
sempre quero ser usado totalmente
atualizado e eu permitisse aí o deita é
em alguns casos eu posso permitir que o
dado esteja sendo retornado ele não está
completamente atualizada por exemplo um
tweet Pode ser que seja muito com
eu vou ter que ir validar os elementos
os elementos na creche quando eu tô
falando de tui Então o que eu posso
fazer quando eu tá eu posso determinar o
time utilizo e daí eu digo que durante
30 segundos Eu Admito que aquele Twitch
ele pode estar desatualizados né Vocês
têm odeia e daí eu não sei opção
validação Então são tudo decisões que a
gente tem que fazer com relação a caixa
então os dentes não é nem um pouquinho
trivial né então o ganho reformas é Um
Desafio fazer isso e por fim né algo que
deixa ainda mais difícil segundo né Fiz
lá todas essas decisões que achei tudo
só que o outro longe de aplicações não é
algo estático uma coisa que evolui
alunos do tempo então é esse ciclo né de
decisão do que que é chato hein ser uma
coisa constante então até a nossa ideia
da outra da otimização né do sistema
adaptativo é justamente o tá monitorando
o ciclo o sistema para decidir
dinamicamente o que que achar os
desenvolvedores que não tem uma
abordagem
e nada tem que ir na mão tá sempre
revenda Então as decisões com relação a
Cash essa introdução que eu dei até ter
alguém não tiver mais interesse tem um
antigo que a gente teve a respeito a uma
entre Power software o motivo desses
mais de introdução mesmo e que ele traz
justamente uma visão Geral das tarefas
relacionadas com um aplicativo é bom
caption falar que era trivial levei uma
aula de Casting aqui mas a Ingrid não
tem esses abordagem de cast em me parece
que são primas ali de umas abordagem de
cast de compiladores né O Hélio é RS uso
são todas quente já conhece são
constantemente implementados né em
compiladores E aí uma coisa que eu tenha
em mente é existem diferenças de
implementação de Casting dependendo do
tipo de aplicação né eu vi que você tem
dois de trabalho e sobre isso um sobre
application-level caching na minha
aplicações web e outro em cash e Smart
gateways
Há alguma diferença entre esse tipos de
abordagens em cenários distintos né dá
para reaproveitar algum tipo de pode
fazer um copo em peixe aqui solução
genérica de Cash em de aplicação esse
alto nível é essencialmente né textura
podcast tubecast Então os princípios são
são os mesmos a gente vai estar
colocando dado no local mais fácil de
acessar e sempre a gente tem esse
círculo Mas você tá na casa de vó
codecast se não computa Takeshi no
application-level caching Às vezes a
gente pode até decidir admissão né que
eu vou colocar na caixa não porque
normalmente as outras abordagens são
seus parentes ela sempre trazem parquete
então essencialmente é similar a então
tanto por exemplo no caso do das
aplicações web como também nos
smartphones só aqui no caso ali a
motivação é diferente então nas
aplicações web pelo menos que nas
aplicações que a gente utilizou em todos
os experimentos a
e para evitar reputação ou evitar saídas
ponteiras da aplicação então acessavam
de dados ou fazer uma chamada remota né
então é ganhar tempo justamente e luz no
caso dos smartphones É isso aí foi um
projeto que não servir cooperação com a
Universidade de grenoble que eles tinham
um sistema chamado ai casa que é de que
o negocinho né dentro de uma casa
inteligente é ali era não somente evitar
essa latência de comunicação quando a
gente tem comunicação remota como também
evitar gasto de energia resiliência
então às vezes se eu vou estar
consultando dados de um sensores junto a
sua muito frequentemente eu tô gastando
energia e também se existe alguma falha
de comunicação se eu tenho algum
elemento na creche às vezes eu posso
utilizar ele né sabendo que ele pode
estar um pouco desatualizado então a
motivação é um pouco diferente então eu
não falei é tudo cash né mas o porque eu
tô
e tem diferentes motivos até tá gente
for falar com pessoal de arquitetura de
computadores até eu falei da República
São as vezes o termo de que é usado para
recuperação é mesmo existe até a outra
abordagem que eu comentei que era
memórias e tirei vem justamente do
memoization que é evitaria computação
enquanto que Cash Nessa altura de
computadores é mais o que a gente a
gente conhece né do componente ele que
vai ter de Cash e assim com relação à a
implementação disso tudo depende como
qat foi implementado como eu falei a
gente tem várias alternativas eu posso
colocar uma variável estática eu posso
colocar o resto map então normalmente o
que a gente usa mais é são ou as
ferramentas prontas com os componentes
né De Cash então se eu implementei um
componente cast na mão eu posso
reutilizar ele ou essas abordagens como
falei a cafeína ou redes redes então é a
gente pode utilizar eles e tem essas
abordagens que eu falei que seja questão
a reportagens foram publicadas né
voltagens acadêmicas algumas tem a sua
implementação disponível e daí às vezes
a gente pode usar uma notação alguma
coisa na farinha on
[Música]
De nada minha está caminhando para o
final do episódio acho que hoje eu dormi
bastante sobre Cash e depois de maneira
geral e antes de encerrar eu queria só
saber se você tem alguma recomendação
para os nossos ouvidos seja material de
leitura você citou vários artigos
interessantes que a gente vai brincar
com o episódio mas você tem umbigo ao
outro Episódio podcast você queria
compartilhar com 20 em cima disciplinas
de engenharia de software no Na
graduação e uma grande dificuldade que a
gente tem né Como os alunos ainda
normalmente não têm experiências com
sistemas muito grandes Eles não
conseguem enxergar muito o benefício da
gente está falando de Arquitetura do
a organização do princípio de separação
de interesses e um grande desafio que a
gente tem hoje em dia é que existem
muitas tecnologias que a gente tem que
aprender se a gente for trabalhar na
indústria né então tem muitos prêmios e
todas ela hora estão surgindo novos
freios novas bibliotecas e acha que
também todo mundo assim fica feliz
quando a gente faz um projeto na rede
Hub e ele se torna bastante Popular com
bastante forte Então as pessoas têm
motivação de Inovar e trazer novas
tecnologias só que o que acontece né que
a gente tem que aprender tudo isso
existe uma pressão constante para o
aprendizado Então é assim o a minha
indicação né é OK tecnologias é
importante porque a gente vai utilizar
elas a gente não quer Reinventar a roda
mas por favor não negligencie esses
princípios básicos de engenharia de
software a gente pegar artigos da década
de 70 do Davi Paris
e sobre o modo legislação a gente lê e a
gente vê que os problemas ainda existem
nessa questão de baixo acoplamento e
alta coesão tem um projeto que eu tô
fazendo atualmente não tem a ver com que
a gente tá falando aqui sobre a sua loja
e a gente está analisando vários
sistemas É incrível como sistemas tem um
abismo e se ela dentro da parte de viu
método gigantescos porque as coisas não
crescendo e a evolução acaba ficando
desorganizado na minha visão né se a
gente cansar nós que somos profissionais
de só é nossa obrigação fazer o que a
gente passa com qualidade né então se a
gente pensa em qualquer profissão que
existe quando eu vou por exemplo no
médico não chega no médico de igual meu
anjo por favor faz o teu trabalho
Direito da melhor usando as melhores
práticas a gente não fala isso gente já
espera isso é seu contrato uma que tem
também um
a nossa como engenheiro de toca a gente
tem essa responsabilidade de estar
fazendo um sistema com qualidade né eu
entendo que hoje em dia a gente tem
bastante pressão né os requisitos estão
constantemente mudando né Mas se a gente
não fizesse esforço né acaba aqui nós
desenvolvedores de software que tem que
que vamos estar apagando fogo no futuro
então a senha amiga e grande indicação é
olha os livros A e até mesmo de tem
vários vídeos no YouTube falando sobre
princípios mais básicos de engenharia de
software e eu digo olha eles são
importantíssimos e eles né eles são eles
não tem data de expiração é como eu
falei isso os ativos o dedo para nos
década de 70 né eles fazem todo sentido
hoje em dia e podem ser aplicados a no
nosso dia a dia para a gente ter menos
dor de cabeça ao evoluir o sistema é
[Música]
o trabalho com muitas formas vamos dar o
Safety oficial para você qual é a
próxima seu tira da engenharia de
software Então essa é uma pergunta
difícil né até assim gente pensar né
interessante ver o podcast no futuro
para ver para ver como como as coisas
evoluir Mas na minha visão é o seguinte
hoje a gente vê né eu acabei de comentar
das tecnologias né a gente tem cada vez
não é só a tecnologia e conhecimento
especializado agora com esse bule Mach
Lane né assim não é só aprender
tecnologia a gente lá para atender pensa
folk eras e usar cueca site plano não é
só isso não é chamar uma a gente saber o
que que tá acontecendo porque se a gente
tá chamando às vezes algum algoritmo a
gente tem que
e tem que utilizar o zíper parâmetros
saber como é que aquilo funciona nessa
saber também interpretar aqueles dados
então é um conhecimento especializado e
não só isso a gente acabou de falar the
application my soul Casting performa é
algo também que também cada vez mais a
gente tem que levar em consideração tem
uma palestra muito boa que eu vi que o
inversor de obra só que ter forma
justamente trazendo essa informação de
que a gente a lei de muro né que é
aquela de que o processamento de
computadores vai crescer
exponencialmente a cada a cada dois anos
né que o custo vai diminuir não assim
morreu né É porque a gente não consegue
mais colocar mais nos no mesmo espaço ou
seja melhorar a capacidade do sistema o
engenheiro sofre
é muito acostumada né Que tipo de Fora
isso não é o tão importante que bota
mais na memória bota mais processador né
E as coisas Escalão mas a gente está
chegando no limite e também né hoje em
dia como muito Muitas aplicações estão
rodando na nuvem a gente tem a questão
do custo também né então questão de
custo de estar pagando para aquelas
aplicações estarem lá na nuvem então
performance importante as questões de
Mach Lane é importante são importantes
segurança também principalmente cada vez
mais os sistemas formais de híbridos com
internet das coisas por aí né então
assim a internet das coisas e a gente
não colocar segurança a gente pode ter
ataque do dose né demais você que botou
a service né Podem ser facilmente feito
né a gente pega 500 meu câmeras por aí e
invadir elas e faz ataque de voz então a
gente tem muito conhecimento
especializado hoje em dia tá tudo sendo
colocado na muito
e nas costas do engenheiro de software
geral né e tá todo mundo muito cansada
porque tem que aprender isso tudo para
ontem né e todas as tecnologias eu não
sei se no futuro a gente o que a gente
vai ter é um desmembramento disso com
diferentes cursos né antigamente a gente
só tinha Ciência da Computação vem
engenharia da computação agora a gente
tem curso de engenharia de software
agora tem umas universidades fazendo
curso de ar né de Inteligência
Artificial são Quem sabe a gente não vai
ter né a justamente um desmembramento
porque a gente vai ter esses
conhecimentos especializados Só que quem
é que liga isso tudo tem um liga isso
tudo é o engenheiro de software Então a
gente tem que ter uma visão Global né
então a gente tem que ter a dificuldade
a entender a dificuldade desses
diferentes contextos e saber como o
retrato do isso E permitir que as
pessoas se conversam né Então para mim a
grande fronteira da engenharia de
software justamente
o olhar para esse mundo complexo para
gente estar tendo hoje aí pensar como a
gente vai construir sistemas com alta
qualidade não só com modularização pode
qualidade Nós também books é intenção do
que esses temas que a gente está fazendo
hoje em dia né a gente tem muitas
tecnologias isso aí vai ser sistema
legado no futuro hoje em dia um
desenvolvedor cobol ganha muito dinheiro
porque a gente não tem desenvolvedores
cobol agora hoje a gente tem muito mais
tecnologias que daqui toda daqui no
tempo todas elas vão ser legados EA
gente vai ter que saber elas e mais nos
do futuro então é tudo muito desafio
então o engenheiro de software eu vejo
que vai Talvez né a grande Fronteira
conseguiu olhar para todos saber como
isso vai ou testar e a engenharia de
software Ela não é uma área que
totalmente raro né a gente falou
bastante de colhe essas coisas gerente
sobra também tem o seu lado só fiz né
então a gente fala por exemplo disso
fatores humanos também questões de
liderança com a questão
e da equipe né a parte gerenciamento de
projetos faz parte do engenheiro sofre
Então se a gente vai ter equipes com
conhecimentos especializados segurança
performance Mach Lane só os envolvidos
no domínio os engenheiros de software
tem que ser responsável por emitir todo
mundo que converse né gente vai ter
levantamento de requisitos precisa
pensar né que todo mundo tá falando a
mesma língua então para mim o grande
Fronteira de engenheiro de software é
conseguir saber a distrair e saber
orquestrar o sistema como um todo e
gerenciais exercícios com conhecimentos
especializados e talvez direcionar né
justamente essa essa noção de que a
gente precisa equipes com diferença
conhecimentos para atacar os diferentes
consoles nos projetos são muito obrigado
em nome é querido toda a equipe do
próprio hidrogênio só foi um prazer
conversar com você e um grande abraço
entre si se o Gustavo quer falar alguma
coisa para finalizar também agradecer só
novamente ainda esse povo não
e essa experiência conhecimento sobre
arquitetura em baixo vou subir Casting
acho que o Episódio Super Interessante E
aí eu agradeço novamente e a gente se
encontra em algum outro oficial de duas
ponteiras da engenharia de software
Muito obrigado assim agradeço novamente
o convite e quem que tiver interesse né
discutiu uma coisa né pode procurar no
Google me mandar um e-mail às vezes eu
posso demorar um pouco para responder
mas você me responde tá valeu Aí
obrigado para toda a equipe né E vocês
tão de parabéns por todo o trabalho que
tem feito obrigado obrigado Ingrid Valeu
[Música]
o
o Olá obrigado por escutar o Fronteiras
da engenharia de software os equipe é
formada por Marcelo dos Santos Leonardo
Fernandes Gustavo Pinto Fábio petrillo
Danilo Monteiro e Adolfo Neto sou eu
estamos no Twitter e no Instagram como
arroba fronteiras e até o próximo
episódio a dar um
E aí
[Música]