Informació general


Tipus d'assignatura: Obligatòria

Coordinador:

Trimestre: Tercer trimestre

Crèdits: 4

Professorat: 

David Ródenas Picó
Josep Roure Alcobé 

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
  • 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

  • EIS2_Capacitat per a 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, dins de les limitacions derivades del cost, del temps, de l'existència de sistemes ja desenvolupats i de les pròpies organitzacions

  • EIS3_Capacitat per donar solució a problemes d'integració en funció de les estratègies, estàndards i tecnologia disponibles

  • 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

  • EIS5_Capacitat d'identificar, avaluar i gestionar els riscos potencials associats que es puguin presentar

  • EIS6_Capacitat per a dissenyar solucions apropiades en un o més dominis d'aplicació, utilitzant mètodes de l'enginyeria del software que integren aspectes ètics, socials, legals i econòmics

  • ESI2_Capacitat per determinar els requisits dels sistemes d'informació i comunicació d'una organització, atenent a aspectes de seguretat i compliment de la normativa i legislació vigent

  • ESI3_Capacitat per participar activament en l'especificació, disseny, implementació i manteniment dels sistemes d'informació i comunicació

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 III del tercer trimestre de tercer curs, és la darrera de les tres assignatures anomenades Enginyeria del Software. La seva impartició està pensada a dedicar 3 ECTS a la part de teoria i 1 ECTS a practicar els conceptes exposats a teoria. 

En aquesta assignatura s’explicaran nous Patrons de Disseny de Software i temes relacionats amb l’Enginyeria de Requisits, posant l’èmfasi en la modelització amb Diagrames d’Activitat i especificacions formals amb OCL.

Un altre dels temes abordats en aquesta assignatura serà el Testing, fent-ne una extensió de les tècniques ja vistes a Enginyeria del Software I i II, introduint diferents estratègies  i la depuració. L’ús del Testing per a millorar la qualitat del codi i la seva mantenibilitat és clau. 

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 a la matèria a la qual pertany (Enginyeria del Software)  

  • 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.
  • Demostrar coneixement de la dimensió ètica a l'empresa: la responsabilitat social i corporativa en general i, en particular, les responsabilitats civils i professionals de l'enginyer en informàtica.
  • 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.
  • Controlar versions i configuracions de projecte.
  • Especificar, dissenyar, implementar, gestionar i mantenir sistemes i serveis de programari complexos i / o crítics.
  • Controlar la qualitat i dissenyar proves en la producció de programari.
  • Identificar tecnologies actuals i emergents i avaluar si són aplicables, i en quina mesura, per a satisfer les necessitats dels usuaris.
  • 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.

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

RA1: Reconèixer els diversos participants en l'adquisició de requeriments i definir estratègies Lean de captació de requeriments.
RA2: Reconèixer i saber llegir diagrames d'activitat i restriccions OCL.
RA3: Conèixer l'Agile Software Development i com es lliga amb el concepte de Refactor i Lean.
RA4: Saber fer proves de software i aplicar metodologies TDD, amb propietats FIRST i AAA.
RA5: Saber llegir un diagrama UML i saber identificar les direccions de l'acoblament amb les fletxes.
RA6: Entendre i aplicar els patrons SOLID, la llei de Demeter i Injecció de Dependències.
RA7: Entendre i aplicar el patró Command, el patró Observador, variacions, i el patró arquitectònic MVC.
RA8: Entendre els conceptes de dades derivades, materialitzades i computades i com es relacionen amb MVC.
RA9: Crear una aplicació MVC.

 

Metodologia de treball


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 proposats en el temari, 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ó abans indicat. 

Els conceptes de caràcter 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.

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.

Es posarà a disposició dels estudiants activitats de caràcter totalment opcional que l'ajudin a preparar i a preparar-se per a les de caràcter obligatori.

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 activitats en què el grup no hagi respectat aquest compromís amb independència del seu paper (origen o destí). En les activitats realitzades en grup el docent pot, d'acord amb la informació de què disposi, personalitzar la qualificació per a cada integrant del grup. Qualsevol activitat no lliurada es considerarà puntuada amb zero punts. É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. 

Continguts


1.      Enginyeria de Requisits            

1.1.  Introducció.

1.2.  Mètode de captura de requisits: Lean

1.3.  Agile, la cerca de la confiança.

1.4.  Modelització (introducció als Diagrames d’Activitat).

1.5.  Especificació (introducció al OCL).

2.      Proves del software

2.1.  Estratègies de prova i técniques.

2.2.  Test Driven Development

2.3.  Code Coverage

2.4.  Law of Demeter

2.5.  Dependency Injection

2.6.  Lower 's' singleton pattern

2.7.  Revisió de Codi

2.8.  Professionalism as emergence of Testing + Agile

3.      Patrons de disseny de software

3.1.  High Cohesion / Low Coupling

3.2. Plugin Architecture

3.3. UML drawings, relations, and dependency directions

3.4.  Patró S.O.L.I.D.

3.5.  Patró Command.

3.6.  Patró Observer. 

3.7.  Patró Event Target.

3.8.  Event Bus.

3.9.  Patró Model Vista Controlador.

3.10.  State.

3.11.  Patrons funcionals purs.

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 els estudiants/es les hauran de resoldre, sovint de manera no presencial, seguint les indicacions dels docents i també seran treballades a classe, ja sia com a exemples en les sessions de teoria, ja sia en les sessions de laboratori. Si bé aquestes activitats tindran caràcter optatiu (els docents no en verificaran de manera individualitzada la realització per part dels estudiants), seran imprescindibles per assolir els coneixements teorico-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: fins a cinc pràctiques i fins a dues proves escrites (exàmens).

