Informació general


Tipus d'assignatura: Optativa

Coordinador:

Trimestre:2

Crèdits: 6

Professorat: David Ródenas Picó

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 trabajo


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