SóProvas



Questões de Refatoração


ID
142213
Banca
CESGRANRIO
Órgão
BNDES
Ano
2009
Provas
Disciplina
Engenharia de Software
Assuntos

O principal sistema de informação de uma empresa, desenvolvido internamente, contém regras de negócio no código da interface de usuário. Qual a técnica de refatoração que o arquiteto de software pode indicar para melhorar consideravelmente o sistema nesse caso?

Alternativas
Comentários
  • Tease Apart Inheritance quando você tem uma hierarquia de herança que realiza dois trabalhos ao mesmo tempo.

    Convert Procedural Design to Objects quando você tem código escrito em estilo procedural.

    Separate Domain from Presentation quando você tem classes de GUI que contém lógica do domínio.

    Extract Hierarchy quando você tem uma classe que está fazendo muito trabalho, principalmente através de muitos comandos condicionais
  • Martin Fowler sugere com a técnica de PresentationDomainSeparation "[...] keeping a good separation between the presentation aspects of a program (the user interface) and the rest of the functionality. "

    "[...] Presentation logic and domain logic are easier to understand when separate. [...]"

    "[...] You can support multiple presentations on the same base program without duplicating code. [...]"

    "[...] Despite these many advantages, I often see this principle violated. I think this is partly due to lack of knowledge, and partly due to the fact that many frameworks make it much too easy to intermix domain logic into the presentation, and make it harder to maintain the separation. [...]"

    Fonte: https://martinfowler.com/bliki/PresentationDomainSeparation.html

     

     

     

     


ID
142264
Banca
CESGRANRIO
Órgão
BNDES
Ano
2009
Provas
Disciplina
Engenharia de Software
Assuntos

No âmbito da Refatoração de software, analise as afirmativas a seguir.

I - Introduce Parameter Object é uma técnica de refatoração que pode ser aplicada em métodos muito longos.
II - Código duplicado é candidato para aplicação das técnicas Extract Method e Substitute Algorithm.
III - Extract Class é uma técnica de refatoração que pode ser aplicada em classes muito grandes.

Está(ão) correta(s) a(s) afirmativa(s)

Alternativas
Comentários
  •  Alguém poderia me explicar essa questão?

    O Parameter Object, pelo que pesquisei, agrega todos os parâmetros de um método em uma classe.

    Na afirmativa I, caberia a técnica Extract Method, que cria um novo método extraindo um bloco de código.

     

  •  I - Introduce Parameter Object, em seu uso, cria-se uma classe imutável que represente o grupo de parâmetros de um ou mais métodos. O que valida a questão é que algumas vezes no corpo do método há estrutras/comportamento usados exclusivamente para manipular os parâmetros. Esses comportamentos podem ser movidos para o objeto de parâmetros.
    Fonte: Introduce Parameter Object

    II - 

  • Esta questao está MUITO errada. Como ng entrou com recurso?!?!

    Introduce Parameter Object é uma tecnica usada quando metodos possuem LISTAS DE PARAMETROS muito longos. E nao métodos longos.
  • Concordo com Marcelo. Quando o item I fala métodos longos, dá a entender métodos com corpo longo, e não a assinatura do método. Eu entraria com recurso
  • O primeiro item da questão não está errado.

    Na explicação sobre os refactorings que podem ser usados em métodos muito longos (pag 77, Refactoring, Fowler) ele explica que:

    Quando é utilizado o Extract Method, em métodos muito longos, pode ocorrer desse novo método possuir muitos parâmetros e variáveis temporárias como parâmetros fazendo com que a chamada do método extraído fique tão confusa quanto originalmente. Nesses casos ele sugere o uso de Replace Temp With Query, Introduce Parameter Object e Preserve Whole Object.

    Um bom lugar para consulta rápida dos padrões é: http://refactoring.com/catalog/
    Existe uma descrição e um exemplo de utilização do padrão.
  • @Eduardo,

    Voce escreveu:
    "pode ocorrer desse novo método possuir muitos parâmetros e variáveis temporárias como parâmetros fazendo com que a chamada do método extraído fique tão confusa quanto originalmente. Nesses casos ele sugere o uso de Replace Temp With Query, Introduce Parameter Object e Preserve Whole Object."

    Nesta passagem está dizendo que ao criar o novo metodo (Extract Method), o mesmo possa necessitar de muitos parâmetros ou variaveis temporarias como parametros. Entendo que isso quer dizer q, a quantidade de parametros a serem passados para este novo metodo fique muito grande e confusa, sendo necessario o uso do Introduce Parameter Object. Nao tem a ver com uso do Introduce Parameter Object  para metodos longos, mas sim com o fato de que o novo metodo do Extract Method fique com a lista de parametros enorme.

    @Marcelino

    Introduce Parameter Object diz:
    Often the bodies of the methods have common manipulations of the parameter values. By moving this behavior into the new object, you can remove a lot of duplicated code.

    Ou seja, esses parametros sao manipulados por operações dentro desses metodos que, ao utilizar o Introduce Parameter Object, acaba que, por consequencia, voce elimina algumas linhas daquele código. Isso nao quer dizer q o metodo era longo.


    @All

    O link do fowler[1] disserta sobre metodos longos dizendo:

    " Long lists of parameters can be slimmed down with Introduce Parameter Object and Preserve Whole Object."

    [1]http://sourcemaking.com/refactoring/long-method
  • Reanalisando o livro sobre padrões de refatoração do Fowler, percebi o seguinte:
    Na contra capa, há uma tabela com os cheiros e as refatorações aplicáveis.
    Método longo, p. 71 {Extrair método, Substituir variável temporária por consulta, Substituir método por objeto método, Decompor condicional}

    No entanto, na parte que trata sobre os cheiros temos o seguinte:
    Métodos longos:
    Em 99% do tempo acplica-se o Extrair Método.
    Você muitas vezes pode usar Substituir variável temporária por consulta para eliminar as variáveis temporárias. Listas longas de parâmetros pode ser diminuídas com Introduzir objeto parâmetro e Preservar o objeto inteiro.
    Se você tentou isso e ainda tem variáveis temporárias e parâmetros demais, é hora de usar a artilharia pesada: Substituir método por objeto método.
    ...
    Condições e laçõs também sinalizam extrações. Use Decompor Condicional para lidar com expressões condicionais.

    Então o examinador percebeu a seguinte possibilidade de derrubar meio mundo (eu incluso nessa):
    Se o cara estudar só essa tabelinha da contra-capa ao invés de ir lá dentro do livro, vai levar um ferro daqueles. (enquanto ria diabolicamente)

    E pronto, está feita uma questão a lá cesgranrio.
  • Eu sabia que a II e a III estavam corretas, como não havia na resposta apenas II e III tive que considerar a I verdadeira tb, apesar de achar que a I está errado..
    já que para mim  Parameter Object é para quando existe muitos parametros e não um metodo longo
  • Técnicas de Refactoring:

     

    - Extract Method:Transformar um fragmento de código que pode ser agrupado em um método com um nome que explica o objetivo desse fragmento.

    - Substitute Algorithm: Substitua o conteúdo de um método com um algoritmo que faça a mesma coisa mas seja melhor.

    - Introduce Parameter Object: Substituir parâmetros de um método por um objeto


ID
144829
Banca
CESPE / CEBRASPE
Órgão
INMETRO
Ano
2009
Provas
Disciplina
Engenharia de Software
Assuntos

Acerca das relações estabelecidas entre os modelos de ciclo de
vida de software, os modelos de gestão e seus exemplos, julgue
os itens de 62 a 71.

As técnicas de refatoração de código compreendem, entre outras, a remoção de números mágicos e a introdução de padrões de desenho.

Alternativas
Comentários
  • O que são números mágicos?
  • Um número mágico é todo número literal que possui um significado não esclarecido ou não documentado no código. É aquele número que você encontra em fórmulas, cálculos, instruções condicionais e métodos e que não é possível inferir o seu significado. Imagine encontrar um trecho de código assim: imposto = valorMovimentado * 0.38 O que significa esse 0.38 na expressão? Você poderia chutar que seria a CPMF mas seria melhor que o código estivesse assim: constanteCPMF = 0.38 imposto = valorMovimentado * constanteCPMF Martin Fowler, no livro "Refatoração: Aperfeiçoando o Projeto de Código Existente", chama esse padrão de "Substituir número mágico por constante simbólica". Este livro é fonte muito recomendável para o aprendizado de padrões de refatoração como o que mostrei acima. É um excelente guia de consulta também. Fonte:http://blog.mutambal.com/post/Sobre-os-numeros-magicos-e-a-necessidade-de-refatoracao.aspx

ID
149974
Banca
CESPE / CEBRASPE
Órgão
ANAC
Ano
2009
Provas
Disciplina
Engenharia de Software
Assuntos

A respeito dos conceitos relacionados ao desenvolvimento de
sistemas e às metodologias de desenvolvimento de sistemas,
julgue os itens seguintes.

A técnica conhecida como refactoring é constantemente aplicada no desenvolvimento baseado no método ágil extreme programming.

Alternativas
Comentários
  • Refatoração (Refactoring): É um processo que permite a melhoria continua da programação, com o mínimo de introdução de erros e mantendo a compatibilidade com o código já existente. Refabricar melhora a clareza (leitura) do código, divide-o em módulos mais coesos e de maior reaproveitamento, evitando a duplicação de código-fonte; Fonte: http://pt.wikipedia.org/wiki/Programa%C3%A7%C3%A3o_extrema
  • Segundo Pressman, em seu livro Engenharia de Software, o XP encoraja a refabricação (refactoring). Um projeto em XP deve manter a simplicidade. Ele (o projeto) é visto como um artefato provisório que pode e deve ser continuamente modificado à medida que a construção prossegue.

    A intenção do refactoring é controlar essas modificações sugerindo pequenas alterações de projeto que "podem aperfeiçoar radicalmente o projeto".

  • Otimização constante.
  • Refatoração: constante melhoramento, faz parte do extreme programming


ID
316297
Banca
FCC
Órgão
TRE-RN
Ano
2011
Provas
Disciplina
Engenharia de Software
Assuntos

Utilizado em ambiente de desenvolvimento integrado, consiste na melhoria constante do código-fonte, por meio de modificações num sistema de software para melhorar a estrutura interna do código sem alterar seu comportamento externo:

Alternativas
Comentários
  • Refatoração é melhorar o código sem alterar a funcionalidade do móldulo.
  • A estrutura de qualquer sistema tende a se degradar ao longo do tempo, à medida em que novas funcionalidades são inseridas, alterações são feitas, erros são corrigidos e mais código é introduzido. Para evitar que a aplicação se transforme em uma casa suja, desorganizada e difícil de manter, equipes XP utilizam a prática de refatoração.

    Elas alteram pequenas partes do sistema, frequentemente, sempre que encontram uma oportunidade para melhorar o código, tornando-o mais limpo, mais claro e mais fácil de ser compreendido. Tais alterações não mudam o comportamento das funcionalidades, apenas melhoram a estrutura do código.

    Agindo assim de forma sistemática e com freqüência, as equipes investem para que o software se mantenha sempre fácil de alterar, gerando a velocidade de desenvolvimento que os clientes de projetos 
    XP costumam vivenciar e apreciar.
  • b-

    refatoração implica melhoria do codigo fonte de modo manual ou automatico para deixa-lo mais legivel e extensivel para facilitar analise de erros e limitações.


ID
316393
Banca
FCC
Órgão
TRE-RN
Ano
2011
Provas
Disciplina
Engenharia de Software
Assuntos

Em relação à Refatoração, é INCORRETO afirmar:

Alternativas
Comentários
  • Após toda atividade de refatoração, é recomendável a execução de testes (de preferência automatizados) a fim de atestar que o comportamento do código refatorado não mudou.
  • Uma coisa é dizer que é recomendável o uso de testes depois da refatoração. Outra coisa é dizer que é obrigatório. Já refatorei dezenas de códigos sem fazer testes automatizados. E nem por isso a refatoração não foi válida, muito pelo contrário.

    Agora, ao meu ver, não precisa utilizar fortemente conceitos de orientação a objeto. E se refatorarmos um código escrito em C ou JavaScript? Ou qualquer outra linguagem estruturada?


ID
770095
Banca
CESPE / CEBRASPE
Órgão
Banco da Amazônia
Ano
2012
Provas
Disciplina
Engenharia de Software
Assuntos

A respeito de desenvolvimento e manutenção de sistemas, julgue os
itens consecutivos.

Denomina-se refatoração a atividade de reestruturação de programas, classes e métodos existentes para adaptá-los a alterações de funcionalidades e requisitos.

