Full text
Disseny i implementació d'una aplicació web per a gestionar inscripcions d'una entitat de lleure. Memòria. Alumne: Pau Carbonell Vives Directora: María José Casany Guerrero Especialitat d’Enginyeria del Software 2 de Juliol del 2019
Resum El món de la informàtica i de l’educació en el lleure acostumen a anar cadascú pel seu costat i no barrejar-se gaire, però amb aquest projecte intentaré unir les dues realitats. Ho faré portant a terme un disseny i implementació del sistema d’inscripcions d’una entitat de lleure i oferint eines als organitzadors de l’entitat per tal de poder gestionar les dades dels infants recollides. El principal objectiu del projecte és que el sistema permeti a les famílies que volen participar de l’entitat realitzar una inscripció de forma remota i senzilla, i alhora, que els organitzadors de l’entitat puguin consultar aquestes dades i fer gestions habituals del dia a dia de l’entitat també de forma remota i senzilla. He posat un èmfasi especial en fer que el sistema sigui segur i intuïtiu. Per tal d’aconseguir-ho he fet un estudi en profunditat del funcionament actual de l’entitat de lleure. També he tingut en compte les normatives existents sobre protecció de dades. El sistema resultat d’aquest treball final de grau és una aplicació web realitzada amb el framework Django allotjada a la plataforma Heroku. pàg. 2
Resumen El mundo de la informática y de la educación en el ocio suelen ir cada uno por su lado y no mezclarse mucho, pero con este proyecto intentaré unir las dos realidades. Lo haré llevando a cabo un diseño e implementación del sistema de inscripciones de una entidad de ocio y ofreciendo herramientas a los organizadores de la entidad con el fin de poder gestionar los datos de los niños recogidos. El principal objetivo del proyecto es que el sistema permita a las familias que quieran participar de la entidad realizar una inscripción de forma remota y sencilla, y al mismo tiempo, que los organizadores de la entidad puedan consultar estos datos y hacer gestiones habituales del día a día de la entidad también de forma remota y sencilla. He puesto especial énfasis en hacer que el sistema sea seguro e intuitivo. Para conseguirlo he hecho un estudio en profundidad del funcionamiento actual de la entidad de ocio. También he tenido en cuenta las normativas existentes sobre protección de datos. El sistema resultado de este trabajo final de grado es una aplicación web realizada con el framework Django alojada en la plataforma Heroku. pàg. 3
Abstract The world of computer science and free time education usually goes each one by their side and does not mix much, but with this project I will try to unite the two realities. I will carry out a design and implementation of the registration system of a free time entity and offer tools to the organizers of the entity in order to be able to manage the data of the collected children. The main objective of the project is that the system allows families that want to participate in the entity to make a registration remotely and simple, and at the same time, that the organizers of the entity can consult this data and carry out daily arrangements of the day to The day of the entity also remotely and easily. I have put a special emphasis on making the system safe and intuitive. In order to achieve this, I have done an in-depth study of the current functioning of the free time entity. I have also taken into account the existing regulations on data protection. The system resulting from this final degree project is a web application made with the Django framework hosted on the Heroku platform. pàg. 4
Glossari Totes aquestes definicions són en el món de l’educació en el lleure amb infants, pot ser que en un altre context tinguin un significat diferent o altres matisos. Educació en el lleure- L'educació en el lleure és un conjunt d'activitats que es duen a terme en el temps lliure dels infants i/o adolescents amb la finalitat d'aprendre i adquirir competències i habilitats. Sempre fent-los protagonistes de la seva pròpia vida, actius i participatius socialment. També és important remarcar que es porta a terme fora de l'àmbit familiar i escolar. És considerada una opció d'educació no formal. Entitat de lleure- Entitat que utilitza el lleure en el seu dia a dia. Possibles exemples són: esplais, caus, casals de joves o centres excursionistes. Lleure- Temps lliure que una persona té per a fer alguna cosa no relacionada amb el treball pagat, responsabilitats adquirides ni accions com menjar o dormir. Infant- Persona que participa de les activitats organitzades per una entitat de lleure. Normalment aquelles que són menors de 12 anys. Es fa servir aquest terme per intentar donar-li un gènere neutre. Jove- Persona que participa de les activitats organitzades per una entitat de lleure. Normalment aquelles que són majors de 12 anys. Es fa servir aquest terme per intentar donar-li un gènere neutre. Famílies/tutors- Són aquelles persones que legalment responen per un infant o jove. Normalment són pares o mares però cal tenir en compte opcions més diverses com família més llunyana en cas que els pares no estiguin presents en la vida de l'infant o tutors legals en casos d’un CRAE (centre residencial d’acció educativa). Organitzador d’una entitat- Persona que activament organitza activitats i participa del funcionament d’una entitat de lleure. Monitor/a- Organitzador d’una entitat de lleure que és un esplai. Esplai- És una entitat de lleure formada per monitors i monitores voluntaris i sense ànim de lucre que treballa per a l'educació en i pel lleure d'infants i joves. En el cas de l’entitat que tractarem també cal destacar que és laica però no tots els esplais ho són. Un esplai té llibertat per tal de crear el projecte educatiu que vol seguir. Cap/Quel·la- Organitzador d’una entitat que és un agrupament escolta. Cap es fa servir per als organitzadors masculins i quel·la pels femenins. Agrupament escolta- És una entitat formada per caps i quel·les voluntaris i sense ànim de lucre que treballen per a l'educació en i pel lleure d'infants i joves. Els agrupaments escoltes segueixen el projecte educatiu de l'escoltisme. pàg. 5
Equip d’organitzadors- És el grup de persones que són organitzadors de l’entitat. S’organitzen en forma d’assemblea i acostumen a tenir una organització bastant horitzontal. Grup- Infants o joves que estant agrupats per edat (normalment dos anys), fan les activitats junts i tenen com a referents els mateixos organitzadors i els preparen les activitats. Anàlisi de la realitat- L’anàlisi de la realitat de l’entitat consisteix a prendre consciència de l’estat de l’entitat i del seu entorn en un moment determinat, per a detectar les seves necessitats, quins aspectes funcionen bé i quines podrien potenciar-se. És una eina molt comuna per tal de realitzar projectes de curs i de centre. Projecte educatiu de curs- El projecte educatiu de centre (PEC) és un document que inclou els objectius organitzatius i pedagògics que es planteja l’entitat en un curs en concret. Projecte educatiu de centre- El projecte educatiu de centre (PEC) és un document que inclou els trets d'identitat del centre, els principis pedagògics i els principis organitzatius. Especificitats alimentàries- Qualsevol classe de necessitat relacionada amb el menjar que sigui important. Per exemple: al·lèrgies, intoleràncies, vegetarianisme, veganisme, etc. pàg. 6
Índex 1. Context 12 1.1 Introducció 12 1.2 Actors implicats 12 2. Estat de l’art 14 3. Formulació del problema 16 3.1 Presentació del problema 16 3.2 Objectius del treball 17 4. Abast 18 4.1 Abast de l’aplicació web 18 4.2 Riscos 18 5. Metodologia i rigor 20 5.1 Mètodes de treball 20 5.2 Eines de seguiment 20 5.3 Mètodes de validació 21 6. Calendari 22 7. Descripció de les tasques 23 7.1 Investigació de l’estat de l’art del projecte 23 7.2Estudi i posada en contacte amb les eines a utilitzar 23 7.3 Disseny del sistema 23 7.4 Implementació 23 7.4.1 Lògica de la part centrada en les famílies 23 7.4.2 Lògica de la part centrada en els organitzadors/es de les entitats 24 7.4.3 Proves 24 7.4.4 Disseny de l’interfície 24 7.4.5 Millores d'usabilitat del sistema 24 7.4.6 Ampliacions del projecte 24 7.5 GEP 25 7.6 Realització de la memòria 25 7.7 Preparació de la defensa 25 8. Valoració d’alternatives i pla d’acció 26 8.1 Sobreestimació del treball 26 8.2 Subestimació del treball 26 8.3 Actors no satisfets 26 9. Pressupost 28 9.1 Identificació dels costos 28 9.1.1 Recursos humans 28 pàg. 7
9.1.2 Recursos no humans 29 9.2 Control de gestió 30 9.2.1 Desviacions 30 9.2.2 Imprevistos 31 9.3 Pressupost total 31 10. Competència de sostenibilitat 32 10.1 Autoavaluació del domini actual de la competència de sostenibilitat 32 10.2 Dimensió Econòmica de la matriu de Sostenibilitat 32 10.3 Dimensió Ambiental de la matriu de Sostenibilitat 33 10.4 Dimensió Social de la matriu de Sostenibilitat 33 11. Requisits 34 11.1 Requisits funcionals 34 11.2 Requisits no funcionals 35 12. Disseny del sistema 36 12.1 Visió general del sistema 36 12.2 Patrons emprats 37 12.3 Diagrama de components dels sistema 39 12.4 Disseny de base de dades 40 12.4.1 Infants 40 12.4.2 Grups 41 12.5 Disseny de la documentació generada 42 12.6 Disseny de la interfície 44 12.6.1 Part de l’Aplicació destinada a les famílies 44 12.6.2 Part de l’aplicació destinada als organitzadors de l’entitat de lleure 46 12.7 Disseny del sistema d’inscripció 50 13. Implementació 53 13.1 Tecnologies 53 13.2 Frameworks 54 13.3 Altres aspectes rellevants de la implementació 54 14. Proves 56 14.1 Proves dintre de Django 56 14.1.1 Proves funcionals 56 14.1.2 Proves de sistema 56 14.2 Proves dels voluntaris 57 14.2.1 Famílies 57 14.2.2 Organitzadors 57 15. Planificació final i desviacions respecte planning inicial 59 16. Lleis i regulacions 61 16.1 GDPR 61 pàg. 8
16.2 Altres lleis i regulacions 62 17. Conclusions 63 17.1 Revisió dels objectius 63 17.2 Justificació competències tècniques 64 17.3 Treball futur 65 18. Referències 66 19. Annexos 68 A. Descripció de les proves realitzades 68 B. Respostes de les famílies i monitors 73 Enviament 1 de les famílies 73 Enviament 1 als organitzadors 76 Enviament 2 a les famílies 78 Enviament 2 als organitzadors 79 pàg. 9
3. Formulació del problema 3.1 Presentació del problema El meu projecte neix de múltiples anys de treball dintre de la meva entitat de lleure i de la voluntat d’aporta una millora TIC en alguns aspectes del funcionament de l’entitat. Des de ja feia anys que havia discutit per sobre la possibilitat de modernitzar les inscripcions però mai havia arribat a res, ja que no tenia els coneixements necessaris per a portar-ho a terme. L'estiu del 2018 vaig fer un curs per tal d'obtenir el títol de director de lleure i havia de portar a terme un projecte per la meva entitat. El projecte que vaig triar va ser el de modernitzar les inscripcions. Ho vaig portar a terme fent servir una extensió de Google Drive anomenada Ultradox. Aquesta extensió em permetia generar fitxes en format pdf, guardar-les al compte de Drive, enviar correus, generar un Excel amb les dades i recollir la informació a través d'un formulari. Va funcionar bé en les inscripcions de l'entitat aquest primer any però hi va haver alguns problemes i hi havia dubtes sobre algun dels seus funcionaments. Per exemple, el sistema és fràgil: l'Excel que genera no es pot modificar, ja que llavors deixa de funcionar tot el sistema i si alguna resposta és massa llarga, el document es genera de forma estranya. També és molt rígid i complicat de modificar: si vols fer un canvi, has de tornar a introduir tots els noms de les preguntes del formulari i el sistema no és gaire intuïtiu. A més a més, considerem que guardar les fitxes en un compte de Google Drive no és prou segur per les dades que estem tractant. També és important tenir en compte que és un sistema de pagament i que per tant hi ha una marca d'aigua en el document generat i tenim un límit en el nombre d'inscripcions que podem fer cada mes. En resum, el sistema que fem servir utilitza una plataforma que no està pensada per fer el que volem. Per aquesta raó i aprofitant que tenia l'oportunitat de portar a terme un projecte com aquest vaig decidir fer el meu projecte sobre un sistema a mida per inscripcions en entitats de lleure. A més a més vaig veure l'oportunitat d'afegir funcionalitats de gestió de les dades dels infants que simplificarien processos dintre l'entitat. La complexitat del projecte no està en les diferents funcionalitats que té i com implementar-les, sinó en qui l'utilitza. Les persones que l'utilitzaran són famílies que volen una gestió ràpida i senzilla i per tant la inscripció ha de ser intuïtiva i lleugera. L'altre tipus d'usuari són els organitzadors de l'entitat, aquests usuaris utilitzen funcionalitats més complicades del projecte però segurament no tindran una formació específica per fer servir el sistema. És per això que és important que el sistema des del punt de vista de la gestió de dades sigui molt intuïtiu i no generi confusions en la seva utilització. Per tal de portar a terme el projecte he realitzat una enquesta a les famílies [14] i he fet múltiples reunions amb els meus companys i companyes organitzadors/res de l’entitat de lleure. pàg. 16
3.2 Objectius del treball En aquesta part estudiarem els objectius del treball que hem dividit en dos grans eixos: ● Eix 1: Utilitat per a l’entitat de lleure. ○ Oferir a l’entitat una manera de recollir les dades i permisos dels infants que necessiten. ○ Oferir als organitzadors/res de l’entitat una manera de consultar les dades i permisos dels infants ○ Oferir als organitzadors/res de l’entitat una manera de fer gestions útils i comunes amb les dades dels infants. ● Eix 2: Usabilitat per a famílies i entitat: ○ Oferir a les famílies una inscripció senzilla, intuïtiva i ràpida. ○ Oferir a les famílies l'oportunitat de no haver de desplaçar-se al nostre local per fer la inscripció. ○ Oferir als organitzadors de l’entitat una forma de recollir les dades dels infants que no els generi més feina. ○ Oferir als organitzadors de l’entitat consultes de dades d’infants que es puguin realitzar a través d’un mòbil o ordinador de forma senzilla i intuïtiva. ○ Oferir als organitzadors de l’entitat gestions de dades d’infants que es puguin realitzar a través d’un mòbil o ordinador de forma senzilla i intuïtiva. pàg. 17
4. Abast 4.1 Abast de l’aplicació web L’aplicació té dues funcions principals: recollir la informació de les famílies per tal de realitzar una inscripció i gestionar aquestes dades per tal que els organitzadors de l’entitat puguin realitzar accions quotidianes de l’entitat. Hi ha diverses funcions que l’aplicació també podria realitzar però no s’implementaran: Gestionar dades dels organitzadors de l’entitat, gestionar dades de l’entitat, gestionar informació de federacions d’organitzacions, gestionar informació d’activitats, gestionar documentació interna de l’entitat, gestionar els dubtes de les famílies i gestionar inscripcions que no siguin de tot el curs (inscripcions d’una sortida de cap de setmana o d’activitats d’estiu). El sistema es podrà fer servir en qualsevol dispositiu que disposi de connexió a internet i pugui utilitzar un navegador. Està principalment pensat per utilitzar-ho en un ordinador però també es realitzaran proves i es procurarà que funcioni en tablets i mòbils. Provaré l’aplicació en els navegadors i sistemes operatius d’ordinadors, mòbils i tablets més comuns amb l’ajuda de famílies i organitzadors de l’entitat voluntaris. 4.2 Riscos Possibles obstacles que em puc trobar en el disseny, desenvolupament i posada en funcionament del sistema podrien ser: ● Poc coneixement de les tecnologies a utilitzar: El framework que faig servir no l'he utilitzat mai però he tingut en compte que estigui establert i que tingui una bona documentació. Hi ha altres eines que sí que he utilitzat però no amb profunditat amb les que hauré de fer una feina d'investigació. Però, considero que vaig amb temps i que puc adquirir aquests coneixements. ● Dificultats en el disseny gràfic: Considero que hauré de fer un treball especial en aprendre a fer que la pàgina web sigui agradable, ja que no he hagut de fer aquesta feina mai. He buscat companys i amics que tinguin coneixements en aquest tema perquè em puguin assessorar. ● Complicacions de la usabilitat: En ser un usuari expert pel fet d'haver estudiat enginyeria informàtica, tenir un interès especial en la informàtica i ser el desenvolupador la meva opinió sobre la usabilitat pot estar esbiaixada. Per aquesta raó necessitaré opinions externes per tal de saber si el sistema és usable o no. ● Que les famílies no tinguin com fer la inscripció: Cap la possibilitat que una família no sàpiga com omplir el formulari o no disposi dels recursos necessaris per a fer-ho. Però, segons l'estadística realitzada per l'Idescat sobre equipament TIC a la llar [15] un pàg. 18
81,2% de les llars a Catalunya disposen d'ordinador i connexió a internet així que estem obligant a un 18,8% de les famílies a buscar alguna solució fora de casa seva. En canvi, tal com ho fèiem actualment totes les famílies s'havien de desplaçar fins al nostre local i tenint en compte que un 35,63% de les nostres famílies no viuen a la mateixa població [16] també els suposa agafar el cotxe i trobar aparcament. Per tal considerem que és molt més accessible poder fer-ho des de casa que fer les famílies desplaçar-se fins al nostre local. pàg. 19
5. Metodologia i rigor 5.1 Mètodes de treball Donades les característiques del projecte a realitzar s’ha decidit emprar metodologies àgils. En ser l'únic desenvolupador hi ha pràctiques i principis de la metodologia àgil que són més complicats d'aplicar però sí que puc aprofitar moltes idees i conceptes. He buscat i hi ha metodologies agile per un sol desenvolupador [17] i he inclòs part dels seus principis enla meva forma de treballar. Com per exemple, reservar un temps per fer una reunió de retrospectiva encara que sigui jo sol per intentar fer la mateixa feina o tenir un control de les feines fetes i que queden per fer encara que no ho hagi de compartir amb companys de feina. Funcionaré a través d’iteracions molt curtes que es completaran cada setmana o quan hagi completat la feina proposada. Cada iteració serà una llista tancada de tasques a realitzar que poden variar des d'investigar un tema fins a implementar una funcionalitat. Espero durant la llargada del projecte anar millorant la meva capacitat de previsió a les iteracions i cada vegada ajustar millor la durada de les tasques que em proposo. Per tal de poder controlar el meu grau d'avanç primer de tot centraré la meva atenció en la part lògica del projecte com pot ser la recopilació de dades, la generació de documents o la base de dades. Un cop tinguem els pilars de l'aplicació passarem a fer que sigui usable per tal de complir un dels nostres principals objectius com hem anat dient durant el document. Després passarem a fer que la imatge de la pàgina web sigui més agradable. Un cop hagi aconseguit tot això i complim l'abast que m'he proposat en l'apartat anterior serà el moment de fer una anàlisi de la feina feta, del temps restant i de l'estat del projecte per tal de decidir quines altres funcionalitats tirem endavant i/o si treballem en la usabilitat o la imatge. 5.2 Eines de seguiment Per portar el terme el projecte utilitzaré BitBucket com a repositori de codi per tal de poder controlar el codi d'una forma més segura i poder afegir funcionalitats a través de branques sense posar en perill la integritat del codi original. També utilitzaré Heroku per a desplegar el projecte. Amb les persones amb les quals hagi de contactar per temes del projecte i amb les persones que m’ajuden a fer les proves faré servir el gestor de correu Gmail per contactar amb elles. Per tal de fer reunions amb la meva tutora també utilitzaré Skype tot i que si és possible, faré les reunions en persona. Tal i com he explicat abans funcionaré a través d'iteracions molt curtes (1 setmana) on cada final de setmana faré una anàlisi del treball que he fet durant la setmana i prepararé la següent. D'aquesta manera puc regular el meu ritme de feina depenent de com vegi la pàg. 20
setmana i puc anar afegint funcionalitats de forma controlada i poder modificar els meus objectius de forma conseqüent. 5.3 Mètodes de validació Ja que sóc l'únic desenvolupador, no tinc companys que em puguin revisar el codi i per tant haig de fer un molt bon treball amb les proves. Per tant utilitzo el sistema de proves propi de Django per controlar que no hi ha cap problema però també utilitzo una eina per calcular la cobertura de les proves en el meu codi per controlar que estic arribant a tot arreu. A part, utilitzo una eina anomenada Selenium per tal de simular interaccions humanes en la pàgina web. També tinc previst comptar amb l'experiència de persones de la meva entitat de lleure (monitors i famílies) per tal que facin proves manuals i m'indiquin que no funciona o que creuen que no és prou clar o millorable. També aniré revisant els requisits i bon enfocament del projecte amb reunions periodiques amb la meva tutora. pàg. 21
6. Calendari En el meu cas el projecte té una durada d'aproximadament uns 6 mesos. Començant des de l'1 de gener del 2019 fins al 30 de juny de 2019. El projecte comença amb una investigació de la realitat de l'estat de l'art del meu projecte i segueix amb un estudi i una posada en contacte amb les eines a utilitzar durant el projecte. Després entraré en la fase de disseny i implementació del projecte i acabaré amb una fase de realització de la memòria i preparació de la defensa. Totes aquestes fases seran explicades amb més profunditat en l'apartat de descripció de tasques. Anticipo que la meva dedicació diària en hores al projecte serà variable. Per exemple, durant el mes de Gener, al començament de Febrer i durant el Juny ja que no tinc classes de la universitat, li podré dedicar més hores. També durant la setmana li podré un nombre diferent d’hores depenent de si aquell dia treballo o tinc algun compromís. Em proposo a mi mateix cada dia dedicar-li algun moment del dia encara que tingui molta feina encara que només sigui per preparar la feina de la setmana. Segons la universitat [18] , tenint en compte que el TFG són 18 crèdits i que la càrrega s’estima de 30 hores per crèdits, el projecte ocuparà 540 hores. Si la duració del projecte són aproximadament 25 setmanes, aixó vol dir que cada setmana li hauré de dedicar 21,6 hores. Per tant aspiro cada setmana a dedicar-li al voltant d’aquestes 21,6 hores intentant en les èpoques on tinc més temps dedicar-li més hores. Existeixen diverses dates claus que hauré de tenir en compte com les entregues de GEP i el límit per la reunió de seguiment. També cal tenir en compte reunions periòdiques amb la meva tutora, intentaré cada mes posar-la al dia del projecte. pàg. 22
7. Descripció de les tasques Les tasques estan presentades de forma seqüencial en el temps menys i depenen de totes les anteriors menys quan sigui especificat el contrari. Les duracions de les tasques són orientatives i depenen de l'evolució del projecte. 7.1 Investigació de l’estat de l’art del projecte El primer pas per portar a terme el projecte és analitzar quines altres solucions existeixen i decidir si cal crear-ne una de nova o aprofitar una solució existent tal com hem parlat en l'apartat de l'estat de l'art del projecte. També és el moment per fer una primera anàlisi sobre els requisits dels actors, és a dir, les famílies i els organitzadors de l'entitat. Aquesta tasca comença en la primera setmana de gener i acaba a mitjans de la primera setmana de gener, per tant unes 10 hores. 7.2Estudi i posada en contacte amb les eines a utilitzar En aquest pas analitzaré quines són les eines a utilitzar i farem una comparació de les millors opcions. Un cop hagi fet l'estudi prendre una decisió sobre quines eines utilitzar. Ja he parlat d'aquestes eines a l'apartat de metodologia. La segona part d'aquest pas és començar a fer petits passos en les eines en les quals no em sento prou segur per a començar a treballar en el següent pas. Aquesta tasca comença a mitjans de la primera setmana de gener i acaba en la segona setmana de gener, per tant unes 20 hores. 7.3 Disseny del sistema En aquest pas dissenyaré el projecte en si. Haig de fer un treball d'anàlisi de quines són les funcionalitats necessàries i quina és la seva dificultat i importància per tal d'ordenar-les i prioritzar-les en el meu pla. També haig de tenir en compte l'estudi que he fet dels requisits dels actors. Finalment hauré de pensar per sobre com estructuraré la meva aplicació encara que pugui modificar-ho més endavant. Aquesta tasca comença a la segona setmana de gener i acaba en la tercera setmana de gener. Per tant, unes 20 hores. 7.4 Implementació En aquest pas portaré a terme la part lògica del projecte. Per tal d'explicar-la l'he dividit en diferents parts. Les següents subtasques estan ordenades de forma cronològica a no ser que s'especifiqui el contrari. Aquesta tasca comença a la tercera setmana de gener i acaba en l'última setmana de maig, per tant unes 330 hores tenint en compte que es comparteix amb el pas de GEP. 7.4.1 Lògica de la part centrada en les famílies En aquest pas implementaré la part lògica del projecte focalitzada a les funcionalitats utilitzades per les famílies. He decidit començar per aquesta part, ja que la següent part no pàg. 23
té sentit sense les dades que ens proporcionen les famílies. Tot i això sí que hi haurà a vegades paral·lelismes entre aquesta part i la següent, ja que hi ha funcionalitats que estan molt lligades. Aquesta subtasca comença a la tercera setmana de gener i acaba a la tercera setmana de febrer, per tant unes 90 hores. 7.4.2 Lògica de la part centrada en els organitzadors/es de les entitats En aquesta part implementaré la part lògica del projecte focalitzada a les funcionalitats utilitzades pels organitzadors/res de les entitats. Aquesta subtasca comença a la tercera setmana de febrer i acaba a la segona setmana de març, per tant unes 60 hores. En aquesta part prevec tenir menys feina que en la part anterior i dedicar-li menys hores pel fet de tenir un major coneixement del funcionament de les eines i tenir una estructura a lloc. Però, el fet que sigui durant la tasca de GEP fa que consideri que tindrà una durada semblant a la tasca anterior. 7.4.3 Proves En aquesta part faré un treball més intens de proves a l'aplicació. Tal com he explicat en la metodologia, al treballar sol és important tenir un control molt estricte de les proves. Durant la implementació he anat dissenyant proves relacionades en el codi i en aquesta part seguiré treballant en aquest tema però també dissenyaré i implementaré proves automatitzades en el navegador. Finalment demanaré ajuda a famílies i organitzadors/res de la meva entitat per tal de provar les seves respectives parts del projecte i que hem donin un feedback de la seva facilitat d'utilització, errors comuns i disseny. Aquesta subtasca comença a la segona setmana de març i acaba a la primera setmana d'abril, per tant unes 40 hores. 7.4.4 Disseny de l’interfície En aquesta part dissenyaré i implementaré la part visual de l'aplicació fent servir el feedback de les famílies i organitzadors. Aquesta part es farà en part paral·lelament amb la següent subtasca, ja que hi haurà parts molt lligades. Aquesta subtasca comença a la primera setmana d'abril i acaba a la tercera setmana d'abril, per tant unes 40 hores. 7.4.5 Millores d'usabilitat del sistema En aquesta part milloraré la usabilitat del projecte fent servir el feedback de les famílies i organitzadors. Aquesta subtasca comença a la tercera setmana d'abril i acaba a la segona setmana d'abril, per tant unes 40 hores. 7.4.6 Ampliacions del projecte En aquesta part em reservo temps per portar a terme propostes i correccions que hagin proposat les famílies i organitzadors i per afegir funcionalitats que hagin quedat fora del pla si hi ha temps. Aquesta subtasca comença a la segona setmana d'abril i acaba a la quarta setmana d'abril, per tant unes 60 hores. pàg. 24
7.5 GEP En aquesta part realitzaré l'assignatura GEP i entregaré tots els documents necessaris que m'ajuden a fer la memòria final. Aquesta part es realitza paral·lelament amb la implementació del projecte i farà que el ritme de desenvolupament disminueixi per tal d'acomodar la feina. Aquesta tasca comença a mitjans de la tercera setmana de febrer i acaba a finals de la tercera setmana de març, per tant unes 30 hores. 7.6 Realització de la memòria En aquesta part adaptaré, milloraré i ampliaré la feina feta a GEP per tal de realitzar la memòria del projecte. Aquesta tasca comença a la primera setmana de juny i acaba a la tercera setmana de juny, per tant unes 40 hores. 7.7 Preparació de la defensa En aquesta part prepararé la meva defensa del projecte davant del tribunal. Aquesta tasca comença a la tercera setmana de juny i acaba a la quarta setmana de juny., per tant unes 40 hores. pàg. 25
10. Competència de sostenibilitat 10.1 Autoavaluació del domini actual de la competència de sostenibilitat Considero que tinc un coneixement elevat sobre la competència de sostenibilitat en formar part d’una entitat de lleure que tracta activament temes com la sostenibilitat, decreixement, inclusivitat, i altres temes relacionats. A més a més, aquests coneixements es transfereixen fàcilment en el meu projecte, ja que està estretament relacionat amb entitats de lleure i en especial la meva. Tinc molts coneixements teòrics adquirits de formacions i debats realitzats dins del món de l’educació del lleure i també he transmès aquests coneixements amb activitats a infants i joves. També he hagut d’aplicar aquests coneixements en el dia a dia de l’entitat com a organitzador d’aquesta i transmetre els meus coneixements als organitzadors/res més novells. Però, mai he hagut d’aplicar aquests coneixements en un projecte d’enginyeria real i per tal em falta experiència en aquest àmbit. Considero que podré transmetre part dels meus coneixements però hauré de fer un treball intern per adaptar-los. Per exemple, en la meva entitat de lleure tots tenim una ideologia semblant, sobretot amb temes relacionats en sostenibilitat, però això no és representatiu de la societat actual o el que em trobaré realitzant el projecte i per tant potser hauré de replantejar part de les meves idees. Considero molt important incloure temes relacionats en la sostenibilitat en el dia a dia de la nostra educació, ja que les nostres decisions tindran un impacte molt important en el nostre voltant: en el medi ambient, en les persones que utilitzin els nostres projectes i també en les que no l’utilitzin però es vegin implicades d’alguna manera. Crec que la universitat fa un bon treball en aquest tema però que hauria d’incloure en més aspectes la discussió de com afecta el que estem fent al nostre entorn i que podem fer per no només fer un producte que doni bons resultats, eficient i barat sinó que també tingui en compte el seu entorn i que el millori. 10.2 Dimensió Econòmica de la matriu de Sostenibilitat La primera reflexió que vull fer va lligada al cost que acabo de calcular amb el pressupost. Considero que és un cost molt elevat, sobretot la part de costos humans, per un projecte tan relativament petit. Em fa pensar que si hagués de convertir aquest projecte en competitiu, seria complicat de no només treure beneficis sinó també cobrir costos. Calcular els costos humans també m’ha fet donar compte de tot el temps i recursos que li estic dedicant al projecte i em crea una sensació d’orgull de tot l’esforç que li estic dedicant. Actualment aquest problema té un impacte econòmic que a primera vista sembla petit però que quan ens hi fixen es fa més gran. El cost més directe són tots els papers, tinta i bolis utilitzats per escriure imprimir i escriure a les fitxes que van a càrrec de l'entitat de lleure. pàg. 32
Però, un altre cost que costa més d’apreciar és el que es desprèn del fet que les famílies hagin de desplaçar-se fins al local de l’entitat per tal de fer la inscripció. Això no només els suposa un cost de temps sinó també un cost de gasolina si han d’agafar el cotxe i trobar aparcament o fins i tot haver de sortir de treballar abans per tal de venir. Amb la solució que proposo ho poden fer sense desplaçar-se de casa i quan vulguin però és veritat que els obliga a tenir un dispositiu per fer la inscripció i obliga a l’entitat a destinar uns diners anualment en allotjar la pàgina web. 10.3 Dimensió Ambiental de la matriu de Sostenibilitat La implementació del meu projecte no tindrà un impacte mediambiental més gran que un ús lleugerament més intens d’energia. En canvi, actualment hi ha un impacte considerablement gran, ja que hi ha un ús intensiu de paper i de tinta que disminuiria quan no s’imprimeixin les fitxes cada any. Un altre impacte mediambiental important del problema que vull abordar és el transport, gairebé sempre en vehicle particular, que estan obligades algunes famílies a fer, ja que viuen fora de la ciutat de l’entitat per tal de venir a fer la inscripció. En donar l’oportunitat de fer-ho des de casa eliminem la contaminació que podrien fer molts d’aquests vehicles. Considero que la meva solució redueix substancialment la petjada ecològica. 10.4 Dimensió Social de la matriu de Sostenibilitat Aquest projecte crec que m’aportarà sobretot experiència en àmbits en els quals no estic acostumat a treballar i m’obligarà a sortir de la meva zona de confort per tal de fer un bon treball. El meu projecte considero que té un alt contingut social, ja que tracta exclusivament amb dades de persones i serà utilitzat per una entitat amb un alt contingut social. Per aquesta raó crec molt important ser molt conscient de l’impacte social que té i tenir en compte que l’entitat a la qual representa té uns valors i idees molt arrelats que el projecte ha de representar. Per exemple, no tindria sentit que com a entitat ens omplíssim la boca de feminisme i que després donéssim un tracte preferencial als pares per davant de les mares o que parlem que som inclusius i que després no tinguem en compte famílies que no tinguin una estructura tradicional. Actualment es té bastant en compte aquests aspectes però igualment vull fer un treball per tal de ser com més inclusius millor. Un altre aspecte en què el meu projecte millora la qualitat de vida respecte a com funciona actualment és evitant que les famílies hagin de dedicar-li un temps extra desplaçant-se al local a les hores que nosaltres decidim i que per tant puguin realitzar la inscripció quan els hi sigui més còmode i des de casa seva. Considero que no hi ha una necessitat urgent del meu projecte en la realitat de l'educació del lleure i que podria seguir funcionant com fins ara. Tot i això, com explicava en l'apartat de context, considero que hi ha una manca de coneixement i confiança i fins i tot una mica d'hostilitat envers les noves tecnologies en el món de l'educació en el lleure. Per tant considero que sí que és important introduir projectes semblants al meu per tal de renovar la imatge que tenen les noves tecnologies i aconseguir ser un referent també en aquest àmbit. pàg. 33
11. Requisits L'objectiu principal del projecte és el disseny i implementació d'un sistema a mida perquè una entitat de lleure pugui gestionar les inscripcions d'infants i joves en aquesta entitat. El sistema també permetrà la gestió de les dades dels infants per simplificar els diferents processos de l'entitat. 11.1 Requisits funcionals Tenint en compte el projecte des del punt de vista de cada actor, el sistema ha de complir els següents requisits funcionals en forma d'històries d’usuaris: ● Com a família vull poder fer la inscripció omplint un formulari electrònic per tal de no haver de desplaçar-me al local de l’entitat per realitzar-la. ● Com a família vull poder fer la inscripció sense introduir totes les dades un altre cop si ja he fet la inscripció l'any passat per tal que les meves dades es reaprofitin. ● Com a família vull rebre informació sobre els pròxims passos i si s'ha realitzat correctament la inscripció per tal tenir un control del procés d’inscripció. ● Com a família vull poder assegurar que les seves dades siguin correctes per tal d’eliminar possibles errors en les meves dades. ● Com a organitzador de l’entitat vull recollir informació sobre un infant a través d’un formulari per tal de poder mantenir un control dels infants apuntats. ● Com a organitzador de l’entitat vull recollir informació sobre si un infant o jove vindrà aquest any per tal de saber quants infants esperar a les activitats. ● Com a organitzador de l’entitat vull generar un document pdf amb la informació de l’infant o jove per tal de centralitzar la seva informació en un lloc. ● Com a organitzador de l’entitat vull poder descarregar aquests documents de la forma més convenient (tots, un, dels infants que hagin nascut en un any concret, ...) per tal de controlar allà on estigui les seves dades. ● Com a organitzador de l’entitat vull generar i descarregar un document Excel amb les dades dels infants per tal de generar un document manipulable amb les dades dels infants. ● Com a organitzador de l’entitat vull consultar, modificar i eliminar les dades d’un infant en concret per tal de poder gestionar les seves dades. ● Com a organitzador de l’entitat vull generar i descarregar documents amb dades dels infants (llistes de contacte, especificitats alimentàries, etc.) per tal de facilitar i automatitzar accions quotidianes de l’entitat. ● Com a entitat vull recollir les dades sense errors ni pèrdues per tal de tenir un control dels infants i joves de l’entitat. ● Com a entitat vull simplificar la gestió de diferents accions relacionades amb els infants i joves a través de la utilització del sistema per tal de facilitar la feina dels organitzadors. pàg. 34
11.2 Requisits no funcionals Tenint en compte el projecte des del punt de vista de cada actor, el sistema ha de complir els següents requisits no funcionals descrits en una forma semblant a Volere: ● Formulari senzill i intuïtiu ○ Descripció: Que el formulari sigui senzill i intuïtiu. ○ Justificació: Un formulari senzill i intuïtiu portarà a més inscripcions i menys dubtes. ○ Originador: Famílies ○ Criteri de compliment: Les famílies voluntàries consideren que és senzill i intuïtiu. ● Seguretat i privacitat. ○ Descripció: Tenir seguretat que les dades s’estan tractant de forma segura i seguint la GDPR (General Data Protection Regulation) ○ Justificació: Hem de cenyir-nos a la legalitat existent i protegir les dades de les famílies. ○ Originador: Famílies ○ Criteri de compliment: Complir les normatives existents i fer tot el possible per protegir les dades de les famílies. ● Funcionalitats fàcils i intuïtives ○ Descripció: Poder accedir a totes les funcionalitats de forma fàcil i intuïtiva ○ Justificació: Funcionalitats fàcils i intuïtives portaran a una millor gestió dels organitzadors de les tasques realitzades. ○ Originador: Organitzadors de l’entitat ○ Criteri de compliment: Els organitzadors voluntaris ho consideren senzill i intuïtiu. ● Còpia de seguretat ○ Descripció: Poder generar còpies de seguretat de les dades ○ Justificació: Poder-les generar fa que el sistema sigui més resistent a fallades i permet una millor gestió. ○ Originador: Organitzadors de l’entitat ○ Criteri de compliment: Podem realitzar còpies de seguretat de les dades. ● Bona imatge ○ Descripció: Donar una bona imatge de l'ús de les noves tecnologies. ○ Justificació: Som un exemple pels infants, joves i famílies i per tal hem de donar una bona imatge també en l'ús de les noves tecnologies. ○ Originador: Entitat ○ Criteri de compliment: Fer un ús responsable de les noves tecnologies. ● Dades segures ○ Descripció: Assegurar que les dades que reben estiguin segures ○ Justificació: Com a entitat hem de controlar les dades que tenim. ○ Originador: Entitat ○ Criteri de compliment: Les dades que té l’entitat estan protegides. pàg. 35
12. Disseny del sistema 12.1 Visió general del sistema Aquesta aplicació serà executada principalment en ordinadors però també cap la possibilitat que es faci servir des de tablets o mòbils. Els diferents components del sistema es presenten en la figura següent: [2. Visió general del sistema] En ser una aplicació web lleugera he decidit que el hosting sigui en la plataforma al núvol Heroku, ja que dóna moltes facilitats a l’hora de fer el deploy gràcies a la seva integració amb el software de control de versions Git. A més té una base de dades fàcil d’integrar amb l’aplicació. La base de dades està integrada dintre de Heroku i fa servir l’SGBD Postgres [25] . L’aplicació es comunica amb dos serveis externs: AWS S3 [26] i SendGrid [27] . AWS S3 és un servei d'emmagatzematge d'objectes que ofereix escalabilitat, disponibilitat de dades, seguretat i un bon rendiment. Tota classe de clients el fan servir, per exemple: aplicacions web, aplicacions mòbil, dispositius de IoT (Internet of Things) o aplicacions empresarials. AWS S3 està integrat dintre d’un gran catàleg de serveis relacionats amb la computació al núvol gestionat per Amazon. Es fa servir per guardar els documents generats per l’aplicació (fitxes d’infants) i algun document estàtic que s’ha d’adjuntar en algun correu. La raó per la qual utilitzem aquest servei és per mantenir els fitxers de l’entitat de forma permanent. SendGrid és un servei d’email basat al núvol que se centra a fer que els emails enviats arribin de forma segura i fiable. pàg. 36
Es fa servir per enviar correus automàticament als usuaris quan completen algunes accions. Sendgrid s’integra fàcilment amb Django i dóna més seguretat i control a l’hora d’enviar els missatges. Per exemple, fan servir tècniques més avançades d’encriptació i investiguen per tal de saber quina és la millor forma més segura d’enviar missatges [28] , també ofereixen eines per tal de controlar a qui han arribat als missatges, si han rebotat o si s’han obert [29] . Sendgrid es comunica amb un compte de Gmail per tal de gestionar els missatges enviats. 12.2 Patrons emprats Primer de tot vull destacar el patró Model Vista Controlador. El patró MVC (Model-View-Controller) és un patró de disseny que separa l’aplicació o sistema en tres parts interconnectades: lògica de les vistes, la lògica de control i la lògica de dades. La lògica de dades és la representació de la informació amb la qual el sistema opera, per tant gestiona tots els accessos a aquesta informació, tant consultes com actualitzacions. Envia a la 'vista' aquella part de la informació que en cada moment li sol·licita perquè sigui mostrada. Les peticions d'accés o manipulació d'informació arriben al 'model' a través del 'controlador'. La lògica de control respon a esdeveniments, usualment accions de l'usuari, i envia peticions al 'model' quan es fa alguna sol·licitud sobre la informació. També pot enviar comandes a la 'vista' associada si se sol·licita un canvi en la forma en què es presenta el 'model', per tant es podria dir que el 'controlador' fa d'intermediari entre la 'vista' i el 'model'. La lògica de vistes presenta el 'model' en un format adequat per a interactuar-hi, per tant cal que doni la informació de sortida del 'model'. Utilitzo el patró MVC per a la construcció de l’aplicació, ja que s’adequa molt bé al projecte que he portat a terme. A més a més, utilitzo el framework Django que segueix aquest patró per estructurar el projecte. Però, en el cas de Django el que seria un controlador en MVC es diu “vista” i el que es diria “vista” a MVC Django li diu plantilla [3. Patró MVC] pàg. 37
Altres patrons que faig servir són: ● Active Record: El patró Active Record ens permet simplificar la interacció amb la capa de persistència mitjançant l’abstracció de la base de dades. Ens permet treballar directament amb objectes en memòria que després es convertiran en tuples de la base de dades, de manera que el SGBD de l’aplicació podrà canviar de forma senzilla: treballar amb objectes ens permetrà agilitzar la implementació de tasques relacionades amb la BD. Ho faig servir per exemple quan manipulo la base de dades en la lògica de l’administració. ● Patró Façana: El patró Façana simplifica la interfície d'un sistema complex gràcies a la subdivisió de les parts complexes que en formen part en subsistemes, d'aquesta manera s'allibera a l'usuari de les complexitats del sistema i ajuda al fet que el sistema no estigui fortament acoblat als subsistemes implicats, facilitant d'aquesta manera la posterior modificació. Ho faig servir per exemple en la inscripció quan l’usuari no omple tots els camps, ja que el sistema n’omple per defecte amb dades que calcula ell. ● Patró Singleton: El patró Singleton fa possible la delegació de responsabilitats d'una classe a una única instància que serà accedida globalment des de tot el sistema, aquesta manera de mantenir un únic punt d'entrada a un conjunt de mètodes ens estalviarà haver de declarar una instància cada cop que en vulguem fer ús d'algun en concret i de sincronitzar els canvis entre totes elles. Ho faig servir per exemple en la inscripció. En dividir el formulari en diverses pàgines utilitzo un paquet que a través d’una instància d’una classe gestiona la divisió. ● Patró Adaptador: El patró Adaptador permet la interconnexió de dos sistemes o classes que a priori són incompatibles, un cop feta aquesta connexió ens allibera de la complexitat dels canvis entre els dos sistemes, ja que podem modificar de forma senzilla l'adaptador per a mantenir la compatibilitat entre les dues entitats que hi intervenen tot reduint la complexitat i l'acoblament associat que hi hauria si no s'utilitzés aquest patró. Ho faig servir per exemple quan gestiono les dades que envio i que m’envia ASW S3. pàg. 38
12.3 Diagrama de components dels sistema Seguidament tenim el diagrama de components que mostra les tres capes del patró MVC que utilitza Django. A la capa de vista podem accedir al sistema des de tres llocs diferents: Inscripció i renovar inscripció que estan assignats a les famílies i Gestió d’infants que està assignat als organitzadors. A partir d’aquí la part de famílies és gestionada a la capa de controlador pel controlador de Vistes i la part d'organitzadors pel controlador d’Admin que gestiona la part relacionada amb Django Admin. Finalment, el controlador de vistes fa servir el model d’infant i el controlador d’Admin fa servir els dos models: infant i grup. [4. Diagrama de components] pàg. 39
12.4 Disseny de base de dades El projecte no requereix una base de dades complexa ni extensa però emmagatzema dades personals. La base de dades que utilitzaré dintre de Heroku és Postgres. He decidit utilitzar aquesta base de dades, ja que és la que s’integrava millor amb el framework utilitzat. És molt simple configurar Django perquè utilitzi Heroku i Postgres. Django facilita la gestió i administració de la BD. S’utilitza una base de dades relacional ja que les dades que emmagatzemem són estructurades i per tant és l’opció més encertada. La BD consta de dues classes diferents que són els següents: 12.4.1 Infants Aquesta classe representa un infant o jove apuntat a l’entitat. Conté la informació necessària per tal que els organitzadors de l’entitat portin a terme la seva feina i també informació del seu entorn per tal que l’equip d'organitzadors conegui millor l’infant i/o pugui realitzar una anàlisi de la realitat per un possible projecte educatiu de curs o de centre. Dels camps existents els que recollim pel nostre funcionament són: Informació del tutor que fa la inscripció (DNI/NIE i nom complet), nom de l’infant, data de naixement de l’infant, telèfons (un principal, un secundari, un d’emergència i un de l’infant), correus (un principal, un secundari i un de l’infant), observacions, especificitats alimentàries, informació de les autoritzacions, quin és l’últim curs que han realitzat la inscripció, a quin grup estan assignats, informació sobre si tenim els seus documents en ordre i si la seva inscripció ha estat confirmada per l’equip d’organitzadors. Els que recollim per conèixer l’infant millor i poder fer una anàlisi de la realitat són: Informació sobre la seva educació (quin curs està cursant i a quina escola), quants germans té a l'entitat, la llengua que utilitza normalment, els noms dels seus tutors i on viu (població, codi postal i barri). Sobre les decisions preses cal destacar: ● S’ha decidit no guardar informació sobre la localització exacta de l'habitatge dels infants (carrer, número, pis, etc.), ja que no aporta cap informació rellevant per tal d’analitzar la realitat dels infants, sabent la població i el barri en tenim prou. Es tracta doncs de dades innecessàries i potencialment perilloses. ● S’ha decidit separar especificitats alimentàries i observacions per la de poder extreure només les especificitats alimentàries. ● S’ha decidit guardar si ens han entregat la documentació en comptes de la documentació en si. La raó està explicada en profunditat a la part de disseny del sistema d’inscripció. pàg. 40
● En alguns camps s’ha decidit que les famílies donin la informació que vulguin en comptes d'unes opcions tancades (per exemple curs, escola, germans a l’entitat, llengua que utilitza normalment, etc.) per tal de donar una llibertat major a les famílies perquè donin la informació que considerin necessària. 12.4.2 Grups Aquesta classe representa un grup d’infants i joves dintre l’entitat. Conté només el nom del grup. La raó per crear aquesta classe encara que només sigui un camp és per aprofitar les funcionalitats que ofereix el administrador de Django. Com l’administrador de Django aprofita les classes està explicat a la part de Frameworks de Implementació. [5. Representació UML dels models] pàg. 41
[13. Imatge de la pàgina de lista de model a administració] La pàgina de gestió de grups conté una llista dels grups i dona la opció de afegir, modificar i eliminar grups. [14. Imatge de la pàgina de gestió de grups a administració] La pàgina de gestió d’infant conté moltes eines diferents per tal de fer operacions amb les dades dels infants. Ara faré una llista d’aquestes eines i com s’utilitzen: ● Tenim una llista amb tots els infants que per defecte està filtrat als infants que estan apuntats en l’any actual i que han estat confirmats. Aquesta llista mostra la següent pàg. 48
informació: nom de l’infant, data de naixement, grup i informació sobre els seus documents. La llista és ordenable ascendentment i descendentment per tots els seus camps. També permet fer modificacions en els camps de la informació sobre els seus documents directament sobre la llista. El nom de cada infant és un enllaç que porta a una pàgina amb tota la seva informació. Els infants poden ser seleccionats per tal de portar a terme accions en massa. ● A dalt de la pàgina hi ha un enllaç que porta a una altra pàgina que serveix per importar dades d’infants a través d’un fitxer Excel. Només és visible pels usuaris admin. ● Just a sota hi ha un cercador d’infants a través del seu nom. ● A sota hi ha una jerarquia de dates que permet filtrar per any de naixement d'infants. Si filtres per anys llavors passa a permetre filtrar per mesos d’aquell any i després per dies d’aquell més. ● A la dreta tenim una secció que controla els filtres. El primer filtre és per l’últim curs que l’infant s’ha apuntat. Per defecte filtra pel curs actual i per tant per defecte es mostren els infants que estan apuntats a l’any actual. Si l’usuari és admin, també permet filtrar per infants que no han estat confirmats per l’equip d’organitzadors. ● L’altre filtre està just a sota i és per grup d’infants. Per defecte no fa cap filtre i mostra tots els grups. També pot filtrar per aquells infants que no estan assignats a cap grup. ● Just a sobre de la llista d'infants hi ha un desplegable que permet realitzar accions en massa en els infants seleccionats. Les accions són les següents: ○ Eliminar els infants seleccionats- Només la poden veure i fer els usuaris admin. ○ Descarregar fitxes- Descarrega un fitxer zip amb totes les fitxes dels infants seleccionats dintre. ○ Generar Excel- Genera un Excel amb totes les dades dels infants seleccionats. ○ Especificitats alimentàries- Genera un fitxer PDF amb els infants seleccionats que tinguin especificitats alimentàries mostrant cada infant amb la seva especialitat i la seva data de naixement. ○ Full de contacte- Genera un fitxer PDF amb els infants seleccionats mostrant totes les seves dades de contacte: Nom, correus i telèfons. ○ Reset Curs- Assigna el valor no assignat al camp grup i el valor incomplet al camp pagament dels infants seleccionats. Només la poden veure i fer els usuaris admin. ○ Assignar al grup- Hi ha tantes accions diferents d’aquest tipus com grups hi hagi. Cada acció assigna el valor del grup corresponent als infants seleccionats. pàg. 49
[15.Imatge de la pàgina de gestió d’infants a administració] 12.7 Disseny del sistema d’inscripció En aquest apartat parlaré sobre el disseny del sistema d'inscripció. Anirem enunciant i descobrint tots els passos necessaris per a completar una inscripció. El primer pas és fer arribar el sistema a les famílies. Ho farem a través de dos canals: enviant correus a les famílies que ja venien l'any passat amb instruccions de com renovar la inscripció i fent una campanya publicitària a les xarxes socials. També serà important respondre tots els dubtes que puguin sorgir a través del correu. Un cop hem fet arribar l'aplicació a les famílies hi ha dues opcions: que ja vinguessin anteriorment o que no hagin vingut encara. Començarem parlant del cas que no hagin vingut mai. En el cas que no hagin vingut mai han de completar el procés d'inscripció. El primer pas és omplir el formulari de l'aplicació. Dintre del formulari hi ha camps que són obligatoris, ja que són imprescindibles pel funcionament de l'entitat amb aquest infant però també n'hi ha que hi són per tal de donar una millor atenció a l'infant o poder realitzar una anàlisi de la realitat. En completar el formulari passen diverses coses. La primera és que es genera un document en format PDF amb la informació introduïda sobre l'infant i aquest document es guarda. Segon, es mostra una pàgina que explica els següents passos a seguir, ensenya les dades introduïdes i dóna l'opció de descarregar la fitxa. Tercer, s'envia un correu a l'adreça que s'ha introduït al formulari amb el document generat adjuntat i informació sobre com completar la inscripció. Per acabar, també s'envia un correu a una adreça de l'entitat amb el nom, edat de l'infant i un enllaç que serveix perquè un organitzador de l'entitat confirmi la inscripció de l'infant i que aparegui a la llista d'infants de la part d’administració. pàg. 50
En el cas que ja haguessin vingut anteriorment i per tant ja tinguéssim el document amb les dades generat han d'omplir el formulari de renovació. El formulari de renovació consisteix simplement d'un camp on han d'introduir el nom complet de l'infant. La decisió que el camp distintiu sigui el nom complet ve condicionada al fet que és l'únic camp que és obligatori i virtualment únic que a més a més segur que la família se’n recorda. Un cop completat s'envia un correu a la família amb el document amb les dades de l'infant adjuntat i instruccions per acabar la renovació. A les instruccions també diu que revisin la fitxa per canvis en les dades i que en el cas que n'hi hagi que ens el facin arribar per correu. El següent pas és fer-nos arribar la documentació necessària. En el cas que ja vinguessin anys anteriors només ens l'han de fer arribar si hi ha hagut canvis. Necessitem que ens facin arribar una fotocòpia del DNI si l'infant en té, una fotocòpia de la cartilla de vacunes, una fotocòpia de la targeta sanitària i una foto de carnet. Tots els anys també ens han de fer arribar el justificant de pagament del curs. Un cop ens entreguin aquests documents els organitzadors de l'entitat ho han de fer constar actualitzant les dades de l'infant. L'entrega d'aquests documents és en persona i físicament, he contemplat la possibilitat que ens ho enviïn en format digital i guardar-ho dintre del sistema però ho he desestimat, ja que considero que seria complicat per les famílies enviar-nos-ho i generaria un intercanvi de dades molt gran que complicaria el procés d'inscripció excessivament pels beneficis que aporta. El següent pas és fer que les famílies firmin el document per fer que les autoritzacions tinguin efecte. Semblant al cas dels documents vaig contemplar que ho firmessin digitalment però considero més senzill imprimir les fitxes i que les firmin, tot i que en aquest cas es gasten més recursos. Fins aquí arriba la feina que han de fer les famílies. Finalment, l'últim pas és que els organitzadors assignin a cada infant un grup per poder fer una millor gestió de les dades. Aquí a sota poso un esquema del procés a seguir per completar una inscripció des del punt de vista tant de les famílies, l’entitat i el sistema. pàg. 51
[16. Esquema del procés d’inscripció] pàg. 52
13. Implementació 13.1 Tecnologies Ara faré una enumeració i explicació de les tecnologies utilitzades en el projecte: ● Heroku- He utilitzat Heroku per tal de fer el desplegament de l’aplicació. La decisió d’utilitzar Heroku ve condicionada per la meva experiència utilitzant-lo abans en altres projectes. Tot i això, vaig fer una anàlisi de les diferents tecnologies possibles i Heroku destaca per la seva sinergia amb el framework que utilitzo, Django, i pel fet que s’adequa al tipus d’aplicació que estic desenvolupant: petita, amb una base de dades senzilla i amb possibilitat d’escalar. ● Postgres- Utilitzo la base de dades integrada amb Heroku que fa servir Postgres. La decisió d’utilitzar Postgres ve lligada al fet que estava integrat dintre de Heroku i Django dona les eines per de forma molt senzilla integrar-ho tot junt. També hi va jugar un paper important el fet que les dades que guardo són estructurades i per tant una base de dades relacional s’adequa molt bé a la situació. ● ASW S3- Utilitzo la tecnologia S3 de AWS per tal de guardar els documents generats per l’aplicació i alguns altres documents estàtics que s’han d’ajuntar en els correus que envia l’aplicació. Utilitzo un paquet de Python que dóna recursos per tal de connectar-m’hi. S3 és una tecnologia de pagament però té una versió gratuïta amb recursos limitats, la meva aplicació és petita i de moment no ha superat els recursos per tal que s’apliquin recàrrecs però és una situació a tenir en compte. ● SendGrid- Utilitzo SendGrid per a gestionar els enviaments de correus als usuaris quan completen algunes accions en concret. Aquestes accions són quan es completa una inscripció o una renovació d’una inscripció. Utilitzo una plantilla que juntament amb la informació d’un infant crea el correu i l’envia amb informació personalitzada i documents adjuntats. També envia un correu a un compte centralitzat per tenir un control de les inscripcions i renovacions. Primer de tot, utilitzava les eines que ofereix Django per controlar un compte de Gmail però després vaig considerar necessari el control més gran i seguretat de fer servir una eina especialitzada. Per controlar-ho faig servir les eines que dóna Django per defecte però amb les opcions modificades per tal de fer servir SendGrid. ● Gmail- Utilitzo Gmail per a controlar els correus que envia SendGrid i també per saber quines inscripcions i renovacions d'inscripció s’han realitzat. He creat un compte expressament per fer aquestes gestions. pàg. 53
13.2 Frameworks El framework que utilitzo és Django. Django és un framework per a aplicacions web de codi obert escrit en Python. Els creadors de Django afirmen que el van dissenyar intentant que el desenvolupament de noves aplicacions sigui el més ràpid i senzill possible però que pugui satisfer totes les necessitats d’un desenvolupador web experimentat. Diuen que les seves grans qualitats és que és: ràpid, totalment equipat, segur, escalable i versàtil [30] . Django utilitza el patró MVC per estructurar els seus projectes i la comunicació entre les següents parts. Ells afirmen que és la forma més senzilla i eficaç d’estructurar un projecte. Ja havia treballat amb altres frameworks com per exemple Angular però vaig decidir que si començava un projecte llarg des de zero, podia ser positiu també aprendre a fer servir un framework des de zero. El que em va atraure de Django és que posen èmfasi en el fet que sigui senzill començar a treballar i donen moltes facilitats a l’hora de generar funcionalitats comunes com per exemple: autentificació d’usuaris, integrar una base de dades, fer un formulari, etc. Un altre factor positiu de Django és que està bastant consolidat, té una bona documentació tant per començar com per temes avançats. També, ja que hi ha moltes persones utilitzant-lo, hi ha una gran base de documentació externa i dubtes resolts. També cal destacar que hi ha molts paquets de Python dedicats a Django que permeten facilitar encara més la feina. Tota la part de l’aplicació destinada als organitzadors ha estat realitzada emprant Django admin. Django admin permet crear interfícies a partir dels models del sistema. Per exemple, el sistema d’usuaris s’aprofita que Django ja està preparat per poder crear usuaris des del començament i un cop en crees un, pots crear la resta fàcilment dintre del Django Admin. La gestió d’infants s’aprofita d’aquesta part de Django Admin. Es poden afegir funcionalitats com per exemple filtres o cercadors i es pot modificar com es veuen les dades del model a través del codi. Django Admin també permet estendre les plantilles HTML que fa servir per a mostrar la informació que es desitja. 13.3 Altres aspectes rellevants de la implementació En aquesta part vull fer esment a diversos paquets de Python que són importants dintre del projecte: ● Jinja2 i weasyprint- Utilitzo aquests dos paquets per tal de generar un document amb la informació d’un infant. Jinja2 és un paquet que permet a través d’una plantilla HTML, un full d’estil CSS i informació d’un infant generar un document. WeasyPrint en canvi permet agafar aquest document, passar-lo en format PDF i guardar-lo. Django permet fer-ho però amb aquests paquets se simplifica molt el disseny del document. ● Django-formatools- Utilitzo aquest paquet per tal de poder presentar el formulari d’una forma més usable. És un paquet que afegeix funcionalitats relacionades amb formularis entre elles poder fer un formulari amb diversos passos a través de dividir pàg. 54
un formulari en formularis més petits i el paquet gestiona ajuntar-los i guardar la informació de cada pas. També dona unes plantilles HTML amb un exemple clar de com utilitzar-lo. ● Boto3- Utilitzo aquest paquet per gestionar la comunicació amb AWS S3. És un paquet que permet comunicar-me fàcilment amb AWS S3 i penjar-hi i descarregar fitxers. ● Django-import-export- Utilitzo aquest paquet per tal de gestionar importar i exportar documents en la part d’administració. És un paquet que simplifica molt generar documents des de dades de l’aplicació i fer el pas contrari, a través d’un document generar dades. En el meu cas es fa a través d’un document Excel. ● Zip-file- Utilitzo aquest paquet per tal de generar documents en format ZIP. És un paquet que a través d’una llista de document permet introduir-los dintre d’un document ZIP i després descarregar-los. ● Model_mommy- Utilitzo aquest paquet per tal de simplificar les proves del codi. És un paquet que donat un model genera automàticament una instància d’aquest model amb valors aleatoris als camps obligatoris. També permet introduir el valor que vulguis en algun camp o que ompli tots els camps en comptes de només els obligatoris. ● Selenium- Utilitzo aquest paquet per tal de generar proves. És un paquet que permet generar proves a través d’automatitzar accions del navegador. D’aquesta manera puc automatitzar les accions més comunes i comprovar que segueixen funcionant després de realitzar canvis en el codi. ● Coverage- Utilitzo aquest paquet per tal de comprovar la cobertura de les proves. És un paquet que a través d’una comanda(en el meu cas executar les proves) permet comprovar quin codi s’ha executat. Això és molt útil per saber quin codi utilitza les meves proves i per tant saber que estic provant i que em falta. pàg. 55
14. Proves Per a portar a terme el projecte he dissenyat i implementat diverses proves de diferents tipus. El primer tipus són proves funcionals que s’executen dintre de Django i aprofitant les eines que proporciona. El segon tipus són proves que han realitzat voluntaris agafant el rol de famílies i organitzadors de l’entitat. Tots els voluntaris per tal de realitzar les proves han disposat d’un guió que està al annex A. 14.1 Proves dintre de Django Les proves executades dintre de Django són aquelles que proven que diferents funcionalitats funcionin correctament i es comuniquin de forma adequada entre elles. Podem diferenciar dos tipus de proves: les proves funcionals que aprofiten les eines que dóna Django i les proves de sistema fetes amb Selenium per automatitzar tasques en el navegador. 14.1.1 Proves funcionals Aquestes proves comproven que cada component de l’aplicació funciona per separat. Provo funcionalitats com la generació de documents, enviament de correus, mostrar correctament pàgines quan li enviem informació correcta i incorrecta, que les restriccions del model s’apliquin correctament o que el formulari controli correctament els límits de caràcters i tipus de resposta. En aquesta part utilitzo el paquet model_mommy per tal de generar instàncies de diferents models per realitzar les proves. També utilitzo el paquet coverage per tal de comprovar quina cobertura tenim del codi i identificar possibles noves proves a realitzar. Django ofereix eines per dissenyar i implementar proves i és senzill en el cas de models, vistes o funcions auxiliars com generar un document o enviar un correu. En canvi, en el cas de l’administració que ofereix és molt complicat generar proves, ja que fa servir uns objectes propis que són complicats de crear i modificar. 14.1.2 Proves de sistema Les proves de sistema [31] automatitzen accions del navegador i són un pas intermedi entre provar les funcionalitats i fer servir voluntaris. Són molt útil per tal de provar les accions més comunes i comprovar que no hi ha cap problema després d’un canvi. Aquestes accions més comunes inclouen el procés d'inscripció i renovar la inscripció o accions en l’administració. A part d’aquestes accions també he provat altres accions que comproven com es comporta l’aplicació en el navegador quan realitzo una acció de forma incorrecta com per exemple no omplint algun camp, omplint-lo malament o realitzar alguna acció de l’administració sense tenir cap infant seleccionat. Selenium és una eina molt potent per tal de fer proves que integren moltes parts diferents de l’aplicació i provar-la com un bloc. Això m’ha servit per tal de realitzar proves que en la part de proves de funcionalitats haguessin estat complicades o impossibles de realitzar. pàg. 56
Finalment cal fer notar que les proves de Selenium acostumen a ser bastant llargues depenent del que facis i que per tant són una mica costoses en el temps de programar. 14.2 Proves dels voluntaris Les proves realitzades pels voluntaris s’han fet basant-nos en un guió dissenyat per mi que es pot trobar a l’annex A. Aquest guió conté una llista d’accions que els usuaris de l’aplicació han de seguir i respondre amb la seva experiència. El guió s’ha enviat a un seguit de voluntaris relacionats amb l’entitat de lleure. A més del guió, s’ha demanat als voluntaris que fessin propostes de millora i valoressin el grau d’usabilitat de l’aplicació. Les respostes dels voluntaris i informació sobre si s’han aplicat les seves propostes es pot trobar al annex B. S’han realitzat diverses rondes de proves a mesura que s’avançava el projecte. En aquest tipus de proves no només es prova que les diferents funcionalitats funcionen sinó que també avalua si l’aplicació és fàcil de fer servir i la treu de la seva zona de confort per provar-la amb altres màquines amb navegadors i sistemes operatius diferents. Podem dividir les proves dels voluntaris en dos tipus: les proves enfocades a la part de l’aplicació dirigida a famílies i les proves enfocades a la part de l’aplicació dirigida als organitzadors. 14.2.1 Famílies Aquestes proves se centren en la part de la pàgina principal i els processos de renovar la inscripció. També són molt importants les funcionalitats de generar fitxes i enviar correus perquè estan molt lligats a aquests processos. Els voluntaris han sortit de les famílies de l'entitat on formo part. Hi ha famílies amb infants de diverses edats però sí que hi ha un nombre de famílies més gran amb infants de 8-9 anys, ja que és l’edat que porto aquest any i tinc una relació més propera amb aquestes famílies. El perfil de les famílies també és bastant divers passant per persones amb un nivell limitat de coneixement de les noves tecnologies fins a un enginyer informàtic. Les respostes de les famílies m’han permès detectar diversos conceptes que dintre del vocabulari dels organitzadors de l’entitat són molt comuns però que les famílies no comparteixen i eren confoses. També he detectat que hi havia camps del formulari d’inscripció que tenien un límit de caràcters massa curt i que no permetia introduir tota la informació necessària. Finalment, també vaig descobrir que les fitxes no es guardaven correctament a AWS S3 quan el nom del fitxer tenia un accent (fins aquell moment el nom del fitxer era el nom de l'infant) així que vaig haver de fer un canvi en la nomenclatura dels fitxers. 14.2.2 Organitzadors Aquestes proves se centren en la part d'administració. Els voluntaris són organitzadors actuals de l’entitat en la qual formo part. Hi ha organitzadors amb diferents nivells d’experiència dintre del món de l’educació del lleure i del funcionament intern de l’entitat (des d’un any fins a 5 anys d’experiència) i també diferents nivells de coneixement i confiança en les noves tecnologies. pàg. 57
han estat provades de forma exitosa per diferents organitzadors voluntaris amb mòbil i ordinador i s’han aplicat les seves propostes si eren raonables. 17.2 Justificació competències tècniques En aquest apartat parlarem de les competències tècniques triades i la seva justificació: ● CES1.3: Identificar, avaluar i gestionar els riscos potencials associats a la construcció de software que es poguessin presentar. [Una mica]- En tractar-se d’un software que acabarà tractant persones reals i gestionarà les seves dades és important tenir en compte els possibles riscos associats que pugui arribar a tenir. Els riscos s’han tingut en compte adoptant mesures preventives per evitar-los o pal·liar les conseqüències. Per exemple, s’evita que els organitzadors de l’entitat (que no tinguin accés al compte d’administrador) puguin eliminar infants per evitar possibles errors o hi ha creat un sistema d’importació i exportació de dades que es pot fer servir per a crear còpies de seguretat. ● CES1.4: Desenvolupar, mantenir i avaluar serveis i aplicacions distribuïdes amb suport de xarxa.[Una mica]- El sistema està dissenyat per tal d’utilitzar-se en diferents localitzacions i dispositius i per tant és important gestionar els diferents problemes que això pugui ocasionar. Per exemple, cal donar instruccions molt clares sobre com funciona l’aplicació i per a les famílies oferim un correu de contacte per solucionar possibles problemes. També s’ha de gestionar que l’aplicació es farà servir des de dispositius diversos: investigar en quins dispositius funciona, implementar l’estil de l’aplicació perquè s’apliqui a tots els dispositius i realitzar proves en diversos entorns. ● CES1.5: Especificar, dissenyar, implementar i avaluar bases de dades. [Una mica]- El sistema utilitzarà una base de dades i al cap i a la fi la seva principal utilització serà afegir dades en aquesta base de dades i gestionar l’accés a aquestes dades per part dels organitzadors de l’entitat de lleure. També cal fer esment del fet que les dades que guardem són de persones i a més a més infants així que cal tenir en compte les diferents regulacions existents. ● CES1.7: Controlar la qualitat i dissenyar proves en la producció de software. [Bastant]- S’han realitzat diversos tipus de proves per garantir la qualitat del software incloses proves funcionals, de sistema i un estudi amb persones voluntàries. ●CES2.1: Definir i gestionar els requisits d'un sistema software. [Bastant]- A l'implementar-se en una entitat que ja funciona en l’actualitat és molt important tenir en compte els requisits i fer un esforç per ajustar-nos al funcionament de l’entitat. Per tant, hi ha hagut un extens estudi del funcionament de l’entitat i en especial del funcionament de les inscripcions per tal d'ajustar els requisits del sistema. pàg. 64
17.3 Treball futur El primer canvi que faré en un treball futur és llogar un hosting per tal de canviar l’adreça de la pàgina web. Però, això ho haig de fer amb el permís de la meva entitat, ja que el pagament del lloguer el farà l’entitat i per tant fins que no estigui completat el projecte no vull tirar endavant aquesta millora. Seguint amb aquest canvi, també inclouria el lloguer del hosting en l’enviament de correu fent que s’enviessin a través d’aquest hosting i no des de Gmail. La gestió se seguiria fent des de Gmail però podria canviar l’adreça per una més personalitzada i tenir més control. Igual que l’anterior millora no la vull tirar endavant fins que no estigui finalitzat el projecte, ja que depèn de l’entitat. Tot i això, el treball més important vindrà al setembre quan l’aplicació es posi en funcionament real. És important notar que, ja que fa uns quants anys que no podem reaprofitar les fitxes d’un any per l’altre pels canvis que els hi fèiem, les persones que ja tenen la inscripció feta d’altres anys no l’hauran de tornar a fer. Això ho aconseguiré reaprofitant les dades de l’any passat i introduint-les dintre del nou sistema amb l’acció d’importar de la part d’administració. pàg. 65
18. Referències 1. Gestió d'inscripcions del Centre Excursionista Olot [En línia] <http://openaccess.uoc.edu/webapps/o2/handle/10609/29524> [Consulta 17 Març 2019] 2. Gestor web d'activitats en el lleure [En línia] <https://ddd.uab.cat/record/103912> [Consulta 17 Març 2019] 3. Costa, D. (2016). Coordinem-nos! . Barcelona: Esplac. 4. Goberna Cabanyes, A. (2010). La Roda del relleu . Barcelona: Esplais Catalans. 5. Esplai Guai! de Palou [En línia] <http://www.esplaiguai.org/> [Consulta 21 Febrer 2019] 6. Inscripcions de l’esplai Guai! [En línia] <http://www.esplaiguai.org/inscripcions/> [Consulta 21 Febrer 2019] 7. Informació sobre Gesplai [En línia] <https://www.peretarres.org/mcecc/serveis-als-esplais/ recursos> [Consulta 21 Febrer 2019] 8. Gesplai del MCECC [En línia] <https://gesplai.org/> [Consulta 21 Febrer 2019] 9. Centres d’Esplai - MCECC [En línia] <https://www.peretarres.org/mcecc#> [Consulta 21 Febrer 2019] 10. L’Era d’Esplac [En línia] <https://era.esplac.cat/> [Consulta 21 Febrer 2019] 11. ESPLAC - Esplais Catalans [En línia] <https://www.esplac.cat/> [Consulta 21 Febrer 2019] 12. MIV - Moviment Infantil de Vilafranca [En línia] <http://www.miv.cat> [Consulta 21 Febrer 2019] 13. Formulari d’inscripció al MIV [En línia] <https://goo.gl/forms/mjHahM7OBV1pGDl23> [Consulta 21 Febrer 2019] 14. Enquesta feta a les famílies. Disseny i realització pròpia. 15. Estadística d’Equipament TIC a la llar de l’Idescat 2017 [En línia] <https://www.idescat.cat/pub/?id=aec&n=620> [Consulta 21 Febrer 2019] 16. Dades de les inscripcions. Disseny i realització pròpia. 17. Agile Solo [En línia] <https://www.raywenderlich.com/585-scrum-of-one-how-to-bring-scrum-into-your-one -person-operation> [Consulta 19 Març 2019] 18. Comissió Permanent (2017). NORMATIVA DEL TREBALL FINAL DE GRAU DEL GRAU EN ENGINYERIA INFORMÀTICA DE LA FIB . [en línia] p.1. <https://www.fib.upc.edu/sites/fib/files/documents/estudis/normativa-tfg-gei-final.pdf> [Consulta 4 Març 2019]. 19. Salari Project Manager [En línia] <https://www.payscale.com/research/US/Job=Project_Manager%2C_Software_Deve lopment/Salary > [Consulta 6 Març 2019] 20. Salari Analista [En línia] <https://www.payscale.com/research/US/Job=Software_Analyst/Salary> [Consulta 6 Març 2019] pàg. 66
21. Salari Programador [En línia] <https://www.payscale.com/research/US/Job=Computer_Programmer/Salary> [Consulta 6 Març 2019] 22. Salari Tester [En línia] <https://www.payscale.com/research/US/Job=Software_Tester/Salary> [Consulta 6 Març 2019] 23. Ordinador de sobretaula [En línia] <https://www.worten.es/productos/informatica/ordenadores-sobremesa/pc-sobremes a-medion-erazer-p3614-d-6212286> [Consulta 5 Març 2019] 24. Pantalla [En línia] <https://www.samsung.com/es/monitors/monitor-uhd-lu32j590uquxen/> [Consulta 5 Març 2019] 25. Informació sobre Postgres a Heroku [En línia] <https://www.heroku.com/postgres> [Consulta 15 Juny 2019] 26. Informació sobre AWS S3 [En línia] <https://aws.amazon.com/s3/> [Consulta 15 Juny 2019] 27. Informació sobre SendGrid [En línia] <https://sendgrid.com/> [Consulta 15 Juny 2019] 28. Informació sobre la seguretat de SendGrid [En línia] <https://sendgrid.com/blog/sendgrid-and-the-future-of-email-security/> [Consulta 17 Juny 2019] 29. Informació sobre el control de correus enviats de SendGrid [En línia] <https://sendgrid.com/solutions/expert-insights/> [Consulta 17 Juny 2019] 30. Informació pròpia de Django sobre les seves qualitats [En línia] <https://www.djangoproject.com/start/overview/> [Consulta 13 Juny 2019] 31. Informació sobre proves de sistema [En línia] <http://softwaretestingfundamentals.com/system-testing/> [Consulta 12 Juny 2019] 32. Extensió de l’aplicació de fulls de càlcul de Drive per generar dades aleatòries [En línia] <https://www.ablebits.com/google-sheets-add-ons/random-generator/index.php> [Consulta 12 Juny 2019] 33. Pàgina web per generar dades aleatòries [En línia] <http://ensaimeitor.apsl.net/> [Consulta 12 Juny 2019] 34. Instruccions per complir la GDPR [En línia] <https://www.coredna.com/blogs/general-data-protection-regulation> [Consulta 11 Juny 2019] 35. Pàgina de la GDPR[En línia] <https://gdpr.eu/> [Consulta 11 Juny 2019] 36. Formació en Protecció de dades organitzada per l’ajuntament de Vilafranca del Penedès.[En línia] <https://participacioivoluntariat.vilafranca.cat/noticies/formacio-en-materia-de-protecc io-de-dades> [Consulta 11 Juny 2019] 37. Informació del oficial de protecció de dades.[En línia] <https://gdpr-info.eu/art-9-gdpr/> [Consulta 11 Juny 2019] 38. Informació sobre recollir dades d’infants.[En línia] <https://gdpr-info.eu/art-8-gdpr/> [Consulta 11 Juny 2019] pàg. 67
19. Annexos A. Descripció de les proves realitzades En aquest apartat parlarem de les proves enviades als voluntaris. Primer de tot exposaré les proves i al final faré un comentari. Enviat el 12/4/19 a les famílies. A partir d’ara ens referirem a aquest enviament com a Ronda 1 de les famílies. Bon dia, Us envio aquest correu, ja que us vau oferir voluntaris per provar l'aplicació web de les inscripcions. Abans de res moltes gràcies per oferir-vos voluntaris per fer això, em feu un favor molt gran i m'estalvieu unes quantes hores. Primer de tot, per entrar a l'aplicació heu d'anar a aquest enllaç: https://powerful-eyrie-84666.herokuapp.com/inscripcions/ . Aquest enllaç és temporal, en el futur serà més senzill. Ara us proposaré dues tasques a realitzar: Fer una inscripció nova i Renovar la inscripció. Primer de tot us proposo fer una inscripció nova fent clic a l'enllaç Nova inscripció. Ompliu tot el formulari amb les dades que vulgueu (no cal que siguin reals) excepte el camp de correu preferent que ha de ser un correu que pugueu consultar. En acabar us hauria de sortir una pàgina amb tota la informació que heu introduït i un botó per descarregar la fitxa. Intenteu descarregar la fitxa. Al correu que heu introduït al camp correu preferent us hauria d'haver arribat un correu amb la fitxa adjuntada (mireu al correu brossa perquè és bastant probable que hagi acabat allà). La segona tasca és anar a la pàgina principal i fer clic a Renovar Inscripció. Això és el que faríem si ja estiguéssim inscrits i ens volem inscriure un curs més. Introduïu el nom de l'infant o jove en el camp que heu creat abans i feu clic a inscriu. Us hauria de sortir que heu inscrit l'infant o jove un curs més. Al correu que heu introduït al camp correu preferent us hauria d'haver arribat un correu amb la fitxa adjuntada (mireu al correu brossa perquè és bastant probable que hagi acabat allà). Molt bé, ara que heu fet les tasques proposades necessito que em digueu si en alguna tasca heu tingut alguna dificultat o no l'heu aconseguit completar. M'ho podeu passar per escrit responent el correu. També digueu-me si us ha saltat algun error i que estàveu fent perquè saltés l'error. També vull que em feu propostes de canvis: canvis en com es fan les coses perquè creieu que seria més senzill, posar la informació d'una altra manera perquè quedi més clar, etc. No tingueu por a proposar, jo ja miraré si és possible fer-ho i com. M'aniria molt bé que m'ho envieu de la següent manera: Nom de la millora: Aquí poseu un nom curt de la millora Importància: Aquí podeu posar: Imprescindible, Molt important, Poc important i Si hi ha temps. Descripció: Descripció més extensa del que em proposeu. Finalment us dic les millores que ja tinc pensat fer per no repetir-les: Posar un botó per tornar a la pàgina principal, posar una capçalera i peu de pàgina, millorar la pàgina principal i millorar els missatges del correu. pàg. 68
Moltes gràcies, Pau Carbonell Enviat el 12/4/19 als organitzadors. A partir d’ara ens referirem a aquest enviament com a ronda 1 dels organitzadors. Bon dia, Us envio aquest correu, ja que us vau oferir voluntaris (com a mínim la majoria) per provar l'aplicació web de les inscripcions. Abans de res moltes gràcies per oferir-vos voluntaris (o no) per fer això, em feu un favor molt gran i m'estalvieu unes quantes hores. Primer de tot, per entrar a l'aplicació heu d'anar a aquest enllaç: https://powerful-eyrie-84666.herokuapp.com/inscripcions/ . Aquest enllaç és temporal, en el futur serà més senzill. Segon heu d'accedir a la part d'administració. Si no trobeu com fer-ho heu de fer clic a Administració. L'usuari i la contrasenya són admin i 123456. En el futur seran diferents. Llavors feu clic a Infants i comença la part divertida. Ara us proposaré diferents tasques a realitzar. Primer de tot intenteu-les fer sense instruccions però a sota teniu com fer-les. Primer de tot intenteu fer cada tasca sense instruccions per veure si és prou intuïtiu. Si algú em vol ajudar encara més que les intenti fer des del mòbil per veure si és el mateix. 1. Descarrega la fitxa d'un infant (el que vulguis) 2. Canvia el correu d'un infant (el que vulguis) 3. Busca els infants nascuts el Setembre de 2013 que estiguin apuntats aquest any. 4. Busca un infant sabent el seu cognom. Busca un infant que de cognom es digui Zalaya. 5. Descarregar de cop totes les fitxes dels infants nascuts el 2004 i que s'hagin apuntat aquest any 6. Descarrega un Pdf amb totes les especifitats alimentaries dels infants apuntats aquest any. 7. Descarrega un Pdf amb els contactes d'una edat, per exemple MIV6 (2002-2003) apuntats aquest any. Ara venen les instruccions: 1. Descarrega la fitxa d'un infant (el que vulguis) - Fes clic al nom de qualsevol infant i a baix de tot tria descarregar PDF. 2. Canvia el correu d'un infant (el que vulguis) - Fes clic al nom de qualsevol infant i canvia la informació del camp correu, per acabar a baix de tot fes clic a DESAR. 3. Primer de tot has de dir que vols els infants apuntats aquest any. Per fer-ho a la dreta de tot fes clic a Curs 2018/2019. Després filtra per any fent clic sobre els noms dels infants a l'any que toca (el 2013) i després al mes que toca (Setembre) i t'hauria de sortir Natali Valdueza Somoza. 4. Gairebé a dalt de tot hi ha un buscador on pots buscar per nom, cognoms i data de naixement. Posa el cognom i hauria de sortir l'Elvis Oliver Zalaya. 5. Primer de tot has de posar els infants que s'han apuntat aquest any. Per fer-ho a la dreta de tot fes clic a Curs 2018/2019. Després has de filtrar pels infants nascuts el 2004 amb les dates que hi ha sobre els noms dels infants. Els selecciones tots i entre les dates i els noms dels infants hi ha un desplegable on has de triar descarregar fitxes. Fas clic a Anar i es descarregaran. 6. Primer de tot has de posar els infants que s'han apuntat aquest any. Per fer-ho a la dreta de tot fes clic a Curs 2018/2019. Després selecciona tots els infants alhora amb la casella a la cantonada superior esquerra. Entre les dates i els noms dels infants hi ha un desplegable on has de triar Especificitats alimentàries. Fas clic a Anar i es descarregarà. 7. Primer de tot has de posar els infants que s'han apuntat aquest any. Per fer-ho a la dreta de tot fes clic a Curs 2018/2019. Aquí tens dues opcions, la senzilla és descarregar-ho en dos documents, els del pàg. 69
2002 i els del 2003. Però també pots ordenar tots els infants fent clic a data de naixement a sobre de la llista dels infants i seleccionar el primer, vas fins a l'últim que vols seleccionar, el selecciones aguantant shift i els seleccionaran tots els que estiguin al mig. Molt bé, ara que heu fet les tasques proposades necessito que em digueu en quines tasques heu necessitat l'explicació i en quines no ho heu aconseguit ni amb l'explicació. M'ho podeu passar escrit responent el correu o explicant-m'ho en persona dient els problemes que heu tingut. També digueu-me si us ha saltat algun error i que estàveu fent perquè saltés l'error. També vull que em feu propostes de canvis: canvis en com es fan les coses perquè creieu que seria més senzill, noves eines que creieu que es poden ser útils, posar la informació d'una altra manera perquè quedi més clar, etc. No tingueu por a proposar, jo ja miraré si és possible fer-ho i com. Vull que m'ho envieu de la següent manera: Nom de la millora: Afegir llista d'adreces dels infants Importància: Molt important (Aquí podeu posar: Imprescindible, Molt important, Poc important, si hi ha temps) Descripció: Vull poder tenir una llista d'on viuen els infants per les meves raons secretes que no tenen cap sentit. Finalment us dic les millores que ja tinc pensat fer per no repetir-les: Fer que només pugueu accedir a la informació dels infants, noms més descriptius de les accions, que en comptes de dir Django digui MIV, i intentar que per defecte estiguin seleccionats els infants apuntats aquest any. Moltes gràcies, Pau Carbonell Enviat el 31/5/19 a les famílies. A partir d’ara ens referirem a aquest enviament com a ronda 2 de les famílies. Bon dia, Us envio aquest correu, ja que us vau oferir voluntaris per provar l'aplicació web de les inscripcions i vau fer la prova anterior. Us demano que un altre cop proveu l'aplicació ara que ja hi ha totes les funcionalitats i per comprovar que no hi ha cap error. Us torno a posar les instruccions amb algunes modificacions. Primer de tot, per entrar a l'aplicació heu d'anar a aquest enllaç: https://powerful-eyrie-84666.herokuapp.com/inscripcions/ . Ara us proposo dues tasques a realitzar: Fer una inscripció nova i Renovar la inscripció. Primer de tot us proposo fer una inscripció nova fent clic a l'enllaç Nova inscripció. Ompliu tot el formulari amb les dades que vulgueu (no cal que siguin reals) excepte el camp de correu preferent que ha de ser un correu que pugueu consultar. En acabar us hauria de sortir una pàgina amb tota la informació que heu introduït i un botó per descarregar la fitxa. Intenteu descarregar la fitxa. Al correu que heu introduït al camp correu preferent us hauria d'haver arribat un correu amb la fitxa adjuntada. Us proposo coses que podeu provar: ● Proveu de posar caràcters poc comuns. No hi hauria d'haver cap problema amb què poseu caràcters com accents oberts i tancats, ces trencades, eles geminades o qualsevol altre tipus de caràcters. ● Tots els camps tenen un límit de caràcters, si en algun camp necessiteu més espai, feu-m'ho saber. pàg. 70
● Hi ha persones que han tingut problemes en descarregar la fitxa però no acabo de trobar per què, si us surt algun error, feu-li una captura i envieu-me-la. ● Mireu que a la fitxa generada cap camp surti de la pàgina o es vegi malament. La segona tasca és anar a la pàgina principal i fer clic a Renovar Inscripció. Això és el que faríem si ja estiguéssim inscrits i ens volem inscriure un curs més. Introduïu el nom de l'infant o jove que heu creat abans en el camp i feu clic a Inscriu. Us hauria de sortir que heu inscrit l'infant o jove un curs més. Al correu que heu introduït al camp correu preferent us hauria d'haver arribat un correu amb la fitxa adjuntada. La informació a introduir és el nom de l'infant perquè és l'única informació obligatòria i si pràcticament única que demanem. Moltes gràcies per l'ajuda, Atentament, Pau Carbonell Enviat el 31/5/19 als organitzadors. A partir d’ara ens referirem a aquest enviament com a ronda 2 dels organitzadors. Bon dia, Us envio aquest correu, ja que us vau oferir voluntaris (com a mínim la majoria) per provar l'aplicació web de les inscripcions. He posat en negreta les coses noves per si no voleu repetir el que ja heu fet. Primer de tot, per entrar a l'aplicació heu d'anar a aquest enllaç: https://powerful-eyrie-84666.herokuapp.com/inscripcions/ . Segon heu d'accedir a la part d'administració. Per fer-ho heu de substituir /inscripcions per /admin. L'usuari i la contrasenya són monitor i somdelmiv. Llavors feu clic a Infants i comença la part divertida. Ara us proposaré diferents tasques a realitzar. Primer de tot intenteu-les fer sense instruccions però a sota teniu com fer-les. Primer de tot intenteu fer cada tasca sense instruccions per veure si és prou intuïtiu. Si algú em vol ajudar encara més que les intenti fer des del mòbil per veure si és el mateix. 1. Descarrega la fitxa d'un infant (el que vulguis) 2. Canvia el correu d'un infant (el que vulguis) 3. Busca els infants nascuts el Setembre de 2013 que estiguin apuntats aquest any. 4. Busca els infants de MIV2 que estiguin apuntats aquest any. 5. Busca un infant sabent el seu cognom. Busca un infant que de cognom es digui Zalaya. 6. Busca un infant que es diu Sonia Parra Barbas, es va apuntar l'any passat però aquest no ho ha fet. 7. Descarregar de cop totes les fitxes dels infants nascuts el 2004 i que s'hagin apuntat aquest any. 8. Descarrega un Pdf amb totes les especifitats alimentaries dels infants apuntats aquest any. 9. Descarrega un Pdf amb els contactes d'una edat, per exemple MIV5 apuntats aquest any. 10. Posa que l'infant Aniceto Vijil Madinabeitia té tots els documents menys la fitxa signada i que ha fet el pagament fraccionat. 11. Elimina un infant 12. Assignar els infants del 2007 a MIV4 (o un altre grup si ja estan a MIV4) pàg. 71
Ara venen les instruccions: 1. Descarrega la fitxa d'un infant (el que vulguis) - Fes clic al nom de qualsevol infant i a baix de tot tria descarregar PDF. 2. Canvia el correu d'un infant (el que vulguis) - Fes clic al nom de qualsevol infant i canvia la informació del camp correu, per acabar a baix de tot fes clic a DESAR. 3. Primer de tot has de dir que vols els infants apuntats aquest any. Filtra per any fent clic sobre els noms dels infants a l'any que toca (el 2013) i després al mes que toca (Setembre) i t'hauria de sortir Natali Valdueza Somoza. 4. Primer de tot has de dir que vols els infants apuntats aquest any. Filtra fent clic a MIV2 a la dreta de la pantalla a la secció de grup. 5. Gairebé a dalt de tot hi ha un cercador on pots buscar per nom, cognoms i data de naixement. Posa el cognom i hauria de sortir l'Elvis Oliver Zalaya. 6. Primer de tot has de filtrar per els infants apuntats l'any passat. Filtra fent clic al any corresponent a la dreta a la secció de últim curs. Després busca pel cercador de dalt. 7. Primer de tot has de posar els infants que s'han apuntat aquest any. Filtra pels infants nascuts el 2004 amb les dates que hi ha sobre els noms dels infants. Els selecciones tots i entre les dates i els noms dels infants hi ha un desplegable on has de triar descarregar fitxes. Fas clic a Anar i es descarregaran. 8. Selecciona tots els infants alhora amb la casella a la cantonada superior esquerra. Entre les dates i els noms dels infants hi ha un desplegable on has de triar Especificitats alimentàries. Fas clic a Anar i es descarregarà. 9. Primer de tot has de dir que vols els infants apuntats aquest any. Filtra fent clic a MIV2 a la dreta de la pantalla a la secció de grup. Selecciona tots els infants alhora amb la casella a la cantonada superior esquerra. Entre les dates i els noms dels infants hi ha un desplegable on has de triar Full Contacte. Fes clic a Anar i es descarregarà. 10. Troba l'infant com al pas 4, sense entrar a les dades de l'infant selecciona els camps adequats i al final fes clic a desar . 11. No hauries de poder, ni des del menú de les altres accions ni entrant a la informació d'un infant. 12. Primer de tot filtra per l'any que han nascut fent clic a l'any. Selecciona'ls tots i tira l'opció d'assignar al grup que vulguis. Fes clic a anar i ja està. Molt bé, ara que heu fet les tasques proposades necessito que em digueu en quines tasques heu necessitat l'explicació i en quines no ho heu aconseguit ni amb l'explicació. M'ho podeu passar escrit responent el correu o explicant-m'ho en persona dient els problemes que heu tingut. També digueu-me si us ha saltat algun error i que estàveu fent perquè saltés l'error. Moltes gràcies per provar-ho, Atentament, Pau Carbonell D’aquests enviaments cal destacar diverses coses. Per exemple, he proposat als voluntaris una plantilla per tal de valorar l’aplicació i donar propostes per tal de poder controlar millor el que volen dir. També cal tenir en compte que en el cas dels organitzadors els he donat unes tasques a realitzar sense donar-los instruccions de com fer-ho per tal de poder comprovar com d’intuitiva és l’aplicació, tot i que després els he donat instruccions si no ho aconseguien fer. També he intentat que alguns voluntaris realitzessin les proves en mòbils o pàg. 72
tablets en comptes d’ordinadors, ja que és un medi que també és possible i que val la pena provar. B. Respostes de les famílies i monitors En aquest apartat parlarem de les respostes que han donat els voluntaris i si s’han portat a terme les seves propostes. Ho organitzarem per enviaments. Enviament 1 de les famílies Hola Pau, tot ha anat com una seda. He inscrit i he renvat la XXXX, i he rebut els 2 pdf per email a la safata d'entrada (no com a SPAM) 2 suggeriments Nom de la millora: Passar el corrector ortogràfic i gramatial Importància: Poc important Descripció: Nohe vist faltes dortigrafia, però sí un error de text (no sé si hi ha algun més...). A la pagina de renovació, on explica què fer si no recordes amb quin nomvas inscriure el nen, surt ".... [email protected] dient que vols FER tornar a apuntar..." . Crec que SOBRA LA PARAULA FER Nom de la millora: Missatge de Finalitzacó Importància: Molt important, Poc important Descripció: Un cop acabat el formulari, estaria bé veure algun missatge tipus "Inscripcio Finalitzada amb Èxit" o alguna cosa així. Si no, dona la sensació de que poder cal fer alguna cosa més (encara que no calgui) BONA FEINA!!!! XXXX La proposta Passar el corrector ortogràfic i gramatical ha estat aplicada en posteriors versions del sistema passant tot el text de l’aplicació per un corrector i llegint amb deteniment intentant trobar errors. La proposta Missatge de Finalització ha estat aplicada en posteriors versions del sistema millorant la pàgina que es mostra quan es finalitza una inscripció posant un missatge clar que s’ha completat la inscripció. Ei Pau, Error: en inscripció un cop acabat el pas 5 m'ha tornat al pas 1 i no m'ha donat cap feedback, tampoc he rebut el email de confirmació ni res. Desacarregar PDF peta error intern 500. Correció: Pas 1: texte : "[...] realitat de l'entorn del l'entita. [...]" pàg. 73
La proposta referent a posar un límit d’edat en la inscripció ja estava implementada però el voluntari no ho va veure perquè no va mirar la part d'inscripcions fins més tard. La proposta de recuperar la fitxa d’un any per un altre ja estava implementada amb el procés de renovació de la inscripció però el voluntari no ho va veure perquè no va mirar la part d'inscripcions fins més tard. pàg. 80