Sistemas distribuidos
GUÍA DOCENTE Curso 2018-19
Titulación: | Grado en Ingeniería Informática | 801G |
Asignatura: | Sistemas distribuidos | 441 |
Materia: | Sistemas operativos, sistemas distribuidos y redes |
Módulo: | Sistemas operativos, sistemas distribuidos y redes |
Modalidad de enseñanza de la titulación: | Presencial | Carácter: | Obligatoria |
Curso: | 3 | Créditos ECTS: | 6,00 | Duración: | Semestral |
Horas presenciales: | 60,00 | Horas estimadas de trabajo autónomo: | 90,00 |
Idiomas en que se imparte la asignatura: | Español |
Idiomas del material de lectura o audiovisual: | Inglés, Español |
Departamentos responsables de la docencia
MATEMÁTICAS Y COMPUTACIÓN | R111 |
Dirección: | C/ Madre de Dios, 53 | Código postal: | 26006 |
Localidad: | Logroño | Provincia: | La Rioja |
Teléfono: | 941299452 | Fax: | 941299460 | Correo electrónico: | dpto.dmc@unirioja.es |
Profesorado previsto
Profesor: | Divasón Mallagaray, Jose | Responsable de la asignatura |
Teléfono: | 941299210 | Correo electrónico: | jose.divason@unirioja.es |
Despacho: | 3236 | Edificio: | CENTRO CIENTÍFICO TECNOLÓGICO | Tutorías: | Consultar |
Descripción de los contenidos
- Introducción a los sistemas distribuidos
- Paradigmas de computación distribuida (paso de mensajes, invocación remota de procedimientos, objetos distribuidos, agentes móviles, servicios web, P2P, …)
- Algoritmos básicos en sistemas distribuidos
- Programación en red
- Programación concurrente aplicada a la construcción de sistemas distribuidos
- Servicios web y Arquitecturas Orientadas a Servicios
- Sistemas de directorios
- Tendencias en Sistemas Distribuidos
Requisitos previos de conocimientos y competencias para poder cursar con éxito la asignatura
Recomendados para poder superar la asignatura.
Conocimiento del lenguaje de programación Java. Conceptos de redes de computadores.
Asignaturas que proporcionan los conocimientos y competencias:
- Especificación y desarrollo de sistemas de Software
- Programación orientada a objetos
- Redes de computadores
Contexto
La asignatura realiza un amplio repaso por los aspectos más importantes que influyen en el diseño y desarrollo de aplicaciones distribuidas: comunicaciones, programación concurrente, seguridad, servicios web… En esta asignatura se entablará contacto por primera vez con la programación Internet, si bien a muy bajo nivel. La asignatura es importante para la formación del estudiante ya que actualmente es muy difícil encontrar una aplicación informática que no sea distribuida (simplemente, considérese que cualquier aplicación web es una aplicación distribuida).
El enfoque de la asignatura es extensivo y no intensivo, queriendo esto decir que se cubren muchos temas aunque no se profundiza demasiado en ninguno de ellos. El propósito es proporcionar al alumno un amplio resumen de posibilidades tecnológicas y herramientas que le puedan servir para iniciarse, y con las que posteriormente pueda ampliar conocimientos en cada una de ellas en particular.
Competencias
Competencias generales
CG2-Estar capacitado para, utilizando el nivel adecuado de abstracción, establecer y evaluar modelos que representen situaciones reales.
CG3-Estar capacitado para encontrar, relacionar, estructurar e interpretar datos, información y conocimiento provenientes de diversas fuentes.
CG4-Estar capacitado para transmitir información, ideas, planteamiento de problemas y soluciones, tanto a otros profesionales tecnológicos y científicos, como a personas ajenas a esas disciplinas.
CG7-Haber desarrollado aquellas habilidades de aprendizaje necesarias para continuar su formación.
CG8-Capacidad para concebir, redactar, organizar, planificar, desarrollar y firmar proyectos en el ámbito de la ingeniería en informática que tengan por objeto, la concepción, el desarrollo o la explotación de sistemas, servicios y aplicaciones informáticas.
CG11-Capacidad para definir, evaluar y seleccionar plataformas hardware y software para el desarrollo y la ejecución de sistemas, servicios y aplicaciones informáticas.
CG12-Capacidad para concebir, desarrollar y mantener sistemas, servicios y aplicaciones informáticas empleando los métodos de la ingeniería del software como instrumento para el aseguramiento de su calidad.
CG13-Capacidad para concebir y desarrollar sistemas o arquitecturas informáticas centralizadas o distribuidas integrando hardware, software y redes.
CG18-Capacidad para analizar y valorar el impacto social y medioambiental de las soluciones técnicas, comprendiendo la responsabilidad ética y profesional de la actividad del Ingeniero Técnico en Informática.
Competencias específicas
CE11-Conocimiento, administración y mantenimiento sistemas, servicios y aplicaciones informáticas.
CE17-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.
CE19-Conocimiento y aplicación de las herramientas necesarias para el almacenamiento, procesamiento y acceso a los Sistemas de información, incluidos los basados en web.
CE20-Conocimiento y aplicación de los principios fundamentales y técnicas básicas de la programación paralela, concurrente, distribuida y de tiempo real.
CE27-Capacidad de dar solución a problemas de integración en función de las estrategias, estándares y tecnologías disponibles.
CE28-Capacidad de identificar y analizar problemas y diseñar, desarrollar, implementar, verificar y documentar soluciones software sobre la base de un conocimiento adecuado de las teorías, modelos y técnicas actuales.
Resultados del aprendizaje
- Contextualizar los sistemas distribuidos en el entorno de las aplicaciones informáticas.
- Elegir el paradigma de sistema distribuido más adecuado para una aplicación concreta.
- Conocer los detalles de los protocolos del nivel de aplicación utilizados en la Web y aplicarlos para la realización de aplicaciones clientes o servidoras conformes a esos protocolos.
- Diseñar protocolos de comunicaciones basados en paso de mensajes y aplicarlos a la creación de aplicaciones distribuidas.
- Ser capaz de diseñar e implementar los aspectos de concurrencia que intervienen en una aplicación distribuida.
- Diseñar estructuras de información XML e intercambiarlas en contextos de Arquitecturas Orientadas a Servicios, particularizando en la invocación y creación de Servicios Web (tanto SOAP como REST) que permitan dar soluciones a problemas de integración de aplicaciones.
- Ser capaz de utilizar servicios de directorio en aplicaciones distribuidas a nivel básico.
- Reconocer tendencias tecnológicas punteras en el campo de los sistemas distribuidos.
Temario
Tema 1. Introducción a los sistemas distribuidos
- Definición
- Repaso de los tipos de computación
- Desafíos de los sistemas distribuidos
- Conceptos básicos en computación distribuida
Tema 2. Paradigmas de computación distribuida
- Paradigmas de aplicaciones distribuidas
- Comparativa
- División en capas de una aplicación
- Arquitectura de los Sistemas de Información
- Esquemas de comunicación
- Middleware
- Objetos distribuidos
Tema 3. Repaso de entrada/salida en Java
- Introducción
- Salida (Out…)
- Filtros de salida
- Entrada (Input…)
- Filtros de entrada
- Readers y Writers. Codificación de caracteres
- Clase File
Tema 4. Repaso de conceptos básicos de redes
- Definiciones
- Los niveles de una red
- El modelo TCP/IP
- Implementación en Java de las direcciones IP
Tema 5. Programación en red en Java
- Stream sockets
- Aplicaciones cliente
- Fundamentos de World Wide Web
- Implementación de Servidores
- Servidores multihilo
Tema 6. Programación concurrente
- Introducción
- Creación de threads
- Características de un thread
- La ejecución de threads
- Suspensiones, sincronizaciones
- Parada de un thread
- Acceso en exclusión mutua
- Ejecución de tareas periódicas
- Ejecutores y pools de threads
- Objetos para sincronizaciones (semáforos, barreras cíclicas, colas bloqueantes...)
Tema 7. Programación avanzada en red en Java
- La clase URL
- La clase URLConnection
- CGI (Common Gateway Interface)
- Datagram sockets (UDP)
Tema 8. Aspectos básicos de seguridad
- Introducción
- Firma digital
- Protocolo SSL
- Seguridad en Java Networking - JSSE
Tema 9. XML
- Introducción a XML
- Documentos XML
- Document Type Definition. DTD
- APIs de procesamiento de XML
- Document Object Model (DOM)
- Simple API for XML (SAX)
- JAXP
Tema 10. Servicios Web
- Introducción y ejemplos
- Definición y escenario
- Pilares tecnológicos: SOAP, WSDL y UDDI
- Infraestructura mínima de Servicios Web
- SOAP
- WSDL
- Casos de estudio: JAX-WS y .Net Web Services
- Otros estándares relacionados: XML-Signature, XML-Encryption, WS-Security, WS-Addressing
- Servicios web REST. Caso de estudio: JAX-RS
Tema 11. Servicios de directorio
- Introducción
- Características
- Ejemplos
- Protocolo de acceso a directorio: LDAP
- Caso de estudio: OpenLDAP
Bibliografía
Tipo: | Título |
Básica | Computación distribuida: fundamentos y aplicaciones. M. L. Liu. Addison-Wesley, 2004. ISBN 84-7829-066-4 Absys Biba |
Básica | Core Java 2. Volumen 2: características avanzadas. C.S. Horstmann, G. Cornell. Prentice-Hall. 2006. ISBN: 84-8322-310-4 Absys Biba |
Básica | Java & XML, 3rd Edition. B.D. McLaughlin, J. Edelson. O¿Reilly 2007. ISBN: 0-596-10149-X Absys Biba |
Básica | Java Network Programming, 2nd Edition. Elliotte Rusty Harold.O¿Reilly (2000). ISBN: 1-56592-870-9 Absys Biba |
Básica | Programación concurrente con Java. Doug Lea. Addison Wesley (2000) ISBN 84-7829-038-9 Absys Biba |
Básica | Sistemas distribuidos : conceptos y diseño. George Coulouris, Jean Dollimore, Tim Kinderberg. Addison Wesley, 2001. ISBN 84-7829-049-4 Absys Biba |
Básica | Web services : concept, architectures and applications. Gustavo Alonso et al. Springer, 2004. ISBN 3-540-44008-9 Absys Biba |
Complementaria | Distributed systems : concepts and design
Absys Biba |
Complementaria | Programación con ASP.Net 2.0. J. Liberty, D. Hurwitz. Anaya-O¿Reilly, 2007. ISBN: 84-415-2052-6. Absys Biba |
Complementaria | Seguridad en Java. Jamie Jaworski, Paul J. Perrone. Prentice-Hall, 2001. ISBN 84-205-3134-0 Absys Biba |
Complementaria | TCP/IP sockets in Java : practical guide for programmers Absys Biba |
Recursos en Internet |
Custom Networking. Tutorial de Java
Tutorial on-line sobre la entrada/salida en Java. Cubre los temas 4, 5 y 7 en su totalidad. Incluye muchos ejemplos. |
Basic Java I/O. Tutorial de Java.
Tutorial on-line sobre la entrada/salida en Java. Cubre el tema 3 en su totalidad. Incluye muchos ejemplos.
|
Tutorial de concurrencia de java.
Tutorial on-line sobre concurrencia en Java. Cubre el tema 6 en su totalidad, y muchos más aspectos sobre concurrencia en Java no abordados |
Página sobre JAX-WS.
|
Página sobre el proyecto Jersey, implementación JAX-RS |
Metodología
Modalidades organizativas
Clases teóricas
Clases prácticas
Estudio y trabajo autónomo individual
Métodos de enseñanza
Método expositivo - Lección magistral
Estudio de casos
Resolución de ejercicios y problemas
Aprendizaje basado en problemas
Organización
Actividades presenciales | Tamaño de grupo | Horas |
Clases prácticas de laboratorio o aula informática | Informática | 28,00 |
Clases teóricas y prácticas de aula | Grande | 32,00 |
Total de horas presenciales | 60,00 |
Trabajo autónomo del estudiante | Horas |
Estudio autónomo individual o en grupo | 15,00 |
Preparación de las prácticas y elaboración de cuaderno de prácticas | 40,00 |
Resolución individual de ejercicios, cuestiones u otros trabajos, actividades en biblioteca o simi | 35,00 |
Total de horas de trabajo autónomo | 90,00 |
Evaluación
Sistemas de evaluación | Recuperable | No Recup. |
Pruebas escritas | 60% | |
Trabajos y proyectos | | 10% |
Pruebas de ejecución de tareas reales y/o simuladas | | 30% |
Total | 100% |
Comentarios
- La evaluación continua (40 %, no recuperable) corresponde a la realización de las pruebas de ejecución de tareas reales y/o simuladas, y los trabajos de la asignatura.
- Se propondrán dos o tres trabajos a lo largo de la asignatura, conforme se vayan introduciendo los temas teóricos. Los trabajos son opcionales y cada uno de ellos contribuye con un porcentaje que variará según su dificultad entre el 5% y el 15% de la nota. Por tanto, es posible que un alumno supere la calificación de 10 si entrega más de un trabajo..
- Para los estudiantes a tiempo parcial (reconocidos como tales por la Universidad) el profesor responsable de la asignatura podrá sustituir las actividades de evaluación no recuperable por otras a especificar en cada caso.
- El material didáctico se encontrará disponible en el aula virtual para todos los alumnos matriculados en esta asignatura.
Criterios críticos para superar la asignatura
- Para aprobar la asignatura en la convocatoria ordinaria es necesario:
- obtener una calificación de al menos 5 puntos en las pruebas escritas
- obtener una calificación de al menos 4 puntos en las pruebas de ejecución de tareas reales y/o simuladas.
- Para aprobar la asignatura en la convocatoria extraordinaria es necesario:
- obtener una calificación de al menos 5 puntos en las pruebas escritas.
04/03/19 10:02:43 - G 2018-19 - 801G - 441