Alternativas
Comentários
  • O gabarito não está errado? 

    Refatoração (do inglês Refactoring) é o processo de modificar um sistema de software para melhorar a estrutura interna do código sem alterar seu comportamento externo.

    Se você não deseja mudar o comportamento externo como você pode criar novas funcionalidades atendendo a novos requisitos?

    gabarito seria : Errado.
  • Concordo que o gabarito está errado, esta definição não é de refatoração, é de manutenção evolutiva.
  • Também acho que o gabarito está incorreto.
  • Questão errada. Refatoração não altera regra de negócio.

    Creio que o gabarito deve ser corrigido.
  • Concordo com os colegas acima.

    Refatoração não envolve mudança nas regras do negócio e sim uma melhoria no código. 
  • Alguém possui alguma referência que sustente esse gabarito como sendo 'C'? Já conferi no site do concurso, e o gabarito oficial continua como Certo.

    Ao meu ver, parece mais um caso picaretagem do cespe...
  • Refatoração tem a finalidade de melhorar o código sem fazer alteração na sua funcionalidade!
  • Eu considero ERRADA a questão também.

    Estranho que não consta esta questão no caderno de questões do concurso: http://www.cespe.unb.br/CONcursos/BANCO_DA_AMAZONIA_12/

  • Essa questão é do tipo quando TODOS os comentários convergem para discordar da afirmação feita por ela. O que demostra que você respondeu certo, mesmo a resposta afirmando que você está errado :). Obrigado pessoal!!!

  • Cespe 2012 Q256696 "Denomina-se refatoração a atividade de reestruturação de programas, classes e métodos existentes para adaptá-los a alterações de funcionalidades e requisitos."

    Gabarito CESPE: CERTA. Essa deveria ser FALSA!

     

    Cespe 2013 Q314404 "Ao refatorar um código, altera-se a funcionalidade do sistema."

    Gabarito CESPE: FALSA. Essa é realmente FALSA!

     

    Cespe 2015  Q547730 "A cada nova funcionalidade de software adicionada na prática de refactoring (refatoração) em XP, a chance, o desafio e a coragem de alterar o código-fonte de um software são aproveitados como oportunidade para que o design do software adote uma forma mais simples ou em harmonia com o ciclo de vida desse software, ainda que isso implique a alteração de um código com funcionamento correto."

    Gabarito CESPE: Correta no início mas ANULADA. Essa deveria ser FALSA!

     

     

    A Cepse tem que definir seu posicionamento.


ID
836593
Banca
CESPE / CEBRASPE
Órgão
ANAC
Ano
2012
Provas
Disciplina
Engenharia de Software
Assuntos

Julgue os itens a seguir, que tratam das disciplinas de
implementação, teste e distribuição.

A refatoração consiste na mudança do código-fonte do software, de modo a melhorar sua estrutura interna, sem que se altere o seu comportamento externo.

Alternativas
Comentários
  • Refatoração é o processo pelo que os programadores reestruturam o sistema sem mudar suas funcionalidades para remover duplicidades, melhorar a comunicação, simplificar ou adicionar flexibilidade. Refatoração é o processo de melhorar a estrutura do código preservando sua funcionalidade.
  • Assertiva CORRETA. 


    A refatoração é uma consequência das metodologias ágeis. Nelas você precisa entregar valor rapidamente, por isso o código pode não sair o mais otimizado possível na primeira escrita. Você cria o código para atender um requisito, depois disso é que você se preocupa em deixar ele otimizado.
  • GABARITO CORRETO!

    .

    .

    Refatoração é o processo de melhorar a legibilidade ou a eficiência do código, preservando seu comportamento. Isto significa que é possível que o programador tenha um pouco mais de trabalho do que teria para obter o mínimo necessário para o incremento de software funcionar. Porém trabalhando dessa forma o profissional assegura que conseguirá adicionar uma próxima funcionalidade com menos esforço, recuperando assim o "tempo perdido" anteriormente.


ID
1035271
Banca
CESPE / CEBRASPE
Órgão
PEFOCE
Ano
2012
Provas
Disciplina
Engenharia de Software
Assuntos

Acerca da reengenharia e da engenharia direta de sistemas, julgue os itens subsequentes.

Na manutenção preventiva por refatoração em determinado software, novas funcionalidades devem ser adicionadas para diminuir sua degradação.

Alternativas
Comentários
  • Errei a questão. Gostaria que alguém comentasse pois na Wikipédia o conceito concorda com o externado pela questão

    wiki "

    Refatoração (do inglês Refactoring) é o processo de modificar um sistema de software para melhorar a estrutura interna do código sem alterar seu comportamento externo.

    O uso desta técnica aprimora a concepção (design) de um software e evita a deterioração tão comum durante o ciclo de vida de um código. Esta deterioração é geralmente causada por mudanças com objetivos de curto prazo ou por alterações realizadas sem a clara compreensão da concepção do sistema.

    Outra consequência é a melhora no entendimento do código, o que facilita a manutenção e evita a inclusão de defeitos. Esta melhora no entendimento vem da constante alteração do código com objetivo de facilitar a comunicação de motivações, intenções e objetivos por parte do programador."

    É fundamental que o sistema de software possua testes automatizados para realizar refatoração. Desta forma, será possível garantir a que o comportamento externo não foi alterado.

    O livro mais importante sobre refatoração é Refactoring: Improving the Design of Existing Code (ISBN 0-201-48567-2) de Martin Fowler, onde são explicados os conceitos, motivações e uma série de refatorações descritas passo a passo.


  • Acredito que o erro está em associar a Refatoração com a adição de novas funcionalidades. Na verdade, o objetvo da Refatoração é melhorar a qualidade das funcionalidades já existentes. É como diz Sommerville:

    "When you refactor a program, you should not add functionality but should concentrate on program improvement."

  • Refatoração é a melhoria da estrutura interna do código-fonte sem adicionar/remover funcionalidades. A questão cita que novas funcionalidades devem ser adicionadas, o que é um erro.

     

    Bons estudos!


ID
1055458
Banca
CESPE / CEBRASPE
Órgão
STF
Ano
2013
Provas
Disciplina
Engenharia de Software
Assuntos

A respeito da técnica de refactoring, julgue o item seguinte.

O refactoring aprimora o design de um software, reduz a complexidade da aplicação, remove redundâncias desnecessárias, reutiliza código, otimiza o desempenho e evita a deterioração durante o ciclo de vida de um código.

Alternativas
Comentários
  • De fato, os benefícios citados são obtidos com o uso da técnica de Refactoring. Só atento para o fato de que o Refactoring nem sempre otimiza o desempenho da aplicação. Segue alguns trechos retirados do livro: "Refatoração: Aperfeiçoando o projeto de código existente" do Martin Fowler (uma das principais referências no assunto)

    "Uma preocupação comum com a refatoração é o efeito que ela tem sobre o desempenho de um programa. Para tornar o software mais fácil de entender, muitas vezes você executa alterações que farão o programa rodar mais devagar".

    "Refatorar certamente fará o software rodar mais devagar, mas também o tornará mais sensível ao ajuste de desempenho"

    Considerei a questão como correta, porém, é passível de recurso.  

  • faz tudo isso só não muda o que o código já faz


