Eng. de programari de components i sistemes distribuïts Codi:  05.587    :  6
Consulta de les dades generals   Descripció   L'assignatura en el conjunt del pla d'estudis   Camps professionals en què es projecta   Coneixements previs   Informació prèvia a la matrícula   Objectius i competències   Continguts   Consulta dels recursos d'aprenentatge de què disposa l'assignatura   Recursos d'aprenentatge i eines de suport   Informacions sobre l'avaluació a la UOC   Consulta del model d'avaluació  
Aquest és el pla docent de l'assignatura. Us servirà per planificar la matrícula (consulteu si l'assignatura s'ofereix aquest semestre a l'espai del Campus Més UOC / La Universitat / Plans d'estudis). Un cop comenci la docència, heu de consultar-lo a l'aula. (El pla docent pot estar subjecte a canvis.)

Els continus avenços en informàtica i telecomunicacions estan canviant la manera com es desenvolupa el programari. En particular, l'incessant augment de la potència dels ordinadors personals i dispositius mòbils, l'abaratiment dels costos del maquinari i l'aparició de xarxes de dades de cobertura global han fet possible una infraestructura especialment favorable per a l'ús dels sistemes oberts i distribuïts.


Aquests canvis han provocat, entre altres coses, que els mètodes de disseny i desenvolupament de programari tradicionals (vistos en les assignatures d'Enginyeria del programari i Anàlisi i disseny amb patrons) siguin insuficients, ja que, més o menys implícitament, assumeixen que l'aplicació a desenvolupar s'executarà en un entorn bàsicament centralitzat. Per tant, els mètodes tradicionals són incapaços de gestionar de manera natural la complexitat dels requisits d'aquest nou tipus de sistemes. Per altra banda, els aspectes més propers a l'anàlisi i a l'especificació de requisits vistos a l’assignatura Enginyeria de requisits no canvien respecte a allò que s'ha vist en les assignatures anteriors i, per tant, no es repeteixen aquí.

 

Aquesta assignatura serveix com a introducció a les arquitectures de programari com a marc de treball pel disseny i desenvolupament d'aplicacions distribuïdes on s'estudien i es posa en pràctica els fonaments, tècniques i habilitats aplicables a la definició moderna d’arquitectures del programari, i es complementen els coneixements adquirits en les assignatures prèvies. El disseny de l’arquitectura dels sistemes de programari permet descriure d'una manera abstracta i d'alt nivell tant la funcionalitat del sistema com molts altres aspectes no funcionals d'aquest (distribució, fiabilitat, seguretat, adaptabilitat, prestacions, etc.). Aquesta descripció del sistema sol definir-se partint d'un estil arquitectònic, una classificació dels sistemes de programari en grans famílies que segueixen un patró estructural comú. Entre els estils arquitectònics més usuals per als sistemes distribuïts hi ha els sistemes organitzats en microserveis, múltiples capes, els sistemes client-servidor o els sistemes peer-to-peer.

 

El disseny de l'aplicació en termes de microserveis de programari ha de refinar-se, posteriorment, per adaptar-lo i implementar-lo en una tecnologia de programari distribuït concreta. Aquestes arquitectures poden implementar-se utilitzant qualsevol paradigma de programació (orientat a objectes, estructurat...). En el nostre cas concret, el llenguatge de referència serà Java que permet desenvolupar aplicacions distribuïdes amb arquitectures de microserveis. Aquests microserveis són els que serviran per a implementar i testejar els elements arquitectònics descrits en l'arquitectura del sistema.

 

Finalment, es recullen algunes bones pràctiques en el desenvolupament i posada en producció del programari en arquitectures distribuïdes. Es treballen alguns dels conceptes clau a l’hora de desenvolupar i posada en producció, com l’entrega contínua, la cultura DevOps i el desplegament amb contenidors.

Amunt

Aquesta assignatura està emmarcada dins l'itinerari d'Enginyeria del Programari del grau d'Enginyeria Informàtica constituint una extensió en diverses dimensions dels coneixements bàsics d'enginyeria del programari inclosos tant a l'itinerari concret com a les assignatures obligatòries del grau.

 

Per a poder cursar amb profit aquesta assignatura, cal que els estudiants tinguin coneixements previs sobre tecnologia orientada a objectes. Concretament, cal conèixer els fonaments de la programació orientada a objectes i les notacions bàsiques d'UML, tal i com es veuen, per exemple, a les assignatures Enginyeria del programari i Anàlisi i disseny amb patrons d'aquesta mateixa titulació.

Amunt

L'assignatura serà especialment útil a tots els futurs professionals dedicats al desenvolupament de programari segons una concepció actual. El camp del desenvolupament de programari canvia dia a dia, i com ja s'ha comentat al principi, tant els sistemes distribuïts com els sistemes de microserveis van prenent més i més importància. 

 

Per altra part, també és important per tot enginyer informàtic adquirir les habilitats bàsiques en la instal·lació, configuració i ús de les diverses eines de suport existents pel desenvolupament, desplegament i execució d'aplicacions de programari. En aquesta assignatura es durà a terme una intensa tasca en aquest sentit per consolidar aquestes habilitats mitjançant el suport d'una aula de Laboratori especialitzada. Per tant, s'evitarà en el possible l'ús de màquines virtuals automàtiques amb entorns ja configurats i, en canvi, fomentar l'ús d'eines individuals que l'estudiant haurà d'aprendre a instal·lar i configurar manualment.

Amunt

Haver superat Enginyeria del programari i Anàlisi i disseny amb patrons o tenir els coneixements equivalents és la condició prèvia per poder cursar aquesta assignatura.

 

És també imprescindible que l'estudiant tingui un bon nivell de Java per a poder superar l'assignatura. L'assignatura té una part important de treball pràctic en Java que assumeix un coneixement i pràctica importants en aquest llenguatge. No és gens recomanable que l'estudiant cursi aquesta assignatura fins que s'hagi assolit un bon nivell en Java, ja que altrament es veurà abocat a repetir l'assignatura amb una alta probabilitat.

Amunt

És recomanable haver superat les següents assignatures del Grau:

Enginyeria del programari i Anàlisi i disseny amb patrons.

Amunt

Competències transversals del Grau en Enginyeria Informàtica:

  • Capacitat de comunicació escrita en l'àmbit acadèmic i professional.                                                                         
  • Ús i aplicació de les TIC en l'àmbit acadèmic i professional.                                                                                             
  • Capacitat per adaptar-se a les tecnologies i a futurs entorns actualitzant les competències professionals.
  • Saber proposar i avaluar diferents alternatives tecnològiques per resoldre un problema concret.                                  
  • Capacitat d'analitzar un problema en el nivell d'abstracció adequat a cada situació i aplicar les habilitats i coneixements adquirits per abordar-ho i resoldre-ho.                                                                                                                         
  • Saber construir aplicacions informàtiques mitjançant tècniques de desenvolupament, integració y reutilització.
  • Aplicació de les tècniques específiques de l’Enginyeria del Programari a les diferents etapes del cicle de vida d'un projecte.

L'objectiu general de l'assignatura és que l'estudiant adquireixi els coneixements bàsics per al desenvolupament d'aplicacions distribuïdes basades en microserveis. Aquest objectiu es concreta en els següents objectius específics

  • Explicar els fonaments de l'arquitectura de programari i les característiques d'una arquitectura.
  • Exposar arguments sobre els punts forts i els punts febles dels diferents estils arquitectònics i com aquests influeixen en la decisió de l’estil o estils arquitectònics més adients per una determinada aplicació.
  • Situar els nous paradigmes emergents de l'enginyeria del programari dins el marc de les arquitectures del programari.
  • Exposar arguments que mostrin els beneficis i també els riscos i costos d'una arquitectura de microserveis per resoldre un problema concret.
  • Proposar el disseny d'una arquitectura de microserveis i la seva descomposició a partir d'un cas d'estudi.
  • Implementar microserveis centrats en la lògica de negoci i l'accés a dades.
  • Desplegar microserveis amb estat propi, intercomunicació síncrona i consistència de les dades.
  • Aplicar conceptes bàsics de l'arquitectura de microserveis.
  • Dominar les tecnologies bàsiques necessàries per la implementació de microserveis.
  • Reconèixer els factors de testing  i qualitat d'una especificació/disseny.
  • Avaluar formalment el testing i la qualitat d'una implementació.
  • Identificar els models més importants i estàndards de qualitat de programari.
  • Reconèixer els factors de lliurament, desplegament i integració continua.
  • Interpretar la cultura àgil en el desenvolupament de programari.
  • Implementar un pipeline de lliurament, desplegament i integració continua.
  • Exposar arguments sobre les avantatges i costos dels contenidors i plataformes d'orquestració.
  • Preparar un bon informe final de lliurament a un possible client.

Amunt

L'assignatura s'estructura en 5 activitats principals, cadascuna amb els seus continguts específics:

 

Activitat 1: "Arquitectures de programari distribuït: una solució per cada problema"

  • Llibre "Fundamentals of Software Architecture" (Richards & Ford): Chapter 1. Introduction.         
  • Llibre "Fundamentals of Software Architecture" (Richards & Ford): Part I Foundations (Chapters 2, 4, 5, 8)       
  • Llibre "Fundamentals of Software Architecture" (Richards & Ford): Part II Architecture Styles (Chapters 9 - 14, 16 - 18).                                                                                               

Activitat 2: "Arquitectures hexagonals i disseny de microserveis: una relació ben avinguda"

  • Llibre "Microservices patterns" (Richardson): Chapter 1. Section 6: "The Microservice architecture pattern language".          
  • Llibre "Microservices patterns" (Richardson): Chapter 2: "Decomposition strategies".                      
  • Llibre "Microservices patterns" (Richardson): Chapter 3: "Interprocess communication in a microservice architecture"         
  • Llibre "Microservices patterns" (Richardson): Chapter 5: "Designing business logic in a microservice architecture".

Activitat 3: "De la creació a la interconnexió de microserveis"

  • Llibre "Microservices Patterns" (Chris Richardson): Chapter 6: "Developing business logic with event sourcing". Introduction.                                                
  • Llibre "Microservices Patterns" (Chris Richardson): Chapter 6: "Developing business logic with event sourcing".     
  • Llibre "Microservices patterns" (Richardson): Chapter 7: "Implementing queries in a microservice architecture"     
  • Llibre "Microservices patterns" (Richardson): Chapter 8: "External API patterns".                                                 


Activitat 4: "Qualitat del programari distribuït: inherent, transversal i crític"

  • Llibre "Microservices Patterns" (Chris Richardson): Chapter 9. "Testing microservices: Part 1". Introduction.
  • Llibre "Microservices Patterns" (Chris Richardson): Chapter 9. "Testing microservices: Part 1".     
  • Llibre "Microservices Patterns" (Chris Richardson): Chapter 10. "Testing microservices: Part 2".  
  • Llibre "Fundamentals of Software Architecture" (Richards & Ford): Part I Foundations (Chapters 3 & 6).                 

Activitat 5: "DevOps, CD/CI i cultura àgil: bones pràctiques pel desenvolupament de programari distribuït"

  • Llibre Microservices Patterns (Chris Richardson) Chapter 12 Deploying microservices. Introduction.            
  • Llibre Microservices Patterns (Chris Richardson) Chapter 12 Deploying microservices                                         
  • Llibre "Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation (Jez Humble & Dave Farley) Part I: Chapters 1-10.                                       
  • Llibre "The DevOps Handbook" (Patrick Debois, John Willis, Jez Humble & Gene Kim): Chapters 1 - 4.

Amunt

El suport principal del material docent són els llibres esmentats més amunt, que es distribuiran en format digital segons els canals habituals de la UOC (Biblioteca) accessibles des de l'aula. Tots els llibres de l'assignatura són originals d'autors de referència mundial de l'àrea de desenvolupament de programari distribuït i per això estan escrits enterament en anglès. Es pressuposa competències de comprensió lectora en anglès al alumnat que arriba a aquesta etapa del grau, encara que donat el format digital d'aquests materials (lectura amb un navegador web), permet una fàcil lectura en altres idiomes mitjançant l'ús de les funcionalitats de traducció automàtica dels navegadors actuals. No obstant això, en cap cas l'equip docent es farà responsable de les fallades i problemes dels sistemes de traducció automàtica, i es recomana la lectura dels materials en l'idioma original, i especialment identificar i comprendre els conceptes i paraules clau en l'idioma original per evitar confusions amb la seva traducció a altres idiomes.

 

D'altra banda, l'assignatura disposa d'una aula de Laboratori amb material i eines de programari, i un consultor propi amb experiència en la part tècnica de l'assignatura, on l'alumne obtindrà tot el suport necessari per dur a terme les pràctiques. En particular, el Laboratori disposa de programari i manuals d'instal·lació, cursos de formació i casos d'estudi resolts sobre instal·lació i implementació, preguntes freqüents amb respostes i referències a fonts externes d'informació. A més, disposa de fòrums on enviar dubtes, consultes i problemes que el consultor respon el més ràpid possible, i que tots els alumnes poden compartir i participar.

Amunt

El procés d'avaluació es fonamenta en el treball personal de l'estudiant i pressuposa l'autenticitat de l'autoria i l'originalitat dels exercicis realitzats.

La manca d'autenticitat en l'autoria o d'originalitat de les proves d'avaluació; la còpia o el plagi; l'intent fraudulent d'obtenir un resultat acadèmic millor; la col·laboració, l'encobriment o l'afavoriment de la còpia, o la utilització de material o dispositius no autoritzats durant l'avaluació, entre d'altres, són conductes irregulars que poden tenir conseqüències acadèmiques i disciplinàries greus.

D'una banda, si es detecta alguna d'aquestes conductes irregulars, pot comportar el suspens (D/0) en les activitats avaluables que es defineixin en el pla docent –incloses les proves finals– o en la qualificació final de l'assignatura, sigui perquè s'han utilitzat materials o dispositius no autoritzats durant les proves, com ara xarxes socials o cercadors d'informació a internet, perquè s'han copiat fragments de text d'una font externa (internet, apunts, llibres, articles, treballs o proves d'altres estudiants, etc.) sense la citació corresponent, o perquè s'ha practicat qualsevol altra conducta irregular.

De l'altra, i d'acord amb les normatives acadèmiques, les conductes irregulars en l'avaluació, a més de comportar el suspens de l'assignatura, poden donar lloc a la incoació d'un procediment disciplinari i a l'aplicació, si escau, de la sanció que correspongui.

Amunt

Aquesta assignatura només es pot superar a partir de l'avaluació contínua (AC), nota que es combina amb una nota de pràctiques (Pr) per a obtenir la nota final de l'assignatura.La fórmula d'acreditació de l'assignatura és la següent: AC + Pr. Les qualificacions finals de l'assignatura es calcularan de la manera següent:
- Si l'AC i la Pr superen el mínim, la qualificació final serà el resultat de la fórmula de càlcul.
- Si no se supera el mínim de l'AC, la qualificació final serà la de l'AC.
- Si no es presenta l'AC, la qualificació final serà No presentat.
- Si l'AC supera el mínim i la Pr no, la qualificació final serà la nota de la Pr.
- Si l'AC supera el mínim i la Pr no es presenta, la qualificació final serà Suspès (2,5).

 
 

Amunt