He pasado por un proyecto que hizo exactamente lo que está describiendo con aproximadamente la misma base de código de tamaño. Inicialmente, estaba completamente a bordo con la reescritura. Terminó tomando más de 3 años y casi se convirtió en una marcha de la muerte. En general, ahora estoy de acuerdo mucho más con los incrementalistas.
Sin embargo, basándonos en nuestra experiencia, diré que tal reescritura (especialmente si puede reutilizar algún código de lógica de negocio C++ en .NET), no es tan técnicamente peligrosa como pueda parecer. Sin embargo,, ¡puede ser muy peligroso socialmente!
En primer lugar, debe asegurarse de que todo el mundo entienda que lo que está haciendo inicialmente es una "reescritura" (o "nueva versión"), no una actualización o "reinvención". El Psycho de 1998 fue una nueva versión de 1960 original. El 2003 Battlestar Galactica fue una reinvención del original de 1978. ¿Ver la diferencia?
En nuestro caso, el plan inicial era recrear el producto existente en .NET. Eso no habría sido técnicamente desalentador, ya que entendimos bien el original. Sin embargo, en la práctica, el impulso de agregar, corregir y mejorar solo unas pocas cosas resultó irresistible y, en última instancia, agregó 2-3 años a la línea de tiempo.
En segundo lugar, debe asegurarse de que todos, desde los ejecutivos hasta el personal de ventas y los usuarios finales, estén de acuerdo con que su producto actual permanezca inalterado durante el desarrollo de la nueva versión. Si su mercado se está moviendo de tal manera que no podrá mantener su negocio durante ese período, entonces no lo haga.
Así que los principales obstáculos para nosotros resultaron ser sociales, en lugar de técnicos. Los usuarios y los intereses comerciales se frustraron mucho con la falta de progreso visible. Todos se sintieron obligados a impulsar sus propias mejoras y características propias, por lo que nuestro producto final tenía solo un parecido superficial con el original. Definitivamente fue una reinvención en lugar de un remake.
Al final, parece que nos ha ido bien, pero fue una verdadera rutina, y no es algo que elegiríamos hacer de nuevo. Nos quemamos con mucha buena voluntad y paciencia (tanto interna como externa), que en gran medida se podrían haber evitado con un enfoque gradual.
Tengo mucha curiosidad por las respuestas a esta, ya que estoy en una situación similar. –
como yo, aunque en mi caso, se está moviendo de las bibliotecas propietarias de tiempo de ejecución innecesarias que codificamos en la vía C (no ++) – Firoso
Depende del "Por qué" lo está haciendo. ¿Por qué romper algo que funciona? Sugeriría que no lo hagas a menos que tengas una buena razón. No tengo experiencia en la conversión de una aplicación grande como esta, pero me da miedo ;-) – Shoban