소프트웨어 재공학의 필요성은 주로 유지보수의 문제에서 비롯됩니다. 소프트웨어는 시간이 지남에 따라 변경이 필요하게 되는데, 이는 기술의 발전, 사용자의 요구 변화, 버그 수정 등 다양한 이유 때문입니다. 기존 시스템을 유지보수하는 과정은 복잡하고 비용이 많이 들 수 있어, 이를 효율적으로 관리하기 위해 재공학이 필요합니다. 재공학은 기존 소프트웨어를 새로운 기술과 요구사항에 맞춰 개조하거나 개선하여 유지보수의 효율성을 높이고, 시스템의 수명을 연장하는 데 중점을 둡니다.