Chapter Four: The origins of story ideas 1 Introduction
2. Finding Stories on The Bill 1983 –
2.1 Internal sources
Es necesario capturar los cambios y eventos que ocurren en el servidor, en este caso en el simulador, por lo que para ello se plantea la utilización del patrón de diseño observador, el cual permite notificar a un objeto observador cuando un cambio ocurre en un objeto observado. En la Figura 19 se encuentra el diagrama de clases del patrón observador aplicado al modelo de simulación, allí se observa que las entidades que requieren ser observadas son: PDU, conexión, encaminador, computador, conmutador y concentrador, por lo que cada uno cuenta con un observador abstracto asociado, el cual contiene los métodos necesarios para actualizar los diferentes cambios que ocurren en cada objeto, además de una
plantilla “Receptor” la cual permite definir para cada observador un objeto receptor
64
Figura 19. Aplicación del patrón observador al modelo de simulación
Fuente: El autor
Los observadores abstractos pueden ser heredados con el fin de tener observadores concretos que realicen notificaciones de los cambios ocurridos, es posible tener un conjunto de observadores que entre otras acciones permitan: imprimir todos los eventos ocurridos por consola, guardar los eventos en un archivo plano o actualizar una interfaz gráfica, por lo que se propone el uso del patrón fábrica abstracta, el cual permite contar con un conjunto de observadores de diferentes tipos y fábricas que agrupen a los observadores. En la Figura 20 se observa un conjunto de observadores que imprimen por consola (observadores “Txt”) y otro que
65
corresponde al envío de los cambios mediante interacción remota (observadores
“de interacción remota”).
Figura 20. Fábrica de observadores
66
En la Figura 21 se presenta el diagrama de secuencia correspondiente a la interacción realizada en el momento de notificar un suceso a un observador, un cliente (el cual puede ser parte del modelo de simulación o puede ser externo) genera mediante una conexión el envío de una PDU, la conexión notifica el cambio a un observador, en este ejemplo es el “ObservadorConexionTxt”, el cual realiza las acciones necesarias sobre su objeto receptor, que en este caso imprime un mensaje notificando el envío.
Figura 21. Diagrama de secuencia de notificación a observador
Fuente: El autor
10.2 Conexión
La conexión con el cliente se realiza mediante el mecanismo establecido en el capítulo 9 y es posible verlo desde dos perspectivas: el envío de un comando que se genera a partir de un cambio en el servidor o la recepción de un comando remitido por un cliente para ser ejecutado y efectuar un cambio en el servidor.
Cuando se notifica el envío de una PDU a un receptor es posible tener diferentes tipos de observador, como el que se encuentra en el diagrama de secuencia de la Figura 22 que al ser notificado crea un comando al cual se le agregan los parámetros
“idInterfaz1Cliente” e “idInterfaz2Cliente” obtenidos mediante el intermediador y se ejecuta el comando remoto, método que al ser ejecutado envía el comando mediante la conexión WebSocket.
67 Figura 22. Envío de comandos desde el servidor
Fuente: El autor
El servidor además de enviar comandos a partir de cambios en el modelo de simulación también tiene la capacidad de recibir comandos provenientes de clientes, los cuales alteran el escenario de simulación. En la Figura 23 se observa la secuencia correspondiente a la llegada de un comando, el decodificador se encarga de crear el comando correspondiente agregando los parámetros y entregándolo a la conexión para que sea ejecutado, éste cambia la IP del objeto computador, el cual fue obtenido haciendo uso del intermediador.
68 Figura 23. Recepción de comandos en el servidor
Fuente: El autor
10.3 Tecnologías aplicadas
El simulador de redes y el mecanismo de captura de eventos de simulación se llevan a cabo haciendo uso del lenguaje de programación Java, lenguaje de programación orientada a objetos de amplia utilización por su portabilidad, la comunicación y específicamente la implementación de WebSockets está disponible en la versión Web de Java llamada “Java Web” (Oracle, 2017).
69
11 SUBSISTEMA CLIENTE
En este capítulo se describe la interfaz de usuario planteada que da respuesta a las necesidades de interactividad como la capacidad de cambiar el entorno gráfico, el control de variables generales de la simulación, la capacidad de ubicar elementos en el entorno de simulación, entre otras. Se presenta la forma mediante la cual el cliente se conecta con el servidor y envía comandos y finalmente se menciona la tecnología utilizada para el desarrollo del subsistema cliente.
11.1 Interfaz de usuario
La forma de dar respuesta a cada una de las necesidades de interactividad del software se presenta en la Tabla 5.
Tabla 5. Respuestas a las necesidades de interacción
Necesidad Respuesta
Capacidad de cambiar el entorno gráfico
Menús de sesión, editar y vista Capacidad de proporcionar ayuda al
usuario del software de simulación Menú de ayuda Controlar variables generales de la
simulación Panel de control de la simulación, con opciones de inicio, pausa, reinicio y variación de la velocidad de simulación Capacidad de ubicar diferentes
elementos en el entorno de simulación Panel de selección de dispositivos para ser ubicados en el entorno de simulación
Mecanismo para modificar y manipular el entorno de simulación y sus elementos
Panel de herramientas como la de conexión de dos dispositivos o la herramienta para remitir PDUs
Mecanismo para la visualización y modificación de propiedades de los elementos de simulación
Pestañas que permiten visualizar y modificar las propiedades de los objetos presentes en la simulación Mecanismo para que el usuario
interactúe desde diferentes dispositivos
Desarrollo responsivo de la interfaz gráfica
Fuente: El autor
La estructura de interfaz gráfica que da respuesta a las necesidades de interacción se presenta en la Figura 24, en la parte central y derecha de la pantalla se extiende todo el entorno de simulación, allí se muestran los dispositivos simulados, sus
70
conexiones, el envío de paquetes y todo lo referente a la simulación, se observa además que se cuenta en la parte superior con un conjunto de menús que permiten realizar algunas modificaciones sobre la interfaz u obtener ayuda, en la parte izquierda se tienen tres paneles: el de simulación que permite iniciar, pausar, reiniciar y cambiar la velocidad de simulación; el de dispositivos que permite seleccionar y ubicar en el entorno de simulación diferentes objetos a simular y finalmente el panel con las herramientas necesarias para la simulación, en la parte inferior se encuentra la salida del software donde se muestran mensajes referentes a la simulación y un conjunto de pestañas que despliegan opciones de configuración cuando un dispositivo es seleccionado.
Figura 24. Interfaz gráfica para pantallas amplias
Fuente: El autor
Aunque la interfaz gráfica para pantallas amplías cumple casi con todas las necesidades propuestas, hace falta la característica responsiva, por lo que en la Figura 25 se presenta la versión gráfica para dispositivos con pantallas más pequeñas como celulares o algunas tablets. En esta versión los menús, controles de simulación, dispositivos y herramientas se encuentran compactados en la parte
71
superior de la pantalla, permitiendo aprovechar el espacio para el ambiente de simulación, pero posibilitando el despliegue de cada elemento que sea necesario, finalmente en la parte inferior se encuentran las pestañas correspondientes a la salida por consola del software y configuración de dispositivos.
Figura 25. Interfaz gráfica para pantallas pequeñas
Fuente: El autor
11.2 Conexión
La conexión del cliente con el servidor es muy similar a la forma como se conecta el servidor con el cliente, la diferencia fundamental radica en que el cliente no hace uso de un intermediador para obtener los identificadores de objetos del servidor, sino que envía directamente los identificadores de los objetos del cliente puesto que el servidor es el encargado de obtener los objetos correspondientes.
72
El envío de comandos desde el cliente se genera a partir de la captura de eventos generados por el usuario de la simulación como se observa en la Figura 26, la entidad encargada de manejar tales eventos, en este caso la vista crea un comando
remoto, por ejemplo el comando remoto “CambiarIP”, al cual se le agregan los parámetros necesarios para que se llame al método ejecutar, mecanismo mediante el cual se envía a la conexión encargada de codificar el comando en formato JSON y enviarlo al otro lado de la comunicación.
Figura 26. Envío de comandos desde el cliente
Fuente: El autor
El cliente también debe permitir la recepción de comandos que fueron enviados desde el servidor como se observa en la Figura 27, una vez recibido el comando es decodificado, se crea el comando ejecutable y se agregan los parámetros necesarios, una vez decodificado es ejecutado, proporcionando como parámetro de ejecución el receptor vista, objeto encargado de mostrar la animación correspondiente al envío de una PDU.
73 Figura 27. Recepción de comandos en el cliente
Fuente: El autor