Guía docente de Desarrollo de Sistemas Distribuidos (Especialidad Ingeniería del Software) (296113I)

Curso 2024/2025
Fecha de aprobación: 25/06/2024

Grado

Grado en Ingeniería Informática

Rama

Ingeniería y Arquitectura

Módulo

Formación de Especialidad 2: Ingeniería del Software

Materia

Sistemas Distribuidos, Multiagente y Desarrollo Web

Curso

3

Semestre

2

Créditos

6

Tipo

Obligatoria

Profesorado

Teórico

José Luis Garrido Bullejos. Grupo: A

Práctico

José Luis Garrido Bullejos Grupo: 3

Tutorías

José Luis Garrido Bullejos

Email
  • Primer semestre
    • Miércoles
      • 09:30 a 11:30 (Etsiit 3ª Planta Despacho 12)
      • 13:30 a 14:30 (Etsiit 3ª Planta Despacho 12)
    • Jueves de 11:30 a 14:30 (Etsiit 3ª Planta Despacho 12)
  • Segundo semestre
    • Martes de 10:30 a 13:30 (Etsiit 3ª Planta Despacho 12)
    • Miércoles de 10:30 a 13:30 (Etsiit 3ª Planta Despacho 12)

Prerrequisitos y/o Recomendaciones

Los alumnos no deberán tener asignaturas, materias o módulos aprobados como requisito indispensable para cursar el módulo. No obstante, se recomienda la superación de los contenidos y adquisición de competencias de las materias de formación básica y haber cursado o estar cursando las asignaturas de la materia Sistemas Operativos, Sistemas Distribuidos y Redes perteneciente al módulo Formación Específica de Rama.

Breve descripción de contenidos (Según memoria de verificación del Grado)

  • Marcos de referencia y configuraciones (centralización, distribución y replicación).
  • Mecanismos de paso de mensajes.
  • Tiempo y Coordinación. Modelos y sistemas Cliente/Servidor y Peer-to-Peer.
  • Arquitecturas Orientadas a Servicios (SOA), Dirigidas por Eventos (EDA), basadas en componentes, agentes móviles.
  • Middlewares y plataformas.
  • Metodologías de desarrollo de sistemas/aplicaciones distribuidos.
  • Atributos de calidad: rendimiento, escalabilidad, tolerancia a fallos.

Competencias

Competencias generales

  • CG01. Capacidad para concebir, redactar, organizar, planificar, desarrollar y firmar proyectos en el ámbito de la ingeniería en informática que tengan por objeto, de acuerdo con los conocimientos adquiridos, la concepción, el desarrollo o la explotación de sistemas, servicios y aplicaciones informáticas.
  • CG02. Capacidad para dirigir las actividades objeto de los proyectos del ámbito de la informática de acuerdo con los conocimientos adquiridos.
  • CG03. Capacidad para diseñar, desarrollar, evaluar y asegurar la accesibilidad, ergonomía, usabilidad y seguridad de los sistemas, servicios y aplicaciones informáticas, así como de la información que gestionan.
  • CG04. Capacidad para definir, evaluar y seleccionar plataformas hardware y software para el desarrollo y la ejecución de sistemas, servicios y aplicaciones informáticas.
  • CG05. 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.
  • CG06. Capacidad para concebir y desarrollar sistemas o arquitecturas informáticas centralizadas o distribuidas integrando hardware, software y redes.
  • CG07. Capacidad para conocer, comprender y aplicar la legislación necesaria durante el desarrollo de la profesión de Ingeniero Técnico en Informática y manejar especificaciones, reglamentos y normas de obligado cumplimiento.
  • CG09. Capacidad para resolver problemas con iniciativa, toma de decisiones, autonomía y creatividad. Capacidad para saber comunicar y transmitir los conocimientos, habilidades y destrezas de la profesión de Ingeniero Técnico en Informática.
  • CG10. Conocimientos para la realización de mediciones, cálculos, valoraciones, tasaciones, peritaciones, estudios, informes, planificación de tareas y otros trabajos análogos de informática.
  • CG12. Conocimiento y aplicación de elementos básicos de economía y de gestión de recursos humanos, organización y planificación de proyectos, así como la legislación, regulación y normalización en el ámbito de los proyectos informáticos, de acuerdo con los conocimientos adquiridos.

Competencias Transversales

  • CT01. Capacidad de organización y planificación así como capacidad de gestión de la Información. 
  • CT02. Capacidad para tomar decisiones basadas en criterios objetivos (datos experimentales, científicos o de simulación disponibles) así como capacidad de argumentar y justificar lógicamente dichas decisiones, sabiendo aceptar otros puntos de vista. 
  • CT04. Capacidad de comunicación en lengua extranjera, particularmente en inglés. 
  • CT05. Capacidad de trabajo en equipo, usando competencias demostrables mediante la elaboración y defensa de argumentos. 
  • CT06. Motivación por la calidad y la mejora continua, actuando con rigor, responsabilidad y ética profesional. 
  • CT08. Capacidad para proyectar los conocimientos, habilidades y destrezas adquiridos para promover una sociedad basada en los valores de la libertad, la justicia, la igualdad y el pluralismo. 

Resultados de aprendizaje (Objetivos)

Entender y conocer la utilidad de los sistemas distribuidos y los diferentes tipos y configuraciones (centralización, replicación y distribución) más adecuados en cada caso.

  • Conocer y saber elegir, para el desarrollo de sistemas distribuidos, entre los distintos mecanismos de paso de mensajes que ofrecen los sistemas operativos y herramientas o entornos de programación en base a sus propiedades.
  • Entender los fundamentos, herramientas y servicios sobre los que se apoya la construcción de los sistemas distribuidos.
  • Conocer cómo resolver en sistemas distribuidos los problemas de ordenación y atomicidad de operaciones, así como, de coordinación entre procesos.
  • Saber tomar decisiones de diseño en cuanto a la elección de paradigmas/modelos de interacción entre procesos, y sus variantes o diferentes configuraciones, de acuerdo con los requisitos específicos de los sistemas/aplicaciones a desarrollar.
  • Comprender los principios básicos de diseño y técnicas para la construcción de sistemas Cliente/Servidor y Peer-to-Peer en base al estudio de ejemplos concretos.
  • Conocer y saber aplicar metodologías de modelado y desarrollo que distinguen y soportan la descripción de arquitecturas abstractas con arquitecturas físicas que las implementan.
  • Saber integrar y complementar diferentes arquitecturas de sistemas distribuidos dentro de un mismo sistema/aplicación o entre los ya existentes.
  • Conocer las distintas tecnologías y estándares (middlewares, entornos de desarrollo, y plataformas de servicios en Internet/Web) y su adecuación y uso para cada tipo de sistema/aplicación.
  • Tomar decisiones de diseño y elección de tecnologías, arquitecturas y estándares para facilitar la implementación, mantenimiento y gestión de sistemas distribuidos.
  • Justificar el diseño e implementación de sistemas distribuidos en base a la satisfacción y balanceo de atributos de calidad.

Programa de contenidos teóricos y prácticos

Teórico

Tema 1. Introducción a Sistemas Distribuidos.

  • Conceptos, componentes, y configuraciones.
  • Características y objetivos.
  • Paradigmas de aplicaciones distribuidas.
  • Marcos y modelos de referencia.

Tema 2. Comunicación y Sincronización en Sistemas Distribuidos.

  • Sistemas de paso de mensajes.
  • Comunicación Cliente/Servidor: protocolo petición/respuesta, técnicas de diseño y semánticas.
  • Llamadas remotas a procedimiento/método: definición y procesamiento de interfaces, y ligadura.
  • No-determinismo y operaciones guardadas de comunicación.

Tema 3. Coordinación.

  • Tiempo lógico.
  • Algoritmos distribuidos de coordinación.

Tema 4. Sistemas Cliente/Servidor y Peer-to-Peer.

  • Modelos Cliente/Servidor de n-etapas y configuraciones.
  • Modelos Peer-to-Peer.
  • Modelos funcional y de comportamiento.
  • Diseño.
  • Computación Móvil y Cloud.

Tema 5. Aplicaciones Distribuidas.

  • Metodologías de desarrollo.
  • Atributos de calidad: rendimiento, escalabilidad, interoperatividad, tolerancia a fallos, portabilidad, fiabilidad, seguridad, ...
  • Arquitecturas y tipos: dirigidas por eventos (EDA), orientadas a servicios (SOA), basadas en componentes y basadas en agentes.
  • Modelos de replicación.
  • Plataformas y Frameworks de desarrollo.
  • Sistemas abiertos.

Tema 6. Tecnologías Middleware

  • Conceptos.
  • Paradigmas de comunicación de mensajes.
  • Comunicación en tecnologías middleware: paso de mensajes, invocaciones, notificaciones, espacios compartidos, colas de mensajes, etc.
  • Clasificación y tipos de tecnologías middleware: basados en mensajes o invocaciones, basados en objetos, publicar/suscribir, centrados en documentos, orientados a servicios, orientados al acceso a datos, etc.
  • Evaluación de tecnologías middleware.

Práctico

Diseño e implementación de diferentes servicios y aplicaciones utilizando distintos modelos de comunicación/interacción y arquitecturas tal como sigue:

  • Práctica 1: Configuración y programación con llamadas remotas a servicios (ssh, directorio, ficheros distribuidos, ...).
  • Práctica 2: Programación con llamadas remotas a métodos de aplicaciones distribuidas cliente-servidor y/o peer-to-peer.
  • Práctica 3: Programación de varios ejercicios haciendo uso de diferentes tecnologías middleware para invocación remota de métodos y notificación de eventos.
  • Práctica 4: Programación de servicios utilizando invocaciones síncronas y asíncronas.

Bibliografía

Bibliografía fundamental

  • Coulouris, G.F. et al: Distributed Systems: Concepts and Design (5th Edition), Addison-Wesley, 2012.
  • Ghosh, R.K., Ghosh, H.: Distributed Systems: Theory and Applications. John Wiley & Sons, 2023.
  • Czaja, L.: Introduction to Distributed Computer Systems: Principles and Features. Springer, 2018.
  • Ghosh, S.: Distributed systems: an algorithmic approach (2nd edition). Chapman and Hall/CRC, 2014.
  • Tanenbaum, A. S., van Steen, M.: Distributed Systems: Principles and Paradigms (2nd Edition), Prentice-Hall, 2014.
  • K.P. Birman: Reliable Distributed Systems: Technologies, Web Services and Applications. Springer, 2005.
  • Liu, M.L.: Computación Distribuida: Fundamentos y Aplicaciones. Pearson, 2004.
  • Bacon, J.: Concurrent Systems (2/e). Addison-Wesley, 1998.
  • Andrews, G.A.: Concurrent Programming - Principles and Practice. The Benjamin/Cummings Publishing Company, 1991.

Bibliografía complementaria

Metodología docente

  • MD01. Lección Magistral (Clases Teóricas-Expositivas) 
  • MD02. Actividades Prácticas (Resolución de Problemas, Resolución de Casos Prácticos, Desarrollo de Proyectos, Prácticas en Laboratorio, Taller de Programación, Aula de Informática, Prácticas de Campo). 
  • MD03.  Seminarios (Debates, Demos, Exposición de Trabajos Tutelados, Conferencias, Visitas Guiadas, Monografías). 
  • MD04. Actividades no presenciales Individuales. 
  • MD05. Actividades no presenciales Grupales. 
  • MD06. Tutorías Académicas. 

Evaluación (instrumentos de evaluación, criterios de evaluación y porcentaje sobre la calificación final)

Evaluación ordinaria

La asistencia a las clases de teoría no es obligatoria, aunque se recomienda dicha asistencia ya que facilita en gran medida poder alcanzar las competencias de la Asignatura. Sin embargo, de forma específica, es obligatoria dicha asistencia en aquellos días que se realicen actividades calificables que se notificarán con al menos 3 días de antelación.

La asistencia a prácticas es obligatoria en al menos un 80%; se llevará un control presencial en cada sesión de prácticas. De forma específica, la asistencia a prácticas es obligatoria en aquellos días que se realicen actividades calificables que se notificarán con al menos 3 días de antelación.

Se realizará una evaluación continua, considerando los siguientes aspectos generales:

  • Realización de pruebas con problemas, ejercicios y prácticas sobre la materia impartida ya sea en clase o en casa.
  • Elaboración de trabajos asignados, que pueden ser llevados a cabo en grupo o individual, los cuales pueden ser presentados y defendidos ante los profesores y resto de compañeros del curso. También se considerarán la asistencia, participación y trabajos sobre seminarios que propongan los profesores.

Como criterio general del cumplimiento de la evaluación continua, el estudiante tiene que realizar al menos un 80% de todas las actividades propuestas, tanto en teoría como en prácticas.

