Comparacion de Migraciones en .NET y GeneXus.


Leia en Case Study: Migrating a VB6 Large Application to .NET el caso de una migracion de una aplicacion de 950.000 lineas de codigo a .NET de un ERP y dicen (las negritas son agregado mio):


The entire ERP application was migrated in 9 months by 3 developers totaling “3,650 developer-hours to migrate the code, 3,400 hours for code review and refactoring, and 1,300 hours for testing.” The code review was requested because the code would need further development in the future and none of the original developers were available. Total cost: 750,000 Euros, much less than the required one for a customized ERP. The process evolved in phases: when a module was done, it would be integrated with the rest of the VB application until the entire application would have been migrated to .NET.

Siempre me gustan estos articulos donde se detallan numeros pues permiten hacer comparaciones en la vida real dentro de nuestra industria.
Nosotros hicimos (en el 2004) una migración "similar", un ERP un poco mas grande (con algunas lineas mas de código), que estaba en GeneXus Visual FoxPro y lo pasamos a GeneXus Java.

Debimos trabajar bastante en el cambio pues la forma de trabajar en la pantalla con Visual Foxpro era diferente a la de java y algunas reglas se disparaban en diferentes momentos.

En total, trabajamos 14 personas (algunas con baja participación) durante 5 meses, totalizando 2.300 horas (incluyendo testeo y arreglo de errores introducidos en la reprogramacion) y nos costó U$S 23.500 aproximadamente.

La clasificación de las tareas realizadas no son muy comparables, pues son diferentes, pero creo que son ilustrativas. Las nuestras fueron:

Tarea Horas
Programacion 1595
Arreglo de Errores 112
Testeo 420
Reuniones 25
Instalaciones/Documentacion 75
Otras 67
Total 2294


A pesar que nuestra migracion de GeneXus/Visual FoxPro a GeneXus/Java fue un trabajo grande, tanto el costo, como la cantidad de horas y el tiempo que demoro el proyecto es menor al que les llevo a este grupo de desarrolladores europeos. Algo mas a tener en cuenta si se quiere comparar costos de mantener por muchos años aplicaciones de alto mantenimiento.

El caso de estudio esta publicado en el sitio de Microsoft, por si alguien quiere mas detalles.

