MODELO SOFTWARE PARA INTERACCIÓN REMOTA EN AMBIENTES DE...

91
MODELO SOFTWARE PARA INTERACCIÓN REMOTA EN AMBIENTES DE MULTIMEDIA INTERACTIVA APLICADO A ESCENARIOS DE ENCAMINAMIENTO UNIVERSIDAD DISTRITAL FRANCISCO JOSÉ DE CALDAS FACULTAD DE INGENIERÍA INGENIERÍA DE SISTEMAS BOGOTÁ D.C. 2018 Presentado por: Jeisson Rodrigo Piñeros Ramirez

Transcript of MODELO SOFTWARE PARA INTERACCIÓN REMOTA EN AMBIENTES DE...

MODELO SOFTWARE PARA INTERACCIÓN REMOTA EN

AMBIENTES DE MULTIMEDIA INTERACTIVA APLICADO A

ESCENARIOS DE ENCAMINAMIENTO

UNIVERSIDAD DISTRITAL FRANCISCO JOSÉ DE CALDAS FACULTAD DE INGENIERÍA

INGENIERÍA DE SISTEMAS BOGOTÁ D.C.

2018

Presentado por: Jeisson Rodrigo Piñeros Ramirez

MODELO SOFTWARE PARA INTERACCIÓN REMOTA EN AMBIENTES DE MULTIMEDIA INTERACTIVA APLICADO A ESCENARIOS DE ENCAMINAMIENTO

Presentado por:

JEISSON RODRIGO PIÑEROS RAMIREZ

Código 20131020056

Monografía

Director:

PhD Julio Barón Velandia

UNIVERSIDAD DISTRITAL FRANCISCO JOSÉ DE CALDAS

FACULTAD DE INGENIERÍA

INGENIERÍA DE SISTEMAS

BOGOTÁ D.C.

2018

CONTENIDO

1 Introducción ...................................................................................................... 8

2 Problema de investigación .............................................................................. 11

2.1 Planteamiento del problema .................................................................... 11

2.2 Formulación del problema ....................................................................... 13

3 Objetivos ......................................................................................................... 14

3.1 Objetivo general ...................................................................................... 14

3.2 Objetivos específicos ............................................................................... 14

4 Justificación .................................................................................................... 16

5 Alcances y limitaciones ................................................................................... 18

5.1 Alcances .................................................................................................. 18

5.2 Limitaciones ............................................................................................. 19

6 Marco referencial ............................................................................................ 21

6.1 Marco teórico-conceptual ........................................................................ 21

6.1.1 Marco conceptual ............................................................................... 21

6.1.2 Marco teórico ..................................................................................... 23

6.2 Antecedentes ........................................................................................... 34

6.2.1 Juegos multijugador en línea ............................................................. 34

7 Técnica metodológica ..................................................................................... 36

8 Especificaciones de software de interacción remota ...................................... 39

8.1 Herramientas de simulación .................................................................... 39

8.1.1 Packet tracer ...................................................................................... 39

8.1.2 GNS3 ................................................................................................. 41

8.1.3 NetSim ............................................................................................... 42

8.2 Requisitos de interactividad ..................................................................... 43

8.3 Requisitos de interacción cliente-servidor ............................................... 43

8.4 Requisitos del modelo software ............................................................... 44

8.5 Requerimientos ....................................................................................... 45

8.6 Diagrama de casos de uso ...................................................................... 45

9 Interconexión .................................................................................................. 47

9.1 Comparación de técnicas de comunicación ............................................ 47

9.1.1 Multimedia interactiva ......................................................................... 47

9.1.2 Protocolo de red ................................................................................. 47

9.1.3 Técnica de comunicación ................................................................... 48

9.1.4 Codificación de la comunicación ........................................................ 48

9.2 Modelo Software ...................................................................................... 49

9.2.1 Envío del cliente al servidor ............................................................... 53

9.2.2 Envío del servidor al cliente ............................................................... 55

10 Subsistema Servidor ....................................................................................... 58

10.1 Simulador ................................................................................................ 58

10.1.1 Simulador de redes de comunicaciones ............................................. 58

10.1.2 Captura de eventos ............................................................................ 63

10.2 Conexión ................................................................................................. 66

10.3 Tecnologías aplicadas ............................................................................. 68

11 Subsistema Cliente ......................................................................................... 69

11.1 Interfaz de usuario ................................................................................... 69

11.2 Conexión ................................................................................................. 71

11.3 Tecnologías aplicadas ............................................................................. 73

12 Modelo de despliegue ..................................................................................... 74

12.1 Componentes .......................................................................................... 74

12.2 Nodos ...................................................................................................... 75

12.3 Despliegue ............................................................................................... 76

13 Pruebas de subsistemas e integración ........................................................... 77

13.1 Conexión ................................................................................................. 77

13.2 Servidor ................................................................................................... 78

13.3 Cliente ..................................................................................................... 81

13.4 Integración ............................................................................................... 82

13.4.1 Cliente-Servidor.................................................................................. 82

13.4.2 Servidor-Cliente.................................................................................. 83

14 Conclusiones .................................................................................................. 84

15 Referencias ..................................................................................................... 86

FIGURAS

Figura 1. Flujo de eventos de una conexión mediante Socket ............................... 33

Figura 2. Interfaz gráfica de Packet tracer ............................................................. 40

Figura 3. Interfaz gráfica de GNS3 ........................................................................ 41

Figura 4. Interfaz gráfica de NetSim ...................................................................... 42

Figura 5. Diagrama de casos de uso ..................................................................... 46

Figura 6. Patrón comando para interacción remota ............................................... 50

Figura 7. Clase Intermediador................................................................................ 51

Figura 8. Diagrama de clases de modelo de interacción remota ........................... 52

Figura 9. Diagrama de secuencia del establecimiento de la conexión ................... 53

Figura 10. Envío de comando desde el cliente hacia el servidor ........................... 54

Figura 11. Envío de comando desde el cliente hacia el servidor (Continuación) ... 55

Figura 12. Envío de comando desde el servidor hacia el cliente ........................... 56

Figura 13. Envío de comando desde el servidor hacia el cliente (Continuación) ... 57

Figura 14. Conexión entre dos dispositivos de red ................................................ 58

Figura 15. Modelo de simulación ........................................................................... 59

Figura 16. Modelo de simulación de dispositivos de red ........................................ 61

Figura 17. Envío de una PDU ................................................................................ 62

Figura 18. Renvío de un paquete por múltiples puertos ........................................ 63

Figura 19. Aplicación del patrón observador al modelo de simulación .................. 64

Figura 20. Fábrica de observadores ...................................................................... 65

Figura 21. Diagrama de secuencia de notificación a observador........................... 66

Figura 22. Envío de comandos desde el servidor .................................................. 67

Figura 23. Recepción de comandos en el servidor ................................................ 68

Figura 24. Interfaz gráfica para pantallas amplias ................................................. 70

Figura 25. Interfaz gráfica para pantallas pequeñas .............................................. 71

Figura 26. Envío de comandos desde el cliente .................................................... 72

Figura 27. Recepción de comandos en el cliente .................................................. 73

Figura 28. Diagrama de componentes ................................................................... 75

Figura 29. Diagrama de nodos............................................................................... 76

Figura 30. Diagrama de despliegue ....................................................................... 76

Figura 31. Verificación de funcionamiento de la conexión en el servidor ............... 77

Figura 32. Verificación del funcionamiento de la conexión en el cliente ................ 78

Figura 33. Red de prueba del modelo de simulación ............................................. 78

Figura 34. Código de prueba del modelo de simulación ........................................ 79

Figura 35. Resultado de la prueba al modelo de simulación ................................. 80

Figura 36. Prueba interfaz gráfica .......................................................................... 81

Figura 37. Prueba de integración cliente-servidor en el cliente ............................. 82

Figura 38. Prueba de integración cliente-servidor en el servidor ........................... 82

Figura 39. Prueba de integración servidor-cliente en el servidor ........................... 83

Figura 40. Prueba de integración cliente-servidor en el cliente ............................. 83

TABLAS

Tabla 1. Requisitos de interacción cliente-servidor ................................................ 44

Tabla 2. Requisitos del modelo software ............................................................... 44

Tabla 3. Requerimientos del software de simulación ............................................. 45

Tabla 4. Comparación de técnicas de comunicación ............................................. 48

Tabla 5. Respuestas a las necesidades de interacción ......................................... 69

8

1 INTRODUCCIÓN

El software en ambiente Web y el procesamiento en máquinas remotas al que se

accede mediante dispositivos de usuario final han tenido auge en los últimos años

puesto que tienen ventajas en lo que respecta a la ubicuidad y costos

computacionales, permitiendo aprovechar al máximo estos recursos. Es importante

entonces que muchos de los servicios que prestan las aplicaciones existentes sean

puestos a disposición en ambiente Web.

Existen aplicaciones de software para las cuales es fundamental contar con altos

niveles de interacción e interactividad, adicionalmente se requiere que sean flexibles

para realizar modificaciones o ampliación de funcionalidades. En este documento

se describe una solución mediante un prototipo software para aplicaciones que

exigen altos niveles de interacción e interactividad mediante acceso remoto, a la vez

que proporciona flexibilidad permitiendo incorporar nuevas funcionalidades. Para

proponer una solución, se describen las opciones actuales para el desarrollo de

software con altas necesidades de interacción e interactividad de forma remota, así

como la flexibilidad que requiere este tipo de soluciones y los problemas asociados

a cada alternativa; se identifican las causas del problema y se presentan las

limitaciones de las soluciones actuales con el fin de establecer la pregunta que guía

la investigación en aras de solucionar el problema.

Se establece como objetivo general el diseño de módulos cliente-servidor de

interacción remota mediante la utilización de técnicas y métodos propios de

ingeniería de software para que cumplan con las características necesarias que den

respuesta a la pregunta de investigación, facilitando la transmisión de información

en escenarios de alta interacción e interactividad. Así mismo, se establecen los

objetivos específicos orientados a determinar el conjunto de características con las

que debe contar la aplicación para establecer el diseño y posteriormente desarrollar

el prototipo software cuyo resultado es verificable mediante la representación de

escenarios de encaminamiento en el servidor y visualización en el cliente. Esto

9

permite explotar las ventajas del procesamiento remoto y la forma de compartir

recursos computacionales entre un conjunto de usuarios, aprovechando además la

capacidad de acceder al software desde diferentes lugares, requiriendo únicamente

un navegador con acceso a Internet.

Entre los alcances se destacan: la descripción de los servicios que presta el

software, la caracterización de la comunicación específica para la aplicación, el

diseño y el desarrollo del prototipo software de interacción remota, así como los

resultados de la verificación de las funcionalidades del software. A nivel de

limitaciones desde una perspectiva técnica, el prototipo se despliega bajo

direccionamiento privado únicamente en entorno de desarrollo.

La técnica metodológica se establece de forma iterativa e incremental en cuatro

iteraciones donde inicialmente se realiza la conexión cliente-servidor; en la segunda

se establecen las abstracciones y características de flexibilidad; en la tercera se

desarrolla el servidor y finalmente se establece todo lo necesario para la interfaz

gráfica de usuario. Cada una de las iteraciones es descrita especificando lo que se

realiza y la forma de abordar cada una de ellas.

En el capítulo 8 se establecen las necesidades del software de interacción remota

en términos de interactividad, interacción y modelo de software a partir del análisis

de herramientas ya existentes, en el siguiente se establecen las técnicas de

comunicación cliente-servidor a utilizar y el modelo de interacción remota propuesto

representado mediante diagramas de clases y de interacción.

En el capítulo 10 se encuentra el modelo de simulación de redes para el

encaminamiento, el mecanismo de captura de eventos generados por el simulador

y la forma de enviar y recibir comandos. La descripción del cliente, la forma en la

que se recibe y envía comandos, así como la tecnología utilizada, se encuentra en

el capítulo 11.

El capítulo 12 contiene la forma en la que se despliega el sistema representado

mediante un diagrama de componentes, un diagrama de nodos y un diagrama de

10

despliegue, en el capítulo siguiente se encuentran las pruebas realizadas en cada

uno de los subsistemas y una prueba de integración de componentes, finalmente

se presentan las conclusiones del proyecto, destacando ventajas del diseño por

componentes aplicado a software de interacción remota, los beneficios de la

utilización del mecanismo de interacción mediante codificación en formato de

representación de datos y la importancia de las comprobaciones de funcionamiento

que se realizan a cada subsistema y al sistema de interacción remota en general.

11

2 PROBLEMA DE INVESTIGACIÓN

Este capítulo se divide en dos apartados, el primero presenta el preámbulo de la

construcción de software y las diferentes técnicas de comunicación entre la vista y

la lógica de negocio para llegar a la especificación de software; se continúa con el

diagnóstico cuando se requieren altas necesidades de interacción remota y las

implicaciones de flexibilidad en este tipo de aplicaciones especificando causas y

síntomas para posteriormente describir el pronóstico de la situación. El segundo

apartado plantea la pregunta de investigación jugando el papel de directriz del

proyecto que busca facilitar la interacción remota entre componentes de software.

2.1 Planteamiento del problema

Existe la posibilidad de desarrollar software, donde todos los elementos visuales y

de lógica de negocio se encuentran altamente acoplados, pero si se requiere una

separación entre la visualización del software y los elementos lógicos en los que se

basa su funcionamiento, es posible dividir al software en dos capas: una de lógica

de negocio y una para la interfaz de usuario o vista. La conexión que comunica la

capa lógica y la vista se realiza mediante llamadas desde la vista a funciones que

son provistas por la capa lógica, allí el canal de comunicación se encuentra inmerso

en la propia gestión que realiza el sistema operativo de funciones y métodos; esto

siempre que ambas capas se encuentren desplegadas en un mismo nodo.

Cuando se requiere construir un sistema donde las capas de lógica y vista se

encuentran en diferentes nodos es necesario contar con una red de comunicaciones

que conecte ambas capas, tal es el caso de sistemas que se encuentran

desplegados para ser utilizados mediante interfaces Web los cuales utilizan por lo

general la arquitectura llamada-retorno (Pressman, Ingeniería de Software Un

enfoque práctico, 2005) para dar respuesta a la necesidad de comunicación entre

ambas capas, esta arquitectura funciona mediante el envío de solicitudes desde

nodos clientes (que contienen la capa de vista) a otro nodo o nodos servidores (que

contienen la capa lógica). El problema con esta forma de estructurar el software es

12

que las peticiones se realizan únicamente desde los nodos clientes a los nodos

servidores, por lo que las solicitudes se reflejan explícitamente en la interfaz gráfica

con elementos visuales que desencadenan peticiones al recibir un evento.

Para mantener actualizados tanto al cliente como al servidor cuando estos están

ubicados en forma remota se pueden realizar actualizaciones periódicas mediante

el envío de mensajes, esto permite actualizar el modelo de acuerdo con las acciones

del usuario y reduce la posibilidad de que se cuente con una vista desactualizada,

pero cuando no suceden cambios en el periodo de tiempo definido para

actualización los mensajes transmitidos son innecesarios y si el número de clientes

crece significativamente, el volumen de tráfico satura el canal de comunicaciones

aumentando los retardos en la transmisión ocasionando pérdida de mensajes y por

lo tanto desactualización de representaciones visuales que se presentan al usuario.

Una forma de disminuir el tráfico innecesario es enviar únicamente mensajes

cuando se presenta un cambio, la pérdida de mensajes puede evitarse mediante la

comunicación confirmada, en los métodos convencionales de transmisión de datos

cada mensaje debe ser encaminado, pero cuando la red experimenta alto volumen

de tráfico la retransmisión de datos produce largos periodos de latencia.

Cuando los retardos se presentan del cliente hacia el servidor se evidencian

inconsistencias en los componentes que representan el modelo, mientras que

cuando los retardos se presentan del servidor hacia el cliente, éste experimenta

pausas que se reflejan en la pérdida de la secuencia de movimiento en la

visualización de objetos del entorno. Mantener sincronizadas ambas partes en lo

referente a procesamiento en el servidor y visualización en el cliente implica que

estas puedan ejecutar acciones por solicitud, es decir, alta interactividad en

procesamiento remoto implica alta interacción entre cliente y servidor, para lo cual

es necesario ancho de banda dedicado sobre un canal de comunicación

bidireccional.

Si una solución de software presenta alto grado de dependencia, los subsistemas

servidor, conexión y cliente no son explícitamente diferenciables, cuando se

13

presentan situaciones en las que se requiere realizar mantenimiento o ampliación

de las funcionalidades, las modificaciones desencadenan cambios que impactan de

manera impredecible en las funcionalidades del sistema. El problema es más crítico

en software con altas necesidades de interacción cliente-servidor por ejemplo

software con la capacidad de ejecutar diferentes funcionalidades dependiendo de

los eventos generados por el usuario o el cambio de comportamiento en

componentes del modelo, lo cual se ve reflejado en:

• Servidor: alto acoplamiento entre la lógica de negocio y la lógica de conexión

• Cliente: alto acoplamiento entre la lógica de conexión y la vista

• Conexión: deficiencias en la definición del modelo que ocasionan problemas

de flexibilidad en los extremos de la comunicación.

Todo esto lleva a sistemas software difíciles de mantener, restringidos para ampliar

sus funcionalidades, con una vida útil corta, con interacción sobre mecanismos poco

eficientes.

2.2 Formulación del problema

Se propone entonces la pregunta de investigación: ¿Cómo facilitar comunicación

bidireccional entre módulos o componentes de software en distinta ubicación

geográfica, cuando se producen eventos y acciones que modifican los escenarios

de interacción dando respuesta a las necesidades de flexibilidad?

14

3 OBJETIVOS

3.1 Objetivo general

Diseñar los módulos software cliente-servidor de interacción remota aplicando

técnicas de desarrollo por componentes y protocolos de comunicación Web que

cuente con características de extensibilidad y bajo acoplamiento entre lógica de

conexión, lógica de negocio y vista, para facilitar la transmisión de información

generada por eventos en los escenarios de interacción sin dependencia de la

ubicación del procesamiento.

3.2 Objetivos específicos

• Determinar elementos, servicios y funcionalidades en aplicaciones de

simulación con requisitos de alta interactividad, mediante el estudio de

escenarios que permitan definir similitudes para establecer casos de uso

donde se requieran soluciones de software de interacción remota.

• Seleccionar los elementos necesarios con los que deben contar los

escenarios de interacción remota, mediante la revisión de estudios

comparativos de técnicas de comunicación de diferentes tipos de transmisión

multimedia, así como la revisión de estudios de desempeño según los tipos

de tráfico, para que cumpla con las características necesarias planteadas.

• Establecer el diseño de software adecuado aplicando una arquitectura

llamada-retorno en ambiente cliente-servidor mediado por protocolos de Web

para que los componentes de interactividad tengan bajo acoplamiento con

componentes de lógica y sean independientes de su ubicación física.

• Desarrollar un prototipo software de simulación para la Web con estructura

cliente-servidor mediante el uso del modelo de software diseñado para

verificar los servicios de acuerdo con las especificaciones definidas.

• Establecer el escenario de pruebas que permita validar las funcionalidades

del prototipo contextualizado en las situaciones que resuelve un algoritmo de

15

encaminamiento, así como el soporte a la interacción e interactividad entre

los módulos que proporcionan servicios al usuario.

16

4 JUSTIFICACIÓN

Las respuestas de interacción entre aplicaciones remotas generan retardos que

degradan la calidad de la experiencia de usuario, el desarrollo de mecanismos que

mejoren los tiempos de respuesta a diferentes tipos de interacción que se presentan

en escenarios como la simulación remota permite conservar la velocidad de las

aplicaciones de escritorio y aprovechar las ventajas del procesamiento remoto.

En el desarrollo de simulaciones donde se requiere representar fenómenos

definidos mediante un alto número de reglas y comportamientos es fundamental

contar con alta disponibilidad y capacidad de cómputo lo cual hace que muchos

proyectos no sean viables económicamente. Proporcionar técnicas de interacción

remota permite compartir recursos computacionales (procesamiento, memoria y

utilidades de software) reduciendo costos en la generación de proyectos de

simulación, lo cual hace que muchos más proyectos puedan ser realizados

reduciendo la dependencia económica.

El modelo software descrito en este documento puede ser usado como una guía de

referencia que permite construir entornos de simulación donde se requiere: gestión

de eventos, visualización de fenómenos e interactividad remota, para ser

aprovechado en ambientes académicos que necesiten representar situaciones en

áreas de conocimiento como: química, física, redes de comunicaciones, así como

en sectores de la industria como los procesos de producción, las cadenas de

distribución, transporte de mercancías, donde es necesaria la representación de

comportamientos de dispositivos y el procesamiento de eventos.

La solución que se presenta facilita el envío y recepción de información en forma de

mensajes sin que el usuario tenga que realizar ningún tipo de acción de la misma

manera como sucede en las aplicaciones de escritorio manteniendo la experiencia

de usuario.

El resultado del proyecto puede ser aplicado en situaciones de simulación remota

que requieran incorporar de manera flexible componentes de acuerdo con nuevas

17

necesidades de representación donde se requiere alto nivel de interacción entre

subsistemas interconectados permitiendo realizar los cálculos computacionales

separados de la visualización de resultados.

18

5 ALCANCES Y LIMITACIONES

En este capítulo se presentan los resultados entre los que se destacan: la

descripción de los servicios que se prestan al cliente, la caracterización del uso

adecuado del medio de comunicación y técnicas que responden a las necesidades

de interacción, el diseño del prototipo, el software de simulación y los resultados de

las pruebas en un contexto de simulación específico. En relación con las

limitaciones, se describen algunas actividades que no se realizan como la aplicación

a otros contextos de simulación, el despliegue de la herramienta en ambientes

educativos, industriales o con direccionamiento público.

5.1 Alcances

Obtención y descripción de los principales servicios requeridos por las personas en

los dispositivos cliente y necesidades de interactividad, con las respectivas

prioridades de realización, así como las condiciones y especificaciones técnicas de

desempeño para su adecuada ejecución.

Caracterización y descripción de los diferentes tipos de tráfico tanto sincrónico como

asíncrono y los mecanismos correspondientes de transmisión de información en

forma de mensajes que permitan hacer uso adecuado del medio de comunicación,

dando respuesta a necesidades de ejecución cuando se solicitan acciones.

El diseño del prototipo software de interacción remota comprende una perspectiva

estructural basada en una representación de clases que describen los principales

elementos y servicios, un modelo de despliegue que representa la forma en que

deben ser desplegados los componentes en cada uno de los nodos, así como una

representación de comportamiento mediante diagramas de secuencia y diagramas

de estados.

Como resultado final del proyecto se obtiene el prototipo software de simulación,

que comprende: un subsistema cliente altamente interactivo con la capacidad de

capturar eventos generados por el usuario y transformarlos para su transmisión y

19

procesamiento en dispositivos computacionales remotos, además de permitir la

recepción de mensajes remotos y generar una representación visual; subsistema

que conecta subsistemas que requieren alta interacción mediante transmisión de

mensajes soportados en protocolos de comunicaciones; y subsistema servidor

encargado de procesar mensajes recibidos y generar respuestas.

Se realizan pruebas de integración y verificación del prototipo software de

simulación remota mediante la aplicación a escenarios de un algoritmo de

encaminamiento en redes de comunicaciones con el fin de verificar las

funcionalidades y el soporte a la interacción e interactividad.

5.2 Limitaciones

Aunque el modelo software de interacción remota es aplicable a diferentes

contextos como los de simulación de fenómenos físicos, químicos, de producción,

entre otros, en el proyecto el único que se lleva a la práctica es el de

encaminamiento en redes de comunicaciones puesto que es necesario delimitar los

escenarios de prueba. Adicionalmente, la comunicación es de relevancia para el

proyecto por lo que es consecuente seleccionar un algoritmo de encaminamiento

de las redes de comunicaciones como el contexto a simular.

El despliegue de la herramienta para apoyo a las actividades de enseñanza-

aprendizaje o en ambientes empresariales no está contemplado dentro del

proyecto, dado que no se cuenta con la infraestructura y permisos a funcionalidades

de red ni vinculación a ninguna institución.

El acceso a la aplicación se verifica únicamente desde dos puntos geográficos

diferentes que se encuentran en una red que no tiene direccionamiento público, es

decir que se utilizan rangos de direcciones IP de servidor y clientes privadas ya que

no se cuenta con la infraestructura necesaria para el despliegue y utilización

mediante dirección pública.

El prototipo software de simulación que se genera en el proyecto es validado para

un algoritmo de encaminamiento, por lo tanto, los escenarios de verificación son

20

definidos únicamente para éste, dado que la prueba para otros implica el desarrollo

de algoritmos que permitan la implementación de cada uno de ellos.

21

6 MARCO REFERENCIAL

El marco de referencia se compone de: marco teórico, aquí llamado marco teórico

conceptual (Sánchéz, 2004) en el cual se definen conceptos base de la

investigación como la interacción, la interactividad, simulación, Web, entre otros,

además se abordan conceptos como: flexibilidad, proceso iterativo e incremental,

proceso personal de software (PSP), arquitectura de software, formatos para el

intercambio de datos, entre otros; y antecedentes de aplicaciones remotas

apoyadas en multimedia en el ámbitos de videojuegos.

6.1 Marco teórico-conceptual

6.1.1 Marco conceptual

Los conceptos base que son necesarios para el desarrollo del proyecto se describen

en este apartado.

6.1.1.1 Simulación

Thomas H. Naylor definió la simulación como “una técnica numérica para conducir

experimentos en una computadora digital. Estos experimentos comprenden ciertos

tipos de relaciones matemáticas y lógicas, las cuales son necesarias para describir

el comportamiento y la estructura de sistemas complejos del mundo real a través de

largos períodos de tiempo”, H. Maisel y G. Gnugnoli tomaron esta definición y la

plantearon en un sentido más estricto determinando que “simulación es una técnica

numérica para realizar experimentos en una computadora digital. Estos

experimentos involucran ciertos tipos de modelos matemáticos y lógicos que

describen el comportamiento de sistemas de negocios, económicos, sociales,

biológicos, físicos o químicos a través de largos períodos de tiempo” (Cross Bu,

1993).

Por otro lado, en 1976, Robert Shannon publicó Systems Simulation: The Art and

Science donde define la simulación como “el proceso de diseñar y desarrollar un

modelo computarizado de un sistema o proceso y conducir experimentos con este

modelo con el propósito de entender el comportamiento del sistema o evaluar varias

22

estrategias con las cuales se puede operar el sistema” (Shannon E, 1976). Ésta

última es la que se acerca más a la realización del proyecto, por lo que es tomada

como definición definitiva.

6.1.1.2 Acceso remoto

La Real Academia Española define el concepto como “muy lejano. Una aldea

remota. Tiempos remotos” (Real Academia Española, 2017), la definición de

servicio de acceso remoto provista por Microsoft: “Servicio de acceso remoto

conecta un cliente con un computador anfitrión” (Microsoft, 2017). A lo largo de este

documento se considera que los elementos son remotos si se encuentran en

posiciones geográficas distintas, por lo que la característica de interacción remota

se define como la interacción de elementos en ubicaciones diferentes.

6.1.1.3 World Wide Web

La definición oficial que provee el “World Wide Web Consortium” es: “un espacio de

información en el que los elementos de interés, denominados recursos, son

identificados por identificadores globales denominados Uniform Resource Identifiers

(URI)” (World Wide Web Consortium, 2004).

6.1.1.4 HTML5

Es la última versión de HTML. HTML se diseñó principalmente como un lenguaje

para la descripción semántica de documentos científicos, aunque su diseño general

y las adaptaciones a lo largo de los años han permitido que sea utilizado para

describir una serie de otros tipos de documentos. HTML5 incluye muchas

características nuevas para hacer los formularios web mucho más fáciles de escribir

y mucho más potentes y consistentes en toda la Web (World Wide Web Consortium,

2014).

6.1.1.5 JavaScript

Lenguaje de programación de HTML y la Web. JavaScript fue inventado por

Brendan Eich en 1995, y se convirtió en un estándar ECMA en 1997. ECMA-262

es el nombre oficial de la norma. ECMAScript es el nombre oficial del idioma

(w3schools, 2017).

23

6.1.1.6 Java

Oracle, la compañía que da soporte a Java lo define como “un lenguaje de

programación y una plataforma informática comercializada por primera vez en 1995

por Sun Microsystems. Hay muchas aplicaciones y sitios web que no funcionarán a

menos que tenga Java instalado y cada día se crean más. Java es rápido, seguro y

fiable. Desde portátiles hasta centros de datos, desde consolas para juegos hasta

súper computadoras, desde teléfonos móviles hasta Internet, Java está en todas

partes.” (Oracle, 2015).

6.1.2 Marco teórico

Los conceptos que se desarrollan en este apartado son necesarios para el

desarrollo del proyecto.

6.1.2.1 Interacción e Interactividad

Es necesario definir estos conceptos y aclarar su diferencia para evitar confusión

puesto que son utilizados durante todo el desarrollo de este documento.

6.1.2.1.1 Interacción

Según la Real Academia Española es la “Acción que se ejerce recíprocamente entre

dos o más objetos, personas, agentes, fuerzas, funciones, etc.” (Real Academia

Española, 2017), para el desarrollo de este documento se define como la interacción

entre dos elementos de software, ya sean sistemas, subsistemas, módulos,

componentes, o cualquier otro elemento.

6.1.2.1.2 Interactividad

La Real Academia Española la define como “dicho de un programa: Que permite

una interacción, a modo de diálogo, entre la computadora y el usuario” (Real

Academia Española, 2017), por lo que aquí es definida como el proceso de

comunicación que se realiza netamente entre el usuario y el sistema computacional

mediante cualquier medio.

24

6.1.2.2 Multimedia

La Real Academia Española la define como “que utiliza conjunta y simultáneamente

diversos medios, como imágenes, sonidos y texto, en la transmisión de una

información” (Real Academia Española, 2017).

En este documento se considera un medio ya sea físico o digital para presentar o

comunicar información.

6.1.2.3 Multimedia interactiva

Se refiere a la interacción que tiene el usuario de tal forma que modifica los

escenarios multimediales de forma inmediata, alterándolos de acuerdo con las

acciones que se realicen.

6.1.2.4 Flexibilidad

Esfuerzo que se emplea en la modificación de un programa que ya opera. Por lo

tanto, el “desarrollo flexible es la capacidad de responder rápidamente a las nuevas

necesidades del mercado y las peticiones del cliente” (Diaz, Muñoz, Sirerol, Oviedo,

& Ibañez, 2012). Para que el software se considere flexible debe contar como

mínimo con las siguientes características.

6.1.2.4.1 Extensibilidad

“Capacidad que tiene un modelo de desarrollo para poder ampliar la funcionalidad

de una aplicación sin que este cambio requiera un gran esfuerzo. En el caso de la

orientación a objetos, se facilita la extensibilidad de los programas, dado que

muchas veces basta con añadir o modificar un número muy reducido de métodos

de algunas clases para conseguir que la aplicación final tenga mayores

capacidades” (Alonso, Martínez, & Segovia, 2005).

6.1.2.4.2 Reusabilidad

“Grado en el que un programa (o partes de uno) pueden volverse a utilizar en otras

aplicaciones (se relaciona con el empaque y el alcance de las funciones que lleva a

cabo el programa)” (Pressman, Ingeniería de Software Un enfoque práctico, 2010).

25

6.1.2.5 Proceso iterativo e incremental

Ya que mediante este proceso se aborda el proyecto, es necesario definir el modelo

de proceso tanto iterativo como incremental.

6.1.2.5.1 Modelo de proceso incremental

Si hay una necesidad urgente de entregar una funcionalidad limitada a los usuarios

y aumentarla en las entregas posteriores se elige un modelo de proceso diseñado

para producir el software en incrementos. El modelo incremental aplica secuencias

lineales en forma escalonada a medida que avanza el calendario de actividades.

Cada secuencia lineal produce “incrementos”, es frecuente que el primer incremento

sea el producto fundamental. El modelo de proceso incremental se centra en que

cada incremento se entrega un producto que ya opera (Pressman, Ingeniería de

Software Un enfoque práctico, 2010).

6.1.2.5.2 Modelo de proceso iterativo

Los modelos iterativos se caracterizan por la manera en la que permiten desarrollar

versiones cada vez más completas del software. El enfoque iterativo permite que el

cliente evalúe en forma regular el aumento del software, dé la retroalimentación

necesaria al equipo de software e influya en las adaptaciones del proceso que se

realicen para aprovechar la retroalimentación (Pressman, Ingeniería de Software Un

enfoque práctico, 2010).

6.1.2.6 Proceso personal de Software (PSP, Personal Software Process)

Proporciona a los ingenieros un marco personal disciplinado para realizar trabajos

de software. El proceso de PSP consiste en un conjunto de métodos, formularios y

secuencias de comandos que muestran a los ingenieros de software cómo

planificar, medir y administrar su trabajo. Está diseñado para su uso con cualquier

lenguaje de programación o metodología de diseño y se puede utilizar para la

mayoría de los aspectos del trabajo del software, incluyendo requisitos de escritura,

pruebas de ejecución, definición de procesos y reparación de defectos. Cuando los

ingenieros usan el PSP, el objetivo del proceso recomendado es originar productos

de defecto cero según el calendario y dentro de los costos planificados.

26

PSP especifica cómo planificar y realizar un seguimiento del trabajo, utilizar un

proceso definido y medido, establecer metas mensurables y realizar un seguimiento

del rendimiento en relación con estas metas, además muestra a los ingenieros cómo

administrar la calidad desde el inicio del trabajo, cómo analizar los resultados de

cada trabajo y cómo usar los resultados para mejorar el proceso para el próximo

proyecto (Humphrey, 2000).

6.1.2.6.1 Principios de PSP

El diseño de PSP se basa en los siguientes principios de planificación y calidad

(Humphrey, 2000).

• Cada ingeniero es diferente; para ser más eficaces, los ingenieros deben

planificar su trabajo y deben basar sus planes en sus propios datos

personales.

• Para mejorar constantemente su rendimiento, los ingenieros deben utilizar

personalmente procesos bien definidos y medidos.

• Para producir productos de calidad, los ingenieros deben sentirse

personalmente responsables de la calidad de sus productos. Los productos

superiores no se producen por error; los ingenieros deben esforzarse por

hacer un trabajo de calidad.

• Cuesta menos buscar y corregir defectos antes en un proceso que después.

• Es más eficaz prevenir defectos que encontrarlos y fijarlos.

• La forma correcta es siempre la manera más rápida y barata de hacer un

trabajo.

6.1.2.6.2 Niveles de PSP

A continuación, se listan los niveles que contempla PSP (Humphrey, 2000).

• PSP 0

o Proceso actual.

o Registro de tiempos.

o Registro de defectos.

27

• PSP 0.1:

o Estándares de código.

o Medición de tamaño.

• PSP 1 - Inicial:

o Estimación de tamaño.

o Reporte de pruebas.

• PSP 1.1:

o Calendario de planeación de tareas.

• PSP 2 - Repetible:

o Revisión de diseño y código.

• PSP 2.1:

o Plantillas de Diseño.

• Team Software Process (TSP).

6.1.2.7 Arquitectura de software

Bas, Clements y Kazman plantean en su libro Software Architecture in Practice que

“la arquitectura del software de un programa o sistema de cómputo es la estructura

o estructuras del sistema, lo que comprende a los componentes del software, sus

propiedades externas visibles y las relaciones entre ellos” (Bass, Kazman, & Paul,

1997).

A continuación, se mencionan algunas arquitecturas y aspectos asociados que son

relevantes para el desarrollo del proyecto.

6.1.2.7.1 Arquitectura estratificada

También conocida como arquitectura en capas ya que define una serie de capas en

las cuales se realizan operaciones que se acercan progresivamente al conjunto de

instrucciones de la máquina. En la capa externa, los componentes sirven a las

operaciones de interfaz de usuario; en la capa interna los componentes sirven como

interfaz con el sistema operativo; y en las capas intermedias se proporcionan

servicios de software de aplicaciones y utilería (Pressman, Ingeniería de Software

Un enfoque práctico, 2005).

28

6.1.2.7.2 Arquitectura llamada-Retorno

Permite que un diseñador de software obtenga una estructura de programa que

resulte fácil de modificar y cambiar. Esta arquitectura tiene dos sub-estilos:

arquitectura de programa principal/subprograma donde un programa principal

invoca a varios componentes de programa, que a su vez puede invocar otros

componentes; y arquitectura de llamada de procedimiento remoto donde los

componentes de la arquitectura anterior se distribuyen entre varias computadoras

de una red (Pressman, Ingeniería de Software Un enfoque práctico, 2005).

6.1.2.7.3 Componentes

La Especificación OMG del Lenguaje de Modelado Unificado, define componente

