Informació general


Tipus d'assignatura: Obligatòria

Coordinador: Alfons Palacios Gonzàlez

Trimestre: 3

Crèdits: 4

Professorat: 

Rosa Herrero Antón

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
  • EFB4_Coneixements bàsics sobre l'ús i programació dels ordinadors, sistemes operatius, bases de dades i programes informàtics amb aplicació a l'enginyeria

  • 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

  • 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

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ó


L'assignatura d'Enginyeria del Software II del tercer trimestre de segon curs, és la segona de les tres assignatures anomenades Enginyeria del Software. La seva impartició està pensada en dedicar 3 ECTS a la part de teoria i 1 ECTS a practicar els conceptes exposats a teoria.

Aquesta assignatura serà la que introduirà el concepte de Patrons de Disseny de Software estudiant-ne els més utilitzats i practicant-ne el seu ús en diferents circumstancies.

Un altre dels temes abordats en aquesta assignatura serà el Testing, fent-ne una introducció general, i explicant alguna tècnica concreta aprofundint el necessari fins poder-la utilitzar.

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


A nivell general, aquesta assignatura contribueix als següents resultats d'aprenentatge especificats per a la matèria a la qual pertany (Enginyeria del Software):

(1) 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ó- i avaluació de productes) de manera que es demostri la comprensió dels compromisos adoptats en les decisions de disseny

(3) Fer servir les eines d'un entorn de desenvolupament de programari per a crear i desenvolupar aplicacions.

(5) Demostrar coneixement i saber aplicar les tècniques apropiades per a modelar i analitzar els diferents tipus de decisions.

(10) Controlar la qualitat i dissenyar proves en la producció de programari.

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

RA1. Modelar aplicacions software

RA2. Aplicar els principis d'anàlisi i disseny orientat a objectes

RA3. Aplicar i analitzar l'ús de patrons de disseny de software

RA4. Conèixer estratègies i aplicar tècniques de proves del software

RA5. Conèixer les fases d'un projecte software

RA7. Controlar versions i configuracions del projecte

Metodologia de trabajo


Tots els conceptes teòrics de la matèria es tractaran en les classes de teoria (grups grans) de l'assignatura. En aquestes classes s'introdueixen els conceptes bàsics del procés per desenvolupar software i del disseny del software utilitzant patrons, mostrant la seva aplicació amb exercicis resolts pel docent. Es recomana que abans de cada sessió els estudiants es llegeixin el material publicat a la plataforma virtual. A les classes es demanarà la participació dels estudiants de manera individual o en grup, per resoldre diferents problemes proposats amb o sense anticipació. Aquestes activitats, que per la seva naturalesa d'optativitat i brevetat no apareixen reflectides en aquest document, serviran a l'estudiant com a instrument d'autoavaluació de l'assoliment dels continguts de la matèria i podran ser utilitzades per part del docent per a prendre decisions sobre la qualificació final de l'estudiant, però mai en detriment de la qualificació numèrica calculada segons el sistema de qualificació especificat per l'assignatura.

Els estudiants haurien d'assistir a totes les classes amb un ordinador portàtil amb la capacitat d'executar el software escaient per a l'assignatura. Els docents impartidors informaran de quin és aquest software i com es pot obtenir.

Els conceptes de caire més pràctic seran treballats en grups petits (de laboratori) on es presenten treballs de complexitat mitjana, que requereixen l'aplicació dels coneixements adquirits en les classes més teòriques. En aquestes sessions es donaran les eines escaients per a resoldre les activitats programades però s'espera que aquestes s'allarguin des del punt de vista temporal, més enllà de les hores de laboratori i que, en conseqüència, els estudiants les hagin de finalitzar durant el temps d'aprenentatge autònom.

Normes de realització de les activitats

Per a cada activitat, els docents informaran de les normes i condicions particulars que les regeixin. Les activitats unipersonals pressuposen el compromís de l'estudiant de realitzar-les de manera individual. Es consideraran suspeses totes aquelles activitats en què l'estudiant no s'ajusti a aquest compromís, independentment del seu paper (origen o destí). Igualment, les activitats que s'hagin de realitzar en grups pressuposen el compromís per part dels estudiants que l'integren de realitzar-les en el si del grup. Es consideraran suspeses totes aquelles activitat en què el grup no hagi respectat aquest compromís amb independència del seu paper (origen o destí).

Continguts


1. Procés de desenvolupament del software             

1.1. El Procés Unificat.

1.2. Disseny del Software.

1.3. Cas d'Estudi.

2. Proves del software

2.1. Introducció a les proves del software.

2.2. Estratègies de prova.

2.3. Tècniques de prova.

3. Patrons de disseny de software

3.1. Requeriments i mètodes.

3.2. Concepte de Patró.

3.3. Patrons GoF (adaptador, factoria, singelton, estratègia, composite, façana i proxy).

