Reescritura (programación)


Una reescritura en la programación de computadoras es el acto o resultado de volver a implementar una gran parte de la funcionalidad existente sin reutilizar su código fuente. Cuando la reescritura no usa código existente en absoluto, es común hablar de una reescritura desde cero .

Motivaciones editar

Por lo general, una pieza de software se reescribe cuando se da uno o más de los siguientes puntos:

  • su código fuente no está disponible o solo está disponible con una licencia incompatible
  • su código no se puede adaptar a una nueva plataforma de destino
  • su código existente se ha vuelto demasiado difícil de manejar y extender
  • la tarea de depurar parece demasiado complicada
  • el programador tiene dificultades para entender el código fuente de la aplicación
  • los desarrolladores aprenden nuevas técnicas o desean hacer una gran revisión de funciones que requiere muchos cambios
  • los desarrolladores desean intentar nuevas soluciones a los problemas previos.
  • el lenguaje de programación del código fuente debe cambiarse

Riesgos editar

Varios ingenieros de software, como Joel Spolsky[1]​ han advertido contra las reescrituras totales, especialmente bajo restricciones de programación o presiones competitivas. Si bien los desarrolladores pueden agradecer inicialmente la oportunidad de corregir errores de diseño históricos, una reescritura también descarta aquellas partes del diseño que funcionan según sea necesario. Una reescritura compromete al equipo de desarrollo a entregar no solo nuevas características, sino todas las que existen en el código anterior, mientras 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]

Un enfoque alternativo es la reescritura incremental, 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 completamente a la anterior. Este enfoque evita una gran pérdida de funcionalidad durante la reescritura. La ingeniería de software de 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]

Véase también editar

Algunos proyectos que mencionan reescrituras importantes en su historia:

Referencias editar

  1. Spolsky, Joel. «Things You Should Never Do, Part I». Joel on Software. Consultado el 23 de enero de 2015. 
  2. Ronkes Agerbeek, Joost (15 de abril de 2005). «Never Rewrite Code From Scratch». Archivado desde el original el 10 de octubre de 2008. Consultado el 11 de septiembre de 2008. 
  3. Spolsky, Joel (6 de abril de 2000). «Things You Should Never Do». Consultado el 11 de septiembre de 2008. 
  4. Zawinski, Jamie. «Cascade of Attention-Deficit Teenagers». Consultado el 11 de septiembre de 2008. 
  5. Tilly, Ben (29 de septiembre de 2001). «Rewriting, from scratch, a huge code base». Consultado el 11 de septiembre de 2008. 

Enlaces externos editar