Sistemas  distribuidos

+Info
DEPARTAMENTO PROFESOR/ES
Matemáticas y Computación Francisco José García Izquierdo  (Responsable)
María José Ibáñez Sáenz López
TITULACIONES EN LAS QUE SE IMPARTE LA ASIGNATURA
Titulación Carácter Curso Semestre Créditos Guía Docente
Grado en Ingeniería Informática Obligatoria 3 Primer Semestre 6 pdf
BIBLIOGRAFÍA RECOMENDADA
Sistemas distribuidos : conceptos y diseño. George Coulouris, Jean Dollimore, Tim Kinderberg. Addison Wesley, 2001. ISBN 84-7829-049-4
COMENTARIO PROFESOR
Es el libro principal de la asignatura para la parte teórica. El libro se utiliza sobre todo en los temas 1 y 2 y puede usarse como complemente en los temas 4, 6, 8 y 11. El nivel de profundidad de los temas tratados en el libro es superior al de las clases de la asignatura, por lo que los alumnos pueden usarlo para reforzar su aprendizaje.
Computación distribuida: fundamentos y aplicaciones. M. L. Liu. Addison-Wesley, 2004. ISBN 84-7829-066-4
COMENTARIO PROFESOR
Se trata de un libro interesante porque combina conceptos teóricos con procedimientos prácticos, usando como lenguaje principal el lenguaje Java (lenguaje elegido para las prácticas de la asignatura). Es utilizado en los temas 1, 2, 4, 5, 6 y 7.
Java Network Programming, 2nd Edition. Elliotte Rusty Harold.O’Reilly (2000). ISBN: 1-56592-870-9
COMENTARIO PROFESOR
Libro de referencia para la programación en red en Java. Cubre en profundidad casi todos los temas prácticos de la asignatura: entrada/salida, programación en red (de alto y bajo nivel), RMI. Incluye multitud de ejemplos y, a pesar de estar escrito en inglés, es fácil de leer.
Programación concurrente con Java. Doug Lea. Addison Wesley (2000) ISBN 84-7829-038-9
COMENTARIO PROFESOR
El libro cubre el tema 5, sobre programación concurrente. El nivel es superior al exigido para la asignatura, por lo que puede usarse como complemento de la misma.
Core Java 2. Volumen 2: características avanzadas. C.S. Horstmann, G. Cornell. Prentice-Hall. 2006. ISBN: 84-8322-310-4
COMENTARIO PROFESOR
Libro que dedica un extensor capítulo, con múltiples ejemplos, a los temas de concurrencia, programación en red, seguridad y XML. Es un buen libro introductorio para cada uno de esos temas. El nivel es adecuado para la asignatura.
Java & XML, 3rd Edition. B.D. McLaughlin, J. Edelson. O’Reilly 2007. ISBN: 0-596-10149-X
COMENTARIO PROFESOR
Libro de referencia para la progrmación de aplicaciones Java que procesen o generen documentos XML, o los transformen con XSLT. Cubre el tema 9.
Web services : concept, architectures and applications. Gustavo Alonso et al. Springer, 2004. ISBN 3-540-44008-9
COMENTARIO PROFESOR
Se trata de un estupendo libro sobre arquitectura de sistemas de información orientados a servicios. Es un libro teórico, que aborda de forma muy clara conceptos de middleware. Es útil para los temas 2 y 10.
Seguridad en Java. Jamie Jaworski, Paul J. Perrone. Prentice-Hall, 2001. ISBN 84-205-3134-0
COMENTARIO PROFESOR
Cubre el tema 8 sobre seguridad. Aborda más aspectos que los tratados en clase, por lo que puede ser usado por los alumnos para complementar su formación.
Programación con ASP.Net 2.0. J. Liberty, D. Hurwitz. Anaya-O’Reilly, 2007. ISBN: 84-415-2052-6.
COMENTARIO PROFESOR
El libro contiene un capítulo en el que se describe cómo crear servicios web para la plataforma .Net. Es útil para la realización de los trabajos de la asignatura y como material complementario para el tema 10.
TCP/IP sockets in Java : practical guide for programmers / Kenneth L. Calvert, Michael J. Donahoo. Morgan Kaufmann Publishers, [2002]
COMENTARIO PROFESOR
.
Distributed systems : concepts and design / George Coulouris...[et al.].-- 5th ed.-- Harlow (Essex, England) : Addison-Wesley, cop. 2012
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.


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.
TEMARIO
Tema 1. Introducción a los sistemas distribuidos
1.
Definición
2.
Repaso de los tipos de computación
3.
Desafíos de los sistemas distribuidos
4.
Conceptos básicos en computación distribuida
Tema 2. Paradigmas de computación distribuida
1.
Paradigmas de aplicaciones distribuidas
2.
Comparativa
3.
División en capas de una aplicación
4.
Arquitectura de los Sistemas de Información
5.
Esquemas de comunicación
Tema 3. Repaso de entrada/salida en Java
1.
Introducción
2.
Salida (Out…)
3.
Filtros de salida
4.
Entrada (Input…)
5.
Filtros de entrada
6.
Readers y Writers
7.
Clase File
Tema 4. Repaso de conceptos básicos de redes
1.
Definiciones
2.
Los niveles de una red
3.
El modelo TCP/IP
4.
Implementación en Java de las direcciones IP
Tema 5. Programación en red en Java
1.
Stream sockets
2.
Aplicaciones cliente
3.
Fundamentos de World Wide Web
4.
Implementación de Servidores
5.
Servidores multihilo
Tema 6. Programación concurrente
1.
Introducción
2.
Creación de threads
3.
Características de un thread
4.
La ejecución de threads
5.
Suspensiones, sincronizaciones
6.
Parada de un thread
7.
Acceso en exclusión mutua
8.
Sincronizaciones II
9.
Ejecución de tareas periódicas
Tema 7. Programación avanzada en red en Java
1.
La clase URL
2.
La clase URLConnection
3.
CGI (Common Gateway Interface)
4.
Datagram sockets (UDP)
Tema 8. Aspectos básicos de seguridad
1.
Introducción
2.
Firma digital
3.
Protocolo SSL
4.
Seguridad en Java Networking - JSSE
Tema 9. XML
1.
Introducción a XML
2.
Documentos XML
3.
Document Type Definition. DTD
4.
APIs de procesamiento de XML
5.
Document Object Model (DOM)
6.
Simple API for XML (SAX)
7.
JAXP
Tema 10. Servicios Web
1.
Introducción y ejemplos
2.
Definición y escenario
3.
Pilares tecnológicos: SOAP, WSDL y UDDI
4.
Infraestructura mínima de Servicios Web
5.
SOAP
6.
WSDL
7.
Casos de estudio: Apache AXIS 2 y .Net Web Services
8.
Otros estándares relacionados: XML-Signature, XML-Encryption, WS-Security, WS-Addressing
9.
Servicios web REST
Tema 11. Servicios de directorio
1.
Introducción
2.
Características
3.
Ejemplos
4.
Protocolo de acceso a directorio: LDAP
5.
Caso de estudio: OpenLDAP