Información general


  • Tipo de asignatura: Obligatoria
  • Coordinador: Adso Fernández Baena
  • Trimestre: 1
  • Créditos: 6
  • Profesorado:

Idiomas de impartición


  • English

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 donde 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 desarrollaremos aplicaciones cliente 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.

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 Covid-19. De esta forma se asegurará el logro 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)

  • 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

Metodologia 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 (2h/semana) se harán clases magistrales en grupo grande para introducir conceptos nuevos para ser aplicados al desarrollo de las aplicaciones web de la parte práctica. Se espera de los estudiantes que lean los materiales propuestos por los profesores para poder realizar las prácticas encargadas. Dada la situación del covid-19 estas clases es realizaran on-line: haremos una combinación de sesiones síncronas con zoom i explicaciones en vídeo. 

Contenidos


  1. Tecnología base
    1. Protocolo HTTP
    2. Servlets y JSP
    3. Contexto de sesión y de aplicación
    4. AJAX
    5. Transferencia de objetos 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. Servicios REST
    11. Mensajería asincronía
  3. Cliente: javascript
    1. Aplicaciones de página múltiple vs aplicacines de página única
    2. Motores de plantillas HTML generadas en el servidor: Thymeleaf
    3. Aplicaciones cliente escritas en 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 CIN1, CIN13 i 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 a la última 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 [MECES2 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 (conocimiento tercera lengua) se trabaja a partir de las fuentes documentales que los estudiantes deben consultar, dado que todas ellas se encuentran en inglés. En algunas ocasiones también se suministran en inglés los enunciados de algunas de las prácticas de la asignatura

Sistema de evaluación


Evaluación

  • PR_P: prueba práctica. Ponderación de la nota final 30%
  • PRJ_W: proyecto web. Ponderación de la nota final 25% si la nota de PR_P >= 4
  • PRAC: prácticas. Ponderación en la nota final 25% (todas con el mismo peso) si la nota de PR_P >= 4
  • EX: ejecicios 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:

  • 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 las pruebas.

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ásica

Plana principal Spring. https://spring.io/

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

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


Complementaria

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

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