30 noviembre 2009

Incorporación de Marathon a eOPSOA

Tras unas semanas de aunar y aclarar ideas con mis tutores (y cotutores!!) de proyecto, y determinar así los objetivos en relación a la idea que tenemos de como mejorar eOPSOA, llegó el momento de realizar la primera aportación a este blog.
Como bien ha comentado David, con objetivo de poder terminar mi PFC y poder aportar así mi granito de arena a eOPSOA, me voy a ocupar de investigar cómo integrar la herramienta de testeo funcional Marathon al proyecto comentado.
Para quién a Marathon le suene a la famosa trilogía de videojuegos, o simplemente a la conocida prueba atlética de resistencia, comentar que Marathon es una herramienta de libre distribución, la cual podemos extender fácilmente y que nos ayuda en el desarrollo de conjuntos de pruebas automatizadas para aplicaciones Java / Swing . Marathon nos ofrece un entorno integrado en el que puede crear conjuntos de pruebas. Además, incluye un grabador, un reproductor y un editor de scripts para facilitar la automatización de pruebas. Marathon se utiliza principalmente para la automatización de pruebas funcionales, aunque también puede ser utilizado para crear conjuntos de pruebas para desarrolladores.
Cuando se lleva tiempo realizando pruebas en los diferentes proyectos entregados, nos damos cuenta que hay cosas que son particularmente difíciles de probar de forma automática y otras donde ocurre todo lo contrario, al existir medios suficientes para abordar la prueba automática. Un ejemplo claro son las interfaces gráficas de usuario.
Para la ejecución de pruebas de forma automática existen numerosas herramientas. No ocurre lo mismo para la generación de los casos de prueba, por ello intentaremos con esta herramienta abordar los objetivos que no se pudieron completar el año pasado (debido a que la herramienta elegida no cumplió las expectativas creadas), con la incorporación de automatización de pruebas, en la parte de Generación y Ejecución de pruebas de eOPSOA. Más adelante, iremos ampliando con más detalle la idea que perseguimos en el proyecto.
Finalmente, no quería terminar este primer cometario, sin dar las gracias a todas las personas que me están ayudando en el desarrollo de mi propósito. Especialmente quería agradecer a mi compañero David Castellanos, la ayuda, disposición y paciencia mostrada, desde el primer día (23 de octubre) que se enteró de mi incorporación al equipo.

Gracias deivis!!
14 noviembre 2009

Preparando el III CUSL de CLM y el IV CUSL

Después de unos cuantos meses sin actualizar el blog y sin dar apenas señales de vida, volvemos a la acción en eOPSOA con muchas ganas de trabajar y de hacer cosas interesantes.

Algunas cosas han cambiado respecto al año pasado. Para empezar, este septiembre pude presentar mi PFC y ya soy oficialmente Ingenierete en Informática. Como parece que no tuve bastante, este año me he matriculado en el Máster Universitario de Tecnologías Informáticas Avanzadas de la UCLM (los antiguos cursos de [pre]doctorado) así que sigo siendo universitario, y por tanto puedo volver a participar en el CUSL. Pero la principal novedad de este año es que se incorpora al proyecto Luis Miguel Bastante, estudiante también de Ingeniería Informática en la UCLM, y que está realizando su PFC.

Aún faltan algunas cosas por decidir, pero parece que la participación de este año va a ir en línea a la del año pasado, e intentaremos realizar algunos de los objetivos que se quedaron pendientes del año pasado. Por ejemplo Luismi va a investigar cómo integrar la herramienta de testeo funcional Marathon en eOPSOA, y en mi caso, voy intentar generar reportes usando para ello el framework BIRT.

Aunque todavía no ha comenzado oficialmente el período de participación ya estamos adelantando algo de trabajo, por ejemplo hemos cambiado el tema del blog a uno un poco menos funky, y en el trunk del SVN se está trabajando en la refactorización del modelo Ecore del proyecto.

Happy hacking!! :-)

24 mayo 2009

Publicado eOPSOA v0.2.2

Nunca digas nunca...

Hace un tiempo dije que no me iba a dedicar a desarrollar eOPSOA hasta que terminara los exámenes y el PFC, pero parece que por más que lo diga es mentira y vuelvo a sentarme a programar aunque sea un poquito. Es que jo, me motiva más trabajar en eOPSOA que estudiar PL... O:-)

Esta vez ha sido culpa de Estela; está utilizando eOPSOA para evaluar una aplicación, y se estaba volviendo loca porque no podía editar la información una vez introducida. Y la verdad es que lleva razón, y además cuando me pone carita de lástima no puedo evitar hacerle caso, soy así. La cuestión es que es una funcionalidad que debía estar implementada desde hacía mucho, pero por cuestiones de tiempo siempre lo fui dejando para más adelante.

Cambios en esta versión:

  • Añadido soporte para la edición de la mayoría de la información de los Casos de Uso y de Tests de Prueba.
  • Mantenimiento de las traducciones.

