Você está na página 1de 207

1

2
REVISÃO DE VÉSPERA
CÂMARA DOS DEPUTADOS
CARGO: ANALISTA LEGISLATIVO - INFORMÁTICA LEGISLATIVA

ARQUITETURA DE SISTEMAS DE
INFORMAÇÃO
Prof. Fernando Pedrosa

Língua Espanhola
Prof. Adinoél Sebastião

4
GESTÃO DE CONFIGURAÇÃO E
MUDANÇAS

Prof. Fernando Pedrosa

Bibliografia
❏Pressman, Roger S. Software Engineering: A
Practiotioner’s Approach. Editora: McGraw-Hill.
❏Sommerville, Ian. Software Engineering. Editora:
Addison Wesley
❏RUP – Rational Unified Process

6
O que é Gestão de Configuração?
❏ Conjunto de processos, técnicas e ferramentas que ajudam a
gerenciar e controlar as alterações feitas durante o ciclo de vida
do desenvolvimento de software
❏ Inclui:
• Rastreamento de mudanças
• Controle de versões
• Auditoria de configurações

Benefícios
❏ Garantir a consistência do software
❏ Facilitar a comunicação e a coordenação entre a equipe de
desenvolvimento
❏ Prevenir a introdução de erros ou problemas devido a alterações
não controladas ou mal gerenciadas
❏ Reduzir os riscos associados com o desenvolvimento de software

8
Item de Configuração
❏ Partes individuais de um sistema gerenciadas durante o ciclo de
vida de um projeto
❏ Podem incluir:
• Código Fonte
• Artefatos de Design
• Documentação
• Dados de Configuração e Scripts
• Binários e Releases
• Testes e Dados de Teste, etc.

Processo de GCM
❏ Objetivos:
• (1) identificar todos os itens que coletivamente definem a configuração do
software
• (2) gerenciar mudanças em um ou mais itens
• (3) facilitar a construção de diferentes versões de uma aplicação, e
• (4) assegurar que a qualidade seja mantida à medida que a configuração
evolui

10
Processo de GCM (Pressman)

11

1. Identificação
❏ Aqui, os itens de configuração que precisam ser gerenciados são
identificados
• Código-fonte, documentação, artefatos de design, dados de configuração,
ferramentas de construção, binários, testes e dados de teste, etc.
❏ Cada item de configuração é então rotulado de forma única
para garantir a rastreabilidade

12
2. Controle de Mudanças
❏ Envolve o gerenciamento das alterações nos itens de configuração
❏ Inclui:
❏ Avaliação e aprovação (ou recusa) de propostas de mudança
❏ Implementação das mudanças
❏ Revisão pós-implementação

13

3. Controle de Versão
❏ Prática de gerenciar diferentes versões de itens de configuração
❏ Envolve o rastreamento e o controle de alterações nos itens de configuração ao
longo do tempo
❏ Permite que versões específicas possam ser recuperadas conforme necessário
❏ Aqui são utilizadas ferramentas de controle de versão como Git e SVN
❏ Inclui o conceito de BASELINE
• Marco ou ponto de referência estável no desenvolvimento de um projeto

14
(VUNESP - 2019 - Câmara de Piracicaba - SP - Analista de Sistemas)

Um dos conceitos importantes da gerência de configuração de software é o de baseline, o


qual representa

A) a reunião de diversas versões de um mesmo programa.


B) um conjunto de versões de componentes de software que formam o sistema completo.
C) uma área particular de trabalho na qual um programa pode ser modificado, sem afetar
outros programas.
D) uma instância de um item de configuração que difere de outras instâncias.
E) uma técnica de teste utilizada para validar diferentes versões de um programa.

15

(VUNESP - 2019 - Prefeitura de Valinhos - SP - Analista de Tecnologia da


Informação – SAI)

Em um projeto de software, a equipe de desenvolvimento deve implantar o controle de versões do software, sendo
que esse tipo de controle

A) deve obedecer a um período mínimo entre registros de novas versões de um mesmo componente de
software.
B) deve acompanhar e registrar o desenvolvimento de diversas versões de componentes de software, decorrentes de
sua evolução.
C) não suporta o acompanhamento e registro referente a um desenvolvimento simultâneo de modificações em um
mesmo componente de software.
D) não se aplica a projetos de software que não tenham implantado o controle de versões desde seu início.
E) não suporta o registro de mais do que cinco versões de um mesmo componente de software.

16
4. Auditoria de Configuração
❏ Processo de verificar se a configuração atual do software está de
acordo com as informações documentadas sobre a configuração
❏ Verificação:
• Consistência
• Completude
• Cumprimento de políticas e procedimentos

17

5. Relatório de Status
❏ Envolve o fornecimento de informações atualizadas sobre o
estado dos itens de configuração e as mudanças que foram feitas
❏ Quais mudanças foram implementadas?
❏ Quais estão pendentes?
❏ Quais foram rejeitadas?
❏ Qual é o status atual de cada configuração?

18
(UFG / SANEAGO – 2017)
A Gerência de Configuração de Software (GCS) visa estabelecer e manter a integridade
dos itens ao longo de todo o ciclo de vida do software. A função se refere à preparação
em que são mostrados a situação e o histórico dos itens de software controlados. Essa
funcionalidade pode incluir, dentre outros, o número de alterações nos itens, as suas últimas
versões e os identificadores de liberação. Esta função da GCS compreende:

a) o relato da situação da configuração.


b) a auditoria de configuração.
c) o gerenciamento de liberação.
d) o controle de modificação.

19

(IADES / EBSERH – 2013)


Gerência de Configuração de Software é um conjunto de atividades de apoio, que
permite a absorção controlada das mudanças, inerentes ao desenvolvimento de software,
mantendo a estabilidade na evolução do projeto. Podemos dividir o Gerenciamento de
Configuração de Software em três níveis:

Tomando por base a figura anterior, assinale a alternativa que define, corretamente, cada
nível do Gerenciamento de Configuração de Software.

20
(IADES / EBSERH – 2013)
a) Controle de versão: identifica em qual versão está o software e quais as características de cada versão. Controle de mudanças:
identifica quais foram as mudanças, efetuadas na versão. Integração contínua: tem como características testar as mudanças, assim que são
realizadas.
b) Controle de versão: identifica em qual versão está o software e quais as características de cada versão. Controle de mudanças:
tem como característica testar as mudanças, assim que são realizadas. Integração contínua: identifica quais foram as mudanças, efetuadas
na versão.
c) Controle de versão: identifica quais foram as mudanças, efetuadas na versão. Controle de mudanças: tem como característica testar as
mudanças, assim que são realizadas. Integração contínua: identifica em qual versão está o software e quais as características de cada
versão.
d) Controle de versão: identifica os usuários dos sistemas. Controle de mudanças: tem como característica testar as mudanças, assim que
são realizadas. Integração contínua: identifica em qual versão está o software e quais as características de cada versão.
e) Controle de versão: identifica os usuários dos sistemas. Controle de mudanças: tem como característica testar as mudanças, assim que
são realizadas. Integração contínua: identifica as aplicações do software.

21

Ferramentas
Categoria Objetivo Ferramentas

Controle de Versão Gerenciar e rastrear Git, SVN,


diferentes versões de itens Mercurial
de configuração ao longo do
tempo.
Rastreamento de Mudanças Gerenciar e rastrear Jira, Bugzilla,
solicitações de mudanças, Redmine
bugs e melhorias.

Build e Integração Contínua Automatizar o processo de Jenkins, Travis


compilação, teste e CI, CircleCI,
implantação de software. GitHub Actions

22
Controle de Versão
❏ Rastreia e fornece controle sobre as mudanças nos códigos fonte
e outros tipos de informação de trabalho
• Facilita a colaboração
• Mantém um histórico de mudanças
• Permite a recuperação de versões anteriores
• Facilita a gestão de releases
❏ Existem dois principais tipos de sistemas de controle de versão:
centralizado (como SVN) e distribuído (como Git).

23

Modelo Centralizado (SVN)


❏ Neste modelo, existe um único servidor central que contém todas
as versões dos arquivos do projeto
❏ Desenvolvedores podem fazer check-out de arquivos deste
servidor central, mas geralmente apenas um desenvolvedor por
vez pode fazer mudanças em um arquivo específico
❏ Vantagens: mais simples e permite um controle mais rígido
❏ Desvantagens: único ponto de falha (servidor) e dependência da
rede

24
(CESPE / SERPRO – 2013)
Os sistemas de controle de versões permitem que os artefatos sejam obtidos do
repositório por meio da operação conhecida como check-in.

25

Modelo Distribuído
❏ Cada desenvolvedor tem uma cópia local do repositório inteiro,
incluindo todo o histórico de versões
❏ Desenvolvedores podem fazer muitas operações (como commits e
diffs) localmente, sem necessidade de conexão
❏ Quando for necessário publicar as alterações, basta fazer um
“push” para o repositório compartilhado
❏ Vantagens: desempenho e flexibilidade
❏ Desvantagens: complexidade e menos controle

26
Gerenciamento de Mudança
❏ Disciplina estruturada que visa garantir que as alterações sejam
implementadas de maneira suave e eficiente para minimizar o
impacto na estabilidade e na rotina da organização
❏ Inclui não apenas alterações no próprio código, mas também
alterações na arquitetura do sistema, no hardware subjacente,
na documentação e em outros aspectos do sistema

27

Gerenciamento de Mudança (cont.)


❏ Etapas geralmente envolvidas:
• Identificação da Mudança
• Registro da Mudança
• Análise da Mudança
• Decisão
• Planejamento
• Implementação
• Verificação (testes)
• Revisão

28
Auditoria e Controle
❏ O objetivo é verificar se os itens de configuração no sistema estão
em conformidade com a documentação e as especificações
❏ Envolve:
• Revisão de IC’s
• Verificação da presença de IC’s no repositório
• Comparações (planejado versus encontrado)
❏ O resultado da auditoria geralmente é um relatório detalhado
indicando quaisquer problemas encontrados

29

PADRÕES GRASP

Prof. Fernando Pedrosa

30
Padrões GRASP
❏ GRASP é um acrônimo para General Responsibility Assignment
Software Patterns (Padrões Gerais de Atribuição de
Responsabilidades de Software)
❏ Foram desenvolvidos para fornecer respostas a problemas comuns
que surgem durante o processo de design de software orientado
a objetos

31
Padrões GRASP (cont.)

32
1. Especialista na Informação
❏ Delega responsabilidades à classe que tem as informações
necessárias para cumprir as responsabilidades
❏ Exemplo: Uma classe Pedido é responsável por calcular o valor
total de um pedido, já que ela contém as informações necessárias
(os itens do pedido)

33
Exemplo

34
2. Criador
❏ Atribui a responsabilidade de criar uma instância de uma classe a
outra classe que possui as informações necessárias para criar o
objeto
❏ Exemplo: Uma classe FabricaCarro é responsável por criar
instâncias de Carro.

35
Exemplo

36
3. Controlador
❏ Atribui a responsabilidade de lidar com mensagens de sistema ou
eventos a uma classe representando uma escolha geral de
coordenação ou controle
❏ Exemplo: Uma classe PedidoController é responsável por tratar
eventos relacionados a pedidos.

37
Exemplo

38
4. Baixo Acoplamento
❏ Promove a independência entre as classes e o encapsulamento,
com o objetivo de reduzir o impacto de mudanças no sistema

39

Exemplo

Código fortemente acoplado

Código fracamente acoplado

40
5. Alta coesão
❏ Mantém objetos focados, gerenciáveis e compreensíveis,
ajudando a reduzir a complexidade e aumentar o reuso

41

Exemplo (código pouco coeso)

Código de
Apresentação

Código de
Negócio

Código de Acesso a
Dados

42
6. Polimorfismo
❏ Delega responsabilidades a classes abstratas ou interfaces para
proporcionar comportamentos polimórficos

43
Polimorfismo Dinâmico

44
7. Invenção Pura
❏ Inventa uma classe que não representa um conceito do problema
do domínio com o objetivo de alcançar baixo acoplamento e alta
coesão
❏ Exemplo: a classe GerenciadorDeBancoDeDados é uma
fabricação pura que gerencia operações de banco de dados.

45
Exemplo

46
8. Indireção
❏ Introduz um intermediário entre dois componentes para
desacoplar os componentes e permitir variação independente
❏ Exemplo: A classe PedidoService é um intermediário entre
PedidoController e Pedido, permitindo a variação independente.

47
Exemplo

48
9. Variações Protegidas
❏ Protege os elementos de variações e instabilidades encapsulando
o foco de instabilidade
❏ Por exemplo, podemos fazer a nossa aplicação utilizar uma
interface de “Serviço de Armazenamento” (abstração) em vez de
utilizar implementações específicas

49
Exemplo

50
Exercícios
(CESPE / CEBRASPE - 2022 – BANRISUL) Entre os padrões definidos pelo GRASP,
destacam-se baixa coesão e alto acoplamento.

(CESPE - 2017 – SEDF) No padrão GRASP, a alta coesão (high cohesion) serve para
mensurar quão fortemente uma classe está conectada a outras classes.

(CESPE – 2013 – SUFRAMA) Enquanto os padrões GRASP refletem práticas mais pontuais
da aplicação de técnicas orientadas a objetos, os padrões de projeto GoF (Gang of Four)
exploram soluções mais específicas. Dessa forma, não há, no GRASP, um padrão que ajude
a solucionar, por exemplo, a definição de qual classe deve ser a responsável por lidar com
um evento de determinada interface.

51

OBRIGADO!
Prof. Fernando Pedrosa

52
SEGURANÇA CIBERNÉTICA E
DA INFORMAÇÃO
Prof. André Castro

Língua Espanhola
Prof. Adinoél Sebastião

53

@ProfAndreCastro

/ProfAndreCastro

t.me/professorandrecastro

andrecastroprofessor@gmail.com

@estrategiaconcursosti

http://t.me/estrategia_ti

http://anchor.fm/estrategia-tech

54
NIST SP 800-53
Tem como foco o estabelecimento de controles e práticas de defesa e resposta. O
objetivo base é que esses controles, havendo ou não, sejam identificados para fazer
frente à gestão de riscos da organização e consequentemente os níveis de segurança e
privacidade estabelecidos.

Prof. André Castro

55

NIST SP 800-53
Tem como foco o estabelecimento de controles e práticas de defesa e resposta. O
objetivo base é que esses controles, havendo ou não, sejam identificados para fazer
frente à gestão de riscos da organização e consequentemente os níveis de segurança e
privacidade estabelecidos.

Prof. André Castro

56
NIST SP 800-53
Toda a parte de desenvolvimento, implantação, avaliação e autorização são considerados. Cada
abordagem traz uma forma de contribuição a depender do momento, estratégia e objetivos da
organização. São elas:
a) Abordagem de implantação comum – Traz uma visão ampla e completa do sistema, buscando
a integração e evolução completa dos diversos controles. É um processo mais lento e caro,
porém, traz a completude esperada de um sistema de segurança da informação.

a) Abordagem de implantação para sistema específico – Geralmente possui escopo restrito e


focado, com menor custo de entrada e ganhos rápidos para determinadas verticais. A partir
de uma avaliação bem-feita transversal, pode-se chegar a conclusão que alguns itens merecem
atenção mais imediata.

a) Abordagem Híbrida – Traz uma visão de equilíbrio de esforço e tempo, buscando congregar
um conjunto de controles para um contexto organizacional relevante, com impacto em setores
específicos da organização.

Prof. André Castro

57

NIST SP 800-53
Toda a parte de desenvolvimento, implantação, avaliação e autorização são considerados. Cada
abordagem traz uma forma de contribuição a depender do momento, estratégia e objetivos da
organização. São elas:
a) Abordagem de implantação comum – Traz uma visão ampla e completa do sistema, buscando
a integração e evolução completa dos diversos controles. É um processo mais lento e caro,
porém, traz a completude esperada de um sistema de segurança da informação.

a) Abordagem de implantação para sistema específico – Geralmente possui escopo restrito e


focado, com menor custo de entrada e ganhos rápidos para determinadas verticais. A partir
de uma avaliação bem-feita transversal, pode-se chegar a conclusão que alguns itens merecem
atenção mais imediata.

a) Abordagem Híbrida – Traz uma visão de equilíbrio de esforço e tempo, buscando congregar
um conjunto de controles para um contexto organizacional relevante, com impacto em setores
específicos da organização.

Prof. André Castro

58
NIST SP 800-53
1.Low (Baixo): Refere-se a informações cuja divulgação, alteração ou destruição não teria um
impacto substancial nos objetivos da organização, na sua reputação ou nas suas operações. A
exposição dessas informações pode resultar em algum inconveniente, mas não causaria danos
significativos.

2.Moderate (Moderado): Aplica-se a informações cuja divulgação, alteração ou destruição teria


um impacto significativo nos objetivos da organização, na sua reputação ou nas suas operações,
mas que não levaria a consequências catastróficas.

3.High (Alto): Refere-se a informações cuja divulgação, alteração ou destruição teria um impacto
grave ou catastrófico nos objetivos da organização, na sua reputação ou nas suas operações.
Essas informações são críticas para a missão da organização, e a sua exposição pode resultar em
danos extremamente significativos.

Prof. André Castro

59

FGV - 2023 - TJ-SE - Analista Judiciário - Especialidade -


Análise de Sistemas - Suporte Técnico em Infraestrutura
A empresa Y foi contratada por uma fabricante de software para verificar uma quebra de segurança, com
perda da confidencialidade ocorrida na empresa, e suas consequências. Em seu relatório, a empresa Y
informou que:

- houve uma perda financeira limitada;

- ocorreram danos limitados nos recursos da organização;

- a organização consegue realizar suas funções primárias, mas com a eficiência delas notadamente reduzida.

A partir dessas caraterísticas, a empresa Y informou que o nível de impacto sobre a organização foi:

A baixo;

B alto;

C moderado;

D muito baixo;

E muito alto.
Prof. André Castro

60
NIST – RMF - Risk Management Framework
PREPARAR Atividades essenciais para preparar a organização para gerenciar riscos de
segurança e privacidade
CATEGORIZAR Categorizar o sistema e a informação processada, armazenada ou transmitida
com base em análise de impacto
SELECIONAR Selecionar o conjunto de controles do NIST SP 800-53 para proteger o sistema
com base na avaliação de risco
IMPLEMENTAR Implementar os controles e gerar a documentação de como os controles foram
implementados
AVALIAR Avaliar para determinar se os controles estão implantados, operacionais como
esperado e produzindo os resultados desejados
AUTORIZAR Gestores tomam decisões com base nos riscos para autorizar o sistema a
operar
MONITORAR Monitorar continuamente a implementação dos controles e riscos do sistema.

Prof. André Castro

61

NIST – RMF - Risk Management Framework


Três camadas:
a) Level 1 – Organização – Líderes
estratégico que são responsáveis por
proverem as diretrizes e visão estratégica
b) Level 2 – Missão e Processos de Negócio
– A partir do entendimento da visão
estratégica, a camada tática é responsável
por planejar, executar e gerenciar os
projetos
c) Level 3 – Sistemas de Informação –
Indivíduos e equipes de operação
responsáveis por desenvolver, implementar,
operar e sustentar os sistemas que
operacionalizam o negócio da organização.
Prof. André Castro

