Guía Docente 2016/2017 Desarrollo de Aplicaciones Distribuidas II Distributed Computing II Grado en Ingeniería Informática Presencial lf:
Índice Desarrollo de Aplicaciones Distribuidas II...3 Breve descripción de la asignatura...3 Requisitos Previos...4 Objetivos...4 Competencias y resultados de aprendizaje...5 Metodología...6 Temario...6 Relación con otras asignaturas del plan de estudios...8 Sistema de evaluación...8 Bibliografía y fuentes de referencia...8 Web relacionadas...9 Recomendaciones para el estudio...9 Material necesario... 10 Tutorías... 10
Desarrollo de Aplicaciones Distribuidas II Módulo: Tecnologías de la información. Materia: Tecnologías de la programación. Carácter: Obligatoria. Nº de créditos: 6 ECTS. Unidad Temporal: 3º curso 2º semestre Profesor de la asignatura: Miguel Ángel Guillén Navarro Email: maguillen@ucam.edu Horario de atención a los alumnos/as: Jueves de 13:00 a 14:00. Fuera de este horario se atenderán tutorías a petición del alumno mediante mensaje privado (en el campus virtual) o correo electrónico. Profesor coordinador de módulo: Francisco Arcas Túnez Profesor coordinador de curso: Fernando Pereñíguez García Breve descripción de la asignatura En esta asignatura, que es la continuación de Desarrollo de Aplicaciones I, se trabajarán dos conceptos fundamentales: desarrollo basado en componentes y arquitecturas orientadas a servicios. Para el primero de ellos se explicará qué es un componente y sus diferencias con un objeto y los distintos modelos de componentes. Se profundizará en el desarrollo de un componente web mediante las tecnologías Enterprise Java Beans (EJB) y Servlet. Todos estos conceptos se enmarcarán dentro de una arquitectura de tres capas haciendo hincapié en la lógica de negocio. Respecto a la parte correspondiente al estudio de la arquitectura orientada a servicio, se definirá, desarrollará y desplegará un servicio web como parte fundamental de la misma. Una vez conocida esta pieza fundamental se explicará cómo encajarla dentro de la arquitectura y como garantizar la seguridad de la comunicación entre todas las piezas. Brief Description In this subject, which is a continuation of Application Development I, we will work two fundamental concepts: component-based development and service-oriented architectures. For the first one will explain what a component is and its differences with an object, also explain the different component models. We will develop a web component technology using Enterprise Java Beans (EJB) and Servlet. All these concepts will be included in a three-tier architecture with a focus on business logic. Regarding the share to the study of service-oriented architecture, we define, develop and deploy a Web service as a fundamental part of this architecture. Once known this essential elements we will explain how fit it within the architectural.
Requisitos Previos Es importante tener unos buenos conocimientos de programación orientada a objetos. Objetivos 1. Conocer los diferentes paradigmas de computación distribuida. 2. Adquirir los conocimientos básicos sobre el desarrollo de un componente. 3. Diseñar la arquitectura necesaria para desplegar un componente web. 4. Desarrollar programas que hagan uso de componentes EJB, Servlets y JSP. 5. Usar las librerías más importantes en el desarrollo de aplicaciones web. 6. Resolver problemas comunes en la programación de entornos Web. 7. Adquirir los conocimientos básicos de los servicios web y de las arquitecturas orientadas a servicios. 8. Desarrollar un servicio web y el cliente que hace uso del mismo.
Competencias y resultados de aprendizaje Competencias transversales T1 - Capacidad de análisis y síntesis. T4 - Resolución de problemas. T5 - Toma de decisiones. T6 - Trabajo en equipo. T14 - Aprendizaje autónomo. T15 - Adaptación a nuevas situaciones. T16 - Creatividad e innovación. T22 - Comprender los puntos principales de textos claros y en lengua estándar si tratan sobre cuestiones relacionadas con el ámbito de estudio. Competencias específicas TI6 - Capacidad de concebir sistemas, aplicaciones y servicios basados en tecnologías de red, incluyendo Internet, web, comercio electrónico, multimedia, servicios interactivos y computación móvil. Resultados de aprendizaje RA 4.1.1. Diferenciar entre los diferentes paradigmas de computación distribuida. RA 4.1.2. Describir los elementos que forman parte del modelo distribuido de componentes y de la arquitectura orientada a servicios. RA 4.1.3. Relacionar los diferentes paradigmas de computación distribuida con su aplicación práctica. RA 4.1.4. Desarrollar una aplicación informática desde el punto de vista del modelo distribuido de componentes. RA 4.1.5. Desarrollar una aplicación de Internet desde el punto de vista de un contenedor de objetos/componentes web.
Metodología Metodología Horas Horas de trabajo presencial Horas de trabajo no presencial Clases en el aula Prácticas Evaluación Tutoría Estudio personal 15 27 6 12 30 60 horas (40 %) Actividades de aprendizaje virtual 12 Realización de ejercicios, presentaciones, 123 90 horas (60 %) trabajos y casos prácticos Lecturas recomendadas y búsqueda de 45.8 información TOTAL 150 60 90 Temario Programa de la enseñanza teórica Tema 1. Aplicaciones Web. Servlets y JSP. 1. Introducción 2. Arquitectura de los servlets 3. Manejo de peticiones 4. Concepto de JSP 5. Directivas 6. Librería de etiquetas
7. Uso de plantillas Tema 2. Desarrollo de componentes web 1. Principios de desarrollo basado en componentes. 2. Arquitectura Enterprise Java Beans (EJB) 3. Implementación de una solución EJB. Tema 3. Servicios Web 1. Concepto y elementos de un servicio web 2. Protocolo SOAP 3. Invocación de un servicio web Tema 4. Arquitecturas orientadas a servicios. 1. Descripción de una arquitectura SOA 2. Arquitectura de Servicios Web 3. Intercambio de mensajes REST 4. Arquitectura de mashups. 5. Arquitectura web comet (Ajax Push, Reverse Ajax, Two-way-web o HTTP server push) Práctica 1. Servlets y JSP. Programa de la enseñanza práctica La práctica consistirá en la implementación de una aplicación J2EE propuesta por el profesor. Para la resolución de la misma será necesario utilizar los conceptos de Servlets y JSP estudiados en el Tema 1. La entrega se realizará a través del campus virtual en la tarea dispuesta para tal efecto. Práctica 2. Enterprise Java Beans. La práctica consistirá en la implementación de un sistema basado en componentes mediante la tecnología EJB. Será un caso práctico propuesto por el profesor similar a los ejercicios resueltos en clase. La entrega se realizará a través del campus virtual en la tarea dispuesta para tal efecto. Práctica 3. Creación de un servicio web. La práctica consistirá en la implementación de un servicio web mediante la tecnología Apache Axis2 o CXF. Será un caso práctico propuesto por el profesor similar a los ejercicios
resueltos en clase. La entrega se realizará a través del campus virtual en la tarea dispuesta para tal efecto. Un enunciado más detallado de las prácticas, así como las fechas de entrega será mostrado en el campus virtual, en primera instancia en el plan de trabajo de la asignatura, y posteriormente en las tareas correspondientes a cada práctica. Relación con otras asignaturas del plan de estudios Al ser una asignatura dentro de la materia de tecnologías de programación está ligada a todas las asignaturas de programación, especialmente con Programación Orientada a Objetos. También se relaciona con el concepto de patrones de diseño de modelado software. Sistema de evaluación - Primera prueba parcial: 35% del total de la nota. Se evaluarán los conocimientos teóricos y prácticos de servlets y JSP vistos en el Tema 1. - Segunda prueba parcial: 25% del total de la nota. Se evaluarán los conocimientos teóricos y prácticos de servicios web y los conceptos de arquitecturas orientadas a servicios vistos en el Tema 4. - Evaluación de prácticas y problemas propuestos: 40% del total de la nota. Práctica J2EE (Tema 1): 20% Práctica EJB (Tema 2): 5% Práctica Servicios Web (Tema 3): 10% Ejercicios propuestos: 5% Bibliografía y fuentes de referencia Bibliografía básica Ceballos, F.J. Java 2 Curso de programación. 1ª Edición. Madrid: Ra-ma. 2010. ISBN: 9788499640327. Panda, D.; Rahman, R.; Lane, D.; EJB 3 in Action. Manning Publications. 2007. ISBN: 978-1933988344. Chopra, Vivek. Profesional Apache Tomcat 6. 1ª edición. Anaya Multimedia. 2008. ISBN: 9788441523777.
Cauldwell, Patrick. Servicios Web Xml: Profesional. 1ª edición. Anaya Multimedia. 2008. ISBN: 9788441513631. Bibliografía complementaria Richar Monson-Haefel. Enterprise JavaBeans. 1ª Edición. Londres. O'REILLY & ASSOCIATES. 2003. ISBN: 9780596005306 Liu, M. Computación Distribuida. Fundamentos y aplicaciones. 1ª edición. Madrid: Addison Wesley, 2004. ISBN: 9788478290666. Gamma, E.; Helm, R.; Jonson, R. Vlisssides, J. Patrones de Diseño. 1ª edición. Madrid: Addison-Wesley Iberoamericana, 2002. ISBN: 9788478290598. Rodríguez de la fuente, S. Programación de aplicaciones web. 1ª edición. Madrid: Thomson, 2003. ISBN: 9788497321815 Cauldwell, P. Servicios Web XML. 1ª edición. Madrid: Anaya Multimedia, 2002. ISBN: 9788441513631. Web relacionadas Página oficial de Java: http://www.oracle.com/technetwork/java/index.html donde el alumno encontrará toda la documentación oficial sobre el lenguaje de programación utilizado en la asignatura: Java. Página sobre alta disponibilidad de aplicaciones: http://highscalability.com/. Se trata de una web muy recomendable donde se describen soluciones a problemas/arquitecturas utilizadas en empresas. Foro de desarrollo web con Java: http://www.javahispano.org/. Si hay alguna duda sobre el lenguaje de programación utilizado en esta web suele estar resuelta. Recomendaciones para el estudio Para realizar un correcto seguimiento de la asignatura el alumno debe asistir a todas las sesiones teóricas y prácticas y dedicar al menos dos horas adicionales a la semana para completar el trabajo práctico. A la hora de afrontar esta asignatura es recomendable que el alumno vaya adquiriendo los conceptos poco a poco los conceptos teóricos, a la vez que los afianza con los ejercicios prácticos que se proponen. Esta forma de trabajar, teoría y práctica, ayuda a adquirir las competencias de la asignatura de una forma consistente; aprendiendo no sólo de los logros sino también de los errores y problemas surgidos en la implementación práctica de los conceptos estudiados. Es importante que el alumno tenga claros los conceptos fundamentales de programación orientada a objetos: clase, objeto, herencia, polimorfismo y ligadura dinámica. Si ellos la realización de la parte práctica supondrá un esfuerzo adicional para él o ella.
Material necesario Aplicaciones Para esta asignatura se necesita el siguiente software: Eclipse Juno o superior for Java EE Developers, que se puede descargar en https://www.eclipse.org/downloads/ JDK 1.7 o superior, que se puede descargar en http://www.oracle.com/technetwork/java/javase/downloads/index.html. Apache Tomcat 7 o superior, que se puede descargar en: http://tomcat.apache.org/download-70.cgi Apache Axis 2, que se puede descargar en: http://axis.apache.org/axis2/java/core/download.cgi Material didáctico Además de la bibliografía recomendada, en el campus virtual, en el apartado de recursos, se proporcionará al alumno organizado por los temas de la asignatura las transparencias vistas en clase, el código de los ejemplos explicados y enlaces a tutoriales que pueden servir de refuerzo. Entre ellos destacan: Apuntes sobre cada tema tratado. Enlaces a otros sitios/materiales donde ampliar la información sobre los temas. Ejercicios para practicar (sobre todo relacionados con el tema 2), en un principio los enunciados, y posteriormente se pondrán las soluciones a los mismos. Presentaciones con explicación oral del profesor de los temas más importantes. Vídeos tutoriales. Al inicio del curso se ofrecerá al estudiante un calendario de las actividades docentes, donde se muestra la distribución temporal de todos los temas de la asignatura. Durante las clases en el aula se pueden ir referenciando nuevos recursos. Tutorías Breve descripción Se resolverán ejercicios que refuercen los contenidos teórico-prácticos de la asignatura. El trabajo será evaluado por el profesor y los alumnos atiendo siempre a la calidad general del trabajo y a las habilidades y actitudes expuestas.
El alumno, a través del correo electrónico, podrá solicitar tutorías individuales para resolver dudas concretas sobre los conceptos estudiados. Aunque se recomienda que dichas dudas sean expuestas en clase para que el resto de compañeros puedan aprender de las mismas.