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/