ID
1229254
Banca
IBFC
Órgão
TRE-AM
Ano
2014
Provas
Disciplina
Engenharia de Software
Assuntos

Processo de modificar um sistema de software para melhorar a estrutura interna do código sem alterar seu comportamento externo, evitando a deterioração tão comum durante o ciclo de vida de um código, é denominado:

Alternativas
Comentários
  • Refatoração (do inglês Refactoring) é o processo de modificar um sistema de software para melhorar a estrutura interna do código sem alterar seu comportamento externo.

    O uso desta técnica aprimora a concepção (design) de um software e evita a deterioração tão comum durante o ciclo de vida de um código. Esta deterioração é geralmente causada por mudanças com objetivos de curto prazo ou por alterações realizadas sem a clara compreensão da concepção do sistema.

     

    FONTE: https://www.wikiwand.com/pt/Refatora%C3%A7%C3%A3o


ID
1306519
Banca
CESPE / CEBRASPE
Órgão
ANATEL
Ano
2014
Provas
Disciplina
Engenharia de Software
Assuntos

No que se refere a práticas ágeis, julgue o item. 


Para se evitar dispêndio de muito tempo na alteração do código e pouco tempo na programação de novas funcionalidades, a prática de refactoring deve restringir-se aos casos em que haja grandes porções de código a ser refatorado.

Alternativas
Comentários
  • Refactoring

    Espera-se que todos os desenvolvedores recriem o código continuamente tão logo os
    aprimoramentos do código forem encontrados. Isso torna o código simples e fácil de manter.

    Sommerville, Engenharia de Software 8ª ed., pág 265

  • A questão cobra conhecimento sobre as práticas ágeis de desenvolvimento de software, mais especificamente sobre a refatoração.

    Conforme Pressman, a refatoração, uma atividade recomendada por diversos métodos ágeis,  é uma técnica de reescrita de código “que simplifica o projeto (ou código) de um componente sem mudar sua função ou comportamento. O resultado será um software mais fácil de se integrar, testar e manter” [1]. De forma complementar, Sommerville diz que “todos os desenvolvedores devem refatorar o código continuamente assim que encontrarem melhorias de código” [2].

    Assim, é recomendado que a refatoração seja aplicada de forma frequente, mantendo-se sempre o código simples e de fácil entendimento, e não apenas quando houver grandes porções de código a ser refatorado.



    Gabarito da professora: ERRADO.




    Referências:

    [1] Engenharia de software: uma abordagem profissional, Roger S. Pressman; tradução Ariovaldo Griesi ; revisão técnica Reginaldo Arakaki, Julio Arakaki, Renato Manzan de Andrade. – 7. ed. – Dados eletrônicos. – Porto Alegre : AMGH, 2011.

    [2] Engenharia de Software, Ian Sommerville; tradução Ivan Bosnic e Kalinka G. de O. Gonçalves; revisão técnica Kechi Hirama. — 9. ed. — São Paulo: Pearson Prentice Hall, 2011.

  • Até pq nem todo remédio precisa de prescrição médica.


ID
1306522
Banca
CESPE / CEBRASPE
Órgão
ANATEL
Ano
2014
Provas
Disciplina
Engenharia de Software
Assuntos

No que se refere a práticas ágeis, julgue o item. 


O fato de cada código ter sua própria estrutura não constitui impedimento para se estabelecerem padrões para a prática de refactoring, sendo possível, por exemplo, utilizar padrões de projeto, como o factory method, para remover duplicações no código.

Alternativas
Comentários
  • Estruturas diferentes não impedem a utilização de padrões para o refactoring?

  • A equipe de programação deve estar focada em possíveis melhorias para o software e em implementação imediata destas. Quando um membro da equipe percebe que o código pode ser melhorado, essas melhorias são feitas, mesmo quando não existe necessidade imediata destas. Exemplos de refatoração incluem a reorganização da hierarquia de classes para eliminação de código duplicado, a arrumação e renomeação de atributos e métodos, bem como a substituição do código com as chamadas para métodos definidos em uma biblioteca de programas.

     

    A pressão pelo desenvolvimento significa que a refatoração será postergada, porque a maior parte do tempo é dedicada à implementação de nova funcionalidade. Algumas novas caracterísicas e mudanças não podem ser facilmente acomodadas por refatoração do nível do código, e exigem modificações da arquitetura do sistema.

     

    Fonte: Sommerville, 9ª Edição, Capítulo 3.

  • A questão cobra conhecimento sobre as práticas ágeis de desenvolvimento de software, mais especificamente sobre a refatoração.

    Conforme Pressman, a refatoração, uma prática comumente recomendada das abordagens ágeis,  é uma técnica de reescrita de código “que simplifica o projeto (ou código) de um componente sem mudar sua função ou comportamento. O resultado será um software mais fácil de se integrar, testar e manter” [1].

    De forma complementar, Sommerville diz que “quando um membro da equipe percebe que o código pode ser melhorado, essas melhorias são feitas, mesmo quando não existe necessidade imediata destas. Exemplos de refatoração incluem a reorganização da hierarquia de classes para eliminação de código duplicado, a arrumação e renomeação de atributos e métodos, bem como a substituição do código com as chamadas para métodos definidos em uma biblioteca de programas” [2].

    Assim, a aplicação de padrões de projetos que removam redundâncias ou duplicações de código, como o método fábrica que encapsula o código de instância dos objetos, está totalmente aderente à finalidade da prática de refatoração. Uma outra vantagem desse método é que a manutenção, quando modificações são necessárias, fica em um local único.


    Gabarito da professora: CERTO.



    Referências:

    [1] Engenharia de software: uma abordagem profissional, Roger S. Pressman; tradução Ariovaldo Griesi ; revisão técnica Reginaldo Arakaki, Julio Arakaki, Renato Manzan de Andrade. – 7. ed. – Dados eletrônicos. – Porto Alegre : AMGH, 2011.

    [2] Engenharia de Software, Ian Sommerville; tradução Ivan Bosnic e Kalinka G. de O. Gonçalves; revisão técnica Kechi Hirama. — 9. ed. — São Paulo: Pearson Prentice Hall, 2011.


ID
1731292
Banca
CESPE / CEBRASPE
Órgão
STJ
Ano
2015
Provas
Disciplina
Engenharia de Software
Assuntos

Julgue o próximo item, referente a criptografia, clean code e refatoração.

O processo de refatoração deve sempre começar com a criação de um sólido conjunto de testes para o trecho de código a ser trabalhado.

Alternativas
Comentários
  • Certo. Galera, você tem um código que funciona, mas deseja melhorar a eficiência dele. Recomenda-se que se faça uma série de testes sólidos para verificar as funcionalidades antes de refatorar o código. Dizer que SEMPRE se deve começar com testes soa estranho e cabe, sim, recurso, visto que – muitas vezes – os testes já foram feitos; mas estou com a impressão de que o CESPE não vai aceitar :(


    http://www.estrategiaconcursos.com.br/blog/stj2015-analista-comentarios-da-prova-de-engenharia-de-software-e-desenvolvimento/

  • Pois é. O SEMPRE é que pegou. Pq o sólido conjunto de testes deve existir independentemente da refatoração, por isso acho meio forçada essa afirmação

  • Questão mal elaborada, pois a refatoração é independente de testes. E o comando da questão não faz referência a abordagem TDD.

    MAS.... no TDD temos o seguinte ciclo:

    1. Adicione um teste - " deve sempre começar com a criação de um sólido conjunto de testes para o trecho de código a ser trabalhado."

    2. Execute todos os testes e veja se algum deles falha

    3. Escrever código

    4. Execute os testes automatizados e veja-os executarem com sucesso

    5. Refatorar código - "O processo de refatoração"

    6. Repita tudo

     

     

  • Talvez a questão tenha tentado se referir ao TDD e seu ciclo RGR (Red - Green - Refactor)

     

    Red - Crie testes que deverão falhar para as novas funcionalidades

    Green - Escreva código para passar no teste

    Refactor - Elimine redundâncias,  elementos de projeto não utilizados, algoritmos ineficientes ou desnecessários, estruturas de dados mal construídas ou inapropriadas, ou qualquer outra falha de projeto que possa ser corrigida para produzir um projeto melhor.

     

     

     

     

  • Um tipo de questão que atrapalha quem sabe o conceito.


ID
1770322
Banca
CESPE / CEBRASPE
Órgão
TRE-MT
Ano
2015
Provas
Disciplina
Engenharia de Software
Assuntos

A técnica de refactoring

Alternativas
Comentários
  • Equipes XP utilizam a prática de refatoração. Elas alteram pequenas partes do sistema, frequentemente, sempre que encontram uma oportunidade para melhorar o código, tornando-o mais limpo, mais claro e mais fácil de ser compreendido. Tais alterações não mudam o comportamento das funcionalidades, apenas melhoram a estrutura do código.

    Fonte: http://www.desenvolvimentoagil.com.br/xp/praticas/refatoracao

  • Quais os erros das outras questões?

  • a) não altera a lógica.

    b) não exige uma alteração no próprio requisito criado.

    c) é usada para diminuir a complexidade do código.

    d) não tem esse objetivo, podem ser pequenas alterações.

    e) correta.


ID
1894273
Banca
FGV
Órgão
AL-MT
Ano
2013
Provas
Disciplina
Engenharia de Software
Assuntos

Segundo M. Fowler et al, na mecânica de aplicação da técnica de Refactoring chamada “ExtractClass”, outras técnicas de Refactoring também precisarão ser usadas. Assinale a alternativa que as indica.

Alternativas
Comentários
  •  

    "Você tem uma classe fazendo o trabalho que deveria ser feito por duas. Crie uma nova classe (Extract Class) e mova os campos (extract field) e método (extract methods) relevantes da classe antiga para a nova." Martin Fowler - refactoring


ID
2376871
Banca
CESPE / CEBRASPE
Órgão
TRE-PE
Ano
2017
Provas
Disciplina
Engenharia de Software
Assuntos

Refactoring é o processo que

Alternativas
Comentários
  • Refatoração

    A refatoração é o processo de fazer melhorias em um programa para diminuir a degradação gradual resultante das  mudanças.   Isso significa  modificar um  programa  para melhorar sua estrutura, para reduzir sua complexidade ou para torná-lo mais compreensível.

    A refatoração é uma parte inerente dos métodos ágeis, como o Extreme Programming, pois esses métodos são baseados em mudanças.

     

    Letra b

    Sommerville - Engenharia de Software 9ed pg 176


ID
2426659
Banca
IBFC
Órgão
HEMOMINAS
Ano
2013
Provas
Disciplina
Engenharia de Software
Assuntos

Uma metodologia ágil que tem a refatoração (Refactoring) como uma de suas práticas é a:

Alternativas

ID
2502166
Banca
IBFC
Órgão
EMBASA
Ano
2017
Provas
Disciplina
Engenharia de Software
Assuntos

Quanto à refatoração (refactoring), analise as afirmativas abaixo e assinale a alternativa correta.


I. Quando o prazo de entrega está próximo do final, deve-se fazer a refatoração.

II. Quando o código está instável, e não funciona, é o melhor momento para fazer a refatoração.

III. EXtreme Programming tem refatoração como uma de suas práticas.

IV. É melhorar a estrutura do código de um sistema preservando as suas funcionalidades.


Estão corretas as afirmativas:

Alternativas
Comentários
  • II. Quando o código está instável, e não funciona, é o melhor momento para fazer a refatoração.

    Na verdade, nesta situação é indicado que se faça o código do zero, pois o trabalho de refatorar é maior do que fazer do zero.


ID
2608090
Banca
CESPE / CEBRASPE
Órgão
CGM de João Pessoa - PB
Ano
2018
Provas
Disciplina
Engenharia de Software
Assuntos

Acerca das metodologias ágeis de desenvolvimento, julgue o item que se segue.


A refatoração recomendada pela metodologia XP consiste na reorganização interna do código-fonte sem alteração no seu comportamento, o que permite melhorias no projeto, mesmo após o início da implementação.

Alternativas
Comentários
  • Marquei correta pelo fato da Refatoração (Refactoring), frequente no código, possuir a ideia de modificar sempre que possível a estrutura do código para facilitar a sua manutenção futura.

     

     

    Engenharia de Software: Qualidade e Produtividade com Tecnologia

    Por Kechi Hirama

     

    Meu mapa mental: https://uploaddeimagens.com.br/imagens/extreme_programming-png--2

  • Esse "sem alteração do seu comportamento" deixa a questão errada por ser ambíguo. O correto é sem alterar as suas interfaces, pois alterar o comportamento interno é justamente a finalidade da fatoração. Entretanto, o que passou na cabeça do examinador é que comportamento = a forma como ele age do ponto de vista de quem chama essa função, ou seja, assumindo uma abordagem caixa-preta.

    Questão mal redigida. ¬¬

  • Quando você refatorar um programa, não deve adicionar funcionalidade, mas concentrar­-se

    na melhoria dele. Portanto, você pode pensar em refatoração como uma ‘manutenção preventiva’, que reduz os

    problemas de mudança no futuro.

    SOMMERVILLE, página 176.


ID
2614573
Banca
COPERVE - UFSC
Órgão
UFSC
Ano
2018
Provas
Disciplina
Engenharia de Software
Assuntos

Considere os seguintes exemplos de procedimentos de manutenção, no contexto da necessidade de alteração de um programa hipotético de controle acadêmico de cursos de graduação da UFSC:

I. fazer com que o resultado da matrícula passe a ter a opção de gerar o resultado em formato PDF, além da atual possibilidade de informar na tela;
II. incluir funcionalidade para permitir que o trancamento de matrícula possa ser feito on-line;
III. reorganização da hierarquia de herança das classes do programa;
IV. criar classes no programa;
V. remover classes do programa;

Assinale a alternativa que relaciona apenas procedimentos de manutenção que podem ser classificados como ações de refatoração (refactoring).

Alternativas
Comentários
  • Na refatoração, não há adição de novas funcionalidades. Gab A.


ID
2649355
Banca
CESPE / CEBRASPE
Órgão
STJ
Ano
2018
Provas
Disciplina
Engenharia de Software
Assuntos

Acerca de TomCat, desenvolvimento seguro de software, refactoring e integração contínua, julgue o próximo item.


A refatoração de um código escrito em Delphi pode levar um método a ser separado e transformado em alguns outros métodos. 

Alternativas
Comentários
  • Questão correta. Refatorar um código significa melhorar sua estrutura interna sem alterar a regra de negócio. Como consequência, novos métodos podem ser criados, melhorando assim a coesão e permitindo que o código fique mais fácil de manter.

  • Delphi é uma linguaguem orientado a objeto, então refatoração e métodos são diretrizes própria desta linguaguem.

    Questão correta.


ID
2676520
Banca
VUNESP
Órgão
TJM-SP
Ano
2017
Provas
Disciplina
Engenharia de Software
Assuntos

A IDE NetBeans possui diversas funções de refatoração do código (refactoring). Esses recursos têm o objetivo de

Alternativas
Comentários
  • A refatoração é o processo de fazer melhorias em um programa para diminuir a degradação gradual resultante das mudanças (OPDYKE e JOHNSON, 1990). Isso significa modificar um programa para melhorar sua estrutura, para reduzir sua complexidade ou para torná-lo mais compreensível. No desenvolvimento orientado a objeto, a refatoração muitas vezes é considerada limitada, mas seus princípios podem ser aplicados a qualquer abordagem de desenvolvimento. Quando você refatorar um programa, não deve adicionar funcionalidade, mas concentrar-se na melhoria dele. Portanto, você pode pensar em refatoração como uma ‘manutenção preventiva’, que reduz os problemas de mudança no futuro.

    Fonte: Engenharia de Software - Sommerville - 9. ed.

  • Gabarito E

    O NetBeans IDE permite o desenvolvimento rápido e fácil de aplicações desktop Java, móveis e Web e também aplicações HTML5 com HTML, JavaScript e CSS. O IDE também fornece um grande conjunto de ferramentas para desenvolvedores de PHP e C/C++. Ela é gratuita e tem código-fonte aberto, além de uma grande comunidade de usuários e desenvolvedores em todo o mundo.

     

     

     

    "Retroceder Nunca Render-se Jamais !"
    Força e Fé !
    Fortuna Audaces Sequitur !


ID
2723212
Banca
CEPS-UFPA
Órgão
UFPA
Ano
2018
Provas
Disciplina
Engenharia de Software
Assuntos

Acerca do tema refatoração de software, considere as afirmativas.


I A refatoração busca evoluir o projeto e código-fonte de um sistema de software para se alcançar alta coesão, isto é, suas classes devem possuir conjuntos extensos de responsabilidades.

II A refatoração busca evoluir o projeto e código-fonte de um sistema de software para alcançar baixo acoplamento, isto é, a colaboração entre as classes deve ser mantida em um nível mínimo aceitável.

III A refatoração é o processo de mudar um sistema de software de tal forma que não altere o comportamento externo do código-fonte, embora melhore sua estrutura interna.


Está(ão) correta(s)

Alternativas
Comentários
  • I A refatoração busca evoluir o projeto e código-fonte de um sistema de software para se alcançar alta coesão, isto é, suas classes devem possuir conjuntos extensos de responsabilidades. (Na verdade ter alta coesão é ter apenas uma única responsabilidade e realizá-la de maneira satisfatória).

    RESP: E


ID
2768224
Banca
FAURGS
Órgão
TJ-RS
Ano
2018
Provas
Disciplina
Engenharia de Software
Assuntos

Em relação à refatoração, assinale com V (verdadeiro) ou F (falso) as afirmações abaixo.

( ) O melhor momento para se refatorar um código é durante os testes de aceitação, pois o cliente tem interesse em um código de qualidade.
( ) Um dos passos da refatoração é a aplicação dos testes que verificarão sua implementação.
( ) Rotinas muito longas e código duplicado são exemplos de bad smells.
( ) Refatorações são modificações no código que são simples a ponto de não gerarem nenhum efeito prático.
( ) Um código que já foi refatorado uma vez não precisará ser refatorado no futuro, pois já atende aos critérios de qualidade exigidos.
( ) A refatoração de um código implica apenas a melhoria de sua qualidade interna e não deve afetar sua funcionalidade original.

A sequência correta de preenchimento dos parênteses, de cima para baixo, é

Alternativas

ID
2805454
Banca
CS-UFG
Órgão
Câmara de Goiânia - GO
Ano
2018
Provas
Disciplina
Engenharia de Software
Assuntos

Sejam as classes A e B tais que o relacionamento entre elas é dado pelo fato de A usar (referenciar) a classe B. Dessa forma, qual das refatorações a seguir implementa o princípio da inversão de dependência?

Alternativas

ID
2828593
Banca
COMPERVE
Órgão
UFRN
Ano
2018
Provas
Disciplina
Engenharia de Software
Assuntos

Durante a manutenção de um software, a reestruturação do código pode se fazer necessária. Sobre os padrões de refatoração, é correto afirmar:

Alternativas
Comentários
  • a)Extrair Super-classe (Extract Superclass)-Quando duas classes possuem características em comum, deve-se mover esse subconjunto de características para uma superclasse, e especializar esta superclasse com as duas classes iniciais.

    b)Correto. Extrair Método (Extract Method)- Quando você têm partes similares do código que podem ser agrupadas, geralmente código que está duplicado, então você deve mover essas partes para um novo método que tenha um nome que faça sentido.

    c) Errado. Não encontrado. Mas dá para ter uma ideia, já que GenerateFields está relacionado a gerar atributos e não método.

    d) Errado. É um tipo de refatoração.

  • eu fui na C pensando no Encapsulate Fields do VS, gerando getters e setters(métodos) para atributos ué rsrsrs

  • A -> Push Down

    B -> Extract method

    C -> Encapsulate field

    https://en.wikipedia.org/wiki/Code_refactoring


ID
2834521
Banca
FCC
Órgão
CREMESP
Ano
2016
Provas
Disciplina
Engenharia de Software
Assuntos

Considere que nos projetos do CREMESP baseados em XP pratica-se a propriedade coletiva de código, de forma que todos os desenvolvedores podem fazer alterações e refatoração de qualquer parte do código a qualquer momento. Para isso, é necessário que também haja

Alternativas
Comentários
  • Releases grandes (Afirmação errada e alternativa errada)

    Versões Pequenas: Release é algo que é implantado no cliente, ou seja, está pronto para ser utilizado. As Releases normalmente são pequenas e frequentes (a cada 2-3 meses) sendo que funcionalidades prioritárias são desenvolvidas mais cedo para serem entregues mais rapidamente ao cliente, pois prioriza-se o que ele mais precisa no momento. Uma Release também pode ser guiada por funcionalidade ou prazo, nesse caso deveremos analisar o que é mais importante, liberar até um certo dia, ou liberar com determinadas funcionalidades. Releases são construídas ao longo de iterações. Uma iteração sempre alcança algum objetivo perceptível ao cliente, ou seja, não adianta usarmos uma iteração para projetarmos ou melhorarmos a arquitetura do nosso software se ele não vai agregar absolutamente nenhum valor ao cliente. Nada é feito que não seja imediatamente útil e necessário para não afetar os prazos de desenvolvimento. 


    integração das funcionalidades, mesmo com erros. (Afirmação errada e alternativa errada)

    Além do que foi dito sobre os testes,

    Integração Contínua: Todo código deve ser integrado diariamente e todos testes devem passar antes e depois da integração. Se algum problema é encontra do ele deve ser corrigido imediatamente. 


    fonte: https://www.devmedia.com.br/praticas-em-xp-extreme-programming/29330

  • Padrões de Codificação: Todos mexem em todos os códigos, todos refatoram e todos trabalham em pares. Assim é interessante mantermos um padrão para termos algo solidificado. Por isso a melhor forma é a equipe definir um padrão de codificação sempre no inicio dos projetos. (Resposta certa)


    Time-box de 40 horas: "Timeboxing" é um termo de gerenciamento de tempo (geralmente utilizado em Scrum) que se refere ao limite do tempo fixado para cada atividade e processo. O XP preconiza que não se pode trabalhar horas extras por mais de uma semana (mais de 40h/semana), pois trabalho extra é sintoma de que algo está errado. Devemos manter um ritmo sustentável. (Afirmação correta, mas alternativa errada)


    Testes apenas depois da codificação (Afirmação errada e alternativa errada)

    Em XP, os testes são escritos antes da funcionalidade, o que também é conhecido como TDD (Test-Driven Design) onde intercala-se a função de testar um pouco e codificar um pouco. Além disso, o TDD impõe o programador à saber o que deve ser verdadeiro no programa e o que não deve ser para que ele funcione corretamente, portanto, pensa-se primeiramente no problema e depois na solução. Dessa forma, os testes são automatizados, diferente de anteriormente onde o desenvolvedor fazia a implementação e entregava para alguém testar. Com os testes automatizados podemos executá-los a qualquer momento, e dessa forma, novas funcionalidade ou alterações podem ser imediatamente testadas para ver se essas mexidas não acarretaram outros problemas. 


    fonte: https://www.devmedia.com.br/praticas-em-xp-extreme-programming/29330


ID
2990377
Banca
CESPE / CEBRASPE
Órgão
SLU-DF
Ano
2019
Provas
Disciplina
Engenharia de Software
Assuntos

Com relação a desenvolvimento de software, julgue o item a seguir.

Refactoring (refatoração) é o processo utilizado para reescrever aplicações desatualizadas, com a finalidade de incrementar e melhorar suas funcionalidades; o uso dessa técnica normalmente aprimora aplicações para disponibilizá-las na Internet.

Alternativas
Comentários
  • JUSTIFICATIVA - ERRADO. Refatoração (do inglês refactoring) é o processo de modificar um sistema de software para melhorar a estrutura interna do código sem alterar seu comportamento externo e sem implementar novas funcionalidades.

     

    BANCA CESPE

  • reengenharia de softwares consiste na modificação de um sistema de software (um software que já exista), a fim de reconstruí-lo, com funcionalidade semelhante a um já existente, mas de forma que se tenha melhor performance e maiores e melhores recursos nesse software, assim como no modo como ele é construído


ID
3007897
Banca
Marinha
Órgão
Quadro Técnico
Ano
2019
Provas
Disciplina
Engenharia de Software
Assuntos

A Engenharia de Software consiste na aplicação de uma abordagem sistemática, disciplinada e quantificável no desenvolvimento, na operação e na manutenção de software. Nesse contexto, coloque V (verdadeiro) ou F (falso) nas afirmativas abaixo, de acordo com os conceitos relacionados a projeto de sistema, assinalando a seguir a opção que apresenta a sequência correta.


( ) Na Engenharia de Software orientada a aspectos, ponto de corte é uma declaração, inclusa em um aspecto, que define os pontos de junção nos quais o adendo de aspecto associado deve ser executado.

( ) O conceito de independência funcional é um resultado indireto da separação por interesses, da modularidade e dos conceitos de abstração e encapsulamento de informações.

( ) Refatoração é uma técnica de reorganização que simplifica o projeto (ou código) de um componente de tal forma que altere o mínimo possível seu comportamento externo.

( ) Abstração procedural refere-se a uma sequência de instruções que têm uma função específica e limitada.

( ) O princípio de encapsulamento de informações sugere que os módulos sejam caracterizados por decisões de projeto que ocultem (cada uma delas) de todas as demais.

