Engenharia de Software Flashcards

(60 cards)

1
Q
  1. (CEBRASPE / EMBRAPA - 2025)

A respeito de engenharia de software, julgue o item a seguir.

O Scrum prioriza adaptabilidade e colaboração por meio de eventos regulares, o Lean foca na eliminação de desperdícios e na otimização contínua, e o Kanban enfatiza a
visualização do trabalho em progresso e a limitação de tarefas simultâneas.

A

Gabarito: CERTO (Verdadeiro)

A afirmativa está correta.

Justificativa técnica:

  • Scrum ✔️ prioriza adaptabilidade e colaboração por meio de eventos regulares (Sprint, Daily Scrum, Sprint Review e Retrospective), promovendo inspeção e adaptação contínuas.
  • Lean ✔️ foca na eliminação de desperdícios (waste) e na otimização contínua do fluxo de valor, buscando eficiência e melhoria constante.
  • Kanban ✔️ enfatiza a visualização do trabalho (quadros), o controle do trabalho em progresso (WIP) e a limitação de tarefas simultâneas, melhorando o fluxo e a previsibilidade.

📌 A descrição sintetiza corretamente os princípios centrais de cada abordagem, conforme a literatura clássica e o padrão de cobrança do CEBRASPE.

👉 Resposta final: VERDADEIRO.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q
  1. (CEBRASPE / EMBRAPA - 2025)

Em relação às metodologias de desenvolvimento de software Scrum e Kanban, à arquitetura de software e à notação BPMN, julgue o item que se
segue.

Em Scrum, o scrum master é responsável por maximizar o valor do produto e gerenciar o backlog do produto, garantindo-se que os itens estejam claros e priorizados.

A

Gabarito: ERRADO (Falso)

A afirmativa está incorreta.

Justificativa técnica:

No Scrum, as responsabilidades são claramente separadas entre os papéis:

  • 🔹 Product Owner ✔️
    É o responsável por maximizar o valor do produto e por:
    • gerenciar o Product Backlog;
    • garantir que os itens estejam claros, priorizados e compreendidos pelo time.
  • 🔹 Scrum Master
    Não é responsável por maximizar o valor do produto nem por gerenciar o backlog.
    Suas atribuições são:
    • atuar como facilitador do Scrum;
    • remover impedimentos;
    • garantir que o framework Scrum seja corretamente entendido e aplicado;
    • apoiar o Product Owner e o Time de Desenvolvimento.

📌 Portanto, ao atribuir ao Scrum Master responsabilidades que pertencem ao Product Owner, o item comete erro conceitual clássico, frequentemente explorado pelo CEBRASPE.

👉 Resposta final: ERRADO (Falso).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q
  1. (CEBRASPE / EMBRAPA - 2025)

A respeito de gestão de projetos de inovação, julgue o item a seguir.

No Scrum, o product owner é responsável por maximizar o valor do produto e gerenciar o product backlog, enquanto o scrum master facilita o processo e remove impedimentos para a equipe.

A

Gabarito: CERTO (Verdadeiro)

A afirmativa está correta.

Justificativa técnica:

No Scrum, as responsabilidades estão corretamente descritas:

  • 🔹 Product Owner ✔️
    • Responsável por maximizar o valor do produto;
    • Gerencia o Product Backlog, garantindo que os itens estejam claros, priorizados e alinhados aos objetivos do negócio.
  • 🔹 Scrum Master ✔️
    • Atua como facilitador do framework Scrum;
    • Remove impedimentos que afetem a equipe;
    • Assegura que o Scrum seja compreendido e corretamente aplicado.

📌 A assertiva está plenamente alinhada ao Guia do Scrum e à forma como o tema é cobrado pelo CEBRASPE.

👉 Resposta final: VERDADEIRO.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q
  1. (CEBRASPE / EMBRAPA - 2025)

A respeito de gestão de projetos de inovação, julgue o item a seguir.

O Scrum é considerado uma metodologia ágil e utiliza os sprints para organizar os trabalhos em ciclos com duração fixa, permitindo que as equipes de desenvolvimento entreguem incrementos funcionais do produto.

A

Gabarito: CERTO (Verdadeiro)

A afirmativa está correta.

Justificativa técnica:

  • O Scrum é amplamente tratado, em provas do CEBRASPE, como uma metodologia ágil (ainda que, tecnicamente, seja um framework).
  • Ele organiza o trabalho em sprints, que são ciclos de duração fixa (time-boxed), normalmente de 1 a 4 semanas.
  • Ao final de cada sprint, a equipe deve entregar um incremento funcional do produto, potencialmente utilizável.

📌 Esses pontos refletem exatamente os princípios centrais do Scrum:

  • trabalho iterativo e incremental;
  • entregas frequentes de valor;
  • inspeção e adaptação contínuas.

👉 Resposta final: VERDADEIRO.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q
  1. (CEBRASPE / BDMG - 2025)

A respeito de metodologias ágeis em projetos de TI e de indicadores de desempenho, julgue o próximo item.

No refinamento de histórias conforme a metodologia Scrum, as equipes devem detalhar histórias grandes sprint a sprint ou nas fases iniciais de liberação, durante as reuniões de planejamento de sprint (sprint planning).

A

Gabarito: ERRADO (Falso)

A afirmativa está incorreta.

Justificativa técnica (padrão CEBRASPE):

No Scrum, o refinamento do Product Backlog (Backlog Refinement):

  • ✔️ ocorre de forma contínua ao longo do sprint;
  • ✔️ serve para detalhar, estimar e dividir histórias grandes (epics) em histórias menores;
  • ✔️ não acontece durante a Sprint Planning.

❌ Erro central da assertiva

> “durante as reuniões de planejamento de sprint (sprint planning)”

  • A Sprint Planning tem como objetivo:
    • selecionar itens já refinados do Product Backlog;
    • definir o Sprint Goal;
    • planejar como o trabalho será realizado no sprint.
  • Não é o momento adequado para refinamento pesado ou detalhamento de histórias grandes.

📌 O refinamento pode ocorrer:

  • em reuniões específicas de backlog refinement;
  • ao longo do sprint;
  • antecipadamente, inclusive nas fases iniciais de uma liberação, mas fora da sprint planning.

🔎 O CEBRASPE costuma cobrar exatamente essa distinção entre:

  • refinamento ❌ ≠ planejamento do sprint.

👉 Resposta final: ERRADO (Falso).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q
  1. (CEBRASPE / BDMG - 2025)

Julgue o item a seguir, relativos ao Kanban e ao Scrum.

No scrum team, o product owner é hierarquicamente superior ao scrum master e aos developers, porém os developers podem formar times menores, por serem multifuncionais.

A

Gabarito: ERRADO (Falso)

A afirmativa está incorreta.

Justificativa técnica (padrão CEBRASPE):

O item contém erros conceituais claros sobre o Scrum Team:

❌ Erro 1 — hierarquia inexistente

> “o product owner é hierarquicamente superior ao scrum master e aos developers”

  • No Scrum, não existe hierarquia entre:
    • Product Owner,
    • Scrum Master,
    • Developers.
  • O Scrum Team é auto-organizado e multifuncional.
  • Cada papel tem responsabilidades distintas, não relação de comando.

❌ Erro 2 — subdivisão do time

> “os developers podem formar times menores, por serem multifuncionais”

  • Os Developers:
    • formam um único time coeso dentro do Scrum Team;
    • não se subdividem em times menores.
  • A multifuncionalidade significa que o time, como um todo, possui todas as competências necessárias — não que se fragmente.

📌 Esses pontos violam princípios básicos do Guia do Scrum, sendo frequentemente explorados pelo CEBRASPE.

👉 Resposta final: ERRADO (Falso).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q
  1. (CEBRASPE / BDMG - 2025)

Julgue o próximo item, relativos a metodologias ágeis.

Na metodologia XP, os programadores estimam cada estória e predizem a quantidade de estórias que podem ser implementadas no final do release.

A

Gabarito: CERTO (Verdadeiro)

A afirmativa está correta.

Justificativa técnica:

Na metodologia XP (Extreme Programming):

  • Os programadores são responsáveis por:
    • estimar o esforço das estórias (user stories), normalmente em pontos;
    • prever quantas estórias podem ser implementadas em um release, com base na velocidade da equipe.
  • O cliente define:
    • a priorização das estórias;
    • o escopo do release;
  • As estimativas dos programadores servem justamente para planejar releases realistas.

📌 Essa divisão de responsabilidades é clássica do XP e aparece de forma recorrente em provas do CEBRASPE.

