Saltar al contingut Menu
Mapa
  • Inicio
  • Información
  • Contacto
  • Mapa

Programación Concurrente y Distribuida (PCD)

Créditos Dept.
7.5 (6.0 ECTS) CS

Profesores

Responsable:  (-)
Otros:(-)

Objectivos Generales

Se pretende que los estudiantes aprendan a diseñar e implementar programas concurrentes y distribuidos de forma segura y fiable. Para guiar a los estudiantes en las tareas de diseño se introduce el LST (Labelled System Analyser), un lmodelo que permite diseñar, visualizar y analizar sistemas de transiciones. Con el fin de que los estudiantes tengan una visión más completa de la concurrencia y de los sistemas distribuidos, se enseñan otros modelos como por ejemplo las Redes de Petri. Con el fin de tener una visión completa de los pasos que van de la modelización a la implementación se realizan prácticas en los lenguajes de programación Java y Erlang. Las prácticas de Redes de Petri se realizan en WoPeD.

Objectivos Específicos

Conocimientos

  1. Que conozcan los sistemas de transición etiquetados como herramienta de diseño y análisis de los programas concurrentes y distribuidos.
  2. Que conozcan algún software, por ejemplo LTS, de diseño y análisis de sistemas de transición.
  3. Que conozcan las Redes de Petri como otro modelo formal de diseño y análisis.
  4. Que tengan una idea clara de los problemas básicos que pueden aparecer en programación concurrente y distribuida.
  5. Que conozcan las partes de Java y Erlang relacionadas con programación concurrente y distribuida.

Habilidades

  1. Que los estudiantes puedan modelar y analizar a mano ejemplos muy sencillos de programas concurrentes mediante un sistema de transición etiquetado.
  2. Que puedan utilizar con fluidez una herramienta de análisis basado en sistemas de transición, por ejemplo el LTS.
  3. Que sepan utilizar las Redes de Petri como otro modelo formal de diseño y análisis.
  4. Que puedan utilizar con fluidez las partes de Java y Erlang relacionadas con programación concurrente y distribuida.

Competencias

  1. Que puedan razonar de manera formal, empleando si hace falta programas, con objeto de poder decir si un diseño es o no correcto.
  2. Poder pasar de herramientas abstractas de diseño y análisis e implementaciones en lenguajes de programación, como Java y Etlang.

Contenidos

Horas estimadas de:

T P L Alt L Ext. Est O. Ext.
Teoria Problemas Laboratorio Otras actividades Laboratorio externo Estudio Otras horas fuera del horario fijado

1. Sistemas de transición y álgebra de procesos.
T      P      L      Alt    L Ext. Est    O. Ext. Total 
6,0 6,0 3,0 0 3,0 12,0 0 30,0
Sistemas de transición y procesos primitivos. Operaciones de prefijo y selección. Procesos concurrentes y su ejecución. Descripción de los sistemas LTS. Implementación en Java i Erlang.

2. Objetos concurrentes, exclusión mutua y condiciones de sincronización, problema del deadlock.
T      P      L      Alt    L Ext. Est    O. Ext. Total 
4,0 4,0 2,0 0 2,0 9,0 0 21,0
Problema de la interferencia destructiva. Locks y exclusión mutua. Modelado de semáforos y del problema de los monitores imbricados. Problema de deadlock, análisis mediante LST.

3. Propiedades de seguridad (safety) y vivacidad (liveness).
T      P      L      Alt    L Ext. Est    O. Ext. Total 
4,0 4,0 2,0 0 2,0 9,0 0 21,0
Descripción y ejemplos de propiedades de seguridad e implementación mediante LTS. Descripción de las propiedades de vivacidad, en especial la de progreso, e implementación en LTS.

4. Paso de mensajes y arquitectura cliente/servidor, otras arquitecturas.
T      P      L      Alt    L Ext. Est    O. Ext. Total 
6,0 6,0 3,0 0 3,0 12,0 0 30,0
Paso de mensajes. Arquitectura cliente servidor.
Introducción a otras arquitecturas: pipelines de filtros, supervisor/trabajadores, anunciante/oyente.
Paso de mensajes en Erlang. Arquitectura cliente/servidor en Erlang.

5. Redes de Petri, modelo y algoritmos básicos.
T      P      L      Alt    L Ext. Est    O. Ext. Total 
4,0 4,0 2,0 0 2,0 9,0 0 21,0
Ejemplos de redes de Petri. Algoritmo de Karp y Miller.

Clases especiales de redes de Petri. Introducción a WoPed.

6. Redes de Petri; modelado.
T      P      L      Alt    L Ext. Est    O. Ext. Total 
4,0 4,0 2,0 0 2,0 9,0 0 21,0
Estudio de casos: "reordenamiento distribuido", exclusión mutua autoestabilizante, protocolos con mensajes ack.


Total por tipo T      P      L      Alt    L Ext. Est    O. Ext. Total 
28,0 28,0 14,0 0 14,0 60,0 0 144,0
Horas adicionales dedicadas a la evaluación 6,0
Total horas de trabajo para el estudiante 150,0

Metodología docente

En las clases de teoría se presentarán los conceptos básicos mediante ejemplos. En las clases de ejercicios, los estudiantes resolverán ejercicios sobre los temas de las clases de teoría. En las clases de laboratorio se verá cómo implementar estos problemas (o problemas parecidos) en Java y Erlang. Tanto en clases de problemas como de laboratorio se podrán utilizar herramientas de diseño y análisis como el LTS.

Método de evaluación

Habrá examen final y nota de laboratorio. El examen será de problemas sobre la teoría explicada. La nota de laboratorio reflejará la calidad del trabajo realizado. La nota final será:

0.6*examen final + 0.4*laboratorio

Bibliografía básica

  • Jeff Magee & Jeff Kramer Concurrency : State Models & Java Programming (Second Edition), John Wiley & Sons, 2006.
  • Perterson, James Petri net theory and the modeling of systems, Prentice-Hall, 1981.
  • José Tomás Palma Méndez ... [et al.] Programación concurrente, International Thomson, 2003.
  • Joe Amstrong Programming Erlang, Software for a Concurrent World, Pragmatic Bookshelf, 2007.
  • Sharon Zakhour, Scott Hommel, Jacob Royal, Isaac Rabinovitch, Tom Risser, Mark Hoeber The Java Tutorial, Fouth Edition, a Short Course on the Basics, Addison Wesley, 2006.

Bibliografía complementaria

  • Doug Lea Concurrent programming in Java (Second Edition) : Design Principles and Patterns, Addison-Wesley, 2000.
  • Bil Lewis, Daniel J. Berg Multithreaded programming with Java technology, Prentice Hall, 2000.
  • Francesco Cesarini, Simon Thompson Erlang, a Concurrent Approach to Software Development, O' Reilly, 2009.

Enlaces web

  1. http://java.sun.com/


  2. http://www.doc.ic.ac.uk/~jnm/book/


Capacidades previas

Buenos conocimientos de Java a nivel de clases y objetos.


Compartir

 
logo FIB © Facultad de Informática de Barcelona - Contacto - RSS
Esta web utiliza cookies propias para ofrecerle una mejor experiencia y servicio. Si continúa la navegación, entendemos que acepta nuestra política de cookies. Versión clássica Versión móvil