Curso 2014-15

Desarrollo de Aplicaciones Distribuídas

Titulación: Código: Tipo:
Grado en Ingeniería Informática 21426 Obligatoria 3º curso
Grado en Ingeniería Telemática 22608 Optativa
Grado en Ingeniería en Sistemas Audiovisuales 22674 Optativa

 

Créditos ECTS: 4 Dedicación: 100 horas Trimestre:

 

Departamento: Dpto. de Tecnologías de la Información y las Comunicaciones
Coordinador: Davinia Hernández-Leo
Profesorado:

Davinia Hernández-Leo, David Llanos 

Idioma:

Fundamentalmente en inglés.

Horario:
Campus: Campus de la Comunicación - Poblenou

 

Presentación de la assignatura

La asignatura "Desarrollo de Aplicaciones Distribuidas" (DAD) es una asignatura obligatoria específica de tercer curso del Grado en Ingeniería Informática.

El objetivo principal de la asignatura es conocer en profundidad los principios y aproximaciones tecnológicas existentes para el desarrollo de aplicaciones cuyos elementos se comunican por red. Esto incluye tanto los conceptos de sistemas distribuidos, los modelos de arquitecturas y middleware para implementar aplicaciones distribuidas, las dificultades implícitas de este tipo de sistemas, las técnicas utilizadas para resolver estos problemas intrínsecos, como las tecnologías existentes conformes a este modelos y que facilitan el diseño y desarrollo de este tipo de aplicaciones.

Otros aspectos más avanzados y / o específicos, como por ejemplo la computación distribuida, el diseño de modelos de datos distribuidos, aspectos avanzados de la programación de aplicaciones Web, o los protocolos de red distribuidos; quedan fuera de los contenidos de este curso. De esta forma el alumno tendrá la oportunidad de profundizar en estas materias a través de asignaturas optativas que complementan esta asignatura.

 

Prerequisitos

Complementa las asignaturas de "Redes y Servicios" y "Protocolos y Aplicaciones Distribuidas". Si en estas asignaturas se tratan los protocolos de la arquitectura TCP / IP en los que se sustentan las redes de comunicaciones, en DAD se sube el nivel de abstracción hasta el nivel más alto, para desarrollar aplicaciones en un entorno específicamente distribuido . Paralelamente, dado que la asignatura requiere elementos de "Ingeniería del Software",  "Fundamentos de Programación" y "Programación Orientada a Objetos", se recomienda también haber superado estos tres cursos. Adicionalmente, la asignatura presupone conocimientos respecto a las áreas de redes y computadores, por lo que resulta importante haber cursado previamente las asignaturas de "Sistemas Operativos" y "Arquitectura de Computadores", así como seguir a lo largo del curso la asignatura de "Arquitectura de Redes" que se imparte también durante el primer trimestre del tercer curso.

 

Competencias

Competencias transversalesCompetencias específicas
Instrumentales

1. Capacidad de análisis y síntesis.

2. Capacidad de aplicar conocimientos al análisis de situaciones y la resolución de
problemas.

3. Capacidad de organizar y planificar.

4. Capacidad de comunicación con propiedad de forma oral y escrita, tanto con audiencias expertas como inexpertas.

Interpersonales

1. Capacidad de trabajo en equipo

Sistemáticas

1. Capacidad de aplicar con flexibilidad y creatividad los conocimientos adquiridos y adaptarlos a contextos y situaciones nuevas (por ejemplo, evaluar una
nueva tecnología).

2. Capacidad para progresar en los procesos de formación y aprendizaje de manera autónoma y continua.

3. Capacidad de motivación por la calidad y por el logro.

 

1. Evaluar las implicaciones de utilizar un modelo distribuido para la implementación de un sistema informático complejo.

2. Dominar el funcionamiento de los protocolos utilizados en la comunicación de aplicaciones.

3. Entender los diferentes modelos de comunicación entre aplicaciones y saber como aplicarlos en el diseño de un sistema.

4. Conocer tecnologías utilizadas habitualmente para la implementación de sistemas distribuidos.

5. Saber diseñar un sistema distribuido.

6. Tener la habilidad de implementar un sistema distribuido sencillo utilizando tecnologías específicas.

7. Habilidad para hacer programas que puedan inter-operar con servicios distribuidos existentes.

 

Evaluación

Para cursar con éxito la asignatura es necesario cumplir lo que se detalla en la siguiente tabla.

 

 Sistema de valoraciónMínimo para poder superar la asignaturaPeso en la nota final de la asignatura
