27 noviembre 2009

GeneXus - Medición y Análisis de Productos



Imagínese que entra en la cabina del piloto de un moderno avión a reacción, y ve que allí hay un único instrumento. ¿qué pensaría usted con respecto a viajar en ese avión?

Pilotear el desarrollo de una aplicación, el apoyo de las herramientas de medición y análisis

Si no se mide lo que se hace, no se puede controlar y si no se puede controlar, no se puede dirigir y si no se puede dirigir no se puede mejorar.

El objetivo de la medición y el análisis es aportar a la empresa herramientas que le ayuden a seguir el camino correcto en búsqueda de su metas y objetivos fijados.

Proceso de medición y análisis

"La medición es el proceso mediante el que se asignan números o símbolos a los atributos de las entidades del mundo real de manera que dichos atributos sean descritos de acuerdo a unas reglas previamente definidas". http://portal.acm.org/citation.cfm?id=580949

El propósito del proceso de medición y análisis es identificar en qué problemas debe enfocarse la empresa, permitiendo definir acciones correctivas, asignando los recursos necesarios que permitan mejorar los procesos. Las mejoras deberán enfocarse en solucionar los problemas de raíz a efectos de mitigar la posibilidad en que los problemas vuelvan a ocurrir.

Las empresas de TI generalmente agrupan las métricas en las siguientes categorías:
  • Producto físico
  • Gestión de Proyectos
  • Desarrollo de Productos
  • Servicios
  • Satisfacción del Cliente
Como mencioné en el título del artículo, me voy a enfocar en los puntos asociados al producto (Producto físico y Desarrollo de Productos)

Las métricas que generalmente se definen sobre las agrupaciones anteriormente mencionadas son las siguientes:

Producto físico
  • Tamaño - Número de componentes, líneas de código, volumen de software, puntos de función
  • Reutilización - Número de componentes llamados más de n veces, número de llamadas, volumen de reutilización, ratio de reutilización
Desarrollo de Productos
  • Documentación - Calidad de la documentación del proyecto, calidad de la documentación de soporte.
  • Calidad de código - Porcentaje de código comentado, complejidad ciclomática, código muerto.
  • Calidad de pruebas - Cobertura de pruebas, densidad de defectos.
Proceso de medición y análisis; modelos de calidad y estándares

Pueden encontrar mucha más información sobre el proceso de medición y análisis en internet, libros y también en estándares y modelos de madurez (calidad) que actualmente son muy difundidos en el sector de TI.

Les menciono un par que se apoyan fuertemente en el proceso de medición y análisis.: CMMI (CMMI-DEV) e ISO/IEC 15504

Si desarrollo mis sistemas con GeneXus... ¿que herramientas tengo para implementar medición y análisis sobre mis productos?

Las herramientas base para implementar herramientas de medición y análisis existen desde hace ya un tiempo (analizando XPW's,XPZ, GXPublic y más recientemente el SDK de GeneXus X+). Sin embargo no logré localizar ninguna implementación 100% enfocada a la medición y análisis.
Con anterioridad les mencioné un poco lo referente a "Análisis estático de código", en donde localicé varias herramientas asociadas al análisis de código, pero nada muy relacionado a la medición, ni tampoco encontré algún método o base sobre la cual implementar este tipo de herramientas.

Proyecto Genoma (CP 2.0)
Infraestructura para implementar tus propias herramientas de medición y análisis (y mucho +) en GeneXus.

"El objetivo principal del proyecto es implementar la infraestructura necesaria que permita a programadores GeneXus (o programadores de extensiones) desarrollar herramientas de medición, análisis y procesamiento sobre la información contenida en las bases de conocimiento GeneXus."

Me imagino un futuro en el cual el desarrollo de sistemas GeneXus se encuentre guiado por herramientas automáticas, herramientas que te permitan tener acceso a un conjunto de reportes de métricas así como ayudar a detectar puntos en donde realizar mejoras, o listar informes de anomalías o "faltas" a las políticas o guías o simplemente un conjunto de informes con los resultados de las actividades de integración, generación, compilación, pruebas o deploy, los cuales podrían ser ejecutados de forma desatendida o automática.

Por el momento es un proyecto para comenzar a experimentar sobre la marcha, comenzando por algo más modesto, la medición (con algo de análisis), claro que sin dejar la puerta abierta a la posibles extensiones sobre la infraestructura planteada. La idea es ir aprendiendo con cada paso todas las nuevas posibilidades brindadas por las herramientas y tecnologías detrás de GeneXus.

Como siempre, se acepta todo tipo de sugerencias y apoyo, la idea de la herramienta es que sea para uso público (Comunidad GeneXus). Nos queda mucho camino por recorrer :-)

Si les interesa conocer sobre el proyecto Genoma, les dejo algunos links relacionados.


Otros Recursos

Quienes quieran conocer más sobre " la cabina de un avión con un único instrumento", les recomiendo leer la introducción del libro "The Balanced Scorecard: Translating streategy into action" de Kaplan y Norton. Pueden leerlo en inglés en Google Books aquí (lamentablemente Google Books no tiene publicada la preview de la edición en español, "Cuadro de mando integral").

Existe una guía en internet que trae un buen resumen sobre medición y análisis. INTECO - Calidad de Software - Guía práctica de medición y análisis.
INTECO (Instituto Nacional de Tecnologías de la Comunicación de España) proporciona un buen catálogo de materiales relacionado a calidad de software. Les recomiendo que vean el listado de guías el cual pueden acceder desde aquí.

Sobre métricas de software, les recomiendo la siguiente presentación: Métricas técnicas de Software es un buen resumen de las métricas más comúnmente utilizadas (No encontré la fuente origen de la misma).
También relacionado a lo mencionado por INTECO y la presentación anterior, les adjunto una presentación en donde presenta "Conceptos básicos, definición y formalización", pueden bajarse la misma desde aquí.

Existe mucho material en internet, pueden encontrar toneladas de información, pero muy pocas "guías prácticas" al respecto, recomiendo lecturas sobre métricas en Wikipedia, libros y pegarle una ojeada a estándares o normas como CMMI e ISO (15504, 9126 y 12.207 entre otros) que generalmente ayudan como guías muy generales sobre el tema (te dicen que cosas tienes que hacer, pero no te dicen exactamente cómo).

No hay comentarios: