Table Of ContentFACULTAD DE INFORMÁTICA
UNIVERSIDAD POLITÉCNICA DE MADRID
UNIVERSIDAD POLITÉCNICA DE MADRID
FACULTAD DE INFORMÁTICA
TRABAJO FIN DE CARRERA
HERRAMIENTA DE SOPORTE DE PATRONES DE DISEÑO
AUTORES: José María Pérez Vence & Alejandro García García
TUTOR: Ana María Moreno Sanchez-Capuchino
Resumen
En nuestros tiempos, el desarrollo del software es un negocio que mueve grandes cantidades
de recursos, tanto económicos como de personas. Es necesario desarrollar aplicaciones en
tiempos y esfuerzos cada vez más pequeños para mejorar la productividad del ejercicio. En
esta tesis se desarrolla un proceso para aplicar patrones de diseño software a diseños
específicos, mediante la creación de un sistema experto y una librería para generar
documentos de intercambio de metamodelos.
Abstract
Nowadays, development of software is a business that moves a large amount of resources,
both financial and people. It is necessary to develop applications in time and effort getting
smaller to improve the productivity of the exercise. In this thesis is developed a process to
apply software design patterns to specific designs by means of an expert system and a library
for generating metamodels exchange documents.
1
Índice
Resumen ........................................................................................................................................ 1
Abstract ......................................................................................................................................... 1
Índice ............................................................................................................................................. 2
1 Introducción .......................................................................................................................... 4
1.1 Presentación del problema ........................................................................................... 4
1.2 Descripción de la estructura del documento ................................................................ 7
2 Material base – Directrices de usabilidad ............................................................................. 8
3 Objetivos ............................................................................................................................. 14
3.1 Roles y responsabilidades ........................................................................................... 14
3.1.1 Usuario/Desarrollador ......................................................................................... 14
3.1.2 Administrador y/o Experto .................................................................................. 14
3.2 Descripción de objetivos ............................................................................................. 15
3.2.1 Administración .................................................................................................... 15
3.2.2 Usuario/Desarrollador ......................................................................................... 16
3.3 Satisfacer objetivos ..................................................................................................... 17
3.3.1 Administración .................................................................................................... 17
3.3.2 Usuario/Desarrollador ......................................................................................... 18
4 Conocimientos ..................................................................................................................... 20
4.1 Sistema Experto ........................................................................................................... 20
4.2 UML ............................................................................................................................. 21
4.2.1 MOF ..................................................................................................................... 22
4.3 XML .............................................................................................................................. 23
4.4 XSD .............................................................................................................................. 24
4.5 Lógica funcional (Acciones, flujos y estados) .............................................................. 25
4.6 XMI .............................................................................................................................. 26
5 Investigación ....................................................................................................................... 27
5.1 Guía de diseño ............................................................................................................. 28
5.1.1.1 Generar xsd (XML SchemaDocument) ............................................................ 29
5.2 Guía de elicitación ....................................................................................................... 38
5.2.1 Bases de Datos .................................................................................................... 39
5.2.2 Generar XSD (XML SchemaDocument) ............................................................... 40
5.2.2.1 Automatizar la definición de responsabilidades. ............................................ 42
5.2.2.2 Manejo de modelos en el sistema. ................................................................. 43
2
5.3 Ofrecer modelos reusables ......................................................................................... 54
5.3.1 Primera aproximación ......................................................................................... 55
5.3.1.1 XML Data Binding ............................................................................................ 56
5.3.1.2 De XML a UML ................................................................................................. 61
5.3.1.3 Reflexiones de la primera aproximación ......................................................... 62
5.3.2 Segunda aproximación ........................................................................................ 63
5.3.2.1 XMI .................................................................................................................. 63
5.3.2.2 Aplicación de XMI en el proyecto .................................................................... 64
5.3.2.3 UMLGraph ....................................................................................................... 65
5.3.2.4 Otras librerías parecidas.................................................................................. 66
5.3.2.5 Construcción de una librería ........................................................................... 67
5.3.2.6 XMI & StarUML ................................................................................................ 67
5.3.2.7 Representación XMI ........................................................................................ 68
5.3.2.8 Representación en objetos ............................................................................. 99
5.3.3 Reflexiones de la segunda aproximación .......................................................... 100
6 Desarrollo .......................................................................................................................... 101
6.1 Especificación de Requisitos Software ...................................................................... 101
6.2 Diseño ........................................................................................................................ 104
6.2.1 Casos de uso ...................................................................................................... 104
6.2.2 Clases ................................................................................................................. 107
6.3 Implementación ........................................................................................................ 113
6.4 Instalación ................................................................................................................. 118
7 Resultados ......................................................................................................................... 119
8 Conclusiones y trabajos futuros ........................................................................................ 120
9 Bibliografía ........................................................................................................................ 121
Anexo 1. Patrones de usabilidad-Undo ..................................................................................... 123
3
1 Introducción
Este trabajo forma parte de una investigación que ha sido reflejada en dos proyectos final de
carrera. El otro proyecto final de carrera lleva por título “Herramienta de soporte de patrones
de diseño. Parte I. Administrador” y cuyo autor ha sido José María Pérez Vence. La estructura
común a ambos proyectos comprenderá la introducción, el material base, los objetivos y la
investigación A partir de este último capítulo mencionado, cada tomo particularizará su
proyecto en base al ámbito que desarrolla, Administrador o Usuario/Desarrollador.
Con este documento se pretende presentar una herramienta para ayudar a desarrolladores
software a la hora de incluir patrones de diseño a sus proyectos. Concretamente, el estudio de
aplicación se centra en patrones de usabilidad generados por investigadores del área de
Ingeniería del Software de la Facultad de Informática de la UPM. Sin embargo, posteriormente
veremos que el marco de uso del proceso/herramienta se extiende a cualquier patrón
software definido sobre un estándar descrito en la sección 2. Material Base.
1.1 Presentación del problema
El problema raíz al cual se plantea dar solución se podría resumir en la necesidad de
automatizar y simplificar el proceso mediante el cual un desarrollador software puede aplicar
un patrón de diseño a su proyecto, en tiempo y coste efectivos. Para ello se plantea la
construcción de una herramienta que dé soporte a dicho proceso.
El caso de uso base, es decir, el proceso manual que realiza un desarrollador para aplicar los
patrones, parte de la siguiente situación:
1. Un desarrollador quiere introducir en sus modelos un determinado patrón de
usabilidad (por ejemplo, “deshacer”).
2. Existen una serie de patrones de usabilidad ya creados por investigadores del área de
Ingeniería del Software de la UPM, cuyo formato es en papel y en el que se incluyen,
entre otros, una guía de responsabilidades a satisfacer por el sistema software que los
incluya y unos modelos de diseño genéricos que se particularizarán en función de las
responsabilidades elegidas.
3. El desarrollador define aquellas responsabilidades que necesita incluir.
4. El patrón indica qué componentes del modelo genérico son aplicables según las
responsabilidades elegidas.
5. El desarrollador construye sus modelos específicos teniendo en cuenta los
componentes de los modelos genéricos recomendados en los patrones.
4
A medida que profundizamos en ello, determinamos varios problemas inherentes al
mencionado y con tal peso que formaría el groso de una fase de investigación previa a la
resolución del presente trabajo.
Como hemos indicado, partimos de unos patrones en formato papel que contienen modelos
de diseño y un conjunto de responsabilidades, más adelante en la sección 2. Material base –
Directrices de usabilidad, se explicara cómo están definidos los patrones de diseño, pero a este
nivel podemos definir los modelos de diseño como diagramas de diseño y las
responsabilidades como flujos y estados, ¿cómo los introducimos en nuestro sistema? ¿Cómo
podemos modificarlos en función de las necesidades del usuario? ¿Cómo manejar los flujos de
todos los patrones otorgando una cierta ambigüedad para que la solución esté abierta para la
inclusión de patrones sin tener que modificar el sistema? Y, finalmente, ¿cómo ofreceremos el
resultado una vez terminado el proceso, para que los modelos puedan ser utilizados por el
desarrollador?
Todas estas cuestiones son, a alto nivel, con las que nos hemos encontrado y a las que da
solución el proceso que hemos definido.
Con el fin de tener una visión más clara del mismo, a continuación se muestra en la figura 1
como se representa el proceso a modo de caja negra:
Figura 1: proceso genérico de uso de los patrones
5
La explicación de la figura 1 es muy simple. A través de una guía de elicitación y de las
respuestas proporcionadas por el usuario se construye documentos específicos. La guía de
elicitación expresa el procedimiento para la construcción de un sistema software. Se pretende
conseguir un sistema que a partir de la documentación en papel y de las respuestas que indica
un usuario, genere documentación y modelos de diseño personalizados.
Este es el primer ejemplo donde podemos diferenciar claramente la separación del trabajo en
dos. Una parte estará encargada de la administración interna del proyecto, más
concretamente en cómo introducir los documentos proporcionados en el sistema. La otra
parte se encarga de transformar la información que conforma el sistema en documentos
personalizados gracias a la aportación de un usuario, es decir, estará dirigida a un
usuario/desarrollador.
6
1.2 Descripción de la estructura del documento
En esta sección describiremos la estructura de la que está compuesta esta tesis.
Primeramente, explicaremos de manera detallada en qué consiste el material proporcionado
por el departamento de Ingeniería del Software de la UPM, es decir, analizaremos en
profundidad los patrones de usabilidad proporcionados y qué podemos extraer de esta
información.
A continuación describiremos los objetivos. Puesto que la investigación ha sido divida en dos
trabajos, los objetivos están divididos separando el trabajo general a realizar por roles. De esta
forma, se irá componiendo el documento en base a estos roles.
Una vez descritos los objetivos, debemos realizar una explicación sobre los conceptos que
vamos a manejar a lo largo del trabajo.
Más adelante entraremos en la investigación. En la investigación se ha seguido dividiendo el
trabajo en partes más pequeñas siguiendo los objetivos sobre los que se ha investigado y por
tanto, que se han abordado en la etapa de investigación.
Después, explicaremos el desarrollo de la aplicación realizada para solventar el problema
adherido al rol que documenta esta tesis.
De manera resumida, la estructura del documento consta de:
Material Base – Directrices de usabilidad
Objetivos
o Usuario/Desarrollador
o Administrador
Conocimientos (Antecedentes)
Investigación
o Introducir modelos en el sistema
o Automatizar la definición de responsabilidades
o Manejo de modelos en el sistema
o Ofrecer modelos reusables
Desarrollo
Resultados
Conclusiones y trabajos futuros
Bibliografía
7
2 Material base – Directrices de usabilidad
Como hemos indicado, inicialmente partimos de la necesidad de automatizar el proceso
mediante el que se aplican los patrones de usabilidad facilitados por el departamento de
Ingeniería del Software. Estos patrones consisten en unas directrices de usabilidad que
redactan de forma completa la descripción y el uso de cada uno de los patrones. El documento
original relativo al patrón de usabilidad “Undo”, se proporciona en el Anexo1.
Cada patrón facilitado se compone de una serie de pautas y recomendaciones a seguir para
llevar a cabo su implementación. Cada guía consta de:
- Resumen: primer acercamiento al patrón donde se explica de manera muy resumida
en qué consiste, que problemas resuelve, en qué tipo de contexto podemos
encontrarnos ese problema, mecanismos que incluye, familia a la que pertenece, etc.
Figura 2: Resumen
8
- Tabla Guía de Elicitación de Usabilidad: esta tabla agrupa los diferentes aspectos que
iremos desglosando más profundamente en los siguientes módulos. Es decir, por cada
recomendación que da el HCI, se relaciona por un lado con métodos de elaboración
del patrón, por otro las preguntas que deben realizarse a los usuarios y por último,
muestra unos ejemplos.
Figura 3: guía de elicitación
- Modelo de Casos de Uso: diagrama general y completo de los casos de uso del patrón.
Figura 4: modelo de casos de uso
9
Description:específicos, mediante la creación de un sistema experto y una librería para generar .. es decir, el proceso manual que realiza un desarrollador para aplicar los .. el intercambio de meta-modelos, XMI (XML Metadata Interchange)