Informació general


Tipus d'assignatura: Optativa

Coordinador:

Trimestre: Segon trimestre

Crèdits: 6

Professorat: 

David Ródenas Picó

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

  • 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 assignatura és la culminació de totes les assignatures d'Enginyeria del Software i dona per primer cop una solució per crear i integrar software a escala organitzatiu. La seva impartició està pensada a 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.

La pedra angular d'aquesta assignatura és la metodologia DDD que permet modelar i coordinar el software complet d'organitzacions i empreses. Es pren com punt d'origen el fet que l'empresa viu una realitat distribuïda en múltiples localitzacions, amb múltiples implantacions informàtiques, i múltiples softwares que es coordinen per a oferir una única visió integrada de tots els serveis de l'empresa.

La clau de tota la metodologia és la definició dels conceptes que formen part en cada part de l'organització, com es coordinen i com prenen sentit, i com, gràcies a la definició de comandes i esdeveniments es pot assegurar la consistència eventual completa de dades amb l'ajuda de bussos de missatges com les diverses implementacions de JMS o serveis com RabbitMQ.

A més de tot això s'ensenyaran mecanismes avançats de captació de requisits de gran escala i la definició de proves de software executables en llenguatge natural capaç de ser entès per la direcció de l'empresa.

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


En l'àmbit general aquesta assignatura contribueix als següents resultats d'aprenentatge especificats per la matèria a la qual pertany:

  • Utilitzar de forma apropiada teories, procediments i eines en el desenvolupament professional de l'enginyeria informàtica en tots els seus àmbits (especificació, disseny, implementació, desplegament -implantación- i avaluació de productes) de manera que es demostri la comprensió dels compromisos adoptats en les decisions de disseny.
  • Usar les eines d'un entorn de desenvolupament de programari per a crear i desenvolupar aplicacions.
  • Demostrar coneixement i saber aplicar les tècniques apropiades per a modelar i analitzar els diferents tipus de decisions.
  • Gestionar i resoldre els problemes i conflictes gràcies a la capacitat de generar alternatives o escenaris de futur convenientment analitzats, integrant els aspectes d'incertesa i els múltiples objectius a considerar.
  • Prendre iniciatives que generin oportunitats, nous objectes o solucions noves, amb una visió d'implementació de procés i de mercat, i que impliqui i faci partícips als altres en projectes que s'han de desenvolupar (capacitat d'actuar de manera autònoma).
  • Especificar, dissenyar, implementar, gestionar i mantenir sistemes i serveis programari complexos i / o crítics.
  • Controlar la qualitat i dissenyar proves en la producció de programari.
  • Definir i gestionar els requisits d'un sistema software.
  • Avaluar i seleccionar plataformes de producció hardware i software per a l'execució ¿d'aplicacions i de serveis informàtics.
  • Identificar tecnologies actuals i emergents i avaluar si són aplicables, i en quina mesura, per a satisfer les necessitats dels usuaris.
  • Dirigir, planificar i coordinar la gestió de la infraestructura informàtica: maquinari, programari, xarxes i comunicacions.
  • Dissenyar solucions que integrin tecnologies de hardware, software i comunicacions (i capacitat de desenvolupar solucions específiques de software de sistemes) per a sistemes distribuïts i dispositius de computació ubiqua.
  • Planificar i utilitzar la informació necessària per a un treball acadèmic (per exemple, per al treball de final de grau) a partir d'una reflexió crítica sobre els recursos d'informació utilitzats. Gestionar la informació de manera competent, independent i autònoma. Avaluar la informació trobada i identificar les llacunes presents.

A un nivell més concret, en acabar l'assignatura l'estudiant ha de ser capaç de:

  • Descriure què és el Domain Driven Desing (DDD)
  • Dissenyar i implementar els sistemes informàtics d'una organització usant el DDD
  • Crear proves de software automàtiques d'alt nivell capaces per esser validades per no informatics
  • Crear sistemes escalables a organitzacions de grans dimensions

 

Metodologia de treball


Hi haurà classes de teoria en grup gran i classes de pràctiques al laboratori en grup petit. A les classes de teoria s'aniran combinant sessions de tipus lliçó magistral amb sessions de resolució de problemes proposats pel professor en grups de dos o tres estudiants.

Les pràctiques al laboratori es realitzaran per parella. S'hauran de començar a treballar al laboratori amb l'ajuda del professor i s'hauran d'acabar de forma autònoma fora de les hores presencials reglamentades.

Continguts


  1. Introducció, perquè i estratègia vs tàctica
  2. Estratègia
    1. Bounded Context
    2. Ubiquitous Language
    3. Com definir el BC i el UL (I)
      Domain Experts, Feedback loop, Challenge & Unify, Core Bounding Context, Ubiquitous Language (BDD / GWT)
    4. Domains or subdomains
    5. Context Mapping
    6. Messaging i Eventual Consistency
  3. Tàctica
    1. Aggregates
    2. Entity vs Value Object
    3. Domain Events
    4. Event Sourcing
  4. Event Storming
  5. Qualitat
    1. BDD
    2. Cucumber

 

Activitats d'aprenentatge


Prova escrita: l'estudiant haurà de demostrar que ha adquirit els coneixements teòrics explicats a classe.

Pràctiques: Hi haurà 5 pràctiques on s'aplicaran els coneixements adquirits a classe. Consistiran en el desenvolupament d'un sistema d'informació usant el Domain Driven Development.

Participació a classe: les classes seran participatives i el professor proposarà activitats per a que siguin desenvolupades en equips de dues o tres persones.

Sistema d'avaluació


Avaluació

PR_E: prova escrita. Ponderació de la nota final 40%
PRAC: pràctiques de la 1 a la 5. Ponderació a la nota final 55% si la nota de PR_E >= 3
CLASS: exercicis de classe. Ponderació a la nota final 5% si la nota de PR_E 0,4 >= 3

Càlcul nota final (NF):

Si PR_E >= 3 : NF = PON = PR_E 0,4 + PRAC 0,55 + CLASS 0,05

Si PR_E < 3 : NF = min(PR_E, PON)

Recuperació: Es podrà recuperar la prova escrita (PR_E). La nota final es calcularà tal i com s'ha establert anteriorment amb la nota de la recuperació.

 

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 nota final de l'assignatura serà de 0 (zero)
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

Domain-Driven Design Distilled – Vaughn Vernon

Documentació de Cucumber - https://cucumber.io

Complementary

Implementing Domain-Driven Design – Vaughn Vernon

Domain-Driven Design: Tackling Complexity in the Heart of Software – Eric Evans