Arquitectura del Software

Esteu aquí

Crèdits
6
Tipus
Obligatòria d'especialitat (Enginyeria del Software)
Requisits
  • Prerequisit: IES
Departament
ESSI
L'objectiu de l'assignatura és capacitar a l'estudiantat per dissenyar i implementar sistemes software mitjançant l'aplicació d'un conjunt de tècniques, principis i patrons de disseny.

Professorat

Responsable

  • Cristina Gómez Seoane ( )

Altres

  • Pau Duran Manzano ( )

Hores setmanals

Teoria
2
Problemes
0
Laboratori
2
Aprenentatge dirigit
0.4
Aprenentatge autònom
5.6

Competències

Competències Tècniques

Competències tècniques comunes

  • CT2 - Utilitzar d'una manera apropiada teories, procediments i eines en el desenvolupament professional de l'enginyeria informàtica en tots els seus àmbits (especificació, disseny, implementació, desplegament -implantació- i avaluació de productes) de manera que es demostri la comprensió dels compromisos adoptats a les decisions de disseny.
    • CT2.1 - Demostrar coneixement i capacitat d'aplicació dels principis, metodologies i cicles de vida d'enginyeria del software.
    • CT2.3 - Dissenyar, desenvolupar, seleccionar i avaluar aplicacions, sistemes i serveis informàtics i, al mateix temps, assegurar-ne la fiabilitat, la seguretat i la qualitat en funció de principis ètics i de la legislació i la normativa vigents.

Competències Tècniques de cada especialitat

Especialitat enginyeria del software

  • CES1 - Desenvolupar, mantenir i avaluar serveis i sistemes software que satisfacin tots els requisits de l'usuari, que es comportin de forma fiable i eficient, que tinguin un desenvolupament i un manteniment assequible i que compleixin normes de qualitat aplicant les teories, els principis, els mètodes i les pràctiques d'Enginyeria del Software.
    • CES1.1 - Desenvolupar, mantenir i avaluar sistemes i serveis software complexos i/o crítics.
    • CES1.4 - Desenvolupar, mantenir i avaluar serveis i aplicacions distribuïdes amb suport de xarxa.
  • CES2 - 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, dintre de les limitacions derivades del cost, del temps, de l'existència de sistemes ja desenvolupats i de les organitzacions.
    • CES2.2 - Dissenyar solucions apropiades en un o més dominis d'aplicació, utilitzant mètodes d'enginyeria del software que integrin aspectes ètics, socials, legals i econòmics.

Competències Transversals

Raonament

  • G9 [Avaluable] - Capacitat de raonament crític, lògic i matemàtic. Capacitat de resoldre problemes en la seva àrea d'estudi. Capacitat d'abstracció: capacitat de crear i utilitzar models que reflecteixin situacions reals. Capacitat de dissenyar i realitzar experiments senzills, i analitzar-ne i interpretar-ne els resultats. Capacitat d'anàlisi, de síntesi i d'avaluació.
    • G9.3 - Capacitat crítica, capacitat d'avaluació.

Objectius

  1. Explicar què és l'arquitectura lògica i física d'un sistema software i les relacions entre elles.
    Competències relacionades: CT2.1,
  2. Explicar les característiques d'una arquitectura en capes i els principis de disseny que regeixen la construcció de sistemes software amb aquest tipus d'arquitectura.
    Competències relacionades: CT2.1,
  3. Explicar les característiques d'una arquitectura orientada a objectes i els principis de disseny que regeixen la construcció de sistemes software amb aquest tipus d'arquitectura.
    Competències relacionades: CT2.1,
  4. Dissenyar sistemes software utilitzant una arquitectura en capes i orientada a objectes i usant serveis software, partint de l'especificació dels seus requisits (funcionals i no funcionals), utilitzant metodologies clàssiques i àgils.
    Competències relacionades: G9.3, CT2.1, CES1.1, CES1.4, CES2.2, CT2.3,
  5. Representar el disseny dels sistemes software utilitzant el llenguatge UML.
    Competències relacionades: CT2.1,
  6. Aplicar correctament els principis de disseny en fer el disseny de sistemes software.
    Competències relacionades: G9.3, CT2.1, CES1.1, CES2.2, CT2.3,
  7. Dissenyar la capa de domini (negoci) d'un sistema software utilitzant metodologies clàssiques i àgils.
    Competències relacionades: G9.3, CT2.1, CES1.1, CES1.4, CES2.2, CT2.3,
  8. Dissenyar la capa de presentació d'un sistema software identificant els patrons a aplicar i aplicant-los correctament.
    Competències relacionades: G9.3, CT2.1, CES1.1, CES2.2, CT2.3,
  9. Explicar les característiques de les diferents estratègies de persistència.
    Competències relacionades: CT2.1,
  10. Dissenyar la capa de gestió de dades d'un sistema software aplicant els patrons d'accés o de traducció de dades.
    Competències relacionades: G9.3, CT2.1, CES1.1, CES2.2, CT2.3,
  11. Identificar i usar correctament serveis software existents en fer el disseny de sistemes software.
    Competències relacionades: G9.3, CT2.1, CES1.1, CES1.4, CES2.2, CT2.3,
  12. Avaluar i criticar els dissenys dels sistemes software i proposar dissenys alternatius que millorin la seva qualitat.
    Competències relacionades: G9.3, CT2.1, CES1.1, CES1.4, CES2.2, CT2.3,
  13. Explicar què és l'arquitectura i el disseny del software i en què consisteixen les diferents vistes de l'arquitectura del software.
    Competències relacionades: CT2.1,