Comentarios

  1. Muy buena información Enrique.

    Para el caso de la migración de ellos, fue pasar de una misma arquitectura a otra pasando por una actualización de versión del lenguaje de programación (del mismo fabricante).

    Para aquellos que son nuevos en GeneXus, uno de los grandes fuertes es que el conocimiento perdura (lógica de negocio), las arquitecturas y lenguajes en los que se genera pueden cambian con el tiempo.

    En la empresa en donde trabajo pasamos por varias migraciones de una aplicación de miles de programas GX, pasamos desde RPG a VFP, de VFP a Java Win y de Java Win pasamos a Java Web y C# Web.

    Claro que cada migración trajo algún que otro problema, pero todos fáciles de manejar.

    Cambiar de Arquitectura fue lo que nos trajo más problemas, migrar de Win a Web (Formularios -> HTML, Conectado -> Desconectado).

    Con las herramientas adecuadas fue posible reescribir la lógica de los formularios, manteniendo toda la lógica de negocio intacta.

    Migramos en el 2004 una aplicación de más de 15000 programas en unos pocos meses a una versión full Web. Sin Genexus creo que sería imposible (o muy costoso de implementar = a inviable).

    Existe una presentación en donde se habla sobre la experiencia.
    http://www2.gxtechnical.com/portal/hgxpp001.aspx?15,8,8,O,S,0,,1429s

    Me parece excelente Enrique que menciones este tipo de casos, muchas personas miden las cosas en productividad en el lenguaje o en "modas", y no en lo que es el costo en mantenimiento, migración o actualización de tecnología.

    Arriba GeneXus!!!, 20 años demuestran que es posible actualizarse tecnológicamente sin perder el know how y sin tener que reescribir toda la aplicación.

    ResponderEliminar
  2. Solo una puntualización para hacer la comparación un poco más justa, ya que la parte monetaria muestra una diferencia abismal.

    Supongamos que el mayor gasto en estos proyectos es remuneraciones, entonces tenemos que dividiendo el costo del proyecto “tradicional” por las horas nos da como 90 euros la hora.

    Luego multiplico las horas del proyecto nuestro por esos 90 euros y me da como 205000 euros, lo cual sigue siendo una diferencia notable para el proyecto Genexus pero no son 15000 euros tampoco, jejejej.

    ¿Ta bien o le erre a las cuentas?

    Abrazo

    ResponderEliminar
  3. Personalmente no conozco GX, nunca lo he usado, si bien conozco la idea general y varios conocidos trabajan en eso.

    Pero, habiendo aclarado esto, no sé qué tan comparables son ambos proyectos. En su caso, tanto el proyecto original como el nuevo eran proyectos GX.

    Uno pensaría que la herramienta les provee alguna forma de "actualizar" la KB a una versión más nueva y regenerar todo sin tener que tocar una línea de código (esa es la idea de GX después de todo, no?).

    Si GX fuera compatible para atrás, probablemente la migración hubiese requerido 1 persona y el tiempo hubiese sido el tiempo de generación y algo de testeo.

    ResponderEliminar
  4. David:
    Si tuvieras numeros de horas dedicadas a cada tarea y el plazo que llevo la migracion aportaria mucho a como se pueden llevar adelante este tipo de migraciones. Tal como vos decis, las que importan son las migraciones de plataforma y/o arquitectura.

    Gracias por el comentario.

    ResponderEliminar
  5. Andres:
    Como vos decis, los salarios de Alemania y Uruguay tienen una diferencia importante.

    Cuanto mas altos son los salarios, MAS RELEVANTES son las herramientas que te ayuden a bajar la cantidad de horas que te lleva hacer el mantenimiento.

    Por eso es mas comparable la cantidad de horas y el plazo que los montos.

    En los costos que puse, no inclui costos indirectos, ni un ajuste por inflacion desde el 2004 al 2009. Tampoco tengo fechas precisas de cuando hicieron la migracion Vb6 a .NET pero los numeros son tan diferentes, que facilitan la comparacion.

    La cuenta que vos haces, es correcta.

    Gracias por el comentario y saludo a los canguros!!.

    ResponderEliminar
  6. Varrojo:

    GeneXus provee una forma de cambiar de una version a otra sin cambiar una linea de codigo cuando uno cambia de una version a una mas nueva, manteniendose en la misma plataforma.
    A menos de errores, esto funciona correctamente. En las ultimas versiones han habido grandes avances en lograr este objetivo.

    Cuando se cambia de pantalla Visual FoxPro a Java o de Win a Web, hay que reprogramar una parte de la aplicacion, como comento David en el primer comentario.

    Los proyectos que yo quiero comparar, es el de mantener un ERP en un periodo de 20 años, con las actualizacion tecnologicas que se necesiten.

    No es facil conseguir datos de las diferentes formas de trabajo, para proyectos grandes, por lo que trato de usar los que hay disponibles.

    El migrar una aplicacion de Visual Basic 5 a Visual Basic 6, es comparable a pasar de GeneXus 9.0 a GeneXus 10.0 y no tienen mucha gracia y creo que no son los mas problematicos.

    A lo largo de varios años y al ritmo actual del avance tecnologico, mantener un ERP actualizado, exige unos cuantos proyectos de cambios "radicales" y en esos escalones, creo que GeneXus puede hacer la diferencia.

    No pretendo que esto se tome como un verdad que les sirva a todo el mundo. Solo pretendo demostrar lo que nos sirve a nosotros.

    Gracias por el comentario.

    ResponderEliminar
  7. Personalmente creo que si una empresa a pasado de Cobol >> Delphi >> VB >> .NET >> Java o cualquier otra combinación, es que hay algo muy mal. Cuando vamos a desarrollar y estamos mirando a largo plazo, la elección de un ambiente de desarrollo es algo crítico y hay que tomarse bastante tiempo. Esto que digo se ve más que nada a largo plazo. Las empresas petroleras hacen proyecciones de 10, 20,30 y 40 años, si una tecnología no tiene un esperanza de vida mayor a eso --> NO se usa. Tampoco compran productos enlatados (al menos las que conozco) dado que YO me tengo que adaptar a la herramienta (ERP etc) y DEBE ser lo opuesto, la herramienta debe adaptarse a mis necesidades. Creo que el mantenimiento a largo plazo muestra que herramienta es buena para administrar el conocimiento y cual no. De que vale comprar un ERP si el tiempo en que demoro en configurarlo y ponerlo en producción es mayor al tiempo en que me toma desarrollarlo de 0, y obviamente un desarrollo a medida SIEMPRE es más exacto. La única contra que le veo a GeneXus es que esta muy atado a las bases de datos, y a las herramientas de moda (para generar código). Es decir, si quiero generar una aplicación que no tiene bases de datos GeneXus no sirve (al menos según mi conocimiento), es decir, no es independiente es si mismo. Para mi un herramienta debe (para evitar migraciones de acá para allá) ser "auto-contenida" (programada o hecha sobre si misma) y con la posibilidad de integrar "bridges" para otras tecnologías (bases de datos/objetos, XML, web, 3D, UML, etc), pero este es un tema muy opinable.
    No se si en Uruguay hay algún tipo de evento donde las empresas muestran la tecnología con la que trabajan y como la usan, NO para competir quien es mejor, o si C# es mejor GX o Java o Smalltalk o Ruby..., sino simplemente para mostrar como se aplica esa tecnología para resolver problemas en los diferentes dominios, creo que algo así estaría muy bueno.

    Saludos,
    Bruno

    ResponderEliminar
  8. Bruno:
    La diferencia entre diferentes proyectos es enorme. Hay proyectos que hay que lanzarlos en poco tiempo y no tiene porque demorar años, sino meses. Por ejemplo, si diseño un sitio para un lanzamiento o un evento, puede no ser importante considerar los costos de mantenimiento pues después que pase dicho evento, no va a sufrir modificaciones.
    Lo que es util para una empresa petrolera, puede no ser bueno para otro tipo de empresas.

    Mi post, esta enfocado a empresas que manejan sistemas con bases de datos, con alto nivel de mantenimiento y que pretendan mantenerse durante varios años.

    En cuanto a tu comentario sobre los lenguajes, es dificil saber de antemano cual va a ser la tecnologia que va a convenir en el futuro.

    Los que eligieron en su epoca Visual Basic, no creo que pudieran pensar que en algun momento Microsoft lo abandonara y lo cambiara por .NET.

    Los que eligieron MySQL no suponían que iban a terminar dependiendo de Oracle y sus manejos para una base de datos open source.

    La realidad es muy variable y dificil de predecir. Creo que el secreto es ser lo suficientemente adaptable para poder manejar en forma rentable dichos cambios.

    Gracias por el comentario.

    ResponderEliminar
  9. Enrique, interesante post, me gustaría saber un poco más sobre la comparación que haces sobre los tamaños de los proyectos, en particular mencionas que tu proyecto es "un poco más grande" que 950.000 líneas de código, en ese caso te referís a código generado o estás haciendo alguna equivalencia con otra métrica de GX?

    También quiero estas seguro si estamos hablando de java win como destino de la migración, y si en el mismo proyecto se cambió la versión de GX.

    Muchas gracias. Lucas.

    ResponderEliminar
  10. Enrique.

    Busque alguna comparacion sobre la migración de version de Windev. Tiene un costo mucho menor que GX.

    ResponderEliminar
  11. Jose Garrido:
    Solo conozco Windev, por lo que he leido en wikipedia. Para hacer una comparación deberia estudiarlo bastante mas.

    Gracias por el comentario.

    ResponderEliminar
  12. Interesante artículo que descubro ahora gracias BUZZ (Gmail).

    Jose Garrido: Ud. usa WinDev?. Qué Lenguaje usa sino?. Usa GeneXus?

    Saludos,
    gab

    ResponderEliminar
  13. Muy buenos los Post. Estoy por empezar a estudiar por mi cuenta GX. Tengo una pequeña empresa de Soft. Hay algo que me causa mucha curiosidad: Cuanto valen las licencias de GX? Se pagan royalties por los sistema que genera? Desde muchas gracias y saludos desde "La cueva"

    ResponderEliminar
  14. Alvaro:

    Los costos de las licencias de GeneXus no son mi especialidad.
    Pueden variar de un pais a otro, por lo que te recomiendo que te pongas en contacto con algun distribuidor de tu pais y con Artech y que te pasen los precios. En el pasado habia planes especiales para empresas de software que empezaban....

    ResponderEliminar
  15. Alvaro:
    Me olvide de contarte, que no se cobra nada en el runtime, las aplicaciones generadas, son igual que las nativas, solo se paga por las licencias de desarrollo.

    ResponderEliminar

Publicar un comentario

1) Lee el post
2) Poné tu opinión sobre el mismo.
Todos los comentarios serán leidos y la mayoría son publicados.

Entradas más populares de este blog

El Sordo

StackOverflow Documentation

Codigo simple