Una aplicación muy extensa comenzó como un sistema basado en Access (para el almacenamiento de bases de datos). Los formularios fueron escritos en VB5 y / o VB6. A medida que .Net se convirtió en un elemento fijo en la comunidad de desarrollo, ciertos módulos se han reescrito. Esto parece muy incómodo y potencialmente costoso solo por mantener debido a las tecnologías cruzadas y el trabajo adicional para mantener las dos tecnologías felices entre sí. Por supuesto, la aplicación usa una mezcla de ODBC OleDb y MySql.
¿Creería que pasar el tiempo y los recursos para volver a desarrollar completamente la aplicación en .Net sería más rentable? En un esfuerzo por desarrollar una aplicación más estable, ¿no tendría sentido usar .Net? ¿O continuar persiguiendo errores de Access, agregando nuevas características en .Net (que pueden o no crear nuevos errores entre .Net y Access), y reescribiendo módulos de Access antiguos en módulos .Net con limitaciones de tiempo que impiden un diseño y desarrollo adecuados?
Actualización La aplicación usa OleDb y MySql. Corrigí mi declaración anterior.
Además, para prestar más apoyo a la reescritura: desde entonces descubrí que cuando comenzó la "transferencia" a .Net, el código VBA / VB6 que existía se tradujo básicamente al equivalente .Net. Según tengo entendido, no se hizo nada para mejorar el rendimiento o aprovechar las nuevas bibliotecas o tecnologías.
En mi opinión, esto crea una aplicación muy frágil e inestable. Con cada nueva actualización, esto se vuelve más y más visible. Como técnico de la mesa de ayuda, he notado un aumento en los problemas reportados. Los clientes que usan el software han notado un aumento en los problemas y están comentando al respecto.
fuente
Respuestas:
Mucha gente desalienta la reescritura de una aplicación desde cero y, a veces, estoy de acuerdo con el razonamiento. Pero la mayoría de las veces encuentro que reescribir la aplicación es la solución menos dolorosa y todo lo escrito en Access debe ser portado a .NET - PERIOD. No me malinterpreten, Access tiene su lugar y puede proporcionar una gran cantidad de funcionalidades a una organización, pero si se convierte en una aplicación completa en la que la gente confía, entonces ha superado a Access.
Probablemente no llevaría mucho tiempo portar el VBA existente a .NET en una conversión uno por uno. Pero esa puede no ser una gran solución si el VBA no es muy bueno para empezar. Un rediseño / reescritura tomará más tiempo para escribir, pero a la larga será mucho más fácil de mantener.
Casi siempre estoy en el campo de reescribirlo desde cero en lo que respecta a Access y no me he arrepentido ni una vez.
fuente
Estoy de acuerdo con el enfoque de refactorización. Es muy probable que este sea un proceso lento que puede tardar muchos meses en completarse, pero al mover una función / sección a la vez tiene grandes ventajas, que incluyen:
Buena suerte
fuente
En general, es una práctica desaconsejada "reescribir" una aplicación desde cero (que es un impulso normal que la mayoría de los programadores sintieron al menos algunas veces en su vida) porque pasará de una aplicación con un conjunto de características conocidas (¡y errores conocidos también!) a una aplicación con probablemente un conjunto de características menores y, lo que es más importante, errores desconocidos. Los usuarios pueden frustrarse, etc.
Probablemente estaría mejor si refactorizara lentamente su aplicación durante un período de tiempo, evolucionando así su arquitectura durante un período de tiempo más largo.
fuente
Un gran desafío que experimenté con una reescritura de esa escala es tener que mantener dos bases de código al mismo tiempo. Si corrige un error en el sistema heredado, debe asegurarse de que la funcionalidad funcione correctamente en el nuevo sistema y viceversa. La actualización de un módulo a la vez minimiza ese dolor de cabeza de mantenimiento.
También sería útil un conjunto completo de pruebas de regresión que se ejecute tanto en los sistemas heredados como en los de reemplazo.
fuente
Estoy de acuerdo con Jas, no reescribas las aplicaciones solo por reescribirlas. Es posible que nunca necesiten ser depurados o mejorados, entonces ¿por qué perder el tiempo? Sin embargo, si siente que hay un cambio dinámico en la experiencia de sus nuevos empleados contratados fuera de Access to .NET, es posible que tenga que migrar antes de que sea demasiado tarde. Eso parece poco probable, pero una posible consideración.
Si bien puede no ser rentable desde el punto de vista del desarrollo, ¿cómo afecta la difusión de diferentes aplicaciones a los usuarios? ¿Requiere más capacitación del usuario? ¿Están cometiendo más errores? ¿Aumenta el número de llamadas de soporte porque no pueden encontrar algo?
fuente
"¿Pensaría que pasar el tiempo y los recursos para volver a desarrollar completamente la aplicación en .Net sería más rentable?"
Esta no es una pregunta que pueda responderse aquí.
Desde la cima de la pirámide de requisitos: alguien tomó una decisión que, con suerte, puede justificar con un plan de negocios. En ese plan de negocios, debe indicar cuántas horas + costos adicionales se necesitan para convertir la aplicación y en ese mismo plan de negocios, los beneficios se expresan también en términos de dinero.
Esa es la manera de hacerlo. Si no hay un plan de negocios para ello. entonces la respuesta es trabajar primero en un plan de negocios rastreable a algunos casos de uso de alto nivel para hacer el análisis de impacto para verificar el inicio del proyecto.
Si el impulsor original de la meta comercial que condujo al cambio ni siquiera se basa en el dinero, entonces esta persona es probablemente la que paga todo, por lo que debe hacerse.
Si no hay un plan de negocios pero "ya está hecho", intente hacer uno y preséntelo a la alta dirección. Incluya casos de uso de alto nivel, costos, horas de rediseño, construcción, costo adicional para operaciones, capacitación nueva para administradores y usuarios finales, gestión de proyectos y riesgos potenciales.
En mi humilde opinión, esta no es una pregunta técnica.
fuente