4. Modelat del software

4.1. Relacions entre Casos d'Ús.

4.2. Organització del Model del Domini.

4.3. Contracte de les operacions.

4.4. Diagrames d'estat. Patró estats.

4.5. Organització dels Paquets.

Amb aquest proposta assolirem els següents continguts de la memòria:

  • Modelat d’aplicacions.
  • Anàlisis i disseny orientat a objectes
  • Patrons de disseny
  • Patrons d’arquitectura del software

Activitats d'aprenentatge


Es posa a disposició dels estudiants tot un seguit d'activitats de caire eminentment pràctic (exercicis curts, problemes...) que són la base de les activitats d'aprenentatge de l'assignatura. Aquestes activitats s'hauran de resoldre seguint les indicacions dels docents i seran treballades a classe de teoria, o bé com a exemples a la mateixa sessió, o bé com a exercicis de caràcter optatiu que es resoldran a la següent sessió. Tot i que aquestes activitats són de caràcter optatiu, i sense cap lliurament, la seva realització són imprescindibles per assolir els coneixements teòrics-pràctics de l'assignatura.

Amb l'objectiu de recollir evidència de l'assoliment dels resultats d'aprenentatge esperats es realitzaran les següents activitats de caràcter avaluatiu: 

Un examen individual escrit a ordinador (utilitzant, quan s'escaigui, una eina IDE) dels conceptes teòrics-pràctics dels continguts de l'assignatura amb dues parts autònomes.

  • Examen - Part 1

Constarà de preguntes dels continguts dels blocs 1, 2 i part del 3 fins el Patró Estratègia. Aquesta prova demana als estudiants el desenvolupament correcte de software a partir d'un projecte inicial.

L'objectiu d'aquesta activitat és avaluar si l'estudiant ha assolit els coneixements de: 5 (saber aplicar tècniques per a modelar), 10 (controlar qualitat), RA2, RA3 i RA4, que cobreixen les següents competències comunes i específiques: CIN1(desenvolupar programari fiable), CIN5(mantenir programari), CIN8(construir i mantenir aplicacions), CIN13(eines emmagatzematge), CIN16(cicle vida enginyeria software), EFB4(ús de programes informàtics), EIS1(satisfer requisits) i EIS4(capacitat d'analitzar).

  • Examen - Part 2

Constarà de preguntes de la resta del contingut del bloc 3 i el 4. Aquesta prova demana als estudiants el desenvolupament correcte de software a partir d'un projecte base.

L'objectiu d'aquesta activitat és avaluar si l'estudiant ha assolit els coneixements de 5 (saber aplicar tècniques per a modelar), RA2 i RA3. A nivell de competències comunes i específiques seran rellevants totes les esmentades per a la primera part.

Qüestionaris d'exercicis curts, s'hauran de resoldre en temps no presencial i de forma individual a través de l'aula virtual, es tracta d'exercicis curts per aprendre a utilitzar comandes JUnit, programació reflexiva, Logger, entre altres, i a més entendre diagrames de flux i diagrames UML, cobreixen les competències CB2, CB5, CIN1, CIN13, EFB4, EIS1 i EIS4.

Quatre pràctiques, que majoritàriament s'hauran de desenvolupar en temps no presencial i en grup, cobreixen les competències CB2, CB4, CB5, CIN1, CIN2, CIN3, CIN4, CIN13, EFB4, EIS1, EIS4, CT1 i CT2 i evidencien l'assoliment de 1 (utilitzar eines professionals) i 2 (fer servir eines per desenvolupar). Les pràctiques es lliuraran i realitzaran de forma col·laborativa utilitzant un repositori Git.

  • Pràctica 1 - Testing

Es tracta de desenvolupar un petit software per aprendre a utilitzar el “framework” Junit i conèixer la metodologia TDD "Test Driven Development" o bé utilitzar una tècnica concreta de les vistes en el bloc 2 de teoria. En finalitzar l'activitat els estudiants han de ser capaços de RA4 i RA5

  • Pràctica 2 - Patró Adaptador + Patró Factoria

Es tracta de redissenyar un petit software aplicant un o varis dels primers patrons del contingut 3. En finalitzar l'activitat els estudiants han de ser capaços de RA1, RA2, RA3 i R7.

  • Pràctica 3 - Patró Estratègia + Patró Composite + Patró Factoria Abstracte

Es tracta de redissenyar un petit software aplicant un o varis del la resta de patrons del contingut 3. En finalitzar l'activitat els estudiants han de ser capaços RA1, RA2, RA3 i R7.

  • Pràctica 4 - Diagrama d'Estats + Patró Estats

Es tracta de redissenyar un petit software aplicant els continguts del bloc 4. En finalitzar l'activitat els estudiants han de ser capaços de RA1, RA2, RA3 i R7

