Información general


Tipo de asignatura: obligatoria

Coordinador:

trimestre: Primer trimestre

Créditos: 6

Profesorado: 

José Roble Alcobé
Jordi Boix Baró 

Competencias


competencias básicas
  • B2_Que los estudiantes sepan aplicar sus conocimientos en su trabajo o vocación de una forma profesional y tengan las competencias que demuestran mediante la elaboración y defensa de argumentos y la resolución de problemas dentro de su área de estudio

  • B4_Que los estudiantes puedan transmitir información, ideas, problemas y soluciones a un público tan especializado como no especializado

  • B5_Que los estudiantes hayan desarrollado aquellas habilidades de aprendizaje necesarias para emprender estudios posteriores con un alto grado de autonomía

Competencias específicas
  • EIS1_Capacidad para desarrollar, mantener y evaluar servicios y sistemas software que satisfagan todos los requisitos del usuario y que se comporten de forma fiable y eficiente, sean asequibles de desarrollar y mantener y cumplan normas de calidad, aplicando las teorías, principios, métodos y prácticas de la ingeniería del software

  • EIS2_Capacidad para valorar las necesidades del cliente y especificar los requisitos software para satisfacer estas necesidades, reconciliando objetivos en conflicto, mediante la búsqueda de compromisos aceptables, dentro de las limitaciones derivadas del coste, del tiempo, de la existencia de sistemas ya desarrollados y de las propias organizaciones

  • EIS4_Capacidad de identificar y analizar problemas y diseñar, desarrollar, implementar, verificar y documentar soluciones software sobre la base de un conocimiento adecuado de las teorías, modelos y técnicas actuales

  • EIS5_Capacidad de identificar, evaluar y gestionar los riesgos potenciales asociados que se puedan presentar

  • EIS6_Capacidad para diseñar soluciones apropiadas en uno o más dominios de aplicación, utilizando métodos de la ingeniería del software que integren aspectos éticos, sociales, legales y económicos

  • ESI3_Capacidad para participar activamente en la especificación, diseño, implementación y mantenimiento de los sistemas de información y comunicación

competencias transversales
  • T1_Que los estudiantes conozcan un tercer idioma, que será preferentemente el inglés, con un nivel adecuado de forma oral y por escrito, de acuerdo con las necesidades que tendrán las graduadas y graduados en cada titulación

  • T2_Que los estudiantes tengan capacidad para trabajar como miembros de un equipo interidisciplinar ya sea como un miembros más, o realizando tareas de dirección con el fin de contribuir a desarrollar proyectos con pragmatismo y sentido de la responsabilidad, asumiendo compromisos teniendo en cuenta los recursos disponibles

Descripción


Esta es una asignatura de laboratorio y por lo tanto es eminentemente práctica. El objetivo final es construir una aplicación web completa en implementaremos un producto mínimo viable que decidiremos durante los primeros días de curso. Las características que deberá tener la aplicación serán las siguientes:

  • El modelo del dominio debe tener un mínimo de cuatro clases
  • Se debe conectar a una base de datos remota
  • Implementa seguridad: debe validar los usuarios
  • Sigue los patrones de software vistos en las asignaturas de programación y de ingeniería del software
  • Separa la capa de presentación de la capa de dominio con el patrón vista-controlador
  • La interfaz de usuario ofrece una buena experiencia de usuario: sigue los criterios explicados en Interacción Persona Ordenador

Estudiaremos las tecnologías y protocolos base sobre las que se construyen las aplicaciones web para seguidamente introducir el framework llamado Spring. Hemos elegido el Spring por muchas razones: es opensouce, es en Java, es muy usado en el mundo profesional, sigue y fomenta buenas prácticas de programación, hay una comunidad muy grande y activa detrás. Por la parte de la interfaz de usuario utilizaremos aplicaciones de cliente escritas con HTML, CSS y Javascript.

En la asignatura se dará mucha importancia al proceso de desarrollo de la aplicación. Se deberá desarrollar en grupos de cuatro estudiantes y deberá repartir el trabajo de manera que todos los integrantes desarrollen entera alguna función, es decir, que trabajen con la BBDD, el servicio web y la interfaz de usuario. 

 

Esta asignatura dispone de recursos metodológicos y digitales para hacer posible su continuidad en modalidad no presencial en el caso de ser necesario por motivos relacionados con la Covidien-19. De esta forma se asegurará la consecución de los mismos conocimientos y competencias que se especifican en este plan docente.

Resultados de aprendizaje


A nivel general, esta asignatura contribuye a siguientes resultados de aprendizaje especificados para la materia a la que pertenece (aplicaciones distribuidas)

  • Evaluar y seleccionar plataformas de producción hardware y software para la ejecución de aplicaciones y de servicios informáticos.
  • Determinar los factores que inciden negativamente en la seguridad y la fiabilidad de un sistema hardware / software, y minimizar sus efectos.
  • Identificar tecnologías actuales y emergentes y evaluar si son aplicables, y en qué medida, para satisfacer las necesidades de los usuarios.

A nivel más concreto, al finalizar la asignatura el estudiante debe ser capaz de:

  • RA1: Diseñar, escribir, probar, depurar, documentar y mantener código en un lenguaje de alto nivel para resolver problemas de programación aplicando esquemas algorítmicos y usando estructuras de datos
  • RA2: Diseñar y escribir páginas web con lenguajes de cliente
  • RA3: Diseñar y desarrollar aplicaciones web con lenguajes del lado del servidor
  • RA4: Aplicar patrones de ingeniería del software para separar la capa de presentación de la capa de negocio
  • RA5: Implementar seguridad en las aplicaciones desarrolladas
  • RA6: Seleccionar y publicar una aplicación en una plataforma de cloud computing

 

Metodología de trabajo


Siendo un laboratorio esta asignatura seguirá una metodología de aprendizaje guiada por ejemplos (del profesor) y especialmente por proyectos (que desarrollarán los alumnos).

La mayor parte de las horas de clase (4h / semana) serán en el laboratorio en grupo pequeño. En estas sesiones los estudiantes deberán desarrollar una (o varias) aplicaciones web propuestas por el profesor y se discutirán y argumentarán las implementaciones realizadas.

Puntualmente se harán clases magistrales (2h / semana) en grupo grande para introducir conceptos nuevos para ser aplicados al desarrollo de las aplicaciones web de la parte práctica. Bueno embargo, los estudiantes deberán leer materiales propuestos por los profesores para poder realizar las prácticas encomendadas. Dada la situación del Covidien-19 estas clases se harán on-line: haremos una combinación de sesiones síncronas con zoom y explicaciones en vídeo.

Contenidos


  1. aplicaciones internet
    1. Comunicación cliente y servidor: protocolo HTTP
    2. JEE, Servlets y JSP
    3. Contexto de sesión y de aplicación
    4. AJAX
    5. Transferencia de objetos serializados con XML y JSON
  2. Servidor: El framework Spring
    1. Componentes de Spring
    2. Inyección de dependencias
    3. Programación orientada a aspectos (AOP)
    4. El patrón Modelo Vista Controlador (MVC)
    5. servicios REST
    6. Formularios y paso de información
    7. Excepciones y control de errores
    8. Seguridad
    9. Conexión a BBDD con JDBC
    10. mensajería asíncrona
  3. Cliente: 
    1. Aplicaciones de plana múltiple vs. aplicaciones de plana única
    2. Motores de plantillas HTML generadas en el servidor: Thymeleaf
    3. Aplicación de cliente con HTML, CSS y JavaScript 

Actividades de aprendizaje


Con el objetivo de recoger evidencia del logro de los resultados de aprendizaje esperados se realizarán las siguientes actividades de carácter evaluativo:

  • Hasta un máximo de 5 ejercicios individuales: Son ejercicios concretos que evaluarán el conocimiento del framework Spring introducido en clase por el profesor. Es importante realizarlos para entender bien el Spring y familiarizarse con las herramientas de desarrollo para encarar el desarrollo de la aplicación web con éxito. Están relacionados con todos los resultados de aprendizaje y con las competencias específicas CIN1, CIN13 y CIN17
  • Hasta un máximo de 3 prácticas en grupo que corresponden a entregas parciales de la aplicación web. Se valorará el trabajo en equipo, la dificultad del proyecto y la solución diseñada. 
  • proyecto web que corresponde al último entrega de la aplicación desarrollada durante el curso. 

