Informació general


  • Tipus d'assignatura: Obligatòria
  • Coordinador: Enric Sesa Nogueras
  • Trimestre: 1
  • Crèdits: 6
  • Professorat:

Idiomes d'impartició


  • English

Descripció


Aquesta és una assignatura de laboratori i per tant és eminentment pràctica. L’objectiu final és construir una aplicació web completa pel que implementarem un producte mínim viable que decidirem durant els primers dies de curs. Les característiques que haurà de tenir l’aplicació seran les següents:

  • El model del domini ha de tenir un mínim de quatre classes
  • S’ha de connectar a una base de dades remota
  • Implementa seguretat: ha de validar els usuaris
  • Segueix els patrons de software vists a les assignatures de programació i d'enginyeria del software
  • Separa la capa de presentació de la capa de domini amb el patró vista-controlador
  • La interfície d’usuari oferix una bona experiència d’usuari: segueix els criteris explicats a Interacció Persona Ordinador

Estudiarem les tecnologies i protocols base sobre les que es construeixen les aplicacions web per seguidament introduir el framework anomenat Spring. Hem triat el Spring per moltes raons: és opensouce, és en Java, es molt usat al món professional, segueix i fomenta bones pràctiques de programació, hi ha una comunitat molt gran i activa al darrera. Per la part de la interfície d’usuari utilitzarem el Thymeleaf que és un motor de plantilles HTML que s’integra molt bé amb Spring.

A l’assignatura és donarà molta importància al procés de desenvolupament de l’aplicació. S’haurà de desenvolupar en grups de quatre estudiants i s’haurà de repartir la feina de manera que tots els integrants desenvolupin sencera alguna funció, és a dir, que treballin amb la BBDD, el servei web i la interfície. 

Resultats d'aprenentatge


A nivell general, aquesta assignatura contribueix als següents resultats d'aprenentatge especificats per a la matèria a la qual pertany (Aplicacions Distribuides)

  • Avaluar i seleccionar plataformes de producció hardware i programari per a la execució d'aplicacions i de serveis informàtics.
  • Determinar els factors que incideixen negativament en la seguretat i la fiabilitat d'un sistema hardware / software, i minimitzar-ne els efectes.
  • Identificar tecnologies actuals i emergents i avaluar si són aplicables, i en quina mesura, per satisfer les necessitats dels usuaris.

A nivell més concret, en acabar l'assignatura l'estudiant o estudianta ha de ser capaç de:

  • RA1: Dissenyar, escriure, provar, depurar, documentar i mantenir codi en un llenguatge d'alt nivell per resoldre problemes de programació aplicant esquemes algorísmics i usant estructures de dades
  • RA2: Dissenyar i escriure pàgines web amb llenguatges de client
  • RA3: Dissenyar i desenvolupar aplicacions web amb llenguatges del cantó del servidor
  • RA4: Aplicar patrons d'enginyeria del software per separar la capa de presentació de la capa de negoci
  • RA5: Implementar seguretat a les aplicacions desenvolupades
  • RA6: Seleccionar i publicar una aplicació a una plataforma de cloud computing

 

Metodologia de treball


Éssent un laboratori aquesta assignatura seguirà una metodologia d'aprenentatge guiada per exemples (del professor) i especialment per projectes (que desenvoluparan els alumnes).

La major part de les hores de classe (4h/setmana) seran en el laboratori en grup petit. En aquestes sessions els estudiants hauran de desenvolupar una (o varies) aplicacions web proposades pel professor i es discutiran i argumentaran les implementacions realitzades.

Puntualment es faran classes magistrals (2h/setmana) en grup gran per introduïr conceptes nous per ser aplicats al desenvolupament de les aplicacions web de la part pràctica. Bo i això, els estudiants hauran de llegir materials proposats pels professors per tal de poder realitzar les pràctiques encomanades.

Continguts


  1. Aplicacions internet
    1. Comunicació client i servidor: protocol HTTP
    2. JEE, Servlets i JSP
    3. Context de sessió i d’aplicació
    4. AJAX
    5. Transferència d’objectes serialitzats amb XML i JSON
  2. Servidor: El framework Spring
    1. Components de Spring
    2. Injecció de dependències
    3. Programació orientada a aspectes (AOP)
    4. El patró Model Vista Controlador (MVC)
    5. Formularis i pas d'informació
    6. Excepcions i control d'errors
    7. Seguretat
    8. Connexió a BBDD amb JDBC
    9. Serveis REST
    10. Missatgeria asíncrona
  3. Client: 
    1. Aplicacions de plana múltiple vs. aplicacions de plana variable
    2. Motors de plantilles HTML generades al servidor: Thymeleaf

