Las causas a las que se debe este incremento de trabajo de mantenimiento son:
1) Gran cantidad de software antiguo (más de 10 años); aún siendo construidos con las mejores técnicas de diseño y codificación del momento (rara vez), su creación se produjo con restricciones de tamaño y espacio de almacenamiento y con herramientas desfasadas tecnológicamente.
2) Los programas sufren migraciones continuas de plataformas o SSOO.
3) El software ha experimentado modificaciones, correcciones, mejoras y adaptaciones a nuevas necesidades de los usuarios. Además, estos cambios se realizaron sin técnicas de reingeniería o ingeniería inversa, dando como resultado sistemas que funcionan con baja calidad (mal diseño de estructuras de datos, mala codificación, lógica defectuosa y escasa documentación).