Continguts

  1. Introducció a l'arquitectura i al disseny del software
    Metodologies de desenvolupament de software. Arquitectura i disseny de software. Arquitectura lògica i física d'un sistema software. Rol dels patrons de disseny en el disseny del software. Arquitectura i disseny del software en metodologies clàssiques i àgils.
  2. Arquitectura en capes i orientada a objectes
    Patró arquitectònic en capes. Aplicació del patró arquitectònic en capes als sistemes i serveis software. Principis de disseny de l'arquitectura en capes. Patró arquitectònic orientació a objectes. Aplicació del patró arquitectònic orientació a objectes al disseny dels sistemes software. Principis de disseny de l'arquitectura orientada a objectes.
  3. Disseny del software utilitzant metodologies clàssiques
    Disseny del software utilitzant metodologies clàssiques. Disseny de la capa de domini. Patrons Domain Model i Transaction Script. Patrons de disseny de la capa de domini. Ús de serveis software. Disseny de la capa de presentació. Disseny extern d'un sistema software. Disseny intern de la capa de presentació. Disseny de la capa de dades. Tecnologia de bases de dades relacionals. Estratègies de gestió de la persistència. Generació automàtica de la persistència. Disseny directe de la persistència. Altres arquitectures. Arquitectura de microserveis.
  4. Disseny del software utilitzant metodologies àgils
    Disseny del software utilitzant metodologies àgils. Extreme Programming. Test Driven Development (TDD). Tests en TDD.
    Coding en TDD. Pair Programming. Disseny simple i arquitectura i disseny incremental. Code Smells i Refactorings.

Activitats

Activitat Acte avaluatiu


C1

Control 1 de teoria i problemes on s'avaluen tots els objectius dels temes 1 fins a part del tema 3
Objectius: 13 1 2 3 4 5 6 7
Setmana: 6
Tipus: examen de teoria
Teoria
2h
Problemes
0h
Laboratori
0h
Aprenentatge dirigit
0h
Aprenentatge autònom
10h

C2

Control 2 de teoria i problemes on s'avaluen part dels objectius del tema 3.
Objectius: 4 6 8 9 10 11
Setmana: 11
Tipus: examen de teoria
Teoria
2h
Problemes
0h
Laboratori
0h
Aprenentatge dirigit
0h
Aprenentatge autònom
10h

Introducció a l'arquitectura i al disseny del software

Escolta amb atenció, pren els apunts que considera necessaris i pregunta els dubtes que tingui. A més, estudia autònomament els continguts que el professor indica
Objectius: 13 1
Continguts:
Teoria
2h
Problemes
0h
Laboratori
0h
Aprenentatge dirigit
0h
Aprenentatge autònom
1h

Estudi de l'arquitectura en capes

Escolta amb atenció, pren els apunts que considera necessaris i pregunta els dubtes que tingui. A més, estudia autònomament els continguts que el professor indica
Objectius: 2
Continguts:
Teoria
0h
Problemes
0h
Laboratori
1h
Aprenentatge dirigit
0h
Aprenentatge autònom
2h

Estudi de l'arquitectura orientada a objectes

Escolta amb atenció, pren els apunts que considera necessaris i pregunta els dubtes que tingui. A més, estudia autònomament els continguts i fa els exercicis que el professor indica
Objectius: 3 5 12
Continguts:
Teoria
0h
Problemes
0h
Laboratori
6h
Aprenentatge dirigit
0h
Aprenentatge autònom
8h

Estudi del disseny del software utilitzant metodologies clàssiques

Escolta amb atenció, pren els apunts que considera necessaris i pregunta els dubtes que tingui. A més, estudia autònomament els continguts i fa els exercicis que el professor indica
Objectius: 4 5 6 7 8 9 10 11
Continguts:
Teoria
14h
Problemes
0h
Laboratori
14h
Aprenentatge dirigit
0h
Aprenentatge autònom
28h

Estudi del disseny del software utilitzant metodologies àgils

Escolta amb atenció, pren els apunts que considera necessaris i pregunta els dubtes que tingui. A més, estudia autònomament els continguts i fa els exercicis que el professor indica
Objectius: 4 6 7 12
Continguts:
Teoria
10h
Problemes
0h
Laboratori
7h
Aprenentatge dirigit
0h
Aprenentatge autònom
15h

C3

Control 3 de laboratori on s'avaluen tots els objectius del tema 4
Objectius: 6 7 12
Setmana: 15
Tipus: examen de laboratori
Teoria
0h
Problemes
0h
Laboratori
2h
Aprenentatge dirigit
0h
Aprenentatge autònom
10h

