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 :-)