He intentado seguir las guías de estilo de Eclipse, y he dado soporte a la edición de la mayoría de las celdas en las tablas. Me fue de especial ayuda el manual Eclipse JFace TableViewer - Tutorial de Lars Vogel, que por cierto tiene un conjunto de tutoriales y manuales sobre Eclipse maravillosos. Así que destacar, él en su tutorial utiliza un ComboBoxCellEditor para implementar la edición de las celdas con un ComboBox, y yo he tenido que utilizar un ComboBoxViewerCellEditor por la forma en la que uso los JFace Viewers, pero a efectos prácticos es lo mismo. Si a alguien le interesa, el código está en la clase OTestCaseDetails.java.

Y después de este paréntesis en el estudio, a no ser que Estela vaya detectado más fallos no creo que desarrolle más hasta por lo menos el fin de exámenes, o como mucho hasta que presente el proyecto. La verdad es que tengo un montón de ideas en mente, y tengo un montón de ganas de aprender cosas como GMF y BIRT que me van a hacer falta, pero lo primero es lo primero y tengo que terminar la carrera si o si.

¡Hasta luego!

10 mayo 2009

Mejor proyecto de Innovación en el III CUSL

Durante los días 7 y 8 de mayo tuvo lugar en Sevilla la Fase Final del III CUSL, a la que tuve la suerte de poder asistir como finalista con mi proyecto eOPSOA. Han sido unos días realmente duros para nosotros, porque entre el viaje hasta Sevilla, y luego las actividades, ponencias y demás, hemos terminado realmente cansados.

Qué cosas se pueden contar de estos días... por una parte me sorprendió muchísimo lo jóvenes que eran los organizadores, y lo controlado que parecían tenerlo todo. Desde el primer momento me sentí muy cómodo, y siempre tuvieron la voluntad de que nos conociéramos entre nosotros los finalistas. De hecho, Estela y yo llegamos el miércoles por la noche; al poco de llegar nos recogieron y nos llevaron a cenar con ellos al Bar Manolo, donde conocimos a algunos colaboradores, a Javier Aguirre, a Pablo Neira, Emilio José Rodríguez... pido perdón por la gente que había allí y de las que no me acuerdo de sus nombres O:-). Esa noche conocí a un chaval del proyecto Meshias (no recuerdo si era Eduardo o Alejandro, de todas formas un saludo!) que era una auténtica máquina, colaborador de Konqueror, estaba escribiendo un parche para VirtualBox... este muchacho estoy seguro que ha hecho mucho más que yo, y que quizá se merecía más estar en la fase final que yo... Ha sido una sensación que he tenido durante estos días porque he conocido gente realmente brillante, y hay otros muchos proyectos que se han quedado fuera que eran realmente increíbles; no puedo evitar sentirme un poco culpable, no sé.

Al día siguiente ya conocimos al resto de finalistas, todos con proyectos realmente increíbles, y además gente muy maja. Me hizo muchísima ilusión poner cara a los miembros de Cool Imaging porque al usar ambos Eclipse, nos habíamos puesto en contacto antes; durante estos días hemos hablado mucho Luis, Ricardo y yo compartiendo información y cosas que habíamos aprendido. Siento haber mosqueado a Marchesi por estar hablando con Luis durante su ponencia, perdón por haberte fastidiado la resaca :-P. Las ponencias por lo general fueron muy interesantes, sobre todo IMHO las de Alberto Barrionuevo y la de Álvaro López de Octality. Es increíble como una persona que tiene el puesto de trabajo de su vida, lo deja todo por un proyecto que comenzó como un hobby y funda su propia empresa. Tuve la suerte de poder hablar con él antes de ver su ponencia, y me dijo un par de cosas que creo que creo que me han dejado huella.

Sobre las ponencias de los finalistas, me quedé alucinando con todas y cada una de ellas. Por ejemplo Andoni (The Digital Coach) es increíble porque sin duda va a revolucionar cómo los pequeños clubes deportivos preparan su material audiovisual, éste suele ser muy caro, y gracias a su programa podrán tener acceso a esta tecnología los más humildes. Daniel (Geco), fue el que mejor supo explicarnos el concepto y la utilidad de su programa, gracias a su creatividad y a su capacidad de análisis. Tucan nos dejó alucinando por la comunidad que están creando alrededor de su programa, lo que sin duda tiene muchísimo mérito, y el compromiso que tienen respecto a ésta implementando nuevos plugins, manteniéndolos... etc. Emilio (AVBOT) nos enseñó como tras relizar el análisis de la realidad de un problema grave como es el vandalismo en Wikipedia, se puede diseñar una solución elegante que sin duda va a ayudar muchísimo. Y los compañeros Luis y Ricardo (Cool Imaging) nos mostraron cómo a base de esfuerzo y dedicación han construido una pedazo herramienta que de seguro va a ayudar y mucho en multitud de áreas como medicina, astronomía, docencia... etc. En mi caso, yo salí con un regusto agridulce porque creo que no supe transmitir a la gente de lo que iba mi proyecto, si hubiera visto antes la presentación de Dani posiblemente habría cambiado la mía, pero no tuve apenas tiempo de reacción :-S. Además no supe utilizar el micro y me falló constantemente, y terminé casi desquiciado.