62
MITRE ATT&CK - Adversarial Tactics, Techniques, and
Common Knowledge

"é uma estrutura aberta para implementar programas de detecção e


resposta de segurança cibernética .

O MITRE ATT&CK® é um framework de conhecimento de


cibersegurança que descreve as táticas, técnicas e
procedimentos (TTPs) usados por atores que apresentam
diferentes formas de ameaças. Ele é usado por profissionais
de segurança para entender como os ataques ocorrem e
para desenvolver defesas mais eficazes.

Prof. André Castro

63

MITRE ATT&CK - Adversarial Tactics, Techniques, and


Common Knowledge
Os TTPs descrevem o comportamento adversário. Eles nos ajudam a entrar na
mente dos atores que nos atacam:
 As táticas descrevem objetivos táticos – o “porquê”. Por exemplo, a tática
de acesso a credenciais para obter credenciais privilegiadas para ajudar
o adversário a se mover lateralmente de servidor para servidor enquanto
procura dados confidenciais.
 Técnicas e subtécnicas são o “como”, descrevendo ferramentas ou
métodos específicos para executar táticas. Por exemplo, obtenha
credenciais raspando a memória do processo em um servidor Windows.
 Procedimentos são etapas mais detalhadas para executar as técnicas. Por
exemplo, usando Sysinternals ProcDump para despejar um processo LSASS
da memória e, em seguida, usando Mimikatz para extrair credenciais.

Prof. André Castro

64
MITRE ATT&CK - Adversarial Tactics, Techniques, and
Common Knowledge
Com o MITRE ATT&CK® é possível:
 Identificar vulnerabilidades: o MITRE ATT&CK® pode ser usado para
identificar vulnerabilidades que podem ser exploradas por atores de
ameaças.
 Desenvolver defesas: o MITRE ATT&CK® pode ser usado para
desenvolver defesas que sejam eficazes contra as táticas e técnicas usadas
por atores de ameaças.
 Investigar incidentes: o MITRE ATT&CK® pode ser usado para investigar
incidentes de segurança para identificar as táticas e técnicas usadas pelos
atores de ameaças.

Prof. André Castro

65

MITRE ATT&CK - Adversarial Tactics, Techniques, and


Common Knowledge
O MITRE ATT&CK é dividido é três tipos de matrizes, a saber:
1. Empresarial ou Enterprise
2. Dispositivos Móveis
3. Sistemas de controle industrial (ICS)

Prof. André Castro

66
MITRE ATT&CK - Adversarial Tactics, Techniques, and
Common Knowledge
Nome Descrição
Reconhecimento O adversário está tentando reunir informações que
possam usar para planejar operações futuras.

Desenvolvimento de Recursos O adversário está tentando estabelecer recursos


que possam usar para apoiar as operações.
Acesso Inicial O adversário está tentando entrar na sua rede.

Execução O adversário está tentando executar código


malicioso.
Persistência O adversário está tentando manter sua posição.

Escalação de privilégios O adversário está tentando obter permissões de


nível superior.
Evasão de Defesa O adversário está tentando evitar ser detectado.

Acesso a credenciais O adversário está tentando roubar nomes de


contas e senhas.
Descoberta O adversário está tentando descobrir o seu
ambiente.
Movimento lateral O adversário está tentando se mover pelo seu
ambiente.
Coleção O adversário está tentando coletar dados de
interesse para seu objetivo.
Comando e controle O adversário está tentando se comunicar com
sistemas comprometidos para controlá-los.
Exfiltração O adversário está tentando roubar dados.

Impacto O adversário está tentando manipular, interromper


ou destruir seus sistemas e dados.
Prof. André Castro

67

CyBOK – Cybersecurity Body of Knowledge

O CyBOK – Cybersecurity Body of Knowledge é um framework de conhecimento de


cibersegurança que fornece uma visão abrangente no contexto de cibersegurança.

O CyBOK é organizado em cinco domínios principais:


1. Governança e estratégia: este domínio trata de como as organizações
devem gerenciar e proteger sua segurança cibernética.
2. Risco e impacto: este domínio trata de como avaliar e gerenciar os riscos
de segurança cibernética.
3. Tecnologia: este domínio trata das tecnologias e ferramentas usadas
para proteger a segurança cibernética.
4. Pessoas: este domínio trata da importância da conscientização e
educação em segurança cibernética.
5. Operações: este domínio trata das operações de segurança cibernética,
como detecção e resposta a incidentes.
Prof. André Castro

68
CyBOK – Cybersecurity Body of Knowledge

Prof. André Castro

69

NIST – CSF - Cybersecurity Framework

Prof. André Castro

70
NIST SP 800-61 - Computer Security Incident
Handling Guide

Guia de referência para o gerenciamento de incidentes de segurança


cibernética. Ele fornece diretrizes para organizações de todos os
tamanhos e setores para estabelecer, implementar e manter um
programa de gerenciamento de incidentes eficaz.

Prof. André Castro

71

NIST SP 800-61 - Computer Security Incident


Handling Guide
O NIST funciona com base em 6 perspectivas:
1. Estabelecimento de um Programa de Resposta a Incidentes: O guia descreve os elementos essenciais
para estabelecer e manter um programa eficaz de resposta a incidentes de segurança cibernética. Isso
inclui a criação de políticas, processos e procedimentos.
2. Classificação e Categorização de Incidentes: Fornece orientações sobre como classificar e categorizar
incidentes de segurança cibernética, ajudando as organizações a entender a natureza e a gravidade dos
incidentes.
3. Fases do Ciclo de Vida de Resposta a Incidentes: O guia detalha as diferentes fases do ciclo de vida de
resposta a incidentes, incluindo a preparação, detecção, análise, contenção, erradicação, recuperação e
lições aprendidas.
4. Papéis e Responsabilidades: Define os papéis e responsabilidades dos membros da equipe de resposta
a incidentes, incluindo coordenadores, analistas e especialistas técnicos.
5. Coleta de Evidências: Oferece orientações sobre a coleta, preservação e análise de evidências
relacionadas a incidentes, garantindo a conformidade legal e a capacidade de aprender com os
incidentes.
6. Comunicação e Relato: Aborda a comunicação eficaz durante e após um incidente, incluindo relatórios
internos e externos, garantindo transparência e colaboração.
Prof. André Castro

72
NIST SP 800-61 - Computer Security Incident
Handling Guide

Prof. André Castro

73

NIST SP 800-61 - Computer Security Incident


Handling Guide
O NIST funciona com base em 6 perspectivas:
1. Estabelecimento de um Programa de Resposta a Incidentes: O guia descreve os elementos essenciais
para estabelecer e manter um programa eficaz de resposta a incidentes de segurança cibernética. Isso
inclui a criação de políticas, processos e procedimentos.
2. Classificação e Categorização de Incidentes: Fornece orientações sobre como classificar e categorizar
incidentes de segurança cibernética, ajudando as organizações a entender a natureza e a gravidade dos
incidentes.
3. Fases do Ciclo de Vida de Resposta a Incidentes: O guia detalha as diferentes fases do ciclo de vida de
resposta a incidentes, incluindo a preparação, detecção, análise, contenção, erradicação, recuperação e
lições aprendidas.
4. Papéis e Responsabilidades: Define os papéis e responsabilidades dos membros da equipe de resposta
a incidentes, incluindo coordenadores, analistas e especialistas técnicos.
5. Coleta de Evidências: Oferece orientações sobre a coleta, preservação e análise de evidências
relacionadas a incidentes, garantindo a conformidade legal e a capacidade de aprender com os
incidentes.
6. Comunicação e Relato: Aborda a comunicação eficaz durante e após um incidente, incluindo relatórios
internos e externos, garantindo transparência e colaboração.
Prof. André Castro

74
NIST SP 800-61 - Computer Security Incident
Handling Guide
Em uma outra perspectiva, há previsão dos modelos de times que podem ser desenhados:
I. Equipe Central de Resposta a Incidentes. Uma única equipe de resposta a incidentes lida com incidentes em toda a
organização. Este modelo é eficaz para pequenas organizações e para organizações com diversidade geográfica
em termos de recursos computacionais.
II. Equipes distribuídas de resposta a incidentes. A organização possui diversas equipes de resposta a incidentes,
cada uma responsável por um determinado segmento lógico ou físico da organização. Este modelo é eficaz para
grandes organizações (por exemplo, uma equipe por divisão) e para organizações com grandes recursos em locais
distantes (por exemplo, uma equipe por região geográfica, uma equipe por instalação principal). Contudo, as
equipes devem fazer parte de uma única entidade coordenada para que o processo de resposta a incidentes é
consistente em toda a organização e as informações são compartilhadas entre as equipes. Isto é particularmente
importante porque várias equipes podem ver componentes do mesmo incidente ou podem lidar com problemas
semelhantes. incidentes.
III. Equipe Coordenadora. Uma equipe de resposta a incidentes fornece aconselhamento a outras equipes em ter que
autoridade sobre essas equipes - por exemplo, uma equipe de todo o departamento pode ajudar agências
individuais equipes. Este modelo pode ser considerado um CSIRT para CSIRTs. Porque o foco deste documento é
CSIRTs centrais e distribuídas, o modelo da equipe de coordenação não é abordado em detalhes neste documento.

Prof. André Castro

75

NIST SP 800-61 - Computer Security Incident


Handling Guide

Prof. André Castro

76
SANS Incident Handler’s Handbook

Prof. André Castro

77

SANS Incident Handler’s Handbook

Prof. André Castro

78
ISO 27005 - Estrutura
SEÇÕES:
1. Visão Geral do Processo de Gestão de Riscos de
Segurança da Informação – Seção 6;
2. Definição do contexto - Seção 7;
3. Processo de avaliação dos riscos - Seção 8;
4. Tratamento do risco - Seção 9;
5. Aceitação do risco - Seção 10;
6. Comunicação e consulta do risco - Seção 11;
7. Monitoramento e análise crítica de riscos - Seção 12;

Segurança da Informação
Prof. André Castro

79

ISO 27005 - PDCA


Processos do SGSI Processos do GRSI
Definição do Contexto
Processo de Análise e
Avaliação dos Riscos
PLANEJAR
Definição do Plano de
Tratamento dos Riscos
Aceitação do Risco
Implementação do Plano de
EXECUTAR
Tratamento do Risco.
Monitoramento contínuo e
VERIFICAR
análise crítica de riscos.
Manter e Melhorar o
processo de Gestão de
AGIR
Riscos de Segurança da
Informação.

Segurança da Informação
Prof. André Castro

80
Seção 8 - Processo de avaliação de
riscos de segurança da informação
2. Identificação de Riscos
1. Identificação dos Ativos;
2. Identificação das Ameaças;
3. Identificação dos Controles existentes;
4. Identificação das vulnerabilidades;
5. Identificação das consequências;

Segurança da Informação
Prof. André Castro

81

FGV - 2023 - TJ-SE - Analista Judiciário - Especialidade -


Análise de Sistemas - Suporte Técnico em Infraestrutura
A sala de servidores tem um grande valor para o TJSE. Para iniciar o processo de avaliação de riscos da sala, o
analista de Segurança da Informação Pedro solicitou uma lista dos servidores físicos e das máquinas virtuais
instaladas com os respectivos sistemas e serviços em produção, além dos processos de negócio associados.

De acordo com a ABNT NBR ISO/IEC 27005:2019, para executar a primeira etapa da identificação de risco,
aquela que antecede todas as demais etapas, Pedro irá utilizar a lista fornecida para identificar os(as):

A ativos;

B ameaças;

C consequências;

D vulnerabilidades;

E controles existentes.

Prof. André Castro

82
Seção 8 - Processo de avaliação de
riscos de segurança da informação
3. Análise de Riscos – Metodologias de Análise de Riscos

Análise Qualitativa (Menos Complexa):


1. Tratará aspectos subjetivos na análise.
2. Considera a magnitude das consequências potenciais (ex. pequena, média e
grande);
3. Considera a probabilidade dessas consequências ocorrerem;
4. Possui como vantagem a facilidade de compreensão;
5. Como desvantagem, podemos elencar o próprio fator subjetivo de classificação,
que não é uma regra mais precisa e exata;
6. Convém que esta análise sempre utilize informações e dados factuais quando
disponíveis;

Segurança da Informação
Prof. André Castro

83

Seção 8 - Processo de avaliação de


riscos de segurança da informação
3. Análise de Riscos – Metodologias de Análise de Riscos

Análise Quantitativa (Mais Complexa):


1. Possui uma escala mais precisa e de valores numéricos, tanto para as consequências
como para as probabilidades, buscando dados de diversas fontes;
2. A qualidade da análise depende da exatidão e da integralidade dos valores
numéricos e da validade dos modelos utilizados;
3. Utiliza dados históricos dos incidentes, sendo esta uma vantagem no
relacionamento direto aos objetivos de segurança da informação;
4. Como desvantagem, é que sempre haverá ausência de dados históricos para novos
riscos ou fragilidades. Além disso, quando os dados factuais e auditáveis não estão
disponíveis.

Segurança da Informação
Prof. André Castro

84
Seção 9 - Tratamento do risco de
segurança da informação
1. Descrição Geral do processo de tratamento do risco

As quatro opções para o tratamento do


risco NÃO são mutuamente exclusivas.

Segurança da Informação
Prof. André Castro

85

FGV/CGU/2022
João foi contratado para fazer a gestão de risco em um órgão público de acordo com as
diretrizes para o processo de gestão de riscos de segurança da informação estabelecidas na
norma ABNT NBR ISO/IEC 27005:2019. João está trabalhando em sua tarefa incluindo,
excluindo e alterando alguns controles. Com isso poderá avaliar os riscos residuais e considerá-
los aceitáveis ou não. A etapa do processo de gestão de riscos de segurança da informação em
que João está trabalhando é:
A definição do contexto;
B processo de avaliação de riscos;
C tratamento de riscos;
D aceitação de riscos;
E monitoramento e análise crítica dos riscos.

Prof. André Castro

86
FGV - 2023 - AL-MA - Técnico de Gestão Administrativa -
Analista de Sistemas
A norma NBR ISO/IEC 27005:2019 fornece diretrizes para a gestão de riscos de segurança da informação em
uma organização. De acordo com esta norma, é conveniente que

A o nível de risco seja determinado para todos os cenários de incidentes relevantes.

B seja dada atenção unicamente a incidentes que causem consequências de natureza permanente.

C o valor do impacto ao negócio seja sempre expresso de forma quantitativa.

D controles para modificar, reter ou compartilhar os riscos sejam prontamente evitados.

E sejam identificados somente os riscos cujas fontes estejam sob controle da organização.

Prof. André Castro

87

OBRIGADO!
Prof. André Castro

88
ARQUITETURA DE INFRAESTRUTURA
DE TECNOLOGIA DA INFORMAÇÃO E
COMUNICAÇÃO
Prof. Thiago Cavalcanti

Língua Espanhola
Prof. Adinoél Sebastião

89

Ementa
 Banco de Dados. Conhecimentos de Sistemas Gerenciadores de Banco de Dados
(SGBD) relacionais Oracle Database Server, Microsoft SQL Server e PostgreSQL.
Instalação e configuração. Administração (infraestrutura e aplicação). Backup e
recuperação. Ajuste de desempenho de banco de dados. Bancos de dados NoSQL.
Linguagem SQL e linguagem de programação para banco de dados. Ajuste de
desempenho de aplicação. Ajuste de desempenho de comandos de SQL. Tolerância
a falhas e continuidade de operação. Auditoria de banco de dados. Configuração
de auditoria de dados. Produção de relatórios de auditoria. SQL (Procedural
Language / Structured Query Language)
 Ciência de Dados. Gestão e Análise de Dados. SGBDs SQL e NOSQL. Modelagens de
dados. Painéis de dados. Data warehouse. Data lake. Data mart. Data staging area.
Data mining. Big data. ETL. MOLAP. ROLAP. HOLAP. Análise exploratória de dados.
Governança de Dados. Inteligência Artificial. Aprendizado de máquina. Deep
learning. Treinamento de modelos de Inteligência Artificial. Processamento de
linguagem natural. Transfer Learning. Python.

90
BANCO DE DADOS

91

Bancos de dados NoSQL

92
O que é SQL (Structured Query
Language )?
 SQL é uma linguagem de programação reconhecida
internacionalmente usada para definição e manutenção de bancos de
dados relacionais
 Não existe fora do universo relacional
– É fundamentada no modelo relacional
 É declarativa:
– Os detalhes de implementação são deixados para os SGBDs
relacionais.

93

Questão 01.
FGV - 2023 - Analista (DPE RS)/Apoio Especializado (TI)/Banco de Dados
Na questão a seguir, considere a tabela R1, cuja instância é exibida a seguir.
Com referência à tabela R1, como descrita anteriormente, analise o comando SQL a seguir.
update R1
set B=0
where C in (31,32) or C = null
O conjunto completo de linhas afetadas pela execução desse comando é:
A a primeira e a terceira;
B a segunda e a quarta;
C a terceira e a quinta;
D a primeira, a segunda e a quarta;
E a segunda, a terceira e a quinta.

94
Questão 02.
FGV - 2023 - Auditor Fiscal da Receita Federal do Brasil/Geral
Os principais Sistemas Gerenciadores de Bancos de Dados oferecem total suporte à linguagem SQL; um
aspecto importante da implementação do SQL é o tratamento para valores nulos, quando a lógica admite
três estados.
T – true F – false ? – unknown
Nesse contexto, considere as expressões lógicas a seguir.
I. (T OR F) AND (? OR T)
II. T AND ((? OR F) OR ?)
III. NOT (? AND (? AND ?))
Com relação às expressões acima, está correto afirmar que o valor final é unknown (?) em
A I, apenas. B I e II, apenas.
C I e III, apenas. D II e III, apenas.
E I, II e III.

95

Questão 03.
FGV - 2023 - Analista Tributário da Receita Federal do Brasil/Geral
Os principais Sistemas Gerenciadores de Bancos de Dados oferecem total suporte à
linguagem SQL. Um aspecto importante da implementação do SQL é o tratamento para
valores nulos quando esses são considerados como unknown values.
Nesse contexto, considere uma tabela T com colunas A e B, que podem conter valores
nulos. T possui 100 registros e, em 50% das linhas, há pelo menos uma coluna preenchida
com o valor NULL.
Considere a consulta a seguir:
SELECT * FROM T t1
WHERE t1.A = NULL or t1.B = NULL
O número máximo de linhas de resultados que seriam retornadas pela consulta é igual a
A 0. B 25. C 50. D 75. E 100.

96
97

98
Restrições de integridade
 São definidas nos comandos DDL (create e/ou alter)
– PRIMARY KEY
– UNIQUE
– CHECK
– NOT NULL
– DEFAULT
– FOREING KEY

99

100
CIÊNCIA DE DADOS

101

Data Lake

102
Ainda sobre as zonas

103

Treinamento de modelos
 Alimente o conjunto de treinamento para o algoritmo, permitindo que
