Questão de Engenharia de Software — Manutenção e Melhoria de Software (Reuso, Reengenharia, Refatoração, Engenharia Reversa) — INSTITUTO AOCP 2024
Engenharia de Software›Manutenção e Melhoria de Software (Reuso, Reengenharia, Refatoração, Engenharia Reversa)
Código
qa631668
Banca
INSTITUTO AOCP
Órgão
MPE PR
Ano
2024
Cargo
Ana ( )
Assinale a alternativa que NÃO corresponde a um conceito ou prática da engenharia de software.
AO ciclo de vida de desenvolvimento de software é um processo sistemático que inclui etapas como planejamento, análise, design, implementação, teste e manutenção.
BO modelo em espiral é uma abordagem de desenvolvimento de software que combina elementos de prototipação com o modelo em cascata, permitindo uma análise de risco contínua.
CA engenharia de requisitos é a disciplina que lida com a definição, documentação e manutenção dos requisitos do sistema.
DA análise de ponto de função é uma técnica usada para medir o tamanho do software a partir da perspectiva do usuário.
EA refatoração de código é o processo de adicionar novas funcionalidades ao software sem alterar o comportamento externo do código.
Revelar gabarito e comentário▾
GabaritoE — A refatoração de código é o processo de adicionar novas funcionalidades ao software sem alterar o comportamento externo do código.
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
Engenharia de Software: conceitos e práticas
Gabarito: letra E. A alternativa E está incorreta porque descreve a refatoração como o processo de "adicionar novas funcionalidades ao software", quando, na verdade, a refatoração é a técnica de modificar a estrutura interna do código sem alterar seu comportamento externo — ou seja, não adiciona funcionalidades, apenas melhora o design e a manutenibilidade do código existente. Esse é o conceito clássico de refatoração, conforme definido por Martin Fowler e amplamente aceito na engenharia de software.
A refatoração é uma prática fundamental da engenharia de software, especialmente em metodologias ágeis como a Programação Extrema (XP). O objetivo principal é melhorar a qualidade interna do código — legibilidade, organização, redução de complexidade — sem que o usuário final perceba qualquer diferença no comportamento do sistema. Para garantir que o comportamento externo não seja alterado, é essencial que o software possua uma suíte de testes automatizados, que servem como rede de segurança durante as mudanças.
Um exemplo clássico de refatoração é a técnica "Extrair Método" (Extract Method), onde um trecho de código longo e complexo é extraído para um novo método com um nome descritivo. Isso não muda o que o programa faz, mas torna o código mais legível e fácil de manter. Outras técnicas comuns incluem renomear variáveis, eliminar código duplicado e simplificar condicionais.
A confusão que a alternativa E explora é entre refatoração e manutenção perfectiva. Enquanto a refatoração melhora a estrutura interna sem mudar o comportamento, a manutenção perfectiva é o tipo de manutenção que adiciona novas funcionalidades ao software, conforme solicitado pelos usuários. A banca troca o conceito de refatoração pelo de manutenção perfectiva, uma armadilha clássica em provas de engenharia de software.
NÃO CAIA NESSA!
A banca troca o conceito de refatoração (melhorar a estrutura interna sem alterar o comportamento externo) pelo de manutenção perfectiva (adicionar novas funcionalidades). O candidato que não domina a distinção entre esses dois conceitos cai na armadilha. Lembre-se: refatoração nunca adiciona funcionalidades — ela apenas reorganiza o código existente.
Alternativa A — ✅ Correta
A alternativa A descreve corretamente o ciclo de vida de desenvolvimento de software (SDLC). O ciclo de vida é, de fato, um processo sistemático que estrutura o desenvolvimento em fases como planejamento, análise, design, implementação, teste e manutenção. Essa é a definição clássica encontrada em qualquer livro-texto de engenharia de software, como os de Pressman e Sommerville.
Alternativa B — ✅ Correta
A alternativa B descreve corretamente o modelo em espiral, proposto por Barry Boehm. Esse modelo combina elementos de prototipação com o modelo em cascata, e sua principal característica é a análise de risco contínua em cada iteração do ciclo. O modelo em espiral é especialmente adequado para projetos de grande porte e alto risco.
Alternativa C — ✅ Correta
A alternativa C define corretamente a engenharia de requisitos. Essa disciplina é responsável por todo o processo de lidar com os requisitos do sistema, incluindo sua definição (elicitação), documentação (especificação) e manutenção (gerenciamento de mudanças). É uma área central da engenharia de software, pois requisitos mal definidos são uma das principais causas de falha em projetos.
Alternativa D — ✅ Correta
A alternativa D descreve corretamente a análise de ponto de função. Essa é uma técnica de medição do tamanho funcional do software, baseada na perspectiva do usuário. Ela quantifica as funcionalidades entregues ao usuário, como entradas, saídas, consultas, arquivos internos e arquivos externos, independentemente da tecnologia utilizada na implementação.
Alternativa E — ❌ Incorreta ⟵ GABARITO
A alternativa E está incorreta porque define refatoração como o processo de "adicionar novas funcionalidades ao software". Isso é um erro conceitual grave. A refatoração é exatamente o oposto: é o processo de modificar a estrutura interna do código sem alterar seu comportamento externo. O objetivo é melhorar a qualidade do código — legibilidade, manutenibilidade, organização — sem adicionar ou remover funcionalidades. Adicionar novas funcionalidades é o papel da manutenção perfectiva, não da refatoração.
A pegadinha está na troca do conceito de refatoração pelo de manutenção perfectiva. O candidato que não domina a diferença entre esses dois conceitos pode marcar a alternativa E como correta, caindo na armadilha da banca.