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'alumne per dissenyar i implementar sistemes software mitjançant l'aplicació d'un conjunt de tècniques, principis i patrons de disseny.

Professors

Responsable

  • Cristina Gómez Seoane ( )

Altres

  • Carme Quer Bosor ( )
  • Claudia Patricia Ayala Martinez ( )

Hores setmanals

Teoria
2
Problemes
1.4
Laboratori
0.6
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 - 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.
    Related competences: 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.
    Related competences: 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.
    Related competences: 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.
    Related competences: G9.3, CT2.1, CES1.1, CES1.4, CES2.2, CT2.3,
  5. Representar el disseny dels sistemes software utilitzant el llenguatge UML.
    Related competences: CT2.1,
  6. Aplicar correctament els principis de disseny en fer el disseny de sistemes software.
    Related competences: 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.
    Related competences: 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.
    Related competences: G9.3, CT2.1, CES1.1, CES2.2, CT2.3,
  9. Explicar les característiques de les diferents estratègies de persistència.
    Related competences: 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.
    Related competences: 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.
    Related competences: 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.
    Related competences: 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.
    Related competences: 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.
  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


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

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

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
1h
Laboratori
0h
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
6h
Laboratori
0h
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
14h
Laboratori
0h
Aprenentatge dirigit
3h
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
3h
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

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 els professors presenten els continguts essencials de l'assignatura. Els professors usen transparències que els estudiants tenen 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. A l'inici de la classe els estudiants contesten un qüestionari sobre els continguts de l'assignatura presentats i practicats la setmana anterior i/o sobre els problemes proposats 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 de la classe els estudiants resolen un qüestionari sobre els continguts presentats, practicats o adquirits autònomament prèviament a la classe.

Els estudiants han 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,3*C1 + 0,3*C2 + 0,3*C3 + 0,1*NQ

C1 és la nota del primer control
C2 és la nota del segon control
C3 és la nota del tercer control
NQ és la nota dels qüestionaris realitzats a l'inici de les classes de problemes i laboratori.

Càlcul de NQ:
- Durant el curs els estudiants podran realitzar 6 qüestionaris.
- Si l'estudiant entrega 5 o menys qüestionaris, NQ serà igual al sumatori de les notes de tots els qüestionaris entregats dividit per 5.
- Si l'estudiant entrega els 6 qüestionaris, NQ serà igual al sumatori de les 5 millors notes dels qüestionaris entregats dividit per 5.

Els estudiants NOMÉS SE'LS PODRÀ AVALUAR SI ASSISTEIXEN a les classes del GRUP ON ESTAN MATRICULATS.

La competència transversal s'avalua mitjançant una pregunta en dos controls (C1 i C3), 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.