Revisió de C1 (Control 1) amb feedback formatiu (lliurament solució amb comentaris grupals)

Revisió de C1 (Control 1) amb feedback formatiu (lliurament solució) en grups de 10 estudiants (via meet o amb aula assignada, depenent de la disponibilitat d'aules).
Objectius: 1 2 3 4 5 6 7
Continguts:
Teoria
0h
Problemes
0h
Laboratori
0h
Aprenentatge dirigit
2h
Aprenentatge autònom
0h

Revisió de C2 (Control 2) amb feedback formatiu (lliurament solució amb comentaris grupals)

Revisió de C1 (Control 1) amb feedback formatiu (lliurament solució) en grups de 10 estudiants (via meet o amb aula assignada, depenent de la disponibilitat d'aules).
Objectius: 4 6 8 9 10 11
Continguts:
Teoria
0h
Problemes
0h
Laboratori
0h
Aprenentatge dirigit
2h
Aprenentatge autònom
0h

Revisió de C3 (Control 3) amb feedback formatiu (lliurament solució amb comentaris grupals)

Revisió de C3 (Control 3) amb feedback formatiu (lliurament solució) en grups de 10 estudiants (via meet o amb aula assignada, depenent de la disponibilitat d'aules).
Objectius: 6 7 12
Continguts:
Teoria
0h
Problemes
0h
Laboratori
0h
Aprenentatge dirigit
2h
Aprenentatge autònom
0h

Metodologia docent

La docència de l'assignatura està estructurada en classes de teoria, classes de problemes i classes de laboratori.

Classes de teoria. En les classes de teoria el professorat presenta alguns continguts essencials de l'assignatura. El professorat usa transparències que l'estudiantat té disponibles abans de les classes. Altres continguts de l'assignatura s'han d'estudiar de forma autònoma.

Classes problemes. En les classes de problemes es practiquen els continguts de l'assignatura presentats o adquirits autònomament prèviament a la classe. Durant la classe es resolen els problemes proposats prèviament a la classe, i es comenten possibles solucions alternatives. En alguns casos, l'alumnat entrega els problemes resolts. També en algunes sessions, a l'inici de la classe l'estudiantat contesta un qüestionari sobre els continguts de l'assignatura presentats i practicats i/o sobre els problemes resolts prèviament a la classe.

Classes laboratori. En les classes de laboratori els estudiants treballen en equips de 2 estudiants (pair programming). Durant la classe els estudiants es fan exercicis de laboratori proposats pel professor. A l'inici d'algunes classes l'estudiantat resol un qüestionari sobre els continguts presentats, practicats o adquirits autònomament prèviament a la classe.

L'estudiantat ha d'assistir a les classes del GRUP ON ESTAN MATRICULATS.

Mètode d'avaluació

La Nota Final (NF) de les competències tècniques de l'assignatura s'obté amb la fórmula següent:

NF= 0,2*C1 + 0,25*C2 + 0,4*C3 + 0,1*NT + NPP

C1 és la nota del primer control
C2 és la nota del segon control
C3 és la nota del tercer control
NT és la nota de les tasques/qüestionaris realitzats a les classes de problemes o laboratori. Durant el curs l'estudiantat podrà realitzar 5 tasques/qüestionari:
- Si s'entreguen 4 o menys tasques, NT serà igual al sumatori de les notes de totes les tasques entregats dividit per 4.
- Si s'entreguen les 5 tasques, NT serà igual al sumatori de les 4 millors notes de les tasques entregades dividit per 4.
NPP és la nota de problemes fets i entregats a classe i de la participació a classe. Aquesta nota tindrà com a màxim un valor de 0,5. Per obtenir aquesta nota es consideraran els següents aspectes:
- L'entrega d'un 75% o més dels problemes proposats per entregar.
- La participació activa a classe.

NOTA: L'assignació dels continguts a cada control es publicarà a l'inici del quadrimestre i pot variar respecte al que està publicat en aquesta guia docent, en funció del calendari d'exàmens.

L'estudiantat NOMÉS PODRÀ SER AVALUAT SI ASSISTEIX a les classes del SUBGRUP ON ESTÀ MATRICULAT.

La competència transversal s'avalua amb una pregunta en els controls, on els alumnes han de demostrar la seva capacitat crítica i d'avaluació dels dissenys proposats. La Nota Final de la competència transversal s'obté fent la mitjana de les notes obtingudes en aquestes preguntes i té una qualificació de:
A si la nota està entre 8.5 i 10
B si la nota està entre 7 i 8.4
C si la nota està entre 5 i 6.9
D si la nota està entre 0 i 4.9

Bibliografia

Bàsica:

Complementaria:

Web links

Capacitats prèvies

Saber què és una especificació (formal) en UML/OCL dels requisits funcionals i no funcionals d'un sistema.
Saber el context en què es pot fer el disseny d'un sistema i, en particular, quines són les activitats prèvies i següents.
Conèixer la programació orientada a objectes i (almenys) un llenguatge de programació orientat a objectes.