Aplicaciones Distribuidas Guia Parte2

15
2014-2015 |Dr. Rafael Pastor Vargas GRADO EN INGENIERÍA EN TECNOLOGÍAS DE LA INFORMACIÓN GRADO GUÍA DE ESTUDIO DE LA ASIGNATURA APLICACIONES DISTRIBUIDAS 2ª PARTE | PLAN DE TRABAJO Y ORIENTACIONES PARA SU DESARROLLO

description

aplica

Transcript of Aplicaciones Distribuidas Guia Parte2

Page 1: Aplicaciones Distribuidas Guia Parte2

UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA

2014-2015

|Dr. Rafael Pastor Vargas

GRADO EN INGENIERÍA EN TECNOLOGÍAS DE LA INFORMACIÓN

GRADO

GUÍA DE ESTUDIO DE LA ASIGNATURA

APLICACIONES DISTRIBUIDAS

2ª PARTE | PLAN DE TRABAJO Y ORIENTACIONES PARA SU DESARROLLO

Page 2: Aplicaciones Distribuidas Guia Parte2

APLICACIONES DISTRIBUIDAS

UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA 2

1.- PLAN DE TRABAJO La asignatura Aplicaciones distribuidas contempla los conceptos específicos que se deben tener en cuenta a la hora de programar e implementar soluciones de desarrollo basado en el concepto de ubicación distribuida de los componentes de una aplicación. La definición temporal de tareas y actividades está focalizada a conseguir la consecución de los objetivos de la asignatura, teniendo en cuenta que se condensan muchos principios y paradigmas relativos al desarrollo e implementación de las aplicaciones distribuidas: paradigmas de computación, tecnologías específicas de conectividad, objetos distribuidos, componentes de servicio, etc. Es importante asimilar los conceptos teóricos para poder realizar correctamente la práctica final de la asignatura. El objetivo de esta asignatura es que el estudiante adquiera los conocimientos y competencias reflejados en la guía general de la asignatura. Aplicaciones distribuidas tiene asignados 6 ETCS (créditos europeos). Un crédito equivale a 25 horas, lo que implica unas 150 horas de estudio y trabajo en total a lo largo de las 12/13 semanas disponibles para el curso. Los créditos asignados están en consonancia con los contenidos, distribuidos en siete módulos, tal y como se detalla en el programa de la asignatura. Se incluye el desarrollo de prácticas/trabajos no presenciales que deberán entregase a través de los recursos de la plataforma virtual. En el caso del trabajo final, y debido a su extensión, se dedican aproximadamente cuatro semanas al desarrollo de la dicha práctica/trabajo (unas 40 horas de trabajo práctico por parte del alumno). En el cronograma semanal que se muestra a continuación se ha estimado el esfuerzo del estudiante según el siguiente baremo:

Aprendizaje de teoría: 70 horas. De ellas se invertirán:

- Lectura y comprensión del material didáctico del libro de texto base: (véase el cronograma, a razón de unas 5 páginas/hora): 56 horas = 2.24 ECTS.

- Realización de los cuestionarios de evaluación: 14 horas = 0.56 ECTS.

Realización del trabajo sobre RMI, propuesto por el equipo docente: 16 horas = 0.64 ECTS. Realización del trabajo sobre Servicios Web, propuesto por el equipo docente: 15 horas = 0.6 ECTS. Realización del trabajo final, propuesto por el equipo docente: 40 horas = 1.6 ECTS. Realización de la Prueba Presencial (Examen): 2 horas = 0,08 ECTS. Contacto virtual a través de la plataforma (participación en foros, consulta de dudas, etc.): 7 horas =

0,28 ECTS. Créditos totales: 6 ECTS. El cuadro siguiente muestra el cronograma que marca unas pautas adecuadas para que el alumno medio, que comienza a estudiar al principio del primer semestre, alcance los objetivos al final del curso. Este cronograma incluye los contenidos de cada tema

Page 3: Aplicaciones Distribuidas Guia Parte2

|Dr. Rafael Pastor Vargas

UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA 3

Cronograma Semanal1

BLOQUES TEMÁTICOS

LECTURAS Y MATERIALES DE ESTUDIO

Ho

ra

s

ACTIVIDADES

Ho

ra

s

To

tal

h.

Se

ma

na

Módulo I. Introducción a la computación distribuida.

Capítulo 1 del libro de texto (páginas 1-44)

9,0

Foros Realización del cuestionario de autoevaluación del módulo 1, disponible en la plataforma

1,0 2,0

12,0 1

Módulo II: Paradigmas de la computación distribuida

Capítulo 2 del libro de texto (páginas 45-70) Capítulo 3 del libro de texto (páginas 71-90)

5,0 4,0

Foros Realización del cuestionario de autoevaluación del módulo 2, disponible en la plataforma

1,0 2,0

12,0 2

Módulo III: Los Sockets Java Capítulo 4 del libro de texto (páginas 91-124)

7,0

