Geral

Engenharia de Software

Semana 1 4

#1

A Engenharia de Software envolve a aplicação de conceitos de engenharia para a produção de software, desde o momento de entender as necessidades do cliente até a manutenção futura do software. Ela segue um conjunto de atividades fundamentais que podem variar de nome, dependendo das fontes consultadas, mas que, em geral, podem ser divididas em etapas.

Com base nessas informações, assinale a alternativa que apresenta as atividades fundamentais da Engenharia de Software:

A
Análise, Desenvolvimento, Validação e Distribuição do Software.
B
Especificação, Desenvolvimento, Validação e Evolução do Software.
C
Criação, Implementação, Avaliação e Suporte do Software.
D
Planejamento, Desenvolvimento, Teste e Monitoramento do Software.
E
Design, Implementação, Manutenção e Atualização do Software.
#2

Os diferentes modelos de processo de software são utilizados para gerenciar o desenvolvimento de software, cada um com suas características específicas. O modelo em cascata, por exemplo, segue uma abordagem sequencial e linear, enquanto o modelo incremental permite o desenvolvimento em etapas curtas com feedback contínuo.

Logo, assinale a alternativa que descreve corretamente uma característica do modelo espiral.

A
Foca na entrega de um produto completo ao final de todas as fases do desenvolvimento.
B
Enfatiza a análise de riscos e o feedback contínuo por meio de ciclos repetitivos.
C
Permite a liberação de versões parciais do software em ciclos curtos.
D
Utiliza um planejamento extensivo antes de iniciar o desenvolvimento.
E
Segue uma abordagem linear com fases bem definidas.
#3

Durante o desenvolvimento de um novo sistema para uma empresa, a equipe de engenharia de software está avaliando qual modelo de processo utilizar. Eles consideram que o projeto possui muitos riscos desconhecidos e que podem surgir novos requisitos durante o desenvolvimento. A equipe decide usar um modelo de processo que incorpora a análise de riscos e permite revisões e aprimoramentos constantes em ciclos iterativos, adaptando-se melhor às mudanças e incertezas.


Neste sentido, assinale a alternativa que descreve uma vantagem do modelo em Espiral em comparação ao modelo em Cascata.

A
Estrutura rígida e linear das fases de desenvolvimento.
B
Foco em entregas incrementais sem revisões contínuas.
C
Realização de todas as fases de desenvolvimento de uma só vez.
D
Desenvolvimento sequencial sem possibilidade de iterações.
E
Integração de prototipação e análise de riscos em ciclos iterativos.
#4

A engenharia de software envolve diversas atividades essenciais para garantir a qualidade e eficiência no desenvolvimento de programas. Essas atividades são fundamentais para atender às necessidades do mercado e assegurar que os sistemas de software sejam confiáveis, eficientes e mantenham-se atualizados frente às demandas tecnológicas. Com base no texto base, analise as seguintes atividades da engenharia de software e identifique qual delas é uma das quatro atividades fundamentais descritas por Ian Sommerville.

Nesse sentido, assinale a alternativa que representa corretamente uma das atividades fundamentais da engenharia de software.

A
Desenvolvimento de software para dispositivos móveis.
B
Desenvolvimento de métodos ágeis para gestão de projetos.
C
Validação de software para garantir que ele atenda aos requisitos do cliente.
D
Implementação de sistemas de controle de tráfego aéreo
E
Aplicação de metodologias de análise de negócios.

Semana 2 5

#1

O documento de especificação de requisitos pode ter diferentes formatos e níveis de detalhamento, dependendo das necessidades da organização e do projeto. Alguns documentos podem ser mais simples, enquanto outros podem ser extremamente detalhados, incluindo diagramas e especificações formais.

Diante disso, assinale a alternativa que descreve uma abordagem correta para a estruturação de um documento de especificação de requisitos:

A
O documento deve sempre incluir especificações formais, como máquinas de estado finito ou teoria dos conjuntos, independentemente da criticidade do sistema.
B
A introdução do documento deve sempre ser omitida para que o conteúdo principal seja abordado imediatamente.
C
O documento deve evitar o uso de diagramas e gráficos, focando exclusivamente em descrições textuais.
D
A estrutura do documento deve ser fixa, seguindo um modelo único e imutável para todos os projetos, independentemente das necessidades específicas do projeto.
E
A estrutura do documento deve ser flexível, permitindo variações conforme as necessidades da organização e do projeto, podendo ser mais ou menos detalhada.
#2

No desenvolvimento de software, os requisitos podem ser classificados como funcionais e não funcionais. Requisitos funcionais descrevem o comportamento específico que o sistema deve ter, enquanto os requisitos não funcionais descrevem as qualidades e restrições do sistema, como desempenho e usabilidade.

Agora, suponha que você esteja desenvolvendo um aplicativo de comércio eletrônico, diante disso, assinale a alternativa que traz um exemplo que representa um requisito não funcional para esse projeto.

A
O sistema deve permitir que os usuários façam login em suas contas de redes sociais.
B
O sistema deve permitir que os usuários adicionem produtos ao carrinho de compras.
C
O sistema deve enviar confirmações de pedido por e-mail aos usuários.
D
O sistema deve processar transações de pagamento em menos de dois segundos.
E
O sistema deve exibir uma lista de produtos com base nas preferências do usuário.
#3

Os requisitos não funcionais podem ser classificados em diferentes categorias, como os requisitos de desempenho, que tratam de [preencher 1], e os requisitos de segurança, que tratam de [preencher 2]. Esses tipos de requisitos impõem restrições ao sistema para garantir que ele atenda aos critérios de qualidade e eficiência.

As lacunas [preencher 1] e [preencher 2] são corretamente substituídas por:

A
1 - espaço em disco; 2 - usabilidade do sistema.
B
1 - tempo de resposta; 2 - funcionalidades do software.
C
1 - segurança da informação; 2 - desempenho do software.
D
1 - armazenamento de dados; 2 - processamento de informações.
E
1 - tempo de resposta; 2 - privacidade dos dados.
#4

O processo de engenharia de requisitos é composto por várias etapas essenciais, que incluem a elicitação, análise, especificação, validação e gestão de requisitos. Cada etapa desempenha um papel crucial para assegurar que os requisitos sejam corretamente compreendidos e documentados. 

Assinale a alternativa que descreve corretamente uma das etapas do processo de engenharia de requisitos.

A
A validação de requisitos é a etapa em que os requisitos são descartados após o desenvolvimento do software.
B
A gestão de requisitos refere-se ao controle de versão e testes unitários do software.
C
A análise de requisitos foca na promoção do software no mercado.
D
A especificação de requisitos consiste em desenvolver o código-fonte do software.
E
A elicitação envolve a coleta de requisitos por meio de entrevistas, questionários e workshops com os stakeholders.
#5

A Engenharia de Requisitos é uma subárea da Engenharia de Software dedicada a descobrir, analisar, documentar, verificar e validar os requisitos de um sistema. Esses requisitos refletem as necessidades dos clientes e é fundamental para garantir o sucesso de um projeto de software.

Qual das alternativas abaixo define corretamente o que é um requisito?

