27/8/2010 1:31 Lucas Ontivero

Otro ejemplo de DSL en el mundo real

Desarrollo un sistema para la planificación, ejecución y seguimiento de encuestas en el que uno de los requerimientos es poder crear encuestas de manera sencilla y veloz. Además las mismas deben seguir un workflow (algo informal) de revisión. Otro dato importante es que el cliente diseña encuestas que van desde aquellas con solo algunas pocas preguntas hasta esas otras que nos tienen todo un domingo respondiendo acerca de alguna ginebra o algún nuevo centro comercial.

Para rematar debo decir que los tiempos y el presupuesto son acotadísimos. Por todo esto la creación de una interface gráfica para la confección de encuestas fue descartada de plano. No solo la UI es complicada sino que también lo son su representación en la base de datos y el modelo de objetos.

Sin más vueltas, este es un ejemplo de cómo se van a confeccionar las encuestas:

Q: '¿Cómo se siente hoy?' required single
* 'Bien' points 10
* 'mal' points -10

Q: '¿Cómo disfruta de su tiempo libre?' multiple
* 'Haciendo deportes' points 10
* 'Escuchando música' points 5
* 'Viendo televisión' points -1

Esta es la forma más natural de crear una encuesta y me simplifica la vida enormemente. De esta manera se pueden compartir las encuestas por email, compararlas, modificarlas copiando y pegando, crear unas a partir de otras ya existentes, versionarlas, imprimirlas, etc. La tabla necesaria para guardar esto tiene solo dos campos Id y Encuesta :)

image 

Este es otro caso de uso de un Domain Specific Language para facilitar el desarrollo y reemplazar a los horribles XMLs.

Archivado en: ,,,,,,,,,,,
Comparte este post:

# re: Otro ejemplo de DSL en el mundo real

Saturday, August 28, 2010 1:14 AM by Helga

Uy qué masa que está esto! Excelente.

Lo único que me preocupa es que los usuarios sean cerrados de cabeza y estén tan acostumbrados a GUIs con combitos, checkcitos y botoncitos que, al ver que sólo tienen que escribir lenguaje natural (o casi), les de pantalla azul el cerebro y reclamen una GUI "normal" :-s

Uno nunca sabe...