7574 - Sistemas Distribuidos I PLANIFICACIONES Planificaciones 7574 - Sistemas Distribuidos I Docente responsable: MENDEZ MARIANO 1 de 6 Actualización: 2ºC/2016 7574 - Sistemas Distribuidos I PLANIFICACIONES Actualización: 2ºC/2016 OBJETIVOS Introducir a los alumnos en los paradigmas de los sistemas distribuidos y sus modelos clásicos, en el diseño de plataformas de middleware y en los conceptos de tolerancia a fallos. CONTENIDOS MÍNIMOS - PROGRAMA SINTÉTICO Especificaciones de sistemas concurrentes y distribuidos. Abstracción y formalización. Validación y verificación. Ambientes de desarrollo. Paradigmas de nombres, serialización, sincronismo y asincronismo, relojes, orden, coordinación, consistencia y concurrencia. Modelos de middleware orientado a mensajes transientes y persistentes, sincrónicos y asincrónicos. Estrategias de diseño, Estudio de aplicación de los modelos: publishersubscriber, memoria distribuida, etc. Clases de actividades. Sistemas tolerantes a fallos. Casos de estudio. PROGRAMA ANALÍTICO Introducción a los sistemas distribuidos: Definición. Objetivos, Arquitecturas y tipos de sistemas distribuido. Concepto de Middleware. Unidad 1: Repaso de conceptos de análisis y diseño de sistemas. Introducción al análisis y diseño de sistemas distribuidos. Concepto de objeto activo y pasivo. Diagramas UML. Arquitecturas. Interfaces y componentes. Subsistemas. Unidad 2: Comunicaciones en sistemas distribuidos. Concepto de servicios y protocolos en el modelo OSI. Primitivas de servicios con y sin conexión. Comparación del modelo OSI con el modelo TCP/IP. Repaso de conceptos de redes de comunicaciones, internetworking, capas de transporte, sesión, presentación y aplicación. Análisis de protocolos, concepto y algoritmos de ARQ. Análisis de tráfico. Distorsión y demora. Modelo Cliente Servidor. Introducción a los ambientes de programación distribuidos. Unidad 3: Ambientes de programación. Repaso de comunicaciones entre procesos (IPC) y concurrencia. Modelos de aplicaciones con sockets sobre TCP y UDP. Diseño del cliente. Modelos de diseño de servidores: Iterativos y concurrentes. Direccionamiento y binding. Modelo RPC. Concepto de binding dinámico. Semántica RPC. Diseño de aplicaciones. RPC Asincrónico. Concepto de middleware orientado a mensajes. Aplicación a un caso de estudio. Unidad 4: Paradigmas de sistemas distribuidos. Nombres y direccionamiento. Pasaje de mensajes. Comunicación de mensajes transientes y persistentes. Comunicaciones de grupos. Tiempo y relojes. Sincronismo. Orden. Coordinación. Consistencia. Concurrencia. Aplicación a casos de estudio. Unidad 5: Modelos de sistemas distribuidos. Frameworks de sistemas distribuidos. Estrategias. Modelos asincrónicos y sincrónicos. Clases de actividades distribuidas. Buses de mensajes. Orientados a grupos. Publisher-Subscriber. Memoria distribuida compartida. Aplicación a casos de estudio. Unidad 6: Algoritmos de red sincrónicos y asincrónicos. Conceptos básicos de los algoritmos distribuidos. Modelización de procesos sincrónicos sobre redes. Medición de complejidad. Algoritmos de anillo sincrónico con elección de líder. Algoritmos para fallas de enlace. Algoritmos para fallas de procesadores. Algoritmos para fallas bizantinas. Aplicación a casos de estudio. Unidad 7: Tolerancia a fallos. Definiciones. Concepto de confiabilidad (dependability). Tolerancia a fallos distribuida, redes y arquitecturas. Detección de fallas. Paradigmas de tolerancia a fallos. BIBLIOGRAFÍA 1) Verissimo, P., Rodriguez, L.: Distributed Systems for Systems Architects, Kluwer Academic Publishers, 2001. 2) Tanenbaum, A. Van Steen, M.: Distributed Systems. Principles and Paradigms, Second Edition. Prentice Hall, 2007. 3) Gomaa, Hassan: Software Modeling & Design. UML, Use cases, pattern & software architectures. Cambridge, 2011. 4) Lynch, Nancy: Distributed Algorithms, Morgan Kaufmann, 1996. 5) Comer, D., Stevens, D.: Internetworking with TCP/IP, Volume 3, Client-Server Programming and Applications, Linux /Posix Sockets Version, Prentice Hall, 2001. 6) Ben-Ari, M. Principles of Concurrent and Distributed Programming, 2nd. Ed. Addison Wesley, 2006. 7) Estándares de protocolos y frameworks (fuente Internet) 2 de 6 7574 - Sistemas Distribuidos I PLANIFICACIONES Actualización: 2ºC/2016 8) Apuntes de la materia y otras enlaces a otras fuentes en la página de la materia y/o en el campos RÉGIMEN DE CURSADA Metodología de enseñanza Exposición teórica de conceptos fundamentales, con resolución metódica de problemas tipo y ensayos sobre objetivos. Análisis y Diseño y resolución por parte de los alumnos y controlada por los docentes de un caso de estudio aplicado a las unidades temáticas del programa. En general se tratará de problemas abiertos, que generen dudas y motiven la consulta a los docentes y la profundización del conocimiento a través de la bibliografía. Se desarrollará un trabajo práctico final que integre los conceptos aprendidos. El desarrollo del curso se encuentra en la página web de la materia: http://www.fi.uba.ar/materias/7574/ Modalidad de Evaluación Parcial De manejo de conceptos, aplicación de conocimientos y dominio de técnicas, mediante la respuesta a preguntas y la resolución de problemas por escrito en evaluaciones parciales e integradoras, y el desarrollo controlado de trabajos prácticos escritos y en computadora. Las evaluaciones parciales e integradoras son por unidades o subunidades temáticas. La evaluación de los trabajos por computadora es por presentación en tiempo y forma (plazos y formato establecido), método de desarrollo (aplicación de método de desarrollo de programas visto en el curso) y corrección del resultado (cumplimiento de objetivos del programa) 3 de 6 7574 - Sistemas Distribuidos I PLANIFICACIONES Actualización: 2ºC/2016 CALENDARIO DE CLASES Semana Temas de teoría Resolución de problemas Laboratorio Otro tipo Fecha entrega Informe TP Bibliografía básica <1> 15/08 al 20/08 Organización del curso y campo de aplicación <2> 22/08 al 27/08 Introducción a los sistemas Distribuidos <3> 29/08 al 03/09 Modelo OSI Repaso de concurrencia y configuración de las redes en la sala. Apuntes. Libros de la materia 75.59 <4> 05/09 al 10/09 Protocolos de redes, capas de aplicación y presentación Pasaje de mensajes Colas de mensajes. Diseño de protocolos para el caso de estudio en una sola computadora Libros 1 y/o 2. Apuntes <5> 12/09 al 17/09 Pasaje de mensajes y diagramas de evento-tiempo <6> 19/09 al 24/09 Repaso de Transporte y concepto clienteservidor Sockets. Prueba de pasaje de mensajes entre computadoras puntes y ejemplos Apuntes y ejemplos. Libro 4 <7> 26/09 al 01/10 RPC. Programación de Sockets aplicado al caso de estudio Libro 2. Apuntes y ejemplos <8> 03/10 al 08/10 Conceptos de middleware Programación de Sockets aplicado al caso de estudio Libros 1 y/o 2 <9> 10/10 al 15/10 Paradigmas de sistemas distribuidos Programación de RPC aplicado al caso de estudio Entrega del trabajo práctico <10> 17/10 al 22/10 Paradigmas y frameworks Servicios de directorio y aplicación de modelos al caso Libros 1 y/o 2 <11> 24/10 al 29/10 Clases de actividades y Parcial Libros 1 y/o 2 Libros 1 y 2 Elección de un caso de estudio para resolver en clase. Concepto de protocolos y servicios de OSI Libros 1 y 2 Libros de la materia 75.43. 4 de 6 Parte 1 Semana 13 Libros 1 y/o 2 7574 - Sistemas Distribuidos I Semana Temas de teoría PLANIFICACIONES Resolución de problemas Laboratorio Otro tipo Fecha entrega Informe TP Actualización: 2ºC/2016 Bibliografía básica modelos de sistemas distribuido <12> 31/10 al 05/11 Algoritmos de consenso: Anillos sincrónicos con elección de líder. Sincronismo para vistas de grupos aplicado al caso de estudio <13> 07/11 al 12/11 Algoritmos para fallas de enlace y de procesadores 1º Recuperatorio del parcial Revisión del artículo del trabajo práctico <14> 14/11 al 19/11 Algoritmos para fallas bizantinas. Corrección de ejercicios de clase e implementació n de los algoritmos Libros 3 y 5. Apuntes <15> 21/11 al 26/11 Tolerancia a fallos. Conceptos básicos y y Cobertura Corrección de ejercicios de clase e implementació n de los algoritmos Libros 3 y 5. Apuntes <16> 28/11 al 03/12 Tolerancia a fallos. Redes y arquitecturas Corrección del trabajo práctico Libros 1 y/o 2 5 de 6 Libro 3 A convenir con cada grupo Libros 3 y 5. Apuntes 7574 - Sistemas Distribuidos I PLANIFICACIONES Actualización: 2ºC/2016 CALENDARIO DE EVALUACIONES Evaluación Parcial Oportunidad Semana Fecha Hora 1º 11 27/10 18:00 2º 14 17/11 18:00 3º 16 01/12 18:00 4º Observaciones sobre el Temario de la Evaluación Parcial Ver página de la materia http://www.fi.uba.ar/materias/7574 6 de 6 Aula