Activitats d'aprenentatge


Amb l'objectiu de recollir evidència de l'assoliment dels resultats d'aprenentatge esperats es realitzaran les següents activitats de caràcter avaluatiu:

  • Fins un màxim de 5 exercicis individuals: Són exercicis concrets que avaluaran el coneixement del framework Spring introduït a classe pel professor. És important realitzar-los per entendre bé el Spring i familiaritzar-se amb les eines de desenvolupament per encarar el desenvolupament de l'aplicació web amb èxit. Estan relacionats amb tots els resultats d'aprenentatge i amb les competències específiques CIN1, CIN13 i CIN17
  • Fins un màxim de 3 pràctiques en grup que corresponen a lliuraments parcials de l'aplicació web. Es valorarà el treball en equip, la dificultat del projecte i la solució dissenyada. 
  • Projecte web que correspon al darrer lliurament de l'aplicació desenvolupada durant el curs. 

Les tres pràctiques anteriors i el projecte web final estan relacionats amb tos els resultats d'aprenentatge i amb totes les competències de l'assignatura destacant la tranversal T2: treball en equip, que serà fonamental per desenvolupar una aplicació de la complexitat requerida.

  • Prova pràctica: examen individual on l'estudiant haurà de demostrar que té coneixement del Spring i està familiaritzat amb les eines de desenvolupament. Està relacionat amb tots els resultats d'aprenentatge i les competències CIN8, CIN13, CIN17, EIS1, EIS4, EIS6, EIS13

Per tal de superar (aprovar) les activitats avaluatives, els estudiants hauran de demostrar

  • Que han adquirit els coneixements teòrics relatius als continguts de l’assignatura i que la seva comprensió els permet de portar-los a la pràctica [MECES-2 punt a, punt c]
  • Que poden desenvolupar solucions a problemes que, si bé són semblants a d’altres vistos anteriorment, presenten aspectes que són nous [MECES- 2 punt f]

A continuació s'expliciten els aspectes més importants de cada competència assignada a l'assignatura:

  • B2: resolució de problemes dins de la seva àrea d’estudi.
  • B4: transmetre problemes i solucions
  • B5: desenvolupament d’habilitats d’aprenentatge necessàries per a estudis posteriors (accés autònom a documentació, hàbits de treball efectius)
  • CIN1: dissenyar, desenvolupar i avaluar sistemes i aplicacions informàtiques assegurant la seva fiabilitat, seguretat i qualitat
  • CIN2: planificar, concebre, desplegar i dirigir projectes informàtics
  • CIN3: mostrar actituds de treball en equip
  • CIN4: elaborar el plec de condicions tècniques d'un sistema
  • CIN5: administració de serveis i sistemes
  • CIN8: analitzar, dissenyar i construir aplicacions
  • CIN13: aplicació de les eines d'emmagatzematge d'informació
  • CIN17: dissenyar interfícies persona computador
  • EIS1: desenvolupar i avaluar sistemes que compleixin els requisits de l'usuari 
  • EIS2: especificar els requisits dels usuaris
  • EIS4: identificar i analitzar problemes i dissenyar, implementar i documentar solucions software
  • EIS5: identificar, avaluar i gestionar riscos
  • EIS6: dissenyar solucions software
  • ESI13: especificar, dissenyar i implementar sistemes d'informació i comunicació
  • T2: capacitat per treballar en equip desenvolupant diferents rols

Nota: la competència transversal associada a l'assignatura (T1: coneixement tercera llengua) es treballa ja que totes les classes i apunts es donen en anglès. 

Sistema d'avaluació


Avaluació

  • PRJ_W: projecte web. Ponderació de la nota final 25% si la nota de PR_P >= 4
  • PR_P: prova pràctica. Ponderació de la nota final 30%
  • PRAC: pràctiques. Ponderació a la nota final 25% (totes amb el mateix pes) si la nota de PR_P >= 4
  • EX: exercicis individuals. Ponderació a la nota final 20% si la nota de PR_P >= 4

Càlcul 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ó:

Només es podrà recuperar la prova pràctica PR_P. La nota final es calcularà tal i com s'ha establert anteriorment amb les notes de la recuperació de la prova.

Normativa:

  • Seguint la normativa de la UPF, si es detecta que una pràctica o una prova ha estat copiada la nota d'aquella prova serà de 0 (zero) amb independència del seu paper (receptor o l'emissor) i sense que això exclogui la possible aplicació d’altres sancions d’acord amb el Règim Disciplinari vigent.
  • Per tal que l'estudiant tingui dret a la recuperació s'haurà d'haver presentat a PR_R

Bibliografia


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


Complementària

 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