o modelo ajuste seus parâmetros internos para minimizar uma função
de perda.
 Use técnicas como gradiente descendente para otimizar os
parâmetros do modelo.
 Monitore o processo de treinamento para evitar problemas como
overfitting, em que o modelo tem um bom desempenho nos dados de
treinamento, mas um desempenho ruim em dados não vistos.

104
Processamento de Linguagem
Natural (PLN)
 A PLN é uma abordagem baseada em princípios
para processar a linguagem humana.
 Um subcampo da inteligência artificial (IA) que
se refere a abordagens computacionais para
processar, compreender e gerar a linguagem
humana.
 A razão pela qual faz parte da IA é porque o
processamento da linguagem é considerado
uma característica da inteligência humana.

105

Entendimento da Aprendizado de Geração de


linguagem natural máquina Linguagem

Qual a política de
devolução da loja? Processa o que está Determinar qual a Devolver a resposta em
sendo dito. resposta correta um formato adequado

Podemos devolver seu


dinheiro até em 7 dias
após a compra.

Processamento de Linguagem Natural

106
Tokenização
 Tokenização é um processo em que o texto de entrada é dividido em
unidades menores. Existem dois tipos de tokenização:
– A tokenização de palavras que divide uma frase em tokens
(equivalente a palavras e pontuação)
– A tokenização de frases que divide um trecho de texto incluindo
possivelmente mais de uma frase em frases individuais.
 Se você ouvir falar em tokenização, geralmente trata-se de
tokenização de palavras em PLN.

>>> import nltk


>>> from nltk.tokenize import word_tokenize, sent_tokenize

107

Stemming
 Stemming é um processo para identificar radicais de palavras.
 Um radical de palavra é a parte principal de uma palavra após a
remoção de seus afixos (prefixos e sufixos).
 Por exemplo, a palavra radical de “maçãs” (plural) é “maçã”.

108
Lemmatização
 Um lema é a forma original de uma palavra que você costuma
encontrar como palavra-chave em um dicionário.
 É também a forma básica da palavra antes da inflexão.
 Por exemplo, o lema de "reuniões" (como um substantivo no plural) é
"reunião".

109

Stop-words
 Uma palavra de parada é uma palavra comumente usada que um
mecanismo de pesquisa foi programado para ignorar, tanto ao indexar
entradas para pesquisa quanto ao recuperá-las como resultado de
uma consulta de pesquisa.
 Essas palavras não devem ocupar espaço no banco de dados ou nem
gastar o tempo valioso de processamento.
 Para isso, podemos removê-los facilmente, armazenando uma lista de
palavras que são consideradas Stop-Words.

110
Nuvem de palavras de StopWords

111

Elementos básicos da linguagem


 Caracteres - também chamado de grafema em linguística, é a menor
unidade de um sistema de escrita.
– Não carregam necessariamente um significado
 Palavras - é a menor unidade em um idioma que pode ser pronunciada
independentemente e que geralmente carrega algum significado
 Frases - é um grupo de palavras que desempenham um determinado
papel gramatical.

112
N-gramas
 Um n-grama é uma sequência contígua de uma ou mais ocorrências
de unidades linguísticas, como caracteres e palavras.
 Em uma frase um n-grama pode conter unidades linguisticamente
relevantes.
 n-gramas de caracteres são usados quando queremos capturar
unidades de subpalavra que correspondem aproximadamente a
morfemas

113

N-grams
 Usamos n-gramas e as probabilidades de ocorrências de certas
palavras em certas sequências pode melhorar as previsões dos
sistemas de autocompletar.
 Da mesma forma, usamos PNL e n-gramas para treinar robôs
assistentes pessoais baseados em voz.
 Por exemplo, usando um modelo de treinamento de 3 gramas ou
trigramas, um bot será capaz de entender a diferença entre frases
como "qual a temperatura?" e "definir a temperatura."

114
TF-IDF.

𝑁ú𝑚𝑒𝑟𝑜 𝑑𝑒 𝑜𝑐𝑜𝑟𝑟ê𝑛𝑐𝑖𝑎𝑠 𝑑𝑜 𝑡𝑒𝑟𝑚𝑜 𝒕 𝑛𝑜 𝑑𝑜𝑐𝑢𝑚𝑒𝑛𝑡𝑜 𝒅


𝑇𝐹 𝑡, 𝑑 =
𝑇𝑜𝑡𝑎𝑙 𝑑𝑒 𝑡𝑒𝑟𝑚𝑜𝑠 𝑛𝑜 𝑑𝑜𝑐𝑢𝑚𝑒𝑛𝑡𝑜 𝒅

𝑁ú𝑚𝑒𝑟𝑜 𝑡𝑜𝑡𝑎𝑙 𝑑𝑒 𝑑𝑜𝑐𝑢𝑚𝑒𝑛𝑡𝑜𝑠 𝑒𝑚 𝑢𝑚 𝑐𝑜𝑟𝑝𝑜𝑠


𝐼𝐷𝐹 𝑡 = 𝑙𝑜𝑔
𝑁ú𝑚𝑒𝑟𝑜 𝑑𝑒 𝑑𝑜𝑐𝑢𝑚𝑒𝑛𝑡𝑜𝑠 𝑒𝑚 𝑞𝑢𝑒 𝑜 𝑡𝑒𝑟𝑚𝑜 𝒕 𝑎𝑝𝑎𝑟𝑒𝑐𝑒

115

Processamento de linguagem natural

116
Redes Neurais Recorrentes

117

Boa prova!

118
OBRIGADO!
Prof. Thiago Cavalcanti

119

ARQUITETURA DE SISTEMAS DE
INFORMAÇÃO
Prof. Raphael Lacerda

https://www.instagram.com/p/B74PyOzj5V3/
Língua Espanhola https://www.estrategiaconcursos.com.br/blog/prazer-um-eterno-estudante/
Prof. Adinoél Sebastião

120
@canetas.pretas

@canetaspretas

https://www.youtube.com/@canetaspretas

DICAS E AGENDA!

121

AGORA EM ÁUDIO TBM!

122
@canetas.pretas

SEU LUGAR É AQUI!!!

123

#SERVERLESS

Prof. Raphael Lacerda

124
Histórico

125

Motivação
● …

126
SOA - Same Old Architecture

Serverless Computing - DevOps.com

127

Serverless vs FaaS vs BaaS vs mBaaS


Serverless architectures are application designs that
incorporate third-party “Backend as a Service” (BaaS)
services, and/or that include custom code run in managed,
ephemeral containers on a “Functions as a Service” (FaaS)
platform

Serverless Architectures (martinfowler.com)

described Serverless as being the union


https://acropolium.com/blog/baas-vs-faas
of two ideas: Backend as a Service and
Functions as a Service.
What is BaaS? Backend as a Service explained
(back4app.com)

The first offering from Amazon Web Service


(AWS) was the Simple Storage Service (S3). S3
allows you to store as many files as you like
without having to provision any infrastructure. It is
serverless storage.

Introduction to Serverless - Learning Serverless [Book] What is FaaS (Function-as-a-Service)? | IBM


(oreilly.com)

128
Evolução

O que é função como serviço (FaaS)? |


Cloudflare

129

Serverless vs PaaS The key operational difference between


FaaS and PaaS is scaling. Generally with
a PaaS you still need to think about how
to scale—for example, with Heroku, how
many Dynos do you want to run? With a
FaaS application this is completely
transparent.

Adrian Cockcroft is vice president of cloud architecture


strategy at Amazon Web Services,

Serverless Architectures (martinfowler.com) What is BaaS? Backend as a Service


explained (back4app.com)

130
Serverless vs NoOPS
Serverless doesn’t mean "No Ops"—
though it might mean “No sysadmin”
depending on how far down the
Serverless rabbit hole you go.

Introduction to Serverless - Learning


Serverless [Book] (oreilly.com) Serverless Architectures (martinfowler.com)

131

Third-Party services

Serverless Architectures (martinfowler.com)

132
API Gateways

kubernetes - Ingress controller vs api


gateway - Stack Overflow

How Do I Choose? API Gateway vs. Ingress


Controller vs. Service Mesh - NGINX Serverless Architectures (martinfowler.com)

133

Atributos Principais

134
Passos
● …

135

Características
Knative Serving provides automatic scaling, or
● Zero pay autoscaling, for applications to match incoming
demand. This is provided by default, by using the
● Auto Scaling Knative Pod Autoscaler (KPA).
● Elasticidade For example, if an application is receiving no traffic
● Fast Startup and scale to zero is enabled, Knative Serving scales
the application down to zero replicas. If scaling to
zero is disabled, the application is scaled down to the
minimum number of replicas specified for
applications on the cluster. Replicas are scaled up to
meet demand if traffic to the application increases.

About autoscaling - Knative

136
137

Exemplo

IBM/ibm-cloud-functions-rest-api-trigger: IBM
Design a serverless REST API - IBM cloud Cloud Functions building block - HTTP REST
functions and cloudant (dipankarmaikap.com) Trigger - This project provides a starting point
for handling events from REST API calls with
IBM Cloud Functions powered by Apache
OpenWhisk. (github.com)

138
OpenFaaS

OpenFaaS - Run Containerized Functions


On Your Own Terms (iximiuz.com)

139

OpenFaaS

OpenFaaS - Run Containerized Functions


On Your Own Terms (iximiuz.com)

140
Exemplo Knative

knative-sample/helloworld-go: Knative
helloworld-go (github.com)

Autoscale Sample App - Go - Knative (285) Knative: Scaling From 0 to Infinity -


Joseph Burnett & Mark Chmarny, Google -
YouTube

141

Trade-offs
● Desvantagens
○ ColdStart
○ Segurança
○ Privacidade
○ Vendor Lock-in
○ long running process (código nativo x interpretado)

Serverless Computing: Uses, Advantages,


and Disadvantages | Okta

142
Cold Start

Solving Cold Starts in Serverless


Architecture | Built In

Understanding serverless cold start | Blog e Can We Solve Serverless Cold Starts? |
atualizações do Azure | Microsoft Azure Dashbird

143

@canetas.pretas

OBJECT STORE

144
O que é? You don’t have to worry about
provisioning drives or backups,
or the many other previous
issues with storing files. Sure, S3
may not serve all file-storage
purposes; it does have a
maximum file size of 5 GB. Or it
did until 2010, when this
maximum was updated to 5 TB.
How did they do it? AWS does
all the heavy lifting on your
behalf, splitting up files that are
above 5 GB into multiple chunks
in a way that is fully seamless to
the user.
Introduction to Serverless - Learning
Serverless [Book] (oreilly.com)

145

How it Works? /articles/john.doe/2022-01-02-


MinIO-Object-Storage.md

Object Management — MinIO Object Storage


for Linux

With a native Kubernetes operator


integration, MinIO supports all the major
MinIO | Enterprise Grade, High Performance
Object Storage
Kubernetes distributions on public, private
and edge clouds.

146
Versioning

Object Management — MinIO Object Storage


Bucket Versioning — MinIO Object Storage
for Linux
for Linux

147

WORM

Object Management — MinIO Object Storage


MinIO Object Locking — MinIO Object
for Linux Storage for Linux

148
How it Works?

https://min.io/docs/minio/kubernetes/upstream/administration/concepts.htm

Bucket Replication — MinIO Object Storage


for Linux

149

HDFS vs MinIO vs S3 Cloud-Native


Hadoop was designed for MapReduce computing,
where data and compute had to be co-located. As
Modern Data Ready a result, Hadoop needs its own job scheduler,
Hadoop was purpose built for machine data where “unstructured data” resource manager, storage and compute. This is
means large (GiB to TiB sized) log files. When used as a general fundamentally incompatible with container based
purpose storage platform where true unstructured data is in play, the architectures where everything is elastic,
prevalence of small objects (KB to MB) greatly impairs Hadoop HDFS
lightweight and multi-tenant.
as the name nodes were never designed to scale in this fashion.
MinIO excels at any file/object size (0 to 5TiB).

Migrating from HDFS to Object Storage - Performance comparison between MinIO and
MinIO HDFS for MapReduce Workloads

150
HDFS vs MinIO vs S3

Few would argue with the statement


that Hadoop HDFS is in decline. In
fact, the HDFS part of the Hadoop
ecosystem is in more than just decline
- it is in freefall.

By co-locating compute and data on


the same nodes, HDFS overcame the
HDFS vs. MinIO on the 1TB MapReduce limitations of slow network access to
Benchmark (Sort, Terasort, Wordcount) data

151

visões mais imparciais

Object Storage vs. HDFS - Which is Better? | Triniti

152
QUESTÕES

Prof. Raphael Lacerda

153

SEFAZ-MG/2023
Computação serverless é um modelo de execução de computação na nuvem no qual o provedor aloca recursos sob demanda,
cuidando dos servidores em nome de seus clientes.

Em relação ao modelo de computação serverless, assinale a afirmativa incorreta.

A Os serviços de funções de nuvem também são chamados de Function-as-a-Service (FaaS), e computação serverless é atualmente
FaaS + BaaS (Back-end as a Service).

B As funções de nuvem usam programação stateless e stateful de estilo funcional na linguagem de sua escolha, geralmente JavaScript
ou Python.

C A computação serverless fornece uma abstração que oculta os servidores e a complexidade de programá-los e operá-los.

D A computação serverless oferece um modelo de custo pay-asyou-go, em vez de um modelo baseado em reserva, para que não haja
cobrança por recursos ociosos.

E A computação serverless tem a capacidade de escalonamento automático de recursos para corresponder à demanda, de zero a
praticamente infinito.

154
SEFAZ-MG/2023
Em computação serverless há um custo de latência para reatribuir recursos de um cliente para outro, o que, no contexto de função de nuvem, é conhecido como
cold start.

Em relação ao cold start, assinale a afirmativa incorreta.

Alternativas

A Funções de nuvem recebem CPUs, GPUs e TPUs de diferentes gerações de hardware.

B Embora possa levar menos de um segundo para iniciar uma função de nuvem, pode levar dezenas de segundos para carregar todas as bibliotecas de aplicativos.

C Um obstáculo ao desempenho previsível é a variabilidade nos recursos de hardware resultante da flexibilidade do provedor de nuvem para escolher o servidor
subjacente.

D Embora as funções de nuvem tenham uma latência de inicialização muito menor do que as tradicionais VMs, os atrasos incorridos ao iniciar novas instâncias
podem ser altos para algumas aplicações.

E Há três fatores que afetam essa latência do cold start: o tempo que leva para iniciar uma função de nuvem; o tempo que leva para inicializar o ambiente de
software da função, por exemplo, carregar bibliotecas Python; e a inicialização específica da aplicação a partir do código do usuário.

155

SEFAZ-MG/2023
Várias plataformas FaaS de código aberto foram desenvolvidas como alternativa às soluções serverless dos provedores de nuvem pública. As plataformas FaaS de
código aberto são quase exclusivamente implementadas sobre o Kubernetes, como por exemplo o OpenFaaS.

Em relação às características que possuem em comum os sistemas FaaS de código aberto baseados em kubernetes, assinale a afirmativa incorreta.

A A invocações às funções são roteadas por um gateway, definido pelo sistema FaaS ou por uma instância Kubernetes Ingress.

B O balanceamento de carga das requisições entre instâncias de função é implementado aproveitando as instâncias de serviço Kubernetes.

C Para o autoescalonamento, a maioria dos sistemas FaaS usa o Horizontal Pod Autoscaling (HPA) integrado do Kubernetes, que implementa o
autoescalonamento baseado em recursos de computação das instâncias das funções.

D Para o autoescalonamento, mecanismos de escalonamento personalizados também podem ser implementados, como escalonamento automático com base no
número de solicitações simultâneas em andamento.

E Para monitorar as instâncias de função, a maioria dos sistemas FaaS de código aberto utiliza suas próprias soluções de captura de métricas e visualização.

156
MPE-MG/2023
Considerando que computação Serverless é um paradigma para computação em nuvem que permite funções
serem implementadas e executadas de modo escalável, são consideradas características desse paradigma,
EXCETO:

A O desenvolvedor apenas escreve e implanta o código (função), deixando o provedor responsável pela
infraestrutura.
B O desenvolvedor precisa subir novos contêineres, caso a demanda do uso de recursos aumente. Em caso de
baixa demanda, recursos são desperdiçados.

C Adota o modelo FaaS (Function as a Service), no qual serviços são escritos como funções individuais que podem
ser gerenciadas separadamente sobre contêineres.

D Baseia-se em eventos, ou seja, uma função implantada pelo desenvolvedor é executada apenas quando a
resposta de um evento ocorre no sistema (como por exemplo: triggers de banco de dados e requisições HTTP).

157

BNB/2023
Um serverless é definido como um modelo operacional cujos princípios
incluem a ausência de infraestrutura para gerenciar e o
dimensionamento automático por unidade de consumo.

158
SEGER-ES/2023
A AWS Lambda é uma plataforma Serverless da Amazon que faz parte do pacote de serviços
Amazon Web Services (AWS). Sobre a arquitetura AWS Lambda, marque V para as afirmativas
verdadeiras e F para as falsas.
( ) É uma arquitetura orientada a eventos, sendo as funções Lambdas executadas em resposta
a um determinado evento, por exemplo, uma requisição HTTP.
( ) Firecracker é um serviço personalizado disponível na arquitetura para criar máquinas
virtuais leves a partir de funções Lambda.
( ) Funções Lambda podem ser escritas apenas nas linguagens de programação Java e Python.
( ) É um serviço pago sem acesso gratuito limitado aos usuários.

159

SEFAZ-RR/2023
Trata-se de um modelo de execução de computação em nuvem que provisiona recursos sob demanda e
atribui toda a responsabilidade por tarefas comuns de gerenciamento de infraestrutura aos fornecedores
da nuvem e ferramentas, permitindo que os desenvolvedores concentrem seus esforços e seu tempo na
lógica de negócio específica para seus aplicativos e processos. O texto acima define:
A Autoscaling
B Failove
C High availability
D Serverless
E Downtime

160
CGU/2022
Uma empresa desenvolveu um sistema de votação em massa para milhares de usuários concorrentes e o implantou na nuvem do
provedor AWS. A API de cadastro e acesso à informação dos usuários foi disponibilizada por meio de um serviço ECS, que mantém de
10 a 100 instâncias registradas no balanceador de carga. O cadastro de um usuário consiste nas seguintes informações: nome, e-mail,
telefone e foto. As informações textuais são armazenadas em um banco de dados relacional, e os arquivos são armazenados no disco
da instância. Recentemente foi identificada uma falha intermitente, na qual usuários reportam que a sua foto raramente é exibida.
Considerando que os serviços estão corretamente dimensionados, a causa dessa falha é:

A a não utilização de uma abordagem serverless;

B a não utilização de um serviço de cache para os arquivos;

C o número de instâncias no balanceador de carga ser muito alto;

D a utilização de um banco de dados relacional;

E o arquivo da foto ser armazenado no disco da instância.

161

#DEVOPS
#CLOUD
#DOCKER
#KUBERNETES
Prof. Raphael Lacerda

162
The Complete Definitive Guide to DevOps
Management (project-management.com)

DevOps explained - Devops

What is the difference between DevOps and


