miércoles, 4 de mayo de 2016

KBSaveReorganization - Nueva Versión

Subí al marketplace una nueva versión de la extensión KBSaveReorganization
Esta extensión permite almacenar un script de la reorg en al KB, como un objeto del tipo File.
Esta versión, tiene ademas la nuevas funcionalidades:


  • Se salvan los programas pare ejecutar la reorg GeneXus en .NET en un directorio
  • Se crean scripts CMD para ejecutar la reorg forzada, otro en forma batch y otro para contar la cantidad de registros de las tablas a reorganizar.
  • Es compatible con Evolution 3. 
  • Ademas de funcionar en el IDE, funciona cuando se reorganiza con MSBUILD task. 


Si alguien la baja y la prueba, me agradaría mucho conocer sus opiniones.

viernes, 29 de abril de 2016

Validando estructura de la base de datos.


Estaba buscando una forma fácil de poder ejecutar en producción una validación de la estructura de la base de datos, para asegurarme que las tablas existen y que tienen todos los atributos de la versión que voy a instalar.

Parece un problema menor o de fácil solución, pero en algunas instalaciones, las reorganización de las tablas no dependen de nosotros o hay mas personas que pueden cambiar la estructura de la base de datos, por lo que tener una forma de chequear que el programa se va a encontrar la base de datos esperada viene muy bien.

Le agregué una opción al KBDoctor que genera varios scripts SQL para hacer algunas validaciones.

La mas simple, recorre todas las tablas de la aplicación y todos los atributos de dicha tabla y genera un script del tipo:

select attClave1, attClave2, attSec1, attSec2, attSec3 from Tabla where 1=0

No se tienen en cuenta los atributos formulas no redundantes e inferidos. De esta forma, si dicho script corre sin errores, existen grandes posibilidades que los programas funcionen sin errores.

domingo, 17 de abril de 2016

Mejorando la calidad del código en una KB de versiones anteriores.

Por la forma en que desarrollamos GeneXus, basados en conocimiento y no en la tecnología de moda, es común que tengamos algunas KB que fueron desarrolladas años atras, que aun sigan funcionando sin problemas.

Esto es una ventaja enorme, pero también nos trae el problema de como hacer para que dicho codigo utilice las nuevas funcionalidades, para facilitar su mantenimiento. 

Pongo un ejemplo concreto:

Parametros con IN:, OUT: e INOUT: 
En versiones viejas de GeneXus, todos los parámetros eran de entrada/salida. En versiones mas recientes, se puede especificar si los parámetros son de entrada o de salida, por lo que se evitan problemas de modificar un parámetro sin querer y queda mas claro que es lo que hace el objeto al tener especificado cuales parámetros son de entrada y cuales de salida. 
Ademas el código generado, es mas compacto, se usa menos memoria, etc. 

Teniendo tantas ventajas, es deseable poder cambiar todo el código viejo y obligar que todos los objetos especifiquen como se utilizan sus parámetros. Esto es mas fácil decirlo que hacerlo. Lo deseable es que todos los objetos nuevos o modificados ya tengan esa funcionalidad, pero permitir los viejos que sigan funcionando como antes, hasta que necesiten alguna modificación. 

Para lograr esto, hice una pequeña extensión (se llama KBDoctorValidator), que lo que hace es controla al salvar el objeto algunas características deseables del mismo e impide salvar si no cumple con los controles mínimos establecidos. 



Tengo esperanzas que con esta extensión el código viejo vaya mejorando poco a poco, a medida que el mismo necesite modificarse. 

Además de controlar que todos los parámetros especifiquen si son de entrada salida, puse algunos controles adicionales, como el nivel máximo de anidamiento, un indice de complejidad (basado en el número ciclomático) y el largo máximo de bloque de código

Espero que con estas simples controles se pueda ir mejorando la calidad del código de objetos viejos a medida que van siendo modificados.

No la voy a liberar aun, pues quiero ver como se comporta en GeneXus Server, como funciona en los import / export de cosas viejas, etc. Es posible que tenga que poner algunas excepciones para que se permita salvar en algunos casos (por ejemplo, controlando la fecha de ultima modificacion, para permitir importar xpz viejos).

Mi idea es poder incorporar en la extensión otros indicadores de calidad de código y también algunas heuristicas para evitar problemas o retrabajos, como puede ser el dejar en default el Contextual Title o Column Title en atributos o la descripción de tablas o grupos de subtipos.

También esta en los planes dar la posibilidad de cambiar los limites para aceptar o no un determinado cambio, de forma de poder hacer la personalización a nivel de toda la KB, de modo que una KB acepte objetos con anidamiento 10 y otra solo con anidamiento 5.



miércoles, 30 de marzo de 2016

Mesa rendonda virtual: Pruebas de aplicaciones GeneXus

Este jueves 31 de Marzo a las 19:00 de Uruguay, estaremos hablando sobre como realizar pruebas (TESTING) en aplicaciones generadas con GeneXus.
Tenemos invitados a Guillermo Skrilec Genexus Consulting y Maria Pilar Albacete de Abstracta.

Las preguntas que intentaremos contestar son :
  1. Cómo define las Pruebas de sistemas?
  2. Cuales son los diferentes tipos de pruebas que existen? 
  3. Cuales son las diferencias de probar aplicaciones GeneXus y otras aplicaciones hechas con otro herramientas?
  4. Que herramientas utilizan para realizar pruebas en aplicaciones GeneXus?
  5. Cuales son las principales dificultades encontradas en proyectos de pruebas? 
  6. Conviene automatizar las pruebas? Porqué?. En que casos?
  7. Que ventajas tiene hacer pruebas en sistemas hechos con Genexus?
  8. Como ve el futuro de las pruebas en sistemas GeneXus? 
  9. Conclusiones
Se podrá ver en el canal youtube del GUG


jueves, 17 de marzo de 2016

Mesa rendonda virtual: Integración Contínua con GeneXus.

Hoy (Jueves 17 de Marzo) a las 19:00 horas de Uruguay, hacemos una mesa redonda virtual para hablar sobre Integración Contínua, que es para definirlo en forma sencilla, es una metodología para integrar el trabajo de varios desarrolladores en forma rápida, que ha dado buenos resultados en algunas empresas y puede servirle a varios.

Trataremos de contestar las siguientes preguntas

Preguntas

  1. Que es la Integración Continua?
  2. Que caracteristicas tiene la integracion continua con Genexus?
  3. Que herramientas utilizan para manejar la integracion continua?
  4. Que dificultades encontraron?
  5. Que ventajas tiene utilizar Integracion Continua en proyectos GeneXus?
Se puede ver aca