Que estàs buscant?
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.)
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
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ó
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
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.
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.
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:
Recuperació:
Per poder realitzar la prova de recuperació l'estudiant haurà de complir les tres condicions següents:
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.
Agile Software Development: Principles, Patterns, and Practices — Robert C. Martin,
Guide: Writing Testable Code http://misko.hevery.com/code-reviewers-guide/ —Miško Hevery
Spring Documentation - https://spring.io
UML for Java Programmers — Robert C. Martin