👉 Resposta final: VERDADEIRO.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q
  1. (CEBRASPE / BDMG - 2025)

Julgue o próximo item, relativos a metodologias ágeis.

Na metodologia XP, o refatoramento consiste na implementação das funcionalidades cujos componentes do código-fonte devem ser integrados várias vezes, à medida que tais
funcionalidades sejam desenvolvidas e testadas unitariamente.

A

Gabarito: ERRADO (Falso)

A afirmativa está incorreta.

Justificativa técnica (padrão CEBRASPE):

O item confunde dois conceitos distintos da metodologia XP (Extreme Programming):

❌ Erro conceitual — definição incorreta de refatoramento

> “o refatoramento consiste na implementação das funcionalidades cujos componentes do código-fonte devem ser integrados várias vezes”

Isso não define refatoramento.

📌 Refatoramento (refactoring), na XP:

  • é a reestruturação do código existente;
  • não altera o comportamento externo do sistema;
  • tem como objetivo:
    • melhorar legibilidade,
    • reduzir complexidade,
    • eliminar duplicações,
    • aumentar manutenibilidade.

✔️ O que o enunciado descreve, na verdade

A descrição apresentada corresponde a:

  • Integração contínua (Continuous Integration), que envolve:
    • integrar código frequentemente;
    • executar testes unitários a cada integração;
    • detectar erros o mais cedo possível.

📌 Na XP:

  • Refatoramento ❌ ≠ Integração contínua
  • São práticas diferentes, embora complementares.

🔎 O CEBRASPE costuma explorar exatamente esse tipo de troca conceitual, tornando o item falso.

👉 Resposta final: ERRADO (Falso).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q
  1. (CEBRASPE / BDMG - 2025)

Julgue o próximo item, relativos a metodologias ágeis.

Na metodologia XP, os releases devem ser tão grandes quanto possível, de maneira a conter a maior quantidade de requisitos importantes implementados e entregues para o cliente.

A

Gabarito: ERRADO (Falso)

A afirmativa está incorreta.

Justificativa técnica (padrão CEBRASPE):

Na metodologia XP (Extreme Programming), ocorre exatamente o oposto do que o item afirma:

  • ✔️ Os releases devem ser pequenos e frequentes (small releases);
  • ✔️ Cada release entrega poucas funcionalidades, mas com alto valor para o cliente;
  • ✔️ O objetivo é:
    • obter feedback rápido,
    • reduzir riscos,
    • permitir ajustes contínuos.

📌 O princípio de small releases é central no XP e está diretamente ligado a outras práticas da metodologia, como:

  • integração contínua,
  • testes automatizados,
  • refatoração constante,
  • feedback rápido do cliente.

❌ Erro do item

> “releases devem ser tão grandes quanto possível”

Essa característica está associada a modelos tradicionais, como o cascata, e não ao XP.

🔎 O CEBRASPE costuma cobrar essa oposição direta:

  • XP → pequenos releases frequentes ✔️
  • Cascata → grandes entregas ao final ❌

👉 Resposta final: ERRADO (Falso).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q
  1. O Gráfico de Burndown é usado para visualizar o progresso do trabalho ao longo de uma Sprint no Scrum.
A

Verdadeira.

O Gráfico de Burndown é uma ferramenta clássica do Scrum usada para acompanhar visualmente o progresso do trabalho ao longo de uma Sprint.

🔹 Ele mostra:

  • no eixo horizontal: o tempo da Sprint;
  • no eixo vertical: a quantidade de trabalho restante (geralmente em pontos ou horas).

🔹 Ajuda o time a:

  • verificar se está adiantado ou atrasado;
  • identificar problemas de planejamento ou execução;
  • promover transparência e inspeção contínua.

📌 Portanto, a afirmação está correta.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q
  1. No Scrum, o Product Owner tem a responsabilidade exclusiva de escrever e revisar todo o código do produto, além de priorizar o Product Backlog e representar os interesses dos stakeholders.
A

Falsa.

No Scrum, o Product Owner não tem responsabilidade por escrever ou revisar todo o código.

🔹 As responsabilidades do Product Owner incluem:

  • maximizar o valor do produto;
  • priorizar e gerenciar o Product Backlog;
  • representar os interesses dos stakeholders;
  • garantir que os itens do backlog estejam claros e bem definidos.

🔹 Escrever, revisar e manter o código é responsabilidade do Time de Desenvolvimento (Developers).

📌 Portanto, a afirmação está incorreta ao atribuir ao Product Owner tarefas técnicas de codificação.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q
  1. O Kanban utiliza Sprints para organizar o fluxo de trabalho, similar ao Scrum.
A

Falsa.

O Kanban não utiliza Sprints.

🔹 Diferente do Scrum, que trabalha com Sprints de duração fixa,
🔹 o Kanban utiliza um fluxo contínuo de trabalho, sem iterações time-boxed.

🔹 O foco do Kanban está em:

  • visualização do fluxo,
  • limitação do trabalho em progresso (WIP),
  • entrega contínua.

📌 Portanto, a afirmação está incorreta ao dizer que Kanban organiza o trabalho por Sprints.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q
  1. A função do Scrum Master é semelhante à de um gerente de projetos tradicional, com a
    responsabilidade de tomar decisões técnicas e garantir que os membros da equipe sigam suas instruções de forma rígida.
A

Falsa.

O Scrum Master não atua como um gerente de projetos tradicional.

🔹 Seu papel é o de líder servidor (servant leader), cuja função principal é:

  • garantir que o Scrum seja compreendido e aplicado corretamente;
  • remover impedimentos;
  • facilitar eventos do Scrum;
  • ajudar o time a ser autogerenciável.

🔹 O Scrum Master não toma decisões técnicas nem dá ordens rígidas à equipe.

📌 Portanto, a afirmação está incorreta.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q
  1. A principal responsabilidade do Kanban é definir e priorizar o Product Backlog, garantindo que as tarefas mais críticas sejam trabalhadas primeiro e que o fluxo de trabalho seja mantido sob controle.
A

Falsa.

O Kanban não tem como responsabilidade definir ou priorizar um Product Backlog.

🔹 Product Backlog é um artefato do Scrum, não do Kanban.
🔹 O Kanban foca em:

  • visualizar o fluxo de trabalho;
  • limitar o trabalho em progresso (WIP);
  • otimizar o fluxo;
  • melhorar a previsibilidade e eficiência.

🔹 A priorização no Kanban pode existir, mas não por meio de um Product Backlog formal nem como “principal responsabilidade” do método.

📌 Portanto, a afirmação está incorreta.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q
  1. Uma Sprint no Scrum pode durar de 1 a 4 semanas, mas é permitido alterar sua duração uma vez que ela já tenha começado.
A

Falsa.

No Scrum, uma Sprint pode durar de 1 a 4 semanas, isso está correto.
Porém, não é permitido alterar a duração da Sprint depois que ela já começou.

🔹 A Sprint é time-boxed (tempo fixo).
🔹 Alterar sua duração durante a execução compromete a previsibilidade, o planejamento e a inspeção.
🔹 Se algo tornar a Sprint inviável, a única exceção é o cancelamento da Sprint, que pode ser feito apenas pelo Product Owner — e não a mudança de sua duração.

📌 Portanto, a afirmação está incorreta ao dizer que a duração da Sprint pode ser alterada após seu início.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q
  1. O gráfico de Burndown no Scrum é usado para rastrear o progresso do trabalho restante em relação ao tempo, ajudando a equipe a visualizar o progresso da Sprint.
A

Verdadeira.

No Scrum, o Gráfico de Burndown é utilizado para acompanhar o progresso do trabalho restante ao longo do tempo.

🔹 Ele mostra:

  • no eixo do tempo: os dias da Sprint;
  • no eixo de trabalho: a quantidade de trabalho restante.

🔹 Isso ajuda a equipe a:

  • visualizar o andamento da Sprint;
  • identificar desvios em relação ao plano;
  • promover transparência e inspeção contínua.

📌 Portanto, a afirmação está correta.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q
  1. O Daily Scrum é uma reunião de 30 minutos onde a equipe discute detalhes técnicos aprofundados.
A

Falsa.

O Daily Scrum não é uma reunião de 30 minutos, nem o momento para discussões técnicas aprofundadas.

🔹 Ele é um evento time-boxed de até 15 minutos.
🔹 O objetivo é inspecionar o progresso em relação à Meta da Sprint e planejar o trabalho das próximas 24 horas.
🔹 Discussões técnicas detalhadas devem ocorrer após o Daily, com apenas os envolvidos.

