[pt] Test-Driven Development é uma técnica de desenvolvimento de software baseada
em pequenos ciclos que alternam entre a escrita de testes e a implementação da
solução para que os testes sejam aprovados. O desenvolvimento orientado a testes
vem apresentando excelentes resultados em diversos aspectos da construção de
novos sistemas de software. Maior manutenibilidade, melhoria de design, redução
da densidade de defeitos, maior documentação e maior cobertura do código são
vantagens que contribuem para a diminuição do custo de desenvolvimento e,
conseqüentemente, para a maximização do retorno sobre o investimento obtido
quando adotamos a técnica. Todos esses benefícios têm contribuído para que Test-
Driven Development se torne uma prática cada vez mais crítica na aplicação de
metodologias ágeis no processo de desenvolvimento. Quando avaliamos a técnica,
sob a ótica dos muitos sistemas legados existentes, nos deparamos com uma clara
incompatibilidade para sua adoção neste contexto. Test-Driven Development parte
da premissa de que os testes devem ser construídos antes do código e, quando
trabalhamos com legados, já possuímos milhares de linhas escritas e funcionando.
Diante deste cenário, apresentamos a técnica, que chamamos de Test-Driven
Maintenance, resultado da adaptação de Test-Driven Development para o
contexto de legados, detalhamos o processo de adaptação necessário para que
chegássemos à forma descrita e realizamos uma avaliação das características da
técnica original que se estenderam à técnica adaptada. Buscando obter resultados
que fossem, de fato, aplicáveis, produzimos uma avaliação empírica baseada nos
resultados obtidos na introdução da técnica em um sistema legado, em constante
uso e evolução, de uma empresa do Rio de Janeiro. / [en] Test-Driven Development is a software development technique based on quick
cycles that switch between writing tests and implementing a solution that assures
that tests do pass. Test-Driven Development has produced excellent results in
various aspects of building new software systems. Increased maintainability,
improved design, reduced defect density, better documentation and increased code
test coverage are reported as advantages that contribute to reducing the cost of
development and, consequently, to increasing return on investment. All these
benefits have contributed for Test-Driven Development to become an increasingly
relevant practice while developing software. When evaluating test driven
development from the perspective of maintaining legacy systems, we face a clear
mismatch when trying to adopt this technique. Test-Driven Development is based
on the premise that tests should be written before coding, but when working with
legacy code we already have thousands of lines written and running. Considering
this context, we discuss in this dissertation a technique, which we call Test-Driven
Maintenance, that is a result of adapting Test-Driven Development to the needs of
maintaining legacy systems. We describe how we have performed the adaptation
that lead us to this new technique. Afterwards, we evaluate the efficacy of the
technique applying it to a realistic project. To obtain realistic evaluation results,
we have performed an empirical study while introducing the technique in a
maintenance team working on a legacy system that is in constant evolution and
use by an enterprise in Rio de Janeiro.
Identifer | oai:union.ndltd.org:puc-rio.br/oai:MAXWELL.puc-rio.br:18385 |
Date | 29 September 2011 |
Creators | OTÁVIO ARAUJO LEITÃO ROSA |
Contributors | ARNDT VON STAA |
Publisher | MAXWELL |
Source Sets | PUC Rio |
Language | Portuguese |
Detected Language | Portuguese |
Type | TEXTO |
Page generated in 0.0019 seconds