Pràctica P1 (Evidència dels resultats d'aprenentatge RA1)

Es tracte de captar els requisits d'un software mitjançant metodologia lean.

Ponderació: 8% de la nota final.

Objectius específics: En finalitzar l'activitat els estudiants han de ser capaços de:

· Modelar els requisits del software.

· Escriure i entendre els requisits així com els actors implicats.

 

Pràctica P2 i P3 (Evidència dels resultats d'aprenentatge RA3 i RA4)

Es desenvoluparà un petit software mitjançant Test Driven Development by applying some of the techniques explained in the bloc 2.

Ponderació: 16% (8% cada una) de la nota final.

 Objectius específics: En finalitzar l'activitat els estudiants han de ser capaços de:

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

· Ser capaços de fer un dessenvolupament mitjançant TDD

· Conèixer les fases d'un projecte software i l'agile software development.

 

Pràctica P4 i P5  (Evidència dels resultats d'aprenentatge RA7, RA8, i RA9)

Es tracte de redissenyar un petit software aplicant un o varis dels següents patrons: MVC, Observer o Command.

Ponderació: 16% (8% cada una) de la nota final.

Objectius específics: En finalitzar l'activitat els estudiants han de ser capaços de:

· Modelar aplicacions software.

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

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

 

Examen E1 (Evidència dels resultats d'aprenentatge RA1, RA2, RA3, RA4, RA5 i RA6)

Prova individual dels conceptes teòrics i procediments pràctics del bloc 1 i 2.

Aquesta prova representa el 30% de la qualificació final de l'assignatura.

L'objectiu d'aquesta activitat és avaluar si l’estudiant  sap:

· Modelar els requisits del software.

. Escriure i entendre especificacions formals.

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

 

Examen E2 (Evidència dels resultats d'aprenentatge RA5, RA6, RA7, RA8, i RA9)

Prova individual dels conceptes teòrics i procediments pràctics del bloc 2 i 3.

Aquesta prova representa el 30% de la qualificació final de l'assignatura.

L'objectiu d'aquesta activitat és avaluar si l’estudiant sap:

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

· Aplicar i analitzar l'ús de patrons de disseny de software 

 

L’assignatura es divideix en dos blocs principals: 1) enginyeria de requisits, metodologies àgils, i proves de software (P1, P2/3 i E1) i 2) patrons de desenvolupaments robusts que permet arribar als objectius plantejats al bloc anterior (P2/3, P4/5 i E3)

En l'àmbit competencial el primer bloc, on les pràctiques majoritàriament s’hauran de desenvolupar en temps no presencial, cobreixen les següents competències comunes i específiques de l’assignatura:
CB.4: transmeten idees, problemes i solucions en llenguatge apte a públic especialitzat i no especialitzat
CT.2: treballen assumint altres rols i sent pragmàtic
CIN1: consideren tots els stakeholders que intervenen en l'entorn
CIN2: planifiquen i lideren una proposta valorant tot l'entorn
CIN3: conceben les solucions per a aplicar en un entorn
CIN4: consideren el desplegament i la implantació de la solució
CIN5: consideren l'administració i manteniment de la solució
CIN16: aprenen i apliquen els principis de metodologies i cicles de vida
CIN18: la planificació de solucions inclou el respecte a la legislació vigent del moment
EIS2: usen metodologies per descobrir, valorar, i especificar solucions en uns límits
EIS3: adapten la proposta tecnològica al problema valorat
EIS5: crean plans de contingència per proposar alternatives en un desenvolupament
EIS6: consideren aspectes legals i ètics en la planificació de requisits i el desenvolupament
ESI2: tenen en compte la seguretat i aspectes legals en la captació de requisits
ESI3: especifiquen i dissenyen el manteniment de les solucions

El segon bloc incideix principalment en:
CB.5: cal que siguin capaços de trobar i adaptar-se a les tecnologies noves
CIN5: es considera el manteniment de la solució
CIN8: apliquen patrons per evolucionar una solució en el temps de forma robusta
CIN13: implementen aplicacions basades en web
CIN16: apliquen diversos cicles de vida sobre solucions existents o proposades
EIS3: apliquen els patrons més adients segons els requisits
EIS5: usen patrons per adaptar el software de forma robusta als canvis de requeriments o riscos
EIS6: apliquen aspectes ètics al desenvolupament del software
ESI3: dissenyen i implementen les solucions

De forma transversal a tota l’assignatura:
CB.2: demostra i apliquen els seus coneixements
CT.1: la major part del material del temari i totes les pràctiques i codi són en anglès
CT.2: compleix varis rols i interaccions segons tasca
EIS1, EIS4: aplica i millora, de forma progressiva, les pràctiques i desenvolupament actuals.

 

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]

Sistema d'avaluació


La nota final es calcularà amb les qualificacions de les activitats ponderades de la forma següent:

·          Examen E1: 30%

·          Examen E2: 30%

·          Pràctiques de la P1 a la P5: 40% (8% cadascuna de les pràctiques)

Si la nota de cada una de les pràctiques de P1 a P5 iguala o supera el 3, la nota de pràctiques PS serà la ponderació. En cas contrari serà la mínima.

Si les nota de les pràctiques PS i de cada un dels examens E1 i E2 iguala o supera el 3, la nota de final NF serà la ponderàció (40% pràctiques, 30% i 30% els exàmens). En cas contrari serà la mínima d'elles.

Només podran recuperar-se les proves E1 i E2 en una única prova de tota l’assignatura (les pràctiques no es podran recuperar). El 60% de la nota final de l’assignatura serà la més gran entre l'examen de recuperació ER i l’obtinguda en les proves E1 i E2.

Per poder realitzar l'examen de recuperació l’estudiant haurà de complir les tres condicions següents:

-          La nota de l’assignatura és inferior a cinc.

-          Com a mínim té un 3 en cada un dels exàmens.

-          Com a mínim té un 3 de cada una de les pràctiques. 

Bibliografia


Bàsic

Patrones de diseño : elementos de software orientado a objetos reutilizable.

Gamma, Eric et all. Addison-Wesley, cop. 2003. ISBN 9788478290598.

Warmer, Jos B; Kleppe, Anneke G. The Object constraint language : getting your models ready for MDA. 2nd ed. Reading 2003: Addison-Wesley. ISBN 0321179366.

Pruebas de software y JUnit: un análisis en profundidad y ejemplos prácticos. Bolaños Alonso, Daniel; Sierra Alonso, Almudena; Alarcón Rodríguez, Miren Idoia.  1a. Prentice-Hall España, 2008. ISBN 9788483223543.

Complementary

Writing Testable Code. Miško Hevery. http://misko.hevery.com/code-reviewers-guide/

Robert C. Martin: Principis del Disseny Orientat a Objectes http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod

UML y patrones : una introducción al análisis y diseño orientado a objetos y al proceso unificado.

Larman, Crai Prentice Hall, cop. 2003. ISBN 978 8420534382.

Patrones de diseño aplicados a Java. Stelting Stephen, Maassen Olav. Prentice-Hall 2003. ISBN 9788420538396.

Web del professor: http://david-rodenas.com/tc/es3