A
Um requisito determina exclusivamente os aspectos de segurança do sistema, sem considerar outras funcionalidades.
B
Um requisito descreve os componentes técnicos internos do sistema, sem relação com os serviços que ele oferece ou as restrições operacionais.
C
Um requisito define o hardware necessário para a operação do sistema, sendo fundamental para a escolha dos equipamentos.
D
Um requisito é uma descrição dos serviços que o sistema ou software deve fornecer, ou das restrições sobre seu funcionamento.
E
Um requisito especifica os métodos de desenvolvimento a serem usados pela equipe de engenharia de software durante o processo de implementação.

Semana 3 13

#1

A engenharia de software abrange o design de arquiteturas em diferentes níveis de abstração, incluindo a arquitetura em pequena escala, focada na estrutura de programas individuais, e a arquitetura em grande escala, que se ocupa de sistemas corporativos complexos. Estas arquiteturas refletem diferentes preocupações e desafios no processo de design.

Diante disso, assinale a alternativa que aplica o conceito de arquitetura em pequena escala para explicar como ela influencia o desenvolvimento de um programa individual.

A
Limita a integração com sistemas externos, concentrando-se exclusivamente na funcionalidade interna do programa.
B
Reduz a necessidade de considerações de segurança ao focar apenas no desenvolvimento de pequenos programas.
C
Aumenta a complexidade de manutenção ao adicionar múltiplas camadas de interdependência entre programas.
D
Facilita a coordenação entre diferentes empresas ao gerenciar a distribuição de sistemas corporativos.
E
Promove a eficiência na decomposição de um programa em componentes individuais, melhorando a modularidade.
#2

A refatoração é uma prática de desenvolvimento de software que envolve a reestruturação do código existente sem alterar seu comportamento externo. Apesar de não ser primariamente focada em melhorar o desempenho, a refatoração pode influenciar a eficiência do software de maneiras significativas. 

Com relação ao conceito de refatoração e sua relação com a otimização de desempenho em software, observe as afirmativas a seguir.

I. A refatoração prepara o software para uma otimização de desempenho mais eficaz ao tornar o código mais modular e fácil de entender.

II. Focar em otimizar o desempenho desde o início do desenvolvimento de software pode resultar em código complexo e difícil de manter. 
III. Otimizar cada parte do software sem considerar sua utilização frequente pode levar a um desperdício de recursos e esforços.

IV. Refatoração elimina a necessidade de qualquer otimização de desempenho posterior ao corrigir todos os problemas de eficiência durante o processo.
Está correto o que se afirma em: 

A
II e IV, apenas.
B
I e II, apenas.
C
III e IV, apenas.
D
I, III e IV, apenas.
E
I, II e III, apenas.
#3

A arquitetura de software deve fornecer uma base que facilite a escalabilidade, a manutenção e a integração de diferentes componentes, promovendo a reutilização de código e a adoção de boas práticas de engenharia de software. Além disso, é fundamental que a arquitetura seja flexível o suficiente para se adaptar a futuras mudanças tecnológicas e de negócios, assegurando a longevidade e a relevância do sistema desenvolvido.

Diante disso, assinale a alternativa que apresenta o principal objetivo do projeto de arquitetura em desenvolvimento de software?

A
Comunicar-se com o cliente para alterar os requisitos durante o desenvolvimento.
B
Testar o software para garantir que todos os requisitos do cliente foram atendidos.
C
Codificar as funções do software baseadas nos requisitos do cliente.
D
Organizar e estruturar ideias para definir como o software será desenvolvido.
E
Documentar todos os erros encontrados durante a fase de teste do software.
#4

Refatoração é uma técnica poderosa no desenvolvimento de software, conhecida por melhorar a estrutura interna do código sem alterar seu comportamento externo. Apesar de seus benefícios, a refatoração possui limitações que podem não torná-la ideal em todos os contextos. Reconhecer essas limitações é crucial para aplicar a técnica de forma eficaz.

Diante disso, assinale a alternativa que descreve o porquê é importante estar ciente das limitações da refatoração.

A
Compreender as limitações permite que a refatoração seja combinada com desenvolvimento dirigido por testes para um resultado mais robusto.
B
Entender as limitações da refatoração permite aos desenvolvedores aplicá-la de forma mais estratégica, evitando excessos que podem complicar o código.
C
Assimilar as limitações da refatoração ajudam a identificar quando outras técnicas de otimização de código podem ser mais apropriadas.
D
Reconhecer as limitações ajuda a integrar a refatoração em metodologias ágeis, garantindo que ela contribua efetivamente para a melhoria contínua.
E
Conhecer as limitações da refatoração pode incentivar o uso de testes automatizados para mitigar os riscos associados às mudanças no código.
#5

Ao projetar a arquitetura de software, os engenheiros enfrentam várias decisões críticas que podem afetar significativamente tanto o desempenho quanto a eficiência do sistema desenvolvido. Essas decisões incluem a escolha de utilizar uma arquitetura de aplicação genérica como template, a distribuição do processamento entre núcleos ou processadores, e a seleção de modelos de arquitetura que podem variar em detalhamento e complexidade.

Neste sentido, assinale a alternativa que explica como a decisão de usar uma arquitetura de aplicação genérica como template pode impactar o desenvolvimento de um sistema de software.

A
Reduz a necessidade de testes de software, pois a arquitetura genérica já terá sido testada e validada em outros projetos.
B
Permite uma implementação mais rápida e eficiente ao reutilizar uma estrutura comprovada, reduzindo o tempo e o esforço de desenvolvimento.
C
Aumenta os custos de desenvolvimento ao exigir ajustes constantes para adaptar a arquitetura genérica às necessidades específicas do novo sistema.
D
Diminui a confiabilidade do sistema de software, pois arquiteturas genéricas podem não ser otimizadas para aplicações específicas.
E
Restringe a criatividade e a inovação ao limitar o design do sistema às funcionalidades já existentes na arquitetura genérica.
#6

A escolha do estilo de arquitetura de um sistema de software deve considerar os requisitos não funcionais, como desempenho, segurança da informação, segurança, disponibilidade e manutenibilidade. A arquitetura adequada para um sistema pode variar significativamente com base nesses requisitos, impactando diretamente na eficácia e eficiência do sistema final.

Com relação a este contexto e sobre o conteúdo estudado, analise as asserções a seguir e a relação proposta entre elas:

I. A arquitetura deve ser projetada para localizar operações críticas dentro de um pequeno número de componentes, com esses componentes implantados no mesmo computador para otimizar o desempenho.
PORQUE

II. Se a disponibilidade for um requisito crítico, a arquitetura deve incluir componentes redundantes que permitam substituição e atualização sem interrupção do sistema.

A respeito dessas asserções assinale a alternativa correta:

A
As asserções I e II são proposições verdadeiras, e a II é uma justificativa da I.
B
A asserção I é uma proposição verdadeira, e a II é uma proposição falsa.
C
As asserções I e II são falsas.
D
As asserções I e II são proposições verdadeiras, mas a II não é uma justificativa da I.
E
A asserção I é uma proposição falsa, e a II é uma proposição verdadeira.
#7

