Un sistema de desarrollo de interfaces web basado en

Transcripción

Un sistema de desarrollo de interfaces web basado en
Un sistema de desarrollo de interfaces web basado en
modelos para aplicaciones de gestión
Delgado A.1, Estepa A.1, Troyano J.A.2, Estepa R.1
1
Escuela Superior de Ingenieros. C/ Camino de los descubrimientos s/n. 41092
Sevilla, Spain {aldelgado, aestepa, rafa}@trajano.us.es
2
Escuela Técnica Superior de Informática. C/ Reina Mercedes s/n. 41012
Sevilla, Spain [email protected]
Resumen En este artículo se presenta WAINE (Web Application INterface
Engine), un entorno orientado al dominio de las aplicaciones de gestión para el
desarrollo de interfaces de usuario basado en modelos. WAINE permite un
desarrollo rápido, un alto grado de reutilización y ofrece flexibilidad en diversos
niveles, por ello es muy adecuado para la producción en entornos profesionales.
Para validar estas ventajas frente a otras alternativas de desarrollo, se han
construido un conjunto de aplicaciones de ejemplo, cuantificando el esfuerzo
invertido en el desarrollo.
1
Introducción
En las últimas dos décadas ha habido un importante esfuerzo de investigación dentro
del campo de la interacción humano-computadora (IHC). Fruto de ese esfuerzo han
emergido los sistemas de desarrollo de interfaces de usuarios basados en modelos
(Model-Based User Interface Development Environments, MB-UIDEs [1]) y los
lenguajes de definición de interfaces de usuario (User Interface Definition languages,
UIDLs [2]). Los MB-UIDEs permiten modelar formalmente los usuarios, las tareas y la
presentación de un interfaz de usuario y posteriormente emplear esos modelos para
guiar todo el proceso de construcción de la interfaz. Los UIDLs son lenguajes de alto
nivel para describir las características de interés del interfaz de usuario respecto al resto
de una aplicación interactiva. Así que los UIDLs potencialmente pueden ser empleados
para describir formalmente algunos de los modelos empleados por los MB-UIDEs.
Sin embargo, el mundo de la industria de las tecnologías de la información (TI) ha
sido incapaz de asimilar estos avances. Los investigadores aducen que aunque algunos
de los sistemas propuestos pueden generar interfaces de usuario de una manera
automática, en su mayoría estos sistemas están acotados a un dominio específico y su
aplicación no puede ser generalizada [3,4]. Por esta razón gran parte de la investigación
en este ámbito se ha enfocado a proponer MB-UIDES y UIDLs de propósito general y
que permiten generar interfaces de usuario (IUs) para múltiples dispositivos y para
aplicaciones de cualquier dominio (AUIML [5], UIML [6], XIML [7], etc...). Es
IX Congreso Internacional Interacción, Albacete 9-11 de Junio de 2008
Grupo LoUISE-Universidad de Castilla-La Mancha
414 A. Delgado, A. Estepa, J. A. Troyano, R. Estepa
posible que esta línea haya alejado aún más del mundo empresarial las propuestas
provenientes de la investigación.
Estamos convencidos de que la construcción de IUs empleando MB-UIDEs y
UIDLs será finalmente adoptada por las TIs, pero para ello, será necesario reducir la
complejidad que presentan los sistemas actuales así como cumplir algunos requisitos
demandados por la industria. En primer lugar, es necesario acotar el dominio de los
MB-UIDEs y el número de dispositivos para los que se generan IUs. Esto permitirá
reducir la complejidad de los generadores automáticos de IUs y la de la sintaxis de los
UIDLs empleados. Para acercar estos sistemas a la industria es importante utilizar
lenguajes de modelado conocidos por los desarrolladores siempre que sea posible.
Finalmente, es indispensable ofrecer herramientas para la reutilización de IUs
construidos con anterioridad (sólo unos pocos UIDLs lo permiten hoy día y de una
forma limitada: XICL [8], XUL [9]). Otros requisitos demandados por la industria son:
el desarrollo rápido de los IUs, la independencia a diversos niveles (S.O., BB.DD.,
etc...) y la seguridad (aspecto sobre el que hay pocas propuestas).
En este artículo se presenta WAINE, un MB-UIDE con el objetivo de ser empleado
en proyectos profesionales sobre un dominio reducido que comprende la problemática
de las aplicaciones de gestión. Este MB-UIDE utiliza un UIDL muy sencillo para la
descripción de varios modelos de la IU (MIUs), permitiendo emplear otros lenguajes
bien conocidos en algunos de ellos. También permite la reutilización de los modelos
existentes de manera flexible.
El resto del artículo tiene la siguiente estructura. La siguiente sección trata los
modelos empleados por el MB-UIDE. La sección 3 presenta el lenguaje desarrollado
para el modelado de la IU. La sección 4 describe brevemente la arquitectura del
sistema. Los aspectos relacionados con la reutilización del modelado se tratan en la
sección 5 y en la 6 se muestra un resumen de las aplicaciones desarrolladas con
WAINE. Finalmente, la sección 7 concluye el artículo.
2
Modelado de la IU en WAINE
Aunque no existe un acuerdo sobre cuál es el conjunto mínimo de modelos para
definir una IU, normalmente en los MB-UIDEs aparecen los siguientes modelos: de
dominio, de usuarios, de tareas-diálogos y de presentación [1]. En esta sección se va a
describir cada componente de los modelos que hemos elegido para describir una IU en
WAINE. Posteriormente se explicará la relación de dichos elementos empleando para
ello un diagrama entidad relación (DER).
2.1.
Particularización de los modelos para WAINE
WAINE utiliza un conjunto muy simplificado de modelos declarativos para
especificar los aspectos relevantes de la IU. Pensamos que es uno de los factores clave
para el éxito del MB-UIDE.
El modelo de dominio: En el caso particular de WAINE el dominio de las
aplicaciones está acotado a los sistemas típicos de gestión (p.e. sistemas de control
de stock, de acreditaciones, etc...). Generalmente se emplea un DER o un diagrama
Un sistema de desarrollo de interfaces web basado en modelos
415
de clases (DC) para especificar el modelo del dominio (MDO). Posteriormente, estos
diagramas pueden ser traducidos a un conjunto de tablas o clases empleando
herramientas para la generación automática de código.
El modelo de usuario: Los usuarios se clasifican en grupos que representan a los
diferentes roles. El acceso a las diferentes tareas que un usuario puede realizar desde
la IU está basado en asignar diferentes menús a grupos de usuarios o a usuarios
particulares. Un usuario tiene entre sus atributos un nombre, algún tipo de
información para su autentificación, un menú principal, su perfil (que permite
personalizar el sistema a sus preferencias).
El modelo de tareas: Como se ha comentado en el punto anterior, las actividades
que un usuario puede realizar en el sistema estarán restringidas a aquellas a las que
puede acceder a través de los menús a los que tiene acceso. Con ello se persigue una
simplificación del modelo de tareas (MT).
Fig. 1. (a) Relación de usuarios, menús y opciones. (b) Modelos de la IU.
Como se muestra en la figura 1.a los usuarios tienen asociado un menú principal,
que está compuesto por un conjunto de opciones. Cada opción permite lanzar un
formulario, una acción o simplemente enlazar con otro recurso empleando una URL.
Generalmente las acciones se invocan para ejecutar determinadas funcionalidades
del sistema y los formularios para presentar/manipular datos.
El modelo de presentación abstracta: En el modelo de presentación abstracta
(MPA) el elemento básico es el formulario. Se pueden definir dos tipos de
formularios:
1. Formularios simples: Los formularios simples se emplean para presentar y/o
manipular datos que provienen de una entidad del MDO (o sea, una tabla o un
objeto). Las principales propiedades de un formulario simple son su origen de
datos, un conjunto de campos, un conjunto de acciones y un conjunto de eventos.
Un campo se caracteriza por su tipo y origen. El tipo representa el dominio del
campo, es decir el conjunto de valores que el campo admite. El origen del campo
416 A. Delgado, A. Estepa, J. A. Troyano, R. Estepa
es un sólo elemento del origen de datos del formulario (por ejemplo una columna
de una tabla en una base de datos). Algunas veces el origen de un campo puede
ser una expresión en la que intervienen valores de otros campos, en este caso les
llamamos campos calculados. Finalmente hay que indicar que un campo dispone
de atributos como sólo-lectura/lectura-escritura o visible/oculto. Estos atributos
pueden ser modificados para obtener distintas vistas de un formulario.
2. Formularios compuestos: En muchos casos, un conjunto de elementos del MDO
están relacionados entre sí, y un formulario simple no es suficiente para construir
un IU usable. Los formularios compuestos (llamados structs en nuestro modelo)
son formularios cuyas componentes son otros formularios (simples o compuestos,
ver figura 3.b).
El modelo de presentación concreta: En el modelo de presentación concreta
(MPC) se especifican aspectos como colores, fuentes, widgets, plantillas para
formularios, etc... Estos parámetros pueden ser asignados a la aplicación completa o
un determinado formulario, menú, usuario o grupo.
Se pueden emplear distintos métodos para distribuir los campos en un formulario
(p.e. combo, tabla, ficha, rejilla, etc...). Pero un programador podría definir sus
propios métodos de distribución extendiendo clases existentes o creando algunas
nuevas. También es posible definir la distribución de campos para un formulario
concreto empleando plantillas de formularios.
Finalmente un widget define cómo un campo debe ser presentado y editado. Los
programadores pueden escribir sus propios widgets para mejorar la usabilidad de su
IU creando algunos nuevos o parametrizando los existentes.
Modelo de seguridad: Aunque no nos consta la existencia de trabajos en los que se
defina un modelo de seguridad en MB-UIDEs, creemos que es necesario desarrollar
este modelo para que estos sistemas sean aceptados por las TIs. El principal objeto
de este modelo es la lista de control de acceso (LCA) que controla el acceso de los
usuarios o grupos a las acciones del sistema o a las funcionalidades ofrecidas por los
formularios.
2.2.
Enlazando los modelos
Para enlazar los modelos de la IU al MDO se emplean acciones y eventos. Las
acciones son procedimientos disparados o por un botón de un formulario o por una
opción de un menú. Una acción puede también dispararse de forma automática antes o
después de un evento como la creación/destrucción de un formulario o el empleo de
acciones de manipulación de datos. En el conjunto de acciones potenciales que pueden
ser incluidas en un formulario, como mínimo deben aparecer las del modelo CRUD
(Create, Retrieve, Update and Delete), pero el sistema debe permitir a los usuarios
definir sus propias acciones y eventos.
2.3.
Relación entre objetos del modelo
Finalmente, como resumen de todo lo expuesto en esta sección, todos los
componentes de los modelos de la IU son representados en un DER (ver la figura 1.b).
Un sistema de desarrollo de interfaces web basado en modelos
417
De acuerdo con este diagrama, podemos potencialmente almacenar todos los
componentes de los modelos de la IU en una base de datos y generar a partir de ella las
IUs de forma automática. Esta es la idea en la que se basa la arquitectura que se
presenta en la sección 4.
3
El lenguaje de modelado
XML se ha convertido en un estándar de-facto en muchos campos de las tecnologías
de la información y la IHM no es una excepción. En la tabla 1 se muestra un breve
resumen de algunos UIDLs basados en XML. Para cada lenguaje se muestra los
modelos que soporta y el número de etiquetas que emplea (como un indicador básico
de su complejidad).
Lenguaje
AUIML
ASL
IMML
UsiXML
UIML
XICL
XIML
XUL
MDO
MU
X
X
X
X
X
X
MT
X
X
X
X
X
X
X
X
MPA
X
X
X
X
X
X
X
X
MPC
~
X
X
tags
Más de 55
50
52
1195
36
13
106
Más de 60
Tabla 1. Comparativa de UIDLs
Aunque estos lenguajes reúnen un conjunto de características bastante
interesantes [2], se ha optado por la definición de un UIDL propio para el MB-UIDE
por las siguientes razones:
1. No todos los lenguajes están disponibles de forma libre (e.g XIML).
2. Algunos lenguajes presentan demasiada complejidad para los objetivos que se
pretenden alcanzar (e.g UsiXML, ver columna tags de la tabla 1).
3. Algunos lenguajes están orientados a la solución de otros problemas (p.e. XUL,
XICL, etc...).
4. Otros no dan soporte suficiente para modelar la IU de un sistema completo (p.e.
AUIML, UIML, XUL, XICL).
5. En general, los UIDLs existentes son complejos y presentan una larga curva de
aprendizaje.
El UIDL que se propone es un lenguaje XML llamado ASL (Application interface
Specification Language). Se ha diseñado con los objetivos de obtener un equilibrio
entre en número de modelos soportado y su complejidad. De este modo, ASL sólo
soporta el MU, MT, MPA, y algunos aspectos del MPC. Otros aspectos del MPC como
colores, fuentes, etc... se pueden especificar en archivos de configuración o empleando
CSS. Las plantillas para los formularios se pueden especificar en HTML con
comentarios especiales. La estructura de un documento ASL tiene las siguientes
secciones:
La cabecera: Suele contener meta-información del documento (p.e. autor, fecha de
creación, etc...).
418 A. Delgado, A. Estepa, J. A. Troyano, R. Estepa
Grupos y usuarios: Descripción usuarios, grupos y sus propiedades.
Menús: Conjunto de los menús a los que pueden acceder los usuarios.
Formularios y structs: Formularios simples y compuestos de la IU.
LCAs: Listas de control de acceso implicando a usuarios/grupos con
formularios/acciones.
La sintaxis completa para el lenguaje ASL en formato dtd está disponible en
http://waine.us.es/DTD/WAINE/0.1/asl.dtd. En el Apéndice A se muestra parte del
código para una aplicación de ejemplo. El código completo, esquema de la base de
datos y acceso a dicha aplicación está disponible en http://waine.us.es/demo/sample.
4
Arquitectura del MB-UIDE
Esta sección presenta la arquitectura implementada, que está basada en cuatro
elementos principales como se ilustra en la figura 2:
Fig. 2. Arquitectura del sistema
El repositorio del MDO (RMDO). Mantiene los objetos de la capa de negocio. El
sistema usa una capa de abstracción de acceso a datos extensible que permite la
conexión a distintas fuentes de datos, lo que proporciona independencia en este
sentido.
El repositorio de los MIUs (RMIU). Como se ha comentado anteriormente, se puede
emplear una base de datos para almacenar los elementos de la IU (formularios,
usuarios, etc...). El modelo conceptual de esa base de datos se presenta en la figura
1.b. Como en el punto anterior el (RMIU) es accedido empleando la capa de
abstracción de acceso a datos, lo que permite mayor flexibilidad e independencia al
sistema.
El motor de la IU. El motor es un run-time que accede a la RMIU para obtener la
información necesaria para generar de forma automática los elementos de la IU y
accede al RMDO para realizar las operaciones y/o eventos básicos (create, update,
and delete). Para aquellas aplicaciones en las que existan reglas de negocio
complejas, los desarrolladores pueden definirlas empleando lenguajes de
Un sistema de desarrollo de interfaces web basado en modelos
419
programación. Actualmente es posible definir ese código en PHP, en el lenguaje
nativo del sistema que soporta el RMDO o invocar a procedimientos externos
escritos en cualquier lenguaje de programación. Esto dota de gran flexibilidad al
sistema.
El repositorio de configuraciones. El MPC y otras capacidades del sistema pueden
ser configuradas, personalizadas o extendidas de una forma sencilla asignando
algunos parámetros del repositorio de configuraciones.
5
Reutilización de los modelos
La reutilización de los modelados es un factor clave para que un MB-UIDE pueda
tener aceptación en la industria de las tecnologías de la información. WAINE permite
tres métodos para reutilizar modelados previos o componentes de los mismos.
Xinclude: En aquellos MB-UIDEs que usan UIDLs basados en XML, el empleo de
XInclude representa un método inmediato para reutilizar especificaciones previas o
fragmentos de las mismas, así como para modularizar especificaciones extensas.
Cualquier objeto de un modelado previo también puede ser extraído a un documento
XML e incluido en nuevas especificaciones que requieran de su funcionalidad.
Paquetes: Los paquetes son empleados ampliamente en informática, sin embargo su
uso para la reutilización de modelos de IUs no ha sido propuesta aún. Los paquetes
permiten reutilizar componentes de un modelado previo aunque el lenguaje de
modelado no esté basado en XML. De hecho, normalmente un componente
reutilizable de cierta complejidad en la IU necesitará de objetos pertenecientes a
distintos modelos y en cada uno de esos modelos pueden emplearse lenguajes
distintos.
Centralización y federación de repositorios de IUs: Como se ha comentado en la
sección 4 WAINE utiliza un repositorio para almacenar los objetos de los modelos
de la IU. Esto permite que objetos de modelado comunes a un grupo de aplicaciones
sea centralizado en un repositorio de uso compartido. También permite que un
nuevo modelado sea construido por federación de objetos de modelados existentes.
6
Aplicaciones desarrolladas
WAINE está siendo empleado desde hace tres años en el desarrollo de diversas
aplicaciones y proyectos de fin de carrera en la Escuela Superior de Ingenieros de la
Universidad de Sevilla (ver http://waine.us.es/demo). Estos proyectos han sido
realizados por alumnos del último curso de Ingeniería de Telecomunicaciones. El
periodo de aprendizaje de las herramientas no excedió un mes y el desarrollo de las
aplicaciones se realizó en un periodo de entre cuatro y seis semanas tras el periodo de
aprendizaje. Según la opinión de los estudiantes, podrían desarrollar una nueva
aplicación de una complejidad similar en menos de dos semanas.
En el año 2.007 WAINE fue seleccionado para desarrollar una serie de aplicaciones
para el centro de proceso de datos de la Escuela Superior de Ingenieros de la
Universidad de Sevilla. Dentro de este programa se han desarrollado hasta el momento
420 A. Delgado, A. Estepa, J. A. Troyano, R. Estepa
cinco aplicaciones, de las cuales la más importante es un sistema de reservas de
estancias de la escuela (aulas, laboratorios, salas, etc...) ver figura (figura 3.a).
Actualmente se trata de la aplicación de mayor tamaño desarrollada con WAINE,
conteniendo hasta el momento más de 48.000 reservas para el curso actual, siendo
usada por cientos de usuarios (alumnos, profesores y personal no docente) clasificados
en diez grupos.
Fig. 3. (a) Aplicación de reservas. (b) Aplicación de ejemplo (sample)
En la tabla 2 se presentan algunos indicadores de algunas de las aplicaciones
desarrolladas hasta el momento con WAINE. La columna etiquetada como NMOM
indica el número medio de opciones por menú de usuario, la etiquetada como T+V
contiene la suma del número de tablas y vistas de la aplicación. Finalmente la columna
etiquetada con #LC muestra el número de líneas de código ASL necesarias para cada
aplicación.
Aplicación
Dbbibtex
dbconferences
Inveq
m3m
Pracemp
Reservas
Sysbook
Grupos
Users
NMOM
3
3
2
3
1
10
3
3/*
3/*
2/*
3/*
1
10/*
3/*
20,33
15,00
24,00
20,33
20,00
25,67
6,67
Forms
.
27
29
26
42
23
89
9
Structs
46
38
23
62
18
153
22
Acc.
Tablas
Vistas
T+V
26
2
0
3
0
6
3
7
19
16
25
13
34
4
8
3
24
11
7
17
2
15
22
40
36
20
51
6
#LC
1152
1126
721
1721
224
4995
692
Tabla 6. Estadísticas de algunas aplicaciones.
7
Conclusiones
En este artículo se ha presentado WAINE, un MB-UIDE orientado a las aplicaciones
típicas de gestión. El MB-UIDE propuesto permite generar de forma automática los
interfaces web necesarios para una aplicación del dominio: desde el acceso a la
aplicación a los menús o formularios de manipulación de datos. La arquitectura del
sistema presenta independencia a distintos niveles y es flexible y personalizable. La
Un sistema de desarrollo de interfaces web basado en modelos
421
experiencia adquirida tras el desarrollo de varias aplicaciones nos permite concluir que
WAINE es una alternativa factible para el desarrollo de IUs de aplicaciones de mediana
complejidad ya que el sistema presenta una corta línea de aprendizaje, permite un
desarrollo rápido de IUs y la reutilización de modelados previos empleando varios
métodos.
Referencias
1. da Silva, P.P.: User interface declarative models and development environments: A survey.
Interactive Systems - Design, Specification, and Verification: 7th IWS (2001) 207±226
2. Souchon, N., Vanderdonckt, J.: A review of xml-compliant user interface description
languages. LNCS. Interactive Systems. Design, Specification, and Verification 2844 (2003)
377391
3. Ali, M.F., Perez-Quiones, M.A., Shell, E., Abrams, M.: Building multi-platform user
interfaces with uiml. 2002 International Workshop of Computer-Aided Design of User
Interfaces (2002)
4. Puerta, A., Eisenstein, J.: Ximl: A multiple user interface representation framework for
industry. Mutiple UIs: Cross-Platform Applications and Context-Aware Intefaces (2005) 119±
148
5. Azevedo, P., Merrick, R., Roberts, D.: Ovid to auiml - user-oriented interface modelling.
Technical report, UML2000 (2000)
6. Abrams, M., Phanouriou, C., Batongbacal, A.L.: Uiml: An appliance-independent xml user
interface language. (1999)
7. Puerta, A., Eisenstein, J.: Ximl: A universal language for user interfaces. international
conference on Intelligent user interfaces (2002)
8. de Sousa, L.G., Leite, J.C.: XICL An Extensible Mark-up Language for Developing User
Interface and Components. Springer Netherlands (2005)
9. Mozilla: Xul. Technical report
422 A. Delgado, A. Estepa, J. A. Troyano, R. Estepa
Apéndice A: Código de una aplicación de ejemplo
<asl>
<include href="/usr/local/lib/waine-0.1/include/meta.asl"/>
<head>
<meta class="AppInfo" name="appname" value="sample"/>
<meta class="AppInfo" name="ver" value="0.1"/>
<meta class="AppInfo" name="date" value="2006-09-21"/>
<meta class="AppInfo" name="author" value="A.L.Delgado"/>
</head>
<group gid="1" name="secretary">
<user uid="1" name="joe" passwd="joekey" mainid="main_secretary"/>
</group>
<main id="main_secretary" caption="en=Default user menu|es=Menu del usuario por
defecto">
<menu caption="en=Management|es=Gestion">
<option caption="en=Suggestions|es=Sugerencias" call="st_suggestion"/>
</menu>
<menu caption="en=Misc|es=Otros">
<option caption="en=Author|es=Autor" call="meta.struct.appinfo"/>
<option caption="en=Logout|es=Salir" url="_LOGOUT"/>
</menu>
</main>
...
<form id="frm_people" source="people" caption="People">
<orderby>name</orderby>
<fields>
<key source="pk"/>
<string source="name" caption="Name" len="40" maxlen="80"/>
<string source="address" caption="Address" len="40" maxlen="80"
canbenull="Y"/>
<string source="phone" caption="Phone" len="13" canbenull="Y"/>
<int source="fkcategory" caption="Category">
<search>frm_category</search>
<searchfield>name</searchfield>
</int>
</fields>
<events>...</events>
</form>
...
<struct id="st_suggestion" type="relation">
<param name="form_split" value="rows=80,*"/>
<param name="formid" value="frm_category"/>
<param name="form_type" value="combo"/>
<param ord="2" name="structid" value="st_suggestion_aux"/>
</struct>
<struct id="st_suggestion_aux" type="relation">
<param name="form_split" value="rows=240,*"/>
<param
<param
<param
<param
<param
<param
<param
<param
<param
<param
</struct>
</asl>
name="formid" value="frm_people"/>
name="form_type" value="form"/>
name="button_data" value="1"/>
name="source_filter_field" value="fkcategory"/>
name="navigator_fields" value="name"/>
name="navigator_position" value="W"/>
ord="2"
ord="2"
ord="2"
ord="2"
name="formid" value="frm_suggestion"/>
name="form_type" value="table"/>
name="button_data" value="1"/>
name="source_filter_field" value="fkpeople"/>

Documentos relacionados