Una reescritura en programación informática es el acto o resultado de reimplementar una gran parte de una funcionalidad existente sin reutilizar su código fuente . Cuando la reescritura no utiliza ningún código existente, es común hablar de una reescritura desde cero .
Un software normalmente se reescribe cuando se cumple una o más de las siguientes condiciones:
Varios ingenieros de software, como Joel Spolsky [1], han advertido contra las reescrituras totales, especialmente bajo restricciones de cronograma o presiones competitivas. Si bien los desarrolladores pueden inicialmente aceptar la oportunidad de corregir errores de diseño históricos, una reescritura también descarta aquellas partes del diseño que funcionan como se requiere. Una reescritura compromete al equipo de desarrollo a entregar no solo nuevas características, sino todas las que existen en el código anterior, al tiempo que potencialmente introduce nuevos errores o regresiones de errores previamente corregidos. [2] [3] Una reescritura también interfiere con el seguimiento de errores no corregidos en la versión anterior. [4]
La reescritura incremental es un enfoque alternativo, en el que los desarrolladores reemplazan gradualmente el código existente con llamadas a una nueva implementación, expandiendo esa implementación hasta que reemplaza por completo la anterior. Este enfoque evita una amplia pérdida de funcionalidad durante la reescritura. La ingeniería de software en sala limpia es otro enfoque, que requiere que el equipo trabaje a partir de una especificación escrita exhaustiva de la funcionalidad del software, sin acceso a su código. [5]
El proyecto de Netscape para mejorar el diseño HTML en Navigator 4 ha sido citado como un ejemplo de una reescritura fallida. El nuevo motor de diseño ( Gecko ) se había desarrollado independientemente de Navigator y no se integraba fácilmente con el código de Navigator; por lo tanto, Navigator en sí fue reescrito en torno al nuevo motor, rompiendo muchas características existentes y retrasando el lanzamiento por varios meses. Mientras tanto, Microsoft se centró en mejoras incrementales para Internet Explorer y no se enfrentó a los mismos obstáculos. [3] [6] Irónicamente, Navigator en sí fue una reescritura exitosa en sala limpia de NCSA Mosaic supervisada por los desarrolladores de ese programa. Ver Guerras de navegadores .
Algunos proyectos que mencionan reescrituras importantes en su historia: