Download Especificación CUI

Document related concepts
no text concepts found
Transcript
TicXML: Generando diferentes
interfaces de usuario finales a
partir de una única especificación
declarativa
Juan Carlos Peña Rodríguez
Índice de contenidos
1. Contexto
 2. Motivación y objetivos
 3. Análisis y diseño
 4. Implementación
 5. Ejemplo
 6. Conclusiones y trabajos futuros

Contexto
Contexto
Definición de Interfaz de Usuario (UI): Forma en la que los
usuarios pueden comunicarse con un sistema.

En la actualidad existen multitud de interfaces de usuario
diferentes.

Contexto

Las interfaces de usuario se pueden clasificar
en:
 Alfanuméricas
o gráficas
 Hardware o software
Contexto

Una misma idea de interfaz de usuario, da lugar a diferentes
implementaciones dependientes del lenguaje y la plataforma
utilizada.

A continuación se muestra un programa de calculadora en
diferentes implementaciones:
Aplicación de
windows
Java
HTML
Contexto

La tendencia actual en el desarrollo de software (y en el de UI) se
basa en el uso de modelos. Ejemplo de ello es la propuesta MDA
(Model-Driven Architecture) de la OMG, y en lo que se refiere al
desarrollo de IU la tendencia de desarrollo basada en modelos está
vigente desde principios de los 90, existiendo múltiples propuestas.

Modelo: Idealización de la realidad utilizada para plantear un
problema, normalmente de manera simplificada en términos
relativos.

Utilización de los modelos:
Representaciones de partes del sistema.
 Elementos activos en el proceso de desarrollo.

Motivación y objetivos
Motivación

Estudio de viabilidad y desarrollo de un sistema que
proporcione los pasos necesarios para obtener
resultados tácitos, en forma de código, a partir de
modelos que especifiquen la configuración de una
interfaz de usuario.
Modelo
independiente
del modo de
interacción
Código: Java y
HTML
Objetivos

Estudiar la manera en la que se desarrollan las interfaces de
usuario, centrándose en las partes comunes y replicadas.

Identificar un marco que respalde la transformación de modelos.

Examinar las propuestas existentes en torno a los modelos sobre las
interfaces de usuario.

Seleccionar una propuesta concreta que sirva como base para el
desarrollo del sistema.

Estudiar diversos lenguajes de implementación de interfaces de
usuario.
Objetivos

Definir las ideas y técnicas necesarias para transformar los modelos
de interfaces de usuario en código.

Familiarizarse con algún lenguaje de transformación que permita
convertir los modelos en implementaciones.

Implementar una herramienta que integre de una forma cómoda las
transformaciones.

Estudiar la eficiencia de la herramienta y la metodología presentada
con algún ejemplo de uso.
Análisis y diseño
Análisis



Siguiendo con la filosofía de MDA, se llevarán a cabo la clasificación
y transformación de modelos de la siguiente forma:
PIM: Platform Independient Model. Modelo independiente de la plataforma
PSM: Platform-Specific Model. Modelo especifico de la plataforma
Análisis

Para la representación y almacenamiento de
modelos es necesario el uso de lenguajes de
modelado:
 UsiXML
 XIML
 TERESA
 Thinlet
 Laszlo
Análisis

UsiXML:
 Se
trata de una propuesta de la universidad católica
de Louvain (Bélgica).
 Nace
con el propósito de describir la interfaz de
usuario a partir de diversos modelos de diseño,
independientemente de las características concretas
de cada lenguaje ó plataforma.
 Será
uno de los pilares fundamentales en los que se
apoyará el trabajo desarrollado.
Análisis

UsiXML:

El trabajo se centrará en el modelo de interfaz de usuario a nivel
concreto (CUI, Concrete User Interface).

Hay disponibles un amplio abanico de herramientas relacionadas con la
propuesta:
Diseño

Se seguirá la hoja de ruta
en el diseño y desarrollo
del sistema.
Hoja de ruta
Diseño

El primer paso consiste en definir
el modelo de la interfaz de
usuario.

Se hace uso de la herramienta
GrafiXML que permite situar los
componentes de manera sencilla,
obteniendo como resultado el
fichero UsiXML con la
especificación de la interfaz.
Hoja de ruta
Diseño

Definición del modelo con GrafiXML
Más información en: http://www.usixml.org/index.php5?mod=pages&id=12
Diseño

El siguiente pasó consistirá
en modificar la especificación
obtenida en GrafiXML.

El objetivo de estas
modificaciones será el de
personalizar el modelo.
Hoja de ruta
Diseño
Especificación CUI-UsiXML

Modificación y eliminación de atributos:
Diseño
Especificación CUI-UsiXML

Adición de contenedores gráficos:
• Consideración previa: un contenedor gráfico sirve para alojar
componente gráficos, se utilizan para organizar la disposición de los
mismos.
• Ejemplo:
Diseño
Especificación CUI-UsiXML

Adición de contenedores gráficos:
Diseño
Especificación CUI-UsiXML

Realizando esta serie de modificaciones se obtendrá la especificación de la
interfaz en UsiXML de forma correcta en forma de archivo.

Este archivo servirá como base para las transformaciones.
Diseño

Se estudiarán las implementaciones
finales, es conveniente estudiar la
forma de éstas antes de la
transformación para poder realizar la
misma de la manera más óptima.

Java y HTML muestran dos tipos de
lenguajes: de texto plano y
etiquetado, respectivamente.
Hoja de ruta
Diseño
- Estructura de un programa en Java
/* Importar librerías… */
public class Main
{
public Main(){}
public static void main(String[] args)
{
/* Aquí los componentes generados en la transformación */
/* Hacer visible la ventana o popup generado en la especificación */
variable_ventana_generada.setVisible(true);
}
}
Diseño
- Componentes de interfaz de usuario en Java
* JFrame
Constructor: JFrame(String texto)
Métodos:
setSize(int x,int y)
* JButton
Constructor: JButton()
Métodos:
setText(String text)
setEnabled(boolean op)
* JComboBox
Constructor: JComboBox(String *opcs)
Métodos:
setEnabled(boolean op)
Diseño
- Estructura de un programa en HTML
<HTML>
<HEAD>
<TITLE> Titulo, cogido de la especificación CUI </TITLE>
</HEAD>
<BODY>
Aquí los componentes generados en la transformación
</BODY>
</HTML>
Diseño
- Componentes de interfaz de usuario en HTML
* RadioButton
Etiqueta: <input type="radio">
Atributos: disabled, name
* Botón
Etiqueta: <button>“ok"</button>
Atributos: type, disabled
* ComboBox
Etiqueta: <select>
<option>”op”</opction> </select>
Atributos: disabled, name
Diseño

La tarea más importante del
desarrollo consiste en la
transformación.

Como se expresa en la hoja de ruta,
se transformará la especificación
CUI-UsiXML a los lenguajes de
implementación Java y HTML.
Hoja de ruta
Diseño
Tareas necesarias para abordar las transformaciones:
• Estudiar cómo se estructura la plataforma destino para realizar una
transformación óptima.
• Interpretar los contenedores gráficos para situar los componentes con el orden
relativo correcto.
• Transformar los componentes de interfaz de usuario.
Diseño
• Interpretar los contenedores para situar los
componentes con el orden relativo correcto
- Los contenedores contienen a componentes gráficos:
<Contenedor … … …>
<Componente_gráfico1 …/>
…
<Componente_gráficoN …/>
</Contenedor>
- Tipos de orientaciones:
- Vertical:
<box id="b1" name="b" type="vertical"> … </box>
- Horizontal:
<box id="b1" name="b" type=“horizontal">.. </box>
Diseño
• Interpretar los contenedores para situar los
componentes con el orden relativo correcto
- Añadir componentes a los contenedores:
Diseño
• Transformar los componentes de interfaz de usuario
- Recolocación de etiquetas
Diseño
• Transformar los componentes de interfaz de usuario
- Interpretación de etiquetas que dan lugar a componentes distintos
Diseño
• Transformar los componentes de interfaz de usuario
- Presencia de atributos que añaden nuevos atributos o rutinas
Diseño
• Implementación de las transformaciones: XSLT
• El lenguaje XSLT permite transformar documentos XML en otros documentos, ya
sea en XML u otros.
• Se basa en el uso de reglas y plantillas. Mediante la combinación de ambas se
pueden conseguir los archivos de salida deseados.
• Es de naturaleza declarativa, el orden en el que se sitúen las plantillas, reglas, etc.
no es determinante.
Implementación
Implementación

Las ideas presentadas en el apartado anterior darán lugar a la
implementación de una herramienta que automatice el proceso.

La herramienta se llama TicXML (Transform In a Click usiXML) y se
encuentra dentro del organigrama de las herramientas de UsiXML:
Implementación
• TicXML
• Se ha construido utilizando el lenguaje de programación Java, para ello
se ha utilizado el IDE de libre distribución NetBeans.
• Facilita el proceso mostrando los pasos en forma de wizard.
• Para el manejo de las transformaciones XSLT se han utilizado las librerías
Dom4j creadas a tal efecto, con las que se da soporte para cargar y
transformar los archivos XML, obteniendo así el archivo resultante.
Implementación
• TicXML
Aquí una foto del splash
Ejemplo
Ejemplo
Video probando todo…
Conclusiones y trabajos futuros
Conclusiones

Con el trabajo realizado en el presente proyecto final de
carrera se puede concluir que se han conseguido los
objetivos que se marcaron inicialmente:

Estudiar la manera en la que se desarrollan las interfaces de usuario,
centrándose en las partes comunes y replicadas.


