Informació general


Tipus d'assignatura: Obligatòria

Coordinador: Ana Beatriz Pérez Zapata

Trimestre: Primer trimestre

Crèdits: 6

Professorat: 

Pedro Riera Martorell

Idiomes d'impartició


  • Català

L'idioma d'impartició principal a classe és el Català.

Tanmateix:

- tot el material de l'assignatura disponible està en anglès,
- les eines usades i les seves documentacions està en anglès,
- tots els treballs i totes les entregues que es fan cal que siguin en anglès.
  (això inclou codi, comentaris, documentació, interfícies, etc.)

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

     

  • EIS3_Capacitat per donar solució a problemes d'integració en funció de les estratègies, estàndards i tecnologia disponibles

     

  • 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

     

  • ESI2_Capacitat per determinar els requisits dels sistemes d'informació i comunicació d'una organització, atenent a aspectes de seguretat i compliment de la normativa i legislació vigent

     

  • 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ó


L'assignatura de Laboratori de Software 2 del primer trimestre de quart curs, és la última de les dues assignatures anomenades Laboratori de Software. La seva impartició està pensada en dedicar 1 ECTS a la part de teoria i 5 ECTS a practicar els conceptes exposats a teoria i els adquirits a la resta d’assignatures.

Aquesta assignatura consistirà en la creació d'una aplicació client servidor mitjançant en grup tot respectant la metodologia SCRUM i de continuos delivery.

L'alumne, a més d'implementar l'aplicació i crear les proves de software, captarà requisits per a noves funcionalitats, els especificarà, i farà els rols de Scrum Master i Release Manager.

Tot el dessenvolupament es farà a github, i les contribucions de l'equip es regularan mitjançant pull requests.

El codi es desenvoluparà amb Java Spring + JPA al costat servidor, Javascript React + Redux al client, i es comunicarà amb protocol REST.

Continguts


1. Disseny d'arquitectures Client/Servidor

Ús d'arquitectures distribuïdes en arquitectura client/servidor. El servidor estableix una interfície que el client usarà per comunicar-se amb l'usuari. El servidor i el client es comunicaren principalment amb REST.

2. Arquitectura d'Injecció de dependències automàtica + JPA

Ús de tecnologies d'injecció de dependències automàtica Spring.
Ús de l'API JPA al back-end que automàticament connecta amb una font de dades i estructura les taules i relacions de forma automàtica.

3. Arquitectura client MVC

Ús d'una arquitectura MVC al client capaç de gestionar correctament les dades i la comunicació amb el servidor.

4. Project Management

Ús del sistema SCRUM en equips on els alumnes hauran de presentar els resultats freqüentment al PO. El professor farà el rol de PO. Dins de cada grup i en rotació un dels alumnes farà de Scrumm Master.
Els alumnes també faran la captura de requisits, presentació de funcionalitats i disseny d'implementació.

5. Continuous Delivery

Ús d'un sistema de continuous delivery. S'usen proves de software per traçar i assegurar que s'implementa l'especificació correctament. A cada iteració, amb un sistema de rotació, cada un dels alumnes farà de Release Manager, creant i validant la versió a desplegar, i fent el desplegament a un entorn real de producció.

6. Qualitat i Seguretat

El sistema implantat ha de passar alts estàndards de qualitat i seguretat. Tot el codi passarà per diverses code reviews i haurà d'aplicar els patrons apresos en assignatures anteriors. També tot el codi haurà de disposar de testos amb una cobertura de quasi el 100%, i aquests hauran de contemplar totes les excepcions que puguin comprometre el servidor.

Sistema d'avaluació


La nota final es calcularà amb les qualificacions de les activitats ponderades de la forma següent:

- EXAMEN INDIVIDUAL: 50%

- PRÀCTICA: PROJECTE EN GRUP: 50%

Normativa:

  • El projecte en grup, tot i fer-se en grup, la participació i la nota serà individual. Aquesta serà la ponderació de les diverses notes de les diverses tasques portades a terme per l'alumne. La nota de cada tasca cal que sigui 3 o superior, en cas contrari la nota de tot el projecte en grup serà el mínim de les notes de cada tasca.
  • Si la nota de l'examen individual és inferior a 3, o la nota de la pràctica és inferior a 3, la nota final de l'assignatura serà la mínima d'elles, per tant, es suspendrà l'assignatura.
  • Només podrà recuperar-se la l'examen individual (el projecte en grup no es podrà recuperar). El 50% de la nota final de l'assignatura serà la més gran entre la prova de recuperació i l’obtinguda en l'examen.

Recuperació:

Per poder realitzar la prova de recuperació l'estudiant haurà de complir les tres condicions següents:

  • La nota de l'assignatura és inferior a cinc.
  • Haver-se presentat a l'examen individual.
  • La nota que obtinguda en cada una de les tasques de la pràctica ser 3 o més.

Bibliografia


Bàsic

Spring Documentation - https://spring.io

Agile Software Development: Principles, Patterns, and Practices — Robert C. Martin,

Guide: Writing Testable Code http://misko.hevery.com/code-reviewers-guide/ —Miško Hevery

Complementary

UML for Java Programmers — Robert C. Martin