Universidad Pública de Navarra



Año Académico: 2015/2016 | Otros años:  2014/2015 
Máster Universitario en Ingeniería Informática por la Universidad Pública de Navarra
Código: 72976 Asignatura: Sistemas distribuidos, empotrados y ubicuos
Créditos: 6 Tipo: Obligatoria Curso: 1 Periodo: 1º S
Departamento:
Profesorado:
GONZALEZ DE MENDIVIL MORENO, JOSE RAMON (Resp)   [Tutorías ]

Partes de este texto:

 

Módulo/Materia

Módulo de Tecnologías Informáticas.

Materia M23, Redes y Sistemas operativos.

Subir

Descripción/Contenidos

Los contenidos de esta asignatura se centran en todos aquellos aspectos que están involucrados en el diseño y la construcción de sistemas distribuidos y de tiempo real desde el punto de vista de una perspectiva actual. Así mismo, se estudian los sistemas ubicuos como caso particular de sistema distribuido con sus propias peculiaridades y aplicaciones. Lo que denominamos hoy en día como computación en la nube, el internet de las cosas, redes de sensores, big-data, y tratamiento de flujos en tiempo real, entre otros términos, no son más que paradigmas de desarrollo de aplicaciones y servicios que tienen su soporte sobre los métodos y los modelos en los que se basan los tipos de sistemas que se tratan en esta asignatura.  Los contenidos más concretos de esta asignatura son:

- Sistemas concurrentes, distribuidos y de tiempo real. Modelos, problemas y algoritmos fundamentales. Tolerancia a fallos y programación fiable.

- Diseño de sistemas operatios. Abstracciones, núcleos, extensiones distribuidas, mejoras de rendimiento. Virtualización y máquinas virtuales.

- Estructura de las aplicaciones distribuidas. Middleware, estructuras basadas en componentes y servicios.

- Evaluación de sistemas operativos, servidores y aplicaciones. Modelos de servicio, planificación de la capacidad y caracterización de cargas, modelos de rendimiento.

- Sistemas empotrados. Elementos de diseño, restricciones en tiempo real.

- Sistemas ubicuos. Ingeniería ambiental y redes de sensores. Diseño de redes de sensores. Agregación de datos.

Subir

Descriptores

Sistemas distribuidos. Rendimiento de sistemas. Alta disponibilidad y tolerancia a fallos. Replicación, escalabilidad y elasticidad. Computación en la nube. Sistemas empotrados. Sistemas en tiempo real. Sistemas ubicuos. Redes de sensores. Inteligencia ambiental.

Subir

Competencias genéricas

Competencias Básicas
CB7 - Que los estudiantes sepan aplicar los conocimientos adquiridos y su capacidad de resolución de problemas en entornos nuevos o poco conocidos dentro de contextos más amplios (o multidisciplinares) relacionados con su área de estudio.
CB9 - Que los estudiantes sepan comunicar sus conclusiones “y los conocimientos y  razones últimas que las sustentan” a públicos especializados y no especializados de un modo claro y sin ambigüedades
CB10 - Que los estudiantes posean las habilidades de aprendizaje que les permitan continuar estudiando de un modo que habrá de ser en gran medida autodirigido o autónomo.


Competencias Generales
CG1 - Capacidad para proyectar, calcular y diseñar productos, procesos e instalaciones en todos los ámbitos de la Ingeniería Informática.
CG4 - Capacidad para el modelado matemático, cálculo y simulación en centros tecnológicos y de ingeniería de empresa,
particularmente en tareas de investigación, desarrollo e innovación en todos los ámbitos relacionados con la Ingeniería en Informática.
CG8 - Capacidad para la aplicación de los conocimientos adquiridos y de resolver problemas en entornos nuevos o poco conocidos dentro de contextos más amplios y multidisciplinares, siendo capaces de integrar estos conocimientos.

 

Subir

Competencias específicas

CMTI1 - Capacidad para modelar, diseñar, definir la arquitectura, implantar, gestionar, operar, administrar y mantener aplicaciones, redes, sistemas, servicios y contenidos informáticos.
CMTI2 - Capacidad de comprender y saber aplicar el funcionamiento y organización de Internet, las tecnologías y protocolos de redes de nueva generación, los modelos de componentes, software intermediario y servicios.
CMTI6 - Capacidad para diseñar y evaluar sistemas operativos y servidores, y aplicaciones y sistemas basados en computación distribuida.
CMTI8 - Capacidad de diseñar y desarrollar sistemas, aplicaciones y servicios informáticos en sistemas empotrados y ubicuos. 