Las tres prácticas anteriores y el proyecto web final están relacionados con todos los resultados de aprendizaje y con todas las competencias de la asignatura destacando la transversal T2: trabajo en equipo, que será fundamental para desarrollar una aplicación de la complejidad requerida.

  • prueba práctica: Examen individual donde el estudiante deberá demostrar que tiene conocimiento del Spring y está familiarizado con las herramientas de desarrollo. Está relacionado con todos los resultados de aprendizaje y las competencias CIN8, CIN13, CIN17, EIS1, EIS4, EIS6, EIS13

Para superar (aprobar) las actividades evaluativas, los estudiantes deberán demostrar

  • Que han adquirido los conocimientos teóricos relativos a los contenidos de la asignatura y que su comprensión les permite llevarlos a la práctica [MECES-2 punto a, punto c]
  • Que pueden desarrollar soluciones a problemas que, si bien son similares a otros vistos anteriormente, presentan aspectos que son nuevos [MECES- 2 punto f]

A continuación se explicitan los aspectos más importantes de cada competencia asignada a la asignatura:

  • B2: resolución de problemas dentro de su área de estudio.
  • B4: transmitir problemas y soluciones
  • B5: desarrollo de habilidades de aprendizaje necesarias para estudios posteriores (acceso autónomo a documentación, hábitos de trabajo efectivos)
  • CIN1: diseñar, desarrollar y evaluar sistemas y aplicaciones informáticas asegurando su fiabilidad, seguridad y calidad
  • CIN2: planificar, concebir, desplegar y dirigir proyectos informáticos
  • CIN3: mostrar actitudes de trabajo en equipo
  • CIN4: elaborar el pliego de condiciones técnicas de un sistema
  • CIN5: administración de servicios y sistemas
  • CIN8: analizar, diseñar y construir aplicaciones
  • CIN13: aplicación de las herramientas de almacenamiento de información
  • CIN17: diseñar interfaces persona computador
  • EIS1: desarrollar y evaluar sistemas que cumplan los requisitos del usuario 
  • EIS2: especificar los requisitos de los usuarios
  • EIS4: identificar y analizar problemas y diseñar, implementar y documentar soluciones software
  • EIS5: identificar, evaluar y gestionar riesgos
  • EIS6: diseñar soluciones software
  • ESI13: especificar, diseñar e implementar sistemas de información y comunicación
  • T2: capacidad para trabajar en equipo desarrollando diferentes roles

Nota: La competencia transversal asociada a la asignatura (T1: conocimiento tercera lengua) se trabaja ya que todas las clases y apuntes se dan en inglés. 

Sistema de evaluación


Evaluación

  • PRJ_W: proyecto web. Ponderación de la nota final 25% si la nota de PR_P> = 4
  • PR_P: prueba práctica. Ponderación de la nota final 30%
  • PRAC: prácticas. Ponderación en la nota final 25% (todas con el mismo peso) si la nota de PR_P> = 4
  • EX: ejercicios individuales. Ponderación en la nota final 20% si la nota de PR_P> = 4

Cálculo nota final (NF):

  • Si PR_P> = 4 : NF = PON = PR_P 0,30 + PRJ_W 0,25 + PRAC 0,25 + EX 0,20
  • Si PR_P <4 : NF = min (PR_P, PON)

recuperación:

Sólo se podrá recuperar la prueba práctica PR_P. La nota final se calculará tal como se ha establecido anteriormente con las notas de la recuperación de la prueba.

normativa:

  • Siguiendo la normativa de la UPF, si se detecta que una práctica o una prueba ha sido copiada la nota de aquella prueba será de 0 (cero) con independencia de su papel (receptor o el emisor) y sin que ello excluya la posible aplicación de otras sanciones de acuerdo con el Régimen Disciplinario vigente.
  • Para que el estudiante tenga derecho a la recuperación se deberá haber presentado a PR_R

Bibliografía


Básico

Walls, Craig (2015), "Spring in Action". (Fourth edition) Manning

Página principal Spring. https://spring.io/

Spring framework documentation: https://docs.spring.io/spring/docs/current/spring-framework-reference/index.html

Complementario

Deinum, Marten; Rubio, Daniel; Long, Josh and Mak, Gary (2014) "Spring Recipes, A problem-solution approach", Third Edition. Apress

 Stephen Ludin, Javier Garza, "Learning HTTP / 2: A Practical Guide for Beginners" 1st Edition. O'Reilly June 2017. ISBN-10: 1491962445