Informació general


Idiomes d'impartició


  • Català

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.)

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 en 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 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.

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 caire totalment opcional que l'ajudin a preparar i a preparar-se per a les de caire 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, en base a 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 1 (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 2 i 3 (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 4 i 5  (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.

 

Prova 1 (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

 

Prova 2 (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

 

Nota: la competència transversal associada a l'assignatura (coneixement tercera llengua) es treballa a partir de les fonts documentals que els estudiants han de consultar, atès que totes elles es troben en anglès. En algunes ocasions també es subministren en anglès els enunciats d'algunes de les pràctiques i materials de suport de l'assignatura

Sistema d'avaluació


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

·          Prova 1: 30%

·          Prova 2: 30%

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

Amb les ponderacions anteriors, les pràctiques de laboratori tenen un pes del 40% i les proves un 60%.

Només podran recuperar-se les proves 1 i 2 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 la prova de recuperació i l’obtinguda en les proves 1 i 2.

Per poder realitzar la prova 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 de les  proves.

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

Bibliografia


Bàsica

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

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

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.

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


Complementària

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

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.

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

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