En teoría, al menos habrá que entregar un trabajo evaluable o realización de prueba escrita en relación con cada tema, consistente en preguntas tipo test y/o de respuestas breve, y resolución de problemas. La ponderación de los trabajos o pruebas de cada tema teórico se distribuirá equitativamente entre ellos.

En prácticas habrá que defender un ejercicio o prueba en ordenador para cada una de las prácticas impartidas. La Práctica 1 no será evaluada por ser una mera introducción a la parte de prácticas. La ponderación de las prácticas entregadas y/o defendidas también se distribuirá equitativamente entre ellas.

Para que el alumno demuestre el trabajo realizado en la asignatura deberá entregar en los plazos establecidos todos los documentos (resúmenes, presentaciones de los trabajos, soluciones a los ejercicios y prácticas, asistencia/participación en seminarios, etc.) relacionados con las tareas propuestas, tanto en teoría como en prácticas.

Los porcentajes de la evaluación de las diferentes actividades serán los siguientes:

  • La media de los trabajos, problemas y ejercicios de teoría (50%).
  • La media de los trabajos de laboratorio (50%).

Para aprobar la asignatura es necesario tener una calificación numérica superior o igual a 5 puntos (sobre 10). Además, la calificación numérica de cada parte (teoría y prácticas) debe ser superior a 5 puntos (sobre 10). La calificación final es la suma de las calificaciones obtenidas en teoría y prácticas de las actividades calificables realizadas durante el curso. Si sólo se supera una parte (teoría o prácticas) con al menos una calificación de 5 (sobre 10), la calificación de la parte superada sólo se mantiene hasta la siguiente convocatoria Extraordinaria del presente curso académico.

La evaluación continua anteriormente descrita es la modalidad de evaluación por defecto, no obstante, el alumno tendrá derecho alternativamente a solicitar la evaluación única final según la normativa sobre planificación docente y organización de exámenes vigente de la Universidad de Granada.

La modalidad de evaluación única final estará determinada por un único examen sobre los contenidos del temario de la asignatura (véanse los siguientes apartados). Se pretende que el estudiante pueda acreditar la adquisición de la totalidad de las competencias generales y específicas descritas en el apartado correspondiente de esta Guía Docente.

Evaluación extraordinaria

Se aplicará la misma evaluación que la utilizada en la Evaluación Única Final descrita en el apartado siguiente, garantizándose así en todo caso la posibilidad de obtener el 100% de la calificación final. Los estudiantes que no hayan superado la asignatura en la convocatoria ordinaria dispondrán de la convocatoria extraordinaria. A ella podrán concurrir todos los estudiantes, con independencia de haber seguido o no un proceso de evaluación continua.

En todo caso, el sistema de calificaciones se expresará mediante calificación numérica de acuerdo con la normativa, por la que se establece el sistema europeo de créditos y el sistema de calificaciones en las titulaciones universitarias de carácter oficial y validez en el territorio nacional.

Evaluación única final

Tanto en la modalidad de Examen Único Final como en las convocatorias Extraordinaria y Especial se realizará un único examen que constará de dos pruebas objetivas: una de teoría por escrito, y otra de prácticas por escrito y/o en laboratorio.

La prueba de teoría supondrá el 50% de la calificación final y tendrá una estructura similar a establecida en las pruebas objetivas individuales de teoría descritas en la evaluación continua, es decir, constará de varias preguntas tipo test y/o de respuesta breve, y varios problemas a resolver en relación con los contenidos teóricos.

La prueba de prácticas supondrá el otro 50% de la calificación final y tendrá una estructura similar a establecida en las pruebas objetivas individuales de prácticas descritas en la evaluación continua, es decir, la defensa de ejercicios o pruebas por escrito y/o en laboratorio en relación con los contenidos de las prácticas impartidas.

La calificación final de este examen será la suma de las calificaciones de teoría y prácticas, siempre que en ambas se obtenga una calificación igual o superior a 5 (sobre 10).

Información adicional

Definición de grupo grande y grupo pequeño:

  • Los grupos grandes son grupos de 45 a 60 estudiantes.
  • Los grupos pequeños son grupos de 15 a 20 estudiantes.

Información de interés para estudiantado con discapacidad y/o Necesidades Específicas de Apoyo Educativo (NEAE): Gestión de servicios y apoyos (https://ve.ugr.es/servicios/atencion-social/estudiantes-con-discapacidad).