El viernes al mediodía fue la entrega de premios, en la que a diferencia de la fase regional apenas estaba nervioso porque tenía más que asumido que iba a quedar finalista porque los otros proyectos eran muy muy buenos. Se comprenderá entonces mi sorpresa cuando eOPSOA fue premiado como el Mejor Proyecto de Innovación... me emocioné un montón porque he trabajado mucho y ha habido momentos muy duros que si no hubiera sido por gente como Estela, la familia, los amigos, los profesores y los compañeros del I3A no habría podido superar, les debo muchísimo a cada uno de ellos. Aparte de muy feliz, también me sentía un poco mal porque había proyectos que eran mucho más geniales que el mío que por desgracia no estaban allí, como por ejemplo el de Cleto Martín con su proyecto Icepick, y otros muchos que seguía de la lista de correo y que siempre había creído que iban a estar en la final. También en parte por los otros finalistas que no fueron premiados como Luis y Ricardo con Cool Imaging, Andoni y su The Digital Coach, Dani con Geco que no solo de conocerlos de antes, pero sobre todo después de hablar con ellos y de saber de primera mano lo que significan para ellos, se merecían un primer premio. Casi nunca he ganado nada, y siempre me he sentido un poco como el personaje de Naruto que solo deseaba que se le reconociera como ninja de Konoha, y me humildemente me siento bastante abrumado por la situación. Si antes tenía claro que quería seguir con eOPSOA, ahora ya no tengo ninguna duda. He dado mucho por este proyecto, quizá demasiado, pero se me ha devuelto muchísimo más y la deuda es muy grande.

Bueno, creo que he escrito más de lo que debería, y ya solo me queda decir que muchas muchas gracias a todos. Un abrazo muy grande para toda la gente maravillosa que he conocido durante estos meses tanto en la lista como en la fase final, y muchos ánimos con vuestros proyectos y a seguir colaborando, aprendiendo y soñando dentro de este mundillo. Muchas gracias de nuevo a toda la gente que me ha apoyado, y que ha estado tirando de mí, sobre todo a Estela que ha aguantado lo que no está escrito. Esto va por todos vosotros y aunque sea mi nombre el que aparezca, hay muchas muchas más personas que deberían tener también un hueco ahí.

Y por último, esto también va por ti abuelo Antonio, sé que estás sufriendo y ojalá pudiera cambiar todo esto porque estuvieras bien, pero hay que seguir luchando y siempre hacia adelante. Te quiero un montón abuelo, mejórate por favor.

¡¡Gracias!!

05 mayo 2009

Publicado eOPSOA v0.2.1, y nos vamos para Sevilla!!

Casi un mes después de haber publicado la versión 0.2.0 de eOPSOA, hoy publicamos la versión de mantenimiento 0.2.1. Es bastante posible que sea la última versión antes de presentar el proyecto, pero lo mismo dije antes...

Cambios en esta versión:

  • Corregidos algunos (pequeños) bugs.
  • Pequeña actualización de las traducciones.
  • Añadidos iconos e imágenes.

Para descargar eOPSOA tienes dos opciones, o bien descargar eOPSOA desde la forja de Molinux, o seguir las instrucciones de instalación para utilizar el Update Manager de Eclipse. Tú elíges ;-)

Por lo demás, durante estos días he estado preparando la presentación del III CUSL de Sevilla: refinando la presentación que hice en Cuenca, grabando algunos vídeos de la aplicación... etc. Tengo casi decidido que no pondré ningún vídeo en la presentación (no es precisamente espectacular ver cómo se especifica un Caso de Uso :-P), pero tampoco está de más tener alguno por si surge la ocasión.

Y la verdad es que poco más, a ver cómo se da la aventura :-). Como he comentado antes no creo que pueda actualizar el blog mientras esté en Sevilla, pero imagino que si podré sacar ratillos sueltos para escribir en Twitter.

Nos vamos para Sevilla!!

01 mayo 2009

Premio especial II CUSL de CLM

El martes 28 de abril fue la fase final del II CUSL de CLM, que tuvo lugar en la Escuela Politécnica de Cuenca. Y entre las presentaciones de los proyectos finalistas, talleres, ¡levantarse a las 6 de la mañana!, y emociones varias, pues fue un día un poco duro.

La primera sorpresa nos la llevamos al mediodía, cuando en un ratín que encendí el ordenador me encuentro que eOPSOA estaba clasificado para la Fase Final del III CUSL, que no nos esperábamos en absoluto. Quien me iba a decir que con la cantidad de proyectos buenísimos que había este año en el CUSL iban a elegir al que es con diferencia el más aburrido... :-P