Actividades de seminarios, y en clases de teoría.

Prácticas individuales cortas y cuestiones a resolver antes, durante y después de las sesiones de seminario. Se incluye la participación en actividades (como el análisis de casos reales de aplicaciones distribuidas) planteadas en clase de teoría.

Deben completarse todos los seminarios. (No recuperable) 

 20%

Prácticas

Una práctica (con diversos bloques) en parejas.

Mínimo de 5 sobre 10. (No recuperable)

 40%

Prueba agregada escrita

Se hace al final del trimestre. Cubre toda la materia de la asignatura (teoría, validación de prácticas y seminarios) i consta de un test i un conjunto de problemas y cuestiones.

Mínimo de 5 sobre 10.

(Recuparable en Julio)

 40%

La asignatura se supera teniendo un mínimo de 5 puntos (sobre 10) en la nota final. 

 

Contenidos

- Bloque de contenido 1. Conceptos básicos de los Sistemas Distribuidos: definiciones, arquitecturas distribuidas, requisitos no funcionales, transparencia, concepto de middleware.

- Bloque de contenido 2. Los orígenes del Middleware. Aplicaciones distribuidas en Unix. Inter-Process Comunication, programación con Sockets. Remote Procedure Call (RPC).

- Bloque de contenido 3. Middleware Orientado a Objetos (Objetos distribuidos). Aplicaciones distribuidas con Java: Remote Method Invocation (RMI). Aplicaciones distribuidas multi-lenguaje: Common Object Request Broker Architecture (CORBA)

- Bloque de contenido 4. Middleware Orientado a Componentes. Modelos de componentes orientado a lógica de aplicación, datos o presentación (J2EE/EJB, .NET/DCOM, Servlets, ...).

- Bloque de contenido 5. Middleware Orientado a Servicios. Modelo SOA, Web Services, SOAP, REST, JSON.

- Bloque de contenido 6. Aspectos avanzados. Cloud Computing: Definiciones, características y tipos. WebSockets.

 

Metodología

TipoModalidadDescripción

Clase magistral

En aula, plenario

Se utiliza el PC, proyector y pizarra como apoyo a las explicaciones teóricas. En estas explicaciones se intercalan actividades (tales como, análisis de casos reales de diseño de aplicaciones distribuidas, debates sobre artículos sobre modelos y tecnologías específicas...) donde los estudiantes podrán participar activamente.

Seminarios

En aula, grupos reducidos

Los alumnos trabajan fundamentalmente de manera individual con el fin de realizar pequeñas prácticas donde aplican las tecnologías estudiadas en la asignatura. También se combinan diferentes dinámicas de grupo para intercambiar y debatir las soluciones individuales.

Prácticas

En aulas de ordenadores, grupos reducidos

Proyecto (práctica larga) centrada en el desarrollo de una aplicación distribuida. Esta práctica se hace en pareja y se debe entregar un informe explicando los resultados obtenidos.

Preparación de seminarios, trabajo en las prácticas y estudio de conceptos teóricos Fuera del aula, individual y en grupo

Preparación de los seminarios y continuación del trabajo hecho en los seminarios. Avance de prácticas y escritura de informes. Estudio de los conceptos teóricos para la preparación de seminarios, prácticas y pruebas escritas.

DAD tiene 4 créditos ECTS que corresponden a 100 horas de trabajo del alumno, de las cuales 36 son presenciales. Estas 36 horas están divididas en sesiones magistrales (18 horas), sesiones de grupo medio (10 horas) y sesiones de seminarios con grupos pequeños de alumnos (8 horas). La distribución de horas por bloques de contenido se detalla en la tabla siguiente.

 Horas en el aulaHoras fuera del aula
Bloques de contenidoGrupo grandeGrupo medianoGrupo pequeño 

B1

4

 

 

8

B2

2

 

2

10

B3

2

   

4

B4

2

  2

10

B5

4

10

2

 20

B6

4

 

2

12

Total:

 18

10

8

 64

Total: 100

 

Recursos

Como bibliografía básica para consulta se recomienda: Couloris, G., Dollimore, J., Kindberg, T. (2015). Distributed Systems: Concepts and Design (4th Edition). Addison Wesley.

La bibliografía complementaria y recursos didácticos para cada bloque se irán indicando a lo largo de la asignatura vía el AG.