Alternativas
Comentários
  • Letra B

    (V)

    (F) O conceito de independência funcional é um resultado direto da separação por interesses, da modularidade e dos conceitos de abstração e encapsulamento de informações.

    (F) Refatoração é uma técnica de reorganização que simplifica o projeto (ou código) de um componente de tal forma que não altere o seu comportamento externo.

    (V)

    (V)

  • Termologia usada na engenharia de software orientada a aspectos:

    Adendo: Código que implementa um interesse.

    Aspecto: Uma abstração de programa que define o interesse transversal. Inclui a definição de um ponto de corte e do adendo associado com esse interesse.

    Ponto de junção: Evento em um programa em execução onde o adendo associado com um aspecto pode ser executado.

    Modelo de ponto de junção: Conjunto de eventos que podem ser referenciados em um ponto de corte.

    Ponto de corte: Uma declaração, inclusa em um aspecto, que define os pontos de junção onde o adendo de aspecto associado deve ser executado.

    Composição: A incorporação do código de adendo em ponto de junção específico por um compositor de aspectos.

    Conceitos de projetos de software que englobam o desenvolvimento de software tradicional e o orientado a objetos:

    Abstração: refere-se a uma sequência de instruções que possuem uma função específica e limitada. O nome de uma abstração procedural implica sua função, porem os detalhes específicos são omitidos.

    Encapsulamento: O princípio de encapsulamento de informações sugere que os métodos sejam “categorizados por decisões de projeto que ocultem (cada uma delas) de todas as demais.

    Independência funcional: O conceito de independência funcional é um resultado direto da separação por interesses da modularidade e dos conceitos de abstração e encapsulamento de informações.

    Refatoração: é uma técnica de reorganização que simplifica o projeto (ou código) de um componente sem mudar sua função ou comportamento.

    Alternativa: B

    Fontes:

    Livro - Engenharia de Software (Autor: Roger S. Presman)

    Livro - Engenharia de Software (Autor: Ian Sommerville)

  • (V) "Ponto de corte é uma declaração, inclusa em um aspecto, que define os pontos de junção nos quais o adendo de aspecto associado deve ser executado."

    Fonte: SOMMERVILLE. ENGENHARIA DE SOFTWARE 9ª EDIÇÃO, PÁGINA 400 - TABELA 21.1.

    (F) "O conceito de independência funcional é um resultado direto da separação por interesses, da modularidade e dos conceitos de abstração e encapsulamento de informações."

    Fonte: PRESSMAN, ENGENHARIA DE SOFTWARE 7ª EDIÇÃO, PÁGINA 216.

    (F) "A refatoração é uma técnica de reorganização que simplifica o projeto (ou código) de um componente sem

    mudar sua função ou comportamento."

    Fonte: PRESSMAN, ENGENHARIA DE SOFTWARE 7ª EDIÇÃO, PÁGINA 218.

    (V) "Uma abstração procedural refere-se a uma sequência de instruções que possuem uma função específica e limitada."

    Fonte: PRESSMAN, ENGENHARIA DE SOFTWARE 7ª EDIÇÃO, PÁGINA 213.

    (V) "O princípio de encapsulamento de informações sugere que os módulos sejam “caracterizados por decisões de projeto que ocultem (cada uma delas) de todas as demais.”

    Fonte: PRESSMAN, ENGENHARIA DE SOFTWARE 7ª EDIÇÃO, PÁGINA 215.

    Gabarito letra B


ID
3226219
Banca
INSTITUTO AOCP
Órgão
PRODEB
Ano
2018
Provas
Disciplina
Engenharia de Software
Assuntos

“Processo de alteração de um sistema de software de tal forma que não se altere o comportamento externo do código, mas se aprimore a estrutura interna”. O enunciado se refere a 

Alternativas
Comentários
  • d-

    Refabricação é o processo de alteração de um sistema de software de tal forma que não se altere o comportamento externo do código, mas se aprimore a estrutura interna. É uma forma disciplinada de organizar código [e modificar/simplificar o projeto interno] que minimiza as chances de introdução de bugs. Em resumo, ao se refabricar, se está aperfeiçoando o projeto de codificação depois de este ter sido feito.

    Engenharia de Software

    Uma Abordagem Profi ssional

    Roger S. Pressman


ID
3356881
Banca
CESPE / CEBRASPE
Órgão
TJ-PA
Ano
2020
Provas
Disciplina
Engenharia de Software
Assuntos

No processo de TDD (test driven development), a refatoração

Alternativas
Comentários
  • refatoração é a melhoria do código já existente, mantendo o comportamento do mesmo.

  • A questão cobra conhecimento sobre o processo do desenvolvimento baseado em teste (test-driven development — TDD).
    No TDD, “os requisitos para um componente de software servem de base para a criação de uma série de casos de teste que exercitam a interface e tentam encontrar erros nas estruturas de dados e funcionalidade fornecida pelo componente" [1].  Com isso, o TDD é uma prática, utilizada de forma ampla nas metodologias ágeis de desenvolvimento de software, onde o desenho e execução de testes são realizados antes da criação do código-fonte do sistema.

    Em suma, o processo TDD funcionada da seguinte forma:


    1. É criado um teste antes de ser criado o primeiro segmento de código (já com a expectativa de falha).

    2. O código necessário para satisfazer ao teste é escrito.

    3. O teste é executado novamente:

      a. Se o teste não tiver sucesso, o segmento do código é corrigido e todos os testes criados  até aquele ponto são executados novamente.

      b. Se o teste passar, o código é refatorado, caso seja necessária uma melhoria de qualidade do código desenvolvido.

    4. Um novo teste é criado para o próximo segmento de código a ser desenvolvido, retornando ao ponto 2.
    O processo acima continua até que o módulo ou sistema esteja completamente codificado, satisfazendo todos os requisitos, e todos os testes passem com sucesso.

    Assim, a refatoração deve acontecer após o código do software ter sido escrito e testado.


    Gabarito da professora: Letra A.



    Referência:

    [1] Engenharia de software: uma abordagem profissional, Roger S. Pressman; tradução Ariovaldo Griesi ; revisão técnica Reginaldo Arakaki, Julio Arakaki, Renato Manzan de Andrade. – 7. ed. – Dados eletrônicos. – Porto Alegre : AMGH, 2011.


ID
5574268
Banca
IDECAN
Órgão
IF-CE
Ano
2021
Provas
Disciplina
Engenharia de Software
Assuntos

No que diz respeito à manutenção e reengenharia de software, um termo define o processo de alterar o código-fonte, de modo que não altere o comportamento externo e ainda melhore a sua estrutura interna. É uma técnica disciplinada de limpar e organizar o código, e por consequência, minimizar a chance de introduzir novos bugs. Esse termo é conhecido como

Alternativas