What is DevOps? - dev2ops DevSecOps? (pvs-studio.com)

163

(65) DevOps Full Picture – an Intersection of


Culture, Processes and Tools | LinkedIn

Em suma
● …

164
muito trabalho
● …

DevOps explained - Devops

165

breaking silos
● …

Breaking Down Silos | Accenture

166
Por que só automação salva?
● …

DevOps explained - Devops

167

cloud, devops, microservices


….

168
DevOps

https://www.atlassian.com/continuous-delivery/principles/continuous-
integration-vs-delivery-vs-deployment

169

Embasa/2017

Integração Contínua
Prof. Raphael Lacerda

170
Integração Contínua

BrowserStackJenkins Continuous Integration


Tutorial ...

https://www.exoscale.com/syslog/what-is-
continuous-integration/

https://www.geeksforgeeks.org/ci-cd-
continuous-integration-and-continuous-
delivery/

171

CI/CD pipeline

https://www.testingdocs.com/continuous-
integration-tools/

172
CI vs CD

The relationship between continuous


What is a CI/CD Pipeline? The Complete https://www.geeksforgeeks.org/ci-cd-
integration, delivery and deployment |
CI/CD Guide | OpsMx continuous-integration-and-continuous-
Download Scientific Diagram
delivery/

173

onde guardar o binário?

Continuous Integration Systems | JFrog

174
DevOps

175

Palavra chave: automação!

176
DevSecOps

177

Por que?

178
DevSecOps

179

DevSecOps

180
Tudo junto!

181

E automatizado!

182
pilares

DevOps
Prof. Raphael Lacerda

183

12 Fatores

Prof. Raphael Lacerda


Prof. Raphael Lacerda

184
12 Fatores

Prof. Raphael Lacerda

185

Containers vs VM
● …

Containers vs. Virtual Machines (VMs):


Containers vs VMs (redhat.com)
What’s the Difference? | IBM Containers vs Virtual Machines | Atlassian

186
Containers vs VM vs Serverless
● …

Understand the differences in VM vs.


container vs. serverless | TechTarget
https://blogs.gartner.com/tony-iams/containers-serverless-computing-
pave-way-cloud-native-infrastructure/

187

Por que não os dois?

Kata Containers is an
open source community
working to build a secure
container runtime with
lightweight virtual
machines that feel and
perform like containers,
but provide stronger
workload isolation using
hardware virtualization
technology as a second
layer of defense.
188
Networks

Mastering the Docker networking


- DEV Community

Networking overview (docker.com)

189

Networks Drivers If you do not specify a network using the --


network flag, and you do specify a network
driver, your container is connected to the
default bridge network by default. Containers
● bridge connected to the default bridge network can
○ The default network driver.
○ IP or --link option, which is considered legacy.
communicate, but only by IP address, unless
○ only other containers in the same network (bridge) they are linked using the legacy --linkflag.
can talk to each other
○ bridge network does not resolve names to
IP addresses
○ https://docs.docker.com/network/drivers/bridge/
● Host
○ usa a rede do host diretamente
○ https://docs.docker.com/network/drivers/host/

● Overlay
○ habilita os serviços do Swarm
○ rede distribuída
○ https://docs.docker.com/network/drivers/overlay/
● ipvlan
○ dá ao usuário o controle do ipv4 e ipv6
○ https://docs.docker.com/network/drivers/ipvlan/

● macvlan
○ macaddress atribuído
● none
○ container isolado do host e dos outros

https://docs.docker.com/network/drivers/

190
Volumes vs Bind Mounts
● filesystem, tmpfs
○ https://docs.docker.com/storage/tmpfs/

● bind mount
○ absolute path no host
● volumes
○ docker gerencia o diretório
○ não precisa associar ao container
● -v –volume VS –mount
○ mount não cria diretorio https://docs.docker.com/storage/bind-mounts/
https://www.dltlabs.com/blog/bind-mounts-
volumes-indocker-133067
https://docs.docker.com/storage/volumes/
https://blog.logrocket.com/docker-volumes-
vs-bind-mounts/

191

Best practices
● read only layers
○ stacked
○ cached layers
○ Only the instructions RUN, COPY, and ADD create layers. Other instructions create
temporary intermediate images, and don’t increase the size of the build.
● ephemeral containers https://docs.docker.com/build/guide
/layers/
○ stateless process
○ https://12factor.net/processes
○ https://12factor.net/disposability

● build images without dockerfiles


○ echo -e 'FROM busybox\nRUN echo "hello world"' | docker build -
● …
https://docs.docker.com/develop/develop-images/dockerfile_best-
practices/

192
Best practices
● multi-stage builds
○ https://spring.io/guides/topicals/spring-boot-docker/

● don't install unnecessary libs


● decouple applications
● minimize the number of layers
Docker Multi-Stage builds. Multi-stage builds
https://stackoverflow.com/questions/3922324 are a new feature… | by Bhargav Shah |
9/multiple-run-vs-single-chained-run-in- Medium
dockerfile-which-is-better

https://docs.docker.com/develop/develop-images/dockerfile_best-
practices/

193

Swarm

https://medium.com/tech-tajawal/create-
https://docs.docker.com/engine/swarm/
cluster-using-docker-swarm-94d7b2a10c43

194
Swarm
● Orquestração de containers
● clustering and scheduling
● scaling
● multi-host networking
● service discovery
● load balancing If you’re not planning on deploying with Swarm,
use Docker Compose instead. If you’re
● mutual TLS para comunicação developing for a Kubernetes deployment,
consider using theintegrated Kubernetes feature
● Secrets in Docker Desktop.

○ https://docs.docker.com/engine/swarm/secrets/

https://medium.com/tech-tajawal/create-
https://docs.docker.com/engine/swarm/
cluster-using-docker-swarm-94d7b2a10c43

195

Kubernetes Principle's
● Portável, extensível, open source, orquestrador de containers, configuração
declarativa, grande ecossistema.
● Google Open-sourced 2014 - Borg: The Predecessor to Kubernetes | Kubernetes
● Service Discovery
● Storage Orchestration
● Load Balancer
● Rollout and Rollbacks
● Automatic Bin Packing
● Self Healing
● Secret Managment
Overview | Kubernetes

196
https://kubernetes.io/docs/concepts/architect
ure/cloud-controller/

Kubernetes Components | Kubernetes

197

Master

Kubernetes Cluster vs Master Node | SUSE


Communities

198
Master Componentes
● Kube-APIServer
○ que atua como front-end para o cluster. Toda a comunicação externa para o cluster
é via API-Server.
● Kube-Controller-Manager
○ que executa um conjunto de controladores para o cluster em execução. O
controlador-gerente implementa a governança em todo o cluster.
● Etcd
○ o banco de dados de estado do cluster.
● Kube Scheduler
○ O scheduler descobre qual worker node hospedará um POD recém-agendado.

199

FCC/TRT-AC/2023
● …

200
HPA

Horizontal Pod Autoscaling | Kubernetes

201

FGV/SEFAZ-MG/2023
● …

202
QUESTÕES

Prof. Raphael Lacerda

203

Cespe/SEFIN/2023
O Ansible é uma ferramenta de integração contínua que permite
automatizar o processo de construção, teste e implantação de software e
pode ser integrado a outras ferramentas DevOps, como Git, Docker e
Kubernetes.

204
FUNDATEC/2023
O DevOps (desenvolvimento + operação) preza o estreitamento entre as áreas de desenvolvimento e infraestrutura através de
ferramentas e metodologias, de modo que seja possível automatizar, monitorar, observar, testar e metrificar todas as etapas de
desenvolvimento de software. Dentro dos processos de DevOps, que visam o aumento dessa qualidade e também a facilitação de
colocar um projeto em produção, há um que é uma prática em que os times de desenvolvimento lançam novas funcionalidades de
forma constante e automatizada. Quando uma nova funcionalidade é finalizada, automaticamente ela será disponibilizada no
ambiente de testes e, posteriormente, no ambiente de produção e, em alguns casos, pode ir direto para produção. Assinale a
alternativa que cita essa prática.

A Design Patterns ou Padrões de Projeto.

B Test Driven Development ou Desenvolvimento Orientado a Testes.

C Continuous Delivery ou Entrega Contínua.

D Behavior Driven Development ou Desenvolvimento Orientado ao Comportamento.

E Continuous Integration ou Integração Contínua.

205

CONSUPLAN/MPE-MG/2023
Manifesto para o desenvolvimento ágil de software defende “indivíduos e interações acima de processos e ferramentas, software operacional acima de
documentação completa, colaboração dos clientes acima de negociação contratual e respostas a mudanças acima de seguir um plano”. (Pressman e Maxim,
2021. P. 37.)

Considerando o exposto, analise as afirmativas a seguir.

I. Os princípios do Scrum são empregados para orientar as atividades de desenvolvimento dentro de um processo que incorpora as seguintes atividades
metodológicas: planejar; codificar; construir; testar; e, distribuir.

II. A Extreme Programming (programação extrema) envolve um conjunto de regras e práticas constantes no contexto de quatro atividades metodológicas:
planejamento; projeto; codificação; e, testes.

III. O projeto XP segue rigorosamente o princípio KISS (keep it simple, stupid!).

IV. As reuniões de equipe para o Kanban são semelhantes àquelas realizadas na metodologia XP.

V. O DevOps combina desenvolvimento (development) e operações (operations) e seu fluxo de trabalho envolve diversas etapas que formam ciclos contínuos até
que o produto desejado exista de fato.

Está correto o que se afirma apenas em

206
FGV/SENADO/2022
Você foi contratado para liderar uma equipe de DevOps. Um dos objetivos da sua liderança é aumentar a
velocidade das entregas e a qualidade de novos recursos das aplicações utilizando o desenvolvimento orientado a
testes.

Assinale a opção que indica a ordem que descreve corretamente o ciclo de desenvolvimento orientado a testes.

A Refatorar - > Escrever um código funcional


B Escrever um caso de teste -> Refatorar

C Refatorar - > Escrever um código funcional - > Escrever um caso de teste

D Escrever um caso de teste -> Escrever um código funcional -> Refatorar

E Escrever um código funcional -> Escrever um caso de teste -> Refatorar

207

TDD, lembra?

O que é TDD? - DEV Community https://tdd.caelum.com.br/

208
FGV/TRT-16/2022
Considerando o DevOps e suas boas práticas, analise os itens a seguir:

I. Testes integrados são uma parte importante do processo DevOps. Esses testes devem levar em consideração as práticas de Test-
Driven Development e Behavior-Driven Development, dessa forma a execução automática desses testes pode ser integrada ao
pipeline de CI. No entanto, é importante integrar outros tipos de testes, como testes funcionais ou testes de integração, que
permitem que o aplicativo seja testado funcionalmente do início ao fim com os outros componentes do seu ecossistema.

II. Recomenda-se automatizar apenas as tarefas críticas que envolvam poucas atualizações na implementação e nos testes dos
aplicativos nas infraestruturas. Essas tarefas devem ser automatizadas em scripts que podem ser facilmente integradas e executadas
em pipelines de CI/CD.

III. A construção de pipelines de CI/CD envolvem a escolha de ferramentas de DevOps adequadas pelas equipes considerando a
natureza da empresa. E necessário levar em conta aspectos financeiros, avaliar entre ferramentas de código aberto e gratuitas e as
proprietárias, que são mais ricas em recursos e suporte, mas exigem um investimento significativo.

Está correto apenas o que se afirma em

209

FGV/TRT-16/2022
Considerando o DevOps e suas boas práticas, analise os itens a seguir:

I. Testes integrados são uma parte importante do processo DevOps. Esses testes devem levar em consideração as práticas de Test-
Driven Development e Behavior-Driven Development, dessa forma a execução automática desses testes pode ser integrada ao
pipeline de CI. No entanto, é importante integrar outros tipos de testes, como testes funcionais ou testes de integração, que
permitem que o aplicativo seja testado funcionalmente do início ao fim com os outros componentes do seu ecossistema.

II. Recomenda-se automatizar apenas as tarefas críticas que envolvam poucas atualizações na implementação e nos testes dos
aplicativos nas infraestruturas. Essas tarefas devem ser automatizadas em scripts que podem ser facilmente integradas e executadas
em pipelines de CI/CD.

III. A construção de pipelines de CI/CD envolvem a escolha de ferramentas de DevOps adequadas pelas equipes considerando a
natureza da empresa. E necessário levar em conta aspectos financeiros, avaliar entre ferramentas de código aberto e gratuitas e as
proprietárias, que são mais ricas em recursos e suporte, mas exigem um investimento significativo.

Está correto apenas o que se afirma em

210
FGV/PGM/2023
Um Time de Desenvolvimento de Software (TDS) segue um protocolo automatizado para gerar, testar e
combinar pacotes de software gerados separadamente. Todo software combinado precisa passar por um
processo que inclui uma requisição formal ao Time de Operações (TO) de um Centro de Dados para
executar um conjunto de testes, com o intuito de verificar vulnerabilidades no software antes de entrar em
produção. Considerando os conceitos de DevOps e DevSecOps, o TDS e o TO estão falhando no princípio:
A automação;
B colaboração ágil;
C produção contínua;
D integração contínua;
E ação centrada no cliente.

211

FGV/PGM/2023
Um Time de Desenvolvimento de Software (TDS) segue um protocolo automatizado para gerar, testar e
combinar pacotes de software gerados separadamente. Todo software combinado precisa passar por um
processo que inclui uma requisição formal ao Time de Operações (TO) de um Centro de Dados para
executar um conjunto de testes, com o intuito de verificar vulnerabilidades no software antes de entrar em
produção. Considerando os conceitos de DevOps e DevSecOps, o TDS e o TO estão falhando no princípio:
A automação;
B colaboração ágil;
C produção contínua;
D integração contínua;
E ação centrada no cliente.

212
FGV/CGU/2022
A equipe de redes de um órgão público está trabalhando para auxiliar no cumprimento das metas da equipe de
desenvolvimento de sistemas do mesmo órgão e vislumbrou a possibilidade de utilização de DevOps. Para tal, a
equipe de redes indicou a contratação de uma API em uma nuvem. A API indicada permite que os desenvolvedores
e os administradores dos sistemas interajam com a infraestrutura de modo programático e em escala, evitando a
instalação e a configuração dos recursos manualmente todas as vezes que precisam recriar um ambiente de
desenvolvimento. Para essa atividade, a equipe de desenvolvimento utilizou a prática DevOps de:

A comunicação e colaboração;

B integração contínua;
C entrega contínua;

D microsserviços;

E infraestrutura como código.

213

FGV/CGU/2022
A equipe de redes de um órgão público está trabalhando para auxiliar no cumprimento das metas da equipe de
desenvolvimento de sistemas do mesmo órgão e vislumbrou a possibilidade de utilização de DevOps. Para tal, a
equipe de redes indicou a contratação de uma API em uma nuvem. A API indicada permite que os desenvolvedores
e os administradores dos sistemas interajam com a infraestrutura de modo programático e em escala, evitando a
instalação e a configuração dos recursos manualmente todas as vezes que precisam recriar um ambiente de
desenvolvimento. Para essa atividade, a equipe de desenvolvimento utilizou a prática DevOps de:

A comunicação e colaboração;

B integração contínua;
C entrega contínua;

D microsserviços;

E infraestrutura como código.

214
FGV/SEFAZ-MG/2023
Você precisa implementar uma arquitetura de cloud para um sistema que terá picos de uso sazonais, pensando em otimizar os custos com essa infraestrutura e
garantir que durante o pico de uso mais intenso, é necessário que o sistema tenha recursos suficientes para manter a estabilidade e performance e que isso seja
feito de forma automatizada.

Nesse sentido, analise os conceitos de cloud a seguir.

I. Disponibilidade II. Escalabilidade III. Elasticidade IV. Monitoramento V. DevOps

Para o caso descrito, precisam ser implementados, respectivamente, os conceitos

A I e II, apenas.

B II e III, apenas.

C III e IV, apenas.

D IV e V, apenas.

E I, II, III, IV e V.

215

FGV/SEFAZ-MG/2023
Você precisa implementar uma arquitetura de cloud para um sistema que terá picos de uso sazonais, pensando em otimizar os custos com essa infraestrutura e
garantir que durante o pico de uso mais intenso, é necessário que o sistema tenha recursos suficientes para manter a estabilidade e performance e que isso seja
feito de forma automatizada.

Nesse sentido, analise os conceitos de cloud a seguir.

I. Disponibilidade II. Escalabilidade III. Elasticidade IV. Monitoramento V. DevOps

Para o caso descrito, precisam ser implementados, respectivamente, os conceitos

A I e II, apenas.

B II e III, apenas.

C III e IV, apenas.

D IV e V, apenas.

E I, II, III, IV e V.

216
FGV/SENADO/2023
Nos últimos anos, a adoção de ambientes em nuvem cresceu expressivamente. Modelos de serviço em nuvem facilitam a criação de soluções tecnológicas
modernas de maneiras diferentes.

A seguir, estão listadas algumas características de um desses modelos.

I. O provedor de nuvem fica responsável pelo gerenciamento da infraestrutura de servidores, sistemas operacionais, atualizações e outras tarefas administrativas.

II. Acessível pela internet por meio do navegador web.

III. Permite equipes de desenvolvimento colaborarem em todo o ciclo de vida de um aplicativo, incluindo codificação, integração, teste, entrega, implantação e
feedback.

As características descritas referem-se a

A IAC.

B TaaS.

C SaaS.

D IaaS.

E PaaS.

217

FGV/SENADO/2023
Nos últimos anos, a adoção de ambientes em nuvem cresceu expressivamente. Modelos de serviço em nuvem facilitam a criação de soluções tecnológicas
modernas de maneiras diferentes.

A seguir, estão listadas algumas características de um desses modelos.

I. O provedor de nuvem fica responsável pelo gerenciamento da infraestrutura de servidores, sistemas operacionais, atualizações e outras tarefas administrativas.

II. Acessível pela internet por meio do navegador web.

III. Permite equipes de desenvolvimento colaborarem em todo o ciclo de vida de um aplicativo, incluindo codificação, integração, teste, entrega, implantação e
feedback.

As características descritas referem-se a

A IAC.

B TaaS.

C SaaS.

D IaaS.

E PaaS.

218
CESPE/AGER/2023
Assinale a opção que apresenta exemplo de ferramenta que permite realizar automação de código —
incluindo a execução de tarefas relacionadas à criação, ao teste e à entrega ou implantação de software —
e, assim, realizar, no DevOps, integração contínua e entrega contínua (CI/CD).
Alternativas
A jenkins
B maven
C ansible
D puppet
E docker

219

Cespe/Petrobras/2022
A arquitetura de microsserviços decompõe a aplicação em serviços e
pode ser criada e implantada de maneira independente, o que permite
executar no DevOps o continuous integration / continuous delivery
(CI/CD).

220
Questão INÉDITA - by: rafa!
I - Mudança de cultura, automação e monitoração são pilares para o DevOps.
Uma das variações do termo é o GitOps, que consiste em trabalhar o repositório
de configurações como single source of truth e sincronizar mudanças para
ambiente de produção.
II - CI/CD é um loop onde há a construção, testes, deploy e release. Nele, a cada
pull request, o produto vai diretamente para produção.
III - Uma equipe de software está praticando Continuous Delivery se qualquer
membro consegue rapidamente executar deploy de qualquer versão em
qualquer ambiente sob demanda.