como “parte modular, desplegable y sustituible de un sistema, que incluye la

implantación y expone un conjunto de interfaces” (Pressman, Ingeniería de Software

Un enfoque práctico, 2010).

Los componentes hacen parte de la arquitectura de software y se encargan de la

comunicación y colaboración con otros componentes o entidades, que existan fuera

de las fronteras de software (Pressman, Ingeniería de Software Un enfoque práctico,

2010).

6.1.2.8 Formato para el intercambio de datos

Formato ligero, "auto-descriptivo", fácil de entender, leer y escribir por los seres

humanos y fácil de analizar y generar para las máquinas, el texto puede ser leído y

utilizado como formato de datos por cualquier lenguaje de programación (json,

2017).

Los siguientes son formatos para el intercambio de datos:

29

• JavaScript Object Notation (JSON): sintaxis para almacenar e intercambiar

datos en texto escrito con la notación de objetos JavaScript (json, 2017).

• Extensible Markup Language (XML): lenguaje de marcado similar al HTML

diseñado para almacenar y transportar datos (World Wide Web Consortium,

2016).

6.1.2.9 Redes de comunicaciones

Conjunto de dispositivos de conmutación cuyo objetivo es proporcionar la

comunicación, llamados nodos. Así mismo, los dispositivos finales que desean

comunicarse se denominan estaciones y pueden ser computadores, terminales,

teléfonos u otros dispositivos de comunicación. Los datos que entran a la red

procedentes de una estación se encaminan hacia el destino mediante la

conmutación de nodo a nodo (Stallings, 2004).

Se describen algunos conceptos referentes a las redes de comunicaciones

relevantes para el desarrollo del proyecto.

6.1.2.9.1 Protocolos de comunicación

“Conjunto de reglas y procedimientos que proporcionan una técnica uniforme para

gestionar un intercambio de información. Estas reglas y procedimientos proveen la

administración, asignación y control de los recursos involucrados en el proceso;

asimismo, establecen métodos para evitar y/o resolver problemas producidos por

situaciones de excepción ocurridas en cualquiera de los elementos que intervienen

en el proceso” (Briceño M, 2005).

Entre los protocolos de comunicación se encuentran los siguientes, los cuales son

de importancia para el proyecto.

• TCP/IP: Conjunto de protocolos estratificados, responsable de que los

comandos correspondientes a alguna aplicación se transmitan a través de

una red (Briceño M, 2005).

• HTTP: Protocolo de nivel de aplicación para sistemas de información

distribuidos, colaborativos e hipermedia (Network Working Group, 1999).

30

6.1.2.9.2 Encaminamiento

Es definido por la Real Academia Española como la acción de encaminar, la cual a

su vez es definida como “Enseñar a alguien por dónde ha de ir, ponerlo en camino

o Dirigir algo hacia un punto determinado” (Real Academia Española, 2017).

En el área de las redes de comunicaciones es también llamado enrutamiento, es el

proceso en que los dispositivos que proporcionan la conectividad de red, como lo

son los encaminadores (o routers), aprenden sobre redes remotas, localizan todas

las rutas posibles y eligen las aquellas más rápidas para intercambiar datos entre

ellas, es decir, deciden dónde enviar los paquetes o descartan aquellos que por

algún motivo fallan todos los intentos de enrutarlos (Cisco Systems Inc, 2017).

Para poder ejecutar el encaminamiento, el encaminador debe saber de la existencia

de redes remotas, por lo que debe estar configurado con encaminamiento dinámico

y/o estático.

El encaminamiento estático es aquel que se hace manualmente, configurando las

rutas estáticas en cada encaminador. Con el encaminamiento estático se especifica

al encaminador, por dónde llegar a las redes remotas.

El encaminamiento dinámico posee un tiempo de convergencia más rápido y escala

mucho mejor en redes más grandes. Este se logra mediante el uso de uno o más

protocolos de encaminamiento como puede ser RIP, IGRP, EIGRP u OSPF. “Un

protocolo de encaminamiento establece las reglas sobre cómo un encaminador

aprende redes remotas y luego anuncia estas redes a encaminadores vecinos

dentro del mismo sistema autónomo (o AS por sus siglas en inglés)” (Cisco Systems

Inc, 2017).

6.1.2.9.3 Latencia

La Real Academia Española la define como el “tiempo que transcurre entre un

estímulo y la respuesta que produce, y, en particular, lapso entre el momento en

que se contrae una enfermedad y la aparición de los primeros síntomas” (Real

31

Academia Española, 2017). En este documento se considera como el tiempo de

transmisión y propagación intrínseco de la red.

6.1.2.9.4 Retardo

El retardo mide la demora que sufre la información, extremo a extremo. El retardo

tiene una aceptación y unos requisitos particulares dependiendo de la aplicación

específica.

El retardo en la comunicación puede deberse a retardos en: procesamiento en el

transmisor, ensamblado de paquetes, transmisión y propagación en la red (o alta

latencia), la memoria de la recepción o procesamiento en el receptor (España B,

2003).

6.1.2.9.5 Ancho de banda

Cantidad de Hertz en la banda útil de la señal, se basa en la velocidad de

información a transmitir y en el método de codificación y modulación. Tiene una gran

influencia en la velocidad máxima de transmisión. Generalmente, la velocidad de

transmisión es proporcional al ancho de banda disponible del medio de transmisión

(Briceño M, 2005).

6.1.2.10 Modelos de comunicación

La comunicación mediante redes puede caracterizarse mediante algunos conceptos

que son de importancia para el proyecto como: la bidireccionalidad, sincronismo o

asincronismo.

6.1.2.10.1 Comunicación bidireccional

Aquella que permite el envío y recepción de datos en ambos sentidos sobre un canal

de comunicación.

6.1.2.10.2 Comunicación sincrónica

Según la Real Academia Española sincrónico se define como “un proceso o de su

efecto: Que se desarrolla en perfecta correspondencia temporal con otro proceso o

causa” (Real Academia Española, 2017).

32

En lo que se refiere a redes de comunicaciones es aquella comunicación “en la que

los usuarios a través de una red telemática coinciden en el tiempo y se comunican

entre sí mediante texto, audio y/o vídeo” (Cabero, 2002).

6.1.2.10.3 Comunicación asíncrona

La Real Academia Española define asíncrono como algo “que no tiene lugar en

completa correspondencia temporal con otro proceso o con la causa que lo produce”

(Real Academia Española, 2017), mientras que en el ámbito de las redes de

comunicaciones es “donde los participantes utilizan el sistema de comunicación en

tiempos diferentes” (Cabero, 2002).

6.1.2.11 Técnicas de transferencia de datos

Las técnicas de comunicación para la transferencia de datos para tener en cuenta

en este documento se describen a continuación.

6.1.2.11.1 XMLHTTPRequest

Especificación que define una API que provee una funcionalidad de scripts de

cliente para transferir datos entre un cliente y un servidor, donde los datos

transferidos están codificados en texto, admitiendo formatos como XML, JSON,

HTML o codificaciones que sean particulares (World Wide Web Consortium, 2016).

6.1.2.11.2 Asynchronous JavaScript And XML (AJAX)

Técnica de desarrollo para el cliente que funciona en Javascript para creación de

desarrollo de aplicaciones interactivas, funciona mediante peticiones al servidor

utilizando formatos de intercambio de datos (Fuentes, 2009).

6.1.2.12 Socket

Los Sockets son comúnmente usados para la interacción entre cliente y servidor.

Generalmente el sistema servidor se encuentra en una máquina y los clientes en

otras. Los clientes se conectan al servidor intercambiando información y finalmente

se desconectan (IBM, 2017).

El flujo de eventos de una conexión mediante Socket se presenta en la Figura 1.

33

Figura 1. Flujo de eventos de una conexión mediante Socket

Fuente: (IBM, 2017)

6.1.2.13 WebSocket

WebSocket habilita la comunicación entre un cliente y un servidor, a diferencia de

un Socket, cuenta con la ventaja de tener el modelo de seguridad usado

actualmente por los navegadores Web, por lo que no es necesario crear algún

mecanismo de seguridad (Internet Engineering Task Force, 2011).

6.1.2.14 Simulación y sus tipos

• Identidad: "Es cuando el modelo es una réplica exacta del sistema en estudio.

Es la que utilizan las empresas automotrices cuando realizan ensayos de

choques de automóviles utilizando unidades reales." (Fishman, 1978)

• Cuasi-identidad: "Se utiliza una versión ligeramente simplificada del sistema

real. Por ejemplo, los entrenamientos militares que incluyen movilización de

equipos y tropas, pero no se lleva a cabo una batalla real." (Fishman, 1978)

34

• Laboratorio: Se utilizan modelos bajo las condiciones controladas de un

laboratorio. Se pueden distinguir dos tipos de simulaciones:

✓ Juego operacional: "Personas compiten entre ellas, ellas forman parte del

modelo, la otra parte consiste en computadoras, maquinaria, etc. Es el

caso de una simulación de negocios donde las computadoras se limitan

a recolectar la información generada por cada participante y a presentarla

en forma ordenada a cada uno de ellos." (Fishman, 1978)

✓ Hombre-Máquina: "Se estudia la relación entre las personas y la máquina.

Las personas también forman parte del modelo. La computadora no se

limita a recolectar información, sino que también la genera. Un ejemplo

de este tipo de simulación es el simulador de vuelo." (Fishman, 1978)

• Simulación por computadora: "El modelo es completamente simbólico y está

implementado en un lenguaje computacional. Las personas quedan

excluidas del modelo. Un ejemplo es el simulador de un sistema de redes de

comunicación donde la conducta de los usuarios está modelada en forma

estadística. Este tipo de simulación a su vez puede ser Digital (Cuando se

utiliza una computadora digital) o Análoga (Cuando se utiliza una

computadora analógica) En este grupo también se pueden incluir las

simulaciones que utilizan modelos físicos." (Fishman, 1978)

6.1.2.15 Patrón de diseño

Es una solución genérica a un problema particular de diseño con un conjunto de

características definidas (Gamma, Helm, Ralph, & Vlissides, 2003).

6.2 Antecedentes

6.2.1 Juegos multijugador en línea

Algunos juegos multijugador en línea presentan altas necesidades de interacción

entre todos los nodos participantes del juego e interactividad con los jugadores, por

35

lo que es un avance en lo que respecta a software de interacción remota y

multimedia interactiva.

6.2.1.1 Halo

Juego que cuenta con tres tipos de experiencias multijugador: la denominada “zona

de guerra” que habilita un modo multijugador a escala masiva permitiendo recrear

batallas entre 24 jugadores, con la intervención constante de IA amigas y enemigas

para ofrecer mayor variedad a la experiencia; “Asalto en zona de guerra” donde 24

jugadores atacan y defienden, el equipo atacante busca tomar el control de objetivos

estratégicos mientras los rivales intentan detenerlos; y “Tiroteo en zona de guerra”

en la que se pueden unir hasta ocho jugadores que trabajan juntos para completar

cinco rondas en las que irá aumentando la dificultad de objetivos dinámicos contra

reloj (Microsoft Studios, 2017).

6.2.1.2 Age of Empires

Juego de estrategia en tiempo real fundado en civilizaciones históricas el cual

cuenta con modo de juego para un jugador o multijugador donde cada uno controla

un conjunto de elementos entre los que se encuentran tropas, edificaciones y

obreros pertenecientes a una civilización, el objetivo es derrotar las civilizaciones de

los demás jugadores que se encuentran en el mismo mapa (Microsoft Studios,

2017).

6.2.1.3 Agar.io

Videojuego de acción multijugador en línea donde el jugador controla una célula

en el mapa el cual representa una placa de Petri, la meta es ganar toda la masa

posible comiendo las células de otros jugadores que se encuentran en el mismo

mapa (agario, 2017).

36

7 TÉCNICA METODOLÓGICA

Para la realización del proyecto se hace uso de las técnicas del método científico

desde la perspectiva hermenéutica que comprende aspectos inductivos, deductivos,

experimentales y empíricos, por lo tanto, para su realización es importante que las

actividades sean dirigidas mediante técnicas que aborden las problemáticas de

manera iterativa e incremental, a continuación, se describen los aspectos

fundamentales de la técnica metodológica definida y su articulación con las

actividades a desarrollar.

Para la realización del proyecto se inicia por la consulta de bibliografía y referencias

base en técnicas de comunicación de diferentes tipos de transmisión, tecnologías

asociadas y conceptos esenciales en los procesos de interacción mediante el uso

de redes de comunicaciones con el fin de establecer las características de los tipos

de tráfico y las técnicas de comunicación que se comparan para seleccionar la que

dé respuesta a las necesidades de alta interacción.

A partir de la segunda semana se realiza el diseño del prototipo representando la

parte estructural mediante diagramas de clases y la parte dinámica mediante

diagramas de secuencia para después de la tercera semana diseñar y desarrollar

el software simultáneamente hasta la quinta semana, obteniendo una versión

preliminar que permite realizar una conexión, así como el envío y recepción de

datos, la cual se verifica mediante el envío de un paquete en un formato de

intercambio de datos, en esta misma semana se plantea la documentación de lo

realizado aportando referencias complementarias, se realiza la revisión y ajustes

necesarios para en la séptima semana planificar la siguiente iteración.

A partir de la octava semana se realiza la búsqueda de referencias que apoyen el

establecimiento de las características con las que debe contar la comunicación y el

modelo asociado para que se tenga el desempeño y flexibilidad adecuados, por lo

que se realizan los ajustes necesarios en el diseño y se plasman los cambios,

obteniendo como resultado en la semana diez un modelo flexible que permite

37

ampliar las posibilidades de mensajes y presentando una estructura de bajo

acoplamiento en ambos lados de la comunicación.

En la semana once el producto obtenido se verifica mediante el envío de diferentes

tipos de mensajes en el formato de intercambio de datos y el planteamiento de

algunos escenarios que pongan a prueba la flexibilidad, todo lo realizado se

documenta, revisa y ajusta entre la semana once a trece para posteriormente

planear la siguiente iteración.

En la semana catorce se realizan consultas en libros referentes a simulación y al

encaminamiento en redes de comunicaciones con el fin de contar con conceptos

base que den lugar a consultas más específicas que permitan aplicar el método

deductivo para definir los requisitos y necesidades con los que debe contar el

simulador del algoritmo de encaminamiento. Además, se realiza el análisis inductivo

a las herramientas de simulación de redes de comunicaciones existentes con el fin

de generalizar el funcionamiento y características que se añaden a las ya definidas.

Para la semana diecisiete mediante diagrama de estructura y diagrama de

comportamiento se establece el modelo software que representa todo el contexto

de la simulación de una red de comunicaciones con un protocolo de

encaminamiento, así como las abstracciones de los elementos necesarios para el

desencadenamiento de acciones, codificación y decodificación de mensajes en el

formato seleccionado que son útiles en otros contextos de simulación. Se desarrolla

el subsistema servidor encargado de la simulación y de realizar los cálculos

necesarios permitiendo el intercambio del componente de simulación mediante

interfaces siendo capaz de desencadenar acciones por solicitud y enviar el estado

de la simulación cada que éste cambie.

Se realiza verificación del servidor mediante la propuesta de un escenario de una o

varias redes de comunicaciones a simular y el envío de paquetes entre

encaminadores, se realizan los ajustes necesarios complementando el marco

referencial y se planifica la siguiente iteración.

38

A partir de la semana veinte mediante análisis inductivo de herramientas de

simulación existentes con requisitos de alta interactividad se determinan los

elementos, servicios y funcionalidades con las que debe contar el prototipo software

aquí desarrollado para que sea útil en varios contextos donde la necesidad de

interacción es alta. Por otro lado, haciendo uso del método deductivo y teniendo

como base características generales de la simulación y software de simulación se

establecen los elementos visuales necesarios para el correcto uso de la aplicación.

En la semana veintidós se obtiene como resultado el diseño del cliente de

interactividad descrito mediante bocetos de interfaz gráfica y representaciones

mediante diagrama de clases para plasmarlos en el prototipo software, el cual se

revisa, ajusta con su respectiva documentación hasta la semana veinticinco en la

cual ya se tiene todo el prototipo software de interacción remota con funcionalidades

establecidas completas y listo para una demostración, además de los resultados

referentes a la flexibilidad con la que cuenta y la respuesta a altas necesidades de

interacción e interactividad.

39

8 ESPECIFICACIONES DE SOFTWARE DE

INTERACCIÓN REMOTA

En este capítulo se mencionan algunas herramientas de simulación de redes de

comunicaciones de las cuales se extraen características de interactividad, para

definir cuáles son las más relevantes y cuáles serán incluidas en la versión de este

proyecto, se plantean los requisitos de interacción entre el cliente y el servidor y los

requisitos que debe tener el modelo de software, finalmente se presentan los

requerimientos funcionales y no funcionales del sistema y el diagrama de casos de

uso.

8.1 Herramientas de simulación

En los siguientes apartados se identifican las principales características de las

herramientas de simulación de mayor utilización en la industria de

telecomunicaciones y de apoyo a la enseñanza.

8.1.1 Packet tracer

Es una herramienta gratuita de simulación creada por Cisco enfocada al aprendizaje

y desarrollada para los estudiantes de Networking Academy (Cisco, 2018), en la

Figura 2 se observa su interfaz gráfica.

40

Figura 2. Interfaz gráfica de Packet tracer

Fuente: (filehorse, 2016)

Dentro de sus principales características se encuentran:

• Capacidad de modificar el entorno gráfico ampliando la vista o cambiando el

tamaño de paneles

• Capacidad de prestar ayuda al usuario

• Control sobre variables generales de la simulación como la velocidad,

cambiando entre tiempo real y secuencial

• Conjunto de elementos y/o dispositivos para ubicar en el entorno de

simulación

• Herramientas para la modificación y manipulación del entorno como la de

eliminación, selección o envío de PDU

• Mecanismo para la modificación y visualización de propiedades de los

elementos de simulación ya sea mediante consola acorde a cada dispositivo

o apoyo gráfico

41

8.1.2 GNS3

Simulador de redes de código abierto multiplataforma que utiliza máquinas virtuales

con los sistemas operativos de diferentes dispositivos de red (gns3, 2018), en la

Figura 3 se observa su interfaz gráfica.

Figura 3. Interfaz gráfica de GNS3

Fuente: (brianlinkletter, 2015)

Sus características principales se listan a continuación:

• Capacidad de modificar el entorno gráfico mediante herramientas de

ampliación de la vista del entorno gráfico

• Visualización de eventos del software mediante consola

• Capacidad de prestar ayuda al usuario

• Control sobre variables generales de la simulación mediante herramientas de

inicio, pausa, reanudación o reinicio de la simulación

• Conjunto de elementos y/o dispositivos para ubicar en el entorno de

simulación

• Herramientas para la modificación y manipulación del entorno como la de

selección de elementos

42

• Mecanismo para la modificación y visualización de propiedades de los

elementos de simulación ya sea mediante consola o por interfaz gráfica

8.1.3 NetSim

Plataforma de simulación de sistemas de hardware y software de redes Cisco

diseñado para el aprendizaje usando comandos de estructura de sistemas

operativos Cisco (boson, 2016), en la Figura 4 se observa su interfaz gráfica.

Figura 4. Interfaz gráfica de NetSim

Fuente: (boson, 2016)

Entre las características a resaltar están:

• Capacidad de modificar el entorno gráfico ampliando o disminuyendo la

visualización del entorno o cambiando el tamaño y posición de los paneles

• Capacidad de prestar ayuda al usuario

• Control sobre variables generales de la simulación mediante herramientas de

inicio y detención de la simulación

• Conjunto de elementos y/o dispositivos para ubicar en el entorno de

simulación

43

• Mecanismo para la modificación y visualización de propiedades de los

elementos de simulación mediante consola que simula el Sistema Operativo

de los dispositivos

8.2 Requisitos de interactividad

Las características comunes de las herramientas y que se toman como requisitos

de interactividad para el software que aquí se describe se listan a continuación:

• Capacidad de modificar el entorno gráfico

• Capacidad de prestar ayuda al usuario

• Control sobre variables generales de la simulación

• Conjunto de elementos y/o dispositivos para ubicar en el entorno de

simulación

• Herramientas para la modificación y manipulación del entorno

• Mecanismo para la modificación y visualización de propiedades de los

elementos de simulación

Adicionalmente, teniendo en cuenta que una de las ventajas del software en

ambiente Web es la capacidad de acceder a él desde diferentes lugares, es

importante que el software se adapte a diferentes dispositivos, con diferentes

tamaños de pantallas, asegurando de esta manera la ubicuidad.

8.3 Requisitos de interacción cliente-servidor

En la Tabla 1 se presentan los requisitos de interacción entre cliente y servidor y el

problema que soluciona cada requisito.

44

Tabla 1. Requisitos de interacción cliente-servidor

Problema Requisito solución

Saturación del canal por constante envío del estado del modelo de simulación a la vista

Enviar mensajes únicamente cuando se presenta un cambio

Pérdida de mensajes La comunicación debe ser confirmada

Recepción por parte del cliente de actualizaciones del modelo de simulación de forma desordenada

Los mensajes deben contar con identificadores secuenciales

Inconsistencias en el modelo de simulación con respecto al cliente o visualización con pausas y pérdida de secuencia del movimiento en la vista por demora en los mensajes

El tiempo envío de las actualizaciones debe ser muy corto o en “tiempo real” contando con un canal de comunicación con ancho de banda dedicado y bajos periodos de latencia

El servidor debe ser capaz de enviar actualizaciones del modelo al cliente y el cliente de solicitar cambios del modelo al servidor

Canal de comunicación bidireccional

Fuente: El autor

8.4 Requisitos del modelo software

En la Tabla 2 se presentan los requisitos con los que debe cumplir el modelo de

software y el problema que cada requisito soluciona.

Tabla 2. Requisitos del modelo software

Problema Requisito solución

Falta de interacción en términos de modificación del modelo de simulación mediante la recepción de peticiones por parte del cliente

Acciones por solicitud en ambos lados de la comunicación

Incapacidad de modificar o ampliar funcionalidades del sistema en ambos lados de la comunicación

Capacidad de ampliar la lista de solicitudes disponibles tanto en el servidor como en el cliente

Incapacidad de realizar modificaciones o ampliaciones al modelo de simulación sin que los cambios impacten en el resto del sistema

Independencia entre la conexión y el modelo de simulación presente en el servidor

Incapacidad de cambiar la vista o partes de ella sin que los cambios impacten en el resto del sistema

Independencia entre la conexión y la vista presente en el cliente

Fuente: El autor

45

8.5 Requerimientos

En la Tabla 3 se presentan los requerimientos para el software de simulación aquí

descrito con su respectiva categoría (funcional o no funcional).

Tabla 3. Requerimientos del software de simulación

Requerimiento Categoría

Modificar el entorno gráfico Funcional

Prestar ayuda al usuario mediante manuales y tutoriales Funcional

Controlar variables de simulación Funcional

Ubicar dispositivos y/o elementos en el entorno de simulación Funcional

Remover dispositivos y/o elementos en el entorno de simulación Funcional

Modificar propiedades de dispositivos y/o elementos que se encuentren en el entorno de simulación

Funcional

Modificar el entorno de simulación Funcional

Las respuestas a los eventos generados por el usuario deben ser en “tiempo real”

No funcional

Representación sencilla de dispositivos como encaminadores, concentradores, conmutadores o computadores que permita diferenciarlos

No funcional

Fuente: El autor

8.6 Diagrama de casos de uso

En la Figura 5 se presenta el diagrama de casos de uso para el software, se cuenta

con la posibilidad de modificar el entorno gráfico, solicitar ayuda, iniciar la

simulación, pausar la simulación, reanudar la simulación, cambiar su velocidad,

agregar un dispositivo, conectar el dispositivo con otro, enviar un Ping entre dos

dispositivos, modificar un dispositivo ya creado y eliminar un dispositivo del

ambiente de simulación.

46

Figura 5. Diagrama de casos de uso

Fuente: El autor

47

9 INTERCONEXIÓN

Este capítulo describe las técnicas de comunicación y el modelo necesario para dar

respuesta a las necesidades de software de interacción remota.

9.1 Comparación de técnicas de comunicación

Para que la comunicación cumpla con las características definidas en el capítulo 8,

se realiza la selección del protocolo, la comparación y selección de la técnica de

comunicación a utilizar y la codificación que se usa para el envío y recepción de los

datos.

9.1.1 Multimedia interactiva

Cuando se refiere a objetos multimedia se habla de elementos de texto, audio,

imagen y vídeo (Real Academia Española, 2017), la interactividad está referida a la

capacidad que tiene el usuario de interactuar con el sistema, para hacer cambios

obteniendo resultados multimediales diferentes dependiendo las acciones que se

realicen, una posibilidad para mantener alta interactividad en escenarios multimedia

como la simulación es transmitir imágenes y audio constantemente con la

representación del modelo de simulación y que el cliente realice el manejo de

captura de eventos, la desventaja es que el consumo de red es considerable puesto

que se está transmitiendo constantemente grandes volúmenes de datos, por lo que

se propone el envío únicamente de los cambios ocurridos en el servidor, notificados

mediante algún tipo de codificación de datos para que el cliente haga uso de los

elementos multimediales con los que cuenta o que solicita una única vez al servidor,

de esta manera el volumen de los datos transmitidos se reduce significativamente y

sólo es necesario transmitir datos codificados de tamaño pequeño comparado con

la trasmisión de imágenes y audio.

9.1.2 Protocolo de red

TCP IP es el conjunto de protocolos más usado en la actualidad capaz de transmitir

datos entre cualquier conjunto de redes interconectadas (Comer, 2000), cuenta con

comunicación confirmada y llegada de paquetes secuenciales, características

48

contempladas dentro de las necesidades de interacción, por lo que es seleccionado

para el desarrollo del software.

9.1.3 Técnica de comunicación

En la Tabla 4 se presenta la comparación de las técnicas de comunicación

contempladas para ser aplicadas al software de interacción remota, éste es el

resultado de la recopilación de documentos que comparan las técnicas de

comunicación (James, 2018), (PubNub, 2015), (Oracle, 2015), (Kemmerling, 2013).

Tabla 4. Comparación de técnicas de comunicación

Característica AJAX XMLHttpRequest Socket WebSocket

Dirección de la comunicación

Unidireccional (respuesta del servidor por petición del cliente)

Unidireccional (respuesta del servidor por petición del cliente)

Bidireccional Bidireccional

Sincronía de la comunicación

Asíncrona Asíncrona Asíncrona Asíncrona

Tiempo de espera en el establecimiento de la conexión

Medio Medio Alto Alto

Tiempo de espera por solicitud

Medio Medio Bajo Bajo

Protocolo de comunicación utilizado

Http o Https Http o Https No especificado

Http o Https

Puerto de comunicación

80 o 443 80 o 443 No especificado

80 o 443

Fuente: El autor

Teniendo en cuenta las ventajas con respecto a las demás tecnologías y la

respuesta que da a las necesidades de software de interacción remota, se

selecciona WebSocket para el desarrollo del software.

9.1.4 Codificación de la comunicación

Para cumplir con la necesidad de enviar datos de manera estructurada y agrupados

por objetos se requiere de un lenguaje de representación de datos independiente

de la plataforma, por lo que es inevitable mencionar a XML, puesto que es un

lenguaje de marcado diseñado para almacenar y transportar datos (World Wide

49

Web Consortium, 2016), sin embargo además de contar con independencia de la

plataforma es indispensable dar respuesta a la necesidad de velocidad en la

transferencia de los datos, XML tiene la desventaja de contener grandes volúmenes

de encabezados por ser un lenguaje de marcado, entonces, se plantea la utilización

de JSON, una alternativa ligera para el intercambio de datos, completamente

independiente del lenguaje de programación y de la plataforma.

9.2 Modelo Software

Teniendo la posibilidad de enviar y recibir objetos compuestos mediante la

codificación y decodificación de éstos, es posible proponer un modelo de interacción

haciendo uso del patrón comando, ya que permite encapsular acciones en objetos

y enviarlos para que el comando correspondiente se ejecute del otro lado de la

conexión. El patrón comando que se debe encontrar en ambos lados de la

comunicación que permite la interacción remota se encuentra ilustrado mediante el

diagrama de clases de la Figura 6 donde se observa un comando abstracto con un

conjunto de parámetros y el método de ejecución, comandos concretos que

representan las acciones que se pueden ejecutar en ambiente local (es decir los

comandos que fueron enviados desde el otro lado de la conexión para ser recibidos,

decodificados y ejecutados) y un comando remoto el cual permite especificar el tipo

de comando que será encontrado al otro lado de la comunicación y que al ser

ejecutado se envía a sí mismo mediante su receptor (la conexión) para ser

ejecutado del otro lado.

50

Figura 6. Patrón comando para interacción remota

Fuente: El autor

Antes de tener la posibilidad de enviar comandos entre cliente y servidor se debe

establecer un mecanismo para conocer las equivalencias entre los objetos visuales

del cliente y los del servidor, puesto que éstos serán los parámetros de los

comandos. Se propone entonces la creación de una clase con la responsabilidad

de conocer las equivalencias entre el cliente y el servidor, teniendo en cuenta que

el mecanismo solo es necesario en uno de ambos lados de la comunicación, se

propone que las equivalencias se encuentren en el servidor. En la Figura 7 se

encuentra la clase propuesta, la cual contiene las equivalencias entre los objetos

alojados en el servidor sus correspondientes identificadores de las representaciones

visuales, es posible agregar una equivalencia, obtener un objeto del servidor a partir

del identificador de un objeto del cliente u obtener un identificador de un objeto del

cliente a partir de un objeto del servidor.

51

Figura 7. Clase Intermediador

Fuente: El autor

El modelo de interacción remota que permite cumplir con las especificaciones del

capítulo 8 y que además aborda directamente el problema planteado en este

documento se presenta en la Figura 8; allí se observa la clase fundamental

“ConexionWebSocket”, de la cual hereda “ConexionWebSocketServidor” y

“ConexionWebSocketCliente”, necesarias para la comunicación entre cliente y

servidor, al realizar la conexión se necesita que esté compuesta por un codificador

y un decodificador de comandos. El CodificadorComandos se encarga de codificar

comandos remotos para que sean enviados en formato JSON, mientras que el

decodificador recibe comandos en formato JSON y genera los comandos para ser

ejecutados sobre el receptor correspondiente. Se observa además que la clase

“ConexionWebSocketServidor” se compone de un Intermediador, el cual puede ser

el receptor de los comandos.

52

Figura 8. Diagrama de clases de modelo de interacción remota

Fuente: El autor

La forma de establecer la conexión entre cliente y servidor se puede apreciar en el

diagrama de secuencia de la Figura 9 donde se observa que es necesario que el

cliente cree un objeto de clase “ConexionWebSocket”, el cual solicita la creación de

su homólogo en el servidor, después de que éste es creado, el cliente envía la

53

sesión de la conexión y el método conectar es llamado en ambos lados de la

comunicación.

Figura 9. Diagrama de secuencia del establecimiento de la conexión

Fuente: El autor

Ya que es posible enviar comandos de manera bidireccional, a continuación, se

describen la forma de enviar un comando desde el cliente hacia el servidor y desde

el servidor hacia el cliente.

9.2.1 Envío del cliente al servidor

Es posible ilustrar el envío de un comando desde el cliente hacia el servidor

mediante el diagrama de secuencia de la Figura 10 y Figura 11.

En la Figura 10 se observa que una entidad del lado del cliente crea un comando

remoto, en este caso llamado “ComandoConcreto1”, adicionalmente agrega los

parámetros (param1 y param2), para finalmente ejecutar el comando, pasando

como parámetro la “conexiónCliente”, al ser ejecutado el comando hace uso de la

conexión para el envío, la conexión hace uso del codificador de comandos para

obtener el comando en formato JSON y pasarlo a la “conexiónServidor” mediante el

método “recibir”.

54

Figura 10. Envío de comando desde el cliente hacia el servidor

Fuente: El autor

Como se observa en la Figura 11, una vez el comando es recibido por la

“conexionServidor”, el decodificador se encarga de generar el comando, el cual es

usado por la conexión mediante el método ejecutar pasando como parámetro el

receptor “intermediador”, lo que permite que el comando obtenga los objetos

alojados en el servidor para ser modificados, en este caso de obtiene el objeto

“objetoServidor”, mediante el identificador “param1”.

55

Figura 11. Envío de comando desde el cliente hacia el servidor (Continuación)

Fuente: El autor

9.2.2 Envío del servidor al cliente

El envío de un comando desde el servidor hacia el cliente se ilustra mediante el

diagrama de secuencia de la Figura 12 y Figura 13.

En la Figura 12 se observa que un objeto perteneciente al servidor crea el comando

remoto, mediante el método “getIdObjCliente” obtiene el id de un objeto

perteneciente al cliente pasando como parámetro el objeto del servidor, además se

agregan otro parámetro llamado “param2”, se ejecuta el comando el cual se envía

a la “conexionServidor”, objeto encargado de entregar el comando al codificador

para que sea transformado a formato JSON y enviarlo al cliente.

56

Figura 12. Envío de comando desde el servidor hacia el cliente

Fuente: El autor

En la Figura 13 se observa que una vez que el objeto “conexionCliente” recibe el

comando en formato JSON, éste es decodificado, obteniendo un comando el cual

es ejecutado pasando como parámetro el objeto receptor “vista”, al cual se le envían

los parámetros mediante el método “mostrar” para que el cambio se evidencie en la

interfaz de usuario.

57

Figura 13. Envío de comando desde el servidor hacia el cliente (Continuación)

Fuente: El autor

58

10 SUBSISTEMA SERVIDOR

En este capítulo se presenta el modelo que se encuentra en el servidor y la conexión

que éste realiza para enviar y recibir comandos, además de la descripción de la

tecnología utilizada para el desarrollo.

10.1 Simulador

Se presenta el modelo de redes de comunicaciones necesario para simular el

encaminamiento y el mecanismo utilizado para capturar los eventos generados por

el simulador.

10.1.1 Simulador de redes de comunicaciones

Una red es básicamente un conjunto de dispositivos llamados nodos conectados

entre sí (Stallings, 2004), por lo que para simularla es necesario tener en cuenta los

elementos que se identifican en la Figura 14: los nodos o dispositivos de red, las

interfaces o puertos mediante las cuales se conectan, el canal de comunicación o

conexión y los datos que intercambian, que en este documento son llamados PDU

(por sus siglas en inglés: Unidad de protocolos de datos).

Figura 14. Conexión entre dos dispositivos de red

Fuente: El autor

El modelo de clases de la Figura 15 representa la lógica de funcionamiento de una

red de comunicaciones, existe un conjunto de dispositivos que cuentan con

interfaces a las cuales es posible asignar una conexión mediante la cual se envían

las PDUs de dispositivo a dispositivo.

59

Nótese que además del modelo fundamental, se encuentra la clase

“SimuladorRedes”, la cual funciona como una fachada con el fin de facilitar el

manejo del simulador a los clientes que de otro modo requerirían mayor

conocimiento del modelo de simulación.

Figura 15. Modelo de simulación

Fuente: El autor

En la Figura 16 se encuentran modelados los dispositivos a simular: encaminador o

router, computador, conmutador o switch y concentrador o hub, se propone además

la interfaz “RemitentePdu” que representa la capacidad de un dispositivo de crear y

remitir una PDU con direcciones IP origen y destino, esta interfaz es implementada

por el encaminador y el computador ya que los demás dispositivos no cuentan con

60

una dirección IP. El encaminador es capaz de enrutar paquetes mediante diferentes

algoritmos, por lo que se hace uso del patrón estrategia el cual cuenta con una

estrategia abstracta (Encaminamiento) y algunas concretas como RIP (Routing

Information Protocol). El computador por su parte puede tener variedad de

“aplicaciones instaladas” donde cada una procesa una PDU de forma diferente, por

lo que también se hace uso del patrón estrategia, en este caso la aplicación del

computador es la estrategia abstracta y la concreta la aplicación Ping, la cual toma

la PDU y la reenvía al dispositivo que generó el paquete o cambia el estado de la

PDU a exitoso si ésta llega al dispositivo que la creo.

61

Figura 16. Modelo de simulación de dispositivos de red

Fuente: El autor

En el diagrama de secuencia presentado en la Figura 17 se observa el paso de una

PDU desde un dispositivo de red remitente hacia otro dispositivo de red, el cual

62

cambia el estado de la PDU a exitoso, pasando por las interfaces de ambos

dispositivos y por la conexión que los comunica.

El cliente que realiza la simulación crea una PDU y la transmite a un dispositivo

remitente, éste la pasa a su interfaz que mediante una llamada asíncrona la envía

a la conexión que a su vez la pasa a la interfaz del segundo dispositivo la cual hace

la entrega para que la PDU sea procesada.

Figura 17. Envío de una PDU

Fuente: El autor

Es importante notar que cuando se envía una PDU desde la interfaz hacia la

conexión el paso del mensaje es asíncrono, puesto que la interfaz hace uso de un

hilo con el fin de no bloquear el funcionamiento del dispositivo simulado en el

momento de renviar un paquete por todos los puertos como se observa en la Figura

18 , esto es más común en concentradores o repetidores (dispositivos encargados

de renviar un paquete entrante a todos los dispositivos conectados).

63

Figura 18. Renvío de un paquete por múltiples puertos

Fuente: El autor

10.1.2 Captura de eventos

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

que recibe la actualización del cambio ocurrido en el simulador.

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

Fuente: El autor

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

11.3 Tecnologías aplicadas

Para la creación de la interfaz gráfica de usuario se hizo uso de HTML5 (World Wide

Web Consortium, 2014) en conjunto con el framework más popular para el

desarrollo de interfaces Web responsivas BootStrap (Bootstrap, 2015), para la

captura de eventos, algunos elementos dinámicos de la interfaz y la conexión

WebSocket se usó JavaScript (w3schools, 2017), finalmente para la visualización

de elementos de simulación y su animación, fue necesario la utilización de la suite

de librerías CreateJs (CreateJs, 2018), facilitando la interactividad y visualización

en el entorno de simulación y todos sus elementos.

74

12 MODELO DE DESPLIEGUE

Este capítulo describe la forma de desplegar el software, incluyendo los

componentes, los nodos necesarios para el funcionamiento del sistema y la forma

de desplegar cada uno de los componentes en los nodos correspondientes.

12.1 Componentes

El software dividido en componentes cuenta con la ventaja de ser flexible a cambios

adicionando o cambiando con facilidad cualquier componente, los componentes que

se requieren desplegar para el funcionamiento del sistema se presentan en la Figura

28, allí se observa el componente “SimuladorRedesAmbienteWeb”, el cual hace uso

de las interfaces “ConexionWebSocket”, “Comando” y “ComandoRemoto” del

componente de interacción remota, el cual agrupa sus interfaces en dos puertos:

“conexión” y “comandos”, el componente de simulación perteneciente al cliente

“SimuladorRedesCliente” cuenta con un componente interno de visualización Web,

el cual hace uso de la interfaz “Stage” perteneciente al componente “CreateJs”, por

otro lado el componente de simulación perteneciente al servidor

“SimuladorRedesWebServidor” hace uso del simulador de redes (que contiene toda

la lógica de simulación de redes de comunicaciones), y este a su vez utiliza las

interfaces “Observado” y “Observador” provistas por el componente “Observador”

que contiene las clases abstractas del patrón Observador, el intermediador presente

en el componente de interacción remota del servidor es usado por el componente

“SimuladorRedesWebServidor” para obtener las equivalencias de objetos del

servidor mediante identificadores de objetos del cliente y viceversa.

75

Figura 28. Diagrama de componentes

Fuente: El autor

12.2 Nodos

Los nodos necesarios para el despliegue se observan en la Figura 29, entre ellos

se encuentra el servidor, el cual debe contar con altas capacidades de

procesamiento y memoria con el fin de prestar el servicio de simulación a uno o más

nodos cliente, los cuales requieren únicamente de alta capacidad de procesamiento

de imágenes y visualización, así como interactividad en lo que respecta a captura

de eventos y memoria suficiente para guardar los objetos e identificadores que se

visualizan, pero no requiere de altas capacidades de procesamiento, puesto que la

simulación es realizada por el servidor. El canal de comunicación entre ambos

nodos funciona mediante TCP/IP, debe ser lo suficientemente rápido y

descongestionado para soportar constante envío de comandos, sin embargo, el

76

coste para el canal de comunicación se minimiza mediante el paso de objetos

codificados en un formato ligero como lo es JSON.

Figura 29. Diagrama de nodos

Fuente: El autor

12.3 Despliegue

En la Figura 30 se muestran los nodos necesarios para el despliegue, donde se

observa el nodo servidor, que debe contar con un servidor Web, en este caso se

hace uso de GlassFish, allí se aloja el componente de simulación Web y todas sus

dependencias (componentes de interacción remota, de simulación de redes y patrón

observador), por otro lado el cliente, que debe contar con un navegador Web, en el

cual se encontrará el componente de simulación con todas sus dependencias

(componentes de visualización web y de animación, en este caso CreateJs).

Figura 30. Diagrama de despliegue

Fuente: El autor

77

13 PRUEBAS DE SUBSISTEMAS E INTEGRACIÓN

Este capítulo presenta las pruebas que, realizadas a cada uno de los subsistemas,

así como una prueba que los integra todos, comprobando que el software funciona

correctamente cuando se hace uso normal de este.

13.1 Conexión

Para la conexión es importante comprobar el funcionamiento de dos aspectos

fundamentales, el primero, que la conexión se establezca de manera exitosa y el

segundo, que sea posible enviar y recibir datos en ambos lados de la comunicación.

Para comprobar que la conexión esté funcionando se hace la impresión de un

mensaje indicando que la conexión se estableció exitosamente tanto en el cliente

como en el servidor, mientras que para comprobar el envío y recepción se imprime

en ambos lados de la conexión el mensaje enviado y el recibido. En la Figura 31 se

presentan impresiones en consola realizadas por el servidor que verifican el

establecimiento de la conexión y posterior envío y recepción de mensajes de

prueba.

Figura 31. Verificación de funcionamiento de la conexión en el servidor

Fuente: El autor

En la Figura 32 se presentan los mensajes impresos por el cliente que comprueban

el correcto establecimiento de la conexión, así como posterior recepción y envío de

mensajes de prueba.

78

Figura 32. Verificación del funcionamiento de la conexión en el cliente

Fuente: El autor

13.2 Servidor

En primer lugar, es necesario probar el modelo de simulación mediante la captura

de los eventos que éste genera, por lo que se hace uso de la fábrica de

observadores “Txt”, la cual permite obtener observadores capaces de imprimir por

consola todos los eventos generados en la simulación. La comprobación se realiza

simulando la red presentada en la Figura 33 compuesta por un concentrador el cual

tiene conectados dos computadores que se envían un ping del uno al otro.

Figura 33. Red de prueba del modelo de simulación

Fuente: El autor

En la Figura 34 se encuentra el código correspondiente a esta prueba, donde se

crea un simulador de redes con la fábrica de observadores correspondiente

(“FabricaObservadoresTxt”), se generan, configuran y conectan los dispositivos,

para finalmente remitir el ping.

79

Figura 34. Código de prueba del modelo de simulación

Fuente: El autor

Los resultados de la comprobación de funcionamiento del modelo de simulación se

encuentran en la Figura 35, donde se presentan todos los eventos capturados por

los observadores que fueron impresos en la consola los cuales corresponden con

la prueba realizada en el código de la Figura 34, pasando desde la creación y

configuración de los dispositivos hasta el envío y recepción exitosa de la PDU,

comprobando de esta manera el correcto funcionamiento del modelo de simulación.

//Creación simulador

SimuladorRedes sim = new SimuladorRedes(new FabricaObservadoresTxt());

//Creación pc1

Computador pc1 = sim.crearComputador();

pc1.setIp(new IPAddress(192,168,0,2));

pc1.setMascaraSubred(new IPAddress(255,255,255,0));

pc1.setGateway(new IPAddress(192,168,0,1));

//Creación pc2

Computador pc2 = sim.crearComputador();

pc2.setIp(new IPAddress(192,168,0,3));

pc2.setMascaraSubred(new IPAddress(255,255,255,0));

pc2.setGateway(new IPAddress(192,168,0,1));

//Creación Hub

Concentrador hub = sim.crearConcentrador();

//Iterador de interfaces

Iterator<Interfaz> itr = hub.getInterfaces().values().iterator();

//Creación de conexión1

sim.conectar(pc1.getInterfaces().values().iterator().next(),

itr.next());

//Creación de conexión2

sim.conectar(pc2.getInterfaces().values().iterator().next(),

itr.next());

//Creación de PDU

sim.remitirPing(pc1, pc2);

80

Figura 35. Resultado de la prueba al modelo de simulación

Fuente: El autor

Se creó Computador1: |IP null|Mascara null|Gateway null|Aplicaciones Ping,|Interfaces Ethernet, La nueva IP de Computador1 es 192.168.0.2 La nueva Mascara de subred de Computador1 es 255.255.255.0 El nuevo gateway de Computador1 es 192.168.0.1 Se creó Computador2: |IP null|Mascara null|Gateway null|Aplicaciones Ping,|Interfaces Ethernet, La nueva IP de Computador2 es 192.168.0.3 La nueva Mascara de subred de Computador2 es 255.255.255.0 El nuevo gateway de Computador2 es 192.168.0.1 Se creó Concentrador1: |Interfaces puerto2,puerto1,puerto4,puerto3,puerto5, Se conectó Computador1 (mediante Ethernet) con Concentrador1(mediante puerto2) Se conectó Computador2 (mediante Ethernet) con Concentrador1(mediante puerto1) Se creó el PDU edu.udistrital.simuladorRedes.PDU@7b23ec81: |Id 1|Aplicacion Ping|ipOrigen 192.168.0.2|ipDestino 192.168.0.3|ttl 0|tos 0|estado 0 Envio de PDU edu.udistrital.simuladorRedes.PDU@7b23ec81: Desde: Computador1(mediante Ethernet) Hacia: Concentrador1(mediante puerto2) Se creó el PDU edu.udistrital.simuladorRedes.PDU@70c0dfc5: |Id 1|Aplicacion Ping|ipOrigen 192.168.0.2|ipDestino 192.168.0.3|ttl 0|tos 0|estado 0 Envio de PDU edu.udistrital.simuladorRedes.PDU@70c0dfc5: Desde: Concentrador1(mediante puerto1) Hacia: Computador2(mediante Ethernet) El destino del PDU edu.udistrital.simuladorRedes.PDU@70c0dfc5(de id 1 ) cambió a: 192.168.0.2 Envio de PDU edu.udistrital.simuladorRedes.PDU@70c0dfc5: Desde: Computador2(mediante Ethernet) Hacia: Concentrador1(mediante puerto1) Se creó el PDU edu.udistrital.simuladorRedes.PDU@62bad930: |Id 1|Aplicacion Ping|ipOrigen 192.168.0.2|ipDestino 192.168.0.2|ttl 0|tos 0|estado 0 Envio de PDU edu.udistrital.simuladorRedes.PDU@62bad930: Desde: Concentrador1(mediante puerto2) Hacia: Computador1(mediante Ethernet) El estado del PDU edu.udistrital.simuladorRedes.PDU@62bad930(de id 1 ) cambió a: 1 (Exitoso)

81

13.3 Cliente

El cliente debe ser capaz de capturar eventos generados por el usuario, además de

mostrar objetos y animaciones correspondientes a los sucesos ocurridos en el

modelo de simulación.

La prueba que se realiza consiste en seleccionar un dispositivo y que, al dar clic

sobre el entorno de simulación éste aparezca, de esta manera se verifica que el

evento fue capturado exitosamente y que la interfaz gráfica es capaz de mostrar

objetos dentro del entorno de simulación.

Al realizar la prueba se seleccionan y ubican un dispositivo encaminador y un

dispositivo computador, dando como resultado los dos elementos gráficos que se

observan en la Figura 36, esto quiere decir que la interfaz gráfica es capaz de

capturar el clic realizado por el usuario y ubicar representaciones gráficas de objetos

en el entorno de simulación.

Figura 36. Prueba interfaz gráfica

Fuente: El autor

82

13.4 Integración

Realizar una prueba de integración es fundamental para evidenciar si el sistema

marcha correctamente cuando todas sus partes están funcionando, por lo que se

propone la comprobación del funcionamiento mediante el envío de un comando

desde el cliente hacia el servidor (desencadenado por un evento generado por el

usuario) y otro desde el servidor hacia el cliente (desencadenado por un evento

ocurrido en el modelo de simulación) imprimiendo en consola las acciones

realizadas en ambos nodos.

13.4.1 Cliente-Servidor

En primer lugar, una vez capturado el evento generado por el usuario, el cliente

codifica el comando en formato JSON y realiza el envío imprimiendo en consola los

mensajes que se aprecian en la Figura 37 evidenciando que el envío se realizó

correctamente.

Figura 37. Prueba de integración cliente-servidor en el cliente

