Responsable: | (-) |
Altres: | (-) |
Crèdits | Dept. | Tipus | Requisits |
---|---|---|---|
6.0 (4.8 ECTS) | CS |
|
ADA
- Correquisit per la EI , ETIG PRED - Pre-requisit per la EI , ETIG PS - Pre-requisit per la ETIS |
Responsable: | (-) |
Altres: | (-) |
Un cop adquirits, en assignatures anteriors, els coneixements tècnics i metodològics necessaris per a la feina de construir programes, l'estudiant ha de ser capaç d'integrar aquests coneixements i aplicar-los al desenvolupament d'un projecte de programació de complexitat mitjana.
Els objectius docents d'aquesta assignatura van en aquesta direcció i s'estructuren en tres nivells:
1. Posar en pràctica i facilitar la integració dels coneixements de l'estudiant pel que fa a programació, algorísmia i estructures de dades.
2. Experimentar el procés de desenvolupament d'un projecte de software que suposi l'aplicació intensiva d'aquests coneixements en un marc d'exigències estrictes, tant funcionals com operatives. S'atendran tant els aspectes lligats al producte a construir: exigències de qualitat, correció, reusabilitat de components etc..., com al propi procés de construcció: organització de
l'equip de treball, documentació, interacció amb l'usuari, prototipatge etc...
3. Completar la formació de l'alumne en aquells aspectes, bàsicament lligats a les exigències de la programació a gran escala, no suficientment coberts per les assignatures de l'àmbit de la programació cursades anteriorment.
Hores estimades de:
T | P | L | Alt | L Ext. | Est | A Ext. |
Teoria | Problemes | Laboratori | Altres activitats | Laboratori extern | Estudi | Altres hores fora d'horari fixat |
|
T | P | L | Alt | L Ext. | Est | A Ext. | Total | ||
---|---|---|---|---|---|---|---|---|---|---|
2,0 | 0 | 0 | 0 | 0 | 2,0 | 0 | 4,0 | |||
Programació a petita i a gran escala. Criteris de qualitat interna i externa del software. Cicles de vida.
|
|
T | P | L | Alt | L Ext. | Est | A Ext. | Total | ||
---|---|---|---|---|---|---|---|---|---|---|
4,0 | 0 | 0 | 0 | 0 | 2,0 | 0 | 6,0 | |||
Definició del projecte. Requeriments. Especificació funcional. Modelar primer el domini. Estudi d'un cas.
|
|
T | P | L | Alt | L Ext. | Est | A Ext. | Total | ||
---|---|---|---|---|---|---|---|---|---|---|
4,0 | 0 | 0 | 0 | 0 | 2,0 | 0 | 6,0 | |||
Arquitectura de programes. Nivels de disseny. Comunicació entre mòduls. Arquitectura en tres capes. Exemples.
|
|
T | P | L | Alt | L Ext. | Est | A Ext. | Total | ||
---|---|---|---|---|---|---|---|---|---|---|
4,0 | 0 | 0 | 0 | 0 | 1,0 | 0 | 5,0 | |||
Repàs dels conceptes de programació orientada a objectes, en principi vistos a assignatures anteriors, amb èmfasi en com s'implementen en el llenguatge de programació usat a l'assignatura.
Herència, polimorfisme i genericitat com a eines de programació. Mecanismes d'execució. Creació i destrucció d'objectes. Crides a mètodes i pas de paràmetres. "Binding" estàtic i dinàmic. "Garbage collection". Excepcions. |
|
T | P | L | Alt | L Ext. | Est | A Ext. | Total | ||
---|---|---|---|---|---|---|---|---|---|---|
2,0 | 0 | 0 | 0 | 0 | 1,0 | 0 | 3,0 | |||
Prova de components. Optimització de components.
Integració de components. Estatègies de prova i integració. Planificació de proves. "Bastimentada" i tests de regressió. Eines d'ajuda a la prova: "Debuggers", "profilers", automatizació de proves. |
|
T | P | L | Alt | L Ext. | Est | A Ext. | Total | ||
---|---|---|---|---|---|---|---|---|---|---|
2,0 | 0 | 0 | 0 | 0 | 0 | 0 | 2,0 | |||
Tipus d'entrada i sortida. Comunicació entre programes.
Principis de comunicació amb interlocutors humans. Presentació d'informació, entrada i validació de dades, navegació, nivels d'ajut, models d'usuari. |
|
T | P | L | Alt | L Ext. | Est | A Ext. | Total | ||
---|---|---|---|---|---|---|---|---|---|---|
2,0 | 0 | 0 | 0 | 0 | 0 | 0 | 2,0 | |||
Documentació tècnica i d'usuari. Estàndards de documentació. Eines d'ajut a a la documentació.
|
|
T | P | L | Alt | L Ext. | Est | A Ext. | Total | ||
---|---|---|---|---|---|---|---|---|---|---|
2,0 | 0 | 0 | 0 | 0 | 0 | 0 | 2,0 | |||
Definició de la qualitat del software. Factors de qualitat. Mesures de qualitat dels programes. Validació i prova. Estàndards de qualitat del software.
|
|
T | P | L | Alt | L Ext. | Est | A Ext. | Total | ||
---|---|---|---|---|---|---|---|---|---|---|
5,0 | 0 | 0 | 0 | 0 | 0 | 0 | 5,0 | |||
Explicació de l'enunciat del projecte i discussió d'alternatives.
Explicació del pla de desenvolupament, dels objectius de cada etapa i de la metodologia a seguir. Explicació del contingut de cada lliurament de material i dels criteris de valoració.
|
|
T | P | L | Alt | L Ext. | Est | A Ext. | Total | ||
---|---|---|---|---|---|---|---|---|---|---|
0 | 0 | 3,0 | 0 | 6,0 | 0 | 0 | 9,0 | |||
|
|
T | P | L | Alt | L Ext. | Est | A Ext. | Total | ||
---|---|---|---|---|---|---|---|---|---|---|
0 | 0 | 5,0 | 0 | 70,0 | 0 | 0 | 75,0 | |||
Es descriu en els següents apartats.
|
Total per tipus | T | P | L | Alt | L Ext. | Est | A Ext. | Total |
29,0 | 0 | 8,0 | 0 | 76,0 | 10,0 | 0 | 123,0 | |
Hores addicionals dedicades a l'avaluació | 1,0 | |||||||
Total hores de treball per l'estudiant | 124,0 |
El projecte proposat als estudiants té les seguents caracteristiques:
- Es parteix d'un enunciat mínim per tal que l'estudiant tingui l'iniciativa per interpretar el que ha de fer el seu programa.
- El projecte és suficientment gran perquè un intent de solució "directe" no sigui factible.
- El projecte té un fort component algorísmic i d'estructures de dades.
- L'objectiu de l'estudiant ha de ser lliurar el seu programa, dins d'uns marges raonables, com a producte acabat i no tan sols com a una pràctica.
- Per a la seva implementació, es fomentarà l'ús de components creats per altres i l'aportació de components a altres projectes.
Per implementar aquest projecte, el sistema de treball serà el seguent:
- Els estudiants s'organitzen en grups de 3 persones, i els grups s'estructuren en macrogrups de 3 grups (els "clusters") de 9 persones.
- Cada "cluster" tindrà un profesor tutor assignat.
- Hi haurà 3 enunciats diferents cada quatrimestre que hauran de ser resolts tots ells per cada un dels "clusters" (un enunciat per a cada grup). Encara que els enunciats són diferents, presentaran suficients semblances com perquè tingui sentit identificar parts comunes que puguin ser desenvolupades una sola vegada i reutilitzades per tot el "cluster".
- Dins de cada grup, un estudiant i tan sols un és responsable de programar i provar cada classe.
A l'inici del curs, els estudiants reben els enunciats dels projectes i tenen una setmana per organitzar-se en grups i "clusters".
Hi ha tres lliuraments al llarg del curs, separats per períodes de temps similars (entre quatre i cinc setmanes). L'esquema del contingut de cada un d'ells és el següent:
- Primer lliurament: especificació i anàlisi. Es lliurarà un enunciat ampliat en llenguatge natural, una descripció detallada de les funcionalitats a desenvolupar, un model del domini del problema i la lista de requeriments no funcionals del programa.
- Segon lliurament: disseny i principi de l'implementació. Aquesta entrega inclou el disseny de la possible part compartida entre els grups del "cluster" i la seva implementació. A més a més s'ha de implementar completament el model del domini.
- Tercer lliurament: programa final funcionant completament d'acord amb les especificacions del primer lliurament, acompanyat de la documentació tècnica i la documentació d'usuari del programa.
Els dos primers lliuraments són asíncrons, mentre que el lliurament final consisteix en una entrevista amb cada grup d'aproximadament una hora de durada, en la qual els estudiants fan una "demo" del seu programa i responen a les possibles preguntes del tutor.
Classes de teoria:
Serveixen d'una banda, per presentar els continguts més generals de l'assignatura, que tenen poc a veure amb l'enunciat concret a resoldre cada quadrimestre. S'intentarà concentrar aquestes classes
cap a principi de curs.
D'altra banda, en els moments adequats del curs s'hi intercalen les explicacions sobre l'enunciat del projecte, la metodologia general a seguir en cada etapa, i el material que cal incloure en cada lliurament.
Classes de laboratori en horari fixat:
Algunes d'aquestes classes, normalment cap a principi de curs, serveixen perquè el professor presenti breument les notacions, llenguatges, llibreries i eines a utilitzar. En la majoria de classes de laboratori, però, no és el professor qui porta la iniciativa. Són unes hores que cada grup de projecte pot fer servir per treballar en comú, o bé per consultar dubtes amb el professor i rebre comentaris sobre els lliuraments anteriors.
Treball independent:
El gruix d'hores de l'assignatura correspon al treball que l'estudiant fa fora d'hores reglades, treballant en el projecte, individualment o juntament amb el seu grup de treball.
S'avaluaran tres lliuraments de material (documentació i/o software), distribuïts al llarg del curs. El calendari dels lliuraments s'anunciarà durant el primer mes de curs.
Lliurament 1 (Especificació i Anàlisi): 10%
Lliurament 2 (Disseny i principi de la programació): 25%
Lliurament 3 (Final): 65%
L'avaluació dels lliuraments podrà tenir en compte tant l'aportació individual de l'estudiant com els resultats del seu grup. Això implica que no tots els components d'un grup tindran necessàriament la mateixa nota. Cada membre del grup ha de programar aproximadament una tercera part del programa. En cas de desviació important es podrà considerar que l'estudiant no s'ha presentat a l'assignatura.
En els lliuraments 1 i 2 s'avalua principalment l'assoliment dels objectius acordats amb el tutor. En el lliurament 3, amb caràcter general s'avaluen tant el grau d'acabament com la qualitat del projecte (tot i que ambdues caracteristiques venen, en bona part, determinades per la feina feta en els lliuraments anteriors). Concretament, s'avaluen tres grups de característiques:
1. Assoliment d'objectius: Fins a quin punt el programa és complet i funciona correctament, d'acord amb les especificacions pactades.
2. Factors interns:
- Qualitat del disseny
- Qualitat de la codificació
- Reusabilitat i mantenibilitat
- Funcionament del grup i del cluster; inclou el grau de compartició de dissenys i codis, i l'ús efectiu del codi compartit.
- Jocs de proves lliurats.
3. Factors externs:
- Correctesa, eficiència i robustesa.
- Qualitat de la interfície i usabilitat.
- Documentació per a l'usuari.
En qualsevol dels lliuraments, el tutor podrà no acceptar un lliurament de feina manifestament incompleta. En aquest cas, la nota del lliurament podrà ser "No presentat".
Si en el tercer lliurament el projecte no és raonablement operatiu -és a dir, si les funcionalitats bàsiques no estan correctament acabades- la nota d'aquest tercer lliurament serà determinada principalment pel grau d'assoliment dels objectius pactats. En aquest cas, la nota final de l'assignatura será el minim entre 4 i la que s'obté aplicant la ponderació indicada.
- Capacitat de resoldre problemes algorísmics de dificultat mitjana a partir d'una especificació clara, i d'implementar les solucions en un llenguatge de programació imperatiu.
- Coneixement dels mecanismes bàsics d'estructuració de programes (modularització, encapsulació, tipus abstractes de dades, classes) i capacitat per aplicar-los a problemes petits-mitjans (uns pocs mòduls)
- Coneixement dels elements de programació orientada a objectes (classes, objectes, herència, mecanismes d'execució).
- Familiaritat amb un llenguatge imperatiu, preferentment orientat a objectes.
- Capacitat d'usar i programar estructures de dades senzilles (taules, estructures lineals, diccionaris) en aquest llenguatge.
- Capacitat d'usar llibreries en el aquest llenguatge.
- Domini d'estratègies bàsiques per trobar i corregir errors en mòduls senzills.