Foros Realización del cuestionario de autoevaluación del módulo 3, disponible en la plataforma

1,0 2,0

10,0 3

Unidad IV: El paradigma cliente-servidor Capítulo 5 del libro de texto (páginas 125-169)

9,0

Foros Realización del cuestionario de autoevaluación del módulo 4, disponible en la plataforma

1,0 2,0

12,0 3-4

Unidad V: Objetos distribuidos en Java: RMI

Capítulo 7 del libro de texto (páginas 191-218) Capítulo 8 del libro de texto (páginas 218-244)

6,0 5,0

Foros Realización del cuestionario de autoevaluación del módulo 5, disponible en la plataforma

1,0 2,0

14,0 4-5

Unidad V: Objetos distribuidos en Java: RMI Trabajo sobre RMI (Asignación primera semana)

12,0 12,0 6

1 Se considera una media semanal de 12 horas de trabajo, teniendo en cuenta un curso lectivo de 13 semanas.

Page 4: Aplicaciones Distribuidas Guia Parte2

APLICACIONES DISTRIBUIDAS

UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA 4

Unidad VI: CORBA en Java Capítulo 10 del libro de texto (páginas 293-319)

5,0

Trabajo sobre RMI (Asignación segunda semana) Foros Realización del cuestionario de autoevaluación del módulo 6, disponible en la plataforma

4,0 1,0 2,0

12 7

Unidad VII: Servicios Web

Apuntes proporcionados por el equipo docente (16 páginas) Capítulo 11 del libro de texto (Apartados 11.3 y 11.4, páginas 344-358)

3,0 3,0

Foros Realización del cuestionario de autoevaluación del módulo 7, disponible en la plataforma Trabajo sobre Servicios Web (Asignación primera semana)

1,0 2,0 3,0

12,0 8

Unidad VII: Servicios Web

Trabajo sobre Servicios Web (Asignación segunda semana)

12,0 12,0 9

TRABAJO FINAL 40,0 40,0 10-13

PRUEBA PRESENCIAL 2,0 2,0

Page 5: Aplicaciones Distribuidas Guia Parte2

|Dr. Rafael Pastor Vargas

UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA 5

2.- ORIENTACIONES PARA EL ESTUDIO DE LOS CONTENIDOS Dado que la organización de la asignatura es por módulos temáticos, utilizaremos éstos para presentar las orientaciones para seguir el plan de trabajo. Los bloques temáticos son los siguientes:

MÓDULO I: INTRODUCCIÓN A LA COMPUTACIÓN DISTRIBUIDA MÓDULO II: PARADIGMAS DE LA COMPUTACIÓN DISTRIBUIDA MÓDULO III: LOS SOCKETS JAVA MÓDULO IV: EL PARADIGMA CLIENTE-SERVIDOR MÓDULO V: OBJETOS DISTRIBUIDOS EN JAVA: RMI MÓDULO VI: CORBA EN JAVA MÓDULO VII: SERVICIOS WEB

2.1 MÓDULO I: INTRODUCCIÓN A LA COMPUTACIÓN DISTRIBUIDA

2.1.1.- Presentación La computación distribuida es en la actualidad la tecnología estándar de desarrollo de aplicaciones basadas en la Web. Para ver las tendencias actuales es preciso hacer un análisis de las historia y fundamentos asociados a este paradigma global de programación, mostrando en detalle los factores que inciden en la propia computación distribuida: la red de comunicación, los sistemas operativos subyacentes y el proceso de desarrollo software. 2.1.2- Contextualización en el conjunto de la materia o asignatura Estos contenidos deberán ser los primeros que el alumno tendrá que estudiar, y en este orden, antes de abordar contenidos más específicos sobre el desarrollo de aplicaciones distribuidas. El módulo comienza con una pequeña sección de definiciones, empleadas a lo largo del curso y que son imprescindibles para comprender de manera correcta el contenido de toda la asignatura. Posteriormente, se trata desde una perspectiva histórica de la evolución de la computación hacia las aplicaciones distribuidas, haciendo un repaso de las diferentes tecnologías empleadas. Las aplicaciones distribuidas se ejecutan sobre las capacidades de los sistemas operativos y las redes de interconexión, por lo que se hace un repaso de sus fundamentos básicos. Finalmente, se introducen conceptos de ingeniería de software con el fin de disponer de las bases necesarias para entender los paradigmas de desarrollo de las aplicaciones distribuidas. El objetivo general de este módulo consiste en familiarizarse con los conceptos y funcionalidad básicos de los sistemas distribuidos y plantearse su uso en proyectos reales.

2.1.3- Información y orientaciones para el trabajo con los materiales requeridos para el estudio del bloque El módulo se estudia a través del libro de texto proporcionado como bibliografía básica, y en concreto se corresponde con el Capítulo 1 del libro: COMPUTACIÓN DISTRIBUIDA: FUNDAMENTOS Y APLICACIONES, PEARSON ADDISON-WESLEY (Mei-Ling Liu). El estudio del módulo se realizará durante una semana (véase el cronograma de la sección anterior). Por otra parte, el Equipo Docente podrá publicar en la plataforma los enlaces de interés para cada tema, así como otro material auxiliar que pueda considerar de interés, de forma que se complemente el material contenido en el libro.

Page 6: Aplicaciones Distribuidas Guia Parte2

APLICACIONES DISTRIBUIDAS

UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA 6

2.1.4.- Descripción detallada de cada una de las actividades de aprendizaje a realizar Este módulo es una introducción a las aplicaciones distribuidas, por lo que fundamentalmente se realizarán actividades de consulta de dudas en el foro correspondiente. Al finalizar el módulo, se debe realizar el cuestionario de evaluación del módulo, en el que se presentarán veinte preguntas de tipo test acerca de los contenidos del módulo. Las preguntas tendrán cuatro posibles valores, de los cuales sólo uno de ellos es el correcto. Cada pregunta se puntuará con 0.5 puntos y cualquier fallo de contestación restará 0.2 puntos a la calificación final del cuestionario.

2.2 MÓDULO 2: PARADIGMAS DE LA COMPUTACIÓN DISTRIBUIDA

2.2.1.- Presentación Existen diferentes aproximaciones a la computación distribuida, denominadas paradigmas. Entre ellas se pueden destacar los modelos de desarrollo basados en modelo cliente-servidor, basados en pares de iguales, basados en mensajes o los modelos más “antiguos” que usaban RPC (aunque en la actualidad hay otro modelo RPC, denominado XML-RPC que se emplea de manera extensa). El módulo pretende mostrar las características más relevantes de cada una de estas aproximaciones. 2.2.2- Contextualización en el conjunto de la materia o asignatura Una vez vistos los fundamentos de la computación distribuida, se pasa a detallar los diferentes métodos de comunicación disponible en entornos que tienen como unidad de ejecución el proceso, indicando las funcionalidades asociadas a este tipo de entornos: uso de temporizadores, mensajes síncronos y asíncronos, representación de la información y protocolos de comunicación entre procesos. La comunicación entre procesos se puede modelar a través de diagramas de flujo, por lo que se mostrarán ejemplos de los mismos. Teniendo en cuenta estos mecanismos/funcionalidades se pueden definir diferentes paradigmas de desarrollo en ecosistemas de naturaleza distribuida, por lo que a continuación se muestran los diferentes paradigmas de desarrollo para implementar aplicaciones distribuidas, finalizando el contenido del módulo con un análisis crítico de los factores necesarios para decidir el tipo de paradigma usado y que se basa en la comparación de las diferentes alternativas. El objetivo general de este módulo consiste en identificar los diferentes paradigmas de la computación distribuida, recopilando información relativa problemas asociados a la programación distribuida: escalabilidad, pérdidas de rendimiento, soporte multiplataforma.

2.2.3- Información y orientaciones para el trabajo con los materiales requeridos para el estudio del bloque El módulo se estudia a través del libro de texto proporcionado como bibliografía básica, y en concreto se corresponde con los Capítulos 2 y 3 del libro: COMPUTACIÓN DISTRIBUIDA: FUNDAMENTOS Y APLICACIONES, PEARSON ADDISON-WESLEY (Mei-Ling Liu). El estudio del módulo se realizará durante una semana (véase el cronograma de la sección anterior). Por otra parte, el Equipo Docente podrá publicar en la plataforma los enlaces de interés para cada tema, así como otro material auxiliar que pueda considerar de interés, de forma que se complemente el material contenido en el libro. 2.2.4.- Descripción detallada de cada una de las actividades de aprendizaje a realizar

Page 7: Aplicaciones Distribuidas Guia Parte2

|Dr. Rafael Pastor Vargas

UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA 7

Este módulo analiza los diferentes paradigmas empleados para el desarrollo de las aplicaciones en entornos distribuidos, por lo que fundamentalmente se realizarán actividades de consulta de dudas en el foro correspondiente. Al finalizar el módulo, se debe realizar el cuestionario de evaluación del módulo, en el que se presentarán veinte preguntas de tipo test acerca de los contenidos del módulo. Las preguntas tendrán cuatro posibles valores, de los cuales sólo uno de ellos es el correcto. Cada pregunta se puntuará con 0.5 puntos y cualquier fallo de contestación restará 0.2 puntos a la calificación final del cuestionario.

2.3 MÓDULO 3: Los Sockets Java

2.3.1.- Presentación Uno de los primeros modelos de programación distribuida que se emplearon (y que aún sigue en vigor) es el basado en sockets (conectores). Estos conectores son flujos de información entre dos servicios, usualmente en computadores diferentes, que definen su propio protocolo de intercambio de información. El módulo presenta los dos protocolos basados en conectores: UDP y TCP, finalizando con una presentación al uso de conectores seguros en entornos donde se necesita proteger la información que se transmite entre los servicios. 2.3.2- Contextualización en el conjunto de la materia o asignatura Los sockets (conectores) definen un modelo de comunicación entre procesos y pueden implementar las características/funcionalidades especificadas en los paradigmas de aplicaciones distribuidas. El módulo hace una incursión en el desarrollo de aplicaciones distribuidas usando este método de comunicación, haciendo una revisión breve de los antecedentes y las implementaciones previas en los modelos de comunicación entre procesos. Posteriormente se analizan los dos tipos de conectores existentes: orientados a datos y orientados a conexión. Los sockets orientadas a datos/ no confiables (Datagramas, UDP) se caracterizan por no disponer de un modelo de recepción de información acerca de la llegada o no de los diferentes paquetes de datos (información) a sus destinos. Por el contrario, los sockets orientados a conexión/confiables (TCP) resuelven este problema proporcionando acuses de recibo e implementado mecanismos de control del flujo de la comunicación, que no existen en los sockets orientados a datos. El módulo detalla las dos alternativas, presentando ejemplos de uso de ambos tipos de conectores y analizando sus ventajas e inconvenientes. Finalmente se añade información adicional para usar modelos de seguridad de la información en el modelo de comunicación mediante conectores, mediante el uso de “sockets seguros”. Los objetivos generales de este módulo son los siguientes:

- Recordar la definición de conectores (socket) y diferenciar las diferentes alternativas de uso en los escenarios de transmisión confiable (TCP) y no confiable (UDP).

- Programar código que implemente una solución basada en conectores (sockets).

2.3.3- Información y orientaciones para el trabajo con los materiales requeridos para el estudio del bloque El módulo se estudia a través del libro de texto proporcionado como bibliografía básica, y en concreto se corresponde con el Capítulo 4 del libro: COMPUTACIÓN DISTRIBUIDA: FUNDAMENTOS Y APLICACIONES, PEARSON ADDISON-WESLEY (Mei-Ling Liu). El estudio del módulo se realizará durante una semana (véase el cronograma de la sección anterior), aunque no completa (el módulo necesita 10 horas, y la planificación semanal es de 12 horas).

Page 8: Aplicaciones Distribuidas Guia Parte2

APLICACIONES DISTRIBUIDAS

UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA 8

Por otra parte, el Equipo Docente podrá publicar en la plataforma los enlaces de interés para cada tema, así como otro material auxiliar que pueda considerar de interés, de forma que se complemente el material contenido en el libro. 2.3.4.- Descripción detallada de cada una de las actividades de aprendizaje a realizar Fundamentalmente se realizarán actividades de consulta de dudas en el foro correspondiente. Al finalizar el módulo, se debe realizar el cuestionario de evaluación del módulo, en el que se presentarán veinte preguntas de tipo test acerca de los contenidos del módulo. Las preguntas tendrán cuatro posibles valores, de los cuales sólo uno de ellos es el correcto. Cada pregunta se puntuará con 0.5 puntos y cualquier fallo de contestación restará 0.2 puntos a la calificación final del cuestionario.

2.4 MÓDULO 4: El paradigma cliente-servidor

2.4.1.- Presentación El paradigma más empleado en la computación distribuida es, sin lugar a duda, el modelo cliente-servidor. En dicho modelo un cliente accede a un servicio proporcionado por un servidor y este le proporciona la información que necesita a través de dicho servicio. Ejemplos de este modelo puede ser la propia Web, a través de su protocolo HTTP donde el servicio ofrecido en el acceso a la información almacenada y la información transmitida es la propia página HTML o equivalente. El módulo muestra los diferentes componentes involucrados la comunicación y presenta varias clasificaciones de los servidores relativa a diferentes aspectos del paradigma cliente-servidor. 2.4.2- Contextualización en el conjunto de la materia o asignatura El módulo describe en detalle el paradigma de computación distribuida más extendido: el modelo cliente-servidor. Para detallar los conceptos asociado a este paradigma se introducen los conceptos de sesión y protocolo de servicio, que se emplean para el modelo de comunicación en un entorno cliente-servidor. Posteriormente se presenta los fundamentos de desarrollo de aplicaciones de servicios de red basados en este paradigma, exponiendo ejemplos de implementación que usan como modelo de comunicación los conectores (explicados en el apartado anterior). Una vez vistos los ejemplos de implementación del paradigma, se tipifican este tipo de modelos usando los siguientes factores de clasificación:

- Si el protocolo de comunicación entre el cliente y el servidor es orientado o no a conexión. - Si la respuesta del servidor es secuencial o concurrente, es decir, si es capaz de atender a más de

una petición del cliente o clientes de manera simultánea. - Si el servidor almacena el estado de la información de las peticiones, para poder reutilizar dicho

estado para complementar el funcionamiento del servidor. En concreto, para cada clasificación, se muestran ejemplos de implementaciones para clarificar los factores de tipificación. Los objetivos generales de este módulo son los siguientes:

- Conocer en qué consiste el modelo cliente/servidor y diferenciar las variantes existentes y sus diferentes clasificaciones (con o sin estado, orientado o no a conexión, secuencial o concurrente).

Page 9: Aplicaciones Distribuidas Guia Parte2

|Dr. Rafael Pastor Vargas

UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA 9

- Comprender los mecanismos de implementación de un servicio basado en el modelo cliente/servidor, de forma que sea sencillo gestionar los cambios en el modelo en base a modificaciones de dicho software distribuido.

2.4.3- Información y orientaciones para el trabajo con los materiales requeridos para el estudio del bloque El módulo se estudia a través del libro de texto proporcionado como bibliografía básica, y en concreto se corresponde con el Capítulo 5 del libro: COMPUTACIÓN DISTRIBUIDA: FUNDAMENTOS Y APLICACIONES, PEARSON ADDISON-WESLEY (Mei-Ling Liu). El estudio del módulo se realizará durante una semana (véase el cronograma de la sección anterior), que comienza en la parte final de la semana anterior (no cubierta en horas de forma completa por el módulo anterior). Por otra parte, el Equipo Docente podrá publicar en la plataforma los enlaces de interés para cada tema, así como otro material auxiliar que pueda considerar de interés, de forma que se complemente el material contenido en el libro. 2.4.4.- Descripción detallada de cada una de las actividades de aprendizaje a realizar Fundamentalmente se realizarán actividades de consulta de dudas en el foro correspondiente. Al finalizar el módulo, se debe realizar el cuestionario de evaluación del módulo, en el que se presentarán veinte preguntas de tipo test acerca de los contenidos del módulo. Las preguntas tendrán cuatro posibles valores, de los cuales sólo uno de ellos es el correcto. Cada pregunta se puntuará con 0.5 puntos y cualquier fallo de contestación restará 0.2 puntos a la calificación final del cuestionario.

2.5 MÓDULO 5: Objetos distribuidos en Java: RMI

2.5.1.- Presentación RMI (Remote Method Invocation) es una capa de servicios distribuidos (búsqueda de objetos remotos, invocación de interfaces y métodos, etc.) que permite desarrollar aplicaciones distribuidas basadas en el modelo cliente-servidor y centradas en la metodología de desarrollo orientada a objetos. El módulo presenta los fundamentos de RMI, además de características avanzadas que pueden ser muy útiles en entornos profesionales. 2.5.2- Contextualización en el conjunto de la materia o asignatura La programación orientada a objetos se ha impuesto como metodología desarrollo de las aplicaciones (sean o no distribuidas) en la actualidad, por lo que esta supremacía, en el campo de las aplicaciones distribuidas, ha llevado a la creación/desarrollo de estructuras de objetos que puedan ser empleadas en entornos distribuidos. En el caso de Java, se proporciona una API (Application Program Interface) que permite definir objetos con un conjunto de métodos que pueden ser invocados en máquinas virtuales remotas, de forma que las llamadas (invocaciones a dichos métodos) se pueden realizar en los clientes de manera transparente y con la misma sintaxis que una invocación de un método de un objeto ubicado en la misma máquina que ejecuta el cliente. El módulo introduce el concepto de objeto distribuido y lo compara con los mecanismos de comunicación entre procesos más habituales (paso de mensajes, RPC y sockets), analizando ventajas e inconvenientes de las alternativas. Con el concepto de objeto distribuido en mente, se muestra la arquitectura general de desarrollo de aplicaciones distribuidas con RMI, así como las diferentes clases específicas de dicho API junto a la forma de usar dichas clases. A continuación se muestra un ejemplo de aplicación con RMI, y se muestran las técnicas de ejecución y depuración de este tipo de aplicaciones. Una

Page 10: Aplicaciones Distribuidas Guia Parte2

APLICACIONES DISTRIBUIDAS

UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA 10

vez vistos los fundamentos de RMI, se muestran algunos conceptos avanzados sobre el uso de esta tecnología: implementación dinámica de objetos distribuidos y seguridad de ejecución de las aplicaciones. Los objetivos generales de este módulo son los siguientes:

- Relacionar la programación orientada a objetos a la programación distribuida y el paso de mensajes, gestionando la posibilidad de manipular e invocar servicios almacenados en objetos remotos.

- Implementar diferentes estrategias de programación con RMI, escribiendo el código correspondiente.

2.5.3- Información y orientaciones para el trabajo con los materiales requeridos para el estudio del bloque El módulo se estudia a través del libro de texto proporcionado como bibliografía básica, y en concreto se corresponde con los Capítulo 7 y 8 del libro: COMPUTACIÓN DISTRIBUIDA: FUNDAMENTOS Y APLICACIONES, PEARSON ADDISON-WESLEY (Mei-Ling Liu). El estudio del módulo se realizará durante algo más de dos semanas (véase el cronograma de la sección anterior), que comienza en la parte final de la semana anterior (no cubierta en horas de forma completa por el módulo anterior). Por otra parte, el Equipo Docente podrá publicar en la plataforma los enlaces de interés para cada tema, así como otro material auxiliar que pueda considerar de interés, de forma que se complemente el material contenido en el libro. 2.5.4.- Descripción detallada de cada una de las actividades de aprendizaje a realizar Fundamentalmente se realizarán actividades de consulta de dudas en el foro correspondiente. Al finalizar el módulo, se debe realizar el cuestionario de evaluación del módulo, en el que se presentarán veinte preguntas de tipo test acerca de los contenidos del módulo. Las preguntas tendrán cuatro posibles valores, de los cuales sólo uno de ellos es el correcto. Cada pregunta se puntuará con 0.5 puntos y cualquier fallo de contestación restará 0.2 puntos a la calificación final del cuestionario. Adicionalmente, una vez hecho el cuestionario, se deberá realizar un trabajo asociado a la tecnología RMI (16 horas) que permita comprobar las destrezas necesarias en la programación de este tipo de metodología de desarrollo. El grueso del desarrollo se deberá acometer durante la segunda semana del módulo, tal y como se indica en el cronograma.

2.6 MÓDULO 6: CORBA en Java

2.6.1.- Presentación CORBA, al igual que RMI, proporciona la capa de servicios distribuidos que permite implementar soluciones software distribuidas, La diferencia fundamental radica en no emplear objetos para el desarrollo de la solución (lo que permite usar cualquier tipo de lenguaje de programación) ni un solo lenguaje de programación (RMI usa solo Java), lo que obliga a definir un lenguaje intermedio (IDL, Interface Definition Language) que debe ser traducido al lenguaje que solicitará/implementará el servicio distribuido correspondiente. El módulo muestra los fundamentos de CORBA, su implementación Java mediante Java

Page 11: Aplicaciones Distribuidas Guia Parte2

|Dr. Rafael Pastor Vargas

UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA 11

IDL y los factores de diseño del software distribuido que se deben tener en cuenta a la hora de emplear esta tecnología. 2.6.2- Contextualización en el conjunto de la materia o asignatura CORBA define un modelo de desarrollo de objetos distribuidos definido de manera estándar por el OMG (Object Management Group) y que no liga el desarrollo de dichos objetos a ningún lenguaje específico. El módulo se inicia con una introducción a la arquitectura CORBA y sus componentes. Posteriormente se muestran los detalles relevantes de la definición de objetos remotos con CORBA y los modelos de comunicación entre los componentes de descubrimiento de objetos (ORB, Object Request Broker). Una vez vista la arquitectura, se analizan los diferentes servicios proporcionados por la arquitectura:

- Servicio de nombres. Permite “encontrar” y definir objetos mediante nombres específicos, siguiendo una nomenclatura estándar.

- Servicio de objetos. Permite emplear los “objetos” CORBA y realizar las invocaciones remotas de las funciones (métodos en el caso de un lenguaje de programación orientado a objetos) de dichos “objetos”

Una vez vista de manera global las funcionalidades de CORBA, se presenta el modelo de definición de “objetos” empleando un lenguaje de definición neutro, denominado IDL (Interface Definition Language) que permite definir la funcionalidad de la aplicación distribuida. Se analizarán los procedimientos y herramientas disponibles en Java para implementar aplicaciones CORBA, así como un ejemplo de implementación concreto. Los objetivos generales de este módulo son los siguientes:

- Conocer la normativa estándar del OMG relativas al middleware CORBA y sus fundamentos.

- Probar la capacidad de desarrollo distribuido con CORBA y compararla con RMI, mediante la revisión de las herramientas específicas de desarrollo y los factores de complejidad asociados.

2.6.3- Información y orientaciones para el trabajo con los materiales requeridos para el estudio del bloque El módulo se estudia a través del libro de texto proporcionado como bibliografía básica, y en concreto se corresponde con el Capítulo 10 del libro: COMPUTACIÓN DISTRIBUIDA: FUNDAMENTOS Y APLICACIONES, PEARSON ADDISON-WESLEY (Mei-Ling Liu). El estudio del módulo se realizará durante una semana (véase el cronograma de la sección anterior). Por otra parte, el Equipo Docente podrá publicar en la plataforma los enlaces de interés para cada tema, así como otro material auxiliar que pueda considerar de interés, de forma que se complemente el material contenido en el libro. 2.6.4.- Descripción detallada de cada una de las actividades de aprendizaje a realizar Fundamentalmente se realizarán actividades de consulta de dudas en el foro correspondiente. Al finalizar el módulo, se debe realizar el cuestionario de evaluación del módulo, en el que se presentarán veinte preguntas de tipo test acerca de los contenidos del módulo. Las preguntas tendrán cuatro posibles valores, de los cuales sólo uno de ellos es el correcto. Cada pregunta se puntuará con 0.5 puntos y cualquier fallo de contestación restará 0.2 puntos a la calificación final del cuestionario.

Page 12: Aplicaciones Distribuidas Guia Parte2

APLICACIONES DISTRIBUIDAS

UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA 12

2.7 MÓDULO 7: Servicios Web

2.7.1.- Presentación Los servicios Web son parte de la definición de la arquitectura basada en servicios (SOA). Dicha arquitectura define unas reglas de comportamiento estándar que permiten la definición de servicios mediante XML (WDSL), la búsqueda y localización de servicios (UDDI) y las invocaciones a dichos servicios (SOAP). Todas estas reglas de funcionamiento se implementan mediante el uso de estándares basados en XML, lo que permiten que cualquier tipo marco de desarrollo pueda exportar sus servicios con independencia de la plataforma en la que se desarrollen. El módulo muestra las características de SOA en los ámbitos de comunicación, descripción y descubrimiento. 2.7.2- Contextualización en el conjunto de la materia o asignatura En los módulos anteriores se analizaron las diferentes alternativas de desarrollo de aplicaciones distribuidas, en las que se puede comprobar la interdependencia entre el desarrollo de la aplicación y el lenguaje/entorno de programación empleado (especialmente en el caso de RMI). Siguiendo los pasos de CORBA, se definió una estructura estándar de desarrollo basado en componentes ligeros (servicios) cuyos formatos de protocolos están basados en estándares internacionales, y en concreto, en XML (eXtensible Markup Language). Estos protocolos debían emplear de manera subyacente los protocolos Web ya establecidos (HTTP, FTP, SSH, etc.). De esta forma, se definió el concepto de servicio Web. El módulo muestra los fundamentos de las arquitecturas SOA (Service Oriented Architecture), así como los componentes fundamentales de dicha arquitectura. En concreto, se hace hincapié en el protocolo/modelo de comunicación entre peticiones/respuestas del modelo cliente-servidor en sistemas basados en servicios Web. Esto es, se hace una revisión específica del protocolo SOAP y de las estructuras de los mensajes de petición/respuesta basados en XML. Finalmente, se muestra un ejemplo de desarrollo usando Apache SOAP como protocolo de comunicación entre servicios Web. Los objetivos generales de este módulo son los siguientes:

- Conocer la arquitectura basada en servicios (SOA) y las normativas estándar asociadas (SOAP, WDSL, UDDI), y demostrar los beneficios intrínsecos de usar XML como lenguaje de representación común de dichas normas.

- Planificar un proyecto de aplicación distribuida en un entorno real y probar que la solución adoptada cumple los requerimientos del proyecto software especificado.

2.7.3- Información y orientaciones para el trabajo con los materiales requeridos para el estudio del bloque El módulo se estudia a través de unos apuntes proporcionados por el quipo docente (deben leerse primero) y el libro de texto proporcionado como bibliografía básica. En concreto, se corresponde con el Capítulo 11, apartados 11.3 y 11.4 del libro: COMPUTACIÓN DISTRIBUIDA: FUNDAMENTOS Y APLICACIONES, PEARSON ADDISON-WESLEY (Mei-Ling Liu). El estudio del módulo (parte teórica) se realizará durante algo menos de una semana (véase el cronograma de la sección anterior), en concreto 9 horas. Como se aprecia en el cronograma la duración total del módulo es de 2 semanas, ya que es necesario realizar un trabajo específico correspondiente a esta parte.

Page 13: Aplicaciones Distribuidas Guia Parte2

|Dr. Rafael Pastor Vargas

UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA 13

Por otra parte, el Equipo Docente podrá publicar en la plataforma los enlaces de interés para cada tema, así como otro material auxiliar que pueda considerar de interés, de forma que se complemente el material contenido en el libro. 2.7.4.- Descripción detallada de cada una de las actividades de aprendizaje a realizar Fundamentalmente se realizarán actividades de consulta de dudas en el foro correspondiente. Al finalizar el módulo, se debe realizar el cuestionario de evaluación del módulo, en el que se presentarán veinte preguntas de tipo test acerca de los contenidos del módulo. Las preguntas tendrán cuatro posibles valores, de los cuales sólo uno de ellos es el correcto. Cada pregunta se puntuará con 0.5 puntos y cualquier fallo de contestación restará 0.2 puntos a la calificación final del cuestionario. Adicionalmente, una vez hecho el cuestionario, se deberá realizar un trabajo asociado a la tecnología de servicios Web (15 horas) que permita comprobar las destrezas necesarias en la programación de este tipo de metodología de desarrollo. El grueso del desarrollo se deberá acometer durante la segunda semana del módulo, tal y como se indica en el cronograma. Al finalizar este módulo, es necesario desarrollar un trabajo final que se extenderá hasta el final de curso (es decir, unas cuatro semanas adicionales). Este trabajo consistirá en un desarrollo específico y uso de entornos de desarrollo que empleen las tecnologías analizadas en los módulos de contenido.

3.- ORIENTACIONES PARA LA REALIZACIÓN DEL PLAN DE ACTIVIDADES El estudiante debe realizar una lectura comprensiva de cada tema propuesto. De forma que sea capar de identificar las ideas básicas, extraer los conceptos fundamentales y captar los detalles más relevantes, los cuales deberían plasmarse en la realización del cuestionario de evaluación correspondiente a cada módulo. Por tanto, el estudiante deberá realizar a lo largo del curso siete cuestionarios correspondientes a los siete módulos, que formarán parte de la evaluación final. Los cuestionarios se encontrarán inicialmente disponibles en la semana del plan de trabajo que corresponda hacerlos, aunque se dejarán abiertos para su realización a partir de la fecha de inicio de disponibilidad del cuestionario durante un día completo. Estos cuestionarios se podrán hacer únicamente una sola vez y no se pueden repetir. Consistirán en preguntas de tipo test, con opciones A, B, C y D. Sólo una es la correcta. Las contestadas erróneamente puntuarán negativo. Se dispondrá de un tiempo límite para contestar y enviar el test; pasado ese tiempo, la puntuación será 0. Cada cuestionario estará muy relacionado con el contenido expuesto en el libro de texto para cada módulo, ya que está enfocado a evaluar la captación de los conceptos fundamentales de cada módulo. Estos siete cuestionarios representarán el 5% de la calificación final. Adicionalmente a los cuestionarios, se deben realizar tres trabajos:

- Trabajo sobre la tecnología RMI, que comenzará una vez revisados los conceptos teóricos asociados al módulo V. Este trabajo tiene un peso de un 10% en la evaluación final.

Page 14: Aplicaciones Distribuidas Guia Parte2

APLICACIONES DISTRIBUIDAS

UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA 14

- Trabajo sobre la tecnología de Servicios Web, particularmente con el lenguaje de programación Java. Comenzará su desarrollo al finalizar el estudio teórico del módulo VII. Este trabajo se computa con un 10% del peso en la evaluación final.

- Trabajo final. Comenzará al finalizar la parte teórica y pretende integrar los conocimientos revisados durante la asignatura, y las capacidades adquiridas en la realización de los trabajos anteriores. Este trabajo se computa con un 25% del peso en la evaluación final.

Para los tres trabajos, el estudiante deberá disponer de un entorno propio para el desarrollo de las prácticas (o bien emplear las salas de ordenadores de los centros asociados) y dispondrá de toda la información necesaria en el curso virtual: Enunciado, instrucciones para la presentación de programas si los hubiere, desarrollo del informe a presentar, software y material complementario. Una vez realizado cada trabajo, el estudiante deberá entregar todo el material que se le requiera en el enunciado de la práctica (programas, código fuente, informe, etc.) a través del curso virtual. Existen dos plazos de entrega: - Plazo 1 (convocatoria ordinaria): Prácticas recibidas antes del 20 de Enero. - Plazo 2 (convocatoria extraordinaria): Prácticas recibidas con posterioridad al 20 de Enero y antes del 21 de Septiembre. El 50% restante de la calificación final corresponderá a la prueba presencial (examen), que estará compuesta por un cuestionario de veinte preguntas sobre conceptos teóricos y podrá incluir si es necesario algún desarrollo práctico corto. Cada pregunta se puntuará con 0.5 puntos, y los fallos en las preguntas, restarán 0.2 puntos. Para superar el test es necesario contestar correctamente al menos el 50% de las preguntas. Es decir, se requiere una nota mínima de 5 como condición necesaria para poder aprobar la parte de la prueba presencial. Como condición necesaria para aprobar la parte de evaluación continua, se debe:

- Realizar todos los cuestionarios de evaluación de los módulos de contenido. - Realizar al menos uno de los dos trabajos puntuados con un 10%, correspondiente a los módulos

RMI y Servicios Web. - Realizar el trabajo final.

La suma de todas las ponderaciones de las notas asociadas a todas las pruebas de evaluación continua (Cuestionarios, Trabajos y Trabajo final) debe ser al menos del 25%. Para la realización de los trabajos prácticos y final, como se ha comentado anteriormente, no es necesaria la presencialidad del alumno en el Centro asociado, ya que se proporcionará el material necesario para realizar dichos trabajos en el curso virtual, facilitando que el estudiante pueda elegir el entorno de trabajo que considere oportuno. Como condición necesaria para superar la asignatura, se deben superar los criterios de valoración de cada parte de manera independiente. Para el cálculo de la nota de evaluación final, la ponderación asociada a cada parte es del 50%, por lo que la nota final se calcula de la siguiente manera:

Nota (final) = [Nota (examen) x 0.5] + [Nota (evaluación continua) x 0.5] En el caso de no superar los criterios de valoración de alguna de las partes independientes, no se compensarán las notas entre las diferentes partes.

Page 15: Aplicaciones Distribuidas Guia Parte2

|Dr. Rafael Pastor Vargas

UNIVERSIDAD NACIONAL DE EDUCACIÓN A DISTANCIA 15

4.- GLOSARIO Se publicará en el curso virtual. De la misma forma y enfocado en cada tema se publicará una lista de términos y palabras clave.