sábado
feb232008
¿Cómo es tu proceso de desarrollo?
sábado, febrero 23, 2008 at 12:01PM
Por darle un poco un cambio a las noticias y hacer una un poco más participativa, gracias a una charla que tuve hace poco con un amigo, se me ocurrió plantear esta pregunta para compartir entre nosotros nuestros procedimientos y ver si podemos aprender unos de otros.
El tema es, como dice el título "¿Cómo es tu proceso de desarrollo?" Con esto me refiero a explicar que creas tu modelo en Hibernate y con X plugin te crea la BDD, luego usas Y para generar codigo, lo empaquetas todo en un rar y el IDE te lo despliega solo en Z app. server... esas cosas.
Ojo, la idea es mostrar como lo hace cada uno y si se puede, razonado, no una competición de egos de yo lo hago mejor y lo tuyo es un asco. Los comentarios que vayan por ahi durarán lo que tarde en verlos.
En mi caso, normalmente del mini-analisis que me dan, a veces puedo hablar yo mismo con los futuros usuarios y hacer algo más serio, a veces no, empiezo haciendo una maqueta HTML y modelando la BDD relacional o estudiandola si ya existe. Si la BDD es nueva, suelo hacerme el esquema en HSQLDB para desarrollar en local sin problemas, antes de pedir, en caso necesario, que me monten todo el sarao en las "BDD corporativas".
Voy refinando la interfaz con el usuario, todo lo que puedo cuando hay un usuario definido y si no entre nosotros, que remedio. Para eso la Web Developer Extension y el FireFox van de coña, puediendo cambiar CSS "on-the-fly".
Del modelo relacional tenermos unas utilidades que te generan clases Hibernate y utilidades para leer los parametros del request, generar XML a partir de las clases, etc. Si la BDD ya existe o no se adapta bien a un modelo OO, entonces desde hace poco tiro por scripts Groovy, que más adelante puedo compilar o cambiar por clases con JDBC puro. A veces tambien puede tocar hacer la logica en PLSQL si se comparte con otros modulos en ese lenguaje.
Al mismo tiempo que desarollo la lógica usando las clases o los scripts, la maqueta HTML se transforma en la capa de vista, usando FreeMarker o XSLT.
El desarrollo lo hago sin poner mis clases en .war o .jar, ya que usando Java 6 así apenas tengo que re-iniciar el contexto, lo cual me permite ganar mucho tiempo que se pierde con el servidor de aplicaciones p'arriba, p'abajo... con Java 6 y todo desplegado, las clases se recargan solas en muchos casos y si no el contexto reinicia solo, todo lo demas es actualizable en ejecución, la vista, la configuración del framework, WebLEAF,... así que reinicios del contexto, cuando las clases ya estan creadas, pocos.
Además, el servidor de aplicaciones, Resin, lo ejecuto fuera del IDE, Eclipse, para que no interfieran y se vuelvan más pesados. Las aplicaciones se compilan y despliegan con Ant, como mínimo, aunque despues nos montamos el IDE para que nos haga partes del proceso, como la compilación, sin tener que ejecutar el Ant a cada momento. Para depurar uso los logs, que redirijo a consola y en produccion a un fichero por aplicacion.
El desarrollo se hace en la maquina de cada desarrollador, la BDD puede ser remota dependiendo del caso, y luego a través de control de versiones y a través de una persona, pasamos los cambios al servidor de produccion.
A veces, "time permitting" que dicen los ingleses, usamos theGrinder para hacer pruebas de estrés y YourKit para encontrar problemas de memoria etc., aunque como siempre usamos el mismo framework y librerias parecidas, no suele haber sorpresas y si los culpables habituales.
En mi caso, las aplicaciones suelen ser pequeñas-medianas, el codigo ha de ser mantenible de forma muy facil por el resto de miembros del equipo (poca gente-muchas aplicaciones) y nos gusta no tener que reiniciar mucho el contexto :).
¡Ahora os toca a vosotros!
Nota: No es que se me haya ido la pinza, como community manager de la comunidad JavaTools@java.net, es un tema que interesa y sobre el que creo que se puede compartir mucho conocimiento y aprender unos de otros.
El tema es, como dice el título "¿Cómo es tu proceso de desarrollo?" Con esto me refiero a explicar que creas tu modelo en Hibernate y con X plugin te crea la BDD, luego usas Y para generar codigo, lo empaquetas todo en un rar y el IDE te lo despliega solo en Z app. server... esas cosas.
Ojo, la idea es mostrar como lo hace cada uno y si se puede, razonado, no una competición de egos de yo lo hago mejor y lo tuyo es un asco. Los comentarios que vayan por ahi durarán lo que tarde en verlos.
En mi caso, normalmente del mini-analisis que me dan, a veces puedo hablar yo mismo con los futuros usuarios y hacer algo más serio, a veces no, empiezo haciendo una maqueta HTML y modelando la BDD relacional o estudiandola si ya existe. Si la BDD es nueva, suelo hacerme el esquema en HSQLDB para desarrollar en local sin problemas, antes de pedir, en caso necesario, que me monten todo el sarao en las "BDD corporativas".
Voy refinando la interfaz con el usuario, todo lo que puedo cuando hay un usuario definido y si no entre nosotros, que remedio. Para eso la Web Developer Extension y el FireFox van de coña, puediendo cambiar CSS "on-the-fly".
Del modelo relacional tenermos unas utilidades que te generan clases Hibernate y utilidades para leer los parametros del request, generar XML a partir de las clases, etc. Si la BDD ya existe o no se adapta bien a un modelo OO, entonces desde hace poco tiro por scripts Groovy, que más adelante puedo compilar o cambiar por clases con JDBC puro. A veces tambien puede tocar hacer la logica en PLSQL si se comparte con otros modulos en ese lenguaje.
Al mismo tiempo que desarollo la lógica usando las clases o los scripts, la maqueta HTML se transforma en la capa de vista, usando FreeMarker o XSLT.
El desarrollo lo hago sin poner mis clases en .war o .jar, ya que usando Java 6 así apenas tengo que re-iniciar el contexto, lo cual me permite ganar mucho tiempo que se pierde con el servidor de aplicaciones p'arriba, p'abajo... con Java 6 y todo desplegado, las clases se recargan solas en muchos casos y si no el contexto reinicia solo, todo lo demas es actualizable en ejecución, la vista, la configuración del framework, WebLEAF,... así que reinicios del contexto, cuando las clases ya estan creadas, pocos.
Además, el servidor de aplicaciones, Resin, lo ejecuto fuera del IDE, Eclipse, para que no interfieran y se vuelvan más pesados. Las aplicaciones se compilan y despliegan con Ant, como mínimo, aunque despues nos montamos el IDE para que nos haga partes del proceso, como la compilación, sin tener que ejecutar el Ant a cada momento. Para depurar uso los logs, que redirijo a consola y en produccion a un fichero por aplicacion.
El desarrollo se hace en la maquina de cada desarrollador, la BDD puede ser remota dependiendo del caso, y luego a través de control de versiones y a través de una persona, pasamos los cambios al servidor de produccion.
A veces, "time permitting" que dicen los ingleses, usamos theGrinder para hacer pruebas de estrés y YourKit para encontrar problemas de memoria etc., aunque como siempre usamos el mismo framework y librerias parecidas, no suele haber sorpresas y si los culpables habituales.
En mi caso, las aplicaciones suelen ser pequeñas-medianas, el codigo ha de ser mantenible de forma muy facil por el resto de miembros del equipo (poca gente-muchas aplicaciones) y nos gusta no tener que reiniciar mucho el contexto :).
¡Ahora os toca a vosotros!
Nota: No es que se me haya ido la pinza, como community manager de la comunidad JavaTools@java.net, es un tema que interesa y sobre el que creo que se puede compartir mucho conocimiento y aprender unos de otros.
in otro
Reader Comments