TEST-DRIVEN MAINTENANCE: AN APPROACH FOR THE MAINTENANCE OF LEGACY SYSTEMS

COORDENAÇÃO DE APERFEIÇOAMENTO DO PESSOAL DE ENSINO SUPERIOR === 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 teste...

Full description

Bibliographic Details
Main Author: OTÁVIO ARAUJO LEITÃO ROSA
Other Authors: ARNDT VON STAA
Language:Portuguese
Published: PONTIFÍCIA UNIVERSIDADE CATÓLICA DO RIO DE JANEIRO 2011
Online Access:http://www.maxwell.vrac.puc-rio.br/Busca_etds.php?strSecao=resultado&nrSeq=18385@1
http://www.maxwell.vrac.puc-rio.br/Busca_etds.php?strSecao=resultado&nrSeq=18385@2
Description
Summary:COORDENAÇÃO DE APERFEIÇOAMENTO DO PESSOAL DE ENSINO SUPERIOR === 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. === 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.