Subir

Resultados aprendizaje

R1. Diseñar sistemas operativos, sistemas basados en computación distribuida, sistemas empotrados y sistemas ubicuos.

R2. Evaluar el rendimiento de sistemas operativos y sistemas basados en computación distribuida.

R3. Desarrollar sistemas, aplicaciones y servicios en sistemas distribuidos, empotrados y sistemas ubicuos.

R4. Conocer la organización del software intermediario y los modelos de componentes.

 

Resultado de aprendizaje

Contenido

Actividad

Instrumento de evaluación

R1, R4

Ver Temas 1 a 7

A1, A5, A6

Examen final.

Exámenes de tipo test.

Trabajos e informes sobre los temas de la asignatura.

R2

Ver Tema 3

A1, A5, A6

Pruebas de duración corta en evaluación continua.

R1, R2, R3

Ver actividades de laboratorio y elaboración de proyecto cooperativo.

A2, A3, A4. A6

Participación activa en clases de prácticas y control de asistencia.

Entregables de prácticas propuestas e informes.

Entregables del proyecto e informe.

Presentación oral de proyecto.

Subir

Metodología

En esta asignatura se emplea el método expositivo, la resolución de ejercicios y problemas y el aprendizaje basado en problemas en el trabajo en el aula. El aprendizaje basado en grupos pequeños y el aprendizaje orientado a proyectos se emplea en el trabajo que se realiza en el laboratorio práctico. En ambos casos, el estudiante cuenta con la orientación del profesor en todo momento. La evaluación de los resultados de aprendizaje se llevará a cabo de forma continua a lo largo del semestre.

 

Actividad formativa

Horas

Presencialidad

A1 Clases expositivas

28

100

A2 Prácticas

14

100

A3 Aprendizaje cooperativo

14

100

A4 Proyectos en grupo

45

0

A5 Estudio autónomo

45

0

A6 Tutorías y evaluación

4

100

Total

150

 

Subir

Evaluación

 

Resultado de aprendizaje

Actividad de evaluación

Peso (%)

Carácter recuperable

R2

Pruebas de duración corta para evaluación continua.

10%

No

R1, R4

Pruebas de respuesta larga.

20%

Si

R1, R4

Pruebas de tipo test

10%

No

R3

Presentaciones orales

5%

No

R1, R4

Trabajos e informes

20%

Si, hasta un 10%

R1, R2, R3

Pruebas e informes de trabajo experimental

40%

Si, hasta un 20%

 

Todos los ejercicios tendrán una nota entre 0 y 10 puntos. En todas las actividades de evaluación se indicará el tipo de prueba y el peso que tiene en la nota final de la asignatura según la tabla indicada anteriormente. Los criterios de corrección de cada tipo de actividad de evaluación serán puestos a disposición de los estudiantes en miaulario antes de la realización de la prueba. Un estudiante con nota mayor o igual a 5,0 despues de la aplicación de las ponderaciones supera la asignatura. Se puede recuperar hasta un 50% de la nota según se indica en la tabla. La recuperación se aplicará a los estudiantes que no hayan superado todas las actividades de evaluación previstas durante el semestre.

 

Subir

Temario

Programa de teoría.

Tema 1. Programación concurrente. (4 horas). Ventajas y dificultades. Soluciones típicas. Mecanismos tradicionales, Monitores. Soluciones modulares. Condiciones de consistencia. Sincronización wait-free. Imposibilidad del consenso. Programación no-bloqueante. Promesas. [R1, R4]

Tema 2. Sistemas distribuidos. (4 horas). Modelos de sistemas distribuidos. Paradigmas de comunicación. Algoritmos distribuidos fundamentales. Resultados de imposibilidad. Detectores de fallos no fiables. Consenso y orden total. Diseño e implementación de sistemas distribuidos. Middleware y componentes distribuidos. Despliegue de aplicaciones distribuidas. [R1, R4]

Tema 3. Rendimiento de sistemas. (4 horas). Conceptos básicos. Leyes de rendimiento. Tareas para la planificación de la capacidad. Caracterización de la carga de trabajo. Estándares de pruebas. Modelos a nivel de sistema y de componentes. Técnicas de predicción. Medidas de rendimiento. Sistemas de monitorización. [R2]