221

FUNDATEC/2023
O DevOps (desenvolvimento + operação) preza o estreitamento entre as áreas de desenvolvimento e infraestrutura através de
ferramentas e metodologias, de modo que seja possível automatizar, monitorar, observar, testar e metrificar todas as etapas de
desenvolvimento de software. Dentro dos processos de DevOps, que visam o aumento dessa qualidade e também a facilitação de
colocar um projeto em produção, há um que é uma prática em que os times de desenvolvimento lançam novas funcionalidades de
forma constante e automatizada. Quando uma nova funcionalidade é finalizada, automaticamente ela será disponibilizada no
ambiente de testes e, posteriormente, no ambiente de produção e, em alguns casos, pode ir direto para produção. Assinale a
alternativa que cita essa prática.

A Design Patterns ou Padrões de Projeto.

B Test Driven Development ou Desenvolvimento Orientado a Testes.

C Continuous Delivery ou Entrega Contínua.

D Behavior Driven Development ou Desenvolvimento Orientado ao Comportamento.

E Continuous Integration ou Integração Contínua.

222
CONSUPLAN/MPE-MG/2023
Manifesto para o desenvolvimento ágil de software defende “indivíduos e interações acima de processos e ferramentas, software operacional acima de
documentação completa, colaboração dos clientes acima de negociação contratual e respostas a mudanças acima de seguir um plano”. (Pressman e Maxim,
2021. P. 37.)

Considerando o exposto, analise as afirmativas a seguir.

I. Os princípios do Scrum são empregados para orientar as atividades de desenvolvimento dentro de um processo que incorpora as seguintes atividades
metodológicas: planejar; codificar; construir; testar; e, distribuir.

II. A Extreme Programming (programação extrema) envolve um conjunto de regras e práticas constantes no contexto de quatro atividades metodológicas:
planejamento; projeto; codificação; e, testes.

III. O projeto XP segue rigorosamente o princípio KISS (keep it simple, stupid!).

IV. As reuniões de equipe para o Kanban são semelhantes àquelas realizadas na metodologia XP.

V. O DevOps combina desenvolvimento (development) e operações (operations) e seu fluxo de trabalho envolve diversas etapas que formam ciclos contínuos até
que o produto desejado exista de fato.

Está correto o que se afirma apenas em

223

FGV/SENADO/2022
Você foi contratado para liderar uma equipe de DevOps. Um dos objetivos da sua liderança é aumentar a
velocidade das entregas e a qualidade de novos recursos das aplicações utilizando o desenvolvimento orientado a
testes.

Assinale a opção que indica a ordem que descreve corretamente o ciclo de desenvolvimento orientado a testes.

A Refatorar - > Escrever um código funcional


B Escrever um caso de teste -> Refatorar

C Refatorar - > Escrever um código funcional - > Escrever um caso de teste

D Escrever um caso de teste -> Escrever um código funcional -> Refatorar

E Escrever um código funcional -> Escrever um caso de teste -> Refatorar

224
TDD, lembra?

O que é TDD? - DEV Community https://tdd.caelum.com.br/

225

FGV/CGE-SC/2023
Uma organização deseja aumentar a maturidade da organização utilizando DevOps.
As opções a seguir apresentam maneiras de ajudar o amadurecimento da organização com o uso do
DevOps, à exceção de uma. Assinale-a.

A Manter registros de todas as reuniões para que os membros do time tenham fácil acesso a todas as
comunicações.
B Definir claramente os processos e o apoio e permitir que os membros do time melhorem o processo
diariamente.
C Definir claramente metas como marcos para ajudar os membros de seu time a avaliar se suas atividades
diárias são valiosas.
D Monitorar e registrar as atividades diárias para ajudar a identificar pequenas áreas de progresso diário e
comemorá-las.
E Estabelecer um método eficaz de ponderação sobre a produtividade versus riscos, fazer mudanças
incrementais e criar locais seguros para experimentos.

226
FGV/TRT-16/2022
Considerando o DevOps e suas boas práticas, analise os itens a seguir:

I. Testes integrados são uma parte importante do processo DevOps. Esses testes devem levar em consideração as práticas de Test-
Driven Development e Behavior-Driven Development, dessa forma a execução automática desses testes pode ser integrada ao
pipeline de CI. No entanto, é importante integrar outros tipos de testes, como testes funcionais ou testes de integração, que
permitem que o aplicativo seja testado funcionalmente do início ao fim com os outros componentes do seu ecossistema.

II. Recomenda-se automatizar apenas as tarefas críticas que envolvam poucas atualizações na implementação e nos testes dos
aplicativos nas infraestruturas. Essas tarefas devem ser automatizadas em scripts que podem ser facilmente integradas e executadas
em pipelines de CI/CD.

III. A construção de pipelines de CI/CD envolvem a escolha de ferramentas de DevOps adequadas pelas equipes considerando a
natureza da empresa. E necessário levar em conta aspectos financeiros, avaliar entre ferramentas de código aberto e gratuitas e as
proprietárias, que são mais ricas em recursos e suporte, mas exigem um investimento significativo.

Está correto apenas o que se afirma em

227

FGV/TRT-16/2022
Considerando o DevOps e suas boas práticas, analise os itens a seguir:

I. Testes integrados são uma parte importante do processo DevOps. Esses testes devem levar em consideração as práticas de Test-
Driven Development e Behavior-Driven Development, dessa forma a execução automática desses testes pode ser integrada ao
pipeline de CI. No entanto, é importante integrar outros tipos de testes, como testes funcionais ou testes de integração, que
permitem que o aplicativo seja testado funcionalmente do início ao fim com os outros componentes do seu ecossistema.

II. Recomenda-se automatizar apenas as tarefas críticas que envolvam poucas atualizações na implementação e nos testes dos
aplicativos nas infraestruturas. Essas tarefas devem ser automatizadas em scripts que podem ser facilmente integradas e executadas
em pipelines de CI/CD.

III. A construção de pipelines de CI/CD envolvem a escolha de ferramentas de DevOps adequadas pelas equipes considerando a
natureza da empresa. E necessário levar em conta aspectos financeiros, avaliar entre ferramentas de código aberto e gratuitas e as
proprietárias, que são mais ricas em recursos e suporte, mas exigem um investimento significativo.

Está correto apenas o que se afirma em

228
FGV/PGM/2023
Um Time de Desenvolvimento de Software (TDS) segue um protocolo automatizado para gerar, testar e
combinar pacotes de software gerados separadamente. Todo software combinado precisa passar por um
processo que inclui uma requisição formal ao Time de Operações (TO) de um Centro de Dados para
executar um conjunto de testes, com o intuito de verificar vulnerabilidades no software antes de entrar em
produção. Considerando os conceitos de DevOps e DevSecOps, o TDS e o TO estão falhando no princípio:
A automação;
B colaboração ágil;
C produção contínua;
D integração contínua;
E ação centrada no cliente.

229

FGV/PGM/2023
Um Time de Desenvolvimento de Software (TDS) segue um protocolo automatizado para gerar, testar e
combinar pacotes de software gerados separadamente. Todo software combinado precisa passar por um
processo que inclui uma requisição formal ao Time de Operações (TO) de um Centro de Dados para
executar um conjunto de testes, com o intuito de verificar vulnerabilidades no software antes de entrar em
produção. Considerando os conceitos de DevOps e DevSecOps, o TDS e o TO estão falhando no princípio:
A automação;
B colaboração ágil;
C produção contínua;
D integração contínua;
E ação centrada no cliente.

230
FGV/CGU/2022
A equipe de redes de um órgão público está trabalhando para auxiliar no cumprimento das metas da equipe de
desenvolvimento de sistemas do mesmo órgão e vislumbrou a possibilidade de utilização de DevOps. Para tal, a
equipe de redes indicou a contratação de uma API em uma nuvem. A API indicada permite que os desenvolvedores
e os administradores dos sistemas interajam com a infraestrutura de modo programático e em escala, evitando a
instalação e a configuração dos recursos manualmente todas as vezes que precisam recriar um ambiente de
desenvolvimento. Para essa atividade, a equipe de desenvolvimento utilizou a prática DevOps de:

A comunicação e colaboração;

B integração contínua;
C entrega contínua;

D microsserviços;

E infraestrutura como código.

231

FGV/CGU/2022
A equipe de redes de um órgão público está trabalhando para auxiliar no cumprimento das metas da equipe de
desenvolvimento de sistemas do mesmo órgão e vislumbrou a possibilidade de utilização de DevOps. Para tal, a
equipe de redes indicou a contratação de uma API em uma nuvem. A API indicada permite que os desenvolvedores
e os administradores dos sistemas interajam com a infraestrutura de modo programático e em escala, evitando a
instalação e a configuração dos recursos manualmente todas as vezes que precisam recriar um ambiente de
desenvolvimento. Para essa atividade, a equipe de desenvolvimento utilizou a prática DevOps de:

A comunicação e colaboração;

B integração contínua;
C entrega contínua;

D microsserviços;

E infraestrutura como código.

232
FGV/SEFAZ-MG/2023
Você precisa implementar uma arquitetura de cloud para um sistema que terá picos de uso sazonais, pensando em otimizar os custos com essa infraestrutura e
garantir que durante o pico de uso mais intenso, é necessário que o sistema tenha recursos suficientes para manter a estabilidade e performance e que isso seja
feito de forma automatizada.

Nesse sentido, analise os conceitos de cloud a seguir.

I. Disponibilidade II. Escalabilidade III. Elasticidade IV. Monitoramento V. DevOps

Para o caso descrito, precisam ser implementados, respectivamente, os conceitos

A I e II, apenas.

B II e III, apenas.

C III e IV, apenas.

D IV e V, apenas.

E I, II, III, IV e V.

233

FGV/SEFAZ-MG/2023
Você precisa implementar uma arquitetura de cloud para um sistema que terá picos de uso sazonais, pensando em otimizar os custos com essa infraestrutura e
garantir que durante o pico de uso mais intenso, é necessário que o sistema tenha recursos suficientes para manter a estabilidade e performance e que isso seja
feito de forma automatizada.

Nesse sentido, analise os conceitos de cloud a seguir.

I. Disponibilidade II. Escalabilidade III. Elasticidade IV. Monitoramento V. DevOps

Para o caso descrito, precisam ser implementados, respectivamente, os conceitos

A I e II, apenas.

B II e III, apenas.

C III e IV, apenas.

D IV e V, apenas.

E I, II, III, IV e V.

234
FGV/SENADO/2023
Nos últimos anos, a adoção de ambientes em nuvem cresceu expressivamente. Modelos de serviço em nuvem facilitam a criação de soluções tecnológicas modernas de maneiras diferentes.

A seguir, estão listadas algumas características de um desses modelos.

I. O provedor de nuvem fica responsável pelo gerenciamento da infraestrutura de servidores, sistemas operacionais, atualizações e outras tarefas administrativas.

II. Acessível pela internet por meio do navegador web.

III. Permite equipes de desenvolvimento colaborarem em todo o ciclo de vida de um aplicativo, incluindo codificação, integração, teste, entrega, implantação e feedback.

As características descritas referem-se a

A IAC.

B TaaS.

C SaaS.

D IaaS.

E PaaS.

235

FGV/SENADO/2023
Nos últimos anos, a adoção de ambientes em nuvem cresceu expressivamente. Modelos de serviço em nuvem facilitam a criação de soluções tecnológicas modernas de maneiras diferentes.

A seguir, estão listadas algumas características de um desses modelos.

I. O provedor de nuvem fica responsável pelo gerenciamento da infraestrutura de servidores, sistemas operacionais, atualizações e outras tarefas administrativas.

II. Acessível pela internet por meio do navegador web.

III. Permite equipes de desenvolvimento colaborarem em todo o ciclo de vida de um aplicativo, incluindo codificação, integração, teste, entrega, implantação e feedback.

As características descritas referem-se a

A IAC.

B TaaS.

C SaaS.

D IaaS.

E PaaS.

236
CESPE/AGER/2023
Assinale a opção que apresenta exemplo de ferramenta que permite realizar automação de código —
incluindo a execução de tarefas relacionadas à criação, ao teste e à entrega ou implantação de software —
e, assim, realizar, no DevOps, integração contínua e entrega contínua (CI/CD).
Alternativas
A jenkins
B maven
C ansible
D puppet
E docker

237

CESPE/SERPRO/2023
Considere-se que, na figura a seguir, Deploys sejam ambientes onde os
códigos são disponibilizados, tais como ambiente de produção e de
desenvolvimento, e que Codebase se refere a um repositório único em
um sistema de controle de revisão descentralizado tal como o Git. Nesse
caso, segundo o que preconizam os 12 factories, vários aplicativos devem
compartilhar o mesmo código de modo que se tenha uma padronização
e não haja comprometimento com as dependências no repositório.

238
CESPE/SERPRO/2023
Considere-se que, na figura a seguir, Deploys sejam ambientes onde os
códigos são disponibilizados, tais como ambiente de produção e de
desenvolvimento, e que Codebase se refere a um repositório único em
um sistema de controle de revisão descentralizado tal como o Git. Nesse
caso, segundo o que preconizam os 12 factories, vários aplicativos devem
compartilhar o mesmo código de modo que se tenha uma padronização
e não haja comprometimento com as dependências no repositório.

errada

239

CESPE/SERPRO/2023
De acordo com o que preconizam os 12 factories, na situação da figura a
seguir, Release deve sempre ter um ID de Release exclusivo e, como
deve haver separação estrita entre os estágios de Build, Release e
execução, torna-se impossível fazer alterações no código em tempo de
execução, pois não há como propagar essas alterações de volta ao
estágio de Build.

240
CESPE/SERPRO/2023
De acordo com o que preconizam os 12 factories, na situação da figura a seguir,
Release deve sempre ter um ID de Release exclusivo e, como deve haver
separação estrita entre os estágios de Build, Release e execução, torna-se
impossível fazer alterações no código em tempo de execução, pois não há como
propagar essas alterações de volta ao estágio de Build.

certa

241

Cespe/Petrobras/2022
A arquitetura de microsserviços decompõe a aplicação em serviços e
pode ser criada e implantada de maneira independente, o que permite
executar no DevOps o continuous integration / continuous delivery
(CI/CD).

242
Cespe/Petrobras/2022
Do ponto de vista de framework de arquitetura, os microsserviços são
fortemente acoplados e distribuídos; os microsserviços são componentes
embutidos em contêineres que trabalham juntos para realizar tarefas
específicas.

243

Vunesp/TJRS/2023
Deseja-se executar um container Docker no qual um diretório específico
dentro do container seja mapea- do em um diretório específico da
máquina host. Esse diretório do host deve ser especificado pelo usuário
do Docker por meio de seu caminho absoluto no comando de execução
do container. A solução para esse proble- ma consiste em utilizar
(A) uma imagem. (B) um volume.
(C) um bind mount. (D) um tmpfs mount. (E) uma rede virtual.

244
FUNDATEC/2023
O que é um container Docker?
A Uma máquina virtual.
B Uma imagem.
C Uma instância executável de uma máquina virtual.
D Uma instância executável de uma imagem.
E Um pacote de código-fonte.

245

FUNDATEC/2023
Qual a finalidade do Docker no desenvolvimento com .NET 5 e .NET Core,
utilizando Kubernetes?
A Fornecer um ambiente de desenvolvimento isolado para aplicativos .NET.
B Facilitar o gerenciamento de contêineres em um ambiente Kubernetes.
C Automatizar a implantação e dimensionamento de aplicativos .NET.
D Gerar arquivos de manifesto para implantação de aplicativos .NET em
Kubernetes.
E Monitorar a saúde e desempenho de aplicativos .NET em tempo real.

246
UFPR/2023
O comando docker run cria e executa um novo contêiner a partir de uma
imagem. Para a criação desse contêiner em segundo plano, utiliza-se o
comando:
A docker container run -b
B docker container run -p
C docker container run -a
D docker container run -d
E docker container run -s

247

AOCP/IF-MA/2023
Assinale a alternativa que descreve corretamente o Docker, uma plataforma de conteinerização amplamente utilizada.

A Docker é um sistema de gerenciamento de pacotes que permite a instalação e atualização de software em sistemas operacionais
baseados em Linux.

B Docker é uma ferramenta de virtualização que permite a criação de máquinas virtuais completas com seus próprios sistemas
operacionais.

C Docker é uma plataforma de infraestrutura como serviço (IaaS) que fornece recursos computacionais e de armazenamento na
nuvem.

D Docker é uma plataforma de orquestração de contêineres que gerencia o ciclo de vida e a implantação de contêineres em clusters.

E Docker é uma plataforma de conteinerização que permite empacotar, distribuir e executar aplicações em contêineres isolados.

248
AOCP/IF-MA/2023
Suponha que você seja um analista de infraestrutura em uma empresa de tecnologia e esteja trabalhando
em um projeto que envolve o uso de Docker para executar aplicativos em contêineres. Sua equipe busca
garantir a segurança dos contêineres, sem comprometer a escalabilidade e a portabilidade. Nesse cenário,
qual é a maneira eficaz de melhorar a segurança ao executar aplicativos em contêineres com Docker?
A Executar todos os contêineres com privilégios de root.
B Utilizar imagens de base não oficiais para contêineres.
C Implementar políticas de segurança usando Docker Secrets e Docker Content Trust.
D Executar várias instâncias de aplicativos diferentes em um único contêiner.
E Ignorar as práticas de isolamento de recursos do Docker.

249

Cespe/SEFIN/2023
Um exemplo prático de conteinerização de aplicação é a utilização do
Docker para criar um ambiente consistente; nesse caso, é correto criar
um arquivo Dockerfile por meio do comando docker build.

250
Cespe/SEFIN/2023
Tendo em vista que, no atual cenário de desenvolvimento de aplicações
web, é essencial considerar princípios, como consistência e
escalabilidade, e práticas, como automação do processo de implantação
e integração do código-fonte, julgue o item subsequente.
A adoção de tecnologias de conteinerização, como o Docker, permite à
equipe orquestrar vários contêineres em conjunto, por exemplo, um
contêiner para a aplicação Node.js e outro, para o banco de dados
MongoDB.

251

FGV/TJDFT/2021
Considerando-se os conceitos de docker, é correto afirmar que se trata de:

A um complemento para virtualização completa, associado ao VMware


ESXi

B um complemento para virtualização completa, associado ao VMware

C uma ferramenta para criar e manter máquinas virtuais

D uma ferramenta para criar e manter containers

Prof. Raphael Lacerda

252
FGV/TJDFT/2021
Considerando-se os conceitos de docker, é correto afirmar que se trata de:

A um complemento para virtualização completa, associado ao VMware


ESXi

B um complemento para virtualização completa, associado ao VMware

C uma ferramenta para criar e manter máquinas virtuais

D uma ferramenta para criar e manter containers

Prof. Raphael Lacerda

253

Questão INÉDITA - by: rafa!