📌 Portanto, a afirmação está incorreta.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q
  1. O Scrum Master é o responsável por priorizar os itens do Product Backlog no Scrum.
A

Falsa.

No Scrum, quem prioriza os itens do Product Backlog é o Product Owner, não o Scrum Master.

🔹 Product Owner:

  • define e ordena o Product Backlog;
  • decide prioridades com foco em valor de negócio e stakeholders.

🔹 Scrum Master:

  • garante que o Scrum seja bem aplicado;
  • facilita eventos e remove impedimentos;
  • não decide prioridades do backlog.

📌 Portanto, a afirmação está incorreta.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q
  1. O papel do Scrum Master é garantir que a equipe siga os princípios do Scrum, facilitando as
    reuniões, removendo impedimentos e ajudando a promover a auto-organização e a eficiência dentro
    da equipe.
A

Verdadeira.

O Scrum Master tem exatamente esse papel no Scrum.

🔹 Suas principais responsabilidades incluem:

  • garantir que os princípios e práticas do Scrum sejam compreendidos e seguidos;
  • facilitar os eventos (Daily Scrum, Planning, Review, Retrospective);
  • remover impedimentos que atrapalham o time;
  • promover a auto-organização, a colaboração e a melhoria contínua da equipe.

📌 Portanto, a afirmação descreve corretamente o papel do Scrum Master.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q
  1. (CESPE / TRE-BA – 2017)

Com referência às arquiteturas multicamadas de aplicações para o ambiente web, assinale a opção correta.

a) Se, na camada de dados, for realizada uma alteração no banco de dados, o restante das camadas também será afetado.

b) O modelo de três camadas recebe essa denominação caso um sistema cliente-servidor seja desenvolvido mantendo-se a camada de negócio do lado do cliente e as camadas de
apresentação e dados no lado do servidor.

c) Cada camada é normalmente mantida em um servidor específico para tornar-se o mais escalonável e independente possível em relação a outras camadas, estando entre as suas
principais características o eficiente armazenamento e a reutilização de recursos.

d) O objetivo das arquiteturas multicamadas consiste na junção de responsabilidades entre os componentes das aplicações web, de modo a atender aos requisitos funcionais e não funcionais esperados pela aplicação.

e) Na arquitetura de duas camadas — apresentação e armazenamento —, o computador que contiver a base de dados terá de ficar junto com os computadores que executarem as
aplicações.

A

Alternativa correta: letra c)

Justificativa:

  • a) ❌ Incorreta. Um dos principais objetivos das arquiteturas multicamadas é justamente o baixo acoplamento. Alterações na camada de dados não devem impactar diretamente as demais camadas, desde que as interfaces sejam mantidas.
  • b) ❌ Incorreta. No modelo de três camadas (three-tier), a apresentação fica no cliente, enquanto negócio e dados ficam no servidor (normalmente em servidores distintos). A alternativa inverte esse conceito.
  • c)Correta. Em arquiteturas multicamadas:
    • cada camada pode ser implantada em servidores distintos;
    • isso favorece escalabilidade, independência entre camadas e melhor uso/reutilização de recursos;
    • é uma característica clássica dessas arquiteturas.
  • d) ❌ Incorreta. O objetivo das arquiteturas multicamadas é a separação de responsabilidades, e não a junção.
  • e) ❌ Incorreta. Na arquitetura de duas camadas (cliente-servidor), o banco de dados não precisa estar fisicamente junto aos clientes; ele pode estar em um servidor remoto.

📌 Resposta final: letra C.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q
  1. (CESPE / BNB – 2022)

No padrão MVC, o componente de modelo gerencia as requisições dos usuários.

A

Item incorreto (Falso).

No padrão MVC (Model–View–Controller), o componente de Modelo NÃO gerencia as requisições dos usuários.

🔹 Controller (Controlador)

  • Recebe e gerencia as requisições dos usuários
  • Interpreta as ações e coordena a interação entre Model e View

🔹 Model (Modelo)

  • Representa os dados e a lógica de negócio
  • Gerencia o estado da aplicação, não as requisições

🔹 View (Visão)

  • Responsável pela apresentação dos dados ao usuário

📌 Portanto, a afirmação está falsa, pois quem gerencia as requisições é o Controller, e não o Model.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q
  1. (CESPE / BNB – 2022)

Na arquitetura em camadas, os componentes da camada mais
interna opera o sistema operacional, ao passo que os da camada mais externa interagem com o usuário.

A

A arquitetura em camadas é uma abordagem de projeto de sistemas que divide o sistema em diferentes camadas, cada uma responsável por uma função específica.

A camada mais interna opera diretamente o hardware e gerencia os recursos de sistema, como
processamento, memória, armazenamento e rede.

Esta camada trabalha diretamente com o sistema operacional, fornecendo o suporte necessário para o funcionamento do sistema.

A camada mais externa contém os componentes responsáveis por interagir com o usuário e é
responsável por criar a interface de usuário e executar a lógica de aplicativos e processos.

Gabarito: Correto

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q
  1. (CESPE / Petrobrás - 2022)

Enquanto a arquitetura é responsável pela infraestrutura de alto nível do software, o design é responsável pelo software a nível de código, como, por
exemplo, o que cada módulo está fazendo, o escopo das classes e os objetivos das funções.

A

Item correto (Verdadeiro).

A afirmação descreve corretamente a diferença entre arquitetura e design de software:

🔹 Arquitetura de software:

  • trata das decisões de alto nível;
  • define a estrutura geral do sistema, seus componentes principais, camadas, estilos arquiteturais e relações entre eles;
  • está mais ligada a requisitos não funcionais (escalabilidade, desempenho, segurança, manutenibilidade).

🔹 Design de software:

  • atua em um nível mais detalhado e próximo do código;
  • define módulos, classes, métodos, responsabilidades, escopo e interações internas;
  • orienta diretamente a implementação.

📌 Portanto, o item está correto ao associar arquitetura ao nível macro e design ao nível detalhado do código.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q
  1. (CESPE / TJ-RJ - 2021)

Na arquitetura MVC (Model-View-Controller), as funcionalidades de cada segmento são mais bem descritas como:

a) o modelo encapsula as funcionalidades; o view gerencia as requisições dos usuários; o controlador prepara dados do modelo.

b) o modelo encapsula objetos de conteúdo; a visão solicita atualizações do modelo; o controlador seleciona o comportamento do modelo.

c) o modelo incorpora todos os estados; o view gerencia as requisições dos usuários; o controlador encapsula objetos de conteúdo.

d) o modelo encapsula objetos de conteúdo; o view seleciona o comportamento do modelo; o controlador solicita atualizações do modelo.

e) o modelo seleciona a resposta da visão; a visão apresenta a visão selecionada pelo controlador; o controlador encapsula objetos de conteúdo.

A

Alternativa correta: letra b)

Justificativa (MVC – Model, View, Controller):

No padrão MVC, as responsabilidades são bem definidas:

  • Model (Modelo): encapsula os dados e a lógica de negócio (objetos de conteúdo e estado da aplicação).
  • View (Visão): é responsável pela apresentação e observa/solicita atualizações do modelo para refletir mudanças.
  • Controller (Controlador): interpreta as ações do usuário e seleciona o comportamento do modelo a ser executado.

Analisando as alternativas:

  • a) ❌ Incorreta — quem gerencia requisições é o Controller, não a View.
  • b)Correta — descreve adequadamente:
    • modelo como encapsulador de objetos de conteúdo;
    • visão solicitando/observando atualizações do modelo;
    • controlador selecionando o comportamento do modelo.
  • c) ❌ Incorreta — atribui requisições à View e conteúdo ao Controller.
  • d) ❌ Incorreta — inverte papéis entre View e Controller.
  • e) ❌ Incorreta — atribui ao modelo a seleção da visão e ao controlador objetos de conteúdo.