Tema 4. Sistemas operativos. (4 horas). Abstracciones funcionales (procesos, memoria, ficheros). Procesos, hilos, planificadores. Administración de memoria y diseño. Diseño de sistemas de ficheros. Gestión de E/S. Mecanismos de protección. Núcleos. Extensiones distribuidas. Hypervisores y MVs. [R1, R4]

Tema 5. Disponibilidad, escalabilidad y elasticidad. (6 horas). Definición formal de escalabilidad. Escalabilidad horizontal y vertical. Implementación: distribuidores de carga, caching, clustering. Tolerancia a fallos. Comunicación publicador/subscriptor. Técnicas y algoritmos de replicación. Computación en la nube y servicios: IaaS, PaaS, SaaS. Acuerdos de nivel de servicio (SLA). Escalabilidad de datos. El teorema CAP. NoSQL. Particionado de datos. Comparativas de rendimiento. [R1, R2, R4]

Tema 6. Sistemas empotrados. (4 horas). Nociones sobre sistemas físicos continuos y discretos. Sistemas de control. Diseño de sistemas empotrados. Tipos de procesadores. DSPs. Paralelismo y concurrencia. Arquitectura de memoria. Entradas/salidas. Convertidores A/D. Multitarea y planificación con garantías de tiempo real. Análisis de sistemas empotrados. Parámetros y análisis cuantitativo. [R1]

Tema 7. Sistemas ubicuos. (2 horas). Computación ubicua. Inteligencia ambiental. Internet of things. Redes de sensores. Algoritmos de agregación. [R1]

Programa de Prácticas.

Laboratorio 1. (2 horas). Implementación de monitores R/W y medidas de rendimiento. Implementación wait-free del renombrado de procesos. [R2, R3]

Laboratorio 2. (2 horas). Servidor http mediante NodeJS. Pruebas de carga. Diseño y desarrollo de un servicio Api Rest. [R1, R4, R3]

Laboratorio 3. (4 horas). Diseño y desarrollo de una aplicación mediante el MEAN stack desplegada en Heroku (PaaS). [R1, R3]

Laboratorio 4. (4 horas). Patrones de comunicación con 0MQ. Diseño y construcción de un distribuidor de carga para escalabilidad horizontal. [R1, R2, R3]

Laboratorio 5. (4 horas). Diseño e implementación de un sistema para el análisis de flujos de datos con garantías de tiempo-real. [R1, R3]

Proyecto cooperativo. Los estudiantes cuentan con 14 horas presenciales y 45 no presenciales para el desarrollo de un proyecto cooperativo que será propuesto al comienzo del semestre. [R1, R2, R3, R4]

Otras actuaciones fuera de horario.

- Se propondrán al menos dos conferencias invitadas. La primera de ellas, para tratar temas avanzados de sistemas distribuidos en la nube, y la segunda, para avanzar en el conocimiento de las técnicas actuales en el diseño de sistemas empotrados en entornos industriales.

- Se propondrá una visita a una empresa dedicada a la construcción de sistemas empotrados en entornos industriales.

Subir

Bibliografía

Acceda a la bibliografía que el profesorado de la asignatura ha solicitado a la Biblioteca.


V. K. Garg. Concurrent and distributed processing in Java.  Jon Wiley and Sons, 2004.

M. Raynal. Concurrent programming:  Algorithms, Principles and Foundations. Springer-Verlag, 2013.

D. A. Menasce, V. A.F. Almeida. Capacity planning for web performance. Metrics, models and methods. Prentice Hall, 1998.

M. Raynal. Distributed algorithms for message-passing systems. Springer-Verlag, 2013.

M. Raynal. Communication and agreement abstractions for fault-tolerant asynchronous distributed systems. Morgan and Calypool publishers, 2010.

E. Ashford, S. Arunkumar. Introduction to embedded systems.  LeeSeshia.org, 2011.

P. Krumm. Ubiquitous Computing Fundamentals. Chapman and Hall/CRC, 2009.

A. Tanenbaum. Sistemas Operativos modernos. Prentice-Hall, 1992.

M. Cantelon et al. Node.js in action. Manning Publications, 2014.

Artículos que se pondrán a disposición de los estudiantes a lo largo del curso para la preparación de trabajos.

Subir

Idiomas

Castellano

Subir

Lugar de impartición

Aulas de docencia y laboratorio de informática que la universidad establezca a tal efecto. Campus de Arrosadía, Pamplona

Subir