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.

 

Mi experiencia es un poco más limitada pero si bien uso el CodeSmith desde
hace un par de años no pude encontrarle la vuelta - ni la necesidad - de
utilizar un generador de código más que para lo standard

    * Stored Procedures

    * DataMappers

    * Entidades

    * Servicios

    * ABMs básicos.

Para el resto de las partes del sistema normalmente lo más dificil es el
diseño y luego el código no es tan repetitivo. Angel, vos estas usando el
AJGenesis para tareas más complejas?

 

Saludos

Esteban

 

  _____  

From: [email protected] [mailto:[EMAIL PROTECTED] On Behalf Of Angel
"Java" Lopez
Sent: Jueves, 02 de Agosto de 2007 07:42
To: [email protected]
Cc: [EMAIL PROTECTED]
Subject: [puntonet] Sobre generacion de codigo

Hola gente!

 

En varias charlas comente lo que pongo en este post:

 

http://msmvps.com/blogs/lopez/archive/2007/08/02/sobre-la-generaci-243-n-de-
c-243-digo.aspx

 

Disculpen la longitud, pero me parecio importante poner en claro algunas
posturas mias. Espero que se entienda, y que sirva para algo, no tanto para
estar de acuerdo, como para poner en perspectiva el problema y una posible
solucion.

 

Hace unas semanas, Daniel Calvin tenia una duda sobre modelo, que planteo
creo en la lista de arquitectura. No pude contestar ahi o personalmente. De
alguna forma, algo de la respuesta, no muy clara, esta en el post de arriba.

 

Oscar Onorato habia tambien preguntado sobre generacion de codigo. Para que
quede claro a lo que voy con generacion de codigo, escribi ese texto.

 

No tienen que venir a ninguna charla mia, ni a ningun curso. Solo tienen que
leer ese articulo, y es gran parte de lo que digo o en una hora o en 6
clases. Todos los cursos terminan o usan esa postura.

 

Aprovecho a agradecer a Marcelo Fassi, que en la lista de arquitectura,
menciono al AjGenesis. Marcelo tambien ha colaborado con ideas y codigo, que
todavia tengo que incorporar. Marcelo y sus companieros lo usan al parecer
bastante. Gracias Marcelo!

 

Disculpen que envie el mensaje a dos listas, pero no veo como llegar a estos
dos grupos (en general un tema planteado en una lista, no se trata en la
otra). Lo hubiera enviado a la lista vb.net y C#, pero me parecio demasiado.

 

Ese "post" es parte de la iniciativa:

http://msmvps.com/blogs/lopez/archive/2007/07/28/a-post-a-day-keeps-the-doct
or-away.aspx

cumpliendo con

http://ajlopez.zoomblog.com/archivo/2007/07/22/lo-que-no-esta-escrito-no-exi
ste.html

 

Nos leemos!

 

Angel "Java" Lopez

http://www.ajlopez.com/

 

 

Responder a