Logo UAB
2020/2021

Fonaments d'Enginyeria del Software

Codi: 102708 Crèdits: 3
Titulació Tipus Curs Semestre
2500895 Enginyeria Electrònica de Telecomunicació OB 1 2
2500898 Enginyeria de Sistemes de Telecomunicació OB 1 2
La metodologia docent i l'avaluació proposades a la guia poden experimentar alguna modificació en funció de les restriccions a la presencialitat que imposin les autoritats sanitàries.

Professor/a de contacte

Nom:
Daniel Ponsa Mussarra
Correu electrònic:
Daniel.Ponsa@uab.cat

Utilització d'idiomes a l'assignatura

Llengua vehicular majoritària:
català (cat)
Grup íntegre en anglès:
No
Grup íntegre en català:
Grup íntegre en espanyol:
No

Prerequisits

L'assignatura no té prerequisits.

L'assignatura es sustenta en coneixements bàsics de programació en C. Cal portar al dia doncs el temari sobre programació en C donat a l'assignatura Fonaments d'Informàtica.

Objectius

L'assignatura correspon a una matèria bàsica d'introducció als fonaments de l'enginyeria del software, a l'anàlisi i disseny orientat a objecte, i a la programació orientada a objecte.

Els objectius formatius bàsics de l'assignatura són:

  • Introduir l'alumne en els conceptes clau de l'enginyeria del software, veient-ne les singularitats i diferències respecte l'enginyeria civil.
  • Introduir els conceptes clau respecte l'anàlisi i disseny de software orientat a objecte.
  • Aprendre un llenguatge de programació orientat a objecte. Específicament el C++.

Competències

    Enginyeria Electrònica de Telecomunicació
  • Aprendre nous mètodes i tecnologies a partir dels coneixements bàsics i dels tecnològics, i tenir versatilitat per adaptar-se a noves situacions
  • Hàbits de pensament
  • Hàbits de treball personal
  • Treball en equip
    Enginyeria de Sistemes de Telecomunicació
  • Aprendre nous mètodes i tecnologies a partir dels coneixements bàsics i dels tecnològics, i tenir versatilitat per adaptar-se a noves situacions
  • Aprendre nous mètodes i tecnologies a partir dels coneixements bàsics i dels tecnològics, i tenir versatilitat per adaptar-se a noves situacions.
  • Hàbits de pensament.
  • Hàbits de treball personal
  • Treball en equip

Resultats d'aprenentatge

  1. Aplicar els fonaments de l'enginyeria del programari al desenvolupament d'aplicacions de programari.
  2. Avaluar de manera crítica el treball dut a terme.
  3. Conèixer i utilitzar els fonaments de la programació en xarxes, sistemes i serveis de telecomunicació.
  4. Desenvolupar el pensament científic.
  5. Desenvolupar estratègies d'aprenentatge autònom.
  6. Desenvolupar la capacitat d'anàlisi i de síntesi.
  7. Gestionar el temps i els recursos disponibles.
  8. Gestionar el temps i els recursos disponibles. Treballar de forma organitzada.
  9. Treballar cooperativament.
  10. Treballar de manera autònoma.
  11. Utilitzar els fonaments de l'arquitectura i la metodologia de disseny, verificació i validació del programari.

Continguts

A. INTRODUCCIÓ A L'ENGINYERIA DEL SOFTWARE
A1. Introducció: Cal una enginyeria del software ? Conceptes Bàsics

  • Presentació de l'assignatura.
  • Enginyeria del software vs Enginyeria Civil.
  • Etapes del cicle de desenvolupament del software.
  • Processos de desenvolupament del software.
  • Planificació de projectes Software.

A3. Anàlisi i Disseny orientat a objectes

  • Modularització efectiva d'un software.
  • Disseny orientat a objecte.
  • UML: Diagrama de Classes.

B. PROGRAMACIÓ ORIENTADA A OBJECTES EN C++
B1. Classes, Atributs i Mètodes

  • Declaració i definició dels elements bàsics.
  • Classe vs Objecte.
  • Accessibilitat: atributs i mètodes públics i privats.
  • Sobrecàrrega de funcions

B2. Enumerats. Mecanisme de crides a funció. Memòria Dinàmica

  • Enumerats.
  • Mecanisme de crides a funció.
  • Funcions inline
  • Pas per referència / Pas per referència constant.
  • Reserva/Alliberament de memòria.
  • Aritmètica d'apuntadorss

B3. Constructors i Destructors. Operadors

  • Tipus de constructors.
  • Destructors.
  • Operadors binaris.
  • L'operador d'assignació.
  • Objectes i l'apuntador this.
  • El concepte friend.
  • Streams. Operadors >> i <<.

B4. Herència, Polimorfisme i Genericitat

  • Jerarquia. Generalització vs Especificació.
  • Accesibilitat a atributs i mètodes 'protegits'.
  • Lligam estàtic i dinàmic.
  • Funcions virtuals.
  • Funcions template.
  • Classes template.

Metodologia

Les diferents activitats que es duran a terme en l'assignatura s'organitzen de la següent manera:

Classes de teoria:

En la part A del temari (Introducció a l’Enginyeria del Software) s’imparteix docència de manera tradicional. S'exposen els conceptes bàsics de l'assignatura i es donen indicacions de com completar i aprofundir en aquest continguts. En la part B del temari (Programació orientada a objectes en C++) s’utilitza una metodologia basada en “aprendre fent” (learning by doing), desenvolupant programes on es posen en pràctica aspectes de programació introduïts prèviament amb el suport de vídeos i activitats associades.

Classes de problemes:

En aquestes classes s’aprofundeix  en el temari treballat a les classes de teoria, reforçant així la seva assimilació. Es resolen problemes i es discuteixen casos pràctics. Amb les activitats plantejades es promou la capacitat d'anàlisi i síntesi, el raonament crític, i s'entrena l'estudiant en la resolució de problemes mitjançant el desenvolupament de programes.

Pràctiques:

Durant el curs es realitza una pràctica al llarg de diferents sessions. Sempre que la capacitat de les aules ho permeti, els alumnes treballaran en grups de dues persones.
La pràctica consistirà en el desenvolupament d'un programa en C++ que implementi una aplicació demanada.
Per desenvolupar el programa els grups treballaran de forma autònoma. Les sessions de pràctiques es dedicaran principalment a resoldre dubtes amb el professor, i a lliurar fites del programa a desenvolupar, per la seva posterior avaluació. Els grups hauran d'explicar la feina feta al professor, i aquest plantejarà qüestions als membres del grup per valorar la contribució de cadascú.

Consideracions generals

Per disseminar informació a l'estudiantat s'utilitzarà la plataforma Campus Virtual. Les dates d'avaluació continuada i lliurament de treballs es publicaran a través d'aquest mitjà, i poden estar subjectes a possibles canvis de programació per motius d'adaptació a possibles incidències.  Sempre s'informarà mitjançant el Campus Virtual sobre aquests possibles canvis ja que aquesta és la plataforma d'intercanvi d'informació entre el professorat i l'estudiantat.

Activitats formatives

Títol Hores ECTS Resultats d'aprenentatge
Tipus: Dirigides      
Classes de Problemes 6 0,24 1, 2, 4, 6, 10, 11
Classes de Teoria 11,5 0,46 3, 4, 6, 11
Proves d'Avaluació 2,5 0,1 3, 4, 6, 8, 11
Pràctiques 6 0,24 1, 2, 5, 6, 8, 9, 10, 11
Tipus: Supervisades      
Preparació de les Sessions de Pràctiques 15 0,6 1, 4, 7, 8, 9, 10
Ressolució de Problemes Fora de l'Aula 9 0,36 1, 3, 5, 6, 7, 10
Tipus: Autònomes      
Estudi 23 0,92 3, 5, 10
Tutories 2 0,08 5, 10

Avaluació

a) Procés i activitats d'avaluació programades

L'avaluació de l'assignatura es durà a terme de manera contínua a partir de les evidències d'aprenentatge recollides en els següents processos:

  • [E1]. Realització de proves escrites (exàmens).
  • [E2]. Resolució i entrega de qüestionaris i exercicis plantejats a les sessions de teoria i problemes.
  • [E3]. Realització d'una pràctica, avaluada a partir de diferents activitats i lliuraments.

L'assignatura consta de les activitats d'avaluació següents, cadascuna avaluada amb una nota entre 0 i 10 (ambdós inclosos):

  • [E1]-ExP1, examen parcial 1, 15% sobre la qualificació final.
  • [E1]-ExP2, examen parcial 2, 35% sobre la qualificació final.
  • [E2]-Prob, resolució d'exercicis plantejats a les sessions de teoria i problemes, 15% sobre la qualificació final.
  • [E3]-Prac, pràctica de programació en C++, 35% sobre la qualificació final.

Per poder aprovar l'assignatura mitjançant l'avaluació continuada, caldrà treure una nota mínima de 5 en les següents 2 expressions.

  • (0,3*Nota[E1]-ExP1) + (0,7*Nota[E1]-ExP2) + (0,1*Nota[E2]-Prob)
  • (0,15*Nota[E1]-ExP1) + (0,35*Nota[E1]-ExP2) + (0,15*Nota[E2]-Prob) + (0,35*Nota[E3]-Prac)

Cal tenir en compte que:

  • Si no es supera la primera condició per aprovar, s'assignarà el resultat de la seva expressió com a qualificació final de l'assignatura.
  • els exercicis que integren l'activitat [E2]-Prob s'hauran de lliurar dins un termini establert, i s'avaluaran amb una nota entre 0 i 10 (ambdós inclosos). Els exercicis no lliurats dins el seu termini s'avaluaran amb una nota de 0, i no es podran recuperar.
  • l'activitat [E3]-Prac s'avaluarà en base a diferents subactivitats plantejades, que tindran un termini de lliurament establert. Cada subactivitat s'avaluarà amb una nota entre 0 i 10 (ambdós inclosos). Les subactivitats no realitzades o lliurades fora del seu termini s'avaluaran amb una nota de 0, i no es podran recuperar.

En cas d'irregularitats en les activitats avaluatives, s'aplicarà el que es detalla a l'apartat f).

És important tenir en compte que no es realitzaran activitats d’avaluació en una data o moment diferent a l'establert, llevat de causes justificades, degudament informades amb antelació al professorat.

b) Programació d'activitats d'avaluació

El calendari de les diferents activitats d'avaluació es detallarà al Campus virtual, a l’aula Moodle de l’assignatura. Les dates de realització de les proves escrites (activitats [E1]-ExP1 i [E1]-ExP2) també es faran públiques a la web de l'Escola d'Enginyeria, a l'apartat d'exàmens.

c) Procés de recuperació

Les úniques activitats d'avaluació recuperables són les proves escrites [E1]-ExP1 i [E1]-ExP2.

L'estudiant es pot presentar a recuperar o millorar les notes d'aquestes proves (una d'elles, o totes dues) sempre que s'hagi presentat a un conjunt d'activitats que representin un mínim de dues terceres parts de la qualificació total de l'assignatura.

De cara a la qualificació final de l'assignatura, la nota que s'obtingui a la recuperació substituirà la nota de la prova corresponent realitzada dins l'avaluació continua.

D'acord amb la coordinació del Grau i la direcció de l'Escola d'Enginyeria les activitats següents no es podran recuperar:

  • [E2]-Prob, 15% sobre la qualificació final.
  • [E3]-Prac, 35% sobre la qualificació final.

d) Procediment de revisió de les qualificacions

Per les activitats d'avaluació basades en proves escrites ([E1]-ExP1 i [E1]-ExP2) s'establirà un mecanisme de reserva de data i hora de revisió, en la que l'estudiant podrà revisar l'activitat amb el professorat. En aquest context, es podran fer reclamacions sobre la nota de l'activitat, que seran avaluades pel professorat responsable de l'assignatura. Així mateix, es podrà concertar amb el professorat responsable de l'assignatura la revisió de la resta d'activitats d'avaluació fins a dues setmanes abans de la prova de recuperació.

e) Qualificacions especials

Si l'alumne no ha realitzat cap de les proves [E1]-ExP1 i [E1]-ExP2 se li assignarà la nota de "No Avaluable". Cal recordar però que, segons normativa vigent, les qualificacions de "No Avaluable" exhaureixen també convocatòria.

Només podran obtenir una MH els estudiants que tinguin una nota igual o superior als 9 punts. Com que el nombre de MH no pot superar el 5% dels estudiants matriculats, es concediran als estudiants que tinguin les notes finals més altes.En cas d’empat, es tindran en compte els resultats de les proves parcials.


f) Irregularitats per part de l'estudiant, còpia i plagi.

Sense perjudici d'altres mesures disciplinàries que s'estimin oportunes, es qualificaran amb un zero les irregularitats comeses per l'estudiant que puguin conduir a una variació de la qualificació d'un acte d'avaluació. Per tant, la còpia, el plagi, l'engany, deixar copiar, etc. en qualsevol de les activitats d'avaluació implicarà suspendre-la amb un zero.

g) Avaluació dels estudiants repetidors

A partir de la segona matrícula, l'estudiant repetidor pot sol·licitar convalidar l'avaluació de les activitats a [E3]-Prac, prenent la nota obtinguda la primera vegada que l'estudiant s'ha matriculat de l'assignatura. Per poder optar a aquesta avaluació diferenciada, l'estudiant repetidor ho ha de demanar al professorat mitjançant un correu electrònic.

Activitats d'avaluació

Títol Pes Hores ECTS Resultats d'aprenentatge
Prova d'Avaluació ExP1 15% 0 0 2, 3, 4, 5, 6, 7, 8, 10, 11
Prova d'Avaluació ExP2 35% 0 0 1, 2, 3, 4, 5, 6, 7, 8, 10, 11
Pràctica 35% 0 0 1, 3, 5, 7, 8, 9, 10, 11
Resolució de Problemes i Activitats Proposades 15% 0 0 1, 2, 4, 5, 6, 10, 11

Bibliografia

  • R.S. Pressman, Ingeniería del software, un enfoque práctico. Mc Grah-Hill, 7a. edició , 2010.

  • A. Álvarez García, R. de las Heras del Dedo, C. Lasa Gómez, Métodos Ágiles y Scrum. Anaya Multimedia, 2012.
  • T.A. Pender, UML Weekeng Crash Course, Wiley Publishing, Inc. 2002.
  • P. Bustamante, I. Aguinaga, M. Aybar, L. Olaizola, I. Lazacano, Aprenda C++ Básico como si estuviera en primero, Universidad de Navarra, 2004.
  • P. Bustamante, I. Aguinaga, M. Aybar, L. Olaizola, I. Lazacano, Aprenda C++ Avanzado como si estuviera en primero, Universidad de Navarra, 2004.