Curso 2010/2011 [http://www.ctr.unican.es/asignaturas/procodis_3_II/index.html] Profesores: Laura Barros barrosl@unican.es Jos Mara Drake drakej@unican.es Miguel Tellera de Esteban telleriam@unican.es Objetivos de la asignatura: Es formar al alumno para que sea capaz de concebir, especificar, disear, implementar y verificar aplicaciones informticas en la que se utilice programacin concurrente y programacin distribuida. Se proporcionan los conceptos bsicos de concurrencia, sus ventajas, los problemas y las patologas que conlleva, as como los recursos y las primitivas de sincronizacin que histricamente se han introducido para realizar una programacin concurrente segura. Se forma al alumno para que pueda implementar programas con concurrencia virtual sobre un monoprocesador, como los basados en un lenguaje de programacin concurrente como Java, o bien programacin con concurrencia fsica como la basada en plataformas distribuidas. Son objetivos concretos de esta asignatura: Conocer y practicar la programacin concurrente, as como identificar sus ventajas y problemas en contraste con la programacin secuencial. Conocer los mtodos formales para especificar, analizar y verificar programas concurrentes. Conocer y practicar la programacin concurrente en Java. Conocer los principales recursos de comunicacin, de sistemas operativos y de middleware de distribucin en que se basa los sistemas distribuidos basados en plataformas heterogneas. Conocer y practicar el diseo y la implementacin de aplicaciones distribuidas basadas en RMI Java, en middleware tipo CORBA y en Java de Tiempo Real. Aptitudes destrezas El alumno debe ser capaz de concebir una aplicacin como concurrente, a fin de decidir si presenta ventajas frente a la concepcin secuencial de la misma. Debe conocer las alternativas de implementar una aplicacin concurrente tanto en un entorno monoprocesador utilizando un lenguaje de programacin, o los recursos de los sistemas operativos, o una plataforma distribuida. Debe saber programar aplicaciones concurrentes utilizando threads Java. Debe ser capaz de concebir un sistema como distribuido, a fin de decidir si presenta ventajas frente a una concepcin centralizada. Debe saber implementar una aplicacin distribuida utilizando RMI Java y CORBA. Saber integrar la introduccin de los niveles de concurrencia en el proceso de desarrollo de una aplicacin informtica, como medio de simplificar la estructura interna, optimizar el uso de los recursos disponibles, mejorar su respuesta temporal y hacerlas mas robustas frente a fallos. Pgina 1 PROGRAMA DE LA ASIGNATURA a) Teora: 4.5 Crditos (45 horas) 1 Introduccin a la programacin concurrente. (3 h) Necesidad y mbito de aplicacin. Procesos. Mecanismos de soporte de la concurrencia Patologas especficas de programacin concurrente. 2. Sincronizacin en programacin concurrente. (4 h.) Modelos basados en intercambio de mensajes: Modelos basados en memoria compartida: Semforos, regiones crticas y monitores. Completitud y expresividad de los mecanismos sincronizacin.
3. Modelo Java de programacin concurrente. (6 h) Creacin, propiedades y ciclo de vida de los hilos de concurrencia. Mecanismos de sincronizacin entre hilos concurrentes. Jerarqua de hilos. Patrones de concurrencia implementados en Java. 4. Arquitecturas y patrones para aplicaciones concurrentes (4 h) Patrones de concurrencia. Arquitecturas para aplicaciones concurrentes. 5. Mtodos formales de expresin de la concurrencia. (3h) lgebra de procesos. Redes de Petri. Anlisis de patologas. 6 Programacin distribuida. (4 h) Necesidad y mbitos de aplicacin. Modelos de programacin distribuida. Soporte de la programacin distribuida. Redes de comunicacin, sistemas operativos y middleware de distribucin. Transacciones. Servicios de soporte de la programacin distribuida. 7 Java distribuido RMI (5 h) Modelo Java de programacin distribuida. Clases e interfaces Java para RMI. Invocacin de servicios. Eventos y notificaciones. Soporte de red. 8 Programacin distribuida con objetos y componentes. (8 h) Arquitecturas basadas en objetos distribuidos. Lenguajes de descripcin de las interfaces. Correspondencia con los lenguajes de programacin. Servicios distribuidos. Referencia a objetos. Clases e interfaces Java para programacin basada en objetos distribuidos. 8 Programacin Java de Tiempo Real. (3 h) Arquitecturas basadas en Java de Tiempo Real. Clases e interfaces Java para programacin basada en Java de Tiempo Real. PROGRAMACIN SEMANAL Lunes y Martes (8:30:9:30): Avance conceptual Viernes 8:30-9:30: Anlisis de un ejemplo. Y trabajo personal siguiente semana. Mircoles 8:30-210:30 Jueves 8:30-10:30: Trabajo en laboratorio.2,54cm Pgina 2 b) Proyectos en laboratorio: 3 crditos (30 horas). Seminario I: Descripcin de la concurrencia y distribucin con UML (3 horas) Aula: Seminario de Dpto. de Electrnica y Computadores Objetivo: Conocer los recursos que ofrece UML para modelar y describir componentes, aplicaciones y sistemas concurrentes y distribuidos. Utilizar las herramientas UML CASE para el desarrollo aplicaciones en Java. Prctica 1,2,3: Implementacin aplicaciones utilizando Java concurrente. (6 horas) Lab. de Tiempo Real. (Dpto. de Electrnica). Objetivo: Transformacin de una aplicacin secuencial a una aplicacin concurrente. Implementacin de la aplicacin utilizando diferentes patrones de concurrencia. Prctica 4: Implementacin de una aplicacin distribuida utilizando sockets. (2 horas) Laboratorio de Tiempo Real (Dpto. de Electrnica). Objetivo: Implementacin de una aplicacin concurrente como aplicacin distribuida utilizando sockets. Prctica 5,6,7: Implementacin de una aplicacin distribuida utilizando RMI. (6 horas) Laboratorio de Tiempo Real (Dpto. de Electrnica). Objetivo: Transformacin de una aplicacin concurrente a aplicacin distribuida utilizando Java RMI. Proyecto 8: Diseo de una aplicacin distribuida. (1 horas) Seminario (Dpto. de Electrnica). Objetivo: Diseo de una aplicacin distribuida a partir de su especificacin. Prctica 9,10: Implementacin de una aplicacin distribuida utilizando ICE. (4 horas) Laboratorio de Tiempo Real (Dpto. de Electrnica). Objetivo: Transformacin de una aplicacin concurrente a una aplicacin distribuida implementada utilizando el middleware ICE. LIBROS DE TEXTO DRAKE J.M.: "Programacin concurrente y distribuida". [http://www.ctr.unican.es/asignaturas/procodis_3_II/index.html] Bsica - JAVADOC, referencia de la Api J2SE 6.0. Disponible online. - B. GOET! "Ja#a conc$rrenc% in prac&ice'. Addison (esle%, 2006. - Sco&& Oa)s, *enr% (on+, ,i)e -o$)ides! "Ja#a T.reads /Ja#a Series /O01eill% 2 Associa&es33' O01eill% 2 Associa&es boo)s 4 edi&ion /20053 - Geor+e Co$loris, Jean Dolli6ore, Ti6 7indber+!' Dis&rib$&ed S%s&e6s! Concep&s and Desi+n' Addison (esle%, 5 edi&ion /20083 - ,ic.i *ennin+, ,ar) Spr$iell! Dis&rib$&ed 9ro+ra66in+ :i&. ;ce /eroC3. Disponible online - Booc. e& al!El -en+$a<e =nificado de ,odelado. G$>a del =s$ario?, 2da edic. 9earson Ed$caci@n /20063 Pgina 3 Complementaria - C.arles ,. 7oAiero)! T.e TC9?;9 +$ide ! a co6pre.ensi#e, ill$s&ra&ed in&erne& pro&ocols reference /20083 - 1BC CD4 /TC93, 1BC CDE/;93, 1BC C6F /=D93. Disponible online. - Do$+ -ea! "Conc$rren& 9ro+ra66in+ in Ja#a/T,3! Desi+n 9rinciples and 9a&&ern' 9ren&ice *all 9T1G 2 edi&ion /EDDD3 - Jeff ,a+ee, Jeff 7ra6er! "Conc$rrenc%! S&a&e ,odels and Ja#a 9ro+ra6s' Jo.n (ile% 2 SonsG 2 edi&ion /20063 - 1ober& Orfali, Dan *ar)e%, and Jeri Ed:ar! "T.e essencial Dis&rib$&ed Ob<ec&s S$r#i#al G$ide' Jo.n (ile% 2 Sons /EDDD3 - Dan *ar)e%, 1ober& Orfali !"Clien&?Ser#er 9ro+ra66in+ :i&. Ja#a and CO1BA' Jo.n (ile% 2 SonsG 2nd B)2Cdr edi&ion /EDDF3 - Andre: (ellin+s! Conc$rren& and 1eal-Ti6e 9ro+ra66in+ in Ja#a /20053 - ,ar)o Bo+er! " Ja#a in Dis&rib$&ed S%s&e6s! Conc$rrenc%, Dis&rib$&ion and 9ersis&ence' Jo.n (ile% 2 Sons, E edi&ion /200E3 - ,iles % *a6il&on !-earnin+ =,- 2.0. OH1eill% /20063 SISTEMA DE EVALUACION: Al alumno se le evaluar de forma continuada a travs del trabajo que realice individualmente en el laboratorio, as como de las memorias que se le encargue realizar sobre las aplicaciones que haya desarrollado. Esta actividad se evala con los siguientes criterios: Aprobado; Demuestra conocer los conceptos y manejar las herramientas. Notable: Contribuye de forma creativa al desarrollo de la aplicacin. Sobresaliente y MH. Demuestra dominar el proceso de desarrollo de aplicaciones concurrentes y distribuidas demostrando gran iniciativa y creatividad en el desarrollo de las mismas. La evaluacin continuada se evaluar entre 0 y 8 puntos. Se darn dos calificaciones parciales: 10-11-10 y 11-11-10: Programacin concurrente 19-01-11 y 20-01-11: Programacin distribuida Si el alumno est conforme con la calificacin parcial esta pasa a ser la calificacin definitiva. Si el alumno no se encuentra conforme con la calificacin que se le asigna en el proceso de evaluacin continuada, podr presentarse al examen escrito final que ser evaluado entre 0 y 10. En este caso la calificacin ser 0.5 por la calificacin continuada ms 0.6 por la calificacin del examen final. FECHAS DE EXMENES: Evaluaciones continuadas: Programacin concurrente: 10 y 11 Noviembre Programacin distribuida: 19 y 20 de Enero Exmenes Finales: Febrero: da: 01-02-11 hora: 9:00 (Fijado por Facultad) Septiembre: da: 05-09-11 hora: 16:00 (Fijado por Facultad) Pgina 4 Calendario provisional 2010/2011. Pgina 5