domingo, mayo 15, 2005

Día 1 : Perseo

Armado el ambiente (o por lo menos la base de este), ya estamos en condiciones de escribir un poco de código. Aunque he leido bastante código en C# no he programado mucho, y cuando lo he hecho ha sido con la ayuda de herramientas como VS.NET, por ende no está mal hacer un poco de "ejercicio" de programación.

Primero, no quiero seguir usando Notepad++, asi que debo bajar #Develop. Tenía el release candidate 3, pero ya hay versiones más nuevas, asi que por el momento está bajando.

Mientras veamos un poco el alcance del proyecto.

En primer lugar, todos lo que lo han tratado de hacer, entienden que portar una aplicación de VB 6 a VB.NET es una tarea que puede ser titánica, en particular cuando el desarrollo de esta nunca tuvo como elemento de diseño el pasar de un ambiente a otro.

Veamos el caso ideal, imaginemos que tenemos una aplicación de 40.000 a 60.000 líneas (por decir un número interesante), que se ha hecho con cuidado, que cuenta con test de unidad (existen incluso para VB 6.0).

Pues bien, es posible utilizar el Wizard de VS.NET, generar la nueva aplicación y ejecutar los tests, si resultan ok, estamos al otro lado, nuestra aplicación fue llevada a .NET sin mayores trastornos.

Obviamente ese caso ideal es el que menos ocurre, lo normal es encontrar aplicaciones que no han utilizado VB 6.0 de forma muy correcta (partiendo por aplicaciones que no usan Option Explicit o que utilizan excesivamente el tipo de dato Variant), que no tienen test de unidad ni de integración, en que el código SQL (pues mal que mal la mayoría de las aplicaciones con las que uno trabaja operan contra alguna base de datos) está incluido en el código, como concatenación de strings.

Estas aplicaciones por lo general son aplicaciones de "negocio", desarrolladas por programadores cuyo fin último no es tener una herramienta depurada como producto, sino más bien cumplir con ciertos plazos y entregar al cliente una respuesta que "funcione".

Estas aplicaciones, normalmente, tienen múltiples versiones (a veces liberaciones semanales o aún más frecuentes), que sufren cambios continuos, que no están bien documentadas y en que es dificil "congelar" una versión para portar.

Un punto intermedio son aplicaciones construidas de la misma forma pero que sus requerimientos se han estabilizado y sólo se está trabajando en soporte a bugs ocasionales.

En estos casos no es raro encontrar aplicaciones intensivas en el uso de formularios, con algunos módulos y rarísimas clases (si es que no son simplemente sin clases), en que nada está encapsulado.

¿Qué hacer en estos casos? Bueno, lo más simple, comerse el elefante por partes ;-), ir realizando cambios parciales y ordenados, con el objetivo de ir progresivamente llevando la aplicación de una versión "desordenada" y "poco portable" a lo más cercano a la versión ideal.

Luego, la idea es simple, ir armando herramientas para facilitar la tarea, por eso, como nombre de batalla de este proyecto elegí el de NPerseo, N por .NET y Perseo por el heroe griego que mató a Medusa.

Ahora, la aplicación práctica será inmediata, tenemos un universo de aplicaciones, que suman alrededor de 600.000 líneas de código que debe irse migrando (y que ya están en proceso).

Han sido desarrolladas por diferentes personas, siguiendo diferentes enfoques y están en diferentes niveles de estabilidad.

#Develop terminó de cargarse. Vamos a comenzar con el armado de las clases básicas.

No hay comentarios.: