Informació general


Tipus d'assignatura: Obligatòria

Coordinador: Alfons Palacios Gonzàlez

Trimestre: Tercer trimestre

Crèdits: 4

Professorat: 

David Ródenas Picó
Josep Roure Alcobé 

Idiomes d'impartició


L'idioma d'impartició principal a classe és el Català.

Tanmateix:

- tot el material de l'assignatura disponible està en anglès,
- les eines usades i les seves documentacions està en anglès,
- tots els treballs i totes les entregues que es fan cal que siguin en anglès.
  (això inclou codi, comentaris, documentació, interfícies, etc.) 

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 les implicacions de les tècniques Agile i Lean en el disseny i desenvolupament de software.

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. 

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: Conèixer l'Agile Software Development i com es lliga amb el concepte de Refactor i Lean.
RA3: Saber fer proves de software i aplicar metodologies TDD, amb propietats FIRST i AAA.
RA4: Saber llegir un diagrama UML i saber identificar les direccions de l'acoblament amb les fletxes.
RA5: Entendre i aplicar els patrons SOLID, la llei de Demeter i Injecció de Dependències.
RA6: Entendre i aplicar el patró Command, el patró Observador, variacions, i el patró arquitectònic MVC.
RA7: Entendre els conceptes de dades derivades, materialitzades i computades i com es relacionen amb MVC.
RA8: 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.

2.      Proves del software

2.1.  Estratègies de prova i tècniques. AAA & FIRST.

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. Functional Programming

3.2.  High Cohesion / Low Coupling

3.3. UML drawings, relations, and dependency directions

3.4. Plugin Architecture

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

3.6.  Patró Command.

3.7.  Patró Observer. 

3.8.  Patró Event Target.

3.9.  Event Bus.

3.10.  Patró Model Vista Controlador.

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 RA2 i RA3)

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 RA6, RA7, i RA8)

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 i RA5)

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 RA6, RA7, i RA8)

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 requisits 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 diversos 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 dues pràctiques és inferior a 3, o només una és inferior a 3 i la mitja és inferior a 7, la nota de les pràctiques PS serà la mínima d'elles. En cas contrari, la nota de les pràctiques PS serà la ponderació.

Si les nota de les pràctiques PS i de cada un dels exàmens E1 i E2 iguala o supera el 4, la nota de final NF serà la ponderació (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 poden recuperar). En cas de recuperació, 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 un dels E1 o E2 estan per sobre de 4 i l'alumne s'ha presentat a tots dos.

-          Com a mínim té un 3 de nota de PS 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.

Clean Architecture: A Craftman's Guide to Software Structure and Design
Robert C. Martin, Person, ISBN 9780134494166

Clean Agile: Back to Basics
Robert C. Martin, Person, ISBN 9780135781869

Clean Craftsmanship: Disciplines, Standards, and Ethics
Robert C. Martin, Person, ISBN 9780136915713

Complementary

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

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.

Refactoring: Improving the Design of Existing Code
Martin Fowler, Addison-Wesley Professional, ISBN 9780134757599