Hace un tiempo, escribí:
Code Generation with AjGenesis in a Real Project
Generación de código en un proyecto real
En ese proyecto real, apliqué lo que puedo llamar “ajgenetizar” una aplicación. ¿Qué significa esto?
La idea básica es:
– Comenzar escribir una aplicación que funciona, que reseulva los problemas técnicos, como persistencia, validaciones, seguridad, distribución de la lógica, presentación, etc… como para tener un punto de partida sólido.
– Comenzar a descubrir las partes repetitivas: archivos de configuración, archivos de proyectos, directorios, clases de acceso a datos, clases de lógica, clases de dominio, otros archivos de texto,…
– Extraer un modelo inicial: puede ser, descripción de las entidades, algunos parámetros técnicos como la base de datos a usar, etc..
– Escribir tareas y templates para generar una aplicación similar, automáticamente.
– Especificar claramente, cuáles de esos artefactos de texto
– son regenerados cada vez que el modelo cambia
– son generados una vez, y etnonces, evolucionan manualmente
– son creados manualmente
– Alterar el modelo, y regenerar: todo debería seguir trabajando.
– Escribir otro modelo, para producir otra aplicación, pero reusando el conocimiento adquirido (sobre la lógica de implementación, patrones, tecnología usada).
– Otra “prueba ácida”: cambiar una de las tecnologías que se usaron (de acceso a datos directo a ORM, de validación en código a un framework de validación, agregar un contenedor de Inversion of Control, etc…), y probar la nueva aplicación
Podría comenzar a escribir una serie de posts, adoptando este camino. Pero pienso que se necesita un camino más tipo “tutorial”, para el estado actual del proyecto AjGenesis (poca documentación, pocos posts y bloggers en el tema, pocos ejemplos explicados…). El camino que seguiré es: comenzar con un modelo mínimo, generar unos pocos archivos, y entonces, iterar, para refinar el modelo y el alcance de lo generado, comentando en detalle las decisiones tomadas, publicando el código de cada avance.
Nos leemos!
Angel “Java” Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez