Contenidos

A. Objetivos

  • Describir las técnicas de descripción formal utilizadas para especificar formalmente protocolos de comunicaciones y presentar sus ventajas en la ingeniería de protocolos.
  • Analizar las interfaces de programación más utilizadas en el entorno corporativo: Sockets de Berkeley, Windows Sockets, Sockets en Java, Sockets en Python y Sockets en Android.
  • Comprender las técnicas de implementación de aplicaciones distribuidas utilizando las diferentes interfaces de programación.
  • Estudiar el rendimiento de las implementaciones de software.

B. Contenidos

MÓDULO 1: ESPECIFICACIÓN, DISEÑO Y VERIFICACIÓN DE PROTOCOLOS

Las técnicas de descripción formal son la base del soporte automatizado en diferentes actividades de desarrollo. La especificación formal es una herramienta esencial en la ingeniería de protocolos de comunicaciones. Empleando las técnicas de descripción formal se pueden obtener mejoras significativas en la calidad del producto, tiempo de disponibilidad en el mercado y coste del ciclo de vida. La especificación formal permite verificar y validar protocolos de comunicaciones de manera eficiente como un paso previo al desarrollo del producto software. En este módulo se describen las metodologías existentes de especificación formal de protocolos como paso previo al desarrollo del producto software. Entre ellas una de las más utilizadas es el estandar SDL (Specification and Description Language,ITU Z.100).

MÓDULO 2: IMPLEMENTACIÓN DE PROTOCOLOS

 Los protocolos de comunicaciones se desarrollan, en general, en un entorno distribuido y en el marco del llamado  modelo Cliente-Servidor.  Las interfaces de programación (APIs, Aplication Programming Interfaces) para protocolos de comunicaciones proporcionan al usuario una serie de funciones o llamadas al Sistema Operativo con las que implementar las aplicaciones Cliente-Servidor.

El API es la interfaz que se le ofrece al programador. La disponibilidad del API depende tanto del sistema operativo usado como del lenguaje de programación. Las funciones de un API en protocolos de comunicaciones son variadas: reserva de recursos para la comunicación, especificación de los puntos de comunicación locales y remotos, iniciar una conexión (cliente), esperar una conexión (servidor), enviar y/o recibir datos, terminar una conexión, abortar la comunicación, manejo de errores, liberación de recursos etc.

 En este módulo se presentan las interfaces de programación (APIs) más difundidos para protocolos de comunicaciones. Estas son las interfaces Sockets de Berkeley para sistemas operativos Unix, la interfaz Windows Sockets para sistemas operativos Windows,, la interfaz sockets en Java multiplataforma,la interfaz de sockets en entornos Python (muy utilizada en entornos de Análisis de Datos) o la interfaz de sockets en entornos Android. En cada uno de los entornos se desarrollan aplicaciones distribuidas utilizando las funcionalidades proporcionades por cada interfaz.

C. Índice

1. Especificación, Diseño y Verificación de Protocolos

1.1        Niveles de descripción de una arquitectura estructurada
1.2        Desarrollo de Protocolos (Especificación formal, implementación. conformidad)
1.3        Metodologías de Especificación (SDL, Redes de Petri, Estelle, Lotos, Prolog)


2. Implementación de Protocolos

2.1        Computación Distribuida (Modelo cliente-Servidor Agentes Moviles, Peer-to-Peer)
2.2        Interfaces de Programación de Aplicaciones (API, Aplication Programming Interface) en Software de Comunicaciones

2.3        Diseño de aplicaciones con la Interfaz Sockets de Berkeley

2.3.1       Algoritmos de diseño Software Cliente
2.3.2       Implementación Software Cliente
2.3.3       Algoritmos de diseño Software Servidor
2.3.4       Implementación Software Servidor
2.3.5       Eficiencia y gestión de la concurrencia en servidores
2.3.6       Concurrencia en clientes

2.4        Diseño de aplicaciones con la Interfaz Windows Sockets

2.4.1        Comparación sockets de Berkeley
2.4.2        Desarrollo de aplicaciones

2.5        Diseño de aplicaciones con la Interfaz sockets en Java

2.6        Diseño de aplicaciones con sockets en Python

2.7        Diseño de aplicaciones con sockets en Android

2.8        Implementación de Servicios de Seguridad con OpenSSL