Curs 2009-2010
Enginyeria de Software I (12460)
Titulació/estudi: Enginyeria Informàtica
Curs: 3r
Trimestre: 1r
Nombre de crèdits ECTS: 9 crèdits
Hores dedicació estudiant:
Llengua o llengües de la docència:
1. COMPETÈNCIES DE L'ASSIGNATURA
Competències generals
1. Resolució de problemes
Instrumentals:
- Habilitats cognitives (comprensió, interrelació d'idees i pensaments, anàlisi, síntesi...) (i): Totes aquestes competències generals són necessàries com a requisit previ per a les diferents competències que es presenten a continuació.
- Sentit comú (i): De forma similar aquesta competència és l'eina més important a l'hora de poder assolir les altres competències que es descriuen en aquest apartat.
- Organització del temps (i): Ser capaç de resoldre un problema complex de forma sub-òptima en un temps limitat, planificant abans la quantitat de temps que es destinarà a cada activitat.
- Cerca documental i de fonts de referència (i): Per resoldre qualsevol problema de certa complexitat s'ha de ser capaç d'accedir a fonts de documentació externa, destriant la informació relevant per al problema que s'està adreçant.
Sistèmiques:
- Gestió de la informació (s): Un problema complex se sòl presentar com un gran conjunt d'informació desestructurada però interrelacionada. S'ha de ser capaç d'indentificar la informació substancial, organitzar-la, relacionar-la i prioritzar-la per poder plantejar-se una anàlisi coherent.
- Anàlisi de punts febles i forts (s) : Ser capaç d'analitzar els punts febles i forts de les diverses opcions que es presenten per a solucionar un problema concret.
- Presa de decisions (s): A partir del resultat d'una anàlisi prèvia poder optar per una de les possibles opcions que es presenten, actuant de forma coherent amb la decisió presa.
- Introducció de millores (s): Apart de resoldre un problema és molt important ser capaç d'analitzar de forma crítica la solució final i introduir millores concretes.
- Capacitat per generar noves idees (creativitat) (s): Per resoldre un problema complex és important disposar de creativitat suficient com per a generar possibles alternatives.
Nota: En les competències i: instrumental, s: sistèmica, ip: interpersonal
2. Organització i planificació
Sistèmiques:
- Interès per la qualitat (s): Es tracta d'una competència bàsica per poder assolir les fites plantejades en un projecte amb suficients garanties.
- Disseny i direcció de projectes (s): S'ha de ser capaç de dissenyar i planificar les diverses tasques d'un projecte i després assumir la seva direcció per a que aquestes es duguin a terme en els plaços previstos.
- Planificació de canvi (s): Qualsevol projecte d'enginyeria ha d'estar preparat per a introduir canvis en qualsevol de les seves fases. L'alumne ha de ser capaç de planificar i avançar les possibles complicacions relacionades amb canvis en els requeriments o les solucions adoptades.
- Redisseny de processos (s): Quan un procés es mostra poc eficient o adient per a una situació concreta s'ha de poder redissenyar-lo, plantejant els canvis necessaris per a la seva millora.
- Capacitat d'adaptació a noves situacions (s): Un cop redissenyat un procés o introduit un canvi a la planificació s'ha de ser capaç d'adaptar-se a aquesta nova situació de forma eficient i en el menor temps possible.
3. Treball en equip
Interpersonals:
- Competència comunicativa (ip): En el context d'un treball en equip s'ha de ser capaç de comunicar els criteris propis i els resultats personals a la resta dels membres de forma convincent i clara utillitzant el llenguatge tècnic adient de forma que la comunicació resulti el menys ambigua possible. Aquesta competència comunicativa s'haurà d'assolir tant mitjançant comunicació verbal com escrita.
- Capacitat per comunicar-se amb experts d'altres àmbits (ip): De la mateixa manera és important ser capaç de comunicar-se amb experts d'altres àmbits o amb clients, abandonant en la mida del possible la jerga informàtica i adoptant un llenguatge planer i sintètic que sigui capaç de transmetre els punts inportants del què volem comunicar.
- Lideratge (ip): Ser capaç de prendre decisions en un grup de treball, comunicar-les de forma convincent i aconseguir el suport dels altres membres del grup.
4. Altres
Instrumentals:
- Ús d'instruments tecnològics (i): Poder aplicar diferents instruments tecnològics a la pràctica i ser capaç de decidir sobre la idoneïtat de la seva utilització.
- Capacitat per aplicar el coneixement teòric a la pràctica (s): S'ha de ser capaç d'aplicar el coneixement obtingut de forma teòrica (sobre diferents metodologies o forma d'organitzar processos i activitats) a la resolució d'un problema pràctic.
Sistèmiques:
- Capacitat d'aprendre a aprendre (s): Possiblement la competència general més important és la ser capaç d'aprendre noves tecnologies o assimilar experiències de forma acumulativa.
Competències Específiques:
Les competències específiques d'aquesta assignatura es poden resumir en quatre grans competències-eix:
- Coneixement de Metodologies de l'Enginyeria del Software:
- Capacitat d'analitzar i descriure els requeriments d'un problema complex d'enginyeria del software
- Capacitat de dissenyar la solució d'un problema complex d'enginyeria del software a partir d'uns requeriments
A continuació desglossarem i detallarem cadascuna d'aquestes competències-eix. Més endavant, al següent apartat, comentarem amb més detall com s'avaluaran cada competència.
1. Coneixement de diferents metodologies de l'enginyeria del software.
- Coneixement dels diferents tipus de "cicles de vida" del software (i)
- Capacitat de triar una metodologia concreta entre les existents segons les necessitats del cas concret (s)
- Capacitat d'adaptar la metodologia usant mesures correctores (i)
- Capacitat d'entendre com les decisions d'anàlisi, disseny i procés afecten el producte final (s)
2. Capacitat d'analitzar i descriure els requeriments d'un problema complex d'enginyeria del software.
- Capacitat d'extreure'n els requeriments: identificar "stakeholders", actors, casos d'ús, classificar requeriments segons siguin funcionals, no funcionals i de domini (s)
- Capacitat d'expressar-los de forma organitzada i tècnica (concreta, unívoca) (s)
- Domini d'algun llenguatge de modelització estàndar (per exemple l'UML) amb el qual ajudar-se per expressar els requeriments (i)
- Capacitat de treballar els requeriments en equip (ip)
- Capacitat de comunicar els requeriments al client, de forma planera, per obtenir "feedback" i validar-los (ip)
3. Capacitat de dissenyar la solució d'un problema complex d'enginyeria del software a partir d'uns requeriments
- Capacitat d'entendre uns requeriments donats (s)
- Capacitat d'organització i planificació de les diverses fases i tasques involucrades (s)
- Presa de decisions de disseny (s)
- Identificar les forces involucrades i trobar una solució de que les balanci.
- Capacitat per comunicar de forma convincent i clara les decisions preses en la resolució del cas pràctic (ip)
- Capacitat de treballar el disseny en equip (ip)
- Optimització del temps: Capacitat de trobar una aproximació prou bona a la solució d'un problema complex (s)
- Coneixement de tecnologies orientades a objecte (i)
- Domini un llenguatge orientat a objectes (per exemple el C++)
- Coneixement d'un llenguatge de modelatge estàndar (per exemple l'UML)
- Capacitat d'aplicar patrons de disseny.
- Capacitat d'implementar el disseny (s)
- Capacitat d'obtenir feedback del codi per modificar el disseny.
- Capacitat de realitzar testos automàtics de la solució implementada (s)
2. AVALUACIÓ
- Fase 1. Criteris d'avaluació generals:
S'avaluaran les 4 competències eix esmentades en l'apartat anterior així com les competències generals. A tal efecte es realitzaran les següents activitats avaluadores:
Obligatòries:
1. Examen final amb la resolució d'un problema pràctic en un temps limitat: 40% de la nota final
2. Pràctiques realitzades en parella amb la realització d'un projecte durant tot el trimestre i avaluació continuada: 40% de la nota final
3. Test teòric avaluant els coneixements adquirits a realitzar abans de l'acabament del trimestre: 15% de la nota final
4. Discussió sobre la resolució d'uns exercicis pràctics i participació a classe 5 % de la nota final
Per poder aprovar les quatre activitats obligatòries han de tenir una nota superior al 4. Per a la convocatòria extra-ordinària es conservarà la nota de les parts amb nota superior a 4.
A continuació detallarem i concretarem aquestes activitats
- Fase 2. Concreció
Activitat 1.Problema d'Examen
- Com s'avaluarà:
En un examen en que es plantejarà un problema concret amb una sèrie de preguntes d'anàlisi i disseny. El problema haurà de resoldre's en un temps limitat. Es podrà disposar d'apunts i material complementari.
- Què s'avaluarà:
Competències Generals:
1. Resolució de problemes
2 . Organització i planificatió
Competències Específiques:
3. Capacitat d'analitzar i descriure els requeriments d'un problema complex d'enginyeria del software.
4. Capacitat de dissenyar la solució d'un problema complex d'enginyeria del software a partir d'uns requeriments
- Quan s'avaluarà:
S'avaluarà a finals de trimestre per assegurar que els alumnes han assolit la soltura i els coneixements necessaris.
Activitat 2. Pràctiques
- Com s'avaluarà:
Els alumnes s'enfrontaran per equips a la resolució d'un cas pràctic que simularà una situació real i hauran de seguir tot el cicle de vida des de l'anàlisi de requeriments fins a la implementació. L'avaluació es realitzarà a partir de punts de control intermitjos en què els alumnes hauran de presentar els resultats parcials i defensar les seves decisions de forma coherent. També es tindrà en compte aspectes subjectius com ara el funcionament del grup de treball, la organització...
- Què s'avaluarà:
Competències Generals:
1. Resolució de problemes
2. Organització i planificatió
3. Treball en equip
4. Ús d'instruments tecnològics
5. Capacitat per aplicar el coneixement teòric a la pràctica
Competències Específiques:
- Capacitat d'analitzar i descriure els requeriments d'un problema complex d'enginyeria del software.
- Capacitat de dissenyar la solució d'un problema complex d'enginyeria del software a partir d'uns requeriments
- Quan s'avaluarà:
S'avaluarà durant tot el trimestre a partir de punts de control i lliuraments intermitjos.
Activitat 3. Examen Test
- Com s'avaluarà:
Es realitzarà un test amb preguntes enfocades a demostrar els coneixements de l'alumne en els diversos conceptes presentats al llarg de l'assignatura
- Què s'avaluarà:
Competències Específiques:
Coneixement de Metodologies de l'Enginyeria del Software
- Quan s'avaluarà:
Es realitzarà a mitjans de trimestre quan ja s'hagi introduit tot el contingut teòric. D'aquesta manera se separarà de l'examen final i es distribuiran esforços més homogèniament. Si l'alumne suspén en aquesta primera convocatòria, podrà fer-lo també juntament amb l'examen a finals de trimestre.
Activitat 4. Discussió Exercicis
- Com s'avaluarà:
Es realitzaran una sèrie de seminaris amb un màxim de 10 persones on els alumnes presentaran i discutiran les possibles solucions a exercicis realitzats prèviament.
- Què s'avaluarà:
En realitat aquesta no és una activitat avaluativa i no es pretén avaluar cap competència. El fet que es consideri la participació dels alumnes com a element avaluador és una simple mesura incentivadora per a la seva participació.
- Quan s'avaluarà:
A mitjans de trimestre
Activitat 5. Seminaris d'Empresa
- Com s'avaluarà:
Es realitzaran una sèrie de seminaris amb la participació d'empreses externes del sector que exposaran les seves metodologies. Els alumnes seran convidats a intervenir i formular preguntes. Es contarà en la part de participació a classe.
- Què s'avaluarà:
No és una activitat avaluativa sinó incentivadora.
- Quan s'avaluarà:
A mitjans de trimestre
3. CONTINGUTS
PART 1. L'ENGINYERIA DE SOFTWARE I ELS SEUS PROCESSOS (cap. 1-4)
Bloc de contingut 1: Cicle de Vida i Metodologies (Nota: inclou els capítols 1, 2 i 3 dels apunts)
Conceptes:
- Noció d'Enginyeria de Software
- Relació de l'Enginyeria de Software amb altres àmbits de la professió informàtica i altres professions
- El Cicle de Vida d'un producte software i els seus models
Procediments:
- Identificació de les diverses parts o processos del cicle de vida genèric i les activitats que s'hi duen a terme
- Anàlisi dels avantatges/inconvenients dels diversos models de cicle de vida en compte el context d'un determinat projecte
Actituds:
- Interés per l'Enginyeria de Software i la seva importància en la majoria dels àmbits de la professió informàtica.
- Esperit crític a l'hora d'avaluar els avantatges/inconvenients dels diversos models de cicle de vida I metodologies.
Bloc de contingut 2: Enginyeria de Requeriments
Conceptes:
- Definició i classificació dels diversos tipus de Requeriments
- Elements d'un Document de Requeriments i formalismes associats
- El cicle de vida de l'Enginyeria de Requeriments
Procediments:
- Classificació dels requeriments en funcionals, no funcionals i de domini
- Identificació de stakeholders i actors.
- Utilització del diagrama de casos d'us UML per analitzar i descriure els requeriments funcionals
- Redacció d'un Document de Requeriments complert a partir de l'anàlisi d'un cas pràctic.
- Manteniment del Document de Requeriments: gestió del canvi
Actituds:
- Valoració de la importància d'uns requeriments ben definits en el marc d'un projecte informàtic
- Previsió i adequació al canvi
Bloc de contingut 3: Metodologies
Conceptes:
- Descripció de diversos exemples de metodologies
- Metodologies àgils vs. tradicionals
- Metodologies basades en el procés vs. metodologies basades en les persones
Procediments:
- Identificació dels beneficis I inconvenients de diverses metodologies
- Aplicació de les pràctiques I processos d'algunes de les metodologies
Actituds:
- Actitud crítica per avaluar una metodologia
PART 2. ANÀLISI I DISSENY OO (cap. 5-7)
Bloc de contingut 4:Anàlisi i Disseny OO
Conceptes:
- Definició i propietats dels Objectes
- Definició i propietats de les Classes
- Les relacions entre classes: herència, composició, agregació, associació i dependència
- El Polimorfisme i les Jerarquies d'Herència
- El llenguatge C++ com a exemple de llenguatge orientat a objectes.
Procediments:
- Particionament d'un problema complex emprant els conceptes i els procediments del paradigma orientat a objectes.
- Utilització de l'UML per a modelar sistemes Orientats a Objecte
- Utilització del llenguatge C++ per a implementar un disseny orientat a objectes.
- Desenvolupament dirigit per testos
Actituds:
- Les bones pràctiques de programació (Encapsulació, no duplicació, mètodes curts, nomenclatura entenedora...)
- Adaptarció a les convencions de codificació de l'equip on s'està treballant
- Adaptació al canvi: el codi es quelcom moldejable i en constant evolució
- Comprensió dels avantatges del desenvolupament dirigit per testos
Bloc de contingut 5:L'UML
Conceptes:
- Avantatges del modelatge visual
- Definició i breu història de l'UML
- Els principals diagrames UML i els elements inclosos a tots ells
Procediments:
- Utilitat dels diversos diagrames UML a les diverses fases del cicle de vida
- Comprensió de qualsevol tipus de diagrama UML aplicat a un problema concret
- Utilització dels diagrames UML més importants (diagrama de casos d'us, estàtic, i de seqüència) en la resolució d'un problema i en menor mesura d'algun dels altres tipus de diagrames.
Actituds:
- Acceptació de la importància d'utilitzar un formalisme estàndar a l'hora d'utilitzar diagrames.
Bloc de contingut 6:Patrons Software
Conceptes:
- Concepte de Patró Software
- Catàlegs de patrons i la seva utilitat
Procediments:
- Utilització d'UML per a entendre un patró de disseny concret
- Utilització dels catàlegs de patrons per a identificar un patró com a solució genèrica a un problema concret
- Utilització de patrons a l'hora de dissenyar la solució a un problema pràctic concret
Actituds:
- No re-inventar la roda: la majoria de problemes amb que un es troben ja han estat solucionats i que la solució disponible en forma de patró és segurament millor que la nosaltres li podríem donar de bon començament.
4. CONEIXEMENTS PREVIS/PRERREQUISITS
- Coneixements de programació
- Coneixements bàsics del paradigma i les tecnologies Orientades a l'Objecte
- Competències generals a esperar en un alumne en 3er curs d'enginyeria en concret capacitats de comprensió i anàlisi d'un problema complex
5. ACTIVITAT ENSENYAMENT-APRENENTATGE
Disseny per competències
Competència 1. Coneixement de diferents metodologies de l'enginyeria del software.
Activitats docents |
Temporització |
Activitats d'aprenentatge |
Temporització |
Classe Magistral: Explicacións de caire general fomentant la discussió.
Seminari empresa |
5 hores
2 hores |
Estudi personal a partir d'apunts i bibliografia recomanada. Realització d'exercicis tipus test de la col·lecció. |
23 hores
2 hores |
Competència 2. Capacitat de descriure els requeriments d'un problema complex d'enginyeria del software.
Activitats docents |
Temporització |
Activitats d'aprenentatge |
Temporització |
Classe magistral/ discussió explicant tipus de requeriments, estructura de document... Revisió i discussió de requeriments preparats pels propis alumnes en clàsses pràctiques 10-15 alumnes |
6,5 hores
6 hores |
Pràctiques en parella realitzant un document de requeriments i utilitzant eines CASE. Estudi i realització de problemes de la col·lecció |
15 hores
10 hores
|
Competència 3. Capacitat de dissenyar la solució d'un problema complex d'enginyeria del software
Activitats docents |
Temporització |
Activitats d'aprenentatge |
Temporització |
Classe magistral: Explicació dels elements més importants del paradigma Orientat a Objectes Classe magistral: Explicació del llenguatge UML Resolució de problemes prèviament proposats en seminaris Projecte a realitzar a la pràctica |
3,5 hores
4,5 hores
1,5 hores
14 hores |
Resolució individual de problemes de la col·lecció Resolució pràctica en parella d'un problema complex relacionat amb els requeriments prèviament analitzats |
27 hores
35 hores |
Nota: Segons Bolonya l'Estudiant ha de dedicar 25 hores per crèdit. Enginyeria de Software I té 9 crèdits i això dona un total de 225 hores o 22,5 hores per setmana. D'aquestes 7 hores es realitzaran presencialment a classe i la resta corren a càrrec de l'alumne.
6. RECURSOS DIDÀCTICS
- Apunts en format llibre entregats a principi de trimestre
- Col·lecció de Problemes
- Web de l'assignatura: http://xavier.amatriain.net/es1
Bibliografia recomanada:
Fent un clic damunt del títol de cada document, enllaçaràs amb el seu registre bibliogràfic en el catàleg de la Biblioteca. D'aquesta manera et serà fàcil localitzar el document i/o reservar-lo en cas que tots els exemplars disponibles estiguin en préstec.
Fowler, Martin |
Reading (Mass.) : Addison-Wesley, cop. 2000 |
Meyer, Bertrand |
Madrid [etc.] : Prentice Hall, 1998 |
Sommerville, Ian |
Harlow : Addison-Wesley, 2001 |
|
||
Bibliografia complementària: |
||
|
||
Costal, Dolors |
||
Barcelona : Edicions UPC, 2000 |
||
Eliëns, Anton |
||
Principles of object-oriented software development / Anton Eliëns |
||
Workingham : Addison-Wesley, 1995 |
||
Joyanes Aguilar, Luis |
||
Madrid : Osborne/McGraw-Hill, cop. 1998 |
||
Larman, Craig |
||
Applying UML and patterns : an introduction to object-oriented analysis and design / Craig Larman |
||
Upper Saddle River, N.J. : Prentice Hall PTR, cop. 1998 |
||
Peralta Giménez, Allen J. |
||
Barcelona : Edicions UPC, 1994 |
Pressman, Roger S. |
Madrid McGraw-Hill cop. 2002 |
Schach, Stephen R. |
Boston : Irwin, cop. 1993 |
Shtern, Victor |
Upper Saddle River : Prentice Hall PTR, cop. 2000 |
Stroustrup, Bjarne |
Reading (Mass.) : Addison-Wesley, cop. 1997 |