I - Mudança de cultura, automação e monitoração são pilares para o DevOps.
Uma das variações do termo é o GitOps, que consiste em trabalhar o repositório
de configurações como single source of truth e sincronizar mudanças para
ambiente de produção.
II - CI/CD é um loop onde há a construção, testes, deploy e release. Nele, a cada
pull request, o produto vai diretamente para produção.
III - Uma equipe de software está praticando Continuous Delivery se qualquer
membro consegue rapidamente executar deploy de qualquer versão em
qualquer ambiente sob demanda.

254
CESPE/2021
A cadeia de valor do serviço, um dos componentes principais da ITIL,
pode ser adaptada para gerenciar serviços em organizações onde a
tecnologia da informação (TI) é centralizada ou que implementem a
abordagem DevOps.

255

CESPE/2021
Julgue o item a seguir, referentes ao conjunto de práticas de
desenvolvimento de software, operação e de apoio envolvidas (DevOps).
Para tornar a integração contínua mais efetiva no DevOps, é
recomendável centralizar todos os commits em uma máquina de
integração.

256
CESPE/2021
Na gestão da configuração em que se observa os valores do DevOps, é
importante implantar imediatamente as versões desenvolvidas no
ambiente de produção, cabendo, nesse contexto, à equipe de
desenvolvimento a criação de scripts automatizados para a garantia da
integração contínua.

257

FGV/CGE-SC/2023
Uma organização deseja aumentar a maturidade da organização utilizando DevOps.

As opções a seguir apresentam maneiras de ajudar o amadurecimento da organização com o uso do DevOps, à exceção de uma.
Assinale-a.

A Manter registros de todas as reuniões para que os membros do time tenham fácil acesso a todas as comunicações.

B Definir claramente os processos e o apoio e permitir que os membros do time melhorem o processo diariamente.

C Definir claramente metas como marcos para ajudar os membros de seu time a avaliar se suas atividades diárias são valiosas.

D Monitorar e registrar as atividades diárias para ajudar a identificar pequenas áreas de progresso diário e comemorá-las.

E Estabelecer um método eficaz de ponderação sobre a produtividade versus riscos, fazer mudanças incrementais e criar locais
seguros para experimentos.

258
Cespe/BNB/2023
A entrega contínua (CD) no DevOps é o processo de automatização que
inclui a configuração e implantação de um aplicativo em um pipeline de
produção, mas não abrange a compilação e o teste.

259

Cespe/BNB/2023
A ferramenta puppet permite escrever e executar um conjunto de
diretivas para gerenciar a configuração de um sistema, seja o
operacional, seja uma aplicação.

260
Cespe/BNB/2023
Situação hipotética: Alguns funcionários de determinada organização foram
encarregados de selecionar uma ferramenta para auxiliar os gestores na
execução das atividades relacionadas à fase build dos projetos da empresa.
Após se reunirem para debater o assunto, os funcionários optaram pela
ferramenta puppet.

Assertiva: Nessa situação, os funcionários da empresa escolheram a ferramenta


mais adequada, uma vez que o puppet é utilizado para realizar, de forma
padronizada, a automação e construção de código, verificando-se as
dependências necessárias durante o processo de compilação das aplicações.

261

Cespe/BNB/2023
A recomendação da integração é contínua quando prevê que cada
desenvolvedor faça, no mínimo, um commit por semana, atualizando o
repositório central a partir do repositório local.

262
Cespe/BNB/2023
Com base nas etapas do DevOps, é correto afirmar que a ferramenta
Jenkins está mais relacionada à etapa monitor que à etapa deploy.

263

Cespe/TRT-8/2023
No contexto de DevOps e DevSecOps, o Proxy reverso
A permite que diferentes servidores e serviços apareçam como se fossem uma única unidade,
ocultando servidores atrás do mesmo nome.
B não permite o balanceamento de carga para distribuir o tráfego de entrada, uma vez que
essa tarefa é realizada nativamente por um firewall.
C é um servidor que reside na frente de um ou mais clientes, interceptando solicitações
internas e externas de servidores web.
D garante que os clientes se comuniquem diretamente com um servidor de origem na Web.
E não permite criptografar e descriptografar comunicações SSL (ou TLS) para cada cliente.

264
O que é um proxy reverso?

https://www.infoq.com/br/news/2010/06/proxy-reverso/

265

Cespe/TCE-RJ/2022
Em DevOps, além das ferramentas do ambiente de desenvolvimento
integrado, são relevantes as ferramentas para gerenciamento de
controle de fontes, trabalho colaborativo e planejamento de projetos.

266
Cespe/TRT-8/2022
A respeito de testes automatizados, no contexto de DevOps e DevSecOps, assinale a opção correta.
A Em um teste unitário, os métodos da classe sendo testada e suas dependências podem ter relação com
recursos externos.
B Os bugs são detectados no final do ciclo de desenvolvimento, o que pode aumentar o tempo na criação
de novos produtos.
C Os testes unitários são testes de caixa preta com cada função que compõe o software.
D O TDD (Test Driven Development) eleva o nível dos testes unitários e tem como característica criar a
classe de testes antes da classe de produção, de forma que os testes guiem o código a ser implementado.
E Os testes de integração são caracterizados pela verificação de partes internas do sistema, que se inter-
relacionam entre si, conforme definido pelos clientes.

267

CESPE/TRT-8/2022
É(são) etapa(s) do DevOps
I Imersão.
II Ideação.
III Prototipação.
Assinale a opção correta.
A Nenhum item está certo.
B Apenas os itens I e II estão certos.
C Apenas os itens I e III estão certos.
D Apenas os itens II e III estão certos.

268
CESPE/TRT-8/2022
São tarefas do DevOps o(a)

I monitoramento (monitor).

II planejamento (plan).

III codificação (code).

Assinale a opção correta.

A Apenas os itens I e II estão certos.

B Apenas os itens I e III estão certos.

C Apenas os itens II e III estão certos.

D Todos os itens estão certos.

269

pilares

DevOps
Prof. Raphael Lacerda

270
CESPE/BNB/2023
A organização que investir em DevOps deve estar preparada para
automatizar seus processos mediante a execução de scripts pré-
definidos.

271

CESPE/BANRISUL/2023
O repositório de artefatos armazena artefatos de construção produzidos
por integração contínua e os disponibiliza para implantação
automatizada em ambientes de teste, preparação e produção.

272
CESPE/BANRISUL/2023
O DevOps melhora a experiência do cliente ao dar atenção aos testes
manuais contínuos por membros da equipe de operações e de
desenvolvimento para garantir a adequação do produto às necessidades
dos usuários.

273

CESPE/BANRISUL/2023
A prática DevOps visa à entrega contínua e à automação de tarefas
repetitivas e tediosas, o que possibilita dedicar mais tempo à interação
humana.

274
CESPE/BANRISUL/2023
Testes automatizados locais, atualização local a partir do repositório
central, novos testes automatizados locais e atualização do repositório
central a partir do local são as etapas de integração contínua.

275

CESPE/APEX/2023
No DevOps, as mudanças feitas pelo desenvolvedor na solução de software, nas
quais são feitos testes contra erros para depois serem enviadas a um repositório
de versionamento de códigos, como o GitHub, representam a etapa de
A deploy.
B entrega contínua.
C integração contínua.
D operação.

276
Cespe/BANRISUL/2023
Em um ambiente de DevOps, o gerenciamento de liberação é geralmente
integrado à cadeia de ferramentas de integração contínua e implantação
contínua.

277

Cespe/BANRISUL/2023
Cada vez que uma alteração na base de código é detectada, é iniciada
uma compilação que testa a qualidade do código recém-enviado,
alcançando-se, assim, a integração contínua.

278
Cespe/PETROBRAS/2022
Uma das vantagens do modelo DevOps para desenvolvimento de
soluções em cloud computing é a possibilidade de automação de
atividades no fluxo de desenvolvimento, na qual se prescinde a fase de
teste, até a entrega para o cliente e o feedback da implementação.

279

Cespe/PETROBRAS/2022
Na situação em tela, a cultura DevOps permite simplificar a implantação
e o gerenciamento eficiente de containers.

280
Cespe/BANRISUL/2023
Colaboração multidisciplinar, teste manual no final do desenvolvimento e
implantação contínua são algumas das características marcantes da
cultura DevOps.

281

IBFC/MGS/2023
( ) Lança-se versões de software em ciclos periódicos, lineares, mas
longos.
( ) As equipes de desenvolvimento ficam separadas dos operadores de
software.
( ) DevOps é a combinação de filosofias culturais, práticas e ferramentas.

282
Cespe/PETRO/2022
No DevOps, a integração contínua possui como uma de suas atividades a
realização de testes; a fim de se obter os benefícios esperados convém
automatizar os testes para poder executá-los para cada alteração feita
no repositório principal.

283

Cespe/PETRO/2022
A integração e a entrega contínuas (CI/CD) devem ser implementadas na
etapa operar (operate), na qual de fato a solução de software é entregue
ao cliente.

284
Cespe/BANRISUL/2022
Os processos envolvidos no DevOps são denominados, respectivamente,
de planejar, construir, testar, codificar, operar, avaliar e relatar.

285

Cespe/PETRO/2022
No ciclo DevOps, a fase de implantação contínua visa criar um processo
de lançamento de software no ambiente de produção; nessa fase
convém realizar a gestão da configuração que implementa o código da
aplicação em todos os servidores.

286
Cesgrario/2021
No âmbito de DevOps, o termo “shift left testing” significa que os testes devem
A ser feitos junto com a entrada em operação do produto.
B ser feitos apenas no ambiente de desenvolvimento.
C ser feitos apenas por meio de ferramentas de automação de testes.
D ser feitos desde as fases iniciais do ciclo de vida do produto.
E dirigir o desenvolvimento do produto.

287

FGV/TJDFT/2021
A equipe de analista de sistemas Alfa aplica o DevSecOps ativamente em seu processo de desenvolvimento de software.

Todos os membros da equipe Alfa são incentivados a se preocuparem com a segurança do software de forma proativa desde o início
do processo de desenvolvimento, aplicando diretamente a prática DevSecOps:

A shift left;

B rastreabilidade;

C auditabilidade;

D visibilidade;

E bug bounty.

288
What is shift left testing?

Testim.ioWhy Shift-Left Testing? Pros and


Cons

KatalonWhat is Shift Left Testing? Shift Left


...

289

Cespe/PETRO/2022
O método CI/CD refere-se a um processo de automação para os usuários
de um sistema que enviam, de forma contínua, feedbacks para os
desenvolvedores desse sistema.

290
Cesgranrio/2022
Em uma empresa, um administrador de uma rede com Red Hat OpenShift precisa implementar uma
integração contínua (continuous integration-CI) ou uma entrega contínua (continuous delivery-CD). Para
isso, utilizará uma aplicação para configurar essas ações, que funciona como um container certificado.
Nessa situação, a aplicação adequada é a
A ClusterCn
B Image
C Jenkins
D Podman
E Route

291

IBADE/2022
Em um modelo DevOps existe um método para entregar aplicações com
frequência aos clientes, visando integração, entrega e implantação contínuas.
Chamamos esse método de:
A git
B pipeline
C flowchart
D reentrante
E CI/CD

292
CESPE/ABIN/2018
Situação hipotética: Uma empresa possui um grande sistema com todas
as suas funcionalidades em uma aplicação que acessa um banco de
dados. A aplicação foi desmembrada em várias outras, em formatos de
contêineres que podem ser provisionados, iniciados e parados sob
demanda em ambientes de homologação e desenvolvimento, porém, em
produção, o deploy é feito manualmente. Assertiva: Nessa situação,
configura-se um ambiente que possui práticas de entrega contínua.

293

Cespe/PETRO/2022
Um contêiner é um conjunto de processos organizados isoladamente do
sistema; todos os arquivos necessários para executá-los são
disponibilizados por uma imagem distinta.

294
Cespe/DPE-RO/2022
A orquestração automatiza a implantação, o gerenciamento, a escala e a rede dos contêineres. As ferramentas de orquestração de
contêineres fornecem um framework para gerenciar arquiteturas de microsserviços e contêineres em escala, e muitas delas são
usadas no gerenciamento do ciclo de vida dos contêineres; entre elas, o Docker Swarm é uma plataforma

A que permite utilizar diversos recursos e ferramentas, como Apache e PHP, porém tudo rodando em um mesmo sistema operacional.

B de código aberto criada pelo Google para operações de implantação de contêiner, aumento e redução e automação em clusters de
hosts.

C de orquestração de contêiner de código aberto, sendo o mecanismo de clusterização nativo para e pelo Docker, utilizando sua
mesma linha de comando.

D que roda sobre o Kubernetes instalado em sistema operacional na versão Enterprise da Red Hat, agregando opções de
monitoramento, integração e entrega contínua.

E usada pela Amazon para fornecer outros serviços aos clientes, como DNS, balanceamento, segurança e monitoramento, se
integrando nativamente.

295

Cespe/DPE-RO/2022
Máquinas virtuais e contêineres são ambientes de computação que combinam diversos componentes de
tecnologia da informação isolando-os do restante do sistema computacional. Em alguns serviços, as
máquinas virtuais são mais apropriadas do que os contêineres, a exemplo
A do empacotamento de microsserviços.
B da transferências de projetos entre diversas infraestruturas de TI com o mesmo sistema operacional.
C da criação de aplicações nativas em nuvem.
D da adoção de práticas de integração contínua e entrega contínua.
E do armazenamento de cargas de trabalho monolíticas, legadas e tradicionais.

296
Container vs Virtual Machine

https://www.weave.works/blog/a-practical-guide-to-choosing-between-docker-containers-and-vms

297

Cespe/2020
Uma imagem de contêiner tem como característica a imutabilidade, ou
seja, ela não muda após a sua construção; no entanto, ela pode ser
configurada.

https://docs.docker.com/engine/refe
rence/commandline/commit/

298
Cespe/DPE-RO/2022
Em programação, os contêineres são utilizados em larga escala no desenvolvimento, testes e, principalmente, na
produção de softwares, permitindo rodar múltiplos sistemas isolados dentro de um sistema operacional real. A
esse respeito, julgue os itens a seguir.

I Em um contêiner, é possível utilizar diversos recursos e ferramentas, porém tudo roda em um mesmo sistema
operacional; em caso de pane, todas as funcionalidades serão afetadas.

II Ferramentas embasadas nos contêineres Linux oferecem aos usuários acesso sem precedentes a aplicações,
além da habilidade de implementar com rapidez e de ter total controle sobre as versões e distribuição.

III As ferramentas de contêiner, incluindo o Docker, fornecem um modelo de implantação com base em imagens,
facilitando o compartilhamento de uma aplicação ou conjunto de serviços, incluindo todas as dependências deles
em vários ambientes.

299

Cespe/TJ-RJ/2022
Os profissionais técnicos de aplicativos responsáveis por plataformas, arquitetura e integração devem racionalizar inovações recentes
para revitalizar seus portfólios de aplicativos. A modernização da arquitetura e da entrega de aplicativos e integração é necessária
para oferecer suporte à agilidade comercial sustentável. Nesse contexto, é correto

A tratar a arquitetura e a tecnologia isoladamente, de forma que processos, estrutura organizacional e plataformas somente sejam
acoplados quando finalizados.

B realizar a modernização para todos os produtos e cenários possíveis de uma vez, abrangendo todos os serviços, ainda que haja
maiores riscos.

C implantar as aplicações em multicloud na arquitetura de microsserviços e somente aplicar princípios de desenvolvimento ágil e
DevOps, se ambas implantações ocorrerem com sucesso.

D priorizar a liberação de atualizações para toda a organização (big bang), evitando os princípios de aplicativos de malha (mesh app) e
MASA (mesh app and service architecture).

E criar APIs (application programming interface) para que os aplicativos as usem de modo que não haja acesso direto ao banco de
dados, ou seja, tornar os aplicativos fracamente acoplados.

300
Cespe/SERPRO/2023
A prática de database migration é fundamental em DevOps para garantir
a consistência dos dados bem como sua disponibilidade e segurança.

301

O que é migrations?

https://www.martinfowler.com/articles/evodb.html
https://medium.com/knoldus/introduction-
to-database-migrations-using-flyway-
da62d3366c00

302
FEPESE/2023
Muitas organizações têm adotado práticas de DevOps no desenvolvimento de software.

A Baseado no modelo waterfall, DevOps é ideal para auxiliar equipes a manter um ritmo com modelos de desenvolvimento e entrega
acelerados, tais como integração contínua e entrega para produção contínua (CI/CD).

B Integração Contínua (Continuous integration - CI) é uma prática de desenvolvimento de software na qual desenvolvedores
regularmente atualizam o seu código (realiza um commit) em um repositório compartilhado.

C O uso de DevOps tem como objetivo criar uma cultura de colaboração entre as equipes de desenvolvimento e de operações que
permite aumentar o fluxo de trabalho completado, reduzindo a quantidade de deploys, ao mesmo tempo aumentando a estabilidade
e robustez do ambiente de produção.

D A integração contínua (Continuous Integration - CI) foca na disponibilização de blocos de código completos para um repositório em
intervalos regulares de tempo. Estes blocos de Código devem sempre estar em condições de serem executados para serem testados
ou colocados em produção.

E No uso de microservices, como uma arquitetura monolítica, CD permite aos desenvolvedores serem responsáveis por partes
maiores e gerenciáveis do código que implementam funcionalidades individuais e trabalhar nestas em paralelo.

303

VUNESP/TJRS/2023
Um arquivo YAML de configuração de um serviço Kubernetes possui o seguinte conteúdo:
apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
TJRS2301/003-AnalistaTecInf-Suporte 14
Confidencial até o momento da aplicação.
75.
76.
Os (A)
(B)
(C) (D) (E)
selector:
app.kubernetes.io/name: MyApp
ports:
- protocol: TCP
port: 80
targetPort: 9376
pods que devem ser incluídos no serviço são aqueles que escutam (listen) em alguma porta do
protocolo TCP, em qualquer porta.
aqueles que escutam (listen) na porta 80 do proto- colo TCP.
aqueles que possuem a label spec. aqueles que possuem a label my-service.
aqueles que possuem a label app.kubernetes.io/ name: MyApp.

304
VUNESP/TJRS/2023
O seguinte comando do Kubernetes kubectl create ns conf
tem por objetivo
(A) aplicar no cluster as configurações contidas no
arquivo conf, após sua atualização.
(B) criar um job chamado conf com base na imagem ns.
(C) criar um cronjob chamado conf com base na imagem ns.
(D) criar um namespace chamado conf.
(E) criar uma priority class chamada conf com a des-
crição ns.

305

FUNDATEC/2023
Qual a vantagem de utilizar o Kubernetes no desenvolvimento com .NET 5 e .NET Core
utilizando Docker?
A Permitir a execução de aplicativos .NET em diferentes sistemas operacionais.
B Possibilitar a distribuição de cargas de trabalho de aplicativos .NET entre diferentes clusters
Kubernetes.
C Garantir a escalabilidade automática de aplicativos .NET de acordo com a demanda.
D Simplificar o processo de implantação de aplicativos .NET em contêineres Docker.
E Oferecer um ambiente de desenvolvimento padronizado para aplicativos .NET.

