Informació general


Tipus d'assignatura: Obligatòria

Coordinador: Vladimir Bellavista Parent

Trimestre: Primer trimestre

Crèdits: 6

Professorat: 

Jordi López Galera

Curs acadèmic: 2026

Curs d'impartició: 4

Llengües d'impartició


  • Català

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

Tot i que per fer una aproximació en un entorn de treball real:


- 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 / Resultats d'aprenentatge


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

Presentació de l'assignatura


L'assignatura de Laboratori de Software II, del primer trimestre de quart curs, és la darrera de les dues assignatures anomenades Laboratori de Software. La seva estructura distribueix 2 ECTS a la part teòrica i 4 ECTS a la pràctica, on els alumnes consoliden i apliquen tant els conceptes exposats a teoria com els adquirits al llarg de la resta del grau.

L'objectiu central de l'assignatura és la creació d'una aplicació client-servidor en equip, seguint la metodologia SCRUM i els principis de continuous delivery. Més enllà de la implementació i les proves de software, cada estudiant participarà en la captura i especificació de requisits per a noves funcionalitats, i exercirà en rotació els rols de Scrum Master i Release Manager al llarg dels sprints.

Tot el desenvolupament es gestionarà a GitHub. Les contribucions de l'equip es regularan mitjançant pull requests amb revisió de codi obligatòria entre companys, reproduint el flux de treball habitual en entorns professionals reals.

L'assignatura integra també l'ús d'eines d'Intel·ligència Artificial com a part del flux de treball de l'equip. Els alumnes aprendran a configurar i utilitzar aquestes eines de forma responsable i crítica dins del context del desenvolupament de software professional, entenent-les com un recurs que pot augmentar la productivitat sense substituir el criteri tècnic ni la comprensió profunda del codi.

La pila tecnològica és la següent: Java Spring amb JPA al costat servidor, TypeScript amb React al client —gestionant l'estat mitjançant React Query i la Context API— i comunicació entre capes mitjançant protocol REST.

Finalment, cada equip configurarà un pipeline de CI/CD amb GitHub Actions que haurà d'incloure, com a mínim: linting, execució de tests, build i desplegament automatitzat a l'entorn de producció definit per l'assignatura.

Continguts


1. Disseny d'arquitectures Client/Servidor
L'assignatura treballa amb arquitectures distribuïdes basades en el model client/servidor. El servidor exposa una interfície ben definida que el client utilitza per comunicar-se i presentar la informació a l'usuari. La comunicació entre ambdues capes es realitza principalment mitjançant protocol REST.

2. Injecció de dependències i persistència amb JPA
Al costat servidor s'utilitza Spring com a framework d'injecció de dependències automàtica, juntament amb l'API JPA per a la gestió de la persistència. JPA s'encarrega de connectar amb la font de dades i de generar i mantenir l'esquema de taules i relacions de forma transparent.

3. Arquitectura MVC al client
El client s'estructura seguint el patró MVC, garantint una separació clara entre la gestió de dades, la lògica de presentació i la comunicació amb el servidor.

4. Gestió de projecte amb SCRUM
Els equips treballen seguint la metodologia SCRUM, presentant els resultats de cada sprint al Product Owner —rol exercit pel professor. Dins de cada grup, i en rotació, un dels membres assumeix el rol de Scrum Master. A més, tots els alumnes participen en la captura de requisits, la presentació de noves funcionalitats i el disseny de la seva implementació.

5. Continuous Delivery
Cada equip manté un pipeline de continuous delivery actiu durant tot el projecte. Les proves de software garanteixen que cada iteració compleix l'especificació definida. En rotació, un membre de l'equip assumeix el rol de Release Manager, responsable de crear i validar la versió a desplegar i d'executar el desplegament a un entorn real de producció.

6. Qualitat i Seguretat
El codi produït ha de complir estàndards elevats de qualitat i seguretat. Totes les contribucions passen per processos de revisió de codi entre companys i han d'aplicar els patrons i bones pràctiques apresos al llarg del grau. A més, el conjunt de testos ha d'assolir una cobertura propera al 100%, incloent-hi els casos excepcionals que puguin comprometre l'estabilitat o la seguretat del servidor.

7. Ús d'eines d'Intel·ligència Artificial
El repositori es configura per facilitar i potenciar l'ús d'eines d'Intel·ligència Artificial durant el desenvolupament, integrant-les com un recurs més dins del flux de treball de l'equip.

Activitats i sistema d'avaluació


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

- EXAMEN INDIVIDUAL: 30%

- PRÀCTICA: PROJECTE EN GRUP: 70%

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, se suspendrà l'assignatura.
  • Només podrà recuperar-se l'examen individual (el projecte en grup no es podrà recuperar). En cas d'anar a recuperació, la nota final de teoria (30% del total) 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 obtinguda en cada una de les tasques de la pràctica ser 3 o més.

Observacions davant possible frau acadèmic:

Qualsevol forma de frau acadèmic serà sancionada d’acord amb la normativa d’avaluació del centre. En cas que es detectin indicis de frau, inclòs l’ús indegut d’eines d’intel·ligència artificial generativa, el professorat de l’assignatura podrà convocar l’estudiant a una entrevista individual amb l’objectiu de verificar-ne l’autoria.

Bibliografia


Bàsic

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

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

React

Spring Documentation - https://spring.io

Complementària

UML for Java Programmers — Robert C. Martin