Y luego el acábose fue en la entrega de premios, cuando nos eOPSOA fue premiado con el Premio Especial en el II CUSL de CLM... en fin, muchas emociones :-). No me lo esperaba tampoco porque había seguido el trabajo de Cleto con IcePick, y es un trabajo bárbaro (suerte con el PFC Cleto!!), y siempre había creído que iba a ser el Premio Especial para su proyecto. Apenas pude hablar con él, y me hubiera gustado haber podido preguntarle un poco más sobre su trabajo con las motas (creo que se llamaban así) porque la presentación me supo a poco, pero seguro que surge la ocasión de poder volver a preguntarle ;-)

El resto de proyectos me llamaron también mucho la atención. El proyecto Sapiens es de unos alumnos muy jóvenes de la ESII que conocía de vista y que han hecho muy buen trabajo. A su edad yo no sabía hacer casi nada con Swing, y han creado un juego muy divertido y si se mueven bien pueden crear una buena comunidad alrededor de su programa.

Los proyectos Blue Harvest y Fajax también eran interesantes. Ambos son de estudiantes de Telecomunicaciones de Cuenca, y son proyectos muy ambiciosos, sobre todo Fajax. Este proyecto me dió la impresión de tener detrás una cantidad de trabajo impresionante, quizá si hubiera elegido un framework adecuado le hubiera ahorrado esfuerzo, pero aún así es encomiable. Y por último los proyectos GesControl Security, DVS Car y Spela, de compañeros de clase que presentaron sus proyectos de IS2, y que para apenas poder haber desarrollado durante 1 o 2 meses tenían muy buena pinta.

Los premios quedaron de esta forma:

  • Premio Especial JCCM-CESLCAM al Mejor Proyecto para el proyecto eOPSOA del alumno de la Escuela Superior de Ingeniería Informática de Albacete, David Castellanos Serrano.
  • Primer Premio a la Mejor Utilidad para el proyecto Blue Harvest, de los alumnos de la Escuela Universitaria Politécnica de Cuenca, Alejandro Olmedo Mateo y Eduardo Villar Rabadán.
  • Segundo Premio a la Mejor Utilidad para el proyecto Sapiens, de los alumnos de la Escuela Superior de Ingeniería Informática de Albacete, Pedro García Rubio y Juan Manuel Soler Denia.
  • Primer Premio al Proyecto Más Innovador para el proyecto Icepick del alumno de la Escuela Superior Informática de Ciudad Real, Cleto Martín Angelina.
  • Segundo Premio al Proyecto Más Innovador para el proyecto Fajax del alumno de la Escuela Universitaria Politécnica de Cuenca, Andrés Martínez Muguerza.

Y ya para terminar y no enrollarme más, muchas gracias a todos los que me habéis apoyado durante estos meses, en especial a mis profesores del proyecto Elena Navarro y Francisco Montero, que se están portando genial conmigo (sobre todo Elena, que aún estando en EEUU tiene tiempo para mi proyecto!!!). También gracias a mi familia y a mi novia, que bastante tienen los pobres con aguantarme, y que sin su apoyo habría mandado todo a /dev/null hace tiempo. Y también a mis amigos, que los tengo un poco abandonaicos, pero de verdad que no os olvido (y ya os invitaré a algo cuando termine todo esto). Bueno, en general muchas gracias a todos de verdad, y aunque sea un poco capullo y no os lo diga, sois importantes para mí.

Del 6 al 9 estaré en Sevilla en la final del III CUSL, y no sé si tendré tiempo de escribir en el blog. Pero si alguien quiere seguir qué tal va la aventura, seguro que puedo sacar ratillos para poner algo en el Twitter.

Otra vez, gracias :-)

12 abril 2009

Iconos, y futuro del proyecto

Hace unos días descubrí un cliente para Twitter llamado twhirl, para la plataforma Adobe AIR. Anoche estaba aburrido y mientras buscaba otras aplicaciones para AIR encontré una llamada Clockmaker Icon Generator.

Esta pequeño programa es interesante porque te permite hacer de forma muy fácil iconos para tu aplicación al estilo web 2.0, y en un par de clics conseguí un icono que me llamó la atención y que voy a aprovechar para eOPSOA.
Puede parecer una tontería, pero para mí es importante porque eOPSOA aún no tenía un elemento gráfico característico, y creo que esto puede ayudar en ese aspecto. Conforme vaya teniendo ratillos muertos iré creando algunos otros iconos, y los iré subiendo al SVN.

Una vez terminada la fase de evaluación del II CUSL de CLM, da la impresión que la cosa se enfría bastante, y el ritmo de actualizaciones en el planet del concurso regional y del planet del concurso nacional ha bajado.

El ritmo de desarrollo de eOPSOA también va a bajar bastante durante los próximos meses, aunque la intención no es abandonar el proyecto porque hay muchos objetivos que aún no se han cumplido, y que parecen cuanto menos interesantes. Desde el primer momento, eOPSOA ha sido para mí un PFC, y después de casi 6 meses programando es hora de ponerse a escribir la memoria, por mucho que me pese :-P. Mi intención es hacer pública en un futuro la memoria, pero hasta que no esté terminada no podré tomar la decisión.

¡Hasta luego! :-)
09 abril 2009

Publicado eOPSOA v0.2.0, wiki... etc.

Después de otro mes de duro trabajo publicamos la versión 0.2.0 de eOPSOA.

Cambios en esta versión:

  • Cantidad de bugs resueltos.
  • Soporte para la creación de Tests de Prueba.
  • Actualizado la traducción de la interfaz del usuario al español, inglés y francés.

Para descargar eOPSOA tienes dos opciones, o bien desde la forja de Molinux, o usar el Update Site que se encuentra en http://eopsoa.albacete.org/update_site. Tú elíges ;-)

Si habéis sido observadores habréis observado un nuevo enlace en la cabecera del blog, y es que hemos habilitado un wiki en la dirección http://eopsoa.albacete.org. Este espacio va a ser muy importante para el proyecto eOPSOA porque va a ser donde colguemos la mayoría de la documentación que vayamos generando. A día de hoy, puedes encontrar un Manual de Instalación, Manual del Usuario y un Manual del Desarrollador. Un lujo vaya.

Como es habitual, os invito a probar el programa y comentadme qué os parece :-)

06 abril 2009

Truco: flat style en formularios para JFace Viewers

Si te estás volviendo loco porque cuando en un formulario Eclipse añades un JFace Viewer y en Windows te sale sin bordes y en GNU/Linux si, y al añadir el estilo SWT.BORDER en Windows por fin aparecen, pero en GNU/Linux se ve como el culo porque no utiliza el flat style del resto del formulario...

NO lo hagas así:

TableViewer fooViewer = new TableViewer(composite, SWT.SINGLE);
Table fooTable = viewer.getTable();
...

Tienes que hacer esto otro en su lugar:

Table fooTable = toolkit.createTable(composite, SWT.SINGLE);
TableViewer fooViewer = new TableViewer(fooTable);
...

De esta forma tu viewer tendrá bordes del tipo flat style, esté en la plataforma que esté ;-)

04 abril 2009

Problemas con la forja, próxima versión 0.2.0 y wiki

Para mí, la Ley de Murphy es una máxima en mi vida. Si te planteas hacer la migración de un servicio, no lo hagas un viernes porque si tienes problemas, no los arreglarás hasta que el lunes vuelvas al trabajo. Y si encima ese viernes es vísperas de vacaciones, más todavía. Y si ya para rematar el día 6 de abril es el límite para entregar la memoria final, solo hace falta ya que se alineen los planetas para saber que si algo puede salir mal, saldrá mal.

Por desgracia este ha sido el caso con la forja de Molinux. Los administradores actualizaron este viernes la versión de GForge que utilizaban (algo muy necesario, y que les agradezco de todo corazón), pero por desgracia se fastidió el repositorio SVN. Al menos en mi caso, que el repo de la forja no se pueda utilizar me afecta bastante. Estaba a punto de publicar la versión 0.2.0 de eOPSOA, y mi intención era aprovechar el fin de semana terminar de arreglar cosas, y Estela se había vuelto a ofrecer para poner al día las traducciones.

En otro orden de cosas, la versión 0.2.0 de eOPSOA es importante porque introducimos el soporte para la creación de pruebas no funcionales. Por ahora la creación ni es automática, ni ejecutable, pero todo se andará.

Por último, he instalado en http://eopsoa.albacete.org un wiki, donde estos días publicaré documentación del proyecto. Mi intención es escribir al menos un manual del desarrollador, un manual del usuario y actualizar la guía de instalación tanto para Eclipse 3.4 como Eclipse 3.5M6.

¡Que paséis unas buenas vacaciones! :-)

26 marzo 2009

Prototipado UI

Al principio este blog iba a ser para comentar el desarrollo de eOPSOA y discutir decisiones de diseño, explicar como trabajo... etc. Sin embargo, y debido a que casi todo el tiempo que tengo lo dedico a diseñar y programar, apenas he escrito nada sobre el desarrollo. Eso de dejar que el código hable por uno mismo está bien, pero hay veces que uno usa herramientas o tiene truquillos que quizá sean interesantes, y que quizá sean interesantes para los demás.

Como comenté antes, la metodología de trabajo que sigo es una adaptación de RUP. Tengo marcadas unas iteraciones, y en cada iteración hay una serie de tareas que tengo que realizar. Normalmente lo que suelo hacer al principio de cada iteración es modelar los requisitos funcionales y realizar el diseño para esa etapa usando Rational Rose y Rational Requisitepro. En los directorios /management/trunk/analysis_design y /management/trunk/requirements podrás encontrar los artefactos. Además, otra tarea que realizo es esbozar la UI, que es de lo que os quiero hablar. Luego le presento todo eso a los tutores del proyecto, y con las correcciones que me hacen refino todo y ya me pongo a programar. Hasta ahora no había subido al repositorio los esbozos de la UI, pero a partir de ahora los iré metiendo en /management/trunk/ui_sketches.

Al principio usaba papel y boli, pero el problema que tiene es que al final siempre terminaba perdiendo los esbozos, y como que no tengo scanner difícilmente iba a poder enviarlos por correo. Estuve buscando herramientas de prototipado de interfaces, y la herramienta que más me gustó, y que vengo utilizando, se llama WireframeSketcher, y es otro plugin sobre Eclipse. Como nota friki decir que utiliza EMF y GMF, es curioso lo que se puede hacer con estas herramientas :-). La lástima es que es software propietario, pero el autor no tiene problemas en dar licencias a aquellos que se pongan en contacto con él y participen en un proyecto de Software Libre. Además ha comentado varias veces que en un futuro cercano tiene pensado sacar una versión gratuita más o menos funcional, y quién sabe, quizá hasta termine liberando algo. El ritmo de desarrollo es brutal, y poco a poco se van añadiendo funcionalidades que lo hacen un software muy útil.



Las dos imágenes anteriores se corresponden al prototipo que hice, y a la pantalla final que resultó. Aunque quizá la paleta de controles de WireframeSketcher es un poco pequeña, al menos en mi caso es suficiente y se ajusta bastante bien a los controles que ofrece JFace/SWT. Y ya para dejar de hacer spam comentar que la ventaja principal que le veo respecto a otras herramientas de prototipado como Pencil es que es muy sencillo y rápido de usar, se integra con Eclipse, y que funciona realmente bien. Además que aunque sean en blanco y negro, salen los esbozos mu bonicos si O:-)

Por último, he subido en el área de documentación de la forja una serie de PDFs que usé para estudiar los prototipos de interfaz de eOPSOA que he estado haciendo.

20 marzo 2009

Soporte i18n para eOPSOA

Si habéis echado un vistazo al SVN durante esta semana, habréis visto que ha tenido bastante movimiento y que ha sido debido al fruto de una nueva colaboración en el proyecto.

El caso es que Estela me ha echado una mano para internacionalizar eOPSOA. Por ahora la interfaz está traducida al español y al inglés, y dentro de muy poco lo estará también en francés. Que lujazo ¿no? :-P

¡Muchas gracias Estela! :-)
08 marzo 2009

Publicado eOPSOA v0.1.1

Después de alrededor de 4 meses de desarrollo, estoy orgulloso de publicar la versión 0.1.1 de eOPSOA. Esta release no se puede considerar para producción, porque carece de la mayoría de características que pueden hacer eOPSOA útil para el analista. Sin embargo la intención es que se testee, para corregir los pequeños fallos que pueda haber de los cuales no sea consciente.

Para descargar eOPSOA tienes tres opciones:

  1. La opción recomendada, que es usar el Update Site para Eclipse. Te gestionará él solo las (pocas) dependencias que tiene el proyecto de forma automática y no dolorosa.
  2. Desde un fichero con un update site fuera de línea. Lo podrás encontrar en el área de descarga de la forja de Molinux.
  3. Si eres desarrollador, o valiente, descargar la última versión del repositorio SVN.

Las características de la versión 0.1.1 son las siguientes:

  • Soporte para la caracterización de los programas a certificar, permitiendo la edición, guardado y recuperación de los documentos checklist, glosario y de visión. Estos documentos se cargan desde plantillas XML, de tal forma que la adaptación a nuevas revisiones de estos documentos sería inmediata.
  • Soporte para la descripción de los actores del sistema.
  • Soporte para la especificación completa de Casos de Uso. Permite especificar los actores involucrados en el UC, las precondiciones/postcondiciones, los flujos básico y alternativos, y las relaciones entre los distintos UC.

Una característica que no se había planteado originalmente, y que creemos que puede ser interesante, es la forma en la que definimos los flujos básicos y alternativos de cada UC. Los flujos están compuestos por pasos, y estos a su vez pueden estar compuestos por pasos. Los pasos se pueden marcar como de entrada o de salida, y asignarles variables.

Para la siguiente iteración se va a trabajar en el soporte de pruebas: definición de escenarios, integración con algunas herramientas de testeo funcional y de calidad de código... etc. Si alguna vez habéis trabajado testeando funcionalmente una aplicación, estaréis de acuerdo conmigo en que definir los escenarios y todas las combinaciones de variables es un auténtico rollo. Aquí entra lo que he comentado antes de la decisión de diseño que se ha tomado al implementar el soporte de UC. Vamos a intentar que hasta cierto punto la generación de escenarios sea automática, utilizando la información "extra" que hemos pedido al realizar la definición de los UC.

De cómo se implemente el soporte para los Tests de Pruebas va a ser crucial para la utilidad (o inutilidad) de eOPSOA. Próximamente escribiré de cómo estoy realizando esta tarea y de los problemas que estaré encontrando :-)

23 febrero 2009

Eclipse Model Framework: cosa fina oiga