306
FCC/TRT/2023
Um Técnico está participando de um projeto de microsserviços distribuídos onde centenas de contêineres
são utilizados. Para fazer a orquestração destes contêineres, ou seja, a coordenação e o monitoramento,
ele precisa utilizar um recurso que possa permitir que a atualização da aplicação em um contêiner não
interrompa o serviço. O recurso sugerido corretamente por ele, nesse caso, foi o
A Qubes.
B VirtualBox.
C VMWare.
D Docker, em modo padrão.
E Kubernetes.

307

Cespe/SEFIN/2023
As ferramentas DevOps incluem o Kubernetes, uma plataforma de
orquestração de contêineres que permite gerenciar e escalonar
aplicativos em contêineres em diferentes ambientes e pode ser
integrada a outras ferramentas DevOps, como Docker e Jenkins.

308
Serpro/2023
O Kubernetes permite agrupar hosts executados em contêineres Linux
(LXC) em clusters Kubernetes, os quais podem conter um kubelet, que é
um grupo de um ou mais contêineres implantados em um nó,
suportando aplicações que realizam, por exemplo, a transmissão de
dados em tempo real pelo Apache Kafka.

309

CGE-SC/2023
O desenvolvimento de aplicações nativas em nuvem é uma abordagem voltada para a criação, execução e aprimoramento de
aplicações com base em tecnologias e técnicas reconhecidas de cloud computing. Uma aplicação nativa em nuvem

A traz benefícios somente se executado no modelo “Serverless”, em que os desenvolvedores não precisam provisionar servidores ou
gerenciar a escala das aplicações.

B é uma maneira de criar e executar aplicações responsivas, escaláveis e tolerantes a falhas, em qualquer ambiente, seja em nuvens
públicas, privadas ou híbridas.

C se concentra na modularidade da arquitetura, mas ainda apresenta grande acoplamento e dependência de outros serviços.

D é um conceito revolucionário que pode ajudar muitas empresas a acelerar a inovação, mas necessita de alto investimento financeiro
para seu desenvolvimento.

E é um conjunto de serviços fortemente acoplados na nuvem pública, grandes e independentes, projetadas para agregar valor
reconhecido aos negócios.

310
FCC/TRT-17/2022
Considere as seguintes definições:

I. Gerencia os containers em execução e, por isso, ele também é chamado de Orquestrador de Containers. Através dele se pode
definir o estado de um sistema completo, por exemplo, baseado em Microservices, seguindo boas práticas de infraestrutura como
código, permitindo balanceamento de carga, alta disponibilidade, atualizações em lote e rollbacks.

II. Refere-se a um grupo de servidores distribuídos geograficamente que trabalham em conjunto para oferecer uma rápida entrega de
conteúdo de internet. Permite uma transferência rápida dos ativos necessários para carregar o conteúdo da internet, incluindo
páginas HTML, arquivos em JavaScript, folhas de estilo, imagens e vídeos.

III. Projeto opensource escrito em Go, que torna a criação e o gerenciamento de containers Linux mais fácil. O container é construído
usando namepspaces, cgroups, chroot entre outras funcionalidades do kernel para criar uma área isolada para a aplicação. É
executado como um processo isolado no sistema operacional hospedeiro, compartilhando o kernel com outros recipientes.

As definições I, II e III correspondem, correta e respectivamente, a

311

FCC/TRT-17/2022
A Kubernetes, Docker e Content Delivery Network (CDN).
B Content Delivery Network (CDN), Kubernetes e Docker.
C Content Delivery Network (CDN), Docker e Kubernetes.
D Docker, Content Delivery Network (CDN) e Kubernetes.
E Kubernetes, Content Delivery Network (CDN) e Docker.

312
#WEB

Prof. Raphael Lacerda

313

HTML/CSS/JS - o que lembrar?

314
FGV/CGE-SC/2023
Avalie se a maneira correta de lidar com erros em uma API RESTful inclui as seguintes ações:

I. Retornar um código de status 200 OK com uma mensagem de erro no corpo da resposta. II. Retornar um código de status 400 Bad
Request com uma mensagem de erro no corpo da resposta. III. Retornar um código de status 500 Internal Server Error com uma
mensagem de erro no corpo da resposta. IV. Retornar um código de status 200 OK com uma mensagem de erro no cabeçalho de
resposta. V. Retornar um código de status 202 Accepted com uma mensagem de erro no corpo da resposta.

Estão corretas as ações

A I e II, apenas.

B II e III, apenas.

C III e IV, apenas.

D IV e V, apenas.

E I, II, III, IV e V.

315

FGV/SENADO/2023
Na implementação de uma API REST, se precisarmos fazer uma chamada
idempotente, o verbo mais adequado é
A POST.
B PATCH.
C PUT.
D DELETE.
rest - Why PATCH is neither safe nor
E OPTIONS. idempotent? - Stack Overflow

Understanding Idempotency and Safety in


https://www.rfc-editor.org/rfc/rfc7231#page-
API Design | Nordic APIs |
23

316
FGV/CGE-SC/2023
Assinale a opção que apresenta, se for o caso, a diferença entre os seletores CSS "div > p" e "div p".

A "div > p" seleciona todos os elementos <p> que são filhos diretos de um elemento <div>, enquanto "div p" seleciona todos os
elementos <p> que são descendentes de um elemento <div> independentemente do nível de "nesting".

B "div > p" seleciona todos os elementos <p> que são irmãos de um elemento <div>, enquanto "div p" seleciona todos os elementos
<p> que são descendentes de um elemento <div> independentemente do nível de "nesting".

C "div > p" seleciona todos os elementos <p> que são filhos diretos de um elemento <div>, enquanto "div p" seleciona todos os
elementos <p> que são filhos diretos de um elemento <div> independentemente do nível de "nesting".

D "div > p" seleciona todos os elementos <p> que são descendentes de um elemento <div>, enquanto "div p" seleciona todos os
elementos <p> que são filhos diretos de um elemento <div> independentemente do nível de "nesting".

E Tanto "div > p" quanto "div p" selecionam todos os elementos <p> que são descendentes de um elemento <div>
independentemente do nível de "nesting".

317

FGV/CGE-SC/2023
Assinale a opção que apresenta, se for o caso, a diferença entre os seletores CSS "div > p" e "div p".

A "div > p" seleciona todos os elementos <p> que são filhos diretos de um elemento <div>, enquanto "div p" seleciona todos os
elementos <p> que são descendentes de um elemento <div> independentemente do nível de "nesting".

B "div > p" seleciona todos os elementos <p> que são irmãos de um elemento <div>, enquanto "div p" seleciona todos os elementos
<p> que são descendentes de um elemento <div> independentemente do nível de "nesting".

C "div > p" seleciona todos os elementos <p> que são filhos diretos de um elemento <div>, enquanto "div p" seleciona todos os
elementos <p> que são filhos diretos de um elemento <div> independentemente do nível de "nesting".

D "div > p" seleciona todos os elementos <p> que são descendentes de um elemento <div>, enquanto "div p" seleciona todos os
elementos <p> que são filhos diretos de um elemento <div> independentemente do nível de "nesting".

E Tanto "div > p" quanto "div p" selecionam todos os elementos <p> que são descendentes de um elemento <div>
independentemente do nível de "nesting".

318
#TESTES

Prof. Raphael Lacerda

319

Tipos de Testes?

320
QUESTÕES

Prof. Raphael Lacerda

321

FGV/AL-MT/2023
Com relação ao desenvolvimento orientado (dirigido) a testes (do Inglês Test Driven Development - TDD), analise as afirmativas a seguir.

I. TDD é uma técnica de desenvolvimento de software iterativa e incremental.

II. TDD implica escrever o código de teste antes do código de produção, um teste de cada vez, tendo certeza de que o teste falha antes de escrever o código que
irá fazê-lo passar.

III. TDD é uma técnica específica do processo XP (Extreme Programming), portanto, só pode ser utilizada em modelos de processo ágeis de desenvolvimento de
solftware.

A se somente as afirmativas I e II estiverem corretas.

B se somente as afirmativas I e III estiverem corretas.

C se somente as afirmativas II e III estiverem corretas.

D se somente a afirmativa III estiver correta.

E se somente a afirmativa I estiver correta.

322
FGV/AL-MT/2023
Com relação ao desenvolvimento orientado (dirigido) a testes (do Inglês Test Driven Development - TDD), analise as afirmativas a seguir.

I. TDD é uma técnica de desenvolvimento de software iterativa e incremental.

II. TDD implica escrever o código de teste antes do código de produção, um teste de cada vez, tendo certeza de que o teste falha antes de escrever o código que
irá fazê-lo passar.

III. TDD é uma técnica específica do processo XP (Extreme Programming), portanto, só pode ser utilizada em modelos de processo ágeis de desenvolvimento de
solftware.

A se somente as afirmativas I e II estiverem corretas.

B se somente as afirmativas I e III estiverem corretas.

C se somente as afirmativas II e III estiverem corretas.

D se somente a afirmativa III estiver correta.

E se somente a afirmativa I estiver correta.

323

FGV/SEFAZ-MG/2023
Desenvolvimento guiado por testes (TDD) é uma técnica de desenvolvimento de software que
A incentiva a construção de um alto número de testes de unidades de modo a eliminar a necessidade dos
testes de integração e aceitação.
B requer que os desenvolvedores escrevam testes de unidades antes da codificação da aplicação.
C delimita o tempo máximo que o programador deve empenhar escrevendo testes para manter a
produtividade.
D testa unidades de ativos efêmeros que devem ser invalidados após o uso, pois repetir testes é um
desperdício de tempo.
E encoraja os desenvolvedores a escreverem testes apenas para verificação dos bugs detectados pelo
usuário final na etapa de aceitação.

324
FGV/SEFAZ-MG/2023
Desenvolvimento guiado por testes (TDD) é uma técnica de desenvolvimento de software que
A incentiva a construção de um alto número de testes de unidades de modo a eliminar a necessidade dos
testes de integração e aceitação.
B requer que os desenvolvedores escrevam testes de unidades antes da codificação da aplicação.
C delimita o tempo máximo que o programador deve empenhar escrevendo testes para manter a
produtividade.
D testa unidades de ativos efêmeros que devem ser invalidados após o uso, pois repetir testes é um
desperdício de tempo.
E encoraja os desenvolvedores a escreverem testes apenas para verificação dos bugs detectados pelo
usuário final na etapa de aceitação.

325

FGV/TRT-16/2022
JUnit é um framework que facilita o desenvolvimento e execução de testes unitários
em códigos Java. Ao contrário das versões anteriores, o JUnit 5 é composto por
muitos módulos oriundos de três subprojetos diferentes conhecidos como
A IntelliJ IDEA, Spring Boot e Ant.
B Plataforma JUnit, Maven e Eclipse.
C Gradle, Jupyter Notebook e Mockito.
D Plataforma JUnit, JUnit Jupiter e JUnit Vintage.
E Visual Studio Code, Gradle e Plataforma Vintage.

326
FGV/TRT-16/2022
JUnit é um framework que facilita o desenvolvimento e execução de testes unitários
em códigos Java. Ao contrário das versões anteriores, o JUnit 5 é composto por
muitos módulos oriundos de três subprojetos diferentes conhecidos como
A IntelliJ IDEA, Spring Boot e Ant.
B Plataforma JUnit, Maven e Eclipse.
C Gradle, Jupyter Notebook e Mockito.
D Plataforma JUnit, JUnit Jupiter e JUnit Vintage.
E Visual Studio Code, Gradle e Plataforma Vintage.

327

FGV/CGE-SC/2023
O tipo de teste de software que serve para garantir que todas ou algumas partes
de um sistema estão dialogando e funcionando corretamente em conjunto é o
teste
A de regressão.
B de aceitação.
C de integração.
D de validação.
E unitário.

328
FGV/CGE-SC/2023
O tipo de teste de software que serve para garantir que todas ou algumas partes
de um sistema estão dialogando e funcionando corretamente em conjunto é o
teste
A de regressão.
B de aceitação.
C de integração.
D de validação.
E unitário.

329

FGV/SENADO/2023
Você foi contratado para liderar uma equipe de DevOps. Um dos objetivos da sua liderança é aumentar a
velocidade das entregas e a qualidade de novos recursos das aplicações utilizando o desenvolvimento
orientado a testes.
Assinale a opção que apresenta a ordem que descreve o ciclo de desenvolvimento orientado a testes.
A Refatorar - > Escrever um código funcional
B Escrever um caso de teste -> Refatorar
C Refatorar - > Escrever um código funcional - > Escrever um caso de teste
D Escrever um caso de teste -> Escrever um código funcional -> Refatorar
E Escrever um código funcional -> Escrever um caso de teste -> Refatorar

330
FGV/SENADO/2023
Você foi contratado para liderar uma equipe de DevOps. Um dos objetivos da sua liderança é aumentar a
velocidade das entregas e a qualidade de novos recursos das aplicações utilizando o desenvolvimento
orientado a testes.
Assinale a opção que apresenta a ordem que descreve o ciclo de desenvolvimento orientado a testes.
A Refatorar - > Escrever um código funcional
B Escrever um caso de teste -> Refatorar
C Refatorar - > Escrever um código funcional - > Escrever um caso de teste
D Escrever um caso de teste -> Escrever um código funcional -> Refatorar
E Escrever um código funcional -> Escrever um caso de teste -> Refatorar

331

FGV/SENADO/2023
Durante o processo de construção de software, a metodologia de Desenvolvimento Orientado a Testes é
muito aplicada.
A ordem utilizada na prática do TDD é
A escrever a funcionalidade após escrever os testes unitários e, por fim, refatorar o código implementado.
B escrever os testes unitários após escrever a funcionalidade e, por fim, refatorar o código implementado.
C escrever a funcionalidade após refatorar o código implementado e por fim escrever os testes unitários.
D escrever os testes unitários após escrever a funcionalidade e, por fim, escrever os testes de integração.
E escrever os testes de integração após escrever a funcionalidade e, por fim, refatorar o código.

332
FGV/SENADO/2023
Durante o processo de construção de software, a metodologia de Desenvolvimento Orientado a Testes é
muito aplicada.
A ordem utilizada na prática do TDD é
A escrever a funcionalidade após escrever os testes unitários e, por fim, refatorar o código implementado.
B escrever os testes unitários após escrever a funcionalidade e, por fim, refatorar o código implementado.
C escrever a funcionalidade após refatorar o código implementado e por fim escrever os testes unitários.
D escrever os testes unitários após escrever a funcionalidade e, por fim, escrever os testes de integração.
E escrever os testes de integração após escrever a funcionalidade e, por fim, refatorar o código.

333

FGV/TRT-13/2022
Mockito 4.8.0 é um framework que tem como objetivo fazer testes unitários em aplicações
Java.
O pacote nativo de verificação de erros é o
A org.mockito.configuration.stacktrace.
B org.mockito.exceptions.verification.
C org.mockito.invocation.listeners.
D org.mkt.failures.checking.
E org.mkt.errors.verifing.

334
FGV/TRT-13/2022
Mockito 4.8.0 é um framework que tem como objetivo fazer testes unitários em aplicações
Java.
O pacote nativo de verificação de erros é o
A org.mockito.configuration.stacktrace.
B org.mockito.exceptions.verification.
C org.mockito.invocation.listeners.
D org.mkt.failures.checking.
E org.mkt.errors.verifing.

335

#PYTHON

Prof. Raphael Lacerda

336
Quais métodos devo
saber?

https://www.w3schools.com/python/python_ref_string.asp
Prof. Raphael Lacerda

337

e mais

https://www.w3schools.com/python/python_ref_string.asp
Prof. Raphael Lacerda

338
Prof. Raphael Lacerda

339

Condições! (IF)

Prof. Raphael Lacerda

340
Loops

Prof. Raphael Lacerda

341

LISTAS

Prof. Raphael Lacerda

342
Quais devo saber?

Prof. Raphael Lacerda

343

Prof. Raphael Lacerda

344
Set

Prof. Raphael Lacerda

345

Dict métodos

Prof. Raphael Lacerda

346
Built-in functions

https://www.w3schools.com/python/python_ref_functions.asp
Prof. Raphael Lacerda

347

QUESTÕES

Prof. Raphael Lacerda

348
FGV/SEAP-AP/2022
Analise o código Python a seguir.

L=["Um","Dois","Três","Quatro","Cinco","Seis"]
print(L[4][2])

Assinale o efeito da execução desse trecho.

A A exibição da letra “n”.

B A exibição da lista "[“Quatro","Cinco"].

C A exibição da palavra “Cinco”.


D A exibição do número 5.

E A mensagem de erro “object is not subscriptable”.

349

FGV/SEAP-AP/2022
Analise o código Python a seguir.

L=["Um","Dois","Três","Quatro","Cinco","Seis"]
print(L[4][2])

Assinale o efeito da execução desse trecho.

A A exibição da letra “n”.

B A exibição da lista "[“Quatro","Cinco"].

C A exibição da palavra “Cinco”.


D A exibição do número 5.

E A mensagem de erro “object is not subscriptable”.

350
FGV/MPE-SC/2022
Analise o código Python a seguir.
x = 0 y = 20 try: print (y/x) except: print("Deu erro!") else: print("Ok") finally: print ("The end")
A saída produzida pela execução desse trecho é:
A None The end
B Deu erro! The end
C Deu erro! Ok
D Ok The end
E None Ok The end

351

FGV/MPE-SC/2022
Analise o código Python a seguir.
x = 0 y = 20 try: print (y/x) except: print("Deu erro!") else: print("Ok") finally: print ("The end")
A saída produzida pela execução desse trecho é:
A None The end
B Deu erro! The end
C Deu erro! Ok
D Ok The end
E None Ok The end

352
FGV/TJDFT/2023
No contexto do Python 3.9, analise o trecho a seguir.
import json
s1 = "{\"nome\": \"Ciro\", \"cep\": \"99999-999\"}"
s2 = "[\"um\", \"dois\"]"
s3 = "true"
s4 = "null"
print(json.loads(s1)) print(json.loads(s2)) print(json.loads(s3)) print(json.loads(s4))
Dado que “\” funciona como escape character, o resultado exibido pela execução desse trecho é:

353

FGV/TJDFT/2023
No contexto do Python 3.9, analise o trecho a seguir.
import json
{'nome': 'Ciro', 'cep': '99999-999'}
s1 = "{\"nome\": \"Ciro\", \"cep\": \"99999-999\"}"
['um', 'dois']
s2 = "[\"um\", \"dois\"]"
True
s3 = "true"
None
s4 = "null"
print(json.loads(s1)) print(json.loads(s2)) print(json.loads(s3)) print(json.loads(s4))
Dado que “\” funciona como escape character, o resultado exibido pela execução desse trecho é:

354
FGV/TJDFT/2023
Analise o código Python 3.9 a seguir.
o trecho tracejado na segunda linha deve ser substituído por:
A __init__(self, xaltura, xlargura):
B __init__(xaltura, xlargura):
C init (xaltura, xlargura):
D new (self, args[xaltura, xlargura]):
E new (self, xaltura, xlargura):

355