Sistemas de software frequentemente compartilham arquiteturas similares dentro do mesmo domínio de aplicação. A reutilização de arquiteturas e padrões pode influenciar o desenvolvimento e a qualidade dos sistemas. Em sistemas grandes, a escolha da arquitetura de distribuição é uma decisão chave. Padrões de arquitetura, como cliente-servidor ou arquitetura em camadas, são amplamente utilizados.

Com relação a este contexto e sobre o conteúdo estudado, avalie as asserções a seguir e a relação proposta entre elas:

I. A reutilização de arquiteturas dentro do mesmo domínio de aplicação pode acelerar o desenvolvimento e melhorar a qualidade do software, pois permite aproveitar o conhecimento e a experiência acumulados.
PORQUE

II. Os padrões de arquitetura, como cliente-servidor e arquitetura em camadas, fornecem modelos comprovados que podem ser adaptados para diferentes sistemas, aumentando a eficiência do processo de design e implementação.
A respeito dessas asserções assinale a alternativa correta
:

A
As asserções I e II são proposições verdadeiras, e a II é uma justificativa da I.
B
A asserção I é uma proposição falsa, e a II é uma proposição verdadeira.
C
A asserção I é uma proposição verdadeira, e a II é uma proposição falsa.
D
As asserções I e II são falsas.
E
As asserções I e II são proposições verdadeiras, mas a II não é uma justificativa da I.
#8

Uma arquitetura de software pode ser descrita a partir de diferentes visões, cada uma com um nível distinto de abstração. As quatro principais visões são: visão lógica, visão de processo, visão de desenvolvimento e visão física. Essas visões permitem uma compreensão abrangente do sistema, desde sua organização interna até sua interação com o hardware. Para descrever essas arquiteturas, utilizam-se tanto notações informais quanto formais, incluindo UML e linguagens formais de descrição de arquitetura (ADLs), que são essenciais para sistemas altamente críticos.

Diante disso, analise como as diferentes visões de arquitetura contribuem para uma compreensão completa de um sistema de software e assinale a alternativa que identifique qual delas se concentra na organização do sistema em pedaços menores para atender aos requisitos funcionais.

A
A visão de desenvolvimento agrupa classes em componentes, utilizando a orientação a objetos para atender aos requisitos funcionais.
B
As visões de arquitetura devem ser representadas utilizando diagramas UML, utilizando a orientação a objetos para atender aos requisitos funcionais.
C
A visão lógica foca na organização do sistema em pedaços menores, utilizando a orientação a objetos para atender aos requisitos funcionais.
D
A visão física detalha a distribuição dos componentes de software pelos processadores do sistema, utilizando a orientação a objetos para atender aos requisitos funcionais.
E
A visão de processo mostra como o sistema é composto por processos que interagem na execução, utilizando a orientação a objetos para atender aos requisitos funcionais.
#9

A arquitetura de repositório centraliza informações cruciais de um sistema, permitindo que componentes variados, como compiladores e ferramentas de depuração em um IDE, acessem e modifiquem dados consistentemente. Esse modelo é benéfico em ambientes que apresentem tipos de problemas específicos.

Diante disso, assinale a alternativa que apresenta um benefício da utilização da arquitetura de repositório em sistemas.

A
Centraliza a gestão de dados, aumentando a integridade e a facilidade de acesso.
B
Diminui a demanda por recursos computacionais ao distribuir o processamento.
C
Aumenta a redundância dos dados, eliminando a necessidade de backups.
D
Garante completa autonomia dos componentes do sistema.
E
Permite a descentralização dos dados, reduzindo custos operacionais.
#10

Refatoração é um processo crucial no desenvolvimento de software, essencial para manter a qualidade do código ao longo do tempo. Ela envolve modificar o código para melhorar sua estrutura interna sem alterar seu comportamento externo. A prática é fundamental para prevenir a deterioração do design do software, especialmente em projetos de longo prazo.

Neste sentido, assinale a alternativa que apresenta o principal benefício da refatoração para o desenvolvimento de software.

A
Elimina a necessidade de comentários no código, tornando-o autoexplicativo.
B
Aumenta a velocidade de execução do software ao reduzir o volume de código.
C
Garante que o software nunca precisará de modificações futuras.
D
Reduz a quantidade de código, facilitando a manutenção e evitando duplicações.
E
Torna o software completamente livre de erros ao revisar cada linha de código.
#11

A arquitetura "Duto e Filtro" é um padrão de design utilizado para construir sistemas que processam dados de maneira sequencial ou paralela através de componentes modulares. Este modelo é especialmente útil em aplicações que exigem o processamento de dados em estágios discretos, cada um realizando transformações específicas. As vantagens deste modelo incluem modularidade e facilidade de entendimento, enquanto as desvantagens podem envolver a sobrecarga de sistema devido à transmissão de dados entre os filtros.

Neste sentido, assinale a alternativa que aplica o conceito de arquitetura "Duto e Filtro" para descrever como ela pode ser implementada em um sistema de processamento de imagens.

A
Os filtros são configurados para trabalhar de forma independente sem a necessidade de conexões entre eles, reduzindo a necessidade de dutos e minimizando a sobrecarga de dados.
B
A arquitetura foca exclusivamente no aumento da velocidade de processamento ao eliminar completamente os dutos, permitindo que cada filtro funcione como um sistema autônomo.
C
A arquitetura permite a execução paralela de filtros, cada um processando diferentes atributos da imagem, como cor, textura e bordas, antes de combinar os resultados para a saída final.
D
O filtro no sistema processa imagens de forma independente e depois envia os resultados para uma base de dados centralizada onde são compilados e apresentam os resultados finais.
E
O sistema utiliza uma única sequência de filtros operando em série, onde cada filtro adiciona uma camada de segurança adicional à imagem para proteção contra cópias não autorizadas.
#12

A arquitetura em camadas é uma metodologia comum no design de sistemas de software, que organiza o sistema em camadas distintas, cada uma responsável por funções específicas. Contudo, é essencial gerenciar cuidadosamente as interações entre as camadas para evitar impactos na performance e dependências inadvertidas.

Neste sentido, assinale a alternativa que indica uma vantagem desta metodologia no desenvolvimento de sistemas de software.

A
Reduz a necessidade de medidas de segurança devido à proteção inerente às camadas.
B
Aumenta a complexidade do sistema, facilitando o processo de depuração.
C
Elimina completamente as dependências entre as camadas do sistema.
D
Facilita a substituição de camadas sem necessidade de alterar todo o sistema.
E
Reduz significativamente os custos iniciais de desenvolvimento do software.
#13

A refatoração é um importante processo no desenvolvimento de software, pois elimina duplicidades, simplifica lógicas condicionais e garante que novas funcionalidades possam ser adicionadas sem comprometer o comportamento existente. Basicamente ela concentra em melhorar a estrutura do código sem alterar sua funcionalidade.

Esta abordagem estratégica é crucial para manter a longevidade e a adaptabilidade do software. Neste sentido, assinale a alternativa que apresenta o objetivo da refatoração no desenvolvimento de software.

A
Remover todas as funcionalidades antigas do software que não são mais utilizadas.
B
Aumentar a velocidade de processamento do software em execução.
C
Converter todo o código legado em linguagens de programação modernas.
D
Facilitar futuras modificações mantendo o software fácil de ler e modificar.
E
Permitir que o software funcione sem qualquer supervisão de um programador.

Semana 4 8

#1

A engenharia de software baseada em reuso tem se tornado uma estratégia eficiente para o desenvolvimento de sistemas, maximizando o aproveitamento de componentes já existentes. Essa abordagem possibilita a economia de recursos e tempo, além de potencializar a eficiência no desenvolvimento de novos sistemas.

Diante disso, assinale a alternativa que apresenta a estratégia de reuso em engenharia de software.

A
A reutilização de sistemas completos permite a sua incorporação como parte de um sistema de sistemas.
B
Reuso de software é uma prática recente na computação, tendo começado há aproximadamente 10 anos.
C
O reuso de software é menos econômico do que o desenvolvimento de novos componentes.
D
Componentes de software podem ser reusados em contextos similares dos quais foram originalmente desenvolvidos.
E
O reuso de conceitos envolve a modificação direta de códigos existentes para adaptação em novas aplicações.
#2

Os padrões de projeto são componentes cruciais na engenharia de software, especialmente úteis no desenvolvimento orientado a objetos devido à sua capacidade de resolver problemas de design recorrentes de forma eficaz. Eles foram popularizados pelo "Gang of Four" em seu influente livro sobre padrões de projeto orientados a objetos.

Diante disso, assinale a alternativa que apresenta a vantagem dos padrões de projeto.

A
Padrões de projeto reduzem a necessidade de comunicação dentro de equipes de desenvolvimento, pois tornam a documentação desnecessária.
B
Padrões de projeto aumentam a complexidade do código, tornando o software mais difícil de manter e atualizar.
C
Padrões de projeto são úteis para o design de interfaces gráficas e não têm aplicação em outras áreas de software.
D
Padrões de projeto eliminam a necessidade de testar o software, pois garantem a correção automática de erros.
E
Padrões de projeto permitem a reutilização de soluções comprovadas, economizando tempo e esforço no desenvolvimento.
#3

Engenharia de software baseada em componentes foca na construção de sistemas de software a partir de componentes pré-fabricados. Este paradigma depende de várias bases fundamentais que facilitam a interoperabilidade e reutilização de componentes, tornando o desenvolvimento mais eficiente e flexível.

Diante disso, assinale a alternativa que apresenta os conceitos da engenharia de software baseada em componentes.

A
A baseada em componentes, não há necessidade de padrões de interface, pois todos os componentes são auto-suficientes.
B
A engenharia de software baseada em componentes depende de linguagens de programação específicas para integrar componentes.
C
A engenharia de software possui fundamentos que incluem componentes independentes com interfaces claras e o uso de middleware para suporte à comunicação.
D
O Middleware é desnecessário na engenharia baseada em componentes, já que a comunicação entre componentes é automaticamente gerenciada pelo sistema operacional.
E
Os componentes em engenharia de software devem incluir detalhes de implementação junto com suas interfaces para garantir segurança.
#4

O reúso de software é uma estratégia essencial na engenharia de software para aumentar a eficiência, reduzir custos e melhorar a qualidade dos sistemas. Utilizando componentes, padrões e práticas já desenvolvidos, os engenheiros podem acelerar o processo de desenvolvimento e garantir soluções mais robustas.

Diante disso, assinale a alternativa que apresenta a característica dos padrões arquiteturais.

A
Padrões arquiteturais são frequentemente criticados em projetos modernos de software devido à sua percebida rigidez e limitação de inovação.
B
Padrões arquiteturais são recomendações flexíveis que sugerem possíveis abordagens sem oferecer soluções específicas ou testadas.
C
Padrões arquiteturais são soluções comprovadas para problemas recorrentes e facilitam a reutilização de soluções validadas.
D
Padrões arquiteturais exigem que cada novo projeto seja adaptado para conformar-se exatamente às soluções prévias sem qualquer modificação.
E
Padrões arquiteturais são apenas teóricos e raramente são implementados em projetos reais de engenharia de software.
#5

No desenvolvimento de software, frequentemente surgem problemas de incompatibilidade de interfaces entre classes, que dificultam a integração e reutilização de código. Para resolver esses problemas de maneira eficaz e promover a reutilização de componentes existentes, padrões de projeto específicos são utilizados. Esses padrões fornecem soluções estruturadas para adaptar e integrar classes com interfaces diferentes, evitando a necessidade de criar soluções improvisadas.

Com relação a este contexto e sobre o conteúdo estudado, avalie as asserções a seguir e a relação proposta entre elas:

I. O padrão Adapter permite que classes com interfaces incompatíveis colaborem sem a necessidade de modificar diretamente as classes existentes.

PORQUE

II. A principal motivação para usar o padrão Adapter é evitar a criação de soluções caseiras e ad-hoc para problemas de incompatibilidade de interface.

A respeito dessas asserções, assinale a alternativa correta:

A
As asserções I e II são proposições verdadeiras, mas a II não é uma justificativa da I.
B
As asserções I e II são proposições verdadeiras, e a II é uma justificativa da I.
C
As asserções I e II são falsas.
D
A asserção I é uma proposição verdadeira, e a II é uma proposição falsa.
E
A asserção I é uma proposição falsa, e a II é uma proposição verdadeira.
#6

Os padrões de projeto são fundamentais para resolver problemas de design de software de maneira estruturada e previsível. Compreendendo elementos como nome, problema, solução e consequências, esses padrões ajudam no desenvolvimento eficiente e eficaz de soluções de software, orientando o desenvolvedor sobre como e quando aplicar cada padrão.

Com base no apresentado, observe as afirmativas a seguir:

I. O nome de um padrão de projeto serve como um identificador sem relação com seu conteúdo ou aplicação.

II. A descrição do problema em um padrão de projeto inclui o contexto e os requisitos específicos que tornam esse problema relevante.

III. A solução proposta em um padrão de projeto é abstrata e pode ser aplicada a diferentes contextos específicos de desenvolvimento.

IV. As consequências de aplicar um padrão de projeto não incluem considerações sobre os trade-offs envolvidos em sua utilização.

Está correto o que se afirma em:

A
II e III, apenas.
B
I, II e III, apenas.
C
III e IV, apenas.
D
II, III e IV, apenas.
E
I e IV, apenas.
#7

Componentes de software desempenham um papel essencial no desenvolvimento de sistemas modulares, onde grandes sistemas são divididos em partes menores, cada uma responsável por uma funcionalidade específica. Esses componentes interagem entre si através de interfaces bem definidas, o que permite sua reutilização em diferentes contextos.

Com base nos assuntos estudados sobre componentes de software, leia as afirmativas a seguir:

I. Componentes de software são agrupamentos de objetos inter-relacionados que expõem apenas as interfaces necessárias para interação com outros sistemas.

II. As interfaces dos componentes de software garantem a modularidade e independência, permitindo que sejam reutilizados em diferentes contextos sem a necessidade de modificação.