Per tal de superar (aprovar) les activitats avaluatives, els estudiants hauran de demostrar

  • Que han adquirit els coneixements teòrics relatius als continguts de l'assignatura i que la seva comprensió els permet de portar-los a la pràctica [MECES-2 punt a, punt c]
  • Que poden desenvolupar solucions a problemes que, si bé són semblants a d'altres vistos anteriorment, presenten aspectes que són nous [MECES-2 punt f]

En relació a les competències bàsiques assignades a l'assignatura, aquestes queden cobertes especialment pel que fa als aspectes que s'expliciten:

  • CB2: resolució de problemes dins de la seva àrea d'estudi.
  • CB4: transmetre informació en públic.
  • CB5: desenvolupament d'habilitats d'aprenentatge necessàries per a estudis posteriors (accés autònom a documentació, hàbits de treball efectius)

Finalment, i pel que fa a la competència transversal associada a l'assignatura:

  • CT1: (coneixement tercera llengua) aquesta es treballa a partir de les fonts documentals que els estudiants han de consultar, atès que totes elles es troben en anglès.
  • CT2: (capacitat de treballar en grup) que poden assolir al fer les pràctiques.

Sistema d'avaluació


La qualificació final de l'assignatura es calcularà segons les fórmules que s'especifiquen a continuació:

E1: qualificació de la primera part de l'examen (cal obtenir un mínim d'un 4 per aprovar l'assignatura) 25%

E2: qualificació de la segona part de l'examen (cal obtenir un mínim d'un 4 per aprovar l'assignatura) 25%

Q: qualificació mitjana dels qüestionaris d'exercicis curts 10%

P: qualificació mitjana de les pràctiques proposades durant el trimestre 40%

Si les qualificacions obtingudes a E1 i E2 són superior o igual a 4 (E1 >= 4 i E2 >= 4), la nota final de l'alumne serà:

Nota final = E1 · 0.25 + E2 · 0.25 + Q· 0.1 + P · 0.4

En altre cas (si E1< 4 o E2 < 4), la nota final de l'alumne serà:

Nota final = Q · 0.1 + P · 0.4

Consideracions:

  • Cal obtenir una nota superior a 4 en cadascuna de les dues parts de l’examen, E1 i E2. Els alumnes que no es presentin a l'examen final, suspendran l'assignatura sense opció a recuperació. 
  • Una activitat no entregada o lliurada amb retard i sense justificació (citació judicial o assumpte mèdic) compta com un 0.
  • És potestatiu dels docents acceptar o no lliuraments fora dels terminis que s'indiquin. En el cas que aquests lliuraments fora de termini s'acceptin, és potestatiu del docent decidir si aplica alguna penalització i la quantia d'aquesta.
  • En les activitats realitzades en grup el docent pot, en base a la informació de què disposi, personalitzar la qualificació per a cada integrant del grup.
  • És responsabilitat de l’alumne evitar el plagi en totes les seves formes. En el cas de detectar un plagi, independentment del seu abast, en alguna activitat correspondrà a tenir una nota final de 0. A més, el professor comunicarà a la Cap d’estudis la situació per a que es prenguin mesures aplicables en matèria de règim sancionador.

Recuperació:

  • Les pràctiques de l'assignatura (qualificació P) NO és recuperable.
  • Els qüestionaris d'exercicis curts (qualificació Q) NO és recuperable.
  • Els estudiants no presentats i els que obtinguin una nota final >= 5 no podran fer la recuperació.
  • La nota de l’examen de recuperació substitueix a la nota de les activitats E1 i/o E2. La nota final es calcularà amb les fórmules anteriorment detallades.
  • Cada estudiant podrà recuperar qualsevol de les dues parts (E1 o E2) de la teoria. La qualificació E1 i E2 serà substituïda per la que hagi tret a la recuperació. 

Bibliografia


Bàsic

Debrauwer, L. (2018) Patrones de diseño en Java. Los 23 modelos de diseño: descripciones y soluciones ilustradas en UML2 y Java. (2º edició). Ediciones ENI. ISBN 9782409016349

Larman, C. (2003) UML y patrones: una introducción al análisis y diseño orientado a objetos y al proceso unificado. (2a Edició) Prentice Hall, cop. ISBN 978 8420534382

Complementary

Gamma, E., et al. (2003) Patrones de diseño: elementos de software orientado a objetos reutilizable. Addison-Wesley, cop. ISBN 9788478290598.

Bolaños, D. et al. (2008) Pruebas de software y JUnit: un análisis en profundidad y ejemplos prácticos. Prentice-Hall España. ISBN 9788483223543.

García - De Marina, P.C., et al. (2019) Especificando Software mediante Casos de uso y Uml. Editorial Universitarua Ramón Areces. ISBN 9788499613420.

Gulati, S., et.al. (2017) Java Unit Testing with JUnit 5: Test Driven Development with JUnit 5. Editorial APress. ISBN 1484230140.