O documento discute engenharia reversa e reengenharia de software. A manutenção de software é difícil devido a códigos e documentação mal elaborados e falta de compreensão dos sistemas. A reengenharia visa reconstruir sistemas preservando funções existentes e adicionando novas funções para facilitar manutenção. Isso envolve engenharia reversa para entendimento do sistema e reengenharia progressiva para reconstruí-lo.