Proyecto Genoma (CP 2.0)
Extensión que permitirá implementar herramientas de análisis y procesamiento sobre KB's GeneXus en lenguaje GeneXus.
Objetivos
El objetivo principal del proyecto es implementar la infraestructura necesaria que permite a programadores GeneXus (o programadores de extensiones) desarrollar herramientas de análisis y procesamiento sobre la información contenida en las bases de conocimiento GeneXus.
Visión del proyecto
El proyecto posee dos visiones diferentes, la visión infraestructura y la visión práctica.
Infraestructura
A continuación se listarán algunos elementos que serán necesarios para lograr los objetivos principales.
El objetivo a futuro es que los programadores tendrán la infraestructura necesaria para enfocarse en la tarea a realizar (procesamiento o análisis), sin que los mismos tengan que perder tiempo en crear ellos mismos toda la infraestructura necesaria para ejecutar sus desarrollos.
La visión de implementación es la siguiente:
- Implementar un sitio web (servidor) que brinde el acceso a toda la información resultante del análisis y procesamiento (GenomaServer).
- Implementar servicio de procesamiento (GenomaBrain), en donde ejecutarán los programas de análisis y procesamiento desarrollados en GeneXus.
- Implementar la infraestructura necesario que permita desarrollar programas de procesamiento y análisis, programando en GeneXus (GenomaGX).
- Implementar la infraestructura necesaria que permita a los programas almacenar información para luego ser visualizada en GenomaServer (GenomaRepo)
- Implementar la infraestructura necesaria que permita el deploy de las extensiones desarrolladas con el framework GenomaGX a GenomaBrain (GenomaExtensions)
- Implementar los controles de visualización necesarios para permitir la visualización de la información recabada en GenomaRepo, a ser usados en GenomaServer
Casos Prácticos
A efectos de darle valor a la infraestructura creada, se implementarán un conjunto de analizadores (análisis estático de código), los cuales se enfocarán principalmente en la detección de complejidad en los programas desarrollados con GeneXus.
La complejidad se encuentra fuertemente relacionada a conceptos como usabilidad, mantenimiento y testeabilidad.
Por lo tanto, cuando menos complejidad en los componentes de nuestro sistema lograremos tener un sistema con las siguientes características
- Más simple de mantener
- Componentes más fáciles de testear
- Procesos más fáciles de usar.
Por el momento, solamente se evaluán implementar las siguientes extensiones (intentar cumplir en lo posible con los tiempos para el CP).
GenomaExtensions:
Métricas de bajo nivel
Líneas de Código : (ver variaciones posibles)
Métricas alto nivel (Compuestas por otras métricas)
Métricas a investigar
Complejidad en diseño de formulario (Layout Complexity)
Genoma User Controls:
GenomaTreeMap
Control que permitirá visualizar la información almacenada en GenomaRepo, permitiendo cruzar la información de las diferentes métricas.
GenomaColorPicker
Control que permite de forma visual seleccionar un color desde una paleta de colores. Será utilizado a efectos de permitir configurar los diferentes colores a ser utilizados en los controles de visualización del proyecto (como GenomaTreeMap y otros).
Información: Pendiente
GenomaCharts (in development)
Control que será utilizado en la implementación del Dashboard para Genoma.
El dashboard mostrará la evolución de las diferentes métricas, intentando permitir visualizar en un único pantallazo el estado de nuestra base de conocimiento (en base a las métricas que creamos que son importantes a controlar)
Futuro de Genoma (Roadmap más allá del CP 2.0)
La idea es que Genoma no muera al finalizar el CP 2.0!!!
La idea detrás de Genoma es que toda la comunidad pueda dar su aporte y se vea beneficiada con el uso de Genoma y los aportes realizados por otros.
Finalizado el proyecto, se seguirá con el desarrollo del proyecto hasta lograr llegar a brindar a la comunidad las siguientes herramientas:
GenomaBrain y GenomaServer para GeneXusSever público.
Todas las KB's hosteadas en el GeneXusServer público se verán beneficiadas a todas la información de análisis proporcionada por el proyecto Genoma.
Se podrán gestionar cuales GenomaExtensions correrán en GenomaBrain para cada KB hosteada, teniendo a disposición todas las GenomaExtensions implementadas para el proyecto Genoma y todas aquellas implementadas por la propia comunidad.
KB de GenomaExtensions hosteada en GeneXus Server público
En la misma se tendrá acceso a una KB, la cual tendrá todas las GenomaExtensions implementadas para uso público.
Controles de Usuario implementados para uso público
La comunidad tendrá acceso al uso de los user control creados, así como todos los código fuentes con los cuales fueron constituidos (Actionscript, javascript, etc...)
La idea es que la comunidad siga ampliando el funcionamiento de los mismos, creando nuevas variantes o extendiendo su funcionalidad inicial.
Podrán ser utilizados en proyectos de terceros (tipo de licenciamiento aún no definido).
Posiblemente se trabaje en un futuro en la implementación de mecanismos que permitan a terceros incorporar dentro de Genoma sus propios controles de visualización (CP 3.0?)
Deploy de GenomaExtensions a GenomaBrain hosteadas en GeneXusServer
Desde GenomaServer será posible hacer deploy de las GenomaExtensions a GenomaBrain.
En principio esta característica será de uso exclusivo para unos pocos, ya que cada extensión debe de ser evaluada (evaluar problemas de performance o seguridad, a futuro una GenomaExtension podría hacer el trabajo automáticamente).
Desde GenomaServer se publicarán las GenomaExtensiones, luego GenomaBrain se encargará de generar, compilar y realizar el deploy de esas extensiones a su propio repositorio de GenomaBrain.
GenomaServer como extensión dentro de GeneXusServer
La idea es que todo se encuentre integrado a futuro, cuando GenexusServer brinde las herramientas necesarias para permitir integración, se verá de implementar una extensión GeneXusServer para que sea posible instalar GenomaServer en GeneXusServer (Para GeneXusServer público y privado).
Todos los fuentes y binarios del proyecto Genoma a disposición de toda la comunidad
GenomaServer y GenomaBrain en sus propios servidores.
Acceso a todas las GenomaExtensions implementadas como uso público en GXServer público de la comunidad.
Acceso a framework GenomaGX para implementarse sus propias GenomaExtensions
NOTA: Aún no existe aprobación por parte de Artech, con respecto a permitir correr GenomaServer y GenomaBrain en los servidores públicos de Artech (con acceso a KB's públicas), el texto anteriormente mencionado representa una intención, éstos temas están siendo tratados con Artech a efectos de ver "la forma" o "la posibilidad" de que los mismos sean posibles de implementación.
Miembros
Como podrán ver, se requiere de mucha colaboración para poder lograr este proyecto colaborativo.
Se acepta todo tipo de colaboración, programadores GX, Artech, desarrolladores de extensiones y user controls.
Lista de miembros
Links
Blog de David Giordano
Wiki de proyecto Genoma en Assembla
Temas relacionados en Wiki GXTechnical
Historia
13/04/2010 - Se encuentra público la versión de los programas de la KB de ejemplo en Samples.GeneXus.com
13/04/2010 - Se publica KB con ejemplo de uso de GenomaColorPicker y GenomaTreeMap
13/04/2010 - Se liberan arreglos menores para GenomaTreeMap y GenomaColorPicker
12/04/2010 - Trabajando en KB para publicar en GXServer Public, para luego publicar la misma en samples.genexus.com. Ejemplos de GenomaColorPicker y GenomaTreeMap
10/04/2010 - Se mejora implementaciónde GenomaColorPicker, terminando de construir User Control GeneXus
09/04/2010 - David crea página personal en Facebook para tratar temas relacionados con el proyecto Genoma - Página en Facebook
http://bit.ly/aCQt1m
08/04/2010 - Primera implementación de User Control en Genexus, GenomaColorPicker (comming soon!!)
Se incorporan estos mismos de forma de ejemplos dentro del export proporcionado en el User Control
El ejemplo de GXWiki 3.0 como archivo JSON y el ejemplo de GXOpen Projects mediante DataProvider con salida a JSON.
Dic 09 / Ene 10 - Mejoras internas a GenomaTreeMap (Soporte de alta carga, pantalla completa, doble escala...)
30/11/2009 - Primeras pruebas con GenomaTreeMap (Implementación ActionScript/Flash)
02/11/2009 - Creación del grupo de discucción en GoogleGroups
01/11/2009 - Se publica información del proyecto en Wiki de Artech
29/10/2009 - Creación del documento presentación de GenomaGX
Ficha