III. A reutilização de componentes de software em novos contextos pode ser comprometida se as interfaces não forem bem definidas e padronizadas.

IV. Componentes de software devem ser projetados para funcionar exclusivamente dentro de um único sistema, limitando sua aplicabilidade em outros contextos.

É correto o que se afirma em:

A
I, III e IV apenas.
B
I, II e III apenas.
C
II e IV apenas.
D
I e II apenas.
E
I, II, III e IV.
#8

Os frameworks são ferramentas essenciais na engenharia de software moderna, proporcionando uma estrutura organizada e reutilizável para o desenvolvimento de aplicações. Eles incorporam padrões de projeto que promovem a extensibilidade e a manutenibilidade do código. 

Com relação a este contexto e do conteúdo estudado sobre implementação de frameworks, analise as asserções a seguir e a relação proposta entre elas:

I. Um framework MVC inclui padrões de projeto como Observer, Strategy e Composite, o que permite a extensibilidade e a reutilização do código.

PORQUE

II. A natureza genérica dos padrões de projeto e seu uso de classes abstratas e concretas são fundamentais para a funcionalidade dos frameworks, permitindo a adaptação a diferentes aplicações.

A respeito dessas asserções assinale a alternativa correta:

A
As asserções I e II são proposições verdadeiras, e a II é uma justificativa da I.
B
As asserções I e II são proposições verdadeiras, mas a II não é uma justificativa da I.
C
As asserções I e II são falsas.
D
A asserção I é uma proposição verdadeira, e a II é uma proposição falsa.
E
A asserção I é uma proposição falsa, e a II é uma proposição verdadeira.

Semana 5 12

#1

Existem diversos tipos de testes de software utilizados para garantir a qualidade e a funcionalidade dos sistemas. Cada tipo de teste tem uma finalidade específica, e entender essas diferenças é essencial para a aplicação correta das estratégias de teste.



Sobre a situação em destaque, assinale a alternativa correta que descreve o teste de "Caixa Preta":

A
Teste realizado para garantir que o software atende às especificações dos usuários finais, validando se suas necessidades foram atendidas.
B
Teste que examina a funcionalidade do software sem considerar seu funcionamento interno, focando nas entradas e saídas de dados.
C
Teste que se concentra na interação entre diferentes módulos do software, verificando se eles funcionam corretamente juntos.
D
Teste que verifica a estrutura interna e o código fonte do software, garantindo que a implementação está correta e eficiente.
E
Teste que avalia o comportamento do software sob condições extremas de uso, analisando sua estabilidade e performance.
#2

O teste de fumaça é uma prática importante em projetos que adotam integração contínua, pois permite testar o software de forma regular e rápida, identificando problemas críticos. Além disso, essa abordagem ajuda a reduzir o risco de incompatibilidades e erros bloqueadores que podem comprometer o cronograma de desenvolvimento. A aplicação frequente do teste de fumaça está relacionada a uma avaliação constante do progresso do software.
Com relação a esse contexto, analise as asserções a seguir e a relação proposta entre elas:

I. O teste fumaça minimiza o risco de incompatibilidades e erros bloqueadores em sistemas de software,

PORQUE

II. O teste de fumaça é realizado diariamente, permitindo a detecção rápida de defeitos, melhorando a qualidade do software e reduzindo o impacto de erros no cronograma.

A respeito dessas asserções, assinale a alternativa correta:

A
A asserção I é uma proposição falsa, e a II é uma proposição verdadeira.
B
A asserção I é uma proposição verdadeira, e a II é uma proposição falsa.
C
As asserções I e II são falsas.
D
As asserções I e II são proposições verdadeiras, mas a II não é uma justificativa da I.
E
As asserções I e II são proposições verdadeiras, e a II é uma justificativa da I.
#3

No processo de desenvolvimento de software, a estratégia de teste envolve a aplicação de diferentes abordagens para assegurar a qualidade do sistema em diversos momentos. Cada componente dessa estratégia desempenha um papel específico: enquanto os níveis de teste se concentram em etapas do ciclo de desenvolvimento, os tipos de teste direcionam a atenção para aspectos como funcionalidade e segurança, e as técnicas determinam as práticas adotadas para a execução dos testes. Compreender como esses elementos se integram é fundamental para a construção de um processo de validação eficaz. 


Assinale a alternativa que descreve corretamente um desses aspectos da estratégia de teste.

A
Os tipos de teste indicam apenas como os resultados dos testes serão registrados, sem definir o que será testado.
B
Os níveis de teste referem-se às diferentes técnicas utilizadas para testar o sistema, como teste funcional e estrutural.
C
As técnicas de teste especificam a parte do sistema a ser testada, como o desempenho e a segurança, sem considerar o momento do teste.
D
Os tipos de teste determinam quando cada componente do sistema deve ser testado, como em testes de usabilidade ou escalabilidade.
E
Os níveis de teste indicam quando e qual parte do sistema será testada, como testes de unidade, integração ou sistema.
#4

No teste de software, é comum utilizar técnicas que ajudam a reduzir a quantidade de casos de teste necessários, mantendo a cobertura e a eficácia dos testes. Uma dessas técnicas permite dividir os dados de entrada em grupos, de modo que cada grupo seja representativo de um conjunto de valores com comportamento similar.


Com relação a essa técnica de teste, assinale a alternativa que compreende corretamente o conceito de particionamento de equivalência.

A
O particionamento de equivalência divide os dados de entrada com base em sua complexidade, aumentando o número de casos de teste para maior precisão.
B
O particionamento de equivalência se concentra em testar os limites dos dados de entrada, ignorando os valores intermediários.
C
O particionamento de equivalência agrupa dados de entrada com a mesma probabilidade de gerar um defeito, garantindo que testar um valor por grupo seja suficiente.
D
O particionamento de equivalência usa técnicas de análise estrutural para identificar a causa dos defeitos em vez de agrupar os dados de entrada.
E
O particionamento de equivalência testa todos os valores de entrada para garantir que nenhum defeito seja encontrado em diferentes cenários.
#5

O teste de caminho básico é uma técnica de teste estrutural que visa garantir que todos os caminhos lineares e independentes dentro do código sejam testados. Para aplicar esta técnica, o código é frequentemente representado como um grafo de fluxo. Cada nó no grafo representa um conjunto de comandos que são executados em sequência.


Diante disso, selecione a alternativa que descreve corretamente a definição de um caminho linearmente independente em um grafo de fluxo. 

A
Um caminho que adiciona pelo menos uma nova aresta que não estava presente em caminhos anteriores, permitindo a cobertura de novas partes do código.
B
Um caminho que segue uma sequência fixa de comandos, sem variações, assegurando a repetição de padrões conhecidos.
C
Um caminho que sempre começa e termina nos mesmos nós de outros caminhos, mantendo uma estrutura fixa para facilitar a comparação.
D
Um caminho que nunca repete arestas já utilizadas em outros caminhos, garantindo a exclusividade de cada trajeto.
E
Um caminho que ignora as condições lógicas do código, focando apenas na execução linear das instruções.
#6

No teste estrutural de software, os grafos de fluxo são utilizados para representar a estrutura lógica do código. Eles ajudam a identificar o comportamento do sistema em diferentes condições e caminhos de execução. Isso permite uma análise detalhada da lógica implementada, facilitando a identificação de possíveis falhas e inconsistências.

Neste sentido, identifique qual a principal finalidade de utilizar grafos de fluxo no contexto do teste estrutural?

A
Aumentar a eficiência do código ao remover comandos redundantes.
B
Representar a interface gráfica do usuário de um software.
C
Simplificar a implementação de novos recursos no software.
D
Visualizar a sequência de comandos e decisões no código.
E
Facilitar a documentação do software para os usuários finais.
#7

Você está desenvolvendo um sistema de gerenciamento de estoque para uma pequena empresa. O sistema deve permitir que os usuários adicionem, atualizem e removam itens do estoque. Para garantir que essas funcionalidades funcionem corretamente, é necessário definir casos de teste que cubram diferentes cenários possíveis.

Neste contexto, qual dos casos listados nas alternativas abaixo seria mais apropriado para verificar a funcionalidade de atualização de itens no sistema de gerenciamento de estoque?

A
Atualizar um item existente no estoque, alterando a quantidade e a descrição do item.
B
Verificar a remoção de um item inexistente do estoque, testando a validação de remoção.
C
Testar a adição de um novo item ao estoque com todos os campos preenchidos.
D
Realizar uma busca por itens no estoque utilizando diferentes critérios de pesquisa.
E
Testar a geração de relatórios de estoque para um período específico.
#8

Os testes funcionais no desenvolvimento de software são realizados para verificar se as funcionalidades de um sistema operam conforme o esperado e se atendem aos requisitos especificados. Eles são essenciais para assegurar que o software funcione corretamente em diferentes condições de uso.

Com base no trecho analisado, identifique nas alternativas abaixo qual dos objetivos listados abaixo pertence aos testes funcionais.

A
Assegurar que o software opere corretamente em diferentes ambientes de uso
B
Garantir que todas as funcionalidades principais do software funcionem corretamente.
C
Validar se o software possui requisitos.
D
Avaliar o desempenho do software sob condições normais de uso.
E
Detectar falhas e bugs que podem afetar a usabilidade do software.
#9

Os testes de software podem ser classificados em funcionais e não funcionais. Testes funcionais avaliam se o software executa suas funções conforme os requisitos especificados, enquanto testes não funcionais verificam aspectos como desempenho, segurança, usabilidade e confiabilidade do sistema. Cada tipo de teste tem um papel específico no processo de garantia da qualidade do software.

Com base no apresentado, identifique qual das características listadas nas alternativas abaixo é verificada pelos testes não funcionais.

A
. Detecção de falhas que afetam a usabilidade do software
B
Verificação de conformidade com os requisitos do usuário
C
Avaliação do desempenho do software sob carga
D
Validação das funcionalidades principais do software
E
Teste de integração entre módulos do sistema
#10

Leia o trecho a seguir:

As estratégias de teste de software são essenciais para garantir que os sistemas funcionem corretamente e sejam confiáveis. O teste "Caixa Branca" é uma dessas estratégias, destacando-se pela sua abordagem específica, que envolve a análise detalhada do código fonte e da estrutura interna do software.

Neste contexto, o teste "Caixa Branca" é uma estratégia que [preencher 1] o código fonte para garantir que a implementação está [preencher 2] e é eficiente.

Os termos [preencher 1] e [preencher 2] são corretamente substituídos por:

A
1 avalia - 2 completa
B
1 verifica - 2 correta
C
1 inspeciona - 2 segura
D
1 examina - 2 adequada
E
1 analisa - 2 correta
#11

No contexto de testes de software baseados em grafos, a análise dos caminhos linearmente independentes é uma técnica usada para assegurar que todas as rotas críticas no código sejam cobertas por casos de teste específicos. Esses caminhos independentes garantem que o comportamento do software seja validado em diferentes condições, com base nas variações de dados de entrada utilizadas nas decisões condicionais.


Com relação a essa técnica de teste, assinale a alternativa que sintetiza corretamente a abordagem para projetar casos de teste que garantam a cobertura total dos caminhos linearmente independentes.

A
Definir um único caso de teste com a idade igual a 18, garantindo que o caminho condicional seja coberto, sem necessidade de testar outros valores.
B
Utilizar apenas valores de idade menores que 18 para testar todas as possibilidades condicionais do código, sem alterar outros parâmetros.
C
Criar casos de teste que ignorem a idade como critério, focando apenas na execução dos métodos principais do código, sem variações.
D
Projetar casos de teste que utilizem a idade como parâmetro principal, variando-a entre valores menores e maiores que 18, garantindo que todas as condições sejam exercitadas.
E
Criar casos de teste utilizando a idade como único parâmetro, verificando apenas se o código retorna o valor correto quando a idade é menor que 18.
#12

Imagine que você está trabalhando no desenvolvimento de um aplicativo de gerenciamento de tarefas. Uma das funcionalidades principais é a criação e edição de tarefas. Durante a fase de testes, é necessário garantir que esta funcionalidade esteja funcionando corretamente sob diferentes condições e entradas de dados.



Qual das seguintes ações é a mais apropriada para garantir que a funcionalidade de criação e edição de tarefas esteja correta durante os testes funcionais?

A
Testar a criação de uma nova tarefa com diferentes tipos de dados, incluindo texto, datas e prioridades, para garantir a funcionalidade.
B
Verificar se a interface de usuário é intuitiva e fácil de usar, garantindo a usabilidade do software.
C
Analisar se a aplicação pode suportar um grande número de usuários simultaneamente, testando sua capacidade de carga.
D
Medir o tempo que o sistema leva para salvar uma nova tarefa no banco de dados, verificando a eficiência do sistema.
E
Avaliar a segurança do sistema ao criar e editar tarefas, assegurando proteção contra acessos não autorizados.

Semana 6 12

#1

O Apache JMeter é uma ferramenta utilizada em testes de desempenho para simular cargas de trabalho e avaliar o comportamento de sistemas sob diferentes condições. Ele pode ser configurado para diversos tipos de testes, fornecendo dados importantes para a análise de performance.


Com relação a esse contexto e sobre o conteúdo estudado, analise as asserções a seguir e a relação proposta entre elas:

I. O Apache JMeter permite simular múltiplos usuários concorrentes para avaliar o desempenho de aplicações sob carga.

PORQUE

II. O Apache JMeter substitui completamente a necessidade de monitoramento de servidores, já que realiza todos os testes localmente.


A respeito dessas asserções assinale a alternativa correta. 

A
As asserções I e II são proposições verdadeiras, mas a II não é uma justificativa da I.
B
As asserções I e II são proposições verdadeiras, e a II é uma justificativa da I.
C
A asserção I é uma proposição verdadeira, e a II é uma proposição falsa.
D
A asserção I é uma proposição falsa, e a II é uma proposição verdadeira.
E
As asserções I e II são falsas.
#2

