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.