Informació general


Tipus d'assignatura: Obligatòria

Coordinador: Alfons Palacios Gonzàlez

Trimestre: 1

Crèdits: 6

Professorat: 

Josep Roure Alcobé
Jordi Boix Baró 

Competències


Competències bàsiques
  • B2_Que els estudiants sàpiguen aplicar els seus coneixements a la seva feina o vocació d'una forma professional i tinguin les comptències que demostren mitjançant l'elaboració i defensa d'arguments i la resolució de problemes dins de la seva àrea d'estudi

  • B4_Que els estudiants puguin transmetre informació, idees, problemes i solucions a un públic tan especialitzat com no especialitzat

  • B5_Que els estudiants hagin desenvolupat aquelles habilitats d'aprenentatge necessàries per emprendre estudis posteriors amb un alt grau d'autonomia

Competències específiques
  • EIS1_Capacitat per a desenvolupar, mantenir i avaluar serveis i sistemes software que satisfacin tots els requisits de l'usuari i que es comportin de forma fiable i eficient, siguin assequibles de desenvolupar i mantenir i compleixin normes de qualitat, aplicant les teories, principis, mètodes i pràctiques de l'enginyeria del software

  • EIS2_Capacitat per a valorar les necessitats del client i especificar els requisits software per a satisfer aquestes necessitats, reconciliant objectius en conflicte, mitjançant la cerca de compromisos acceptables, dins de les limitacions derivades del cost, del temps, de l'existència de sistemes ja desenvolupats i de les pròpies organitzacions

  • EIS4_Capacitat d'identificar i analitzar problemes i dissenyar, desenvolupar, implementar, verificar i documentar solucions software sobre la base d'un coneixement adequat de les teories, models i tècniques actuals

  • EIS5_Capacitat d'identificar, avaluar i gestionar els riscos potencials associats que es puguin presentar

  • EIS6_Capacitat per a dissenyar solucions apropiades en un o més dominis d'aplicació, utilitzant mètodes de l'enginyeria del software que integren aspectes ètics, socials, legals i econòmics

  • ESI3_Capacitat per participar activament en l'especificació, disseny, implementació i manteniment dels sistemes d'informació i comunicació

Competències transversals
  • T1_Que els estudiants coneixin un tercer idioma, que serà preferentment l'anglès, amb un nivell adequat de forma oral i per escrit, d'acord amb les necessitats que tindran les graduades i els graduats a cada titulació

  • T2_Que els estudiants tinguin capacitat per a treballar com a membres d'un equip interidisciplinar ja sigui com un membres més, o realitzant tasques de direcció amb la finalitat de contribuir a desenvolupar projectes amb pragmatisme i sentit de la responsabilitat, assumint compromisos tenint en compte els recursos disponibles

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 aplicacions de client escrites amb HTML, CSS i JavaScipt.

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 d'usuari. 

 

Aquesta assignatura disposa de recursos metodològics i digitals per fer possible la seva continuïtat en modalitat no presencial en el cas de ser necessari per motius relacionats amb la Covid-19. D’aquesta forma s’assegurarà l’assoliment dels mateixos coneixements i competències que s’especifiquen en aquest pla docent.

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 trabajo


É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 introduir 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. Donada la situació del covid-19 aquestes classes es faran on-line: farem una combinació de sessions síncrones amb zoom i explicacions en vídeo.

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. Serveis REST
    6. Formularis i pas d'informació
    7. Excepcions i control d'errors
    8. Seguretat
    9. Connexió a BBDD amb JDBC
    10. Missatgeria asíncrona
  3. Client: 
    1. Aplicacions de plana múltiple vs. aplicacions de plana única
    2. Motors de plantilles HTML generades al servidor: Thymeleaf
    3. Aplicació de client amb HTML, CSS i JavaScript 

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 transversal 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àsic

Walls, Craig (2019), "Spring in Action". (fifth edition) Manning. [in October 2021 the sixth edition may be published]

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

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

Complementary

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