📌 Resposta final: letra B.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
6. (CESPE / TJ-RJ - 2021) Em um ambiente cliente/servidor, a arquitetura que permite a mesma aplicação assumir tanto o papel de cliente quanto o de servidor é conhecida como arquitetura C/S: a) simples. b) de dois níveis. c) multinível. d) de três camadas. e) par-par.
A arquitetura par-a-par (ou peer-to-peer) trata-se do modelo não hierárquico de rede mais simples em que máquinas se comunicam diretamente, sem passar por nenhum servidor dedicado, podendo compartilhar dados e recursos umas com as outras. Nesse tipo de rede, todas as máquinas oferecem e consomem recursos umas das outras, atuando **ora como clientes, ora como servidoras.** O gabarito definitivo foi arquitetura multinível – eu não consigo concordar com esse gabarito. Gabarito: Letra C
26
7. (CESPE / TELEBRÁS - 2021) Na arquitetura de software, a arquitetura cliente/servidor tem como vantagem uma maior facilidade de manutenção e segurança dos dados, e como desvantagens possíveis bloqueios no tráfego da rede, além de problemas de atualização da interface de aplicação.
✅ **Item correto (Verdadeiro).** A afirmação descreve adequadamente **vantagens e desvantagens da arquitetura cliente/servidor**. 🔹 **Vantagens**: * **Facilidade de manutenção**: a lógica e os dados costumam estar centralizados no servidor. * **Maior segurança dos dados**: controle de acesso, backups e políticas de segurança ficam concentrados no servidor. 🔹 **Desvantagens**: * **Possíveis gargalos/bloqueios no tráfego de rede**, já que muitos clientes dependem de um servidor central. * **Problemas de atualização da interface de aplicação**, especialmente quando a interface está instalada nos clientes (ex.: aplicações desktop), exigindo atualização máquina a máquina. 📌 Portanto, o item está **correto**.
27
8. (CESPE / TELEBRÁS - 2021) Por se tratar de uma arquitetura distribuída, o modelo cliente-servidor pressupõe facilidades para atualizar os servidores de forma transparente, sem que isso afete outras partes do sistema.
Perfeito! Como os servidores são centralizados, e em quantidade menor que os clientes, há mais facilidade em se administrar as atualizações deles. Em suma, em um modelo clienteservidor, uma de suas vantagens é a facilidade de manutenção dos servidores. Gabarito: Correto
28
1. (CESPE / BANRISUL – 2022) Na gestão de defeitos, o princípio de teste da regra 10 de Myers estabelece que as atividades de teste estático e dinâmico devem ser planejadas muito antes de serem iniciadas.
❌ **Item incorreto (Falso).** A afirmação **confunde conceitos distintos** da área de testes de software. 🔹 A **Regra do 10 de Myers** (ou *Regra do Custo 10x*) estabelece que: * **o custo de corrigir um defeito aumenta exponencialmente** à medida que ele é descoberto mais tarde no ciclo de desenvolvimento (ex.: um erro que custa 1 para corrigir na fase de requisitos pode custar 10, 100 ou mais em produção). 🔹 Já a ideia de **planejar testes estáticos e dinâmicos o mais cedo possível** está relacionada ao **princípio de “testar cedo” (early testing)**, e **não** à Regra do 10 de Myers. 📌 Portanto, o item é **falso**, pois atribui à **Regra do 10 de Myers** um conceito que pertence a **outro princípio de teste**.
29
0. (CESPE / BANRISUL – 2022) No teste de fumaça (smoke test), os códigos do software são integrados em componentes bloqueadores de erros com módulos reutilizáveis necessários para implementar as funções do software.
❌ **Item incorreto (Falso).** A descrição apresentada **não corresponde ao conceito de teste de fumaça (smoke test)**. 🔹 **Teste de fumaça (smoke test)**: * é um **teste superficial e rápido**; * verifica se as **funcionalidades básicas e críticas** do sistema funcionam após uma build; * serve para avaliar se o software está **estável o suficiente** para testes mais aprofundados. 🔹 O enunciado, porém, descreve algo mais próximo de: * **integração de componentes**, * **uso de módulos reutilizáveis**, * **organização estrutural do código**, o que **não faz parte do objetivo nem da definição de smoke test**. 📌 Portanto, o item é **falso**, pois atribui ao **teste de fumaça** características relacionadas à **integração e estruturação de código**, e não à **validação rápida de funcionalidades essenciais**.
30
0. (CESPE / BANRISUL – 2022) É possível que um defeito que resida em código sem causar uma falha não seja encontrado em um teste dinâmico.
✅ **Item correto (Verdadeiro).** A afirmação está **correta** e reflete conceitos fundamentais de **testes de software**. 🔹 **Defeito (fault/bug)**: erro no código ou artefato do software. 🔹 **Falha (failure)**: manifestação visível do defeito durante a execução do sistema. 🔹 Um **defeito pode existir no código sem provocar falha**: * se o trecho defeituoso **não for executado**; * se a condição que dispara a falha **não ocorrer durante o teste**; * se o erro não impactar o comportamento observado naquele cenário. 🔹 Como o **teste dinâmico** depende da **execução do software**, ele **pode não detectar** defeitos que **não se manifestam como falhas**. 📌 Portanto, o item é **verdadeiro**.
31
0. (CESPE / BANRISUL – 2022) O teste estático é uma técnica de verificação de software que revisa o código do programa para identificar se ele representa as especificações produzidas para o software.
Perfeito! O teste estático é uma ótima maneira de identificar possíveis erros no código antes mesmo de executar o programa. Ele pode ajudar a reduzir o tempo e os custos associados ao processo de desenvolvimento de software, pois os erros podem ser detectados e corrigidos mais rapidamente. Além disso, o teste estático também pode melhorar a qualidade do software, pois permite que os erros sejam identificados e corrigidos antes que o programa seja liberado para o usuário final. Gabarito: Correto
32
0. (CESPE / BANRISUL – 2022) Os testes de estresse devem verificar o uso da memória ao longo do tempo para garantir que não existam perdas acumulativas.
Os testes de estresse são usados para verificar a capacidade de um sistema de suportar um alto volume de tráfego. Eles não são projetados para verificar o uso da memória ao longo do tempo. Na verdade, a questão trata de Testes de Resistência. Gabarito: Errado
33
0. (CESPE / BANRISUL – 2022) O objetivo do teste de integração é verificar se os requisitos atendem a especificação e se as funcionalidades do sistema foram implementadas corretamente, sendo todo o sistema testado de modo a simular um ambiente de execução real.
❌ **Item incorreto (Falso).** O enunciado **confunde objetivos de diferentes níveis de teste**. 🔹 **Teste de integração** tem como objetivo principal: * verificar a **interação entre módulos/componentes**; * identificar **falhas nas interfaces**, comunicação e troca de dados entre partes do sistema. 🔹 O que o item descreve, na verdade, corresponde a outros tipos de teste: * **verificar se requisitos atendem à especificação** → **teste de validação / aceitação**; * **testar todo o sistema simulando ambiente real** → **teste de sistema**. 📌 Portanto, o item é **falso**, pois atribui ao **teste de integração** características que pertencem ao **teste de sistema e ao teste de aceitação**, e não à integração propriamente dita.
34
0. (CESPE / BANRISUL – 2022) Os testes unitários são realizados com o objetivo de isolar cada parte do sistema para garantir que elas estejam funcionando conforme especificado.
✅ **Item correto (Verdadeiro).** A afirmação descreve corretamente o **objetivo dos testes unitários**. 🔹 **Testes unitários**: * verificam **unidades individuais** do sistema (funções, métodos, classes); * são realizados de forma **isolada**, normalmente com uso de *mocks* e *stubs*; * garantem que cada parte funcione **conforme o especificado**, independentemente das demais. 📌 Portanto, o item é **verdadeiro**.
35
0. (CESPE / BANRISUL – 2022) O teste unitário é o processo de testar os componentes de programa, como métodos ou classes de objeto.
✅ **Item correto (Verdadeiro).** A afirmação está **correta**. 🔹 **Teste unitário** tem como foco testar **componentes individuais do programa**, como: * **métodos**, * **funções**, * **classes**, * ou pequenas unidades de código. 🔹 O objetivo é garantir que cada unidade funcione corretamente **de forma isolada**, antes da integração com outras partes do sistema. 📌 Portanto, o item é **verdadeiro**.
36
0. (CESPE / BANRISUL – 2022) Ao se testarem as classes do objeto, devem-se testar as amostras de operações a ele associadas, não havendo necessidade de simular todos os eventos que causam mudança de estado.
❌ **Item incorreto (Falso).** A afirmação **contraria um princípio importante dos testes orientados a objetos**. 🔹 Ao testar **classes de objeto**, é necessário: * testar as **operações (métodos)** associadas à classe **em diferentes cenários**; * **simular os eventos que causam mudanças de estado**, pois o comportamento do objeto **depende do seu estado interno**. 🔹 Limitar-se a testar apenas “amostras de operações”, **sem considerar todas as transições relevantes de estado**, pode deixar defeitos ocultos, especialmente em: * classes **stateful**, * objetos com **regras de negócio dependentes do estado**. 📌 Portanto, o item é **falso**, pois **é sim necessário considerar e simular eventos que provoquem mudanças de estado** para garantir a correção do comportamento da classe.
37
0. (CESPE / BANRISUL – 2022) Devem ser escolhidos casos efetivos de teste unitário, o que significa que os casos de teste devem mostrar que, quando usado como esperado, o componente que se está testando faz o que ele é proposto a fazer e, se houver defeitos nos componentes, estes devem ser revelados por casos de teste.
✅ **Item correto (Verdadeiro).** A afirmação está **correta** e descreve adequadamente o **princípio dos testes unitários eficazes**. 🔹 **Casos de teste unitário efetivos** devem: * verificar o **comportamento esperado** do componente quando usado corretamente; * confirmar que ele **cumpre sua finalidade** conforme a especificação; * ser capazes de **revelar defeitos**, caso existam, por meio de entradas, cenários e condições adequadas. 🔹 Bons testes unitários validam tanto: * o **fluxo normal (casos positivos)**, * quanto **situações que possam expor falhas** (casos negativos, limites, exceções). 📌 Portanto, o item é **verdadeiro**, pois reflete boas práticas consagradas de **teste unitário**.
38
1. (CESPE / BANRISUL – 2022) Em um serviço RESTful, todos os métodos são identificados pela mesma URL, sendo cada método acionado por uma porta específica.
❌ **Item incorreto (Falso).** Em **serviços RESTful**, os métodos **não são acionados por portas diferentes**, nem “todos os métodos” são simplesmente identificados apenas por uma mesma URL sem contexto. 🔹 **Conceito de REST / RESTful** **REST (Representational State Transfer)** é um **estilo arquitetural** para sistemas distribuídos, especialmente serviços web. Um serviço é dito **RESTful** quando segue os princípios do REST, tais como: * **Recursos identificados por URIs**; * **Uso dos métodos HTTP** (GET, POST, PUT, DELETE etc.) para definir as operações; * **Comunicação sem estado (stateless)**; * **Representações dos recursos** (JSON, XML, etc.); * **Uso de códigos de status HTTP**. 🔹 Em um serviço RESTful: * a **URL identifica o recurso**, não a operação; * a **operação é definida pelo método HTTP**, e não por portas; * normalmente utiliza-se **uma única porta padrão** (80 ou 443). 📌 Exemplo: ```text GET /clientes → obter clientes POST /clientes → criar cliente PUT /clientes/10 → atualizar cliente DELETE /clientes/10 → remover cliente ``` 📌 Portanto, a afirmação é **falsa**, pois viola os princípios do **REST**, ao associar métodos a **portas específicas**, algo que **não existe em arquiteturas RESTful**.
39
0. (CESPE / TRT8 – 2022) Em uma API RESTful, cada solicitação deve conter todos os dados necessários ao seu atendimento para não depender de informações armazenadas em outras sessões, o que caracteriza uma restrição de: a) cache. b) arquitetura cliente-servidor. c) interface uniforme. d) sistema de camadas. e) comunicação stateless.
✅ **Alternativa correta: letra e) comunicação stateless.** **Justificativa:** Em uma **API RESTful**, uma das restrições fundamentais é a **comunicação stateless (sem estado)**. 🔹 **Stateless** significa que: * **cada requisição é independente**; * a solicitação deve conter **todas as informações necessárias** para que o servidor a processe; * o servidor **não armazena estado de sessão** do cliente entre requisições. 🔹 Assim, o servidor não depende de dados guardados em interações anteriores para atender uma nova requisição. Analisando as alternativas: * **a) cache** ❌ Refere-se ao armazenamento de respostas para reutilização. * **b) arquitetura cliente-servidor** ❌ Trata da separação de responsabilidades, não do estado da comunicação. * **c) interface uniforme** ❌ Diz respeito à padronização da interface (URI, métodos HTTP etc.). * **d) sistema de camadas** ❌ Relaciona-se à organização em camadas intermediárias. * **e) comunicação stateless** ✅ **Correta**, pois descreve exatamente a exigência apresentada no enunciado. 📌 **Resposta final: letra E.**
40
0. (CESPE / TRT8 - 2022) O método que serve para depuração em HTTP, ao instruir o servidor a enviar de volta a solicitação, é o: a) options b) get c) trace d) connect e) post
✅ **Alternativa correta: letra c) TRACE** **Justificativa:** O método **HTTP TRACE** é utilizado principalmente para **depuração (debugging)**. 🔹 Ele instrui o **servidor a devolver exatamente a requisição recebida**, permitindo que o cliente: * verifique **alterações feitas por proxies intermediários**; * inspecione **cabeçalhos e conteúdo** da requisição ao longo do caminho. Analisando as alternativas: * **a) OPTIONS** ❌ Usado para consultar métodos suportados pelo servidor. * **b) GET** ❌ Recupera um recurso. * **c) TRACE** ✅ **Correta** — ecoa a requisição para fins de diagnóstico. * **d) CONNECT** ❌ Cria um túnel (ex.: HTTPS via proxy). * **e) POST** ❌ Envia dados ao servidor. 📌 **Resposta final: letra C (TRACE).**
41
0. (CESPE / FUNPRESP-EXE - 2022) SOAP (Simple Object Access Protocol) é um protocolo de comunicação usado para a troca de mensagens XML entre o cliente e o provedor de serviço.
✅ **Item correto (Verdadeiro).** A afirmação está **correta**. 🔹 **SOAP (Simple Object Access Protocol)** é um **protocolo de comunicação** usado para a **troca de mensagens estruturadas em XML** entre um **cliente** e um **provedor de serviços**. 🔹 Características principais do SOAP: * utiliza **XML** para padronizar o formato das mensagens; * é **independente de plataforma e linguagem**; * pode operar sobre diferentes protocolos de transporte, como **HTTP**, **HTTPS**, **SMTP**, entre outros; * é amplamente usado em **Web Services tradicionais**, geralmente descritos por **WSDL**. 📌 Portanto, o item é **verdadeiro**.
42
0. (CESPE / FUNPRESP-EXE - 2022) UDDI (Universal Description Discovery and Integration) é um padrão utilizado em SOA para a criação de repositórios de descrição de serviços.
✅ **Item correto (Verdadeiro).** A afirmação está **correta**. 🔹 **UDDI (Universal Description Discovery and Integration)** é um **padrão utilizado em SOA (Service-Oriented Architecture)** para: * **publicar**, * **descobrir**, * e **consultar** serviços disponíveis em um ambiente distribuído. 🔹 Ele funciona como um **repositório de descrições de serviços**, armazenando informações como: * dados do provedor; * serviços oferecidos; * referências técnicas (como WSDL). 📌 Portanto, o item é **verdadeiro**.
43
0. (CESPE / FUNPRESP-EXE - 2022) Um documento WSDL possui um conjunto de elementos de nós abstratos e concretos que especificam a localização de um serviço.
O WSDL é o documento que, resumidamente, descreve quais são as operações disponíveis em um serviço web com todas as particularidades de suas interfaces como métodos, parâmetros, protocolos, entre outros. Além disso, o WSDL separa a descrição de um serviço em duas perspectivas: abstratas e concretas. Gabarito: Correto
44
0. (CESPE / Petrobrás - 2022) Web service é um sistema de software projetado para suportar interação entre máquinas através de uma rede; esse sistema possui uma interface descrita em formato processável por máquina, especificamente o WSDL (web services descriptor language).
✅ **Item correto (Verdadeiro).** A afirmação está **correta** e está alinhada com a definição clássica de **Web Service**. 🔹 Um **Web Service** é um **sistema de software** projetado para permitir a **interação entre máquinas** por meio de uma rede. 🔹 Ele expõe uma **interface descrita em um formato processável por máquina**, o que possibilita que outros sistemas descubram e utilizem seus serviços automaticamente. 🔹 No modelo tradicional de Web Services: * essa interface é descrita por meio do **WSDL (Web Services Description Language)**; * o WSDL define **operações**, **mensagens**, **protocolos**, **bindings** e o **endpoint** do serviço. 📌 Portanto, o item é **verdadeiro**, pois descreve corretamente o conceito de Web Service e o papel do **WSDL** na sua definição.
45
0. (CESPE / Petrobrás - 2022) Uma das vantagens do SOAP é a sua utilização correta dos métodos HTML (PUT, GET, POST, DELETE), enquanto o REST utiliza apenas o método POST para realizar as requisições através de um arquivo XML.
❌ **Item incorreto (Falso).** A afirmação **inverte completamente os conceitos de SOAP e REST**. 🔹 **SOAP**: * é um **protocolo**; * **não se baseia no uso semântico dos métodos HTTP** (GET, POST, PUT, DELETE); * normalmente utiliza **apenas POST** (ou às vezes GET) para enviar mensagens **XML** encapsuladas no envelope SOAP; * o foco está no **conteúdo da mensagem**, não no verbo HTTP. 🔹 **REST**: * é um **estilo arquitetural**; * **utiliza corretamente os métodos HTTP**, cada um com sua semântica: * **GET** → recuperar recurso * **POST** → criar * **PUT** → atualizar * **DELETE** → remover * **não se limita a XML** (pode usar JSON, XML, etc.). 📌 Portanto, o item é **falso**, pois: * atribui ao **SOAP** uma característica típica do **REST**; * afirma incorretamente que o **REST usa apenas POST e XML**, o que é errado.
46
0. (CESPE / Petrobrás - 2022) Os protocolos SOAP e REST são os padrões mais utilizados na comunicação entre os sistemas por meio do web service; esses protocolos, unidos à estrutura básica XML, compõem a estrutura básica dos web services.
👉 **Item: ERRADO (FALSO).** Vamos por partes, no estilo **CESPE/Cebraspe**: * **SOAP** 👉 é, sim, um **protocolo**, fortemente baseado em **XML**. * **REST** 👉 **não é um protocolo**, e sim um **estilo arquitetural**. * Além disso, **REST não depende de XML**: ele pode usar **JSON**, XML, YAML, texto puro etc. (JSON é o mais comum hoje). 📌 O erro da afirmativa está em **dois pontos clássicos**: 1. Tratar **REST como protocolo** 2. Dizer que **XML compõe a estrutura básica de todos os web services**, o que não é verdade para REST 💡 **Como a banca gosta de confundir**: > SOAP + XML = ok > REST + XML = **nem sempre** 🔎 **Versão correta da ideia** (se fosse para virar verdadeiro): > SOAP é um protocolo baseado em XML, enquanto REST é um estilo arquitetural que pode utilizar diferentes formatos de dados, como JSON ou XML. ✔️ **Gabarito CESPE/Cebraspe**: **ERRADO** ✅
47
0. (CESPE / DPE-RO – 2021) O REST emprega um protocolo universal, o HTTP, para oferecer um serviço web simples e aberto. Verbos HTTP são usados para realizar chamadas e indicar para o serviço que ação deve ser realizada. Assinale a opção que indica o verbo usado tipicamente para a atualização de um recurso existente: a) PUT. b) CREATED. c) GET. d) POST. e) TRACE.
✅ **Alternativa correta: letra a) PUT.** **Justificativa:** No **REST**, os **verbos HTTP** indicam a ação a ser realizada sobre um **recurso** identificado por uma URI. 🔹 Uso típico dos principais verbos: * **GET** → recuperar um recurso (leitura); * **POST** → criar um novo recurso (ou submeter processamento); * **PUT** → **atualizar um recurso existente** (substituição completa); * **DELETE** → remover um recurso; * **TRACE** → diagnóstico/depuração. 🔹 O verbo **PUT** é **idempotente** e é o mais indicado quando se deseja **atualizar um recurso já existente** em uma URI conhecida. Analisando as alternativas: * **a) PUT** ✅ **Correta**. * **b) CREATED** ❌ Não é verbo HTTP (é um status HTTP: 201). * **c) GET** ❌ Apenas leitura. * **d) POST** ❌ Usado principalmente para criação. * **e) TRACE** ❌ Depuração. 📌 **Resposta final: letra A (PUT).**
48
1. (CESPE/2016/TRT-8) Os padrões de projeto (design patterns) que separam a construção de um objeto complexo da sua representação e que capturam e externalizam um estado interno de um objeto são, respectivamente, a) Visitor e builder. b) Decorator e interpreter. c) Proxy e state. d) Command e adapter. e) Builder e memento.
✅ **Alternativa correta: letra e) Builder e Memento.** **Justificativa:** A questão pede **dois padrões**, respectivamente: 1. **Separar a construção de um objeto complexo da sua representação** 2. **Capturar e externalizar o estado interno de um objeto** 🔹 **Builder** * Separa o **processo de construção** de um objeto complexo da sua **representação final**; * Permite criar diferentes representações usando o **mesmo processo de construção**. 🔹 **Memento** * **Captura e externaliza o estado interno** de um objeto **sem violar o encapsulamento**; * Permite restaurar o objeto a um estado anterior (ex.: *undo/rollback*). Analisando as alternativas: * **a) Visitor e Builder** ❌ Visitor não trata de estado interno. * **b) Decorator e Interpreter** ❌ Nenhum deles atende às descrições. * **c) Proxy e State** ❌ State muda comportamento conforme estado, mas não o externaliza. * **d) Command e Adapter** ❌ Não relacionados aos conceitos pedidos. * **e) Builder e Memento** ✅ **Correta**, corresponde exatamente às definições do enunciado. 📌 **Resposta final: letra E.**
49
2. (CESPE/2016 – TER-PI) No que se refere a design patterns, o padrão que objetiva separar a construção de um objeto complexo da sua representação, de modo que o mesmo processo de construção possa criar diferentes representações, é o a) Prototype. b) Mediator. c) Builder. d) Abstract Factory. e) Bridge.
✅ **Alternativa correta: letra c) Builder.** **Justificativa:** O padrão de projeto que **separa a construção de um objeto complexo da sua representação**, permitindo que **o mesmo processo de construção gere diferentes representações**, é o **Builder**. 🔹 **Builder**: * isola o **processo de construção** do objeto; * permite criar **variações do mesmo objeto** usando os mesmos passos; * é ideal quando o objeto possui **muitas partes** ou **múltiplas configurações possíveis**. Analisando as alternativas: * **a) Prototype** ❌ Cria objetos por clonagem. * **b) Mediator** ❌ Centraliza a comunicação entre objetos. * **c) Builder** ✅ **Correta**. * **d) Abstract Factory** ❌ Cria famílias de objetos relacionados. * **e) Bridge** ❌ Separa abstração de implementação, não construção. 📌 **Resposta final: letra C (Builder).**
50
3. (CESPE / TJ-RJ - 2021) A coleção GoF (Gang of Four) é formada por padrões orientados a objetos, separados em categorias. A categoria padrões estruturais é responsável por: a) estabelecer um design de objetos reutilizáveis. b) fornecer maneiras eficientes para criar objetos. c) descrever como os objetos são colocados juntos. d) descrever como os objetos interagem. e) distribuir responsabilidades entre os objetos.
✅ **Alternativa correta: letra c) descrever como os objetos são colocados juntos.** **Justificativa:** Na classificação dos **padrões GoF (Gang of Four)**, os padrões são divididos em três categorias: 🔹 **Criacionais** → tratam da **criação de objetos** 🔹 **Estruturais** → tratam da **composição e organização de classes e objetos** 🔹 **Comportamentais** → tratam da **interação e distribuição de responsabilidades** 📌 **Padrões estruturais** têm como objetivo principal: * mostrar **como classes e objetos são combinados** para formar estruturas maiores; * garantir **flexibilidade e reutilização** dessas estruturas. Exemplos de padrões estruturais: **Adapter, Bridge, Composite, Decorator, Facade, Flyweight, Proxy**. Analisando as alternativas: * **a)** ❌ Muito genérica, não caracteriza especificamente os estruturais. * **b)** ❌ Refere-se aos padrões **criacionais**. * **c)** ✅ **Correta** — descreve exatamente a finalidade dos padrões estruturais. * **d)** ❌ Refere-se aos padrões **comportamentais**. * **e)** ❌ Também está ligada aos **comportamentais**. 📌 **Resposta final: letra C.**
51
4. (CESPE / DATAPREV – 2006) Quanto aos padrões de projeto orientados a objetos, assinale a opção correta. a) O Facade pode ser usado quando se deseja prover uma interface simples para um subsistema complexo; existem muitas dependências entre clientes e as classes que implementam uma abstração. b) Pode-se usar o Decorator quando um sistema deve ser configurado com uma entre várias famílias de produtos; uma família de produtos relacionados foi projetada para ser usada em conjunto. c) O Adapter pode ser usado quando objetos se comunicam de forma definida, mas complexa; as interdependências entre os objetos são difíceis de entender; o reúso está sendo dificultado, pois um objeto se comunica com vários outros. d) Pode-se usar o Builder quando o comportamento de um objeto muda em tempo de execução e depende do seu estado; as operações têm múltiplos enunciados condicionais que dependem do estado do objeto.
✅ **Alternativa correta: letra a)** **Justificativa:** A questão pede a **opção correta** sobre **padrões de projeto orientados a objetos (GoF)**. Vamos analisar: --- **a) Facade** ✅ **Correta** O **Facade**: * **provê uma interface simples** para um **subsistema complexo**; * reduz o **acoplamento** entre clientes e as diversas classes internas do subsistema; * é indicado justamente quando há **muitas dependências** entre clientes e classes internas. 👉 A descrição está **perfeitamente alinhada** com o padrão **Facade**. --- **b) Decorator** ❌ Incorreta A descrição corresponde ao **Abstract Factory**, que lida com **famílias de produtos relacionados**, e não ao Decorator. --- **c) Adapter** ❌ Incorreta A descrição é do **Mediator**, que reduz interdependências complexas entre objetos. O **Adapter** serve para **converter interfaces incompatíveis**, não para resolver comunicação complexa entre muitos objetos. --- **d) Builder** ❌ Incorreta A descrição corresponde ao **State**, que trata de **mudança de comportamento conforme o estado do objeto**, e não ao Builder. --- 📌 **Resposta final: letra A.**
52
5. (CESPE / TRT-RN – 2010) Os padrões de projeto podem ser definidos como soluções já testadas para problemas que ocorrem frequentemente durante o projeto de software.
✅ **Verdadeira.** A afirmação está correta. **Padrões de projeto (design patterns)** são, justamente, **soluções reutilizáveis, já testadas e consolidadas**, para problemas recorrentes no **projeto de software**, especialmente no contexto da programação orientada a objetos. Eles **não são código pronto**, mas **modelos de solução** que ajudam a: * melhorar a qualidade do design, * facilitar manutenção e evolução, * promover boas práticas reconhecidas pela comunidade. 👉 Essa definição está totalmente alinhada com a clássica descrição dos padrões de projeto (como os do *Gang of Four*), o que torna a assertiva **correta segundo o CESPE**.
53
7. (CESPE / ANAC – 2009) O uso de padrões de projeto somente pode ser aplicado a projetos que implementam o paradigma de programação orientada a objetos.
❌ **Falsa.** A assertiva está **incorreta**. Embora os **padrões de projeto** sejam **mais conhecidos e difundidos** no contexto da **programação orientada a objetos** (especialmente após o GoF), **eles não se limitam exclusivamente a esse paradigma**. 👉 Existem padrões aplicáveis a outros paradigmas, como: * **Arquiteturais** (MVC, Camadas, Pipe-and-Filter), * **Funcionais** (ex.: padrões de composição, imutabilidade), * **Concorrentes**, * **Distribuídos**, * **Enterprise / integração**. 📌 O que muda é **a forma de implementação**, não o conceito do padrão em si. Como o CESPE adora termos absolutos, o uso da palavra **“somente”** torna a afirmação automaticamente falsa. ✅ **Gabarito: FALSA.**
54
8. (CESPE / TCU – 2009) Caso seja verificado no desenvolvimento de um sistema forte acoplamento entre as classes, recomenda-se o uso do padrão de comportamento Factory Method, que evita o acoplamento do remetente de uma solicitação ao seu receptor, dando a mais de um objeto a oportunidade de tratar uma solicitação, mesmo nos casos em que o conjunto de objetos não seja conhecido a priori ou seja definido dinamicamente.
❌ **Falsa.** A assertiva está **incorreta** porque **confunde padrões de projeto diferentes**. Vamos por partes: 🔴 Erro principal da questão O enunciado afirma que o **Factory Method**: * evita o acoplamento entre remetente e receptor de uma solicitação; * permite que **mais de um objeto** tenha a oportunidade de tratar a solicitação; * funciona mesmo quando o conjunto de objetos é **desconhecido a priori** ou definido dinamicamente. 👉 **Essa descrição NÃO é do Factory Method.** ✅ Qual padrão corresponde à descrição? A descrição é **claramente** do padrão **Chain of Responsibility**, que: * desacopla quem faz a requisição de quem a processa; * permite que múltiplos objetos possam tratar a requisição; * decide dinamicamente quem irá atender a solicitação. 🔍 O que faz o Factory Method? O **Factory Method** é um **padrão criacional**, cujo objetivo é: * definir uma interface para criação de objetos, * delegando às subclasses a decisão de qual classe instanciar. 📌 Ele **não trata fluxo de requisições**, nem múltiplos receptores. 🧠 Conclusão (estilo CESPE) * Forte acoplamento → **Factory Method não resolve esse problema** * Descrição corresponde a **outro padrão** * Logo, a assertiva é **falsa** ✅ **Gabarito: FALSA.**
55
9. (CESPE / TCU – 2009) No desenvolvimento de um sistema estruturado em subsistemas para facilitar o acesso e minimizar a comunicação e dependências entre os subsistemas, o padrão de criação Factory Method, que fornece uma interface para a criação de famílias de objetos relacionados ou dependentes sem especificar suas classes concretas, é mais indicado que o padrão de criação Prototype.
❌ **Falsa.** A assertiva está **incorreta** por **misturar conceitos de padrões diferentes** e por indicar **o padrão errado** para o problema descrito. Vamos destrinchar no estilo CESPE 👇 --- 🔴 Erro conceitual central O enunciado descreve um cenário em que: * o sistema é estruturado em **subsistemas**; * busca-se **facilitar o acesso** e **reduzir dependências e comunicação** entre eles. 👉 **Esse problema NÃO é resolvido por Factory Method.** --- ❌ Descrição incorreta do Factory Method A questão afirma que o **Factory Method**: > “fornece uma interface para a criação de **famílias de objetos relacionados ou dependentes** sem especificar suas classes concretas”. 🚫 **Essa definição NÃO é do Factory Method.** Essa é, na verdade, a definição clássica do **Abstract Factory**. 📌 **Factory Method**: * cria **um tipo de objeto por hierarquia**; * delega às subclasses qual classe concreta instanciar; * **não trabalha com famílias de objetos**. --- ❌ Comparação inadequada com Prototype O **Prototype**: * cria novos objetos por **clonagem**; * é útil quando a criação é custosa ou complexa; * **não é voltado à organização de subsistemas** nem ao controle de dependências entre eles. Ou seja, a comparação **Factory Method × Prototype**, nesse contexto, **não faz sentido**. --- 🧠 Qual padrão seria mais adequado? Para: * estruturar subsistemas, * reduzir dependências, * facilitar o acesso a um conjunto complexo, 👉 o padrão correto seria o **Facade**, **não citado** no enunciado. --- ✅ Conclusão (padrão CESPE) * Definição atribuída ao Factory Method está errada * Confunde Factory Method com Abstract Factory * Nenhum dos padrões citados resolve o problema descrito ✅ **Gabarito: FALSA.**
56
1. (FGV / SEFAZ-AM - 2022) Os padrões GRASP descrevem princípios fundamentais de atribuição de responsabilidades em projetos de software orientado a objeto. De acordo com esses padrões, o polimorfismo é um princípio orientador para atribuir responsabilidades: a) a classes artificiais que não representem nada no domínio do problema de maneira a obter uma coesão alta. b) a classes abstratas que representem o comportamento de classes concretas para permitir ao sistema lidar com vários tipos de maneira homogênea. c) a uma classe controladora global para centralizar o tratamento de todas as mensagens e eventos do sistema. d) a classes que têm a informação necessária para satisfazer à responsabilidade e colaborar para que o acoplamento permaneça alto. e) a classes estáticas, altamente coesas e que são utilizadas no sistema sem a necessidade de instanciar objetos.
✅ **Alternativa correta: b)** Vamos direto ao ponto, no estilo prova da **FGV** 👇 📌 GRASP – Polimorfismo Nos padrões **GRASP (General Responsibility Assignment Software Patterns)**, o **Polimorfismo** orienta a atribuição de responsabilidades **a diferentes classes que implementam uma mesma interface**, permitindo que o sistema trate **vários tipos de forma uniforme**, sem depender de condicionais. 👉 A responsabilidade deve ser atribuída a **classes abstratas ou interfaces**, e o comportamento específico fica nas **classes concretas**. --- 🧠 Análise das alternativas **a)** ❌ Classes artificiais → isso remete a *Pure Fabrication*, não a Polimorfismo. **b)** ✅ **Correta** > “classes abstratas que representem o comportamento de classes concretas para permitir ao sistema lidar com vários tipos de maneira homogênea.” ✔ Essa é exatamente a ideia de **polimorfismo no GRASP**. **c)** ❌ Classe controladora global → isso é erro clássico (acoplamento excessivo) e não tem relação com polimorfismo. **d)** ❌ GRASP busca **baixo acoplamento**, não alto. **e)** ❌ Classes estáticas não exploram polimorfismo (não há sobrescrita dinâmica). --- 🏁 Gabarito final ✅ **b)**
57
2. (FGV / SEFAZ-MT - 2023) Pedro está trabalhando em um projeto de software orientado a objetos e especificou a classe Manage Schedules Handler que representa um tratador artificial de todos os eventos de sistema referente ao caso de uso Gerenciar Horários. Ao atribuir à classe Manage Schedules Handler essa responsabilidade, Pedro aplicou o princípio GRASP denominado a) controller. b) creator. c) inheritance. d) flyweight. e) template method.
✅ **Alternativa correta: a) controller.** Vamos direto ao conceito 👇 📌 Situação descrita na questão Pedro criou a classe **Manage Schedules Handler**, que: * é uma **classe artificial** (não representa entidade do domínio); * atua como **tratador de eventos do sistema**; * está associada a um **caso de uso específico** (*Gerenciar Horários*). 👉 Esse é exatamente o cenário do **GRASP Controller**. --- 🧠 GRASP – Controller O princípio **Controller** recomenda atribuir a responsabilidade de: * receber eventos do sistema, * coordenar a execução de um caso de uso, a uma classe: * específica do caso de uso (*use case controller*), ou * que represente o sistema como um todo. 📌 *Handlers*, *Managers* e *Controllers* artificiais são exemplos clássicos em prova. --- ❌ Análise das demais alternativas **b) creator** ❌ Trata da responsabilidade de **criar objetos**, não de tratar eventos. **c) inheritance** ❌ Não é um princípio GRASP. **d) flyweight** ❌ É um **padrão de projeto GoF**, não um GRASP. **e) template method** ❌ Outro **padrão GoF**, não relacionado à atribuição de responsabilidades. --- 🏁 Gabarito final ✅ **a) controller.** FGV adora esse padrão: sempre que aparecer **classe artificial + eventos do sistema + caso de uso**, pode marcar **Controller sem medo**.
58
3. (FUNDATEC / PROCERGS - 2023) Os princípios GRASP (General Responsibility Assignment Software Patterns) definem diretrizes para atribuições de responsabilidades às classes e objetos durante a construção de Sistemas Orientados a Objetos. Os nove diferentes princípios apresentados em GRASP são: Criador, Especialista de informação, Baixo acoplamento, Controlador, Alta coesão e, EXCETO: a) Polimorfismo. b) Fabricação pura. c) Indireção. d) Variações protegidas. e) Segregação de interface.
✅ **Alternativa correta: e) Segregação de interface.** Vamos conferir com calma 👇 📌 Princípios GRASP Os **GRASP (General Responsibility Assignment Software Patterns)** são **9 princípios** clássicos para atribuição de responsabilidades em OO. Entre eles, estão: * **Criador (Creator)** * **Especialista de Informação (Information Expert)** * **Baixo Acoplamento (Low Coupling)** * **Alta Coesão (High Cohesion)** * **Controlador (Controller)** * **Polimorfismo** * **Fabricação Pura (Pure Fabrication)** * **Indireção (Indirection)** * **Variações Protegidas (Protected Variations)** --- 🧠 Análise das alternativas **a) Polimorfismo** ✅ → É um princípio GRASP. **b) Fabricação pura** ✅ → Também é GRASP. **c) Indireção** ✅ → Princípio GRASP clássico. **d) Variações protegidas** ✅ → Outro princípio GRASP. **e) Segregação de interface** ❌ → **Não é GRASP**. ✔ Esse princípio pertence ao conjunto **SOLID** (*Interface Segregation Principle – ISP*). --- 🏁 Gabarito final ✅ **e) Segregação de interface.** 📌 Dica de prova: * **GRASP** → atribuição de responsabilidades * **SOLID** → qualidade do design e princípios de arquitetura Quando misturam os dois na lista, a FGV/FUNDATEC quase sempre quer te pegar 😉
59
4. (CESPE / DPE-RO - 2022) O GRASP (General Responsibility Assignment Software Patterns) define princípios básicos padrões de projetos orientados a objetos. Considere os seguintes questionamentos, feitos no âmbito de um sistema escolar onde se conhece a média total do resultado de um aluno. * Para se conhecer a média total do resultado de um aluno, qual princípio vai se direcionar para encontrar a classe de objetos adequada para receber essa responsabilidade? * Nesse caso, qual princípio GRASP procura identificar a classe de objetos que tem a informação necessária para a determinação da média? Assinale a opção que apresenta o princípio GRASP presente nos referidos questionamentos. a) especialista na informação (information expert) b) acoplamento baixo (low coupling) c) coesão alta (high cohesion) d) controlador (controller) e) criador (creator)
✅ **Alternativa correta: a) especialista na informação (information expert).** Vamos ligar diretamente o enunciado ao conceito 👇 --- 📌 O que a questão pergunta? No contexto de um **sistema escolar**, deseja-se: 1. **Saber qual princípio orienta a escolha da classe adequada** para receber a responsabilidade de calcular a média do aluno; 2. **Identificar a classe que possui a informação necessária** para determinar essa média. 👉 Ambos os questionamentos apontam para o **mesmo princípio GRASP**. --- 🧠 GRASP – Information Expert O princípio **Especialista da Informação (Information Expert)** afirma: > Atribua uma responsabilidade à classe que **possui a maior quantidade de informações necessárias** para cumprir essa responsabilidade. 📌 No exemplo: * Quem tem notas, avaliações, pesos, resultados? * A própria classe relacionada ao **Aluno**, **Boletim**, ou **Histórico**, e não uma classe externa. --- ❌ Por que as outras estão erradas? **b) Baixo acoplamento** ❌ → Trata da redução de dependências, não da escolha baseada em dados. **c) Alta coesão** ❌ → Refere-se à organização interna das responsabilidades. **d) Controlador** ❌ → Atua no recebimento de eventos do sistema. **e) Criador** ❌ → Define quem deve criar objetos. --- 🏁 Gabarito final ✅ **a) especialista na informação (information expert).** 📌 Regra de ouro em prova: Se a pergunta for **“quem deve fazer?”** baseada em **quem tem os dados**, a resposta quase sempre é **Information Expert**.
60
5. (IDECAN / UNIVASF - 2019) Considere a seguinte definição de problemas que podem ser encontrados em projetos orientados a objetos: “A quem devemos atribuir a responsabilidade de maneira a evitar o acoplamento direto entre dois (ou mais) objetos? Como desacoplar os objetos, de modo que o acoplamento baixo seja apoiado e o potencial de reúso permaneça mais alto?” Assinale a alternativa que corresponde ao padrão GRASP que recomenda uma forma de resolver esse problema. a) Indireção. b) Invenção Pura. c) Especialista na Informação. d) Variações Protegidas. e) Acoplamento.
✅ **Alternativa correta: a) Indireção.** Vamos direto ao conceito cobrado 👇 --- 📌 Problema descrito no enunciado A questão pergunta: * Como **evitar o acoplamento direto** entre objetos? * Como **desacoplar** objetos para manter **baixo acoplamento** e **alto potencial de reúso**? 👉 Essa descrição bate **literalmente** com um princípio GRASP específico. --- 🧠 GRASP – Indireção (Indirection) O princípio **Indireção** recomenda: > Atribuir a responsabilidade a um **objeto intermediário**, de forma que dois (ou mais) objetos **não se comuniquem diretamente**. 📌 Benefícios: * Reduz o acoplamento; * Facilita mudanças; * Aumenta o reúso; * Isola dependências. Exemplos clássicos: * Camadas, * Interfaces, * Serviços intermediários, * Adaptadores. --- ❌ Análise das alternativas **b) Invenção Pura** ❌ → Cria classes artificiais para melhorar coesão/acoplamento, mas não foca diretamente na **mediação entre dois objetos**. **c) Especialista na Informação** ❌ → Relacionado a quem possui os dados. **d) Variações Protegidas** ❌ → Protege pontos de variação contra mudanças, conceito próximo, mas **não é o foco do enunciado**. **e) Acoplamento** ❌ → “Acoplamento” não é o nome de um padrão GRASP (o correto seria *Baixo Acoplamento*). --- 🏁 Gabarito final ✅ **a) Indireção.** 📌 Dica de prova: Sempre que aparecer **“objeto intermediário”, “evitar dependência direta”, “desacoplar”**, pense imediatamente em **GRASP – Indireção**.