FGV/TJDFT/2023
Analise o código Python 3.9 a seguir.
o trecho tracejado na segunda linha deve ser substituído por:
A __init__(self, xaltura, xlargura):
B __init__(xaltura, xlargura):
C init (xaltura, xlargura):
D new (self, args[xaltura, xlargura]):
E new (self, xaltura, xlargura):

356
FGV/PGM/2023
Considere o código Python a seguir.

L=[0, 1, 1, 2, 3, 5, 8, 13, 21] print (L[2:4][-1])

O resultado exibido na execução desse script é:

357

FGV/PGM/2023
Considere o código Python a seguir.

L=[0, 1, 1, 2, 3, 5, 8, 13, 21] print (L[2:4][-1])

O resultado exibido na execução desse script é: 2

Python Slicing – How to Slice an Array and


What Does [::-1] Mean? (freecodecamp.org)

358
FGV/PGM/2023
Analise o código Python a seguir.

for num in enigma(10):

print(num)

Dado que a execução desse código exibe 10 números inteiros, a formulação correta para a função enigma é:

A def enigma(n): for i in range(n): yield i

B def enigma(n): for i in range(n): return i

C def enigma(n): for i in range(n): if i == 0: return i else: return (enigma3(n-1))

D def enigma(n): return n * range(n)

E def enigma(n): return n!

359

FGV/PGM/2023
Analise o código Python a seguir.

for num in enigma(10):

print(num)

Dado que a execução desse código exibe 10 números inteiros, a formulação correta para a função enigma é:

A def enigma(n): for i in range(n): yield i

B def enigma(n): for i in range(n): return i

C def enigma(n): for i in range(n): if i == 0: return i else: return (enigma3(n-1))

D def enigma(n): return n * range(n)

E def enigma(n): return n!

Quando usar o yield no Python. 1. Introdução How to Use Generators and yield in Python –
| by Bernardo Costa | Medium Real Python

360
FGV/TCU/2022
Considere o código Python a seguir.

def xpto(S):

for k in range(0,len(S)):

if k%2 == 0:

yield(S[k]);

S=[1,2,3,4,5,6]

for x in xpto(S[::-1]):

print (x)

A execução desse código na IDLE Shell produz, na ordem e exclusivamente, os números:

(A) 6, 1 (B) 5, 3, 1 (C) 6, 4, 2 (D) 1, 3, 5 (E) 2,4,6

361

FGV/TCU/2022
Considere o código Python a seguir.

def xpto(S):

for k in range(0,len(S)):

if k%2 == 0:

yield(S[k]);

S=[1,2,3,4,5,6]

for x in xpto(S[::-1]):

print (x)

A execução desse código na IDLE Shell produz, na ordem e exclusivamente, os números:

(A) 6, 1 (B) 5, 3, 1 (C) 6, 4, 2 (D) 1, 3, 5 (E) 2,4,6

362
FGV/TCE-RO/2022
Analise o código Python 2.7 a seguir.
O valor exibido pelo comando print é:
A0
B1
C5
D 10
E 50

363

FGV/TCE-RO/2022
Analise o código Python 2.7 a seguir.
O valor exibido pelo comando print é:
A0
B1
C5
D 10
E 50

364
FGV/CGE-SC/2023
Analise o código em Python a seguir.
def foo(x):
return x + 1
def bar(x):
return foo(x) * 2
print(bar(2))
O resultado exibido será

365

FGV/CGE-SC/2023
Analise o código em Python a seguir.
def foo(x):
return x + 1
def bar(x):
return foo(x) * 2
print(bar(2))
O resultado exibido será: 6

366
FGV/CGU/2022
Analise o código Python a seguir.
x = lambda a, b: a + [a[-1] + a[-2] + b] y=[-1,0] for i in range(7): y = x(y, i) print (y)
O resultado produzido pela execução desse código na IDLE Shell 3.9.9 é:
A [-1, 0, -1, -1, -2, -3, -5, -8, -13]
B [0, -1, 4, 9, 18, 33, 51, 84]
C [-1, 0, -1, -2, -3, -5, -8, -13, -21]
D [-1, 0, -1, 0, 1, 4, 9, 18, 33]
E [-1, 0, -1, 4, 9, 18, 33, 51]

367

FGV/CGU/2022
Analise o código Python a seguir.
x = lambda a, b: a + [a[-1] + a[-2] + b] y=[-1,0] for i in range(7): y = x(y, i) print (y)
O resultado produzido pela execução desse código na IDLE Shell 3.9.9 é:
A [-1, 0, -1, -1, -2, -3, -5, -8, -13]
B [0, -1, 4, 9, 18, 33, 51, 84]
C [-1, 0, -1, -2, -3, -5, -8, -13, -21]
D [-1, 0, -1, 0, 1, 4, 9, 18, 33]
E [-1, 0, -1, 4, 9, 18, 33, 51]

368
@canetas.pretas
OBRIGADO!
FOCO NA
@canetaspretas

@canetaspretas
APROVAÇÃO
Prof. Raphael Lacerda
@canetaspretas

369

ARQUITETURA DE INFRAESTRUTURA
DE TECNOLOGIA DA INFORMAÇÃO
E COMUNICAÇÃO
Prof. Evandro Dalla Vecchia
@peritoevandro Prof. Evandro Dalla
@canetas.pretas

370
LINUX E SHELL SCRIPT

Prof. Evandro Dalla

371

Linux - Conceitos básicos


 Sistema operacional interativo: usuário interage diretamente
com o computador (dispositivos de entrada e saída);
 Código aberto (open source);
 Usuário root: "administrador", tem "poder total" sobre o
sistema. Seu diretório "home" é o "/root";
 Usuários "comuns" têm como diretório "home" o
"/home/nome_usr", ex.: "/home/evandro";

Prof. Evandro Dalla Vecchia


@peritoevandro

372
Sistema Multitarefa e Multiusuário
 Vários processos podem ser executados ao mesmo tempo
(multitarefa), mesmo com apenas um processador
▪ Escalonamento dos processos no processador, dando a ilusão de um
paralelismo (pseudoparalelismo);
 Criação de um processo: o processo novo passa a ser filho de
outro e a chamada de sistema utilizada é a fork();

Prof. Evandro Dalla Vecchia


@peritoevandro

373

Sistema Multitarefa e Multiusuário


 Vários usuários podem utilizar ao mesmo tempo
(multiusuário)
▪ Aplicações em execução em sessões de usuários diferentes;
▪ Comando "who": mostra quem (nomes dos usuários) está logado no
computador.

Prof. Evandro Dalla Vecchia


@peritoevandro

374
Kernel e Shell
 Kernel (núcleo) monolítico: todo o conjunto de instruções de
controle do hardware é executado no espaço de núcleo no
modo de supervisão
▪ Um único executável que possui todos os códigos de suporte
necessários agregados;
 Aplicativos utilizam alguma interface (shell ou servidor de
janelas) para fazer a "ligação" com o kernel;
 Somente o kernel faz a comunicação com o hardware (disco,
teclado etc.).
Prof. Evandro Dalla Vecchia
@peritoevandro

375

Kernel e Shell
 Shell: interpretador de comandos com a função de ler o
comando, interpretar seu significado, executar e devolver o
resultado
▪ Exs.: sh (Bourne shell), bash (Bourne again shell), csh (C shell) etc.

Prof. Evandro Dalla Vecchia


@peritoevandro

376
Kernel e Shell
 Compilação do kernel: adiciona suporte a novos dispositivos
etc.;
 Módulos: partes do kernel que são carregadas somente
quando solicitadas por algum aplicativo ou dispositivo e
descarregadas da memória quando não são mais utilizadas
▪ Evita-se a construção de um kernel grande (estático) que ocupe grande
parte da memória com todos os drivers compilados.

Prof. Evandro Dalla Vecchia


@peritoevandro

377

Kernel e Shell
 Localização padrão dos módulos:
/lib/modules/versão_do_kernel/
 Comando que permite obter informações acerca do servidor:
"uname" - com o argumento "-a" é possível obter todas as
informações, incluindo a versão do kernel.

Prof. Evandro Dalla Vecchia


@peritoevandro

378
Execução em Background
 jobs: mostra a lista dos processos executados em background;
 Se o usuário quiser interagir novamente com o processo, deve
utilizar o comando "fg" seguido de % número_job. Exemplo:
estrategia:~$ jobs
[1] - Running script.sh
[2] + Suspended (tty output) teste.sh
estrategia:~$ fg %2

Prof. Evandro Dalla Vecchia


@peritoevandro

379

Execução em Background
 daemons: processos que tipicamente só são executados em
background (sem interação com o usuário)
▪ Geralmente possuem um nome que termina com a letra "d", ex:
syslogd (daemon que gerencia o log do sistema);
▪ O processo pai de um daemon é normalmente o processo init (PID=1);
▪ De forma geral, os sistemas operacionais iniciam daemons durante o
processo de boot.

Prof. Evandro Dalla Vecchia


@peritoevandro

380
Agendamento de Tarefas
 Cron e suas implementações atuais (Vixie Cron, ISC Cron, BCron
etc.): ideal para sistemas que não são interrompidos;
 Independente da implementação utilizada, a configuração é muito
parecida, realizada no arquivo Crontab;
 Estrutura do Crontab:
min horas dias do mês mês dias da semana comando
 crontab -l: lista a crontab. Exemplo:
crontab -l

Prof. Evandro Dalla Vecchia


55 * * * 5 /home/maria/backup.sh
@peritoevandro

381

Agendamento de Tarefas
 Alguns exemplos comentados:
# executa cinco minutos depois da meia-noite, todos os dias (* = tudo)
50*** $HOME/bin/script.sh
# executa às 14h15min no dia 1º de cada mês
15 14 1 * * $HOME/bin/script.sh

Prof. Evandro Dalla Vecchia


@peritoevandro

382
Sistemas de Arquivos
 Sistema de arquivos: gerencia os arquivos (estrutura, nome,
como acessar etc.);
 Journal: diário das alterações realizadas, permite que o
sistema de arquivos seja reparado de forma muito rápida após
o desligamento incorreto;
 EXT (EXTended File System): EXT2, EXT3, EXT4 (versões 3 e 4
com journaling) – o mais conhecido!

Prof. Evandro Dalla Vecchia


@peritoevandro

383

Sistemas de Arquivos
 O Ext3 possui três modos de operação:
▪ ordered (default): o journal é atualizado no final de cada operação;
▪ writeback: o journal armazena apenas informações referentes à
estrutura do sistema de arquivos (metadados) e não em relação aos
arquivos propriamente ditos, é gravado de forma mais ocasional;
▪ journal: é o mais seguro e mais lento. O journal armazena não apenas
informações sobre as alterações, mas também uma cópia de segurança
de todos os arquivos modificados.

Prof. Evandro Dalla Vecchia


@peritoevandro

384
Estrutura dos Diretórios
 FHS (File Hierarchy Standard): padrão para que softwares e
usuários possam prever a localização de arquivos e diretórios
instalados. Estrutura padrão:
▪ /etc: dados de configuração (scripts de inicialização, tabela de sistemas
de arquivo, configurações de login, configuração da fila de impressão,
entre outros);
▪ /usr: maior parte dos aplicativos e bibliotecas do sistema;
▪ /usr/bin: executáveis dos programas;
▪ /usr/lib: bibliotecas e arquivos compartilhados;
Prof. Evandro Dalla Vecchia
@peritoevandro

385

Estrutura dos Diretórios


▪ /usr/src: código-fonte de programas;
▪ /usr/doc: documentação em geral;
▪ /home: arquivos dos usuários (arquivos de trabalho, músicas, filmes,
downloads etc.);
▪ /boot: imagem do Kernel e o initrd (initial ram disk), carregados no
início do boot;
▪ /bin: comandos básicos, como "cd", "ls" e "cat";
▪ /lib: módulos do Kernel e bibliotecas básicas do sistema;

Prof. Evandro Dalla Vecchia


@peritoevandro

386
Estrutura dos Diretórios
▪ /opt: arquivos de aplicativos adicionais (opcionais, ou "optionals"), que
não são essenciais para o sistema. Cada aplicativo tem uma subpasta
com seu respectivo nome;
▪ /proc: informações de depuração do Kernel, configurações que
habilitam e desabilitam o suporte à algum elemento no Kernel;
▪ /tmp: arquivos temporários.

Prof. Evandro Dalla Vecchia


@peritoevandro

387

Permissões de Acesso
 Cada arquivo/diretório possui um conjunto de permissões e
propriedades;
 Níveis de permissão
▪ Usuário dono (“owner”): proprietário do arquivo/diretório;
▪ Grupo dono: grupo proprietário do arquivo/diretório;
▪ Outros: qualquer outro usuário que não se encaixe nos níveis
anteriores.

Prof. Evandro Dalla Vecchia


@peritoevandro

388
Permissões de Acesso
 Tipos de permissão
▪ Leitura (r): permissão para visualizar o conteúdo do arquivo;
▪ Escrita (w): permissão para alterar o conteúdo do arquivo;
▪ Execução (x): permissão para executar o arquivo.

U G O
r w x r w x r w x

Prof. Evandro Dalla Vecchia


@peritoevandro

389

Visualização das Permissões


 ls -l: lista arquivos com informações adicionais, incluindo
colunas com as permissões, nome do usuário e grupo do dono.

Prof. Evandro Dalla Vecchia


@peritoevandro

390
Modificação das Permissões
 chmod: modifica permissões de acesso
▪ -R: modifica arquivos/diretórios recursivamente.
chmod u=rwx,g=rx,o=x nome_arquivo

chmod 0751 /home/evandro/arquivo.txt

Prof. Evandro Dalla Vecchia


@peritoevandro

391

Modificação das Permissões

chmod +x teste

Prof. Evandro Dalla Vecchia


@peritoevandro

392
Shell script - criando um arquivo
 Há dois modos de realizar essa ação: via modo gráfico ou via
terminal;
 vi script.sh: será criado e aberto um arquivo de leitura e
escrita;
 touch script.sh: cria um arquivo sem abri-lo;
 “.sh” geralmente é utilizado como extensão, mas não é uma
obrigação!

Prof. Evandro Dalla Vecchia


@peritoevandro

393

Permissão ao arquivo
 Para começar a editar o arquivo, é necessário conceder a
permissão de escrita (w) a ele;
 chmod 777 script.sh: permissões “totais” a qualquer usuário;
 chmod 700 script.sh: permissão completa apenas para o dono
do arquivo;
Pensando mais em segurança, pode-se, pode exemplo, liberar
apenas a execução (x):
▪ chmod +x script.sh

Prof. Evandro Dalla Vecchia


@peritoevandro

394
Editar e executar o arquivo
 vi script.sh: após aberto o vi, é necessário digitar "i" para
colocar o vi no modo "inserção";
 Definição de qual shell será utilizado (primeira linha do
arquivo):
#!/bin/bash

Prof. Evandro Dalla Vecchia


@peritoevandro

395

Comentários
 Deve-se utilizar o caractere "#" para iniciar o comentário:
# A linha abaixo serve para bla bla bla

Prof. Evandro Dalla Vecchia


@peritoevandro

396
Definição de variáveis
 Variáveis: utilizadas para armazenar dados e valores
temporários ou resultados intermediários para
processamento;
nome_da_variavel=valor
 nome_da_variavel: deve começar com uma letra e não pode
conter espaços ou caracteres especiais, exceto o sublinhado
("_");
 valor: conteúdo que se deseja atribuir à variável.

Prof. Evandro Dalla Vecchia


@peritoevandro

397

Definição de variáveis
 Exemplos de definição de variáveis:
nome="Maria"
idade=40
preco=50.30

# Definindo uma lista de valores


frutas=("melancia" "abacaxi" "pera")

Prof. Evandro Dalla Vecchia


@peritoevandro

398
Acesso ao conteúdo das variáveis
# O comando echo exibe o valor da variável
echo "Oi, $nome!"
# Realizando uma operação matemática com a variável "idade"
idade_prox_ano=$((idade + 1))
echo "No próximo ano você terá $idade_prox_ano anos!"
# Acessando elementos da variável "frutas"
echo "A primeira fruta é ${frutas[0]}"
echo " A segunda fruta é ${frutas[1]}"
Prof. Evandro Dalla Vecchia
@peritoevandro

399

Comando de seleção
 Condicional "if“
if [ CONDIÇÃO ] ;
then
AÇÕES
fi

Prof. Evandro Dalla Vecchia


@peritoevandro

400
Laço "while"
 Executa o laço enquanto uma condição for verdadeira.
while [ CONDIÇÃO ]; do
AÇÕES
done

Prof. Evandro Dalla Vecchia


@peritoevandro

401

Laço "until"
 Executa o laço enquanto uma condição for falsa (um "while
invertido").
until [ CONDIÇÃO ];
do
AÇÕES
done

Prof. Evandro Dalla Vecchia


@peritoevandro

402
Operadores de comparação
 -eq (is equal to - "igual a")
if [ "$a" -eq "$b" ]
 -ne (is not equal to - "não igual a", ou "diferente de")
if [ "$a" -ne "$b" ]
 -gt (is greater than - "maior que")
if [ "$a" -gt "$b" ]

Prof. Evandro Dalla Vecchia


@peritoevandro

403

Operadores de comparação
 -ge (is greater than or equal to - "maior ou igual a")
if [ "$a" -ge "$b" ]
 -lt (is less than - "menor que")
if [ "$a" -lt "$b" ]
 -le (is less than or equal to - "menor ou igual a")
if [ "$a" -le "$b" ]

Prof. Evandro Dalla Vecchia


@peritoevandro

404
Operadores de comparação
<
(("$a" < "$b"))
 <=
(("$a" <= "$b"))
>
(("$a" > "$b"))
 >=
(("$a" >= "$b"))
Prof. Evandro Dalla Vecchia
@peritoevandro

405

Strings
#!/bin/bash
frase="ESTA É APENAS UMA FRASE!!!"
subStringA=${frase:7:6}
subStringB=${frase:14:3}
StringFinal="${subStringA} {subStringB}"
echo $StringFinal
 O que será impresso?
 Resposta: APENAS UMA

Prof. Evandro Dalla Vecchia


@peritoevandro

406
Inserção de argumentos
 Dados fornecidos por outro programa ou por um usuário com a
finalidade de produzir saídas
▪ $# : total de argumentos que foram passados;
▪ $@ : uma lista de todos os argumentos passados;
▪ $* : retorno aos argumentos;
▪ $0 : nome do script executado;
▪ $1 : o primeiro argumento enviado ao script;
▪ $2 : o segundo argumento enviado ao script;
▪ $3 : o segundo argumento, e assim por diante...
Prof. Evandro Dalla Vecchia
@peritoevandro

407

Inserção de argumentos

Prof. Evandro Dalla Vecchia


@peritoevandro

408
Contador
 Exemplo de um contador que imprime o valor na tela de 0 a 9;
 O comando "let" permite designar valores a variáveis e
realizar operações aritméticas e lógicas.

Prof. Evandro Dalla Vecchia


@peritoevandro

409

OBRIGADO!
Prof. Evandro Dalla Vecchia
@peritoevandro
@canetas.pretas

410
411

Você também pode gostar