Hola gente!

Como saben, soy un entusiasta de la generacion de codigo. Tambien sobre la 
generacion de artefactos cualesquiera, desde un modelo libre. Lo importante es 
partir de un modelo (que pueda alimentarse desde varias fuentes o manualmente), 
pero libre. Asi podran expresar en ese modelo todo lo que necesitan describir 
del sistema que modelan. Y luego, en modelos, plantillas y tareas separadas, 
adosarle los temas tecnologicos (lenguaje (.NET, Java, PHP, lo que sea....), 
patrones, interfaces de usuario, estilos arquitectonicos, base de datos, 
transporte (Web Services, WCF, Remoting, RMI), framework (Struts, Spring, ...), 
servidores (Tomcat, JBoss....) ....) que no son parte del sistema. Como 
siempre, pueden ver algunas opiniones y trabajos mios en el proyecto AjGenesis 
desde

http://msmvps.com/blogs/lopez/archive/tags/AjGenesis/default.aspx

Pero hoy queria comentar que el bueno de Jonathan Cisneros ha escrito Genesis 
Studio, una IDE para ese proyecto. Pueden ver mas detalles en:

http://msmvps.com/blogs/lopez/archive/2007/12/24/genesis-studio-una-ide-para-ajgenesis.aspx
http://ajlopez.wordpress.com/2007/12/24/genesis-studio-an-ide-for-ajgenesis/

Hay una lista en espaniol sobre generacion de codigo en:

http://groups.google.com/group/codegeneration

Nos leemos!

Angel "Java" Lopez
http://www.ajlopez.com/

  ----- Original Message ----- 
  From: Angel "Java" Lopez 
  To: [email protected] 
  Sent: Friday, August 03, 2007 10:39 AM
  Subject: [puntonet] Sobre generacion de codigo


  Hola gente!

  Hola Esteban!

   

  Gracias por tu comentario, me alegra que disfrutaras del post. Jeje. me costo 
mis horas escribirlo, y un cuarto de siglo pergueniarlo. :-)

   

  Ciertamente, la generación de código es para lo standard. Lo que es standard, 
dependerá de la situación de cada uno.

   

  En los artículos con ejemplos que están al final del post, hay ejemplos que 
generan justamente lo que mencionas:

  -          Procedimientos almacenados

  -          Mapeadores de datos, DAOs, o Gateways

  -          Entidades, con relaciones o no

  -          Capa de servicios

  -          Algun ejemplo genera algo de web services, o entidades para 
remoting

  -          En un ejemplo no publicado, lo uso para generar Value Objects, que 
viajan a una capa "remota", sin exponer las entidades

  -          ABMs básicos, con navegación por el modelo

   

  Pero lo standard es lo que uno quiera o necesite. Podria imaginar un modelo 
que especifique los pasos de un workflow (sin la lógica de negocios explicita), 
y luego generar código para distintos sistemas de workflows. Lo mismo con lo de 
arriba. Cuando uno tiene que aprender una tecnología (digamos estamos en 
ASP.NET, y en el cliente nos piden JSP, porque "todo es Java", y es 
"multiplataforma"), resolverá lo standard, nuevamente,  una vez, y luego lo 
abstrae para que el generador de código genere lo que necesitemos.

   

  Asi planteado, podría enumerar:

   

  -          Tenemos problemas a resolver en desarrollo de sistemas (como hacer 
un sistema de consorcios, validaciones, seguridad, adopción o no de patrones, 
acceso a datos, exposición de datos remotos, etc..)

  -          Tenemos una tecnología (digamos, somos especialistas en .NET 2.x)

  -          Resolvemos un sistema, con los problemas iniciales, y la 
tecnología que nos toca

  -          Cuando vamos a resolver otro sistema, gran parte de la solución 
que encontramos (ya sea en capas, ya sea con EntLib, ya sea que escribimos todo 
a mano en el Click del botón del formulario), podemos encararla automáticamente

  -          Debemos armar un modelo de lo que varia de sistema a sistema (por 
ejemplo, en los ejemplos que muestro, las entidades de negocio, podrían ser los 
formularios, las encuestas de un CRM, los mensajes en un sistema distribuido, 
etc), y luego, generar los artefactos de tecnología según lo que ya sabemos que 
nos sirvió. O sea, tenemos

  o   S1: solución concreta en Tecnologia T1

  o   M1: modelo de lo que sabemos que varia de sistema S1 a Sn

  o   GC1: templates que generen de M1 gran parte de S1

  o   M2: modelo del sistema S2

  o   Aplicamos GC1 (los mismos templates) y se genera gran parte del sistema S2

  Recalco lo de gran parte: por mas que sea solo alguna de los artefactos de 
mas arriba, en el peso de código, es "un moton". Antes, cuanto tenia que 
preparar algo, me pasaba horas para generar lo mas simple, repetitivo, y menos 
importante. Ahora aprovecho ese tiempo para realmente concentrarme en lo 
importante.

  -          Cuando cambia la tecnología (ya sea que tengo que dar otro curso, 
o Uds. Tienen un nuevo cliente), se solucionan los problemas que encaramos en 
la S1, para generar un S1b en, digamos JSP. Una vez estabilizado, generamos los 
templates GC1b para aplicar

  o   M1 + GC1b = gran parte de S1b

  o   Mn + GC1b = gran parte de Snb

   

  Y voila.

   

  Es decir:

   

  La generación de código nos pone en claro, los problemas iniciales, el modelo 
que independiente de la tecnología, la solución que encontramos a los problemas 
usando la tecnología T1, y nos permite, luego, generar gran parte de los 
sistemas nuevos, en la tecnología T1, y adaptarnos, tener claro, estar "aware" 
del camino a recorrer, cuando pasamos a la tecnología T2.

   

  La tecnología siempre cambia, la forma de solucionar los problemas, puede 
depender de nosotros, del departamento de IT, de la consultora, los tipos de 
sistemas también, no hay una sola forma de hacer las cosas.. Y la generación de 
código (con atributos como modelo libre, genero lo que yo quiero y demás), nos 
permite encarar todo ese cambio, y elevar la abstracción.

   

  O sea: nos ayuda a resolver "la tarea compleja" del cambio.

   

  Nos leemos!

   

  Angel "Java" Lopez

  http://www.ajlopez.com/

   

  From: [email protected] [mailto:[EMAIL PROTECTED] On Behalf Of Esteban A. 
Zibecchi (MUG)
  Sent: viernes, 03 de agosto de 2007 09:55 a.m.
  To: [email protected]
  Subject: [puntonet] Sobre generacion de codigo

   

  Que lindo mail Angel, realmente lo disfruté mucho.....




Responder a