Mediante el estudio de las interfaces de usuario actuales.
Identificar un marco que respalde la transformación de modelos.

La filosofía de la propuesta MDA apoya la utilización de modelos y las
transformaciones entre ellos.
Conclusiones

Examinar las propuestas existentes en torno a los modelos sobre las
interfaces de usuario.


Seleccionar una propuesta concreta que sirva como base para el
desarrollo del sistema.


Recorriendo las propuestas de lenguajes de especificación de interfaces de
usuario.
Se seleccionó UsiXML como propuesta base.
Estudiar diversos lenguajes de implementación de interfaces de usuario.

Los elegidos fueron: Java, como representante de los lenguajes de texto
plano y HTML como representante de los lenguajes etiquetados.
Conclusiones

Definir las ideas y técnicas necesarias para transformar los modelos de
interfaces de usuario en código.


Familiarizarse con algún lenguaje de transformación que permita
convertir los modelos en implementaciones.


Desarrollo de técnicas de transformación, ideas reflejadas en las animaciones
de las transparencias del apartado diseño.
Se adoptó el lenguaje XSLT para pasar de archivos xml a HTML o Java.
Implementar una herramienta que integre de una forma cómoda las
transformaciones.

Implementación de la herramienta TicXML.
Conclusiones
- Con las ideas presentadas y la evidencia de la posibilidad de llevarlo a
cabo con la herramienta TicXML. Se concluye que esta línea de
investigación se estima importante y prometedora, ya que si alguna
empresa de desarrollo lo utilizara tendría ante sí la posibilidad de portar las
herramientas a cualquier lenguaje de los disponibles o futuros de forma
totalmente o parcialmente automática, ahorrando así mucho tiempo y, en
consecuencia, dinero.
Trabajos futuros

Desarrollar transformaciones para más implementaciones, en la misma
línea y de forma similar a las ya realizadas.

Estudio de un sistema similar al presentado cambiando el punto de
partida, abordando otro CUI como por ejemplo para teléfonos móviles.

Realización de un sistema complementario que se ocupe de hacer el
paso inverso.

Integración de las ideas presentadas a mayor escala, es decir,
posibilidad de interactuar con patrones y acciones de forma integrada.

Consideración del comportamiento/funcionalidad que debe ofrecer la
aplicación.
Bibliografía
Montero, F. Tesis doctoral: Integración de calidad y experiencia en el desarrollo de interfaces de usuario dirigido por modelos. (Julio, 2005)
Brown, A. An introduction to Model Driven Architecture. http://www-128.ibm.com/developerworks/rational/library/3100.html . (Febrero,
2004)
XML. Extensible Markup Language (XML) 1.0 (Fourth Edition). http://www.w3.org/TR/REC-xml/ . (Septiembre, 2006)
Paternò, F. Model Based Design and Evaluation of Interactive Applications, Springer-Verlag, London, 1999.
Vanderdonckt, J. A MDA-Compliant Environment for Developing User Interfaces of Information Systems, Proc. of 17th Conf. on Advanced
Information Systems Engineering. CAiSE'05 (Porto, 13-17 June 2005)
UsiXML. USer Interface eXtensible Markup Language. http://www.usixml.org. Consultado en 2007
IdealXML. Pattern-oriented tool IdealXML. http://www.usixml.org/index.php?view=page&idpage=34 . Consultado en 2007
XIML. XIML provides a universal specification for interaction data and knowledge that enables a level of control over user interfaces never
befote possible. 1990-2004. http://www.ximl.org/ . Consultado en 2007
GrafiXML. GrafiXML graphical tool. http://www.usixml.org/index.php?view=page&idpage=10 . Consultado en 2007
Bibliografía
TERESA. Transformation Enviroment for inteRactivE Systems representAtions. http://giove.isti.cnr.it/teresa.html . Consultado en 2007
Thinlet Thinlet tool. http://www.thinlet.com/ . Consultado en 2007
Laszlo. Laszlo systems. http://www.laszlosystems.com/ . Consultado en 2007
Java. Java programing language. http://java.sun.com/ . Consultado en 2007
Eckel, B. Piensa en Java, Editorial: Prentice may, Año: 2002
JavaAlmanac. The Java Developers Almanac 1.4. http://www.javaalmanac.com . Consultado en 2007
NetBeans. NetBeans IDE. http://www.netbeans.org . Consultado en 2007
HTML. Guía de HTML. http://gias720.dis.ulpgc.es/Gias/Cursos/Tutorial_html/indice.htm . Consultado en 2007
XSLT. XSLT language. http://www.w3.org/TR/xslt . Consultado en 2007
Dom4j. The flexible XML framework for Java. http://www.dom4j.org . (Mayo, 2005)
TicXML: Generando diferentes
interfaces de usuario finales a
partir de una única especificación
declarativa
Juan Carlos Peña Rodríguez