jueves, 8 de octubre de 2009

Automatic Pattern Generator, idea para los proyectos colaborativos

Motivación
Una de las cosas que veo que pasa bastante seguido, es que hacemos cosas que resultan repetitivas, pero no lo suficiente como para desarrollar un pattern que las haga más automáticas.

Por ejemplo, ahora estoy trabajando en una aplicación para transferir datos del sistema a la base de datos local de un PDA. Son varias cosas las que hay que transferir, y todos los programas son iguales:
  • una pantalla de selcción con filtros, paginado y un link en la grilla para agregar el elemento a una tabla intermedia que luego va al PDA
  • un web panel para ver los datos agregados
  • un web panel y un procedimiento para agregar los datos
  • un web panel y un procedimiento para borrar algún dato que se agregó.
Ahora lo estoy haciendo a mano, entro a cada uno de los 6 objetos de una de las "instancias", le doy Save as..., le pongo el nombre adecuado y le cambio las partes que son variables.

Es claramente un pattern. Pero entonces, ¿por que no desarrollo uno que se que me va a hacer la vida más fácil? Porque desarrollar un pattern nuevo es muy complicado. Porque el tiempo que me llevaría no justifica la inversión, porque haciéndolo a mano lo hago mucho más rápido para las 4 o 5 instancias que necesito ahora.

La idea
La idea sería entonces hacer una herramienta que tome varias instancias de un pattern (que todavía no existe, en realidad sería de un proyecto de pattern), saque factor común, y genere los XMLs, DKTs y demás cosas que se precisan para crear el pattern.

En el ejemplo anterior, tomaría las 2 o3 "instancias" que ya tengo hechas, cada una compuesta por 6 objetos, le diría a la herramienta como son las correspondencias (que objeto de cada instancia corresponde a que objeto de la otra, se podría hacer con expresiones regulares), y el programa dejaría fijas las cosas que son comunes y pondría como variables las cosas que están distintas.

No es trivial, pero pienso que se puede lograr algo bastante interesante.

El proyecto colaborativo
Como comentaba en otra nota, no tengo tiempo para liderar un proyecto, así que no lo voy a hacer. Si a alguien le interesa presentarlo, me anoto para definir el alcance, la arquitectura y colaborar en el desarrollo.

Entonces, lo que se necesitaría es:
  • Alguien que lidere el proyecto, debería definir el alcance (junto conmigo), las tareas a realizar y coordinar el equipo de desarrollo.
  • Uno o más desarrolladores, porque si bien yo podría participar, no voy a poder hacer todo el desarrollo.
  • Uno o más beta testers.
Si a alguien le interesa, le ve potencial, le parece que es factible, y quiere participar, que me avise. Así vemos si el proyecto es viable o no.

3 comentarios:

  1. Marcos: Ya lo sabes pues lo hablamos en persona, pero igual lo comento. Me resulta una buena idea.
    Estaria bueno que pudiera tomar solo un objeto y pudiera generar un definicion de patron para generarlo, dejando las cosas que dependan de los objetos.

    ResponderEliminar
  2. Marcos,
    Me parece excelente idea.
    Yo tampoco puedo liderar un proyecto de esa naturaleza, debido a mi falta de conocimiento en desarrollo de Patterns. Pero me parece muy buena idea. La ingeniería reversa siempre me ha interado.

    Saludos,
    gab

    ResponderEliminar
  3. parabéns, excelente idéia, eu ajudo

    ResponderEliminar