WorksheetsQuiz de Engenharia de Software
Total questions: 60
Worksheet time: 30mins
Qual evento é considerado o marco inicial da Engenharia de Software como disciplina?
Criação da linguagem de programação FORTRAN.
Conferência de Garmisch em 1968.
Lançamento do primeiro computador pessoal.
Desenvolvimento do sistema operacional UNIX.
Qual das alternativas melhor define Engenharia de Software?
A arte de escrever código sem planejamento.
A aplicação de uma abordagem sistemática, disciplinada e quantificável para o desenvolvimento, operação e manutenção de software.
O processo de criação de jogos digitais sem documentação.
A prática de corrigir bugs após o lançamento do software.
Por que a Engenharia de Software é importante no desenvolvimento de sistemas complexos?
Porque permite escrever código mais rapidamente.
Porque garante que o software seja desenvolvido com qualidade, dentro do prazo e do orçamento.
Porque elimina a necessidade de testes.
Porque reduz a necessidade de documentação.
Qual das seguintes NÃO é uma fase típica do ciclo de vida do software?
Análise de requisitos.
Implementação.
Manutenção.
Marketing.
Qual dos seguintes é um modelo de ciclo de vida de software?
Cascata (Waterfall).
Ágil (Agile).
Modelos prescritivos
Todas as alternativas anteriores.
Por que a Engenharia de Software é relevante para o desenvolvimento de jogos digitais?
Porque jogos são simples e não precisam de métodos formais.
Porque jogos são sistemas complexos que exigem planejamento, gerenciamento e testes.
Porque jogos não envolvem trabalho em equipe.
Porque jogos não precisam de documentação.
Qual é o principal objetivo de um processo de software?
Criar código rapidamente.
Garantir que o software seja desenvolvido de forma controlada e previsível.
Eliminar a necessidade de testes.
Reduzir a interação com os stakeholders.
No modelo Cascata(Waterfall), o que acontece se um erro for detectado em uma fase posterior do desenvolvimento?
O erro é corrigido rapidamente sem impactar o projeto.
O erro pode exigir retrabalho em fases anteriores, aumentando custos e prazos.
O erro é ignorado até o final do projeto.
O erro é corrigido automaticamente pelo sistema.
Qual é uma característica principal do modelo Ágil?
Rigidez no planejamento e execução.
Entrega contínua de pequenos incrementos funcionais.
Documentação extensiva antes de qualquer codificação.
Foco exclusivo em prazos curtos.
Qual dos seguintes é um desafio específico da aplicação da Engenharia de Software no desenvolvimento de jogos?
Jogos não precisam de testes.
A necessidade de equilibrar criatividade e restrições técnicas.
Jogos são sempre desenvolvidos por uma única pessoa.
Jogos não envolvem interação com o usuário.
Por que os processos de software são importantes no desenvolvimento de sistemas?
Porque eliminam a necessidade de comunicação entre a equipe.
Porque fornecem uma estrutura para garantir qualidade, previsibilidade e gerenciamento de riscos.
Porque permitem que o software seja desenvolvido sem documentação.
Porque reduzem a necessidade de testes.
Qual é o principal objetivo dos processos ágeis de desenvolvimento de software?
Seguir um plano rígido e detalhado desde o início.
Entregar valor ao cliente de forma iterativa e incremental, adaptando-se a mudanças.
Eliminar a interação com o cliente até o final do projeto.
Priorizar a documentação extensiva sobre a funcionalidade do software.
Qual dos seguintes NÃO é um método ágil?
Scrum.
Cascata.
XP (Extreme Programming).
Kanban.
Qual das seguintes é uma prática do XP (Extreme Programming)?
Desenvolvimento baseado em planos rígidos.
Programação em pares (Pair Programming).
Documentação extensiva antes de qualquer codificação.
Entregas apenas no final do projeto.
No Scrum, qual é o nome da reunião diária em que a equipe sincroniza suas atividades?
Sprint Planning.
Daily Scrum.
Sprint Review.
Retrospectiva.
Qual é o principal objetivo do método Kanban?
Gerenciar o trabalho visualmente e limitar o trabalho em progresso para melhorar o fluxo.
Realizar entregas apenas no final do projeto.
Eliminar a necessidade de comunicação entre a equipe.
Priorizar a documentação sobre a execução.
O que é uma Design Sprint?
Um processo de desenvolvimento de software que dura vários meses.
Um método ágil focado em resolver problemas complexos e testar soluções em um curto período (geralmente 5 dias).
Uma técnica para escrever código sem planejamento.
Um modelo de ciclo de vida de software baseado em documentação extensiva.
Em qual situação os métodos ágeis são mais recomendados?
Quando os requisitos do projeto são bem definidos e estáveis desde o início.
Quando o projeto envolve incertezas e mudanças frequentes nos requisitos.
Quando a documentação extensiva é mais importante do que a funcionalidade do software.
Quando o projeto não precisa de interação com o cliente.
Qual é a principal diferença entre Scrum e Kanban?
Scrum usa sprints com duração fixa, enquanto Kanban não tem iterações fixas.
Kanban exige uma equipe multifuncional, enquanto Scrum não.
Scrum não permite visualização do trabalho, enquanto Kanban sim.
Kanban exige reuniões diárias, enquanto Scrum não.
Qual dos seguintes é um benefício dos métodos ágeis?
Maior flexibilidade para adaptar-se a mudanças nos requisitos.
Menor interação com o cliente.
Documentação extensiva como prioridade.
Entregas apenas no final do projeto.
O que são requisitos funcionais?
Descrições das características de desempenho e segurança do sistema.
Descrições das funcionalidades que o sistema deve realizar.
Documentação sobre o orçamento do projeto.
Requisitos relacionados à equipe de desenvolvimento.
Qual dos seguintes é um exemplo de requisito não funcional?
O sistema deve permitir que os usuários façam login.
O sistema deve processar 1.000 transações por segundo.
O sistema deve ter uma tela de cadastro de usuários.
O sistema deve permitir a exclusão de registros.
Qual das seguintes é uma técnica comum para documentar requisitos?
User Stories.
Código-fonte.
Diagramas de rede.
Planilhas de custos.
O que é uma especificação de requisitos?
Um documento detalhado que descreve um requisito complexo.
Um plano de marketing para o software.
Um cronograma de desenvolvimento.
Um relatório de testes de usabilidade.
Qual das seguintes é uma técnica de elicitação de requisitos?
Entrevistas com stakeholders.
Escrita de código-fonte.
Execução de testes de desempenho.
Criação de planilhas de custos.
O que é um backlog no contexto do Scrum?
Uma lista de tarefas concluídas.
Um documento de requisitos não funcionais.
Uma lista priorizada de itens a serem trabalhados pela equipe.
Um relatório de bugs encontrados no software.
Qual é o papel do Product Owner em um time Scrum?
Testar o software antes da entrega.
Gerenciar o backlog e garantir que a equipe entregue valor ao cliente.
Documentar todos os processos do projeto.
Desenvolver o código do software.
Qual é o objetivo da validação de requisitos?
Garantir que os requisitos atendam às necessidades dos stakeholders e sejam viáveis.
Escrever código-fonte com base nos requisitos.
Criar um cronograma de desenvolvimento.
Documentar os custos do projeto.
O que é o gerenciamento de requisitos?
A escrita de código-fonte.
A execução de testes de usabilidade.
A criação de um plano de marketing para o software.
O processo de garantir que os requisitos sejam rastreados, priorizados e atualizados ao longo do projeto.
Como o levantamento de requisitos é tratado em metodologias ágeis?
Não há necessidade de documentar requisitos em metodologias ágeis.
Todos os requisitos são definidos no início do projeto e não podem ser alterados.
Os requisitos são elicitados e refinados continuamente ao longo do projeto.
Os requisitos são definidos apenas no final do projeto.
O que são User Stories em metodologias ágeis?
Documentos técnicos detalhados sobre a arquitetura do sistema.
Relatórios de desempenho do sistema.
Planilhas de custos do projeto.
Descrições curtas e simples de funcionalidades desejadas, escritas na perspectiva do usuário.
Qual das seguintes NÃO é uma técnica de elicitação de requisitos?
Brainstorming.
Workshops com stakeholders.
Testes não funcionais.
Prototipagem.
Qual é o principal objetivo da modelagem de sistemas de software?
Criar código-fonte diretamente sem planejamento.
Representar visualmente o sistema, seus componentes e interações para facilitar o entendimento e a comunicação.
Eliminar a necessidade de documentação.
Reduzir o tempo de produção do software.
O que significa UML e qual é seu propósito principal?
Unified Modeling Language; é usado para escrever código-fonte.
Universal Machine Language; é usado para criar planilhas de custos.
Unified Modeling Language; é usado para criar diagramas que representam sistemas de software.
Universal Modeling Language; é usado para testar desempenho de sistemas
Qual dos seguintes é um tipo de diagrama UML usado para representar a estrutura estática de um sistema?
Diagrama de Classes.
Diagrama de Sequência
Diagrama de Atividades.
Diagrama de Casos de Uso.
Para que serve um Diagrama de Casos de Uso na UML?
Mostrar as interações entre os componentes do sistema ao longo do tempo.
Representar a estrutura de classes e objetos do sistema.
Modelar o fluxo de trabalho de processos de negócios.
Descrever as funcionalidades do sistema do ponto de vista do usuário
O que é projeto de software?
A fase de escrever código-fonte sem planejamento.
O processo de definir a estrutura, componentes, interfaces e comportamentos do software para atender aos requisitos.
A etapa de testes após a implementação.
A documentação do software.
O que significa Integridade Conceitual em projetos de software?
Manter o código-fonte organizado em pastas.
Garantir que o software siga um design consistente e coeso, com uma visão clara e unificada.
Eliminar a necessidade de documentação.
Priorizar a velocidade de desenvolvimento sobre a qualidade.
Qual é o objetivo do Ocultamento de Informação no projeto de software?
Eliminar a necessidade de testes.
Priorizar a documentação extensiva.
Restringir o acesso a informações desnecessárias, expondo apenas o que é essencial para cada módulo.
Esconder o código-fonte dos desenvolvedores.
O que significa alta coesão em um módulo de software?
O módulo realiza muitas tarefas diferentes.
O módulo tem uma única responsabilidade ou um conjunto de responsabilidades relacionadas.
O módulo depende fortemente de outros módulos.
O módulo não precisa de testes.
Qual é o ideal em relação ao acoplamento entre módulos de software?
Acoplamento médio, para equilibrar dependências.
Acoplamento não é relevante no projeto de software.
Baixo acoplamento, para garantir que os módulos sejam independentes e fáceis de modificar.
Alto acoplamento, para garantir que os módulos trabalhem juntos.
O que o Princípio da Responsabilidade Única (SRP) propõe?
Uma classe deve ter apenas uma razão para mudar, ou seja, uma única responsabilidade.
Uma classe deve realizar o máximo possível de tarefas.
Uma classe deve depender de uma outra classes.
Uma classe não precisa de testes.
O que o Princípio da Segregação de Interfaces (ISP) sugere?
Interfaces devem ser implementadas apenas uma vez.
Interfaces não são necessárias em projetos de software.
Interfaces devem ser específicas para cada cliente, evitando métodos desnecessários.
Interfaces devem ser grandes e abrangentes para atender a todos os casos de uso.
O que o Princípio da Inversão de Dependências (DIP) propõe?
Módulos de alto nível devem depender de módulos de baixo nível.
Módulos de alto nível e de baixo nível devem depender de abstrações.
Módulos de baixo nível devem depender de módulos de alto nível.
Dependências não são relevantes no projeto de software.
O que o Princípio Aberto/Fechado (OCP) estabelece?
O software deve ser fechado para modificação e aberto para extensão.
O software deve ser aberto para modificação e fechado para extensão.
O software não deve ser modificado nem estendido.
O software deve ser reescrito completamente a cada mudança.
O que o Princípio de Substituição de Liskov (LSP) afirma?
Classes derivadas devem poder substituir suas classes base sem alterar o comportamento do programa.
Classes base devem ser mais específicas que as classes derivadas.
Classes derivadas não devem herdar de classes base.
Classes base devem ser reescritas a cada nova classe derivada.
Qual das seguintes é uma métrica para avaliar a complexidade de um projeto de software?
Número de linhas de código.
Complexidade ciclomática.
Quantidade de documentação.
Número de classes que uma classe depende.
A camada de Visão mais o Modelo constitui a interface gráfica de sistemas MVC
Verdadeiro
Falso
Em Arquiteturas MVC, classes de Modelo podem ser usadas por várias Visões.
Verdadeiro
Falso
São vantagens de MVC: separação entre interface gráfica e modelo; especialização do trabalho de desenvolvimento; e testabilidade.
Verdadeiro
Falso
MVC, Pipes & Filtros e Big Ball of Mud são exemplos de padrões arquiteturais.
Verdadeiro
Falso
Um nome mais intuitivo para Inversão de Dependências é Prefira Composição a Herança
Verdadeiro
Falso
Uma chamada obj.getX.getY().getZ().metodo() representa uma violação do Princípio de Demeter
Verdadeiro
Falso
De acordo com o Princípio Aberto/Fechado, uma classe deve ser aberta para modificações, mas fechada para extensões.
Verdadeiro
Falso
Existe uma relação de composição entre duas classes A e B quando a classe A possui um atributo do tipo B.
Verdadeiro
Falso
Coesão vale para qualquer unidade de código, seja ela um método, uma classe ou um pacote.
Verdadeiro
Falso
'Não fale com estranhos' é uma frase que resume o Princípio de Demeter.
Verdadeiro
Falso
Se uma classe tem mais de um método, ela viola o Princípio da Responsabilidade Única.
Verdadeiro
Falso
Classes grandes são mais propensas a ter problemas de coesão (baixa) e acoplamento (alto).
Verdadeiro
Falso
Uma interface I é implementada, atualmente, por duas classes C1 e C2. Amanhã, novas classes podem também implementar I. Logo, um cliente C deve depender de I e nunca das classes concretas que implementam essa interface (tais como C1 e C2).
Verdadeiro
Falso