Fuente: El autor

El servidor por su parte recibe el comando en formato JSON, lo decodifica

obteniendo un objeto Java para ser ejecutado e imprime un mensaje en consola por

cada una de las acciones realizadas como se aprecia en la Figura 38, comprobando

de esta manera que se recibió y ejecutó el comando correctamente.

Figura 38. Prueba de integración cliente-servidor en el servidor

Fuente: El autor

83

Habiendo comprobado el envío y recepción del comando desde el cliente al servidor

queda también en evidencia que el subsistema de la conexión está funcionando de

manera correcta.

13.4.2 Servidor-Cliente

También es posible realizar un envío desde el servidor hacia el cliente, en este caso

el encargado de codificar el comando (generado por el modelo de simulación) es el

servidor, que posteriormente realiza el envío imprimiendo en consola mensajes por

cada acción que realiza dando como resultado el texto de la Figura 39. Nótese que

en este caso el comando cuenta con parámetros que se codifican satisfactoriamente

en formato JSON.

Figura 39. Prueba de integración servidor-cliente en el servidor

Fuente: El autor

El cliente realiza la recepción, decodificación y ejecución del comando, imprimiendo

mensajes en consola por cada acción realizada y dando como resultado el texto de

la Figura 40 donde se evidencia la correcta recepción y ejecución del comando.

Figura 40. Prueba de integración cliente-servidor en el cliente

Fuente: El autor

Con la comprobación del envío y recepción de comandos de forma bidireccional es

posible concluir que el servidor, cliente y conexión funcionan correctamente de

forma conjunta.

84

14 CONCLUSIONES

El diseño de software por componentes aquí planteado proporciona la flexibilidad

necesaria al sistema para facilitar agregación o modificación de funcionalidades,

cambiar el modo de visualización, la forma de interactuar o variar el funcionamiento

del modelo de simulación sin necesidad de que estos cambios impacten sobre el

componente de interacción remota, por lo que la forma de conectar cliente y servidor

es independiente tanto de la vista como del modelo de simulación del servidor.

Adicionalmente, el mecanismo de captura de eventos generados por el modelo de

simulación mediante una fábrica de observadores permite agregar fácilmente

diferentes conjuntos de observadores los cuales pueden realizar múltiples acciones

según se requiera.

Las funcionalidades fundamentales para simular una red de comunicaciones como

ubicar dispositivos de red y conectarlos en el entorno de simulación, además de la

capacidad de enviar PDUs entre estos, fueron implementadas en el software, el cual

a diferencia de otros existentes permite el acceso de manera remota y desde

diferentes dispositivos ya que es responsivo, posibilitando la simulación en

dispositivos con bajos recursos computacionales.

Los mecanismos usados para la interacción entre cliente y servidor como el uso de

codificación mediante el formato de representación de datos JSON y el uso de

WebSocket para el establecimiento de una conexión bidireccional permiten contar

con software de altas capacidades interactivas, presentando al usuario elementos

multimediales con los que puede interactuar directamente y observar los resultados

de su interacción de manera inmediata.

Las comprobaciones de funcionalidad de los subsistemas son importantes puesto

que permiten comprobar por separado el correcto funcionamiento del modelo lógico

del servidor, la vista en el cliente y la conexión entre ambas partes, facilitando

también la comprobación del funcionamiento general del software, lo que se traduce

en mayor fiabilidad a la hora de utilizarlo.

85

Los planteamientos de diseño propuestos para esta solución relacionados con el

mecanismo mediante el cual se realiza la conexión cliente-servidor y la forma de

capturar los eventos del modelo lógico presente en el servidor se pueden usar en

todo software que tenga altas necesidades de interacción e interactividad,

especialmente en software de simulación que haga uso de multimedia interactiva.

86

15 REFERENCIAS

agario. (2017). agar.io terms. Recuperado el 10 de Agosto de 2017, de agar.io:

http://agar.io/terms.txt

Alonso, F., Martínez, L., & Segovia, J. (2005). Introducción a la ingeniería de

software. Madrid: Delta.

Bass, L., Kazman, R., & Paul, C. (1997). Software Architecture in Practice.

Bootstrap. (2015). Bootstrap. Recuperado el 5 de Febrero de 2018, de

https://getbootstrap.com/

boson. (2016). Netsim cisco network simulator. Recuperado el 5 de Febrero de

2018, de boston: http://www.boson.com/netsim-cisco-network-simulator

brianlinkletter. (22 de Julio de 2015). What’s new for Open-Source Routers.

Recuperado el 5 de Febrero de 2018, de brianlinkletter:

http://www.brianlinkletter.com/gns3-version-1-3-whats-new-for-open-source-

routers/

Briceño M, J. (2005). Transmisión de datos (Tercera ed.). Mérida: Departamento de

publicaciones Universidad de los Andes Facultad de Ingeniería. Recuperado

el 10 de Agosto de 2017, de http://www.serbi.ula.ve/serbiula/libros-

electronicos/Libros/trasmisiondedatos/pdf/librocompleto.pdf

Cabero, J. (2002). Educar en red: Internet como recurso para la educación. Málaga:

Ediciones Aljibe.

Cisco. (2018). Cisco. Recuperado el 5 de Febrero de 2018, de Packet Tracer

Download: https://www.netacad.com/es/courses/packet-tracer-download/

Cisco Systems Inc. (17 de Marzo de 2017). Enrutamiento: Conceptos

fundamentales. Recuperado el 11 de Agosto de 2017, de Cisco:

https://supportforums.cisco.com/t5/routing-y-switching-

documentos/enrutamiento-conceptos-fundamentales/ta-p/3166553

87

Comer, D. E. (2000). Internet Working With TCP/IP: Principles, Protocols, and

Architecture (Cuarta ed., Vol. I). West Lafayette: Prentice Hall. Recuperado

el 4 de Febrero de 2017, de

http://cpe.rmutt.ac.th/network/images/cn/[3]Comer_Douglas_Internetworking

_with_TCP_IP_Vol.1.pdf

CreateJs. (2018). CreateJs. Recuperado el 5 de Febrero de 2018, de

https://createjs.com/

Cross Bu, R. (1993). Simulación Un enfoque práctico. Ciudad de México: Limusa.

Recuperado el 10 de Agosto de 2017, de

https://books.google.com.co/books?id=iY6dI3E0FNUC&printsec=frontcover

&hl=es&source=gbs_ge_summary_r&cad=0#v=onepage&q&f=false

Diaz, D., Muñoz, L., Sirerol, D., Oviedo, S., & Ibañez, F. (2012). Software Industrial

Flexible. XIV Workshop de Investigadores en Ciencias de la Computación,

611-615. Recuperado el 4 de Agosto de 2017, de

http://sedici.unlp.edu.ar/bitstream/handle/10915/19090/Documento_complet

o.pdf?sequence=1

España B, M. C. (2003). Servicios avanzados de telecomunicación. Madrid: Diaz De

Santos. Recuperado el 11 de Agosto de 2017, de

https://books.google.es/books?id=yTSoYCiXYAAC&pg=PA7&lpg=PA7&dq=

retardo+de+telecomunicaci%C3%B3n&source=bl&ots=F3p-

XAatt5&sig=CcbyyLF9BSQ583T4hHtyEHZUOqk&hl=es&sa=X&ved=0ahUK

Ewjdtf2swt_PAhXKExoKHcfXAXIQ6AEIIjAB#v=onepage&q=retardo%20de

%20telecomunicaci%C3

filehorse. (22 de Julio de 2016). filehorse. Obtenido de Cisco Packet Tracer (32-bit):

https://www.filehorse.com/es/descargar-cisco-packet-tracer-32/

Fishman, G. S. (1978). Conceptos y Métodos en la Simulación Digital de Eventos

Discretos. Wiley.

88

Fuentes, J. M. (2009). Manual de Ajax Las entrañas de Ajax (Segunda ed.).

Recuperado el 11 de Agosto de 2017, de

http://www.uco.es/~lr1maalm/manualdeajax.pdf

Gamma, E., Helm, R., Ralph, J., & Vlissides, J. (2003). Patrones de diseño. Pearson.

gns3. (2018). gns3. Recuperado el 5 de Febrero de 2018, de The software that

empowers network professionals: https://www.gns3.com/

Humphrey, W. S. (Noviembre de 2000). The personal software process. Pittsburgh:

Garnegie Mellon. Recuperado el 4 de Agosto de 2017, de

http://www.sei.cmu.edu/reports/00tr022.pdf

IBM. (2017). IBM. Recuperado el 5 de Febrero de 2018, de How sockets work:

https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_71/rzab6/howdos

ockets.htm

Internet Engineering Task Force. (Diciembre de 2011). The WebSocket Protocol.

Recuperado el 5 de Febrero de 2018, de tools.ietf.org:

https://tools.ietf.org/html/rfc6455

James, A. (2018). AJAX vs WebSockets. Recuperado el 5 de Febrero de 2018, de

justbuildsomething: http://justbuildsomething.com/ajax-vs-websockets/

json. (2017). json. Recuperado el 10 de Agosto de 2017, de json:

http://www.json.org/

Kemmerling, S. (21 de Julio de 2013). Websocket vs regular sockets. Recuperado

el 5 de Febrero de 2018, de medium.com: https://medium.com/kifi-

engineering/websockets-vs-regular-sockets-b3b8e7ea0708

Microsoft. (2017). Remote Access Service. Recuperado el 11 de Agosto de 2017,

de Microsoft Developer Network: https://msdn.microsoft.com/en-

us/library/bb416461.aspx

Microsoft Studios. (2017). About Us. Recuperado el 10 de Agosto de 2017, de Age

of Empires: https://www.ageofempires.com/about/

89

Microsoft Studios. (2017). Halo 5: Guardians. Recuperado el 10 de Agosto de 2017,

de Microsoft: https://www.microsoft.com/es-co/store/p/halo-5-

guardians/brrc2bp0g9p0

Network Working Group. (Junio de 1999). Hypertext Transfer Protocol. Recuperado

el 11 de Agosto de 2017, de Internet Engineering Task Force:

http://www.ietf.org/rfc/rfc2616.txt

Oracle. (11 de Marzo de 2015). Websocket vs rest. Recuperado el 5 de Febrero de

2018, de Oracle: https://blogs.oracle.com/pavelbucek/websocket-vs-rest

Oracle. (2017). ¿Qué es Java? Recuperado el 5 de Febrero de 2018, de Java:

https://www.java.com/es/about/whatis_java.jsp

Pressman, R. S. (2005). Ingeniería de Software Un enfoque práctico (Sexta ed.).

McGraw Hill.

Pressman, R. S. (2010). Ingeniería de Software Un enfoque práctico (Séptima ed.).

McGraw Hill.

PubNub. (5 de Enero de 2015). Rest Vs WebSockets. Recuperado el 5 de Febrero

de 2017, de PubNub: https://www.pubnub.com/blog/2015-01-05-

websockets-vs-rest-api-understanding-the-difference/

Real Academia Española. (2017). Diccionario usual. Recuperado el 4 de Agosto de

2017, de Real Academia Española: http://dle.rae.es/

Sánchéz, M. C. (2004). Guía para la formulación de proyectos de investigación.

Bogotá: Alma mater Magisterio. Recuperado el 31 de Julio de 2017

Shannon E, R. (1976). Systems simulation : the art and science.

Stallings, W. (2004). Comunicaciones y redes de computadores (Séptima ed.).

Madrid: Pearson.

w3schools. (2017). JavaScript Tutorial. Recuperado el 4 de Agosto de 2017, de

w3schools.com: https://www.w3schools.com/js/

90

World Wide Web Consortium. (15 de Diciembre de 2004). Architecture of the World

Wide Web, Volume One. Recuperado el 4 de Agosto de 2017, de World Wide

Web Consortium: https://www.w3.org/TR/webarch/

World Wide Web Consortium. (28 de Octubre de 2014). HTML5. Recuperado el 4

de Agosto de 2017, de World Wide Web Consortium:

https://www.w3.org/TR/html5/

World Wide Web Consortium. (11 de Octubre de 2016). Extensible Markup

Language (XML). Recuperado el 10 de Agosto de 2017, de World Wide Web

Consortium: https://www.w3.org/XML/

World Wide Web Consortium. (6 de Octubre de 2016). XMLHttpRequest Level 1.

Recuperado el 11 de Agosto de 2017, de World Wide Web Consortium:

https://www.w3.org/TR/XMLHttpRequest/