Última actualización: 29/04/2019


Curso Académico: 2019/2020

Sistemas Distribuidos
(15754)
Titulación: Doble Grado en Ingeniería Informática y Administración de Empresas (233)


Coordinador/a: GARCIA CARBALLEIRA, FELIX

Departamento asignado a la asignatura: Departamento de Informática

Tipo: Optativa
Créditos: 6.0 ECTS

Curso:
Cuatrimestre:




Materias que se recomienda haber superado
Sistemas Operativos Redes de ordenadores
Competencias que adquiere el estudiante y resultados del aprendizaje.Más información en este enlace
El objetivo de este curso es describir los principales conceptos necesarios para diseñar y desarrollar aplicaciones y sistemas distribuidos. 1. Competencias Genéricas: - Capacidad de análisis y síntesis (PO a, b, c, e) - Capacidad de organizar y planificar (PO c, d) - Resolución de problemas (PO a, b, c, g) - Capacidad de aplicar los conocimientos en la práctica (P a, c) 2. Competencias Específicas: a. Cognitivas (PO a,c e,j) - Conocer los conceptos básicos de un sistema distribuido - Conceer las principales plataformas hardware usadas en sistemas distribuidos - Conocer el concepto de middleware y los servicios que ofrece - Técnicas para desarrollar aplicaciones distribuidas - Sistemas de almacenamiento de un sistema distribuido. - Conocer las principales técnicas para desarrollar sistemas y aplicaciones tolerantes a fallos. - Conocimiento y aplicación de las características, funcionalidades y estructura de los Sistemas Distribuidos, las Redes de Computadores e Internet y diseñar e implementar aplicaciones basadas en ellas (CECRI11) - Capacidad de diseñar e implementar software de sistema y de comunicaciones (CEIC4) b. Procedimentales/Instrumentales (PO a, b, c, g, j, k) - Analizar, diseñar e implementar sistemas y aplicaciones distribuidas - Diseñar y desarrollar aplicaciones distribuidas utilizando servicios básicos de TCP/IP, RPC o servicios de plataformas middleware más sofisticadas. - Usar herramientas (lenguajes de programación y sistemas operativos) adecuados para la realización de sistemas y aplicaciones distribuidas. - Evaluar el rendimiento de una aplicación distribuida. - Investigar y buscar soluciones a nuevos problemas relacionados con sistemas distribuidos. c. Actitudinales (PO: c, e) - Creatividad - Actitud crítica respecto a los sistemas distribuidos - Motivación de logro - Interés por adquirit nuevos conocimientos
Descripción de contenidos: Programa
Los descriptores asociados con la asignatura son: Comunicación entre procesos; Middleware; RPC; almacenamiento distribuido; aplicaciones distribuidas; sincronización; tolerancia a fallos. Temario: 1. Introducción y conceptos básicos - Conceptos básicos - Redes e interconexión - Ventajas de los sistemas distribuidos - Paradigmas de computación distribuida - Diseño de sistemas distribuidos 2. Comunicación y sincronización entre procesos - Mecanismos de comunicación en sistemas de memoria compartida - Mecanismos de comunicación en sistemas de paso de mensajes - Servicios POSIX de comunicación y sincronización - Threads en Java 3. Paso de mensajes y aplicaciones cliente-servidor - Modelo de comunicación mediante paso de mensajes - Aspectos de diseño - Colas de mensajes POSIX - Aplicaciones cliente-servidor - Diseño de servidores concurrentes 4. Comunicación con sockets - Modelo de comunicación con sockets - API de sockets en POSIX - API de sockets en Java - Guía de diseño de aplicaciones cliente-servidor con sockets 5. Llamadas a procedimientos remotos - Funcionamiento de las RPC - Lenguaje de definición de interfaces - Aplanamiento y transferencia de mensajes - ONC-RPC - Invocación de métodos remotos en JAVA (RMI) 6. Servicios web - Protocolo HTTP - SOAP - Desarrollo de servicios web con JAX-WS - Desarrollo de servicios web con gSOAP 7. Servicios distribuidos - Servicio de nombres - Sincronización en sistemas distribuidos - Relojes físicos y lógicos - Exclusión mutua distribuida - Algoritmos de elección - Comunicación multicast 8. Sistemas de almacenamiento distribuidos - Estructura de un sistema de ficheros distribuido - Servicio de ficheros y directorios - Implementación de servicios de ficheros distribuidos - Ejemplo: NFS - Sistemas de ficheros de discos compartidos - Sistemas de ficheros paralelos - Redes de almacenamiento 9. Tolerancia a fallos en sistemas distribuidos - Conceptos básicos sobre tolerancia a fallos - Tolerancia a fallos software - Detectores de fallos - Replicación - Protocolos de consenso
Actividades formativas, metodología a utilizar y régimen de tutorías
1. Clases magistrales de teoría 1 ECTS (PO a, b, c, e, j) - Presentación de los conceptos teóricos sobre sistemas distribuidos - Para facilitar su desarrollo los alumnos tendrán textos básicos de referencia que les permitirán completar y profundizar en aquellos temas en los cuales estén más interesados. 2. Proyectos 1.5 ECTS (PO a, c, d, e, g, k) - Se desarrollarán varios proyectos durante el curso. Parte de los mismos se harán en laboratorios con apoyo del profesor. - Los estudiantes tienen que analizar los requisitos y ofrecer una solución correcta - Los proyectos se harán en grupos de 2 estudiantes para promover el trabajo en equipo 3. Resolución de ejercicios por parte del profesor 1 ECTS (PO a, c, e) - Solución de ejercicios en clase con participación de los alumnos 4. Trabajo del alumno 2 ECTS. (PO a, c, e, g, k) - Estudio para comprender los conceptos teóricos - Resolución de los ejercicios propuestos - Los estudiantes tienen que comprender y presentar en público los principales aspectos obtenidos del análisis de un artículo sencillo escrito en inglés 5. Exámenes 0.5 ECTS (PO a, c, e, g) - Examen parcial y final
Sistema de evaluación
  • Peso porcentual del Examen Final 25
  • Peso porcentual del resto de la evaluación 75
Bibliografía básica
  • G. Coulouris, J. Dollimore, T. Kindberg, G. Blair. Distributed Systems, Concepts and design. 5ª edition. 2011. Addison-Wesley.
Bibliografía complementaria
  • B. A. Forouzan. Transmisión de datos y redes de comunicaciones. Cuarta edición. McGraw Hill.
  • Distributed Systems: principles and paradigms. Andrew S. Tanenbaum , Maarten van Steen. Pearson.
  • F. García, J. Carretero, A. Calderón, J. Fernández, J. M. Pérez. Problemas resueltos de programación en C. Thomson.
  • Pankaj Jalote. Fault Tolerance in Distributed Systems. Prentice-Hall.
  • Richard Stevens. UNIX Network Programming. Prentice Hall.
Recursos electrónicosRecursos Electrónicos *
Contenido detallado de la asignatura o información adicional para TFM
(*) El acceso a algunos recursos electrónicos puede estar restringido a los miembros de la comunidad universitaria mediante su validación en campus global. Si esta fuera de la Universidad, establezca una VPN


El programa de la asignatura y la planificación semanal podrían sufrir alguna variación por causa de fuerza mayor debidamente justificada o por eventos académicos comunicados con antelación.