diseÑo e implementaciÓn de la interfaz grÁfica de … · construcción y evaluación de modelos...
TRANSCRIPT
Informe Técnico CISIAD-10-03. UNED, Madrid, 2010
DISEÑO E IMPLEMENTACIÓN DE LA INTERFAZ GRÁFICA DE OPENMARKOV
JUAN LUIS GOZALO FERNÁNDEZ
MANUEL ARIAS CALLEJAFRANCISCO JAVIER DIÉZ VEGAS
Dpto. Inteligencia Artificial. UNEDc/ Juan del Rosal, 16 28040 Madrid. Spain
ResumenOpenMarkov es una herramienta de código abierto, escrita en Java, para la
construcción y evaluación de modelos gráficos probabilistas, entre los que se
encuentran las redes bayesianas, los diagramas de influencia, los procesos de
decisión de Markov factorizados, etc. Este informe técnico describe cómo se ha
diseñado e implementado la interfaz gráfica de usuario de OpenMarkov.
Palabras clave
Modelos gráficos probabilistas. OpenMarkov. Interfaz gráfica. Swing.
Mantenibilidad. Usabilidad. Internacionalización. JavaHelp.
Índice de contenido
Índice de contenido.......................................................................................2Índice de ilustraciones....................................................................................3Índice de tablas.............................................................................................4Introducción.................................................................................................6
Alcance del informe técnico..........................................................................7Desarrollo de este trabajo............................................................................7
Requisitos de OpenMarkov..............................................................................9Análisis del sistema......................................................................................12
Casos de uso............................................................................................12Requisitos no funcionales...........................................................................20
Diseño estático del sistema...........................................................................21Diseño detallado del sistema.........................................................................25
Paquete principal (openMarkov.gui.main).....................................................25Paquete portapapeles (openMarkov.gui.clipboard).........................................27Paquete componentes (openMarkov.gui.components).....................................27Paquete diálogos (openMarkov.gui.dialogs)...................................................31Paquete editores (openMarkov.gui.edit).......................................................37Paquete edición (openMarkov.gui.edition).....................................................37Paquete ayuda (openMarkov.gui.help)..........................................................38Paquete entrada/salida (openMarkov.gui.io)..................................................38Paquete internacionalización (openMarkov.gui.localize)..................................39Paquete MDI (openMarkov.gui.mdi).............................................................42Paquete menús y barra edición (openMarkov.gui.menutoolbar).......................42Paquete redes (openMarkov.gui.networks)....................................................43Paquete recursos (openMarkov.gui.resources)...............................................44Paquete deshacer (openMarkov.gui.undo)....................................................45Paquete utilidades (openMarkov.gui.utils).....................................................45Paquetes pendientes: Paquete loader (openMarkov.gui.loader)........................46Paquetes pendientes: Paquete desarrollo (openMarkov.gui.development)..........49
Mantenibilidad.............................................................................................51Usabilidad...................................................................................................54
Internacionalización..................................................................................54El uso del color.........................................................................................57Ayuda en línea para el usuario final ............................................................62
Tareas futuras.............................................................................................67Conclusiones...............................................................................................70Listado siglas, abreviaturas y acrónimos ........................................................74Anexos.......................................................................................................76
Anexo 1 - Casos de uso de la interfaz gráfica de OpenMarkov.........................77Anexo 2 – OpenMarkovDTDSpec.xml para definir carga de OpenMarkov..........119Anexo 3 – OpenMarkovMenu.xml como ejemplo del cargador de OpenMarkov. 121Anexo 4 – Documento de ayuda en línea al usuario......................................123
Bibliografía................................................................................................124
Informe Técnico CISIAD-10-03 Índice de ilustraciones
Índice de ilustraciones
Ilustración 1: Apertura y cierre de redes.........................................................14Ilustración 2: Gestión de espacio visual..........................................................15Ilustración 3: Gestión de selección de elementos visuales en una red..................16Ilustración 4: Gestión de edición de redes (nodos y enlaces)..............................17Ilustración 5: Gestión de ventana de mensajes a usuario..................................18Ilustración 6: Gestión de configuración de propiedades de usuario......................19Ilustración 7: Gestión de ayuda al usuario.......................................................20Ilustración 8: Arquitectura de componentes del GUI en la fase 1........................24Ilustración 9: Arquitectura de paquetes del GUI al final de este informe técnico....25Ilustración 10: Arquitectura de paquetes de gui.dialogs ....................................26Ilustración 11: Clases del componente principal...............................................27Ilustración 12: Arranque del splash................................................................29Ilustración 13: Jerarquía de clases de tablas y diálogos.....................................37Ilustración 14: Activación de un dialogo elegido por el usuario vía menú.............38Ilustración 15: Dialogo de edición para propiedades de usuario..........................41Ilustración 16: Activación de la ayuda en línea al seleccionar el elemento de menú.................................................................................................................44Ilustración 17: ResourceBundleEditor editando Dialog.properties........................46Ilustración 18: Activación del dialogo de cambio de idioma................................46Ilustración 19: Evento de cambio de idioma....................................................47Ilustración 20: C2_16.jpg para títulos de ventanas en OpenMarkov....................51Ilustración 21: OpenMarkovSplashLogo.jpg para la aplicación OpenMarkov..........51Ilustración 22: Enerjy Software: Puntuación del paquete GUI = 8.8....................62Ilustración 23: Enerjy Software: Puntuación global de OpenMarkov = 8.8............62Ilustración 24: Página web de Enerjy Software: Puntuación de WEKA = 5.6.........62Ilustración 25: Relación de internacionalización................................................65Ilustración 26: Dialogo de usuario para cambio de lenguaje (por defecto)............65Ilustración 27: Cambio del texto ejemplo al seleccionar un idioma .....................66Ilustración 28: Idiomas permitidos en el cambio de lenguaje.............................66Ilustración 29: Colores usados en el menú principal y barra de herramientas.......68Ilustración 30: Herramienta Selección marcada................................................69Ilustración 31: Cursores correspondientes a las herramientas seleccionadas........69Ilustración 32: Colores usados al visualizar/editar redes....................................69Ilustración 33: Uso del color en las pantallas de dialogo con el usuario................70Ilustración 34: Colores en la edición de tablas de potenciales.............................71Ilustración 35: Gestión de ayuda al usuario.....................................................74Ilustración 36: Ayuda en línea para usuarios (en español).................................75
Informe Técnico CISIAD-10-03 Página 4 de 125
Informe Técnico CISIAD-10-03 Índice de tablas
Índice de tablas
Caso de uso 1: Inicio de la aplicación...................................................86Caso de uso 2: Finalización de la aplicación...........................................87Caso de uso 3: Creación de una red.....................................................88Caso de uso 4: Cierre de una red.........................................................88Caso de uso 5: Carga de una red.........................................................89Caso de uso 6: Almacenamiento de una red..........................................90Caso de uso 7: Almacenamiento de una red como..................................90Caso de uso 8: Selección de una red....................................................91Caso de uso 9: Selección de la red siguiente o anterior...........................92Caso de uso 10: Modificación de la disposición de las ventanas................92Caso de uso 11: Modificación de la presentación de los nodos..................93Caso de uso 12: Modificación del factor de escala – Forma 1....................93Caso de uso 13: Modificación del factor de escala a través de la caja de diálogo............................................................................................94Caso de uso 14: Elección del tipo de edición..........................................95Caso de uso 15: Actualización de los menús al cambiar la selección de los elementos........................................................................................96Caso de uso 16: Deselección de todos los elementos..............................97Caso de uso 17: Selección de todos los elementos.................................97Caso de uso 18: Selección de un solo nodo o enlace...............................98Caso de uso 19: Selección de un nodo más o de un enlace más...............98Caso de uso 20: Deselección de un solo nodo o enlace............................99Caso de uso 21: Selección de varios nodos con el rectángulo de selección100Caso de uso 22: Actualización de los menús al modificar una red............101Caso de uso 23: Creación de un nodo.................................................102Caso de uso 24: Deshacer o rehacer la creación de un nodo..................103Caso de uso 25: Creación de un enlace...............................................104Caso de uso 26: Deshacer la creación de un enlace..............................105Caso de uso 27: Rehacer la creación de un enlace................................105Caso de uso 28: Desplazamiento de varios nodos.................................106Caso de uso 29: Deshacer o rehacer el desplazamiento de varios nodos. .107Caso de uso 30: Eliminación de varios elementos.................................109Caso de uso 31: Deshacer la eliminación de varios elementos................110Caso de uso 32: Rehacer la eliminación de varios elementos..................110Caso de uso 33: Modificación de las propiedades de una red..................111Caso de uso 34: Deshacer la modificación de las propiedades de una red.112Caso de uso 35: Rehacer la modificación de las propiedades de una red. .112Caso de uso 36: Modificación de las propiedades de un nodo.................113Caso de uso 37: Deshacer la modificación de las propiedades de un nodo 114Caso de uso 38: Rehacer la modificación de las propiedades de un nodo..114Caso de uso 39: Copia de nodos al portapapeles..................................115Caso de uso 40: Corte de nodos al portapapeles..................................116
Informe Técnico CISIAD-10-03 Página 5 de 125
Informe Técnico CISIAD-10-03 Índice de tablas
Caso de uso 41: Deshacer el corte de nodos al portapapeles..................117Caso de uso 42: Rehacer el corte de nodos al portapapeles....................117Caso de uso 43: Pegado de nodos al portapapeles................................118Caso de uso 44: Deshacer el pegado de nodos del portapapeles.............119Caso de uso 45: Rehacer el pegado de nodos del portapapeles...............119Caso de uso 46: Cierre de la ventana de mensajes...............................119Caso de uso 47: Paso a primer plano de la ventana de mensajes............119Caso de uso 48: Copia del contenido de la ventana de mensajes............120Caso de uso 49: Limpieza de la ventana de mensajes...........................120Caso de uso 50: Abrir ventana de configuración de usuario....................120Caso de uso 51: Cerrar ventana de configuración de usuario..................121Caso de uso 52: Cerrar ventana de configuración de usuario con cancelación....................................................................................................121Caso de uso 53: Salvar configuración de usuario..................................121Caso de uso 54: Importar configuración de usuario...............................121Caso de uso 55: Exportar configuración de usuario...............................122Caso de uso 56: Abrir ventana principal de ayuda de la aplicación..........122Caso de uso 57: Abrir ayuda de una ventana o elemento.......................122Caso de uso 58: Buscar elementos de ayuda.......................................123Caso de uso 59: Cambiar lenguaje de la aplicación...............................123Caso de uso 60: Añadir un padre a un nodo........................................123Caso de uso 61: Eliminar padre de un nodo.........................................124Caso de uso 62: Cambiar el nombre de un nodo...................................124Caso de uso 63: Añadir un estado de un nodo......................................124Caso de uso 64: Eliminar un estado de un nodo...................................125Caso de uso 65: Cambiar el nombre a un estado de un nodo.................125
Informe Técnico CISIAD-10-03 Página 6 de 125
Informe Técnico CISIAD-10-03 Introducción
IntroducciónLos modelos gráficos probabilistas, tales como redes bayesianas y
diagramas de influencia, surgieron en la década de los 80 y se convirtieron
en una herramienta muy usada en el razonamiento con incertidumbre en los
problemas del mundo real. Fueron utilizadas por grupos especializados de
universidades, grandes empresas, etc.
Para poder manejarlas por un publico más general se necesitaban
sistemas que permitieran su uso de un modo sencillo. Durante los últimos
años, se han desarrollado aplicaciones software que han tratado de dar
solución a esta demanda mediante la creación y edición de modelos gráficos
probabilistas.
Unas son de “código abierto” que permiten que se modifique libremente
su código y son el resultado de uno o varios equipos de investigación con la
finalidad de servir de base para el desarrollo de nuevos modelos y
algoritmos. Ejemplos de este primer tipo son las aplicaciones BNT1, gR2,
Weka3 o Elvira [6].
Hay otro grupo de aplicaciones, normalmente comerciales, que no
permiten estas modificaciones de su código, como Hugin4 o Netica5, y son
únicamente interesantes para usuarios que desarrollen sistemas expertos
con técnicas ya conocidas, pero no para investigadores.
Finalmente, muchas otras aplicaciones6 no han llegado a ver la luz al
1 Bayes Net Toolkit (de Kevin Murphy) es un Toolbox de MATLAB que implementa redes bayesianas, diagramas de influencia, modelos dinámicos, aprendizaje e inferencia con variables discretas y continuas. Sus limitaciones se deben fundamentalmente a su lentitud, a no ser orientado a objetos y a la dependencia con el programa de pago MATLAB.
2 GR surgió como un subproyecto del lenguaje para cálculos estadísticos R.3 WEKA es un informe técnico de la Universidad de Waikato (Nueva Zelanda), orientado
fundamentalmente a la minería de datos. Tiene una buena documentación y muchos algoritmos implementados. Su principal limitación es no ser una aplicación de propósito general. Es el gran competidor de la aplicación OpenMarkov como software libre. Se puede obtener más información en HTTP://www.cs.waikato.ac.nz/ml/weka
4 Hugin es un programa de ayuda para la toma de decisión usando redes bayesianas y diagramas de influencia. Se puede encontrar más información en HTTP://www.hugin.com
5 Más información sobre Netica Bayesian Networks from Norsys en HTTP://www.norsys.com/netica.html
6 Para una información detallada de las aplicaciones ver la lista elaborada por Kevin Murphy en
Informe Técnico CISIAD-10-03 Página 7 de 125
Informe Técnico CISIAD-10-03 Introducción
abandonarse su desarrollo tales como Open Bayes, PNL7 y OBP8.
OpenMarkov surgió como un rediseño de la aplicación Elvira aunque
partiendo desde cero en su desarrollo [17]. Elvira fue fruto de un informe
técnico coordinado de I+D que se desarrolló entre los años 1997 y 2000 en
ocho universidades españolas. La principal limitación en el desarrollo de
Elvira ha sido que la búsqueda de resultados a corto plazo dificultó la
aplicación de los principios de la metodología de desarrollo de software [6].
El objetivo principal de OpenMarkov es conseguir una herramienta, similar
en funcionalidad, que sea usada para confeccionar modelos del mundo real
basados en los modelos gráficos probabilistas y cuya construcción esté
determinada por la utilización de unas buenas prácticas de desarrollo de
software en todas las fases del mismo.
Alcance del informe técnico
OpenMarkov es el sustituto del programa Elvira y, como tal, su
funcionalidad de cara a los usuarios debe ser similar.
Actualmente, OpenMarkov está en fase de desarrollo final y su diseño se
ha separado en varios bloques.
Este informe técnico está englobado dentro del bloque de construcción de
la interfaz de usuario para cubrir sus cuatro aspectos principales:
1) Elementos generales de la interfaz gráfica: marco, menús, ventanas...
2) Edición de tablas de probabilidad, utilidad y modelos canónicos.
3) Explicación de nodos y enlaces.
4) Análisis de sensibilidad.
Desarrollo de este trabajo
La herramienta OpenMarkov, que hasta mediados de 2010 se denominaba http://www.cs.ubc.ca/~murphyk/Software/bnsoft.html
7 Más información sobre Probabilistic Network Library en http://eng.itlab.unn.ru/?dir=1398 Más información sobre Open Bayes for Python en http://www.openbayes.org/
Informe Técnico CISIAD-10-03 Página 8 de 125
Informe Técnico CISIAD-10-03 Introducción
Carmen, fue el objeto de la tesis doctoral del Manuel Arias [20], profesor del
Dpto. de Inteligencia Artificial de la UNED, que tuvo como director al Prof.
Francisco Javier Díez.
La interfaz de esta herramienta fue construida inicialmente por José
Enrique Mendoza, como trabajo de fin de carrera, supervisado por ambos
profesores, entre 2006 y 2008. De abril a julio de 2008, Alberto M. Ruiz
Lafuente añadió algunas funcionalidades más.
Este informe técnico es una versión revisada de la memoria del proyecto
de fin de carrera de Juan Luis Gozalo, que fue realizado entre 2008 y 2010,
supervisado también por ambos profesores. El trabajo consistió realizar un
proceso de reingeniería sobre dicha interfaz aplicando principios de
mantenibilidad y usabilidad, amplía la interfaz con características multi-
idioma y ayudas en línea para el usuario final y revisa otros aspectos
orientados a la mantenibilidad futura del código.
Informe Técnico CISIAD-10-03 Página 9 de 125
Informe Técnico CISIAD-10-03 Requisitos de OpenMarkov
Requisitos de OpenMarkovLa creación de una interfaz de usuario es uno de los elementos de éxito
desde el punto de la usabilidad de cualquier programa informático. Este
informe técnico tiene como objetivo realizar el diseño de creación de la
interfaz de usuario para el programa OpenMarkov, añadiendo aquellas
funcionalidades necesarias, con el objetivo de permitir que su extensión
futura sea rápida y cómoda. Veamos en detalle cuáles son los objetivos
particulares que se deben cumplir:
• La interfaz debe disponer de un dialogo para la edición de
propiedades del nodo lo más independiente posible del resto de los
componentes de la aplicación.
• Al mismo tiempo, la interfaz debe disponer de un diálogo para la
edición de propiedades del nodo que sea modular de modo similar a los
elementos construidos en el resto del informe técnico.
• Debe ser capaz además de editar las tablas de probabilidad en las
redes bayesianas y diagramas de influencia.
• Debe proporcionar al usuario la posibilidad de crear nuevas tablas
de probabilidad mediante la presentación de valores por defecto
basadas en los atributos ya seleccionados del nodo tales como estados
de la variable asociada y los padres en el grafo.
• Debe permitir la carga de los dos tipos de modelos gráficos
probabilistas desde un fichero, cuyo contenido describirá el modelo
usando los formatos permitidos (Elvira, Hugin o el propio de
OpenMarkov). Una vez interpretado el contenido del archivo, el modelo
debe ser presentado en pantalla para su posterior edición por parte del
usuario. En particular, al extender en este informe técnico a la edición
de tablas debe comprobarse que todas los atributos relativos a los
potenciales son leídos correctamente.
• Asimismo, debe facilitar el almacenamiento de una red bayesiana,
Informe Técnico CISIAD-10-03 Página 10 de 125
Informe Técnico CISIAD-10-03 Requisitos de OpenMarkov
un diagrama de influencia o una cadena de Markov en un archivo,
utilizando el mismo formato citado en el párrafo anterior, incluyendo las
tablas de potenciales creadas y editadas por el usuario.
• El usuario debe tener la posibilidad de cambiar las propiedades
extendidas de la red incluidas en esta fase, tales como tablas de valores
discretizados y tablas de probabilidades.
• Para evitar que cualquier modificación sobre la red o alguno de
sus elementos sea definitiva, la interfaz debe extender las capacidades
actuales y dar al usuario la posibilidad de deshacer modificaciones así
como rehacer las modificaciones.
• Dado que este software será usado en diferentes países, los
módulos de internacionalización de los textos, que por defecto
presentan los literales de la interfaz en inglés, se deben extender para
permitir el cambio de idioma de presentación a decisión del usuario
durante el uso del programa. El software debe estar preparado para
permitir añadir textos en otros idiomas sin tener que modificar el código
fuente.
• Debe incluirse una ayuda de usuario teniendo en cuenta que dicho
usuario tiene conocimientos de técnicas de modelado gráfico de redes
de probabilidades pero también que puede no tenerlas. Asimismo, debe
incorporarse manuales para el futuro desarrollador de OpenMarkov
tanto en la ayuda interna del programa como en los manuales de los
que este documento es parte integrante.
• La interfaz de usuario debe ser intuitiva y fácil de usar, facilitando
un entorno de trabajo que use las tecnologías gráficas actuales.
Con todos estos elementos en cuenta, tanto la documentación externa
(este documento) como la documentación interna (ayuda en línea para
desarrollador y comentarios de código fuente, en inglés), deben ser
abundantes y aclaratorias para que otra persona pueda continuar con el
Informe Técnico CISIAD-10-03 Página 11 de 125
Informe Técnico CISIAD-10-03 Requisitos de OpenMarkov
trabajo. El diseño y la codificación del nuevo sistema deben estar preparados
para su posterior mantenimiento.
Informe Técnico CISIAD-10-03 Página 12 de 125
Informe Técnico CISIAD-10-03 Análisis del sistema
Análisis del sistemaDurante esta fase se revisa la documentación existente y se consigue la
información necesaria para poder continuar con el diseño del nuevo sistema.
Para ello, se deben obtener los requisitos que hagan que el nuevo software
cumpla los objetivos esperados [19].
En primer lugar se detallan los casos de uso que representan los
requisitos funcionales del sistema incluyendo como anexo el detalle general
de los casos de uso como parte de la documentación general del informe
técnico. Después se enumerarán los requisitos no funcionales que completan
el conjunto total de requisitos [19].
Casos de usoAntes de ver cada caso de uso en particular es necesario presentar los
diagramas resumen para ver cuáles son los casos de uso, las relaciones
entre ellos y como se han dividido en varios sub-diagramas correspondientes
a las áreas funcionales principales.
En la primera actividad realizada tras la lectura de la documentación de la
fase anterior, y con el objetivo de la mantenibilidad del sistema, se ordenan
los casos de uso bajo un prisma funcional:
• Apertura y Cierre de redes
• Gestión del espacio visual
• Gestión de selección de elementos visuales de una red
• Gestión de edición de redes (nodos y enlaces)
• Gestión de la ventana de mensajes a usuario
• Gestión de la configuración de usuario
• Gestión de ayuda de usuario
• Gestión de rehacer y deshacer acciones y su efecto en los menús
Informe Técnico CISIAD-10-03 Página 13 de 125
Informe Técnico CISIAD-10-03 Análisis del sistema
Con ello, se consigue una visión inicial mucho más cercana al
comportamiento funcional global de la interfaz visual sobre la que se puede
iniciar el análisis. Se muestran a continuación los diferentes esquemas
indicados.
Los casos de uso agrupados bajo el esquema de Apertura y cierre de
redes especifican las funcionalidades asociadas a la apertura y cierre de la
aplicación y a las relacionadas al realizar acciones de apertura y cierre de las
redes.
Informe Técnico CISIAD-10-03 Página 14 de 125
Ilustración 1: Apertura y cierre de redes
Informe Técnico CISIAD-10-03 Análisis del sistema
Los casos de uso agrupados bajo el esquema de Gestión de espacio visual
especifican las funcionalidades de la aplicación para la manipulación de
elementos visuales.
Informe Técnico CISIAD-10-03 Página 15 de 125
Ilustración 2: Gestión de espacio visual
Informe Técnico CISIAD-10-03 Análisis del sistema
Los casos de uso agrupados bajo el esquema de Gestión de selección de
elementos visuales en una red especifican las funcionalidades de la
aplicación asociadas a la manipulación visual de elementos de la red
Informe Técnico CISIAD-10-03 Página 16 de 125
Ilustración 3: Gestión de selección de elementos visuales en una red
Informe Técnico CISIAD-10-03 Análisis del sistema
Los casos de uso agrupados bajo el esquema de Gestión de edición de
redes (nodos y enlaces) especifican las funcionalidades de la aplicación
asociadas a la manipulación de nodos y enlaces
Informe Técnico CISIAD-10-03 Página 17 de 125
Ilustración 4: Gestión de edición de redes (nodos y enlaces)
Informe Técnico CISIAD-10-03 Análisis del sistema
Los casos de uso agrupados bajo el esquema de Gestión de ventana de
mensajes a usuario especifican las funcionalidades de la aplicación
asociadas a la manipulación de la ventana donde se le muestran al usuario
los mensajes de aviso o error de la aplicación.
Informe Técnico CISIAD-10-03 Página 18 de 125
Ilustración 5: Gestión de ventana de mensajes a usuario
Informe Técnico CISIAD-10-03 Análisis del sistema
Los casos de uso agrupados bajo el esquema de Gestión de ventana de
configuración de propiedades de usuario especifican las funcionalidades de la
aplicación asociadas a las acciones permitidas sobre la configuración
personalizable del usuario.
Informe Técnico CISIAD-10-03 Página 19 de 125
Ilustración 6: Gestión de configuración de propiedades de usuario
Informe Técnico CISIAD-10-03 Análisis del sistema
Los casos de uso agrupados bajo el esquema de Gestión de ayuda al
usuario especifican las funcionalidades de la aplicación asociadas a las
acciones disponibles para mostrar elementos de ayuda al usuario dentro de
la aplicación.
Los casos de uso agrupados bajo el esquema de Rehacer acciones y
Deshacer acciones especifican, respectivamente, las funcionalidades
permitidas para rehacer y deshacer acciones visuales dentro de las ventanas
de trabajo y la dependencia con la actualización de menús de la aplicación.
En el anexo se detallan la funcionalidad, en lenguaje natural, de cada caso de uso de los mostrados en los diagramas precedentes. Cada uno de ellos está descrito en una tabla con dos columnas: la primera describe el curso normal de ejecución y la segunda describe las alternativas, si existen, que pueden surgir en cada uno de los pasos.
Informe Técnico CISIAD-10-03 Página 20 de 125
Ilustración 7: Gestión de ayuda al usuario
Informe Técnico CISIAD-10-03 Análisis del sistema
Requisitos no funcionalesAdemás de cumplir los casos de uso, el nuevo sistema debe tener las
siguientes características que aseguren cumplimiento de los estándares de
calidad:
• Fácil de usar y ser intuitiva: el usuario debe encontrarse cómodo
cuando la esté usando y obtener el mayor beneficio de ella.
• Código abierto: Su código debe ser abierto y estar disponible para
cualquier persona que mantenga la aplicación o que desee aprender de
su diseño y codificación.
• Multiplataforma: para que pueda ser ejecutada en cualquier
sistema operativo sin ninguna modificación.
• Escalable: ya que debe trabajar con modelos gráficos
probabilistas muy pequeños y muy grandes.
• Extensible: para que permita acomodar nuevas funcionalidades
con el mínimo esfuerzo.
• Eficiente: para que en su ejecución haga un buen uso de los
recursos del sistema.
• Robusta: para que pueda continuar su ejecución aunque se
enfrente a situaciones anormales.
• Reusable: para que sus paquetes y clases sean usadas tanto en
éste como en otros desarrollos.
• Mantenible: para que su desarrollo esté orientado a los futuros
cambios realizando el menor número de modificaciones posibles y en el
menor tiempo posible, asegurando además que sea fácilmente
distribuible y actualizable.
Informe Técnico CISIAD-10-03 Página 21 de 125
Informe Técnico CISIAD-10-03 Diseño estático del sistema
Diseño estático del sistemaDespués de obtener los requisitos, es necesario iniciar el diseño del
sistema. Para ello se estructura esta fase en dos diferenciadas: visión
estática con la relación de paquetes y su marco de relaciones y después la
visión detallada del diseño con las clases integrantes de cada paquete y las
secuencias de llamada entre ellas [16]. Se reflejan las modificaciones
realizadas sobre la fase anterior [7]. Lo más importante es reseñar que, en
la descripción del diseño, se ha determinado reagrupar los elementos
dividendo la nueva aplicación en diferentes funcionalidades.
Así pues, en primer lugar se ve primero el diseño estático del sistema con
su división en paquetes usando para ello un diagrama UML de componentes
y después, se ve el diseño detallado del sistema donde se ve cada uno de
estos paquetes de forma detallada usando para ello, si es necesario, un
diagrama UML de clases y un diagrama UML de secuencias [16].
Como se acaba de indicar para el diseño estático, el sistema se organiza
en un conjunto de paquetes bien diferenciados que se relacionan entre sí
para conseguir que funcione el sistema completo. Para tener una perspectiva
global del sistema antes de ver cada paquete por separado, en el diagrama
de componentes global se puede ver cuáles son los paquetes y con cuáles se
relaciona cada uno. Para poder explicar mejor las razones de la reagrupación
de paquetes del GUI, se muestra primero el esquema inicial creado con los
primeros requisitos en una primera aproximación y luego el esquema final
tal y como queda una vez que todos los elementos se acaban de analizar:
Informe Técnico CISIAD-10-03 Página 22 de 125
Informe Técnico CISIAD-10-03 Diseño estático del sistema
En este diagrama no se muestra el paquete gui.localize (lenguaje) que
se elimina del diagrama para no complicarlo excesivamente, ya que todos
los paquetes, incluidos los sub-paquetes de edición, hacen uso de él.
La arquitectura de paquetes en uso al final de este informe técnico queda
Informe Técnico CISIAD-10-03 Página 23 de 125
Ilustración 8: Arquitectura de componentes del GUI en la fase 1
Informe Técnico CISIAD-10-03 Diseño estático del sistema
como se muestra en el esquema siguiente. Se ha optado por agrupar algunos de los paquetes en un nivel adicional de agregación para evitar una
excesiva diversidad en el primer nivel (paquetes resources, dialogs).
De hecho, la agrupación principal se produce en el paquete dialogs para
Informe Técnico CISIAD-10-03 Página 24 de 125
Ilustración 9: Arquitectura de paquetes del GUI al final de este informe técnico
Informe Técnico CISIAD-10-03 Diseño estático del sistema
englobar los sub-paquetes siguientes:
La manera que tienen de relacionarse unos con otros se ve en los
diagramas de clases que se muestran en el capítulo siguiente de Diseño
Detallado. Asimismo, se comenta la función y los objetivos de cada nuevo
paquete completando esta explicación con diagramas de clases y de
secuencias necesarios. Si un paquete no se ha modificado se indicará
específicamente haciendo referencia al trabajo inicial de los Proyectos Fin de
Carrera de José Enrique Mendoza [7]. y, en caso de haberse modificado, se
mostrará el diagrama de clases y/o de secuencias modificado junto con su
apariencia anterior si fuese conveniente.
Informe Técnico CISIAD-10-03 Página 25 de 125
Ilustración 10: Arquitectura de paquetes de gui.dialogs
Informe Técnico CISIAD-10-03 Diseño detallado del sistema
Diseño detallado del sistema
Paquete principal (openMarkov.gui.main)Este es el paquete principal de OpenMarkov encargado de lanzar la aplicación e inicializar los diferentes elementos auxiliares y ventanas de trabajo, que básicamente son el menú principal y un panel de contenidos donde se sitúan las barras de herramientas y el entorno multidocumento. Se ha revisado para incluir en el arranque la presentación de una ventana de carga (splash screen) en un hilo de ejecución independiente [5] y la posibilidad de carga de elementos de modo dinámico.
Diagrama de clasesNo se ha modificado el esquema de clases existente en este paquete con respecto al trabajo anterior [7] aunque se incluye a modo ilustrativo.
La clase “OpenMarkov” es la clase que arranca el programa desde la línea de comando y que está incluida en el paquete principal OpenMarkov.
De las clases indicadas en el diagrama solo MainGUI es accesible de modo
público.
Diagrama de secuenciasVeamos en el inicio de la aplicación cómo se ha modificado la llamada para hacer que se muestre una ventana de “splash”9 mientras se terminan de
9 La ventana de Splash da un aspecto más profesional a la aplicación y permite mantener entretenido al usuario haciéndole ver el grado de avance del inicio del programa. Es una buena practica de
Informe Técnico CISIAD-10-03 Página 26 de 125
Ilustración 11: Clases del componente principal.
Informe Técnico CISIAD-10-03 Diseño detallado del sistema
cargar e iniciar los diferentes elementos de la aplicación en un hilo paralelo
de ejecución.
diseño de interfaces de usuario.[21]
Informe Técnico CISIAD-10-03 Página 27 de 125
Ilustración 12: Arranque del splash
Informe Técnico CISIAD-10-03 Diseño detallado del sistema
Clases del Paquete• Clase MainGUI – Crea la ventana principal donde se ubica el panel
principal, usando la ventana de splash durante la carga de paquetes y leyendo las preferencias de una fuente externa.
• Clase MainPanel – Compone el panel de trabajo, con sus menús, áreas de trabajo, ventana de mensajes e iconos de herramientas.
• Clase MainPanelListenerAssistant – es una clase auxiliar para la gestión de los eventos del panel principal, mejorando la legibilidad del código de la clase anterior.
• Clase MainPanelMenuAssistant – es una clase auxiliar para la gestión de los eventos relacionados con las opciones de menú principal, iconos de herramientas y de menús contextuales al pulsar el botón derecho del ratón sobre ciertos elementos. Ayuda a la legibilidad del código de la clase anterior.
Paquete portapapeles (openMarkov.gui.clipboard)En este paquete, responsable de la gestión de las acciones de copia de elementos dentro de la misma red o entre diferentes redes [7], se han realizado pequeñas modificaciones. Cada instancia de OpenMarkov (suponiendo que se abran diferentes ejecuciones de la aplicación simultáneamente) tiene su propio portapapeles.
Diagrama de clasesNo se ha modificado ni el contenido del paquete ni su agrupación [7].
Diagrama de secuenciasNo se ha modificado el uso de este paquete en la aplicación [7]
Clases del paquete• Clase ClipboardContent. Se ha incorporado el patrón Singleton [1] [3]
y se han reajustado algunos de los métodos internos para asegurar que no tienen visibilidad innecesaria.
• Clase ClipboardManager. Se han restringido visibilidad de algunos métodos para cumplir las mejores prácticas y evitar errores de uso no intencionado.
• Clase ContentDataFlavor. No se ha alterado [7]• Clase ClipboardListener. No se ha alterado [7].
Paquete componentes (openMarkov.gui.components)Dentro del proceso de aseguramiento de la mantenibilidad, se crea el
Informe Técnico CISIAD-10-03 Página 28 de 125
Informe Técnico CISIAD-10-03 Diseño detallado del sistema
paquete de componentes. Es aquí donde se sitúan diferentes elementos visuales tales como tipos de tablas con comportamientos especiales, desplegables (combo-box) y elementos variados que pueden ser en el futuro encapsulados como beans para su uso de modo gráfico en paquetes de edición.
Clases del paqueteDentro de este paquete, podemos agrupar las diferentes clases según
cuatro categorías: Gestión de eventos, Gestión de elementos visuales,
Gestión de paneles y tablas; y clases no usadas creadas para uso futuro. Se
muestran a continuación:
Clases relacionadas con gestión de eventos:
• Clase ElementObservable – esta clase es una implementación del
patrón Observador-Observable [1] [3] entre paneles de propiedades del
nodo, específicamente para los eventos de cambio de nombre del nodo,
cambio de padres o cambio de estados del nodo y las tablas
correspondientes de probabilidad.
• Clase NodeNameChangeActionEvent - Es el evento que se lanza
cuando se cambia el nombre de un nodo en el dialogo correspondiente.
Es escuchado por la clase que extienda la clase base
ElementObservable.
• Clase ParentChangeActionEvent – Es el evento que se lanza
cuando se cambia un padre de un nodo en el dialogo correspondiente.
Es escuchado por la clase que extienda la clase base
ElementObservable.
• Clase StatesChangeActionEvent – Es el evento que se lanza
cuando se cambian los estados de un nodo en el dialogo
correspondiente. Es escuchado por la clase que extienda la clase base
ElementObservable.
Clases relacionadas con componentes visuales:
• Clase AlgorithmRelationTypes - Esta clase se usa en el panel de
Informe Técnico CISIAD-10-03 Página 29 de 125
Informe Técnico CISIAD-10-03 Diseño detallado del sistema
probabilidades del nodo para mostrar los algoritmos de relación posibles
para las probabilidades del nodo en el combo-box que está colocado en
dicho panel dependiendo del lenguaje. Si hay que añadir un nuevo
algoritmo, es necesario incluir aquí un nuevo elemento a mostrar en el
método fillList() así como incluir los correspondientes literales a mostrar
en los ficheros de recurso de cada lenguaje que use OpenMarkov. En
este momento, los elementos que se pueden mostrar son los
equivalentes a las relaciones siguientes “General”, “OR”, “MaxCausal”,
“MaxGeneral”, “AND”, "MINCausal" y "MINGeneral", aunque solamente
es usado en este momento la relación General.
• Clase DiscretizeLimitsComboBoxRenderer – clase auxiliar cuya
función es poner el color adecuado y el valor seleccionado dentro del
combo-box usado para mostrar los únicos valores permitidos en los
límites de los intervalos discretizados.
• Clase LastRecentFilesMenuItem – clase extendida de JmenuItem
para representar en el menú de la aplicación el fichero leído con
anterioridad (hasta la posición n que se determine). De este modo,
cuando se produce el evento de cambio de idioma, la aplicación conoce
que no debe actuar con este componente ya que no es dependiente de
idioma.
•
Clases relacionadas con gestión de paneles y tablas:
• Clase DiscretizeTableModel – esta clase guarda el modelo de la
tabla de valores discretizados bajo el modelo MVC10 usado para la
representación de tablas.
• Clase DiscretizeTablePanel – este es el componente que dibuja el
panel donde se incluye la tabla de presentación de valores
discretizados. Incluye los comportamientos de creación de tablas con
valores iniciales. Esta clase debería ser dividida en elementos más
10 Ver MVC en el glosario
Informe Técnico CISIAD-10-03 Página 30 de 125
Informe Técnico CISIAD-10-03 Diseño detallado del sistema
pequeños para cumplir con el criterio de menor tamaño posible de una
clase y menor número de métodos, lo que redundará en su mejor
mantenibilidad.
• Clase NodePotentialTable - Esta clase es la responsable de la
gestión gráfica y del modelo de datos de los potenciales del nodo tanto
para relación general como de modelos canónicos [10]. Los datos que
presenta al usuario son visualizados en diferentes modos, según el
parámetro solicitado, a saber:
• con valor de las probabilidades del nodo o valor simbólico del estado,• con valores deterministas (0's y 1's) o probabilistas (entre 0 y 1),• con todos los parámetros o sólo con los parámetros independientes,• con todos los valores o sólo con valores canónicos (sólo para datos de
modelos canónicos),• con valores netos o compuestos (sólo para datos de modelos
canónicos)• Clase NodePotentialTableCellRenderer – se ocupa de colorear la
tabla de relaciones potenciales, tanto la cabecera de los valores de los
padres, como la primera columna con los valores, como pintando en
colores alternos las filas para una mejor visualización. Esta clase es la
que se debe modificar en caso de determinar cambiar los colores,
fuentes o bordes de las celdas de la tabla.
• Clase NodePotentialTableModel – modelo para la tabla de
potenciales, definiendo que la primera columna no es visible (sólo es
para uso interno), los manejadores de datos para las columnas y los
métodos estándar en los modelos de tablas adaptados para este modelo
en particular.
• Clase PotentialsTablePanelOperations – es una clase auxiliar con
cinco métodos de calculo de apoyo:
• método checkIfPotentialsMustBeChanged – Comprueba si la lista de potenciales de un nodo dado deben ser cambiados cuando un evento de cambio de padres o de estados de un nodo se recibe.
• método doAddParent – este método auxiliar genera una nueva lista de potenciales de un nodo añadiendo una variable (un padre) a la lista previa que se le pasa en la llamada
Informe Técnico CISIAD-10-03 Página 31 de 125
Informe Técnico CISIAD-10-03 Diseño detallado del sistema
• método doDeleteParent – es el equivalente para eliminar un padre de una lista de potenciales
• calculate FirstEditableRow - calcula y devuelve la primera fila modificable de la tabla usando como parámetros el número de padres y el tipo de nodo. Es necesaria para que el gestor de la tabla sepa desde que fila puede permitir al usuario cambiar datos.
• método CalculateLastEditableRow – es el método equivalente para calcular la última fila modificable. Es necesario porque en el modelo de datos se almacena en la última fila los valores máximos de cada columna de potencial, con objeto de ser usados si el usuario elige ver la tabla como valores de estado en vez de como valores numéricos. Es un truco visual. Por tanto, esa última fila no es mostrada al usuario salvo en ese caso, y tampoco es modificable salvo en ese caso.
• método CheckIfNoPotential – comprueba si no hay potenciales para el nodo en uso
Clases no usadas:
Estas clases se han creado para evolución futura de los componentes de visualización de la aplicación:
• Clase NodePotentialFixedFirstColumnTableModel – esta clase
establece un modelo para un tipo de tabla de potenciales en el que la
primera columna, donde aparecen los nombres de las variables/nodos
no se desplazaría al realizar un desplazamiento lateral.
• Clase NodeUtilityTable – Clase para la representación de las tablas
de nodos de utilidad (y que debe ser completada su funcionalidad en la
siguiente fase de desarrollo)
Paquete diálogos (openMarkov.gui.dialogs)Ha sido necesario re-ordenar/rehacer el modo en que se habían organizado los paquetes y clases para crear y dibujar los diálogos y paneles con el objetivo de aislar elementos de visualización y hacerlos más fácilmente intercambiables. Para ello, en este paquete se han incluido todos los diferentes diálogos existentes en la aplicación, cada uno agrupado a su vez en un paquete. De este modo, será relativamente sencillo buscar los elementos a modificar en el futuro y se contribuye a seguir la regla de acoplamiento mínimo entre elementos [12].
Diagrama de clasesEn la figura se muestra cual es la relación de agregación de los diferentes
Informe Técnico CISIAD-10-03 Página 32 de 125
Informe Técnico CISIAD-10-03 Diseño detallado del sistema
paneles de edición de propiedades de un nodo. En el diseño se ha optado por encapsular cada sección de propiedades principales del nodo en clases independientes de dialogo, que permitan en un futuro su intercambio de un modo transparente e incluso dinámicamente. Estos diálogos usan en varios casos, componentes derivados de Jtable [2] [4] y de los elementos creados en la fase anterior de trabajo (KeyTable, KeyTablePanel, PrefixedKeyTablePanel y PrefixedDataTablePanel) y, al mismo tiempo, se ha considerado separar en diferentes elementos visuales independientes cada agrupación funcional (NodeDefinitionPanel, NodeDiscreteTablePanel, NodeDiscretizeTablePanel, NodeParentsPanel,
NodeProbsValuesPanel y NodeOtherPropsPanel) tal y como se ve aquí:
Informe Técnico CISIAD-10-03 Página 33 de 125
Ilustración 13: Jerarquía de clases de tablas y diálogos
Informe Técnico CISIAD-10-03 Diseño detallado del sistema
Diagrama de secuenciasCada vez que se invoca una de las opciones de menú para abrir un
dialogo, MainPanelListenerAssistant captura el evento para determinar la
acción a realizar:
• Al presionar la opción “Acerca de...”, mostrar el dialogo AboutBox
• Al presionar sobre el comentario de una red o un nodo, mostrar el
elemento de edición de comentarios HTML
• Al presionar la opción “Propiedades de red”, mostrar el dialogo
NetworkProperties
• Al presionar la opción “Propiedades del nodo”, mostrar el dialogo
NodeProperties
• Al presionar la opción “OpenMarkov Configuración”, mostrar el
dialogo Configuration
• Al presionar la opción “Cambiar idioma”, mostrar el dialogo
ChangeLanguage
Al arrancar la aplicación además se abre el dialogo Messages en la parte
inferior de la ventana principal
Dado que todos los lanzamientos de ventanas de dialogo con el usuario
son iguales, se incluye aquí el diagrama de secuencia de apertura del dialogo
de cambio de lenguaje a modo ilustrativo en el que se observa que una vez
que el asistente captura el evento del menú, obtiene del menú principal la
referencia del frame de donde se va a colgar la nueva ventana de dialogo
(son modales) y a continuación, invoca al dialogo correspondiente pasando
como parámetro de entrada el frame padre.:
Informe Técnico CISIAD-10-03 Página 34 de 125
Informe Técnico CISIAD-10-03 Diseño detallado del sistema
Paquetes y clases del paqueteSe ha creado un paquete para elementos base de algunos de los diálogos:
• paquete Common donde se ubican los componentes abstractos y las clases base en las que se apoyan los diálogos siguientes y en la que tan solo se ha añadido la clase PotentialsTablePanel.
y se ha creado un paquete por cada dialogo existente:• paquete About – dialogo para presentar los datos de “Acerca de...”
informativos del informe técnico.• paquete Comment – dialogo que se abre desde dentro de los paneles
de propiedades de redes y nodos para poner los comentarios de usuario final.
• paquete Configuration – dialogo para presentar las propiedades de usuario que se pueden personalizar (ver detalles más adelante en este documento en la sección correspondiente de configuración
• paquete Languages – dialogo para permitir al usuario el cambio de idioma durante el uso del programa.
• paquete Message – dialogo para mostrar la usuario diferentes mensajes durante el uso del programa.
• paquete Networks – dialogo para permitir la edición de propiedades de la red.
• paquete Nodes – dialogo para permitir la edición de propiedades del nodo.
• paquete Splash – ventana de splash que se muestra al arranque del
Informe Técnico CISIAD-10-03 Página 35 de 125
Ilustración 14: Activación de un dialogo elegido por el usuario vía menú
Informe Técnico CISIAD-10-03 Diseño detallado del sistema
programa.• paquete Zoom – dialogo para permitir la elección de grado de zoom de
visualización de las redes en pantalla.
De entre las clases existentes en este paquete, dada su importancia, es
necesario explicar las siguientes:
• Clase comment.CommentHTMLScrollPane – es el dialogo que se presenta al usuario cuando se hace doble click sobre la caja de comentario de los diálogos de edición de propiedades de redes y nodos. Usa las librerías eKit de Hexidec11 y el parser Jazzy encapsulado dentro del sub-paquete Swabunga12 de este paquete Comment seleccionadas en la etapa anterior de informe técnico.
• Clase about.AboutBoxDialog – es la responsable de presentar el logo, autores y algunas indicaciones básicas al usuario, y según el idioma seleccionado
• Clase common.PotentialsTablePanel – es la clase que genera el
panel usado para contener la tabla de edición de potenciales y que se
incluirá a su vez en el panel de edición de probabilidades. Esta clase es
equivalente a la clase KeyTablePanel cambiando la tabla KeyTable por la
tabla NodePotentialTable y eliminando la necesidad de botones de
adición/sustracción de filas que no son necesarias en este caso. La tabla
además tiene una primera fila editable en la posición donde comienzan
los valores de probabilidad, estando las filas entre la cero y esta fila
ocupadas por los valores de los estados de los padres de la variable.
Además, por diseño visual, las cabeceras de las columnas quedan
ocultas con altura 1 pixel.
• Clase configuration.PreferencesTableModel – es el modelo para manejar las preferencias de usuario y contiene los métodos necesarios para determinar el tipo de dato en la columna dada del modelo así como reiniciar y sincronizar las preferencias con las guardadas anteriormente en el sistema de ficheros del sistema operativo [5].
• Clase configuration.PreferencesEditorDialog – es la clase que
presenta el dialogo al usuario con una representación en forma de árbol
usando la clase PreferenceTreeNode del modelo existente en
11 Ekit es un software libre para la edición de codigo HTML desde aplicaciones o desde applets, creado por Howard Kistler, disponible en http://www.hexidec.com/home.php
12 Jazzy es un software libre que puede ser descargado desde http://sourceforge.net/projects/jazzy/
Informe Técnico CISIAD-10-03 Página 36 de 125
Informe Técnico CISIAD-10-03 Diseño detallado del sistema
PreferenceTableModel. En este dialogo se le da al usuario la posibilidad
de salvar las preferencias; reiniciar los valores por defecto de las
propiedades configurables; exportar o importar preferencias, y por
supuesto cancelar la acción.
• Clase languages.ChangeLanguageDialog – esta clase se explica en
detalle más adelante en el apartado de Internacionalización.
• Clase networks.NetworkPropertiesDialog – clase que presenta el
dialogo al usuario para modificar o establecer las propiedades generales
de una red, se ha modificado para separar en clases separadas la
gestión de los diferente panales de las propiedades por funcionalidad
(NetworkDefinition, NetworkVariables y NetworkOtherProperties)
correspondientes a cada pestaña del dialogo principal, siendo ahora
dicho componente principal responsable únicamente de leer y salvar los
datos al inicio y final de la secuencia.
• Clase splash.SplashScreenOpenMarkov - es la clase que se
menciona en el apartado de arranque de la aplicación.
• Clase nodes.CommonNodePropertiesDialog - es la clase que se
invoca cuando el usuario quiere editar las propiedades del nodo.
Informe Técnico CISIAD-10-03 Página 37 de 125
Ilustración 15: Dialogo de edición para propiedades de usuario
Informe Técnico CISIAD-10-03 Diseño detallado del sistema
Internamente extiende nodes.NodePropertiesDialog que, respecto a la
fase anterior, ha sido ampliado para incorporar la pestaña de edición de
probabilidades pero también reescrito con el fin de separar en clases
independientes y mejor mantenibles las diferentes pestañas de
propiedades como se indicó al inicio de esta sección, a saber,
• definición de nodo (NodeDefinitionPanel), • estados discretos del nodo (NodeDiscreteValuesTablePanel),• estados discretizados del nodo (NodeDiscretizeValuesTablePanel), • padres del nodo (NodeParentsPanel), • otras propiedades del nodo (NodeOtherPropertiesTablePanel), y• relaciones del nodo (NodeProbsValuesTablePanel)
Paquete editores (openMarkov.gui.edit)No se han realizado modificaciones a este paquete respecto al diseño de la fase anterior [7].
Paquete edición (openMarkov.gui.edition)Este paquete es el encargado de la edición de las redes en una ventana
del entorno multidocumento (MDI). Básicamente la edición se refiere a la
inserción y eliminación de nodos y enlaces en una red, así como la
modificación de las propiedades tanto de los nodos como de la red completa.
Se hace necesario recordar que este paquete, dada su complejidad, está
estructurado en varios subcomponentes (principal, visual y zoom).
Se han realizado pequeñas adaptaciones en este paquete para mejorar los
comentarios Javadoc, hacer llamadas a los ficheros de configuración de
propiedades de usuario (especialmente en el sub-paquete visual por el tema
de colores de los nodos y flechas de enlace) y para eliminar las llamadas a la
clase NodePropertiesDialogFactory el paquete principal una vez que se
decidió cambiar el diseño para no hacerlo vía patrón Factory [3].
Informe Técnico CISIAD-10-03 Página 38 de 125
Informe Técnico CISIAD-10-03 Diseño detallado del sistema
Paquete ayuda (openMarkov.gui.help)Este paquete es el responsable de la presentación de la ayuda en línea al usuario. Se explica en detalle en el capítulo 7.3.
Diagrama de clasesÚnicamente consta de una clase HelpViewer que presenta la ayuda.
Diagrama de secuenciasCuando el usuario, dentro del menú principal de trabajo selecciona la opción de menú de ayuda, como se muestra en la ilustración siguiente, la clase MainPanelListenerAssistant recoge la activación del elemento de menú y lanza la invocación del HelpViewer. Al realizarlo vía patrón Singleton [1] [3], en caso de que el usuario hubiese lanzado anteriormente la ayuda, no se crea una nueva instancia sino que se presenta la ya iniciada que se mantenía oculta en la aplicación.
Paquete entrada/salida (openMarkov.gui.io)Este paquete reúne las clases que se usan para que usuario pueda interactuar con el sistema de archivos tanto para leer como para escribir
Informe Técnico CISIAD-10-03 Página 39 de 125
Ilustración 16: Activación de la ayuda en línea al seleccionar el elemento de menú
Informe Técnico CISIAD-10-03 Diseño detallado del sistema
redes usando un dialogo estándar conocido. Se han realizado pequeñas adaptaciones en las clases de este paquete sobre la versión anterior [7] para mejorar los bucles FOR adaptándolos a las mejoras incluidas en Java 5.0 con lo que se consigue mejorar el rendimiento y el control de posibles excepciones al rebasar los límites. Se han incluido también nuevos comentarios Javadoc y se han revisado la visibilidad de los diferentes métodos (public, private, protected).Ninguna de estas adaptaciones ha modificado ni el diagrama de clases ni el diagrama de secuencias ya establecido en la versión anterior.
Paquete internacionalización (openMarkov.gui.localize)Los textos que aparecen en la interfaz gráfica de la aplicación serán visualizados en el idioma del sistema operativo sobre el que se ejecuta por primera vez la aplicación. Si el idioma no fuese ni español ni en inglés, y aplicando el principio de usabilidad de la internacionalización, se toma inglés por defecto.Este paquete se ha modificado para incluir los diferentes elementos que permiten ahora a OpenMarkov escuchar el evento que el usuario provoca al elegir el cambio de lenguaje y, en base a ese nuevo idioma, cambiar todas las etiquetas de los elementos de la aplicación. Esta personalización además se guarda en los archivos de configuración de modo que el usuario no tenga que volver a cambiarlo en sucesivas ocasiones.También se ha realizado una inclusión dentro del archivo Dialogs.properties de la mayor parte de las etiquetas13. Para realizar esto ha sido muy útil contar con el Plugin para Eclipse ResourceBundleEditor que permite editar al mismo tiempo los archivos de etiquetas de diversos idiomas y ver las inconsistencias entre ellos.
13 En la versión anterior, se crearon diferentes ficheros (Dialogs, Menús, Seleccionables, etc...) para separar las etiquetas según su diferente tipo de uso. Sin embargo, es más lógico agrupar las etiquetas según su agrupación funcional, independientemente de que se puedan repetir la misma cadena en diferentes etiquetas, con objeto de poder externalizar el componente como bean en el futuro.. Este es un trabajo de homogenización que debe continuar.
Informe Técnico CISIAD-10-03 Página 40 de 125
Informe Técnico CISIAD-10-03 Diseño detallado del sistema
Diagrama de secuenciasSe muestra primero el diagrama de activación del dialogo cuando el
usuario selecciona el elemento de menú correspondiente, obteniendo la
instancia del dialogo de cambio de idioma:
Una vez que el usuario cambia el idioma desde el dialogo, se produce la
Informe Técnico CISIAD-10-03 Página 41 de 125
Ilustración 18: Activación del dialogo de cambio de idioma
Ilustración 17: ResourceBundleEditor editando Dialog.properties
Informe Técnico CISIAD-10-03 Diseño detallado del sistema
siguiente serie de llamadas:
Clases del paquete• Clase Languages – es la clase que define que OpenMarkov soporta
dos idiomas en este momento (español e inglés) y se usa para cargar el
desplegable del dialogo de cambio de idioma. Si se añaden nuevos
idiomas debe incluirse en esta clase para ser mostrado como opción
nueva al usuario. (es una de las características que deberían ser
externalizadas en futuras fases del informe técnico para ser dinámico)
• Clase LocaleChangeAdapter – es una clase auxiliar para la clase
de LocaleChangeListener
• Clase LocaleChangeEvent – es el evento que se genera cuando el
usuario selecciona un cambio de idioma en el diálogo de Cambio de
Idioma
• Clase LocaleChangeListener – es el interfaz de escucha para
eventos de cambio de idioma que define el método
processLocaleChange que será invocado cuando se Acepte o se Aplique
Informe Técnico CISIAD-10-03 Página 42 de 125
Ilustración 19: Evento de cambio de idioma
Informe Técnico CISIAD-10-03 Diseño detallado del sistema
el cambio de idioma en el dialogo de usuario.
• Clase StringResource - se ha modificado para que siempre
devuelva una cadena y no genere una excepción. Si no encuentra el
elemento en los ficheros de idioma, devuelve una cadena del tipo ">>>
clave_buscada <<<“ al usuario, evitando que OpenMarkov finalice
inesperadamente y permitiendo al usuario final poder reportar el error.
• Clase StringResourceLoader - implementa ahora el interfaz
LocalChangeListener para regenerar los cambios de idioma en modo
dinámico.
• Interfaz StringResourceLocaleChangeListener - es el interfaz que
deben implementar las clases que tengan elementos dependientes de
lenguaje con el fin de ser notificados de los cambios que se produzcan.
En el apartado de internacionalización se detalla este comportamiento.
Paquete MDI (openMarkov.gui.mdi)No se han realizado modificaciones a este paquete respecto al diseño anterior [7].
Paquete menús y barra edición (openMarkov.gui.menutoolbar)Este paquete se encarga de la creación y gestión del menú principal, los
menús emergentes y la barra de herramientas. Por claridad, se estructura en
tres subpaquetes Common, Menu y Toolbar, agrupando en el paquete
Common las clases correspondientes a la gestión de constantes e
implementación de los menús, en el paquete Menu las clases de tipos de
menú (principal o emergente) y en el paquete ToolBar las clases que definen
las barras de herramientas.
Diagrama de clasesNo se ha modificado el esquema de clases respecto a la versión anterior [7].
Informe Técnico CISIAD-10-03 Página 43 de 125
Informe Técnico CISIAD-10-03 Diseño detallado del sistema
Diagrama de secuenciasNo se ha modificado el diagrama de secuencias respecto a la versión
anterior [7].
Clases del paquete modificadas• Clase common.ActionCommands - incluir los nuevos elementos de
menú para la ayuda y los cambios de lenguaje. Es en esta clase donde
se deben incluir las constantes que permiten al
MenuPanelListenerAssistant identificar las opciones de menú
correspondientes (ver página 138 de la documentación de la versión
anterior [7]) en tanto en cuanto no se cambie el diseño estático de
menús por uno dinámico.
• Clase MainMenu – se le ha añadido los menús de ayuda, se ha
eliminado el menú de visualización de nodos por nombre y se le ha
incorporado la visualización en el menú de los ficheros usados
recientemente (método getLastOpenFiles)
• Clase MainMenu, LinkPopUp, NetworkPopUp, NodePopUp – se han
incluido nombres a los diferentes elementos de menú para asegurar que
la función de cambio dinámico de idioma encuentra adecuadamente
dichos elementos en los archivos de properties correspondientes
dependientes de lenguaje.
• Clase PopUpMenuBasic – para asegurar el cambio de idioma en
tiempo de ejecución implementa la interfaz
StringResourceChangeListener.
Paquete redes (openMarkov.gui.networks)Este componente se encarga de realizar una abstracción sobre las clases que gestionan redes y nodos en el resto de paquetes de OpenMarkov, los cuales están fuera del alcance del informe técnico de interfaz. Son mayoritariamente envoltorios que aumentan las funcionalidades de las clases que envuelven principalmente ProbNode y ProbNet [20].
Informe Técnico CISIAD-10-03 Página 44 de 125
Informe Técnico CISIAD-10-03 Diseño detallado del sistema
Se ha modificado este paquete al ser necesario incluir nuevos atributos de los nodos y de las redes en los elementos NodeProperties, NodeWrapper y NetworkProperties.El resto de elementos no ha sido modificado salvo para eliminar usos incorrectos del lenguaje como se explica en el capítulo 5 sobre Mantenibilidad.
Diagrama de clasesNo se ha modificado la relación de clases de este paquete [7].
Diagrama de secuenciasNo se ha modificado la relación de llamadas entre paquetes hacia y desde este paquete creado en el trabajo anterior de Mendoza [7].
Paquete recursos (openMarkov.gui.resources)OpenMarkov, como cualquier aplicación con una interfaz visual de usuario, debe usar diferentes tipos de elementos visuales de apoyo (recursos). En la fase anterior, se crearon dos paquetes diferentes para los iconos y para los cursores que ahora están agrupados como sub-paquetes bajo este paquete y a los que se les ha añadido un nuevo paquete para las imágenes. Ha sido una de las re-estructuraciones sobre la fase anterior del informe técnico creando este paquete como contenedor de los otros.No se ha modificado el modo de uso de los cargadores [7].
Clases del paqueteAgrupadas en 3 paquetes principales y una clase:
• Clase OpenMarkovLogoIcon que se usa para cargar el icono de
OpenMarkov en las ventanas de dialogo
• Paquete Images
◦ almacena los ficheros de imágenes de los cursores que usa la aplicación principalmente los archivos de identificación de la aplicación en el titulo de la ventana principal y de cada red (C2_16.jpg); la imagen del Splash y del AboutBox de OpenMarkov (OpenMarkovSplashLogo.jpg) y la imagen usada en el AboutBox para separación de texto (lineSeparator.jpg). Otras imágenes han sido colocadas en este paquete pero no son estrictamente necesarias al ser para uso futuro para el paquete de desarrollo (las imágenes cuyo nombre comienza por “wizard...”).
◦ contiene la clase cargador ImagesLoader
Informe Técnico CISIAD-10-03 Página 45 de 125
Informe Técnico CISIAD-10-03 Diseño detallado del sistema
• Paquete Icons
◦ almacena los ficheros de iconos que usa la aplicación, basicamente los mismos que en la fase anterior.
◦ contiene la clase cargador IconLoader• Paquete Cursors
◦ almacena los ficheros de imágenes para los cursores que usa la aplicación. No se han modificado.
◦ contiene la clase cargador CursorLoader
Paquete deshacer (openMarkov.gui.undo)No se han realizado modificaciones sobre este paquete [7].
Paquete utilidades (openMarkov.gui.utils)En este paquete se agrupan dos grupos de clases diferentes. Las clases que gestionan las preferencias de usuario y las clases propiamente de utilidades.El usuario puede configurar ciertas propiedades. Para ello, OpenMarkov usa la funcionalidad existente en Java 6, Preferences, implantado en este paquete.
Diagrama de clases• Clase OpenMarkovPreferences que define cómo se accede a las
Informe Técnico CISIAD-10-03 Página 46 de 125
Ilustración 20: C2_16.jpg para títulos de ventanas en OpenMarkov
Ilustración 21: OpenMarkovSplashLogo.jpg para la aplicación OpenMarkov
Informe Técnico CISIAD-10-03 Diseño detallado del sistema
preferencias vía los diferentes métodos según sean valores de tipo
cadena, tipo integer, tipo boolean y tipo Color.
• Interface OpenMarkovPreferencesKeys define las constantes que
son externalizadas.
Diagrama de secuenciasEl acceso a las preferencias se realiza desde cualquiera de las clases que necesite un dato almacenado en la configuración externa. Este acceso se realiza mediante una invocación de la constante de modo directo y se recuperan los valores mediante las llamadas a los métodos get(key,...) correspondientes.
Paquetes pendientes: Paquete loader (openMarkov.gui.loader)Uno de los elementos que permitirá a OpenMarkov ser más mantenible y más extensible es la capacidad de definir nuevas funcionalidades mediante la adición en tiempo de ejecución de nuevos paquetes. Esto se realizará usando los elementos de carga de menús de manera dinámica en base a un fichero XML externo. Este comportamiento se define en este paquete y que también incluye una clase de ejecución de demostración.El objetivo de este paquete es que la mayor parte de los paquetes de OpenMarkov se carguen en el momento del lanzamiento del programa en vez de estar incorporados de manera integrada dentro del componente principal OpenMarkov.jar. Esto facilita la adicción de nuevas opciones en el menú mediante futuros “plug-in”.Este informe técnico no tenía inicialmente este desarrollo como objetivo, pero al analizar la mantenibilidad del informe técnico, se observó que uno de los puntos de mejora es permitir un modo ágil para añadir nuevas funcionalidades. Por ello, sólo se ha esbozado el paquete y se ha probado. Esta primera versión de ejemplo tan sólo crea los menús desde una fuente externa (OpenMarkovMenu.xml) en donde la definición del menú se almacena incluyendo los controladores para las acciones, pero en las próximas etapas del proceso de carga también podría permitir una carga dinámica de las ventanas e idiomas. Los futuros plug-in deberían estar colocados cada uno en su propio directorio debajo de un directorio específico bajo el directorio raíz de OpenMarkov, y en donde se copiarían las nuevas extensiones y las diferentes clases que apoyan los comportamientos de los controladores MenuItemHandler y ToolBarItemHandler . En el anexo de este documento se puede encontrar el fichero DTD de definición del cargador y el ejemplo usado para comprobar el comportamiento correcto del cargador. En esta versión del paquete, el
Informe Técnico CISIAD-10-03 Página 47 de 125
Informe Técnico CISIAD-10-03 Diseño detallado del sistema
cargador sólo está preparado para cargar menus según la siguiente tabla de atributos que pueden ser bien obligatorios (los señalados con X) o bien opcionales:
NAME LABEL MNEMONIC
SHORTCUT ICON ACTION
MENUS opcional
MENUBAR x
MENU X opcional X opcional
MENU ITEM X X opcional opcional opcional opcional
MENU SEPARATOR
POPUP MENU
X x
CHECKBOX MENUITEM
X X
TOOLBAR X opcional
TOOLBAR ITEM
X X opcional opcional opcional opcional
TOOLBAR SEPARATOR
• NAME = nombre interno del elemento de menu
• LABEL = etiqueta a mostrar al usuario en el menú por defecto
• SHORTCUT = combinación de teclado para activar este elemento
de menú (que puede ser una sola letra o bien CTRL+Letra o bien
ALT+Letra
• MNEMONIC = Una letra que activa el elemento de menú de una
lista ya desplegada (y debe ser única en la lista del mismo nivel)
• ICON = Icono que se puede mostrar junto al menú. Aquí se define
como el directorio completo y el nombre del fichero de extensión “gif” o
“jpeg”
• ACTION = Es la clase que resuelve la acción del elemento de
menú seleccionado. Debe indicarse el nombre completo cualificado de la
clase. Si la clase no existe, se rechaza en tiempo de ejecución no en
tiempo de compilación.
Informe Técnico CISIAD-10-03 Página 48 de 125
Informe Técnico CISIAD-10-03 Diseño detallado del sistema
Cómo usar el cargador para añadir un nuevo elemento de menú en un menú en particular14
Deben seguirse los siguientes pasos:
1. Crear la clase manejadora que gestionará el comportamiento del menú. Esta clase debe implementar la interfaz MenuItemHandler o el ToolbarItemHandler según corresponda:public interface MenuItemHandler {
/** * Called when a JMenuItem is activated. */public void itemActivated(JMenuItem item, ActionEvent event,
String sCommand);
/** * Called when a CheckboxMenuItem is deselected. */public void itemDeselected(JMenuItem item, ItemEvent event,
String sCommand);
/** * Called when a CheckboxMenuItem is selected. */public void itemSelected(JMenuItem item, ItemEvent event,
String sCommand);}
2. Crear un fichero XML según la especificación anterior:1. Escribir la cabecera 2. Escribir el elemento principal <MENUS>3. Escribir el elemento <MENUBAR ...>4. Escribir el elemento <MENU NAME=”...”> (donde el nombre debe
ser uno de los menús existentes en el informe técnico si lo que estás intentando es añadir un elemento de menú a dicho menú.
5. Escribir el elemento y sus atributos <MENUITEM NAME=”....” LABEL=”....” SHORTCUT=”...” MNEMONIC=”...” ICON=”...” ACTION=”nombre de la clase creada en el punto 1 anterior”
6. Escribir el cierre del elemento xml con “/>” o con </MENUITEM>7. Escribir el cierre del elemento de menú con </MENU>8. Escribir el cierre del elemento de barra de menús con
</MENUBAR>9. Escribir el cierre del elemento principal con </MENUS>
3. Salvar y cerrar el fichero XML.
14 De manera similar se crearían los nuevos separadores de menús, barras de iconos de menús (Toolbar), menús emergentes y diversos elementos de ventana.
Informe Técnico CISIAD-10-03 Página 49 de 125
Informe Técnico CISIAD-10-03 Diseño detallado del sistema
4. Finalmente, copiar un fichero JAR con los dos elementos (la clase manejadora y el XML en el directorio de plugins de OpenMarkov.
Paquetes pendientes: Paquete desarrollo (openMarkov.gui.development)
Uno de los grandes problemas en todo desarrollo de software es conseguir que todos los elementos son construidos de un modo semejante siguiendo las normas de codificación establecidas. En la medida de lo posible, esto debería ser conseguido con la creación del código de manera automática, o al menos dirigida, a través de herramientas de desarrollo incluidas en un ambiente de desarrollo específico para dicho informe técnico. En el caso particular de los desarrollos de las interfaces de usuario es un requisito aún más importante de cara a la futura mantenibilidad [13]. Este paquete es un mero embrión de dicha idea: facilitar una arquitectura de desarrollo de GUI al nuevo programador de OpenMarkov para que la generación de código o la modificación de ciertos elementos venga dirigida por estas herramientas de apoyo y siendo, de facto, una herramienta de generación de “cero código” al estilo de los paquetes de creación de elementos visuales en NetBeans o en WindowsBuilder.En el futuro este paquete debe ser extraído del proyecto base y replicado en su propio proyecto (¿OpenMarkovDevelopment?) tras la evaluación de conveniencia final por parte del equipo director. El entorno de desarrollo se visualizaría pues como una ventana de trabajo en el que el programador tendría a su disposición una serie de paquetes en una paleta, una representación en formato árbol de los elementos que configuran la interfaz con sus dependencias de integración y, finalmente, la representación visual del conjunto en tiempo real. Con un simple movimiento de los elementos en la parte visual se actualizaría el árbol de representación o viceversa, permitiendo una mejora en el tiempo de desarrollo pero, más importante, evitando al programador la tediosa tarea de realizar la codificación de dichos elementos para adaptarse a la nueva configuración. La construcción se basa en ficheros XML conformados en base a un DTD especifico que se interpretan en tiempo de ejecución para crear el entorno de trabajo del usuario final. Estos ficheros XML son los que se representan en la parte izquierda del entorno de trabajo al desarrollador.
PaquetesTiene seis paquetes principales en este momento
• Paquetes Actions (handlers) para manejar las acciones definidas
en un fichero XML de definición de menús de modo similar a lo
explicado en el paquete de gestión de menús. Es el sub-paquete más
Informe Técnico CISIAD-10-03 Página 50 de 125
Informe Técnico CISIAD-10-03 Diseño detallado del sistema
importante de este paquete de desarrollo. Se han incluido algunas
clases de ejemplo para la gestión de ficheros (apertura, cierre, etc...) y
visualización de la ayuda.
• Paquete Dialogs, al ser solo un embrión de informe técnico, sólo
contiene el dialogo AboutBoxDevEnv.
• Paquete Environment es el paquete principal que presenta la
interfaz descrita para modificar propiedades de desarrollo. Consta de
tres elementos:
▪ Clase OpenMarkovDevEnv es la clase principal que lanza el entorno e inicializa el fichero de trazas de los realizado (Logger) para asegurar que se puede realizar una depuración y reconstrucción de lo realizado en caso de necesidad.
▪ Clase OpenMarkovDevEnvFrame es el entorno visual en sí mismo donde se alojaron los diferentes menús de trabajo, paletas y arboles de representación.
▪ Clase OpenMarkovDevEnvProperties define las propiedades de configuración del entorno. Esta clase debe ser sustituida por el nuevo modo de trabajo existente en OpenMarkov para almacenar las preferencias usando Preferences.
• Paquete i18n es el paquete de internacionalización necesario para
que el ambiente de desarrollo pueda ser usado en diferentes países
[22].
• Paquete Resources es el paquete para contener los iconos de la
aplicación de desarrollo
• Paquete Tools es el paquete donde residen las clases auxiliares
◦ Clase OpenMarkovDevDOMTreeCellRenderer es el elemento para la gestión de los elementos contenidos en el árbol de representación de las propiedades. Debe ser extendido y mantenido apropiadamente en el futuro.
◦ Clase OpenMarkovDevTreeModel contiene la base para la representación visual del árbol de propiedades (iconos, letras, …).Nota: El fichero de definición del entorno de desarrollo está ubicado bajo el propio directorio src/OpenMarkov/gui/development en esta versión. Su ubicación viene determinada por el nombre del fichero OpenMarkovDevEnv.menu.xml (ver clase OpenMarkovDevEnvFrame)
Informe Técnico CISIAD-10-03 Página 51 de 125
Informe Técnico CISIAD-10-03 Mantenibilidad
MantenibilidadUno de los retos de OpenMarkov es asegurar la mantenibilidad futura. Se
han realizado tareas orientadas a la revisión del grado de esta, eliminando
aquellos usos incorrectos del lenguaje Java tales como llamadas incorrectas
o innecesarias al método super(), inclusión/eliminación de clausulas static,
clausulas Javadoc, etc. como se recoge a continuación:
Regla Fuentes que se han
alterado
Comentario
Eliminación de llamada innecesaria a super() sin parámetros
31 Una clase que extiende de otra no necesita poner como primera sentencia de su constructor super() ya que Java ejecuta siempre dicha orden en la creación del objeto extendido
Clausulas static 26 Los métodos y atributos que no son dependientes de las instancias de una clase deben definirse como static consiguiendo un mejor aprovechamiento de la memoria ocupada por el programa en ejecución
Javadoc modificado o completado 221 Este elemento es clave para asegurar que los futuros desarrolladores tengan documentación actualizada del comportamiento interno de una clase y sus atributos.
Eliminar mayúsculas en nombres de paquetes 8 Es una convención establecida en los estándares de SUN para la programación en Java
Eliminar llamadas a los métodos System.out y System.err
10 Modificación para hacer llamadas a la gestión en la ventana de mensajes
Eliminar captura de la excepción genérica Exception
17 Creación de excepciones particulares para gestionar con mensajes apropiados y evitar la llamada a printStackTrace()
Informe Técnico CISIAD-10-03 Página 52 de 125
Informe Técnico CISIAD-10-03 Mantenibilidad
Sin embargo, el trabajo está aún incompleto ya que hay elementos aún
con mejoras posibles, tanto dentro como fuera del paquete GUI, que tienen
mejoras posibles para conseguir que la calidad del software sea superior en
relación a los mencionados estándares de codificación. A continuación se
muestra un inventario de cambios que se deben efectuar:
Regla Fuentes que se deben alterar15
Comentario
Evitar captura de excepción genérica “Exception”...
56 ...creando una excepción especifica
Diversas reglas 2677 Las siguientes filas indican algunas de las reglas que, al aplicarse, mejoran la legibilidad y ejecución del código
Definir los tipos de los elementos contenidos en Contenedores de tipo Raw (ArrayList, Vector, Enumeration, Iterator, Collection, etc...) en el momento de definir dicho atributo dentro de una clase
1789 Realizar esta comprobación en tiempo de compilación evita problemas en tiempo de ejecución. Es una mejora al lenguaje Java en la versión 1.6.
Particularizar clases que heredan de clases base Raw para definir el tipo de los elementos
221 Realizar esta comprobación en tiempo de compilación evita problemas en tiempo de ejecución. Es una mejora al lenguaje Java en la versión 1.6.
Debe evitarse el uso de sentencias “import xxx.*;”
Deben usarse importaciones de las clases necesarias para reducir visibilidad innecesaria de objetos.
No utilizar interfaces para la definición de constantes (es un anti-patrón)
3 Usar clases finales que evitan futuros problemas de mantenimiento.
15 Este inventario está realizado contra la versión existente en el repositorio de fuentes a fecha 6 de mayo de 2010
Informe Técnico CISIAD-10-03 Página 53 de 125
Informe Técnico CISIAD-10-03 Mantenibilidad
Para poder determinar finalmente si este trabajo ha mejorado la calidad
global del producto en términos de seguimiento de las mejores prácticas de
codificación y, por tanto, mejora la mantenibilidad, se ha realizado una
valoración del software de OpenMarkov usando el evaluador gratuito que la
empresa Enerjy Software16 nos brinda. Este software se instala como plug-in
dentro de eclipse y permite la calificación en modo dinámico (“score”) tanto
del conjunto del informe técnico como de los paquetes e incluso de cada
clase. La puntuación conseguida con este trabajo ha sido de 8.8 puntos
(mejor que la publicada para WEKA de tan sólo 5.6 puntos en la página web
de Enerjy Software) como se muestra a continuación.
16 Enerjy es un plug-in gratuito para Eclipse de Enerjy Software. Puede encontrarse en http://www.enerjy.com/download/
Informe Técnico CISIAD-10-03 Página 54 de 125
Ilustración 24: Página web de Enerjy Software: Puntuación de WEKA = 5.6
Ilustración 23: Enerjy Software: Puntuación global de OpenMarkov = 8.8
Ilustración 22: Enerjy Software: Puntuación del paquete GUI = 8.8
Informe Técnico CISIAD-10-03 Usabilidad
UsabilidadOpenMarkov pretende ser un programa para ser ejecutado en los más
variados entornos y por diferentes tipos de usuarios. Por ello, deben
extremarse y cuidarse todos aquellos aspectos de usabilidad. La ISO/IEC17,
en su norma ISO 9126 para la evaluación del software, expresa que "la
usabilidad se refiere a la capacidad de un software de ser comprendido,
aprendido, usado y ser atractivo para el usuario, en condiciones específicas
de uso",
Durante este trabajo se ha revisado la interfaz gráfica para comprobar y asegurar que los principios de usabilidad se aplicaban. Entre ellos, mencionaremos el uso de tres elementos importantes: el lenguaje o internacionalización; el uso del color y la homogeneidad de las diferentes ventanas y, por último, la disponibilidad de ayudas de usuario. Estos son de los elementos más importantes para que un usuario pueda usar una aplicación de un modo intuitivo. En este apartado se describen cómo se han tenido en cuenta para el diseño de la interfaz.
InternacionalizaciónInternacionalización es el proceso de diseñar una aplicación para que
pueda ser adaptada a diferentes idiomas y regiones, sin necesitad de
cambios de ingeniería [22]. Algunas veces el término internacionalización se
abrevia i18n, porque en el idioma inglés hay 18 letras entre la "i" y la "n" de
Internacionalización.
Un programa internacionalizado tiene las siguientes características.
• Con la adición de datos de localización, el mismo ejecutable puede
ser ejecutado en cualquier lugar del mundo.
• El texto mostrado está en el idioma nativo del usuario final.
• Los elementos textuales como mensajes de estado y etiquetas de
elementos GUI no están codificadas dentro del programa. Son
almacenados fuera del código fuente y recuperados de forma dinámica.
17 Organización Internacional para la Estandarización (International Standards Organization)
Informe Técnico CISIAD-10-03 Página 55 de 125
Informe Técnico CISIAD-10-03 Usabilidad
• El soporte de nuevos idiomas no requiere re-compilación.
• Otros datos dependientes de la cultura, como fechas y monedas,
deben aparecer en el formato e idioma de la región del usuario final.
• Se pueden incorporar rápidamente nuevas especificidades locales
al país donde se quiera implantar (lo que se denomina “localización”)
OpenMarkov usa estos principios de internacionalización para poder ser
usada en cualquier país excepto los relacionados con las presentaciones de
datos numéricos, usando por defecto el modo español de presentación
usando el signo “,” como separador decimal.
ImplementaciónComo mejora al diseño de la fase anterior en que OpenMarkov definía el idioma a usar para presentar los elementos gráficos basándose en el que el usuario tenga seleccionado en su equipo de trabajo, se ha incorporado la posibilidad de que el propio usuario pueda cambiar en tiempo de ejecución el idioma en el que quiere trabajar sin depender del idioma del sistema operativo, y que la selección quede guardada como preferencia de usuario.Para ello, se han realizado tres tareas principales:
• Creación del diálogo de usuario para el cambio de lenguaje
• Creación de métodos para controlar y cambiar el idioma a todos
los elementos gráficos usando las propiedades de reflexión del lenguaje
Java.
• Modificación de las clases gráficas para escuchar por un posible
cambio de lenguaje en tiempo de ejecución
Informe Técnico CISIAD-10-03 Página 56 de 125
Ilustración 25: Relación de internacionalización
StringResource StringResourceLoader
LocaleChangeEvent StringResourceListener
Dialog PanelsChangeLanguageDialog
Informe Técnico CISIAD-10-03 Usabilidad
Pantalla de dialogo:
La pantalla de dialogo con el usuario queda como se ve en la siguiente donde se muestra el campo para elegir el idioma en el que queremos ver la aplicación junto con un texto de ejemplo antes de aceptar finalmente el
cambio. En caso de cambiar el idioma, vemos cómo cambia el dialogo.
Informe Técnico CISIAD-10-03 Página 57 de 125
Ilustración 26: Dialogo de usuario para cambio de lenguaje (por defecto)
Informe Técnico CISIAD-10-03 Usabilidad
Métodos añadidos para el cambio de idioma18
Para poder realizar cambios de idioma en tiempo de ejecución, el desarrollador debe incluir ciertos métodos y llamadas en las clases visuales que usen textos para que cuando el usuario cambie el idioma, el texto en dichas ventanas se actualice.Lo primero que debe hacer es definir la clase como oyente de los cambios de idioma incluyendo en su definición la implementación de “StringResourceLocaleChangeListener” y definiendo apropiadamente el método “processStringResourceLocaleChange” que es el que incluye realmente el cambio de los textos.Dado que se usa la introspección interna de Java, es responsabilidad del propio desarrollador dar al paquete el mismo nombre de la clase para que el método anterior pueda encontrar el literal correspondiente en el idioma seleccionado dentro de los diferentes ficheros de lenguaje definidos en
18 Para más idetalle, el desarrollador puede consultar la información de ayuda existente en el “Manual de Ayuda Online al Desarrollador”, en inglés, que se ha creado también como parte de este Informe técnico y que se puede consultar en uno de los anexos.
Informe Técnico CISIAD-10-03 Página 58 de 125
Ilustración 27: Cambio del texto ejemplo al seleccionar un idioma
Ilustración 28: Idiomas permitidos en el cambio de lenguaje
Informe Técnico CISIAD-10-03 Usabilidad
OpenMarkov.El efecto que estos dos cambios indicados produce desde el punto de vista del usuario es que, al cambiar el tipo de idioma, los textos del elemento visual cambian como se muestra en las figuras anteriores.
El uso del color
Principios a recordar para el uso del colorEl color ayuda y mejora la presentación de la interfaz permitiendo al
usuario comprender y manejar la complejidad. Según Shneiderman [21], se
establecen catorce puntos claves para la utilización efectiva del color en un
interfaz gráfica. Estos puntos se han revisado en OpenMarkov siendo los
más relevantes los siguientes:
• Limitar el número de colores utilizados y ser conservador al
momento de utilizarlos.
• No utilizar más de 4 ó 5 colores diferentes en una ventana y no
más de 7 en la interfaz total del sistema para evitar que su despliegue
sea confuso.
• Utilizar un cambio de color para mostrar cambio de estado del
sistema, por ejemplo, indicando con semáforos de alerta estados
normal o alarma
• Utilizar el código de colores para apoyar la tarea que los usuarios
están tratando de llevar a cabo, por ejemplo, un color para resaltar una
situación anómala, otro color para mostrar similitudes.
• Utilizar el código de colores en una forma consciente y
consistente, por ejemplo, si usamos el rojo para mostrar alarma,
mantener esa lógica durante todo el sistema.
• Ser cuidadoso al utilizar pares de colores pues dada la fisiología
del ojo, las personas no pueden enfocar el rojo y el azul
simultáneamente.
En general, el color no debe utilizarse para representar un significado
Informe Técnico CISIAD-10-03 Página 59 de 125
Informe Técnico CISIAD-10-03 Usabilidad
particular [21]. Por dos razones: la primera es que cerca del 10% de los
seres humanos no perciben el color y pueden malinterpretar su significado;
la segunda es que las percepciones del color son diferentes y existen
convenciones diversas para varias regiones y profesiones. Por ejemplo, el
rojo para sectores automovilísticos significa peligro, pero para sectores de
uso químico significa temperatura elevada no necesariamente peligrosa.
Aplicación del uso del color en OpenMarkovOpenMarkov aplica estos principios anteriores para ofrecer al usuario una experiencia amigable al usar las diferentes ventanas. A continuación se muestran los cuatro ambientes que un usuario puede encontrar: ventana principal con menús, área de trabajo con redes, diálogos de asignación de propiedades, y representación de tablas.La pantalla que se muestra a continuación nos muestra la zona superior de OpenMarkov en la que están los menús y la barra de herramientas:
Zona de menús y área de trabajo general:• Uso de seis colores: Azul, Amarillo, Verde, Gris, Negro y Blanco.
• Se reserva el color rojo para los mensajes de aviso crítico al
usuario en la ventana de mensajes.
• Titulo de ventana con letras en blanco sobre fondo azul para
favorecer el contraste y añadiendo en cabecera el icono del logotipo de
OpenMarkov.
• Fondo en gris claro para las áreas de menú con objeto de
distinguir de modo claro que no forman parte del área de las redes y
porque este color gris permite resaltar el color negro de los textos.
• Fondo blanco para el área de trabajo donde se abrirán las redes.
• Fondo de un elemento de diseño activado en blanco frente al color
Informe Técnico CISIAD-10-03 Página 60 de 125
Ilustración 29: Colores usados en el menú principal y barra de herramientas
Informe Técnico CISIAD-10-03 Usabilidad
gris de los no activado (en el ejemplo, aparece activado el elemento
FLECHA de selección de elementos en la red) para ayudar al usuario a
conocer qué herramienta esta usando. Al mismo tiempo el cursor
cambia su forma para adaptarse a dicha herramienta en uso.
Zona de visualización de una red:• Usa cinco colores: Azul, Amarillo, Verde, Negro y Blanco.
• Se reserva el color rojo para los mensajes de aviso crítico al
usuario en la ventana de mensajes.
• Titulo de ventana con letras en blanco sobre fondo azul para
favorecer el contraste y añadiendo en cabecera el icono del logotipo de
OpenMarkov.
• Fondo en blanco para el área de dibujo de la red para acentuar el
contraste de los colores a usar en los nodos (amarillo, azul y verde).
• Colores vivos [21] claramente diferenciados para los nodos de la
red y con forma diferente para evitar los problemas de los usuarios para
distinguir colores.
Informe Técnico CISIAD-10-03 Página 61 de 125
Ilustración 30: Herramienta Selección marcada
Ilustración 31: Cursores correspondientes a las herramientas seleccionadas
Ilustración 32: Colores usados al visualizar/editar redes
Informe Técnico CISIAD-10-03 Usabilidad
• Nombres de los nodos de la red en negro (al ser el color que
destaca de manera importante sobre los color de fondo de cualquier
nodo).
Diálogos con el usuario:En los diálogos para pedir al usuario la introducción de datos se usa un
entorno reducido de colores• Cuatro colores: Azul, Amarillo, Verde, Negro y Blanco
• Titulo de ventana con letras en blanco sobre fondo azul y con
icono del logotipo de OpenMarkov
• Fondo en blanco para el área de dibujo de la red para acentuar el contraste de los colores a usar en los nodos.
• Se reserva el color rojo para los mensajes de aviso crítico [21] al usuario en los diferentes campos cuyos valores no son permitidos
Finalmente, en el dialogo para la edición de tablas se ha optado por incluir un uso alternado de color en las filas para ayudar al usuario a distinguir [21] de que estado en particular se están editando los potenciales, y se ha alternado también el color de los estados del padre por la misma razón:
Informe Técnico CISIAD-10-03 Página 62 de 125
Ilustración 33: Uso del color en las pantallas de dialogo con el usuario
Informe Técnico CISIAD-10-03 Usabilidad
Ayuda en línea para el usuario final OpenMarkov pretende ser una herramienta de usuario final con una curva
de aprendizaje muy rápida debido a la sencillez de su interfaz. Sin embargo,
este requerimiento debe ir acompañado de la creación de un sistema de
ayuda ágil, dinámico, intuitivo y cómodo de mantener para el futuro.
Con la decisión de usar Java como un lenguaje de programación, se ha
necesitado un sistema de creación y presentación de elementos de ayuda
tan flexible como el propio lenguaje Java que permitiese a los usuarios del
programa un uso natural. Es por ello por lo que se ha decidido usar la
herramienta estándar de Java: JavaHelp.
Informe Técnico CISIAD-10-03 Página 63 de 125
Ilustración 34: Colores en la edición de tablas de potenciales
Informe Técnico CISIAD-10-03 Usabilidad
Introducción a JavaHelpJavaHelp19 es un sistema de ayuda en línea desarrollado por SUN
Corporation Inc. dentro de su suite de elementos para Java. Consta de una
tabla de contenidos (TOC20), indices y buscadores para encontrar y mostrar
las diferentes secciones de la ayuda, que están almacenadas en ficheros
HTML y que además permiten incorporar elementos gráficos como imágenes.
JavaHelp usa un sistema de visualización en una ventana auxiliar dividida
en tres partes: una zona para el panel de herramientas; una zona para el
panel de navegación de secciones y, por último, una zona para mostrar las
páginas de ayuda. Este ventana de tres zonas es el denominado “HelpSet
Viewer” y ofrece a los usuarios la habilidad de trabajar con las diferentes
opciones del sistema de ayuda, navegar por las secciones y ver las
diferentes páginas de ayuda al mismo tiempo sin tener que estar cambiando
de ventanas. Usando este panel que ofrece JavaHelp, el usuario es capaz de
seleccionar una ayuda del árbol de navegación y ver instantáneamente en el
panel de contenidos cuál es la correspondiente ayuda. Si además esa página
de ayuda tiene llamadas a otras páginas y el usuario pincha sobre dicho
vinculo, el panel de navegación se actualiza también de modo automático
permitiendo al usuario conocer en todo momento dónde se ubica la página
llamada. Los ficheros de sección JavaHelp son ficheros HTML y estos ficheros
HTML se comportan de un modo idéntico a como lo hacen en un navegador
web. Es decir, el “HelpSet Viewer” funciona como un navegador Web: tiene
controles parecidos, pero está diseñado específicamente para trabajar con
ficheros JavaHelp.
JavaHelp puede ser usado para presentar la ayuda en cuatro modos
diferentes a saber:
• Ayuda a nivel de aplicación
El usuario accede a alto nivel, tal como un Tópico de introducción o una
19 JavaHelp de Sun Microsystems es un sistema de ayuda en línea desarrollado para el lenguaje de programación Java.
20 TOC – Ver glosario
Informe Técnico CISIAD-10-03 Página 64 de 125
Informe Técnico CISIAD-10-03 Usabilidad
tabla de contenidos
• Ayuda a nivel de pantalla
El usuario pulsa un botón para lanzar el sistema de ayuda con una página
especifica que describirá la pantalla actual donde se encuentra el
usuario
• Ayuda a nivel de campo
El usuario selecciona un elemento especifico de la pantalla (como un
campo de texto o un botón o un desplegable) sobre el que desea
ayuda.
• Ayuda embebida
El sistema de ayuda se construye de modo directo sobre la interfaz
gráfica
OpenMarkov está usando en este momento la ayuda a nivel de aplicación
y está preparada para usar ayuda a nivel de pantalla y de campo si se
incorporan, por un lado, los marcadores en las paginas de ayuda y, por otro,
en cada pantalla las llamadas correspondientes a dichos marcadores.
DiseñoEl diseño de estos principios se ha definido mediante tres casos de uso,
como se muestra en la ilustración siguiente, siendo uno de los casos el
responsable de la apertura de la ayuda pero pudiendo ser llamado por el
usuario a través de los otros dos, dependiendo de si es una ayuda de
aplicación o de ventana:
Informe Técnico CISIAD-10-03 Página 65 de 125
Informe Técnico CISIAD-10-03 Usabilidad
Implementación en OpenMarkovPara poder usar JavaHelp dentro de OpenMarkov, y siguiendo los
principios marcados por SUN para su uso, se ha desarrollado una clase de
visualización (HelpViewer) que será la responsable de la presentación de la
ayuda.
El contenido de la ayuda se ha creado siguiendo un árbol de acceso que
permita al usuario final encontrar rápidamente lo que necesita.
Dentro de la ayuda en línea creada para el desarrollador se han incluido
Informe Técnico CISIAD-10-03 Página 66 de 125
Ilustración 36: Ayuda en línea para usuarios (en español)
Ilustración 35: Gestión de ayuda al usuario
Informe Técnico CISIAD-10-03 Usabilidad
apartados específicos para definir claramente como debe realizarse la
estructura de los ficheros HTML de la ayuda, las hojas de estilo usadas y las
convenciones usadas para los índices, tablas de contenidos y estructuras.
Debemos reseñar que la ayuda orientada al usuario final ha sido creada
en los dos idiomas actuales y todo nuevo idioma que se vaya a incorporar en
OpenMarkov debe incluir una traducción apropiada de la ayuda de usuario.
Sin embargo, ayuda orientada al desarrollador sólo se ha creado en inglés al
entender que los futuros colaboradores de OpenMarkov como software libre
pueden estar en cualquier lugar y que no tendrán problemas para leer la
documentación interna del informe técnico en dicho idioma.
Informe Técnico CISIAD-10-03 Página 67 de 125
Informe Técnico CISIAD-10-03 Tareas futuras
Tareas futurasLas tareas que se deben realizar a continuación para completar la creación
del ambiente gráfico de OpenMarkov, aportando nuevas funcionalidades se
enumeran a continuación, agrupadas en aquellos puramente de edición y las
que son más orientados a aspectos de usabilidad.
• orientadas a la edición de los modelos gráficos probabilistas:
✗ Incluir el manejo de potenciales en las tablas de probabilidad para los
nodos de decisión. Habría que considerar en dónde se guarda además
el atributo que define el tipo de decisión (optima, determinista o
probabilista)
✗ Completar el diálogo de edición de nodos de la red para permitir
hacer/deshacer el efecto que sobre las tablas de probabilidades tiene
la adición/sustracción de padres (o cambio del número de estado de
los padres), teniendo en cuenta que habría que recorrer todos los
potenciales donde exista dicha variable.
✗ Completar el diálogo de edición de nodos de la red para permitir
hacer/deshacer el efecto que sobre las tablas de probabilidades tiene
la adición/sustracción de estados de la variable asociada al nodo.
✗ Completar el diseño y la implementación que permita una actualización
dinámica de las tablas mostradas en pantalla mientras se van
ejecutando los algoritmos de inferencia seleccionados por el usuario
mediante los métodos edit/undo necesarios.
✗ Completar la unificación de métodos undo/redo en todas los elementos
de la interfaz gráfica en el momento del cambio por el usuario sin
esperar a la validación final de la ventana de dialogo.
✗ Incorporar explicación de nodos y enlaces dentro de la visualización de
la red.
Informe Técnico CISIAD-10-03 Página 68 de 125
Informe Técnico CISIAD-10-03 Tareas futuras
✗ Incorporar el análisis de sensibilidad a la red.
• orientadas a la mejora de la amigabilidad de la interfaz:
✗ Completar tabla de edición de probabilidades para distinguir en base a
códigos de colores los estados de los nodos padre, agrupando cada
estado de un padre en un color determinado.
✗ Completar el diálogo de propiedades de configuración de OpenMarkov
para visualizar los colores en vez de usar códigos numéricos RGB
usando un editor personalizado
✗ Completar el diálogo de propiedades de configuración de OpenMarkov
para visualizar las propiedades compuestas con editores
personalizados
✗ Completar la externalización de propiedades de configuración de
OpenMarkov para no dejar ninguna propiedad definida en código,
teniendo en cuenta que aquellas propiedades que no deben ser
modificables por un usuario final deben estar agrupadas bajo
SystemRoot y UserRoot.
✗ Completar la internacionalización para tener en cuenta los elementos
fecha y los elementos decimales (“.” vs. “,”)
✗ Completar la creación de manuales de ayuda orientados al usuario final
si procede con alguna pantalla adicional
✗ Completar la realización de menús usando el formato XML externo
definido según la arquitectura de OpenMarkovMenu.xml y en las clases
de ejemplo.
✗ Completar la arquitectura basada en Plug-ins
✗ Completar una arquitectura de desarrollo que permita la
lectura/escritura de componentes desde el repositorio de manera
controlada y supervisada para asegurar la calidad global del informe
técnico
Informe Técnico CISIAD-10-03 Página 69 de 125
Informe Técnico CISIAD-10-03 Tareas futuras
✗ Completar una arquitectura de actualización remota de versiones
orientada a usuario final en conexión del programa
✗ Unificar las dos clases de configuración que existen en el código
OpenMarkov.io.configuration.OpenMarkovConfiguration y
openMarkov.gui.utils.OpenMarkovPreferences
Informe Técnico CISIAD-10-03 Página 70 de 125
Informe Técnico CISIAD-10-03 Conclusiones
ConclusionesOpenMarkov es una herramienta software cuya finalidad es la creación y
edición de modelos gráficos probabilistas, muy útiles para representar
modelos del mundo real. En su construcción prima la aplicación de los
principios de la metodología de desarrollo del software, por los cuales se
está consiguiendo un software robusto, eficiente, escalable y extensible.
Como resultado de este informe técnico se diseña e implementa la interfaz
gráfica de usuario, mejorándola iterativamente y añadiendo elementos que
permitan una primera versión de la edición visual de tablas de probabilidad
de los nodos para el modelo general e incluyendo la documentación
necesaria para el mantenimiento posterior.
De forma general, los requisitos funcionales que se cumplen son:
• La interfaz permite la edición visual de tablas de probabilidad de
los nodos usando como base la información contenida en los nodos
(estados, padres, potenciales) y su lectura y almacenamiento en
ficheros.
• Las tablas que se manejan corresponden a los nodos de
probabilidad de redes probabilistas y a los nodos de elección, decisión y
utilidad en los diagramas de influencia teniendo en cuenta cada una de
sus particularidades.
• La edición de las tablas engloba la creación inicial, la modificación
de valores y la visualización según diferentes condiciones.
• Para facilitar el trabajo, el usuario continua disponiendo de los
mecanismos habituales en cualquier herramienta de edición, como son
la disponibilidad de un porta-papeles y la posibilidad de deshacer las
ediciones llevadas a cabo.
Informe Técnico CISIAD-10-03 Página 71 de 125
Informe Técnico CISIAD-10-03 Conclusiones
Como requisitos no funcionales, de este informe técnico se han
conseguido:
• Mejoras de la usabilidad y amigabilidad de la interfaz gráfica.
• Incorporación de un mecanismo de memoria de los últimos documentos abiertos que permita su re-apertura con el mínimo esfuerzo.
• Incorporación de diálogos para personalización de propiedades de usuario tales como colores y lenguaje
• Incorporación de ayudas de usuario.Como un punto importante a destacar dentro de los requisitos no
funcionales se ha dedicado un gran esfuerzo para realizar un diseño basado
en la simplicidad y la metodología de desarrollo del software, haciendo uso
de las técnicas de desarrollo actuales, como la orientación a objetos y los
patrones de diseño, que hacen que OpenMarkov sea más fácilmente
mantenible y se consigue que la evaluación de OpenMarkov en el
seguimiento de las mejores prácticas de programación bajo Java según los
estándares de SUN21, medido de manera gratuita por el software de la
empresa Enerjy Software, sea muy alto (8.8 puntos22), frente a la
puntuación conseguida de 5.6 puntos por el programa WEKA23. Este índice
alto indica la protección de este software frente a potenciales vicios ocultos
que podrían provocar fallos inesperados de ejecución y, al mismo tiempo,
permiten asegurar un uso eficiente del lenguaje y de los recursos de
máquina necesarios para ser ejecutada la aplicación.
Asimismo dentro de este estudio se cuidan todos los detalles para que la
documentación externa sea suficiente y clara, haciendo uso de los
mecanismos y diagramas del lenguaje de modelado UML y de las ventajas
que ofrece, e incluyendo una ayuda al desarrollador usando la utilidad
JavaHelp, intencionadamente en inglés para asegurar su lectura a nivel
21 Sun Corporation como creador de Java define una serie de mejores prácticas y convenciones para el buen uso del lenguaje que son usadas ampliamente.
22 Resultado del score a finales de abril 2010 incluyendo el total del informe técnico. El paquete gui recibe una puntuación de 8.8 también. Existiendo aún varias mejoras a realizar para conseguir el objetivo de 10.0
23 Se puede consultar esta puntuación de WEKA en http://www.enerjy.com/explorer/index.html. Lamentablemente no se indica la fecha en la que se ha realizado la evaluación ni la versión del programa.
Informe Técnico CISIAD-10-03 Página 72 de 125
Informe Técnico CISIAD-10-03 Conclusiones
universal, de modo que el futuro mantenimiento tanto de adaptación como
de nuevos desarrollos sea más sencillo y fácil.
Se añade una sección en la que se explica de forma general cuáles son los
paquetes que seguramente serán ampliados y cuál es la mejor forma para
llevar a cabo este mantenimiento funcional.
Como OpenMarkov se usará en países con idiomas diferentes se mejora
el paquete de internacionalización y se realiza tanto la incorporación de una
utilidad para permitir al usuario elegir el lenguaje de visualización en tiempo
de ejecución como una revisión de los textos a presentar en español o en
inglés.
Para facilitar la comprensión completa del código fuente, se tiene especial
interés en completar y añadir comentarios aclaratorios que hacen uso del
formato de Javadoc y que posibilita la creación de una documentación
basada en entorno web.
Podemos concluir que la interfaz de OpenMarkov está construida en su
mayor parte permitiendo su uso por usuarios finales, aunque aún esté
pendiente de incorporar nuevas funcionalidades que se realicen en las fases
siguientes con la terminación de la incorporación de representación de tablas
para modelos canónicos y con la explicación visual de inferencia en los
nodos. Estas fases se desarrollarán a continuación en el Departamento de
Inteligencia Artificial de la UNED.
AgradecimientosM. Arias y F. J. Díez han recibido apoyo de los proyectos TIN2006-11152
(Ministerio de Educación y Ciencia), TIN2009-09158 (Ministerio de Ciencia y
Tecnología) y FONCICYT nº 95185 (VII Programa Marco de la Unión Europea
y CONACYT, México).
Alberto M. Ruiz, que trabajó durante 4 meses en la interfaz gráfica de
OpenMarkov, estuvo contratado como becario del Dpto. de Inteligencia Artificial
Informe Técnico CISIAD-10-03 Página 73 de 125
Informe Técnico CISIAD-10-03 Conclusiones
de la UNED con cargo a un proyecto de investigación financiado por la Agencia
Laín Entralgo, de la Comunidad de Madrid.
Informe Técnico CISIAD-10-03 Página 74 de 125
Informe Técnico CISIAD-10-03 Listado siglas, abreviaturas y acrónimos
Listado siglas, abreviaturas y acrónimos GUI - Graphical User Interface – Dicese de los elementos gráficos de un sistema informático que interactúan con el usuario de dicho sistemaHTML – HyperText Markup Language – Lenguaje de uso común en Ingeniería Informática que se usa en OpenMarkov para los archivos de ayuda. IDE - Un entorno de desarrollo integrado o IDE (acrónimo en inglés de integrated development environment), es un programa informático compuesto por un conjunto de herramientas de programación.[19]i18n – Termino que se usa para indicar que un programa está preparado para ser usado en varios países. Es decir, es un programa internacional. Proviene de la distancia de 18 letras en el alfabeto inglés entre la letra "i" y la letra "n" de Internacionalización.ISO/IEC – International Organization for Standards – Es el organismo encargado de promover el desarrollo de normas internacionales de fabricación, comercio y comunicación para todas las ramas industriales a excepción de la eléctrica y la electrónica. Su función principal es la de buscar la estandarización de normas de productos y seguridad para las empresas u organizaciones a nivel internacional. La ISO es una red de los institutos de normas nacionales de 160 países.JAR – Un archivo JAR (por sus siglas en inglés, Java ARchive) es un tipo de archivo que permite ejecutar aplicaciones escritas en lenguaje Java. Las siglas están deliberadamente escogidas para que coincidan con la palabra inglesa "jar" (tarro). Existen tres operaciones básicas con este tipo de archivos: ver contenido, comprimir y descomprimir.MDI – Interfaz de múltiples documentos (en inglés Multi-Document Interface ) permite la exhibición de una aplicación y que el usuario trabaje con más de un documento de dicha aplicación a la vez. Si la aplicación no está programada para usar MDI y el usuario desea trabajar con múltiples documentos del mismo tipo (en este caso particular, con diferentes redes) de modo paralelo, debe cargarse la aplicación nuevamente para cada documento subsiguiente.MVC – El “Modelo-Vista-Controlador” (model-view-controller) es un estilo de arquitectura de software que separa los datos de un componente (el Modelo), la interfaz propia del usuario (la Vista) y la lógica de control (el Controlador) en tres componentes distintos.[3][5][14][18]TOC – Table Of Contents - Tabla de contenidos de un documento. XML – Siglas en inglés de Extensible Markup Language (lenguaje de marcas extensible), es un metalenguaje extensible de etiquetas desarrollado por el World Wide Web Consortium (W3C). Es una simplificación y adaptación del metalenguaje SGML y permite definir la gramática de lenguajes específicos (de la misma manera que HTML es a su vez un lenguaje definido por SGML). Por lo tanto XML no es realmente un lenguaje en particular, sino una manera de definir lenguajes para diferentes necesidades. Algunos de estos lenguajes
Informe Técnico CISIAD-10-03 Página 75 de 125
Informe Técnico CISIAD-10-03 Listado siglas, abreviaturas y acrónimos
que usan XML para su definición son XHTML24, SVG25, MathML26.
24 http://es.wikipedia.org/wiki/XHTML como alternativa para la sustitución de HTML en25 http://es.wikipedia.org/wiki/SVG para la definición de gráficos vectoriales26 http://es.wikipedia.org/wiki/MathML para la definición de elementos matemáticos
Informe Técnico CISIAD-10-03 Página 76 de 125
Informe Técnico CISIAD-10-03 Anexos
AnexosAnexo 1 - Casos de uso de la interfaz gráfica de OpenMarkov
Anexo 2 - OpenMarkovDTDSpec.xml para definir carga de OpenMarkov
Anexo 3 - OpenMarkovMenu.xml como ejemplo del cargador de
OpenMarkov
Anexo 4 - Documento de ayuda en línea al usuario
Informe Técnico CISIAD-10-03 Página 77 de 125
Informe Técnico CISIAD-10-03 Anexos
Anexo 1 - Casos de uso de la interfaz gráfica de OpenMarkovEste anexo contiene todos los casos de uso de la interfaz gráfica, tanto
provenientes de la fase 1 como de esta fase 2. Debe ser usado como
documento base de requerimientos para la interfaz gráfica y para expansión
a futuras fases, siendo parte integrante y fundamental de la documentación
de desarrollador.
Informe Técnico CISIAD-10-03 Página 78 de 125
Informe Técnico CISIAD-10-03 Anexos
Caso de uso: Inicio de la aplicaciónComentario: Caso de uso que se ejecutará cuando el usuario inicie la aplicación.Actor: UsuarioCurso Normal Alternativas1.El usuario inicia el programa sin parámetros.
1.1.Si el usuario introduce parámetros al arranque del programa, se ignoran y pasamos a punto 2
2.La aplicación lee el fichero de configuración del programa.3.Del fichero de configuración, se leen los atributos necesarios para configurar las posiciones de la ventana principal y de mensaje, los colores de los tipos de nodos, los directorios donde se ubican las redes, lenguajes y los recursos necesarios para la aplicación.
3.1.En caso de error (si no se puede leer el fichero de configuración), los elementos toman un valor por defecto.
4.Se establece el lenguaje para los textos de la aplicación usando el lenguaje guardado en el fichero de configuración como dato inicial.
4.1.Si no se encuentra el fichero de configuración, se establecen opciones de configuración por defecto. El lenguaje de visualización de la aplicación por defecto es el que el usuario tenga establecido en su sistema/equipo.
5.Si existen textos para el lenguaje elegido, este lenguaje se establecerá como lenguaje definitivo para los textos de la aplicación.
5.1.Si el lenguaje establecido no se puede usar por no existir textos para él, se usará el inglés (lenguaje por defecto) como lenguaje definitivo para los textos de la aplicación.
6.Se crea la ventana principal, el menú principal, las barras de herramientas y el entorno multi-documento.7.Se desactivan todas las opciones del menú principal y de las barras de herramientas excepto las siguientes: crear una nueva red, abrir una red existente y mostrar la ventana de mensajes.8.Se crea el portapapeles de la aplicación.9.Se crea la ventana de mensajes y se sustituyen los flujos estándar System.out y System.err para que los datos destinados a ellos se muestren en esta pantalla.
Informe Técnico CISIAD-10-03 Página 79 de 125
Informe Técnico CISIAD-10-03 Anexos
Caso de uso 1: Inicio de la aplicación
Caso de uso: Finalización de la aplicaciónComentario: Este caso de uso lo iniciará el usuario cuando quiera cerrar la aplicación.Actor: UsuarioCurso Normal Alternativas1.El usuario indica a la aplicación que desea salir de ésta.
2.Si hay alguna ventana en el entorno multi-documento, la cierra ejecutando el caso de uso Cierre de una red.
2.1.Si no hay ninguna ventana abierta, pasa al punto 4.
3.Si la ventana ha sido cerrada, pasa al punto 2.
3.1.Si la ventana no ha sido cerrada, no se puede finalizar la aplicación.
4.Se salvan las propiedades de configuración de usuario (lenguaje, posiciones de la ventana principal, directorios, últimos ficheros abiertos) y se cierra la aplicación.
Caso de uso 2: Finalización de la aplicación
Caso de uso: Creación de una redComentario: Este caso de uso, como su nombre indica, será el que inicie el usuario para crear una nueva red vacía.Actor: UsuarioCurso normal Alternativas1.El usuario indica a la aplicación que quiere crear una nueva red.
2.La aplicación solicita los datos necesarios para crear una nueva red.
2.1.Si el usuario no quiere crear la red, puede cancelar la operación, terminando el caso de uso.
3.La aplicación comprueba si los datos proporcionados por el usuario son correctos.
3.1.Si algún dato no es correcto, la aplicación informa al usuario y vuelve al punto 2.
4.La aplicación crea una nueva ventana asociada a la red en el entorno multidocumento, cuyo título será el nombre de la red.
5.Se activan (si no lo estaban ya) todas las opciones del menú relacionado con el entorno multidocumento.
6.Se crea un nuevo ítem en el menú dependiente del entorno multidocumento que estará asociado con la nueva ventana.
Informe Técnico CISIAD-10-03 Página 80 de 125
Informe Técnico CISIAD-10-03 Anexos
Caso de uso: Creación de una redComentario: Este caso de uso, como su nombre indica, será el que inicie el usuario para crear una nueva red vacía.Actor: Usuario7.Se selecciona la nueva ventana y se activa el caso de uso Selección de una red.
Caso de uso 3: Creación de una red
Caso de uso: Cierre de una redComentario: Caso de uso ejecutado cuando el usuario quiera cerrar una ventana del entorno multidocumento.Actor: UsuarioCurso normal Alternativas1.El usuario indica a la aplicación que quiere cerrar la ventana actual del entorno multidocumento.
2.Si la red ha sido modificada pero no se ha guardado, la aplicación solicita al usuario si quiere guardar la red, no guardarla o cancelar la operación.
2.1.Si la red no se ha modificado o si se ha guardado sin modificarla después, pasa al punto 4.
3.Si el usuario no desea guardarla, pasa al punto 4.
3.1.Si el usuario desea guardar la red, pasa al caso de uso Almacenamiento de una red.
3.2.Si el usuario elige no cerrar la ventana, termina el caso de uso.
4.La ventana es cerrada.
5.Se elimina de la lista de ventanas del menú dependiente del entorno multidocumento el ítem asociado a la ventana que se ha cerrado.
6.Se selecciona la ventana anterior de la lista de ventanas y se pasa al caso de uso Selección de una red.
6.1.Si no hay más redes en el entorno multidocumento, se desactivan todas las opciones del menú dependiente del entorno multidocumento y todas las del menú principal y de las barras de herramientas excepto las opciones para crear una nueva red, abrir una red y mostrar la ventana de mensajes.
Caso de uso 4: Cierre de una red
Informe Técnico CISIAD-10-03 Página 81 de 125
Informe Técnico CISIAD-10-03 Anexos
Caso de uso: Carga de una redComentario: Se llevará a cabo cuando el usuario quiera cargar una red almacenada en un archivo.Actor: UsuarioCurso normal Alternativas1.El usuario indica a la aplicación que quiere abrir una red existente.
2.La aplicación solicita al usuario que escriba o elija el archivo que contiene la información de la red.
3.El usuario elige un archivo o escribe su nombre.
3.1.Si el usuario no quiere abrir la red, puede cancelar la operación, terminando el caso de uso.
4.La aplicación lee la información del archivo y comprueba que es correcta.
4.1.Si la información del archivo no es correcta, la aplicación informa al usuario y termina la operación.
5.La aplicación crea una nueva ventana asociada a la red en el entorno multidocumento cuyo título será el nombre de la red.
6.Se activan (si no lo estaban ya) todas las opciones del menú relacionado con el entorno multidocumento.
7.Se crea un nuevo ítem en el menú dependiente del entorno multidocumento que estará asociado con la nueva ventana.
8.Se selecciona la nueva ventana y se activa el caso de uso Selección de una red.
Caso de uso 5: Carga de una red
Caso de uso: Almacenamiento de una redComentario: Caso de uso ejecutado cuando el usuario desee guardar la información de una red en el mismo archivodesde el que se ha cargado.Actor: UsuarioCurso normal Alternativas
Informe Técnico CISIAD-10-03 Página 82 de 125
Informe Técnico CISIAD-10-03 Anexos
Caso de uso: Almacenamiento de una redComentario: Caso de uso ejecutado cuando el usuario desee guardar la información de una red en el mismo archivodesde el que se ha cargado.Actor: Usuario1.El usuario indica a la aplicación que quiere guardar la información de la red.
2.Si la red tiene un archivo asociado, la aplicación guarda la información de la red en ese archivo.
2.1.Si la red no tiene un archivo asociado, la aplicación iniciará el caso de uso Almacenamiento de una red como.
3.Se modifica el título de la ventana que contiene la red para eliminar el asterisco que antepone al título, si la red no se había guardado.
4.Se deshabilita la opción de guardar una red en el menú principal y en las barras de herramientas.
Caso de uso 6: Almacenamiento de una red
Caso de uso: Almacenamiento de una red como...Comentario: Caso de uso ejecutado cuando el usuario desee guardar la información de una red en un archivo diferentedesde el que se ha cargado.Actor: UsuarioCurso normal Alternativas1.El usuario indica a la aplicación que quiere guardar la información de la red en un archivo distinto a su archivo asociado.
2.La aplicación solicita al usuario que escriba o elija el archivo donde será almacenada la información de la red.
2.1.Si el usuario no quiere guardar la red, puede cancelar la operación, terminando el caso de uso.
3.La aplicación asocia el archivo especificado a la red.
3.1.Si el archivo ya existe, informará al usuario y, si éste está conforme, pasará al punto 4 y, si no, al punto 2.
4.La aplicación inicia el caso de uso Almacenamiento de una red.
Caso de uso 7: Almacenamiento de una red como...
Informe Técnico CISIAD-10-03 Página 83 de 125
Informe Técnico CISIAD-10-03 Anexos
Caso de uso: Selección de una redComentario: Este caso de uso se activará cuando se seleccione una ventana diferente de la que esté actualmenteseleccionada en el entorno multidocumento.Actor: UsuarioCurso normal Alternativas
Informe Técnico CISIAD-10-03 Página 84 de 125
Informe Técnico CISIAD-10-03 Anexos
Caso de uso: Selección de una redComentario: Este caso de uso se activará cuando se seleccione una ventana diferente de la que esté actualmenteseleccionada en el entorno multidocumento.Actor: Usuario1.El usuario selecciona una ventana diferente a la actual en el entorno multidocumento.
2.En la lista del menú dependiente del entorno multidocumento, se marca el ítem correspondiente a la ventana seleccionada y se desmarcan los demás.
3.Si la red asociada a la ventana no está guardada y ha sido modificada, la aplicación activa la opción para guardar una red en el menú principal y en las barras de herramientas.
3.1.Si la red asociada a la ventana sí está guardada, la aplicación desactiva la opción para guardar una red del menú principal y de las barras de herramientas.
4.Se actualizan las opciones del menú principal y de las barras de herramientas relacionadas con el factor de escala con el que se visualiza la red.
5.Se actualizan las opciones del menú principal y de las barras de herramientas para reflejar el estado del portapapeles.
6.Se actualizan las opciones del menú principal y de las barras de herramientas relacionadas con las acciones de hacer y deshacer.
7.Se actualizan las opciones del menú principal y de las barras de herramientas relacionadas con los elementos (nodos y enlaces) que se pueden añadir a la red seleccionada27.
8.Se actualizan las opciones del menú principal relacionadas con la forma en que se visualizan los nodos (por nombre o por título).
9.Se actualizan las opciones del menú principal y de las barras de herramientas dependientes del número y tipo de elementos (nodos y enlaces) seleccionados28.
Caso de uso 8: Selección de una red
27 En una red bayesiana se puede añadir sólo nodos probabilistas y enlaces. En un diagrama de influencia se puede añadir cualquier tipo de nodo y enlaces.
28 Algunas opciones como editar las propiedades de un nodo sólo estarán disponibles cuando esté seleccionado un solo nodo y ningún enlace. Lo mismo pasa con las opciones copiar y cortar, que sólo estarán activas cuando haya nodos seleccionados y ningún enlace.
Informe Técnico CISIAD-10-03 Página 85 de 125
Informe Técnico CISIAD-10-03 Anexos
Caso de uso: Selección de la red siguiente/anteriorComentario: Éste engloba a los dos casos de uso donde se selecciona la ventana siguiente y la anterior a la actual en el entorno multidocumento. La descripción de este caso es la siguiente.Actor: UsuarioCurso normal Alternativas1.El usuario indica a la aplicación que quiere seleccionar la siguiente/anterior ventana a la que está actualmente seleccionada.
2.La aplicación selecciona la ventana indicada y pasa a ejecutar el caso de uso Selección de una red.
2.1. Si sólo hay una ventana en el entorno multidocumento, la aplicación no hace nada.
Caso de uso 9: Selección de la red siguiente o anterior
Caso de uso: Modificación de la disposición de las ventanasComentario: Este caso de uso realmente no existe. Es un nombre genérico para un conjunto de casos de uso similares que se usan para cambiar la disposición de las ventanas dentro del entorno multidocumento. Los casos de uso que engloba son: organizando en cascada, organizando en mosaico, minimizando todas y restaurando todas. El primero organiza las ventanas en cascada restaurando las que están minimizadas. El segundo rellena la totalidad del espacio de la ventana principal con las ventanas internas, de modo que ninguna se solape con las demás. El tercero minimiza todas las ventanas que no lo están y el cuarto restaura todas las minimizadas. En todos los casos, la ventana actualmente seleccionada lo sigue estando después de la operación.La descripción de cualquiera de estos casos se puede ver en la tabla.Actor: UsuarioCurso normal Alternativas1.El usuario indica a la aplicación que quiere cambiar la disposición de las ventanas (cascada, mosaico, minimizar todas o restaurar todas).
2.La aplicación realiza la operación indicada sobre las ventanas dejando seleccionada la ventana que lo está actualmente.
Caso de uso 10: Modificación de la disposición de las ventanas
Caso de uso: Modificación de la presentación de los nodosComentario: En este caso el usuario elige el contenido que aparecerá dentro de los nodos de la red actualmente seleccionada, esto es, su nombre o su título.Actor: UsuarioCurso normal Alternativas
Informe Técnico CISIAD-10-03 Página 86 de 125
Informe Técnico CISIAD-10-03 Anexos
Caso de uso: Modificación de la presentación de los nodosComentario: En este caso el usuario elige el contenido que aparecerá dentro de los nodos de la red actualmente seleccionada, esto es, su nombre o su título.Actor: Usuario1.El usuario activa una de las opciones para ver los nodos por su nombre o por su título.
2.En la red actual se establece el tipo de presentación para los nodos que ya hay y para los nuevos.
3.La opción elegida por el usuario es marcada en el menú.
4.Si el tipo de presentación ha cambiado, se actualiza el contenido de los nodos.
Caso de uso 11: Modificación de la presentación de los nodos
Caso de uso: Modificación del factor de escala – Forma 1Comentario: El usuario cambia el factor de escala de la red actualmente seleccionada. Existen tres formas de iniciar el cambio del factor de escala por parte del usuario, aunque el final es el mismo. Veamos primero la descripción completa del caso de uso con la primera forma de hacerlo.Actor: UsuarioCurso normal Alternativas1.El usuario elige en el menú principal o en la lista desplegable situada en la barra de herramientas estándar el factor de escala entre un conjunto fijo.
1.1.El usuario puede escribir un valor entero entre 10 y 500 en la lista desplegable.
2.La aplicación comprueba el valor elegido por el usuario.
2.1.Si el usuario ha decidido escribir un valor y el valor es incorrecto, la aplicación le informa del hecho y finaliza el caso de uso.
3.Se cambia el factor de escala de la red actual por el elegido por el usuario.
4.Se realizan los cambios en el menú principal y en la barra de herramientas para que reflejen el nuevo factor de escala.
5.La red es presentada con el factor de escala elegido.
Caso de uso 12: Modificación del factor de escala – Forma 1
Informe Técnico CISIAD-10-03 Página 87 de 125
Informe Técnico CISIAD-10-03 Anexos
Caso de uso: Modificación del factor de escala a través de la caja de diálogo – Forma 2Comentario: La segunda forma que tiene el usuario de cambiar el factor de escala es a través de dos botones con forma de lupa situados en la barra de herramientas estándar o en el menú principal. Estos botones aumentan o disminuyen el factor de escala en un 20% respectivamente. La descripción de esta otra forma se puede ver en la tabla.Actor: UsuarioCurso normal Alternativas1.El usuario elige en el menú principal la opción para cambiar el factor de escala usando una caja de diálogo.
2.La aplicación muestra una caja de diálogo con un conjunto fijo de factores de escala que puede elegir el usuario y una caja de texto donde podrá escribir un valor entero entre 10 y 500.
3.El usuario elige el valor deseado o escribe un nuevo valor.
3.1.Si el usuario no quiere cambiar el factor de escala, cancela la operación, terminando el caso de uso.
4.La aplicación comprueba el valor elegido por el usuario.
4.1.Si el usuario ha decidido escribir un valor y el valor es incorrecto, la aplicación le informa del hecho y vuelve al paso 3.
5.Continúa a partir del paso 3 de la tabla anterior.
Caso de uso 13: Modificación del factor de escala a través de la caja de diálogo
Informe Técnico CISIAD-10-03 Página 88 de 125
Informe Técnico CISIAD-10-03 Anexos
Caso de uso: Elección del tipo de ediciónComentario: En este caso de uso, el usuario podrá elegir una opción que indicará lo que pasará en el panel de red cuando se haga un clic sobre él. Cada una de las opciones será identificada por la forma del cursor del ratón. Las opciones disponibles son:· Selección de objetos. El usuario podrá seleccionar nodos y/o enlaces (cursor normal).· Creación de nodos probabilísticos. El usuario podrá crear con un clic un nuevo nodo probabilístico (cursor con forma de círculo).· Creación de nodos de decisión. Igual que el anterior para los nodos de decisión (cursor con forma cuadrada).· Creación de nodos de utilidad. Igual que el anterior para los nodos de utilidad (cursor con forma de rombo).· Creación de enlaces. El usuario podrá crear un nuevo enlace entre dos nodos (cursor con forma de enlace).La descripción de este caso de uso se puede ver en la tabla.Actor: UsuarioCurso normal Alternativas
Informe Técnico CISIAD-10-03 Página 89 de 125
Informe Técnico CISIAD-10-03 Anexos
Caso de uso: Elección del tipo de ediciónComentario: En este caso de uso, el usuario podrá elegir una opción que indicará lo que pasará en el panel de red cuando se haga un clic sobre él. Cada una de las opciones será identificada por la forma del cursor del ratón. Las opciones disponibles son:· Selección de objetos. El usuario podrá seleccionar nodos y/o enlaces (cursor normal).· Creación de nodos probabilísticos. El usuario podrá crear con un clic un nuevo nodo probabilístico (cursor con forma de círculo).· Creación de nodos de decisión. Igual que el anterior para los nodos de decisión (cursor con forma cuadrada).· Creación de nodos de utilidad. Igual que el anterior para los nodos de utilidad (cursor con forma de rombo).· Creación de enlaces. El usuario podrá crear un nuevo enlace entre dos nodos (cursor con forma de enlace).La descripción de este caso de uso se puede ver en la tabla.Actor: Usuario1.El usuario elige en el menú principal o en la barra de herramientas de edición el tipo de edición para la ventana actual.
2.Se cambia la imagen del cursor del ratón para que represente el tipo de edición elegido.
3.Se deseleccionan todos los objetos (nodos y enlaces) de la red de la ventana actual.
4.Se actualiza el menú principal y los menús emergentes, deshabilitando las opciones que están activas cuando hay algún objeto seleccionado.
5.El nuevo tipo de edición queda establecido para la red actual.
6.El tipo de edición es marcado o seleccionado en el menú principal y en la barra de herramientas de edición.
Caso de uso 14: Elección del tipo de edición
Informe Técnico CISIAD-10-03 Página 90 de 125
Informe Técnico CISIAD-10-03 Anexos
Caso de uso: Actualización de los menús al cambiar la selección de los elementosComentario: Este caso de uso es ejecutado por un actor abstracto llamado Actualizador de menús. Se ha creado este actor abstracto y este caso de uso porque las opciones cortar, copiar, eliminar y propiedades del nodo siempre están activadas o desactivadas en función del número y tipo de elementos que haya seleccionados. Por tanto, todos los casos de uso relacionados con el cambio en la selección de elementos incluyen a éste, como se verá en las siguientes secciones. La descripción del caso se observa en la tabla. Las opciones especificadas se habilitan o deshabilitan en los menús emergentes de la red, el menú principal y en la barra de herramientas de edición.Actor: UsuarioCurso normal Alternativas1.El actualizador de menús inicia el proceso de actualización.
2.Si en la red hay algún elemento seleccionado, se habilita la opción eliminar.
2.1.Si no hay ningún elemento seleccionado, se deshabilita la opción eliminar.
3.Si hay nodos seleccionados pero ningún enlace, se habilitan las opciones de copiar y cortar.
3.1.Si además de los nodos hay algún enlace seleccionado o si no hay nodos seleccionados, se deshabilitan las opciones copiar y cortar29.
4.Si sólo hay un nodo seleccionado y ningún enlace, se habilita la opción propiedades del nodo.
4.1.Si no hay ningún nodo seleccionado, si hay más de uno seleccionado o si hay algún enlace seleccionado, se deshabilita la opción propiedades del nodo.
5.Si sólo hay un enlace seleccionado y ningún nodo, se habilita la opción propiedades del enlace.
5.1.Si no hay ningún enlace seleccionado, si hay más de uno seleccionado o si hay algún nodo seleccionado, se deshabilita la opción propiedades del enlace.
Caso de uso 15: Actualización de los menús al cambiar la selección de los elementos
29 Hay que tener en cuenta, como se comentará más adelante, que cuando un nodo se copia en el portapapeles, también serán copiados todos sus enlaces, independientemente de que se copien los nodos con los que está enlazado. Al pegar el nodo, sus enlaces serán creados siempre que se pegue el nodo del otro extremo o éste ya esté creado en la red. Al pegar el nodo, al menos uno de los extremos de cada enlace existirá. Por este motivo, no se permite copiar un enlace aislado, ya que al pegarlo puede que no exista ninguno de sus extremos
Informe Técnico CISIAD-10-03 Página 91 de 125
Informe Técnico CISIAD-10-03 Anexos
Caso de uso: Deselección de todos los elementosComentario: Este caso de uso es llevado a cabo por la aplicación cuando el usuario pulsa sobre el fondo del panel de red. De este modo, todos los nodos y enlaces que hubiera seleccionados dejarán de estarlo. Los pasos que se suceden son los siguientes.Actor: UsuarioCurso normal Alternativas1.Cuando el tipo de edición es la selección de objetos, el usuario hace un clic con el botón izquierdo del ratón, sin pulsar ninguna tecla, sobre el fondo vacío de la red que se está editando.
2.La aplicación deselecciona todos los elementos que antes estaban seleccionados.
3.Se ejecuta el caso de uso Actualización de los menús al cambiar la selección de los elementos.
Caso de uso 16: Deselección de todos los elementos
Caso de uso: Selección de todos los elementosComentario: Este caso de uso lo inicia el usuario cuando desea seleccionar todos los elementos (nodos y enlaces) de la red. Los pasos son los siguientes.Actor: UsuarioCurso normal Alternativas1.Cuando el tipo de edición es la selección de objetos, el usuario indica a la aplicación que desea seleccionar todos los elementos de la red actual.
2.Se seleccionan todos los nodos y enlaces.
3.Se ejecuta el caso de uso Actualización de los menús al cambiar la selección de los elementos.
Caso de uso 17: Selección de todos los elementos
Informe Técnico CISIAD-10-03 Página 92 de 125
Informe Técnico CISIAD-10-03 Anexos
Caso de uso: Selección de un solo nodo (o enlace)30
Comentario: Este caso de uso lo inicia el usuario cuando quiere seleccionar un solo nodo, deseleccionando todos los demás elementos. La descripción se puede observar en la tabla.Actor: UsuarioCurso normal Alternativas1.Cuando el tipo de edición es la selección de objetos, el usuario hace un clic con el botón izquierdo del ratón, sin pulsar ninguna tecla, sobre un nodo de la red que no esté seleccionado.
2.La aplicación deselecciona todos los elementos seleccionados ejecutando el caso de uso Deselección de todos los elementos.
3.Se selecciona el nodo sobre el que se ha pulsado.
4.Se ejecuta el caso de uso Actualización de los menús al cambiar la selección de los elementos.
Caso de uso 18: Selección de un solo nodo o enlace
Caso de uso: Selección de un solo nodo más (o de un enlace más)31
Comentario: Este caso de uso es iniciado por el usuario cuando se pincha sobre un nodo no seleccionado con la tecla MAYÚSCULAS pulsada. La descripción se puede ver en la tabla siguiente.Actor: UsuarioCurso normal Alternativas1.Cuando el tipo de edición es la selección de objetos, el usuario hace un clic con el botón izquierdo del ratón, con la tecla MAYÚSCULAS pulsada, sobre un nodo no seleccionado de la red.
2.La aplicación selecciona el nodo pinchado.
3.Se ejecuta el caso de uso Actualización de los menús al cambiar la selección de los elementos.
Caso de uso 19: Selección de un nodo más o de un enlace más
30 Para selección de un enlace es lo mismo cambiando nodo por enlace en el caso de uso31 El caso para enlace es igual cambiando la palabra nodo por enlace
Informe Técnico CISIAD-10-03 Página 93 de 125
Informe Técnico CISIAD-10-03 Anexos
Caso de uso: Deselección de un nodo (o enlace)32
Comentario: Este caso de uso es iniciado por el usuario cuando se pincha sobre un nodo que está seleccionado con la tecla MAYÚSCULAS pulsada. La descripción se puede ver en la tabla siguiente.Actor: UsuarioCurso normal Alternativas1.Cuando el tipo de edición es la selección de objetos, el usuario hace un clic con el botón izquierdo del ratón, con la tecla MAYÚSCULAS pulsada, sobre un nodo no seleccionado de la red.
2.La aplicación deselecciona el nodo pinchado.
3.Se ejecuta el caso de uso Actualización de los menús al cambiar la selección de los elementos.
Caso de uso 20: Deselección de un solo nodo o enlace
32 El caso para enlace es igual cambiando la palabra nodo por enlace
Informe Técnico CISIAD-10-03 Página 94 de 125
Informe Técnico CISIAD-10-03 Anexos
Caso de uso: Selección de varios nodos con el rectángulo de selecciónComentario: Si el usuario hace clic sobre el fondo de una red y arrastra el cursor sin soltar el botón del ratón, aparecerá un rectángulo de selección, que se podrá agrandar o empequeñecer según los movimientos del cursor del ratón. Los nodos (no enlaces) que estén dentro del rectángulo quedarán automáticamente seleccionados y los que estén fuera, deseleccionados. Los pasos se detallan en la siguiente tabla.Actor: UsuarioCurso normal Alternativas1.Cuando el tipo de edición es la selección de objetos, el usuario pulsa (sin soltar) con el botón izquierdo del ratón, sin pulsar ninguna tecla, sobre el fondo vacío de la red que se está editando.
2.Se ejecuta el caso de uso Deselección de todos los elementos para que no quede nada seleccionado.
3.El cursor del ratón toma la forma estándar de selección con precisión.
4.En la posición donde se ha pulsado con el cursor del ratón, aparecerá un rectángulo de tamaño 0 dibujado con trazo discontinuo.
5.Si el usuario mueve el cursor del ratón, el rectángulo cambiará de tamaño. Este rectángulo tendrá un vértice fijo en la posición en la que pulsó el usuario y el vértice opuesto en la posición del cursor del ratón.
5.1.Si el usuario no mueve el ratón, el caso de uso permanecerá en el punto 5.
5.2.Si el usuario suelta el botón del ratón, saltará al punto 8.
6.Si ningún nodo deja de estar dentro del rectángulo o ninguno deja de estar fuera, vuelve al punto 5.
6.1.Si el punto central de un nodo que no estaba seleccionado queda dentro de este rectángulo, se selecciona ejecutando el caso de uso Selección de un nodo más.
6.2.Si el punto central de un nodo que estaba seleccionado queda fuera de este rectángulo, se deselecciona ejecutando el caso de uso Deselección de un nodo.
7.Vuelve al punto 5.
8.El cursor del ratón retoma su aspecto normal.
9.El rectángulo de selección desaparece y los nodos mantienen su estado de selección.
Caso de uso 21: Selección de varios nodos con el rectángulo de selección
Informe Técnico CISIAD-10-03 Página 95 de 125
Informe Técnico CISIAD-10-03 Anexos
Caso de uso: Actualización de los menús al modificar una red
Comentario: Este caso de uso es ejecutado por el actor abstracto Actualizador de menús. Se ha creado porque las opciones hacer y deshacer estarán activadas o desactivadas en función de si se puede o no deshacer y si se puede o no rehacer. La opción para guardar la red se activará siempre que ésta sea modificada. Por tanto, todos los casos de uso relacionados con la modificación de una red, incluyen a éste, como se verá en las siguientes secciones. La descripción del caso se observa en la tabla. Las opciones especificadas se habilitan o deshabilitan en el menú principal y en la barra de herramientas de edición.
Actor: Usuario
Curso normal Alternativas
1.El actualizador de menús inicia el proceso de actualización.
2.La opción deshacer estará activa si hay alguna modificación en la red actual que aún no se haya deshecho.
2.1.La opción deshacer estará desactivada si no se han hecho modificaciones en la red.
2.2.La opción deshacer estará desactivada si se han deshecho todas las modificaciones de la red.
3.La opción rehacer estará activa si queda por rehacer alguna de las modificaciones deshechas.
3.1.La opción rehacer estará desactivada si no se han hecho modificaciones en la red.
3.2.La opción rehacer estará desactivada si no se ha deshecho ninguna modificación o todas las modificaciones deshechas ya se han rehecho.
4.Se activa la opción para guardar la red.
Caso de uso 22: Actualización de los menús al modificar una red
Informe Técnico CISIAD-10-03 Página 96 de 125
Informe Técnico CISIAD-10-03 Anexos
Caso de uso: Creación de un nodoComentario: Aunque existen tres tipos de nodos en la aplicación, el proceso de creación es el mismo para los tres. La diferencia radica en que se creará un tipo determinado de nodo según el tipo de edición. 33
Actor: UsuarioCurso Normal Alternativas1.Cuando el tipo de edición es la creación de nodos (cualquier tipo), el usuario pulsa con el botón izquierdo del ratón, sin pulsar ninguna otra tecla, sobre el fondo vacío de al red que se está editando.
2.La aplicación crea un nodo visual, con todos los campos por defecto, cuyo tipo es función del tipo de edición.
3.El nodo tiene en sus propiedades una tabla de probabilidad vacía, al no tener aún estados en el momento de la creación, y no tener asociado ningún nodo padre
4.Se crea un nuevo punto para deshacer y rehacer la creación del nodo
5.Se ejecuta el caso de uso Actualización del menús al modificar una red
6.La red se marca como modificada (si no lo estaba ya) anteponiendo un asterisco al titulo de la ventana en la que se edita.
7.Si el nodo se ha creado fuera de los límites del panel de red, éste se agranda para albergar completamente el nuevo nodo
Caso de uso 23: Creación de un nodo
33 Al crear un nuevo nodo, la propia aplicación le asigna un nombre automáticamente que depende el tipo de nodo que se vaya a crear y que no podrá coincidir con el nombre de ningún otro nodo, independientemente de cuál sea su tipo. Según el tipo de nodo que se quiera crear, los nombres se asignarán de la siguiente forma:
Cuando se crea un nodo probabilístico, se le intenta asignar el nombre “A”. Si existe algún nodo con ese nombre, se intenta con “B”. Si también existe un nodo, se intenta con “C”. Y así sucesivamente hasta que se llegue al final del abecedario. Si aún no se le ha asignado un nombre, se intenta con “A1”, “B1”, etc. Si se llega al final del abecedario, se intenta con “A2”, “B2”, etc. Se sigue así hasta que se encuentre un nombre que no esté asignado a ningún otro nodo.
De las posibles letras que se pueden asignar a los nodos probabilísticos quedan excluidas la “D” y la “U”.Cuando se crea un nodo de decisión, se le intenta asignar el nombre “D”, “D1”, “D2”, etc., hasta que se
encuentre un nombre que no esté asignado a otro nodo.Cuando se crea un nodo de utilidad, se le intenta asignar el nombre “U”, “U1”, “U2”, etc., hasta que se
encuentre un nombre que no esté asignado a otro nodo.
Informe Técnico CISIAD-10-03 Página 97 de 125
Informe Técnico CISIAD-10-03 Anexos
Caso de uso: Deshacer la creación de un nodo (o rehacer)34
Comentario: Al deshacer la creación de un nodo, la red se queda en el mismo estado en el que estaba justo antes de la modificación. La opción para activar la acción de deshacer la creación del nodo es la misma que para el resto de acciones de deshacer. Dependiendo del orden en el que se hayan hecho las modificaciones, deshará una u otra.Actor: UsuarioCurso normal Alternativas1.Sin importar cuál es el tipo de edición y cuando la última acción no deshecha sea la creación de un nodo, el usuario pulsa sobre la opción para deshacer.
2.Se deseleccionan todos los elementos de la red actual.
3.Se ejecuta el caso de uso Actualización de los menús al cambiar la selección de los elementos.
4.Se elimina el último nodo creado en la red.
5.Se ejecuta el caso de uso Actualización de los menús al modificar una red.
6.La red se marca como modificada (si no lo estaba ya), anteponiendo un asterisco al título de la ventana en la que se edita.
Caso de uso 24: Deshacer o rehacer la creación de un nodo
34 Como se verá en este caso de uso y en los siguientes, los pasos a seguir en una acción de deshacer o rehacer son similares a los que se siguen en la tabla del caso de uso Deshacer la creación de un nodo. La excepción está únicamente en el punto 4 de la tabla. El resto es exactamente igual. En este caso, en el punto 4 debería figurar: “Se crea de nuevo el mismo nodo que se acaba de eliminar”. Se supone que este nodo se ha eliminado ejecutando el caso de uso para deshacer su creación.
Informe Técnico CISIAD-10-03 Página 98 de 125
Informe Técnico CISIAD-10-03 Anexos
Caso de uso: Creación de un enlace35
Actor: UsuarioCurso normal Alternativas1.Cuando el tipo de edición es crear enlaces, el usuario pulsa sobre un nodo de la red con el botón izquierdo del ratón sin pulsar ninguna tecla
2.Aparece un nuevo enlace cuyo inicio está en el punto central del nodo seleccionado y cuyo fin, en forma de punta de flecha, está en la posición del cursor.
3.Si el usuario mueve el ratón, el extremo final del enlace cambiará a la nueva posición del cursor del ratón y el caso de uso volverá a este mismo punto
3.1.Si el usuario no mueve el ratón, el caso de uso permanecerá en el punto 3.
3.2.Si el usuario suelta el botón del ratón, el caso de uso saltará al punto 4.
4.Si el usuario suelta el botón cuando el cursor del ratón estaba sobre un nodo, pasa al punto 5
4.1.Si el usuario suelta el botón cuando el cursor estaba sobre el mismo nodo sobre el que se ha pinchado o sobre el fondo vacío del panel de red, termina el caso de uso
5.Si el enlace no estaba creado, no había otro enlace en sentido contrario, no se crean ciclos y el nuevo enlace está permitido, lo crea, pintando un nuevo enlace entre los dos nodos en el sentido que ha elegido el usuario
5.1.Si el enlace ya estaba creado, había otro enlace en sentido contrario, se crean ciclos y el nuevo enlace no está permitido, no lo crea y termina el caso de uso.
6.Se modifican las tablas de potencial en el nodo destino con los valores correspondientes al nuevo padre asignado y sus estados correspondientes
6.1.Si en la creación de las tablas se detecta un error, el nuevo enlace no se crea y termina el caso de uso.
7.Se crea un nuevo punto para deshacer y rehacer la creación del enlace
8.Se ejecuta el caso de uso de Actualización de los menús al modificar una red.
9.La red se marca como modificada (si no lo estaba ya) anteponiendo un asterisco al titulo de la ventana en la
35 Un enlace sólo podrá ser creado si, además de otras restricciones, está permitido. Un enlace estará permitido o no dependiendo del tipo de nodos a los que una. Los enlaces permitidos son los siguientes:
•Entre un nodo probabilístico y otro de cualquier tipo.•Entre un nodo de decisión y otro de cualquier tipo.•Entre un nodo de utilidad y otro de utilidad.•Los enlaces entre un nodo de utilidad y otro nodo que no sea de utilidad no están permitidos.
Informe Técnico CISIAD-10-03 Página 99 de 125
Informe Técnico CISIAD-10-03 Anexos
Caso de uso: Creación de un enlaceActor: UsuarioCurso normal Alternativasque se edita.
Caso de uso 25: Creación de un enlace
Caso de uso: Deshacer la creación de un enlaceComentario: Al igual que se ha comentado en el caso de uso para deshacer la creación de un nodo, cualquier acción de deshacer o rehacer se ejecuta como se detalla en la tabla del caso de uso Deshacer la creación de un nodo, diferenciándose en el punto indicado a continuaciónActor: UsuarioCurso Normal Alternativas4.Se elimina el último enlace creado en la red y los potenciales asociados en los nodos hijo.
Caso de uso 26: Deshacer la creación de un enlace
Caso de uso: Rehacer la creación de un enlaceAl igual que se ha comentado en el caso de uso para rehacer la creación de un nodo, cualquier acción para deshacer o rehacer se ejecuta como se detalla en la tabla del caso de uso Rehacer la creación de un nodo, diferenciándose en el punto indicado a continuaciónActor: UsuarioCurso Normal Alternativas4.Se crea de nuevo el mismo enlace que se acaba de eliminar y los potenciales asociados en los nodos hijo.
Caso de uso 27: Rehacer la creación de un enlace
Informe Técnico CISIAD-10-03 Página 100 de 125
Informe Técnico CISIAD-10-03 Anexos
Caso de uso: Desplazamiento de varios nodosComentario: Después de haber seleccionado uno o varios nodos, el usuario puede moverlos todos a la vez tal como se indica en la siguiente tabla.Actor: UsuarioCurso normal Alternativas1.El usuario selecciona uno o varios nodos usando alguno de los casos de uso comentados con anterioridad. No importa si hay algún enlace seleccionado.
2.Cuando el tipo de edición es la selección de objetos, el usuario pincha (sin soltar) con el botón izquierdo del ratón, sin pulsar ninguna tecla, sobre un nodo de la red que ya esté seleccionado.
3.El cursor del ratón toma la forma de una cruz con puntas de flecha.
4.Si el usuario mueve el ratón, se moverán todos los nodos seleccionados, adaptando los enlaces que parten o terminan en ellos. El caso de uso se mantiene en este punto.
4.1.Si el usuario no mueve el ratón, el caso de uso permanecerá saltará al punto 4.
4.2.Si el usuario suelta el botón del ratón, el caso de uso saltará al punto 5.
5.El cursor del ratón retoma su aspecto normal.
6.Se crea un nuevo punto para deshacer y rehacer el movimiento de los nodos.
7.Si es necesario, se cambia el tamaño del panel de red para que albergue a la totalidad de la red.
8.Se ejecuta el caso de uso Actualización de los menús al modificar una red.
9.La red se marca como modificada (si no lo estaba ya), anteponiendo un asterisco al título de la ventana en la que se edita.
Caso de uso 28: Desplazamiento de varios nodos
Informe Técnico CISIAD-10-03 Página 101 de 125
Informe Técnico CISIAD-10-03 Anexos
Caso de uso: Deshacer el desplazamiento de varios nodos (o rehacer)36
Comentario: Actor: UsuarioCurso normal Alternativas1.Sin importar cuál es el tipo de edición y cuando la última acción no deshecha sea la creación de un nodo, el usuario pulsa sobre la opción para deshacer.
2.Se deseleccionan todos los elementos de la red actual.
3.Se ejecuta el caso de uso Actualización de los menús al cambiar la selección de los elementos.
4.Los nodos se colocan en su posición justo antes de moverlos”
5.Se ejecuta el caso de uso Actualización de los menús al modificar una red.
6.La red se marca como modificada (si no lo estaba ya), anteponiendo un asterisco al título de la ventana en la que se edita.
Caso de uso 29: Deshacer o rehacer el desplazamiento de varios nodos
36 En el punto 4 debería figurar: “Los nodos se colocan en su posición justo después de moverlos
Informe Técnico CISIAD-10-03 Página 102 de 125
Informe Técnico CISIAD-10-03 Anexos
Caso de uso: Eliminación de varios elementosComentario: Después de haber seleccionado uno o varios elementos (nodos y/o enlaces), el usuario puede eliminarlos todos.Actor: UsuarioCurso normal Alternativas1.El usuario selecciona uno o varios elementos usando alguno de los casos de uso comentados con anterioridad.
2.Cuando el tipo de edición es la selección de objetos, el usuario pulsa la tecla SUPRIMIR o usa la opción para eliminar que hay el menú principal, en la barra de herramientas estándar o en los menús emergentes.
3.Se eliminan todos los enlaces seleccionados.
4.Se eliminan todos los enlaces que salen o entran a alguno de los nodos seleccionados.
5.Se eliminan los nodos seleccionados.
6.Se ejecuta el caso de uso Actualización de los menús al cambiar la selección de los elementos.
7.Se crea un nuevo punto para deshacer y rehacer la eliminación de los elementos.
8.Se ejecuta el caso de uso Actualización de los menús al modificar una red.
9.La red se marca como modificada (si no lo estaba ya), anteponiendo un asterisco al título de la ventana en la que se edita.
Caso de uso 30: Eliminación de varios elementos
Informe Técnico CISIAD-10-03 Página 103 de 125
Informe Técnico CISIAD-10-03 Anexos
Caso de uso: Deshacer la eliminación de varios elementosComentario: En este caso, en el punto 4 de la tabla del caso de uso Deshacer la creación de un nodo debería figurar: “Se crean los nodos eliminados, los enlaces que partían o llegaban a éstos y después los enlaces independientes”.
Caso de uso 31: Deshacer la eliminación de varios elementos
Caso de uso: Rehacer la eliminación de varios elementosComentario: En este caso, en el punto 4 de la tabla del caso de uso Deshacer la creación de un nodo debería figurar: “Se eliminan los enlaces independientes, los enlaces que partían o llegaban a los nodos y después los propios nodos que se habían creado después de eliminarlos”.
Caso de uso 32: Rehacer la eliminación de varios elementos
Caso de uso: Modificación de las propiedades de una redComentario: En cualquier momento de la ejecución, se pueden cambiar las propiedades de una red realizando los siguientes pasos.Actor: UsuarioCurso normal Alternativas
Informe Técnico CISIAD-10-03 Página 104 de 125
Informe Técnico CISIAD-10-03 Anexos
Caso de uso: Modificación de las propiedades de una redComentario: En cualquier momento de la ejecución, se pueden cambiar las propiedades de una red realizando los siguientes pasos.Actor: Usuario1.Cuando el tipo de edición es la selección de objetos, el usuario hace doble clic sobre el fondo vacío del panel de red o usa la opción para editar las propiedades de un nodo que hay el menú principal o en el menú emergente.
2.Aparece una caja de diálogo donde se pueden modificar las propiedades de la red excepto su tipo y el tipo de variables de los nodos.
3.El usuario cambia las propiedades que desee escribiendo o seleccionando nuevos valores.
3.1.El usuario puede cancelar la operación y terminará el caso de uso.
4.El usuario acepta los cambios de las propiedades.
4.1.El usuario puede cancelar la operación y terminará el caso de uso.
5.La aplicación comprueba si los datos proporcionados por el usuario son correctos.
5.1.Si algún dato no es correcto, la aplicación informa al usuario y vuelve al punto 3.
6.Si se ha cambiado el nombre de la red, se verá reflejado en el título de la ventana donde se está editando y en la lista de ventanas del menú dependiente del entorno multidocumento en el menú principal.
7.Se crea un nuevo punto para deshacer y rehacer la modificación de las propiedades de la red.
8.Se ejecuta el caso de uso Actualización de los menús al modificar una red.
9.La red se marca como modificada (si no lo estaba ya), anteponiendo un asterisco al título de la ventana en la que se edita.
Caso de uso 33: Modificación de las propiedades de una red
Informe Técnico CISIAD-10-03 Página 105 de 125
Informe Técnico CISIAD-10-03 Anexos
Caso de uso: Deshacer la modificación de las propiedades de una redComentario: En este caso, en el punto 4 de la tabla del caso de uso Deshacer la creación de un nodo se divide en varios con el siguiente texto cada uno: “El valor de las propiedades se establece a su valor antes de la modificación”.“Si se había cambiado el nombre de la red, también se modificará el título de la ventana que la alberga y el texto del menú dependiente del entorno multidocumento que la representa”.
Caso de uso 34: Deshacer la modificación de las propiedades de una red
Caso de uso: Rehacer la modificación de las propiedades de una redComentario: En este caso, en el punto 4 de la tabla del caso de uso Deshacer la creación de un nodo se divide en varios con el siguiente texto cada uno:“El valor de las propiedades se establece a su valor después de la modificación”.“Si se había cambiado el nombre de la red, también se modificará el título de la ventana que la alberga y el texto del menú dependiente del entorno multidocumento que la representa”.
Caso de uso 35: Rehacer la modificación de las propiedades de una red
Caso de uso: Modificación de las propiedades de un nodoComentario: Para editar las propiedades de un nodo, es necesario que sólo haya un nodo seleccionado y nada más, siguiendo los pasos que se detallan en la tabla.Actor: UsuarioCurso normal Alternativas1.El usuario selecciona un solo nodo y ningún enlace usando alguno de los casos de uso comentados con anterioridad.
2.Cuando el tipo de edición es la selección de objetos, el usuario hace doble clic sobre un nodo o usa la opción para editar las propiedades de un nodo que hay el menú principal o en el menú emergente.
3.Aparece una caja de diálogo donde se pueden modificar las propiedades del nodo excepto su nombre, su tipo y el tipo de su variable.
4.El usuario cambia las propiedades que desee escribiendo o seleccionando nuevos valores.
4.1.El usuario puede cancelar la operación y terminará el caso de uso
Informe Técnico CISIAD-10-03 Página 106 de 125
Informe Técnico CISIAD-10-03 Anexos
Caso de uso: Modificación de las propiedades de un nodoComentario: Para editar las propiedades de un nodo, es necesario que sólo haya un nodo seleccionado y nada más, siguiendo los pasos que se detallan en la tabla.Actor: Usuario5.El usuario puede añadir o eliminar nodos de la tabla de los nodos padre del nodo que se está editando. En esta tabla no podrán aparecer ni el nodo que se está editando ni sus hijos directos.
5.1.El usuario puede cancelar la operación y terminará el caso de uso.
6.El usuario acepta los cambios de las propiedades.
6.1.El usuario puede cancelar la operación y terminará el caso de uso.
7.La aplicación comprueba si los datos proporcionados por el usuario son correctos.
7.1.Si algún dato no es correcto, la aplicación informa al usuario y vuelve al punto 4.
8.Si se ha cambiado el título del nodo, se verá reflejado en el nodo de la red según el tipo de presentación de los nodos (por nombre o por título).
9.Se eliminan los enlaces entre el nodo en cuestión y los nodos que se han eliminado de la lista de padres del nodo.
10.Se añaden enlaces entre los nodos que se han añadido a la lista de padres y el nodo en cuestión.
11.Se crea un nuevo punto para deshacer y rehacer la modificación de las propiedades del nodo.
12.Se ejecuta el caso de uso Actualización de los menús al modificar una red.
13.La red se marca como modificada (si no lo estaba ya), anteponiendo un asterisco al título de la ventana en la que se edita.
14.Si es necesario, se cambia el tamaño del panel de red para que albergue a la totalidad de la red.
Caso de uso 36: Modificación de las propiedades de un nodo
Informe Técnico CISIAD-10-03 Página 107 de 125
Informe Técnico CISIAD-10-03 Anexos
Caso de uso: Deshacer la modificación de las propiedades de un nodoComentario: En este caso, en el punto 4 de la tabla del caso de uso Deshacer la creación de un nodo se divide en varios con el siguiente texto cada uno:“El valor de las propiedades se establece a su valor antes de la modificación”.“Si se había modificado el texto del nodo, se cambia a su valor original”.“Se eliminan los enlaces que no existían antes de la modificación y que se habían añadido a la lista de nodos padre”.“Se crean los enlaces que sí existían antes de la modificación y que se habían eliminado de la lista de nodos padre”.
Caso de uso 37: Deshacer la modificación de las propiedades de un nodo
Caso de uso: Rehacer la modificación de las propiedades de un nodoComentario: En este caso, en el punto 4 de la tabla del caso de uso Deshacer la creación de un nodo se divide en varios con el siguiente texto cada uno:“El valor de las propiedades se establece a su valor después de la modificación”.“Si se había modificado el texto del nodo, se cambia a su nuevo valor”.“Se crean los enlaces que no existían antes de la modificación y que se habían añadido a la lista de nodos padre”.“Se eliminan los enlaces que sí existían antes de la modificación y que se habían eliminado de la lista de nodos padre”.
Caso de uso 38: Rehacer la modificación de las propiedades de un nodo
Caso de uso: Copia de nodos al portapapelesComentario: Este caso de uso permite al usuario copiar algunos nodos al portapapeles de la aplicación para poder pegarlos después. La opción de copiar sólo estará disponible si hay algún nodo seleccionado y ningún enlace. Se copiará al portapapeles la información de esos nodos y la de los enlaces que salen y entran a ellos.Actor: UsuarioCurso normal Alternativas1.Cuando el tipo de edición es la selección de objetos y sólo hay nodos seleccionados, el usuario pulsa la
Informe Técnico CISIAD-10-03 Página 108 de 125
Informe Técnico CISIAD-10-03 Anexos
Caso de uso: Copia de nodos al portapapelesComentario: Este caso de uso permite al usuario copiar algunos nodos al portapapeles de la aplicación para poder pegarlos después. La opción de copiar sólo estará disponible si hay algún nodo seleccionado y ningún enlace. Se copiará al portapapeles la información de esos nodos y la de los enlaces que salen y entran a ellos.Actor: Usuariocombinación de teclas CONTROL+C o elige la opción para copiar que está disponible tanto en el menú principal como en la barra de herramientas estándar o pulsa sobre la opción del menú emergente del nodo.
2.La aplicación copia en el portapapeles la información de todos los nodos seleccionados y de todos los enlaces que salen y entran a ellos, incluyendo los enlaces que los unen con otros nodos que no son copiados. Esta información sustituye a la que hubiese almacenada en el portapapeles.
3.Se activa la opción para pegar que hay en el menú principal, en la barra de herramientas estándar y en el menú desplegable de los nodos.
Caso de uso 39: Copia de nodos al portapapeles
Caso de uso: Corte de nodos al portapapelesComentario: Este caso es similar al anterior, salvo que los nodos y todos los enlaces que salen o entran a ellos son eliminados.Actor: UsuarioCurso normal Alternativas1.Cuando el tipo de edición es la selección de objetos y sólo hay nodos seleccionados, el usuario pulsa la
Informe Técnico CISIAD-10-03 Página 109 de 125
Informe Técnico CISIAD-10-03 Anexos
Caso de uso: Corte de nodos al portapapelesComentario: Este caso es similar al anterior, salvo que los nodos y todos los enlaces que salen o entran a ellos son eliminados.Actor: Usuariocombinación de teclas CONTROL+X o elige la opción para cortar que está disponible tanto en el menú principal como en la barra de herramientas estándar o pulsa sobre la opción del menú emergente del nodo.
2.La aplicación copia en el portapapeles la información de todos los nodos seleccionados y de todos los enlaces que salen y entran a ellos, incluyendo los enlaces que los unen con otros nodos que no son copiados. Esta información sustituye a la que hubiese almacenada en el portapapeles.
3.Se activa la opción para pegar que hay en el menú principal, en la barra de herramientas estándar y en el menú desplegable de los nodos.
4.Se eliminan todos los enlaces que salen o entran a alguno de los nodos seleccionados.
5.Se eliminan los nodos seleccionados.
6.Se ejecuta el caso de uso Actualización de los menús al cambiar la selección de los elementos.
7.Se crea un nuevo punto para deshacer y rehacer el corte de los nodos.
8.Se ejecuta el caso de uso Actualización de los menús al modificar una red.
9.La red se marca como modificada (si no lo estaba ya), anteponiendo un asterisco al título de la ventana en la que se edita.
Caso de uso 40: Corte de nodos al portapapeles
Caso de uso: Deshacer el corte de nodos al portapapelesComentario: En este caso, en el punto 4 de la tabla del caso de uso Deshacer la creación de un nodo debería figurar: “Se crean los nodos que se habían cortado y después los enlaces que entraban y salían de ellos”.
Informe Técnico CISIAD-10-03 Página 110 de 125
Informe Técnico CISIAD-10-03 Anexos
Caso de uso 41: Deshacer el corte de nodos al portapapeles
Caso de uso: Rehacer el corte de nodos al portapapelesComentario: En este caso, en el punto 4 de la tabla del caso de uso Deshacer la creación de un nodo debería figurar: “Se eliminan los enlaces que entraban y salían de los nodos que inicialmente se habían cortado y después dichos nodos”.
Caso de uso 42: Rehacer el corte de nodos al portapapeles
Caso de uso: Pegado de nodos al portapapelesComentario: Este caso de uso permite pegar la información que hay en el portapapeles a la red actual.Actor: UsuarioCurso normal Alternativas1.Cuando el tipo de edición es la selección de objetos y si el portapapeles contiene información, el usuario pulsa la
Informe Técnico CISIAD-10-03 Página 111 de 125
Informe Técnico CISIAD-10-03 Anexos
Caso de uso: Pegado de nodos al portapapelesComentario: Este caso de uso permite pegar la información que hay en el portapapeles a la red actual.Actor: Usuariocombinación de teclas CONTROL+V o elige la opción para pegar que está disponible tanto en el menú principal como en la barra de herramientas estándar o pulsa sobre la opción del menú emergente del fondo del panel de red.
2.Se deseleccionan todos los elementos.
3.Se ejecuta el caso de uso Actualización de los menús al cambiar la selección de los elementos.
4.La aplicación coge un nodo del portapapeles y, si es apto para la red37, lo crea en su ubicación original.
4.1.Si el nodo existe, prueba a crearlo añadiendo “_X” al nombre hasta que se pueda crear. X es un número entero a partir de uno que se incrementa hasta que no haya un nodo con ese nombre. El nuevo nodo se crea un poco desplazado de su ubicación original.
5.Mientras haya nodos en el portapapeles, vuelve al punto 4.
5.1.Si no hay más nodos para crear, pasa al punto 6.
6.La aplicación coge un enlace del portapapeles y lo crea uniendo los dos nodos tanto si se han pegado como si ya estaban en la red.
6.1.Si uno de los nodos que unen el enlace no se ha copiado en el portapapeles y ya no existe, el enlace no es creado.
7.Mientras haya enlaces en el portapapeles, vuelve al punto 6.
7.1.Si no hay más enlaces para crear, pasa al punto 8.
8.Se seleccionan todos los nodos creados.
9.Se ejecuta el caso de uso Actualización de los menús al cambiar la selección de los elementos.
10.Se crea un nuevo punto para deshacer y rehacer el pegado de los nodos.
11.Se ejecuta el caso Actualización de los menús al modificar una red.
12.La red se marca como modificada (si no lo estaba ya), anteponiendo un asterisco al título de la ventana en la que se edita.
Caso de uso 43: Pegado de nodos al portapapeles
37 Un determinado nodo es apto para una red si puede ser creado en ella. Por ejemplo, los nodos de decisión y utilidad no
son aptos para las redes bayesianas pero sí para los diagramas de influencia. [8]
Informe Técnico CISIAD-10-03 Página 112 de 125
Informe Técnico CISIAD-10-03 Anexos
Caso de uso: Deshacer el pegado de nodos del portapapelesComentario: En este caso, en el punto 4 de la tabla del caso de uso Deshacer la creación de un nodo debería figurar: “Se eliminan los enlaces que entraban y salían de los nodos pegados y después dichos nodos”.
Caso de uso 44: Deshacer el pegado de nodos del portapapeles
Caso de uso: Rehacer el pegado de nodos del portapapelesComentario: En este caso, en el punto 4 de la tabla del caso de uso Deshacer la creación de un nodo debería figurar: “Se crean los nodos que inicialmente se habían pegado y después los enlaces que entraban y salían de ellos”.
Caso de uso 45: Rehacer el pegado de nodos del portapapeles
Caso de uso: Cierre de la ventana de mensajesComentario: Este caso de uso lo iniciará el usuario cuando quiera que se deje de ver la ventana de mensajes.Actor: UsuarioCurso normal Alternativas1.El usuario cierra la ventana de mensajes.
2.La ventana de mensajes se vuelve invisible.
Caso de uso 46: Cierre de la ventana de mensajes
Caso de uso: Paso a primer plano de la ventana de mensajesComentario: Este caso de uso lo iniciará el usuario cuando quiera que se vea en la pantalla la ventana donde aparecen los mensajes de la aplicación.Actor: UsuarioCurso normal Alternativas1.El usuario indica a la aplicación que quiere ver la ventana de mensajes.
2.La aplicación hace visible la ventana de mensajes y la pasa al primer plano.
Caso de uso 47: Paso a primer plano de la ventana de mensajes
Informe Técnico CISIAD-10-03 Página 113 de 125
Informe Técnico CISIAD-10-03 Anexos
Caso de uso: Copia del contenido de la ventana de mensajesComentario: Este caso de uso lo inicia el usuario cuando quiere copiar el contenido de la ventana de mensajes en el portapapeles del sistema.Actor: UsuarioCurso normal Alternativas1.El usuario indica a la ventana de mensajes que quiere copiar el contenido de la ventana de mensajes al portapapeles del sistema operativo.
1.1.Si la ventana de mensajes no se ve, el usuario debe ejecutar el caso de uso Paso a primer plano de la ventana de mensajes.
2.La aplicación copia el contenido de la ventana de mensajes en el portapapeles del sistema operativo.
Caso de uso 48: Copia del contenido de la ventana de mensajes
Caso de uso: Limpieza de la ventana de mensajes
Comentario: Este caso de uso lo inicia el usuario cuando quiere borrar el contenido de la ventana de mensajes.
Actor: Usuario
Curso normal Alternativas
1.El usuario indica a la ventana de mensajes que quiere limpiar su contenido.
1.1.Si la ventana de mensajes no se ve, el usuario debe ejecutar el caso de uso Paso a primer plano de la venta de mensajes.
2.La aplicación borra el contenido de la ventana de mensajes.
Caso de uso 49: Limpieza de la ventana de mensajes
Caso de uso: Abrir ventana de configuración de propiedades personalizables de usuarioActor: UsuarioCurso Normal Alternativas1.Se selecciona la apertura de la configuración de la aplicación en el menú principal2.Se leen las propiedades de configuración desde el fichero de propiedades3.Se presenta el árbol contraído de propiedades al usuario junto con las opciones permitidas para operar (salvar, exportar, importar, restaurar opciones por defecto, cancelar)
Caso de uso 50: Abrir ventana de configuración de usuario
Informe Técnico CISIAD-10-03 Página 114 de 125
Informe Técnico CISIAD-10-03 Anexos
Caso de uso: Cerrar ventana de configuración de propiedades personalizables de usuarioActor: UsuarioCurso Normal Alternativas1.El usuario selecciona cerrar la edición de propiedades.2.Si hay cambios sin guardar, se realiza el salvado de ellos antes de cerrar la ventana.
2.1.Si no hay cambios sin guardar, se cierra la ventana.
3.La ventana de configuración de propiedades de usuario se cierra.
Caso de uso 51: Cerrar ventana de configuración de usuario
Caso de uso: Cerrar ventana de configuración de propiedades personalizables de usuario con cancelaciónActor: UsuarioCurso Normal Alternativas1.El usuario cancela la edición de propiedades.2.Si hay cambios sin guardar, se pierden.
2.1.Si no hay cambios sin guardar, se cierra la ventana.
3.La ventana de configuración de propiedades de usuario se cierra.
Caso de uso 52: Cerrar ventana de configuración de usuario con cancelación
Caso de uso: Salvar elementos de configuración de propiedades personalizables de usuarioActor: UsuarioCurso Normal Alternativas2.Si hay cambios sin guardar, se realiza el salvado de ellos.
2.1.Si no hay cambios sin guardar, no se hace nada.
Caso de uso 53: Salvar configuración de usuario
Caso de uso: Importar configuración de propiedades personalizables de usuario desde un fichero externoActor: UsuarioCurso Normal Alternativas1.Se presenta una ventana para seleccionar el fichero externo de configuración de propiedades personalizables de usuario.2.Si el fichero es valido y contiene propiedades personalizables de usuario, se importan en la aplicación actual.
2.1.Si el fichero no es valido, se da mensaje de error y no se realiza la importación.
3.Se refresca en la ventana el árbol de propiedades configurables
3.1Si no ha habido cambios, no se realiza refresco.
Caso de uso 54: Importar configuración de usuario
Informe Técnico CISIAD-10-03 Página 115 de 125
Informe Técnico CISIAD-10-03 Anexos
Caso de uso: Exportar configuración de propiedades personalizables de usuario a un fichero externoActor: UsuarioCurso Normal Alternativas1.Se presenta una ventana para introducir el nombre del fichero externo.2.Si el nombre de fichero es valido, se exportan la configuración de propiedades personalizables de usuario.
2.1.Si el fichero no es valido, se da mensaje de error y no se realiza la exportación.
3.Se cierra la ventana de exportación quedando en la ventana de propiedades.
Caso de uso 55: Exportar configuración de usuario
Caso de uso: Abrir ventana principal de ayuda de la aplicaciónActor: UsuarioCurso Normal Alternativas1.Se selecciona la apertura de la ventana de ayuda de la aplicación en el menú principal.2.Se lee el fichero de ayuda según el lenguaje que el usuario tenga en uso en la aplicación.3.Se presenta la ayuda de la aplicación, con el menú contraído y la ventana de Introducción.
Caso de uso 56: Abrir ventana principal de ayuda de la aplicación
Caso de uso: Abrir ventana de ayuda de una ventana o elemento en la aplicaciónActor: UsuarioCurso Normal Alternativas1.El usuario pulsa F1 sobre una ventana de la aplicación o dentro de un elemento de un diálogo.2.Si el elemento o ventana tiene definida la propiedad de ayuda en línea, se abre la ventana de ayuda en la posición de la ayuda requerida.
2.1.Si el elemento o ventana no tiene definida la propiedad de ayuda en línea, no se abre ninguna ventana.
Caso de uso 57: Abrir ayuda de una ventana o elemento
Caso de uso: Buscar elementos de ayudaActor: UsuarioCurso Normal Alternativas1.Dentro de la ventana de ayuda, el usuario busca una palabra en el índice.2.La ayuda presenta las páginas donde la palabra aparece.
Informe Técnico CISIAD-10-03 Página 116 de 125
Informe Técnico CISIAD-10-03 Anexos
Caso de uso 58: Buscar elementos de ayuda
Caso de uso: Cambiar lenguaje de la aplicaciónActor: UsuarioCurso Normal Alternativas1.Se selecciona la apertura de la ventana de cambio de lenguaje de la aplicación en el menú principal.2.Se presenta la ventana de cambio de lenguaje, con un texto de ejemplo en el lenguaje actual, y mostrando en un desplegable los lenguajes definidos.3.El usuario selecciona el lenguaje requerido.4.La ventana se actualiza en base al nuevo lenguaje seleccionado.5.Si el usuario acepta, se genera una orden para actualizar todos los elementos de texto visuales de la aplicación en el nuevo lenguaje y se marca este lenguaje como lenguaje preferido por el usuario en las propiedades personalizables.
5.1.Si el usuario no acepta, se pasa a punto 6.
6.Se cierra la ventana.
Caso de uso 59: Cambiar lenguaje de la aplicación
Caso de uso: Añadir un padre a un nodoActor: UsuarioCurso Normal Alternativas1.Durante la edición de propiedades de un nodo se añade un nodo como padre del nodo en edición de entre los padres permitidos.2.Se genera un enlace visual.3.Se actualiza la tabla de potencial del nodo en edición para añadir los valores correspondientes al nodo padre añadido.4.Se crea un nuevo punto para deshacer y rehacer la adicción del padre al nodo.
Caso de uso 60: Añadir un padre a un nodo
Caso de uso: Eliminar un padre de un nodoActor: UsuarioCurso Normal Alternativas1.Durante la edición de propiedades de un nodo se elimina un nodo como padre del nodo en edición de entre los padres permitidos.
Informe Técnico CISIAD-10-03 Página 117 de 125
Informe Técnico CISIAD-10-03 Anexos
Caso de uso: Eliminar un padre de un nodoActor: UsuarioCurso Normal Alternativas2.Se elimina el enlace visual.3.Se actualiza la tabla de potencial del nodo en edición para eliminar los valores asociados al nodo padre eliminado.4.Se crea un nuevo punto para deshacer y rehacer la eliminación del padre al nodo.
Caso de uso 61: Eliminar padre de un nodo
Caso de uso: Cambiar el nombre de un nodoActor: UsuarioCurso Normal Alternativas1.Durante la edición de propiedades de un nodo se cambia el nombre del nodo en edición.2.Notifica a sus nodos hijo el cambio de nombre para actualizar las diferentes tablas de potenciales.3.Se crea un nuevo punto para deshacer y rehacer el cambio de nombre del nodo.
Caso de uso 62: Cambiar el nombre de un nodo
Caso de uso: Añadir un estado de un nodoActor: UsuarioCurso Normal Alternativas1.Durante la edición de propiedades de un nodo se añade un estado de la variable del nodo en edición.2.Notifica a sus nodos hijo la adicción de un nuevo estado para actualizar las diferentes tablas de potenciales.3.Se crea un nuevo punto para deshacer y rehacer la adicción del estado al nodo.
Caso de uso 63: Añadir un estado de un nodo
Caso de uso: Eliminar un estado de un nodoActor: UsuarioCurso Normal Alternativas1.Durante la edición de propiedades de un nodo se elimina un estado de la variable del nodo en edición.2.Notifica a sus nodos hijo la eliminación de un estado para
Informe Técnico CISIAD-10-03 Página 118 de 125
Informe Técnico CISIAD-10-03 Anexos
Caso de uso: Eliminar un estado de un nodoActor: UsuarioCurso Normal Alternativasactualizar las diferentes tablas de potenciales.3.Se crea un nuevo punto para deshacer y rehacer la eliminación del estado del nodo.
Caso de uso 64: Eliminar un estado de un nodo
Caso de uso: Cambiar el nombre a un estado de un nodoActor: UsuarioCurso Normal Alternativas1.Durante la edición de propiedades de un nodo se cambia el nombre de un estado de la variable del nodo en edición.2.Notifica a sus nodos hijo el cambio de nombre de un estado para actualizar las diferentes tablas de potenciales.3.Se crea un nuevo punto para deshacer y rehacer el cambio de nombre del estado del nodo.
Caso de uso 65: Cambiar el nombre a un estado de un nodo
Informe Técnico CISIAD-10-03 Página 119 de 125
Informe Técnico CISIAD-10-03 Anexos
Anexo 2 – OpenMarkovDTDSpec.xml para definir carga de OpenMarkov
<!-- OpenMarkov DTD configuration @author jlgozalo @version 1.2 22/Apr/2009 @version 1.1 07/Dic/2008 @version 1.0 30/Nov/2008 Changes in 1.1 Add ToolBar definition to the menus entry and suppress Mnemonic and Shortcut to the Toolbaritem Changes in 1.2 Add Windows definitions to allow automatic creation from the OpenMarkovDevEnv tool --><!ELEMENT configuration (menus|windows|languages)*> <!ELEMENT menus (menubar | toolbar | popupmenu)*>
<!ATTLIST menus name CDATA #IMPLIED><!ELEMENT menubar (menu)* >
<!ATTLIST menubar name CDATA #REQUIRED><!ELEMENT menu (menuitem | menuseparator | menu)* >
<!ATTLIST menu name CDATA #REQUIRED label CDATA #IMPLIED mnemonic CDATA #REQUIRED action CDATA #IMPLIED>
<!ELEMENT menuitem EMPTY><!ATTLIST menuitem
name CDATA #REQUIREDlabel CDATA #REQUIREDmnemonic CDATA #IMPLIEDshortcut CDATA #IMPLIEDaction CDATA #IMPLIEDicon CDATA #IMPLIED>
<!ELEMENT menuseparator EMPTY> <!ELEMENT toolbar (toolbaritem | toolbarseparator)* >
<!ATTLIST toolbar name CDATA #REQUIRED><!ELEMENT toolbaritem EMPTY>
<!ATTLIST toolbaritem name CDATA #REQUIREDlabel CDATA #REQUIREDaction CDATA #IMPLIEDicon CDATA #REQUIRED>
<!ELEMENT toolbarseparator EMPTY><!ELEMENT popupmenu (menuitem | menuseparator | menu)* >
<!ATTLIST popupmenu name CDATA #REQUIRED><!ELEMENT window (dialog)*> <!ATTLIST window name CDATA #REQUIRED><!ELEMENT dialog (panel)*> <!ATTLIST dialog name CDATA #REQUIRED><!ELEMENT panel (fields | panellayout)*> <!ATTLIST panel name CDATA #REQUIRED><!ELEMENT fields (field)*> <!ATTLIST fields name CDATA #REQUIRED><!ELEMENT field EMPTY> <!ATTLIST field name CDATA #REQUIRED
Informe Técnico CISIAD-10-03 Página 120 de 125
Informe Técnico CISIAD-10-03 Anexos
label CDATA #REQUIRED mnemonic CDATA #IMPLIED type CDATA #REQUIRED
action CDATA #REQUIRED><!ELEMENT panellayout (horizontal|vertical)><!ELEMENT horizontal (parallelgroup|sequentialgroup|component)*><!ELEMENT vertical (parallelgroup|sequentialgroup|component)*><!ELEMENT parallelgroup (sequentialgroup | component)*><!ELEMENT sequentialgroup (containergap | parallelgroup | preferedgap | component)*><!ELEMENT group (parallelgroup*)><!ELEMENT containergap EMPTY ><!ELEMENT preferedgap EMPTY ><!ELEMENT component EMPTY> <!ATTLIST component name CDATA #REQUIRED><!ELEMENT languages (language)*><!ELEMENT language EMPTY>
<!ATTLIST languagename CDATA #REQUIREDlabel CDATA #REQUIREDlocale CDATA #REQUIREDresourcefile CDATA #REQUIRED>
<!-- ELEMENT windows (window)* --><!-- ELEMENT window EMPTY -->
<!-- end of DTD -->
Informe Técnico CISIAD-10-03 Página 121 de 125
Informe Técnico CISIAD-10-03 Anexos
Anexo 3 – OpenMarkovMenu.xml como ejemplo del cargador de OpenMarkov
<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE configuration SYSTEM "OpenMarkovDTDSpec.dtd"><configuration> <menus> <!-- The menu bar at the top of the frame that is going to be displayed → <menubar name="TopMenu">
<menu name="File" action="FileHandler" mnemonic="F"><menuitem name="FileNew" label="New" shortcut="CTRL+N" mnemonic="N"
action="openMarkov.gui.loader.menus.DynamicMenuItemHandler" /><menuitem name="FileOpen" label="Open" shortcut="CTRL+O" mnemonic="0" /><menuseparator /><menuitem name="FileSave" label="Save" shortcut="CTRL+S" mnemonic="S" /><menuitem name="FileSaveAs" label="Save As..." mnemonic="A" /><menuseparator /><menuitem name="FileClose" label="Close" mnemonic="C" /><menuitem name="FileNetworkSettings" label="Network Settings" mnemonic="W" /><menuseparator /><menuitem name="FilePrint" label="Print" shortcut="CTRL+P" mnemonic="P" /><menuseparator /><menuitem name="FileExit" label="Exit" shortcut="ALT+F4" mnemonic="E" />
</menu><menu name="Edit" action="EditHandler" mnemonic="E">
<menuitem name="EditCut" label="Cut" shortcut="CTRL+X" mnemonic="C" /><menuitem name="EditCopy" label="Copy" shortcut="CTRL+C" mnemonic="O" /><menuitem name="EditPaste" label="Paste" shortcut="CTRL+V" mnemonic="P" /><menuitem name="EditDelete" label="Delete" shortcut="Supr" mnemonic="D" /><menuseparator /><menuitem name="EditUndo" label="Undo" shortcut="CTRL+Z" mnemonic="U" /><menuitem name="EditUndo" label="Redo" shortcut="CTRL+Y" mnemonic="R" /><menuseparator /><menuitem name="EditSelectAll" label="Select All" shortcut="CTRL+E"
mnemonic="A" /><menuseparator /><menuitem name="EditSelectObjects" label="Select objects" mnemonic="J" /><menuitem name="EditInsertProbabilityNode" label="Insert probability node"
mnemonic="B" /><menuitem name="EditInsertDecissionNode" label="Insert decission node"
mnemonic="S" /><menuitem name="EditInsertUtilityNode" label="Insert utility node"
mnemonic="Y" /><menuitem name="EditInsertLinks" label="Insert links" mnemonic="L" /><menuseparator /><menuitem name="EditNodeSettings" label="Node settings" mnemonic="N" />
</menu><menu name="View" action="ViewHandler" mnemonic="V">
<menu name="ViewNodes" label="Nodes" action="ViewNodesHandler" mnemonic="N">
<menuitem name="ViewNodesByName" label="By name"shortcut="CTRL+C" mnemonic="N" />
<menuitem name="ViewNodesByTitle" label="By Title"shortcut="CTRL+V" mnemonic="T" />
</menu><menu name="ViewZoom" label="Zoom" action="ViewZoomHandler"
mnemonic="Z"><menuitem name="ViewZoomEnlarge" label="Enlarge"
shortcut="CTRL + +" mnemonic="E" /><menuitem name="ViewZoomReduce" label="Reduce"
Informe Técnico CISIAD-10-03 Página 122 de 125
Informe Técnico CISIAD-10-03 Anexos
shortcut="CTRL + -" mnemonic="R" /><menuseparator /><menuitem name="ViewZoom500%" label="500%" /><menuitem name="ViewZoom200%" label="200%" /><menuitem name="ViewZoom150%" label="150%" /><menuitem name="ViewZoom100%" label="100%" /><menuitem name="ViewZoom75%" label="75%" /><menuitem name="ViewZoom50%" label="50%" /><menuitem name="ViewZoom25%" label="25%" /><menuitem name="ViewZoom10%" label="10%" /><menuseparator /><menuitem name="ViewZoomOther" label="Other(100%)..."
mnemonic="0" /></menu><menuseparator /><menuitem name="ViewMessageWindow" label="Message Window"
mnemonic="M" /></menu><menu name="Tools" action="ToolsHandler" mnemonic="T">
<menuitem name="ToolsLearning" label="Learning" mnemonic="L" /><menuseparator /><menuitem name="ToolsLanguage" label="Language" mnemonic="G" /><menuitem name="ToolsPreferences" label="Preferences" mnemonic="S" />
</menu><menu name="Window" action="WindowHandler" mnemonic="W">
<menuitem name="WindowOrganizeTile" label="Tile organization" mnemonic="T" /><menuitem name="WindowOrganizeMosaic" label="Mosaic organization"
mnemonic="M" /><menuitem name="WindowMinimizeAll" label="Minimize all" mnemonic="I" /><menuitem name="WindowMaximizeAll" label="Maximize all" mnemonic="A" /><menuseparator /><menuitem name="WindowPrevious" label="Previous" shortcut="CTRL+UP"
mnemonic="P" /><menuitem name="WindowNext" label="Next" shortcut="CTRL+DOWN"
mnemonic="N" /></menu><menu name="Help" action="HelpHandler" mnemonic="H">
<menuitem name="HelpTopics" label="Topics..." mnemonic="O" /><menuitem name="HelpTutorial" label="Tutorial" mnemonic="T" /><menuseparator /><menuitem name="HelpAbout" label="About OpenMarkov Project" mnemonic="A" />
</menu> </menubar> <toolbar name="Main">
<toolbaritem label="Open" name="FileOpen"icon="/gui/images/openfile.gif"action="openMarkov.gui.loader.menus.DynamicMenuItemHandler" />
<toolbarseparator /><toolbaritem label="Close" name="FileClose"
icon="/gui/icons/close.gif"action="openMarkov.gui.loader.menus.DynamicMenuItemHandler" />
</toolbar> </menus> <languages>
<language name="Spanish" label="Español" locale="es_ES" resourcefile="xxxxxx" /><language name="English" label="English" locale="en_EN" resourcefile="xxxxxx" />
</languages></configuration>
Informe Técnico CISIAD-10-03 Página 123 de 125
Informe Técnico CISIAD-10-03 Anexos
Anexo 4 – Documento de ayuda en línea al usuarioSe puede acceder al sitio web del proyecto para obtener en formato PDF el
contenido de la ayuda disponible y visible desde dentro de la aplicación
OpenMarkov al seleccionar la opción de Ayuda para usuario. Este documento
PDF se genera de manera automática por el programa de autor Helen2000©
con el que también se han realizado las pantallas de ayuda en línea.
Informe Técnico CISIAD-10-03 Página 124 de 125
Informe Técnico CISIAD-10-03 Bibliografía
Bibliografía[1] A. SHALLOWAY y J. R. TROTT. Design Patterns Explained: A New Perspective on Object-Oriented Design (2ª edition). Addison-Wesley, 2004.[2] B. ECKEL. Piensa en Java (2ª edición). Prentice Hall, 2002.[3] B. ECKEL. Thinking in Patterns. www.mindviewinc.com/Books. 2003.[4] C. S. HORSTMANN y G. CORNELL. Core Java 2 Volume I: Fundamentals (8ª edition revised for Java SE 6). Prentice Hall, 2006.[5] C. S. HORSTMANN y G. CORNELL. Core Java 2 Volume II: Advanced Features (8ª edition revised for Java SE 6). Prentice Hall, 2006.[6] Descripción, documentación técnica y enlaces relacionados con el informe técnico Elvira, disponibles en www.ia.uned.es/investig/proyectos/elvira.[7] J.E. MENDOZA. informe técnico . Interfaz Gráfica para OpenMarkov. 2008[8] E. CASTILLO, J. M. GUTIÉRREZ y A. S. HADI. Sistemas Expertos y Modelos de Redes Probabilistas. Academia de Ingeniería, Madrid, 1997.[9] F. J. DÍEZ. Introducción al Razonamiento Aproximado. Dpto. de Inteligencia Artificial, UNED, 2004.[10] F. J. DÍEZ y S. F. GALÁN. Guía de Estudio de Técnicas Avanzadas de Razonamiento. Dpto. de Inteligencia Artificial, UNED, 2005.[11] G. BOOCH, J. RUMBAUGH y I. JACOBSON. El Lenguaje Unificado de Modelado. Addison-Wesley, 2000.[12] G. BOOCH, J. RUMBAUGH y I. JACOBSON. El Proceso Unificado de Desarrollo de Software. Addison-Wesley, 2000.[13] H. M. DEITEL y P. J. DEITEL. Java: How to program (6ª edición). Prentice Hall, 2004.[14] H. M. DEITEL, P. J. DEITEL y S. E. SANTRY. Advanced Java 2 Platform: How to program. Prentice Hall, 2002.[15] M. ROBINSON y P. VOROBIEV. Swing (2ª edición). Manning, 2003.[16] M. ARIAS. Adenda Didáctica de Análisis, Diseño y Mantenimiento del Software. Dpto. de Inteligencia Artificial, UNED, 2002.[17] M. ARIAS y F. J. DÍEZ. OpenMarkov: A software tool for probabilistic graphical models. Disponible en HTTP://www.ia.uned.es/personal/fjdiez/docencia/proyectos-etsii/informe técnico-OpenMarkov.pdf. Dpto. de Inteligencia Artificial, UNED, 2006.[18] M. ARIAS, OpenMarkov Code Conventions. Disponible en el repositorio de OpenMarkov[19] R. S. PRESSMAN. Ingeniería del Software: un enfoque práctico (5ª edición). McGraw-Hill, 2001.[20] M. ARIAS, Carmen: una herramienta de software libre para modelos gráficos probabilistas. Tesis Doctoral. Dpto. Inteligencia Artificial, UNED, Madrid, 2010. http://www.cisiad.uned.es/tesis/Tesis-MArias.pdf[21] SHNEIDERMAN, B., PLAISANT, C.: Designing the User Interface: Strategies for Effective Human-Computer Interaction; Addison-Wesley, 1987. Fourth edition with Catherine Plaisant as co-author 2004: ISBN 0-321-26978-0. [22] Internacionalización (traducción: J. A. Palos): http://www.programacion.com/java/tutorial/i18n/2/
Informe Técnico CISIAD-10-03 Página 125 de 125