Os testes de carga são essenciais para garantir que os sistemas de informação possam lidar com a quantidade esperada de usuários e transações simultâneas. Estes testes ajudam a identificar gargalos de desempenho e a garantir que o sistema possa manter a eficiência durante o uso normal.

Com base nisso, é correto apontar que um dos benefícios dos testes de carga em sistemas de informação é de que:

A
avaliam a compatibilidade do sistema com diferentes dispositivos.
B
identificam problemas de desempenho sob carga esperada.
C
verificam a integridade dos dados armazenados.
D
medem a escalabilidade do sistema para novos módulos.
E
aumentam a segurança do sistema contra falhas de rede.
#3

No contexto da engenharia de software, o Desenvolvimento Dirigido por Testes (TDD) é uma prática que envolve a escrita de testes antes da implementação do código funcional. Essa abordagem tem se mostrado eficaz em diversas áreas, proporcionando uma série de benefícios que contribuem para a melhoria contínua do código e a qualidade do software.

Com relação a este contexto e sobre o conteúdo estudado, analise as asserções a seguir e a relação proposta entre elas:

I. O TDD facilita a depuração ao associar falhas a partes específicas do código.

  PORQUE

II. O TDD elimina a necessidade de testes automatizados, dependendo apenas de testes manuais.

A respeito dessas asserções assinale a alternativa correta:

A
A asserção I é uma proposição verdadeira, e a II é uma proposição falsa.
B
As asserções I e II são proposições verdadeiras, e a II é uma justificativa da I.
C
As asserções I e II são falsas.
D
A asserção I é uma proposição falsa, e a II é uma proposição verdadeira.
E
As asserções I e II são proposições verdadeiras, mas a II não é uma justificativa da I.
#4

No contexto do Desenvolvimento Dirigido por Testes (TDD), a escrita de testes automatizados é uma prática comum utilizada para verificar o comportamento do software durante o processo de desenvolvimento. 


Com relação a esse contexto e sobre o conteúdo estudado, analise as asserções a seguir e a relação proposta entre elas:

I. O TDD melhora a qualidade do código ao exigir a criação de testes automatizados para todas as funcionalidades, garantindo que novas implementações não quebrem o sistema existente.

PORQUE

II. A prática de TDD permite que todos os testes antigos passem automaticamente em cada novo incremento, sem a necessidade de revisão manual dos testes anteriores.


A respeito dessas asserções, assinale a alternativa correta. 

A
As asserções I e II são proposições verdadeiras, mas a II não é uma justificativa da I.
B
As asserções I e II são falsas.
C
As asserções I e II são proposições verdadeiras, e a II é uma justificativa da I.
D
A asserção I é uma proposição verdadeira, e a II é uma proposição falsa.
E
A asserção I é uma proposição falsa, e a II é uma proposição verdadeira.
#5

O desenvolvimento dirigido por testes (TDD) é uma prática que visa melhorar a qualidade do código e a confiabilidade do sistema através da escrita de testes antes da implementação das funcionalidades. Além dos benefícios diretos como melhor cobertura de código e documentação automática, o TDD facilita a detecção precoce de defeitos e simplifica a depuração. 

Considerando essas vantagens e o conceito do TDD, é correto apontar que um dos benefícios adicionais do TDD é de que:

A
a tempo de desenvolvimento é reduzido significativamente, pois o TDD automatiza todos os processos de codificação e testes, eliminando a necessidade de revisões manuais.
B
a execução de testes de regressão é eliminada, visto que o TDD garante que todas as alterações no código estejam sempre corretas e livres de erros.
C
a documentação do sistema se torna desnecessária, pois o código é autoexplicativo e não necessita de documentação adicional.
D
a complexidade do design do sistema é aumentada, visto que o TDD exige a escrita de testes detalhados que cobrem todos os possíveis cenários de uso.
E
a depuração se torna mais simples, pois o código recentemente escrito será verificado e modificado, facilitando a localização e correção de problemas.
#6

Os testes de desempenho de software são essenciais para garantir que um sistema funcione de forma eficaz sob diferentes condições. O teste de estresse, por exemplo, é especialmente projetado para avaliar como o sistema se comporta sob condições extremas de carga. 

Com base nisso, é correto apontar que o teste de estresse tem como finalidade:

A
Avaliar o nível no qual o aumento de carga compromete a capacidade do sistema para sustentar o desempenho requerido, assegurando que o sistema possa lidar com aumentos graduais na demanda de usuários ou transações.
B
Avaliar a capacidade do sistema para processar volumes de dados especificados, medindo o throughput e a capacidade de armazenamento sob carga máxima.
C
Avaliar o comportamento do sistema em condições de carga variável, incluindo uso baixo, típico e de pico, para garantir a estabilidade do sistema sob diferentes níveis de carga.
D
Avaliar o comportamento do sistema em condições de carga acima dos requisitos de capacidade especificados, ou com recursos abaixo dos mínimos exigidos, para identificar possíveis pontos de falha.
E
Avaliar se o sistema pode sustentar uma carga necessária continuamente por um período de tempo determinado, verificando a estabilidade e desempenho a longo prazo sob carga constante.
#7

Para garantir a segurança de sistemas de software, os analistas de teste de segurança devem projetar casos de teste que simulem tentativas de invasão. Durante o processo de simulação, é crucial que os analistas considerem diversos vetores de ataque e técnicas de exploração, como injeção de SQL, cross-site scripting (XSS) e ataques de negação de serviço (DoS). Além disso, devem avaliar a resposta do sistema a essas tentativas de invasão, registrando e analisando os logs para entender como as defesas do sistema respondem sob ataque.

Com base nisso, é correto apontar que a finalidade dos casos de teste que simulem tentativas de invasão em sistemas de software é de:

A
Avaliar a facilidade de uso do sistema para os usuários finais.
B
Medir a capacidade do sistema de processar grandes volumes de dados.
C
Assegurar que o sistema opere eficientemente sob condições normais de uso.
D
Implementar novas funcionalidades para melhorar a usabilidade.
E
Identificar pontos fracos que podem ser explorados por atacantes.
#8

Os sistemas de software são compostos por vários componentes interdependentes que desempenham funções distintas, como a interação com o usuário, o processamento de dados e a troca de informações. Durante o processo de desenvolvimento, é fundamental garantir que esses componentes funcionem corretamente de forma individual e integrada, atendendo aos critérios de qualidade estabelecidos para o sistema como um todo.

Com base nisso, assinale a alternativa que responde corretamente por que é importante testar os diferentes componentes (cliente, servidor e comunicação) de um sistema de software.

A
Identificar e corrigir vulnerabilidades de segurança presentes em cada componente.
B
Avaliar a facilidade de uso do sistema pelos usuários finais.
C
Garantir que o sistema esteja otimizado para uso por usuários autorizados.
D
Implementar novos recursos para melhorar a usabilidade.
E
Medir a capacidade do sistema de lidar com grandes quantidades de dados.
#9

Existem diversas motivações para tentativas de invasão a sistemas de informação. Essas motivações podem variar desde questões pessoais até objetivos financeiros. Compreender essas motivações é essencial para desenvolver estratégias eficazes de segurança.

Com base nisso, é correto pontuar que algumas das principais motivações para tentativas de invasão a sistemas de informação é a:

A
Implementação de novos recursos para melhor usabilidade.
B
Melhoria da eficiência do sistema para todos os usuários.
C
Otimização dos recursos do sistema por usuários autorizados.
D
Diversão por hackers, vingança por funcionários e ganhos pessoais por concorrentes.
E
Promoção de atualizações de segurança por parte dos desenvolvedores.
#10

Os métodos de teste de desempenho em sistemas de informação são fundamentais para garantir que os sistemas funcionem de maneira eficiente sob diferentes condições. Entre os métodos mais comuns estão os testes de carga, testes de estresse e testes de volume, cada um com seu propósito específico para avaliar a performance do sistema.

Com isso, é correto apontar que o método utilizado especificamente para avaliar a capacidade do sistema de lidar com grandes quantidades de dados é o:

A
Teste de segurança.
B
Teste de usabilidade.
C
Teste de estresse.
D
Teste de carga.
E
Teste de volume.
#11

A análise de desempenho é uma prática essencial em sistemas de informação para assegurar que os sistemas operem de forma eficiente e que atendam às expectativas dos usuários. Esta prática envolve a avaliação contínua dos sistemas para identificar gargalos e implementar melhorias. Sistemas de informação com desempenho insatisfatório podem causar perda de produtividade e insatisfação dos usuários. Avaliar periodicamente o desempenho é fundamental para manter a qualidade e a eficácia dos serviços prestados.

Diante disso, assinale a alternativa CORRETA, que reconhece a importância da análise de desempenho em sistemas de informação.

A
Aumenta a complexidade dos sistemas analisados.
B
Diminui a necessidade de realizar manutenções no sistema.
C
Permite identificar e resolver problemas de eficiência nos sistemas.
D
Facilita a troca do sistema atual por novos modelos.
E
Reduz o tempo necessário para o treinamento de novos usuários
#12

Ao desenvolver software, a criação de testes automatizados para cada unidade de código é uma prática comum. À medida que o software cresce, esses testes permitem validar tanto as novas funcionalidades quanto garantir que as antigas ainda funcionem corretamente, mesmo após novas implementações. Testes de regressão são particularmente importantes nesse contexto, pois verificam se as funcionalidades previamente desenvolvidas não foram prejudicadas.


Assinale a alternativa que analisa corretamente qual dos benefícios abaixo está diretamente associado ao uso de testes de regressão automatizados no desenvolvimento de software.

A
Identificação de novas funcionalidades para otimização de performance.
B
Aumento da clareza sobre o comportamento esperado do código ao escrever testes.
C
Redução da necessidade de revisões manuais em códigos anteriores.
D
Eliminação da necessidade de ferramentas de depuração manual.
E
Melhoria na documentação do código durante o processo de testes.

Semana 7 5

#1

Os testes de sistema envolvem uma série de verificações realizadas para assegurar que todos os componentes do software funcionam corretamente quando integrados. Esses testes têm como objetivo principal a execução completa do sistema, verificando se ele atende aos requisitos de desempenho, segurança e recuperação de falhas. 

Com base no texto sobre testes de sistema, assinale a afirmação correta sobre o processo de testes de sistema:

A
Substituem a necessidade de testes de integração contínua durante o desenvolvimento.
B
São opcionais e dependem da complexidade do software sendo desenvolvido.
C
Incluem testes de recuperação de falhas, segurança e desempenho para assegurar a robustez do software.
D
Focam exclusivamente nos aspectos técnicos, sem considerar a experiência do usuário.
E
São realizados apenas uma vez, ao final do ciclo de desenvolvimento, para garantir a conformidade.
#2

A gestão de dependências no desenvolvimento de software é fundamental para garantir que todas as partes do projeto funcionem harmoniosamente. Essa prática envolve monitorar e controlar como diferentes componentes de software se relacionam e dependem uns dos outros. A falta de uma gestão adequada pode levar a problemas de integração e falhas no software.

Qual das seguintes alternativas descreve corretamente a gestão de dependências no contexto da gestão de configuração de software?

A
Processo de identificar e corrigir bugs no software.
B
Gerenciamento das inter-relações entre itens de configuração para refletir mudanças.
C
Implementação de medidas de segurança no desenvolvimento.
D
Criação de novos módulos de software sem considerar versões anteriores.
E
Planejamento de novas funcionalidades para o software.
#3

A gestão de configuração de software é um processo crítico que assegura que todas as partes de um projeto de software sejam organizadas e controladas de maneira eficaz. Essa prática envolve o rastreamento de várias versões de todos os artefatos produzidos durante o desenvolvimento, garantindo que mudanças possam ser feitas de maneira controlada e que todas as dependências sejam gerenciadas adequadamente.

Selecione a alternativa que apresenta um dos objetivos da gestão de versão dentro da gestão de configuração de software.

A
Planejamento de recursos para o desenvolvimento contínuo.
B
Controle e documentação de mudanças para rastrear alterações.
C
Implementação de testes específicos para validação constante.
D
Criação de novos requisitos de software para melhorias contínuas.
E
Desenvolvimento de novos módulos a partir de versões anteriores.
#4

A gestão de configuração de software é fundamental para assegurar que todas as partes de um projeto de software sejam organizadas e controladas de maneira eficaz. Ela envolve o rastreamento de várias versões de todos os artefatos produzidos durante o desenvolvimento, garantindo que mudanças possam ser feitas de maneira controlada e todas as dependências sejam gerenciadas adequadamente. Essa prática é crucial para manter a integridade e a qualidade do software.

Analise e assinale corretamente a alternativa sobre um item de configuração de software.

A
Um componente de hardware usado durante o desenvolvimento do software.
B
As versões executáveis do software e suas respectivas atualizações.
C
Um artefato criado durante o ciclo de desenvolvimento, como código-fonte e documentação.
D
Somente o código-fonte do software desenvolvido pela equipe.
E
Um método específico para testar a funcionalidade do software.
#5

A gestão de dependências no desenvolvimento de software é fundamental para garantir que as alterações feitas em um sistema sejam controladas e que seu impacto seja minimizado. A gestão de impacto envolve práticas que visam reduzir os efeitos que as mudanças de um desenvolvedor podem causar no trabalho dos outros, garantindo um processo de desenvolvimento mais eficiente. 

Assinale a alternativa que descreve uma prática importante na gestão de dependências e alterações. 

A
A matriz de rastreabilidade documenta as decisões de arquitetura, facilitando a análise de impacto das alterações e a escolha dos casos de teste apropriados para o teste de regressão.
B
A gestão de dependências elimina a necessidade de verificar artefatos de software no repositório de SCM, uma vez que todas as alterações são automaticamente controladas.
C
A gestão de dependências se concentra exclusivamente no comportamento organizacional e não envolve ações individuais dos desenvolvedores.
D
A análise de impacto é realizada após as alterações serem implementadas, sem a necessidade de documentar as dependências entre os requisitos e os componentes do sistema.
E
O impacto de alterações no desenvolvimento de software é irrelevante quando o sistema já está em produção, pois as dependências não afetam o comportamento do sistema em uso.