Brian - mis simpatías, parece que usted ha tomado más de una de mis antiguos clientes. Perdón por el desastre que te dejé, pero traté de limpiar las cosas antes de que el cliente se quedara sin dinero.
En serio, tenía un cliente con más de 25 aplicaciones en un lío similar: después de dos años, aproximadamente la mitad de ellas han sido revisadas, y las 5 mejores se han limpiado un poco.
No menciona el tamaño del equipo, pero superar la reticencia a cambiar las cosas puede hacer que sea imposible hacer algo. Si ese es el caso, aléjese; no hay nada más frustrante que volver a escribir algo solo para descubrir que sus otros desarrolladores están saboteando sus esfuerzos al no estar a bordo.
Suponiendo que tiene soporte, puede ver cómo resolver esto desde una perspectiva descendente o ascendente.
Lo primero que hay que hacer es poner en marcha alguna estructura: poner todo el lío en un sistema de versiones, para que al menos pueda rastrear lo que está haciendo y retroceder si es necesario. Configure un entorno de prueba separado para que pueda probar cosas sin afectar el desarrollo en curso y la capacidad de admitir el sistema.
Si se está acercando a esto desde una perspectiva descendente, querrá comenzar por limpiar los elementos de la interfaz de usuario: quitar todo el CSS incrustado, limpiar & racionalizarlo. Inventario de páginas, dependencias, etc. (esto solo puede llevar algo de tiempo, especialmente con ASP clásico).Identifique bloques de código repetidos y considere moverlos a controles de usuario compartidos. Vea si puede mapear los componentes de la interfaz de usuario en elementos de la base de datos.
Analice los registros de acceso para encontrar lo que se está utilizando y, con un poco de suerte, identifique el código que ya no se necesita. Probablemente también encuentre una serie de errores; estos pueden ser realmente útiles para comprender el sistema. Probablemente descubrirá que un pequeño subconjunto de la aplicación se usa con más frecuencia; ese es un buen lugar para buscar una victoria temprana más fácil.
Crea un conjunto de archivos CSS pequeños y limpios, y crea algunas páginas maestras que puedes usar para estandarizar la apariencia &. Tendrá que volver a escribir las páginas asp, pero es posible que pueda actualizar las páginas webforms para usar las nuevas páginas maestras más fácilmente.
El objetivo de este enfoque no es corregir demasiado, sino comprender la estructura e imponer cierta organización en ella. La baja tecnología puede ayudar: imprimir cada página en las aplicaciones más comunes y pegarlas en una pared. Ver todo lo expuesto así puede ser de gran ayuda.
El enfoque ascendente comienza en el archivo db: inventar todas sus tablas & procs almacenados. Vea si puede averiguar dónde se usa cada uno de los &. Puede pensar que no se usa algo, pero realmente la única forma de saberlo con certeza es eliminar el objeto de la base de datos (o cambiarle el nombre) y hacer pruebas. (Sí, he visto código que construye dinámicamente nombres de tabla en base a la entrada del usuario -. Ninguna herramienta de análisis va a ayudar con eso)
Una vez que obtenga una mejor idea de las dependencias entre las diferentes partes, puede empezar planeando cómo hacer gradualmente las correcciones. Si puede aislar diferentes subsistemas, considere realizar una migración a un nuevo esquema/conjunto de tablas y crear una capa de acceso a datos adecuada. Puede considerar la incorporación de pruebas unitarias en este momento, pero, sinceramente, tendrá suficientes problemas en sus manos, y esto podría terminar siendo un obstáculo para las personas que no están familiarizadas con él: aprenda a caminar antes de intentar volar.
Si no puede separar por completo las piezas, considere seguir realizando la migración, pero vea si puede colocar vistas o nuevos sprocs como su capa de fachada hasta que se pueda volver a escribir el código.
Hay una serie de libros que tratan sobre reingeniería de sistemas legados, no estoy seguro de que ninguno de ellos vaya a manejar esta situación, pero no estaría de más revisar la literatura para obtener consejos adicionales.
¡Buena suerte, y no olvides mantener el currículum actualizado!
¿Los ha visto para consejos generales? - http://stackoverflow.com/questions/144734/when-is-it-good-if-ever-to-scrap-production-code-and-start-over - http://stackoverflow.com/questions/21857/when-do-you-know-its-time-to-rewrite-an-application Contienen enlaces que son útiles también, incluyendo 'Cosas que nunca debes hacer', que es un clásico. (Déjame pensar en tu caso específico mientras repasa las respuestas generales). Editar: a esa respuesta probablemente le gustará el 'One True System' en el lateral. Comience delgado. – Tobiasopdenbrouw
"No hay problema tan grande o tan complicado que no se pueda escapar de" - "Linus" de Charles Schultz (creo) – msw
@msw - brilliant – Orbit