Eclipse, además de un IDE para Java fantástico, es también una plataforma para el desarrollo de aplicaciones. Estas o bien pueden ser plugins (como el que estoy haciendo yo), o aplicaciones RCP como pueden ser Cool Imaging Project, de unos compañeros que también están compitiendo en el CUSL (saludos!!). El caso es que al ser Eclipse al 99% modular, se presta a ser extendido. La Wikipedia tiene un artículo muy interesante sobre Eclipse, en developer.com hablan de su arquitectura, y en el libro The Java Developer's Guide To Eclipse (muy muy recomendable) hay muchísima más información. Como a veces lo más sencillo es una imagen, he tomado prestada una imagen de ese libro que es representativa de la arquitectura de Eclipse

Quizá el componente más usado de Eclipse es JDT, porque de un modo u otro todos los que desarrollamos sobre Eclipse lo utilizamos. Pero con la tendencia actual de ver a Eclipse como un framework de desarrollo de aplicaciones han aparecido proyectos alrededor que son muy interesantes, como por ejemplo BIRT, Mylyn, DTP... si, todo son siglas ;-)

Uno de estos componentes que me está siendo especialmente útil es EMF, que responde a Eclipse Modeling Framework Project. En plan rápido, EMF es un framework para el modelado y gemeración de código para construir herramientas y otras aplicaciones basadas en un modelo de datos estructurado. Desde la especificación de un modelo descrita en XMI, EMF proporciona herramientas y soporte para generar un conjunto de clases Java para el modelo, además de clases adapter para soportar la visualización y la edición del modelo. Como imagino que esta descripción tampoco es muy útil, y hay sitios donde pueden explicar con más criterio que yo en qué consiste EMF, voy a intentar explicar porqué es útil para mi proyecto.

Imaginemos que estamos desarrollando una aplicación en la que hemos identificado un modelo de datos relativamente complejo, y que debemos ser capaces de serializar y deserializar desde XML. Por ejemplo este, descrito en UML, y que modela parte del soporte para Casos de Uso que tiene eOPSOA:

Este modelo se podría implementar sin problemas en Java, pero sería una tarea cuanto menos dolorosa. Y si a esto añadimos el asunto de la serialización/deserialización en XML, listeners, adapters... etc., nos podemos dar cuenta que no es un asunto trivial.

Si desarrollamos un plugin para Eclipse, una aplicación RCP, o simplemente una programa Java, nos puede resolver la vida. Entre otras muchas cosas, con EMF podemos hacer:

  • Describir el modelo de datos a alto nivel. P.e. podemos usar un diagrama de Rational Rose, un diagrama UML, XSD, interfaces Java anotadas... etc. para construir un fichero ecore con el modelo de datos de nuestro sistema.
  • Con el fichero ecore, podemos generar un fichero genmodel que a su vez puede ser usado para generar el código Java que describe nuestro modelo. Crea además un editor en línea de comandos y otro gráfico como plugins de Eclipse. Todo eso sin tener que escribir una línea de código ;-)
  • Con el código que hemos generado, podemos serializar/deserializar nuestro modelo a XMI y XML, tenemos relaciones entre objetos, notificaciones, notificaciones inversas, adaptadores... etc. Todo ello como he comentado out-of-the-box, solo con la descripción a alto nivel de nuestro modelo y sin escribir (casi) una sola línea de código.
  • Podemos manipular el código generado, y si en un futuro hay cambios en el modelo, se puede recargar y regenerar el código, respetándose nuestros cambios.
  • Podemos usar los ficheros ecore y genmodel anteriores para crear un editor gráfico (en plan pinchaiconos, copiar y arrastrar) con GMF.
  • Y bueno, muchas cosas más que no sé ni creo que vaya a necesitar en un futuro cercano, pero que parecen cosa fina oiga.
A mí al menos, me ha resuelto la vida. Si le echáis un ojo a mi SVN, el plugin org.uclm.eopsoa.core es prácticamente un modelo EMF un poquito grande, y todo el código Java que me genera automáticamente. Si queréis comenzar con esto hay bastante información disponible en Internet, pero lo suyo es comenzar mirando la documentación de EMF, leer la guía para programadores, e intentar hacer los tutoriales. Hay una chuleta de referencia que viene muy bien, y si sabes que te vas a pegar mucho han sacado hace poco la segunda versión del libro EMF: Eclipse Modeling Framework. No es barato pero cubre mucho mucho mucho más de lo que puedas encontrar en Internet, y es extremadamente útil.

No sé si os habré convencido, pero para terminar voy a comentar algunas cosas que he aprendido durante estos meses usando EMF:

  • En los tutoriales apenas se comenta, pero la forma más cómoda para crear un modelo EMF es editando el fichero ecore con el editor. Muestra un árbol con los elementos, se pueden añadir/eliminar nuevos hijos, y manipular las propiedades en el properties view. Las interfaces Java anotadas son útiles porque proveen de una perspectiva más cercana a la que podemos tener los programadores, pero es mucho más fácil meter la pata y se pierde flexibilidad. Además, que si tu modelo EMF es un poco complejo es un rollo recordar las 80 anotaciones que quizá te hagan falta.
  • Procura tener tu modelo EMF lo más limpio, expresivo y rico posible. Si te ves modificando mucho código autogenerado, suele ser señal de que necesitas trabajar más tu modelo.
  • El nombre de los atributos va a tener mucho que ver en cómo se va a generar el fichero XMI/XML de persistencia del modelo. No te agobies demasiado si alguna etiqueta queda algo rara; mejor tener una API cómoda para trabajar. Y si alguien tiene que usar tu XML, siempre podrá usar a su vez EMF y entonces te agradecerá las decisiones que hayas tomado.
  • NUNCA, NUNCA pienses que no vas a tener que regenerar el modelo (y el código) y muevas paquetes, cambies nombres a clases sin que se entere EMF. Suele pasar cuando en tu proyecto usas una convención de nombres de interfaces/clases distinta a la que genera EMF, y con las facilidades de refactorización que provee Eclipse puede ser goloso liarse la manta a la cabeza, y moverlo y cambiarlo todo de sitio. Pero aunque no quieras, tarde o temprano vas a tener que modificar tu modelo, y al final tendrás un pisto y perderás tiempo.
Espero que este post haya sido útil, si alguien quiere comentar lo que fuera es bienvenido :-)
16 febrero 2009

Update Site para eOPSOA

No sé si alguno se acordará de algunos años como estaba el panorama en GNU/Linux. Yo comencé cuando la cosa iba más o menos bien, allá por el año 2002, y mi primera distribución fue una RedHat 7.3. Por aquel entonces estaba comenzando el tema de las conexiones de banda ancha (aunque realmente no eran tan anchas... ONO ofrecía por aquel entonces 64 kbps) y aunque poco a poco se iba haciendo hueco Internet en casa, no éramos tantos los afortunados internautas. Decía que mi primera distro fue una RedHat 7.3, y aún recuerdo cómo descubrí lo que por aquel entonces se llamaba dependency hell cuando intenté instalar algún que otro RPM suelto que encontré por ahí: el Compu's Messenger (el abuelo del AMSN actual), los infames drivers binarios de la NVIDIA, el JRE 1.4 de Sun, algún que otro juego... etc. Era una gracia eso de tener el modem de 56 kbps y ver como un paquete depende de otro, otro de otro, otro de otro... y después de descargar 60 megas de paquetes descubrir que has liado tal pisto, que no hay otra solución casi que reinstalar de 0 el sistema. Qué tiempos aquellos, luego descubrí Debian y su bendito apt-get; fue entonces cuando descubrí el cielo. Pero eso es otra historia.

Todo lo anterior venía a cuento porque parece mentira, y en pleno año 2009 algunas cosas no han cambiado tanto, y si no andas con tiento te puedes encontrar con el mismo problema. No sé si lo habré comentado antes, pero Eclipse es modular 100%... en realidad todo está descompuesto en n-mil plugins. Eso tiene sus ventajas, y a la vez sus desventajas. Quizá su mayor desventaja es la instalación de plugins nuevos, que como no tengas cuidado te puedes encontrar con el problema que he comentado antes: un infierno de dependencias. A partir de la versión 3.2 (creo) Eclipse introdujo un componente muy interesante llamado Update Manager, donde se añadían Update Sites desde los cuales te puedes bajar plugins y features, y con un poco de buena suerte se calculaban las dependencias de tal forma que no tuvieras que sufrir la tortura de resolverlas a mano. Versión a versión ha ido mejorando la cosa y en la versión 3.4, aunque es lento como el infierno, es prácticamente usable.

Aprovechando que el proyecto está avanzando poco a poco, y que ya hay algunas cosas que se pueden ver, pensé que quizá sería buena idea montar un Update Site para distribuir de forma rápida el proyecto, y que quien estuviera interesado probara el software no sufriera tortura. Quién sabe, a lo mejor así alguien se anima a rellenar algún que otro bug report... no sé. Hablé con la gente del Centro de Datos de la ESII (gracias Juan Carlos!!! :-)) y han sido tan majos de proporciarme un sitio donde poder ir colgando el Update Site. La URL es http://eopsoa.albacete.org, a que mola ¿verdad? ;-)

Bueno, para ser sincero no he colgado todavía nada, pero por ahora he escrito un HTML guarro donde describo de forma somera el proyecto, y las instrucciones para descargar las fuentes y los binarios. Cuando termine un par de cosas que estoy implementando lo subo, palabra O:-)

He estado pensando en el estado del blog y del proyecto, y creo que no he sido capaz de describir muy bien de qué va mi proyecto. En parte ha sido por desidia mía, pero por otra parte también es verdad que estoy que no me cojo el culo... por eso he pensado que lo mejor sería colgar la prememoria del proyecto que envié cuando inscribí el proyecto en el CUSL, y que aquel que esté interesado que le eche un ojo.

Y nada más por ahora, dentro de poco escribiré otra entrada donde intentaré comentar el estado del proyecto, y de las ideas que tengo para el futuro, que creo que pueden ser interesantes.

Happy hacking!!