Sistemas distribuidos
GUÍA DOCENTE Curso 2013-14
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 |
Carácter: | Obligatoria | Curso: | 3 | Semestre: | Semestral |
Créditos ECTS: | 6,00 | 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/ Luis de Ulloa, s/n | Código postal: | 26004 |
Localidad: | Logroño | Provincia: | La Rioja |
Teléfono: | 941299452 | Fax: | 941299460 | Correo electrónico: | |
Profesorado previsto
Profesor responsable de la asignatura: | García Izquierdo, Francisco José |
Teléfono: | 941299260 | Correo electrónico: | francisco.garcia@unirioja.es |
Despacho: | 232 | Edificio: | Edificio Vives |
Horario de tutorías: | Diríjase a la URL http://www.unirioja.es/cu/fgarcia/docencia.shtml |
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
Conocimiento del lenguaje de programación Java. Conceptos de redes de computadores.
Relación de asignaturas que proporcionan los conocimientos y competencias requeridos
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.
Competencias específicas
CE1 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.
CE4 Capacidad para definir, evaluar y seleccionar plataformas hardware y software para el desarrollo y la ejecución de sistemas, servicios y aplicaciones informáticas.
CE5 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.
CE6 Capacidad para concebir y desarrollar sistemas o arquitecturas informáticas centralizadas o distribuidas integrando hardware, software y redes.
CE11 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.
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 de forma superficial algunos de los algoritmos más importantes relacionados con aspectos de gestión de tiempo y estado distribuido, coordinación y acuerdo, transacciones distribuidas, …
- 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 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
Tema 3. Repaso de entrada/salida en Java
-
Introducción
-
Salida (Out…)
-
Filtros de salida
-
Entrada (Input…)
-
Filtros de entrada
-
Readers y Writers
-
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...)
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: Apache AXIS 2 y .Net Web Services
-
Otros estándares relacionados: XML-Signature, XML-Encryption, WS-Security, WS-Addressing
-
Servicios web REST
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 |
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 | Advanced Java Networking (2nd Ed.). Dick Steflik, Prashant Sridharan, Richard Steflik. Prentice Hall PTR (2000). ISBN: 0130844667 |
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 |
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 |
Documentación sobre Apache Axis.
Documentación de referencia para la realización de las prácticas del tema 10.
|
Metodología
Modalidades organizativas
Clases teóricas
Seminarios y talleres
Clases prácticas
Tutorías
Estudio y trabajo autónomo individual
Métodos de enseñanza
Método expositivo - Lección magistral
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 |
Examen final | Grande | 2,00 |
Clases teóricas y prácticas de aula | Grande | 30,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? |
Pruebas escritas | 60 | Sí |
Asistencia a las prácticas | 5 | No |
Realización de las prácticas | 25 | No |
Trabajos individuales | 10 | No |
Total | 100% | |
Comentarios
-
Las prácticas deben ser realizadas individualmente. Para ser corregidas, deberán ser entregadas completas en el momento especificado en el aula virtual 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.
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 5 puntos en las prácticas.
-
Para obtener el 5 % de la calificación correspondiente a la asistencia a prácticas es necesario asistir como mínimo a todas las sesiones de prácticas salvo una.
Para excusar las faltas de asistencia será necesario aportar un documento justificativo.
Para que los estudiantes a tiempo parcial consigan el 5% de la calificación correspondiente a asistencia a prácticas deben solicitar al profesor un ejercicio suplementario y entregarlo en el plazo marcado.