Informació general


Tipus d'assignatura: Obligatòria

Coordinador: Rosa Herrero Antón

Trimestre: Segon trimestre

Crèdits: 6

Professorat: 

Josep Roure Alcobé
Alfredo Rueda Unsain 

Idiomes d'impartició


  • Català

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

  • B3_Que els estudiants tinguin la capacitat de reunir i interpretar dades rellevants (normalment dins de la seva àrea d'estudi), per emetre judicis que incloguin una reflexió sobre temes rellevants de caire social, científica o ètica

  • 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
  • EFB6_Coneixement adequat del concepte d'empresa, marc institucional i jurídic de l'empresa. Organització i gestió d'empreses

  • 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

  • ESI1_Capacitat per integrar solucions de Tecnologies de la Informació i de les Comunicacions i processos empresarials per a satisfer les necessitats d'informació de les organitzacions, permetent arribar als seus objectius de forma efectiva i eficient, aconseguint així avantatges competitives

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

  • ESI4_Capacitat per comprendre i aplicar els principis i pràctiques de les organitzacions, de manera que puguin exercir com a enllaç entre les comunitats tècniques i de gestió d'una organització i participar activament en la formació dels usuaris

  • ESI5_Capacitat per comprendre i aplicar els principis de l'avaluació de riscos i aplicar-los correctament en l'elaboració i execució de plans d'actuació

  • ESI6_Capacitat per comprendre i aplicar els principis i les tècniques de gestió de la qualitat i de la innovació tecnològica en les organitzacions

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ó


En aquesta assignatura es veurà una visió global de les tres arquitectures dels sistemes d'informació més usades avui en dia a la indústria. En primer lloc, dues arquitectures monolítiques on totes les funcionalitats són en un sol mòdul: arquitectura per capes i també veurem la família de les arquitectures "clean" o hexagonals que separen el domini i els controladors d'aplicació de l'exterior. Aquesta segona arquitectura (la clean) facilita la separació de les funcionalitats en mòduls diferents. En tercer lloc, explorarem les arquitectures basades en microserveis que busquen separar les funcionalitats en aplicacions independents però interconnectades. Veurem els avantatges i inconvenients de cadascuna d'elles tot fent referència a les conseqüències que tenen en l'organització dels equips que desenvolupen i gestionen els Sistemes d'Informació.També introduirem eines relacionades amb el DevOps com ara els contenidors i el concepte de servidor immutable. Durant el curs desenvoluparem un projecte que usarà les arquitectures hexagonals i les basades en microserveis.

Important: a les pràctiques usem el framework de programació Spring Boot i Spring Cloud que s'introdueixen durant l'assignatura Laboratori d'Aplicacions Internet. Es recomana haver-la cursat abans de realitzar Disseny de Sistemes d'Informació.

L'aula (física o virtual) és un espai segur, lliure d'actituds masclistes, racistes, homòfobes, trànsfobes i discriminatòries, ja sigui cap a l'alumnat o cap al professorat. Confiem que entre totes i tots puguem crear un espai segur on ens puguem equivocar i aprendre sense haver de patir prejudicis d'altres. 

Continguts


1.- Motivació
2.- Introducció a l’arquitectura del software i sistemes
3.- Arquitectures monolítiques
    3.1.- Característiques
    3.2.- Revisitem l’arquitectura per capes
4.- Arquitectures “clean” o hexagonals
    4.1.- Característiques
    4.2.- Una estructura que expliqui la funcionalitat
    4.3.- Ports i adaptadors
    4.4.- Mapping entre capes
    4.5.- Organitació en mòduls
5.- Arquitectures distribuides: microserveis
    5.1.- Introducció: “the monolith hell”
    5.2.- Modelització: DDD 
    5.3.- Models de comunicació (síncrona i asíncrona)
    5.4.- Transaccions i “eventual consistency”
    5.5.- Patrons d’infraestructura

Sistema d'avaluació


Avaluació

  • PR_E: prova escrita. Ponderació de la nota final 15%
  • PR_P: prova pràctica. Ponderació de la nota final 15%
  • PRJ: projecte. Ponderació a la nota final 60% si la nota de PR_E >= 5 i PR_P >= 5

Càlcul nota final (NF):

  • Si PR_E >= 5 i PR_P >= 5 :  NF = PON = PR_E  0,15 + PR_E2 0,15 + PRJ 0.6
  • Si (PR_E < 5 o PR_P < 5 :    NF = min((PR_E 0,15 + PR_P 0,15), PON)

Recuperació:

  • Es podran recuperar les dues proves (PR_E i PR_P) per separat. La nota final es calcularà tal i com s'ha establert anteriorment amb les notes de la recuperació de les proves.

Normativa:

  • L'assistència a les pràctiques és obligatòria. Si un estudiant no assisteix a una sessió de pràctiques sera qualificat amb una nota de 0 (zero) a la pràctica corresponent
  • Seguint la normativa de la UPF, si es detecta que una pràctica o una prova ha estat copiada la d'aquesta serà de 0 (zero) tant del que copia com del que es deixa copiar
  • Per tal que l'estudiant tingui dret a la recuperació s'haurà d'haver presentat a les dues proves (PR_E i PR_R)

Bibliografia


Bàsic

Get Your Hands Dirty on Clean Architecture: A hands-on guide to creating clean web applications with code examples in Java. Tom Hombergs. Packt Ed

Newman, Sam (2021), "Building Microservices: Designing Fine-Grained Systems" (2nd edition). O'Reilly Media

Complementary

Josh Long, Kenny Bastani, "Cloud Native Java. Designing Resilient Systems with Spring Boot, Spring Cloud, and Cloud Foundry". O'Reilly 2017

Chris Richardson. Patrons de microserveis: https://microservices.io/

Hands-On Microservices with Spring Boot and Spring Cloud. By Magnus Larsson. Packt publisher (2019)