You are on page 1of 154

UNIVERSIDADE DE SANTIAGO DE

COMPOSTELA

ESCOLA TÉCNICA SUPERIOR DE ENXEÑARÍA

Aplicación do cálculo da pegada


ecolóxica universitaria para plataformas
iOS

Autor:
Antonio Carou Iglesias
Directores:
Dora Blanco Heras
Francisco Argüello Pedreira

Grao en Enxeñaría Informática


Setembro 2013
Traballo de Fin de Grao presentado na Escola Técnica Superior de Enxeñaría
da Universidade de Santiago de Compostela para a obtención do Grao en
Enxeñaría Informática
Dna. Dora Blanco Heras , Profesora do Departamento de Electrónica
e Computación da Universidade de Santiago de Compostela, e D. Francisco
Argüello Pedreira, Profesor do Departamento de Electrónica e Computación
da Universidade de Santiago de Compostela,

INFORMAN:

Que a presente memoria, titulada (Aplicación do cálculo da pegada ecolóx-


ica universitaria para plataformas iOS), presentada por D. Antonio Carou
Iglesias para superar os créditos correspondentes ao Traballo de Fin de Grao
da titulación de Grao en Enxeñaría Informática, realizouse baixo nosa dirección
no Departamento de Electrónica e Computación da Universidade de Santiago de
Compostela.

E para que así conste aos efectos oportunos, expiden o presente informe en
Santiago de Compostela, a (9 de Setembro do 2013):

O director, O codirector, O alumno,

Dora Blanco Heras Francisco Argüello Pedreira Antonio Carou Iglesias

i
ii
Agradecementos

Á miña compañeira e futura dona, grazas polo seu mezenazgo e infinita pa-
ciencia.

Á miña familia e amigos pola súa comprensión e ánimos.

A os meus compañeiros de pupitre pola súa inestimable axuda durante estes


4 anos.

A os directores do proxecto pola súa incondicional dispoñibilidade e estímulo.

iii
iv
Resumo

Dende finais da década dos 70, a humanidade demanda máis recursos dos que
a terra pode rexenerar cada ano. Este sobrexiro ecolóxico12 non resulta sostible e
precisa dun replantexamento sobre o consumo enerxético e tomar medidas, tanto
de xeito individual como colectivo para desfacer este sobrexiro e facer volver á
humanidade a vivir dentro dos límites da Terra.

A pegada ecolóxica é un indicador ambiental desenvolto na Universidade da


Columbia Británica por Mathis Wackernagel e William Rees[18]. Este indicador
compara o consumo de recursos de un sector relacionado cunha actividade deter-
minada coa productividade ecolóxica da Terra. Esta relación calcula o consumo
de CO2 asociado a dita actividade para coñecer a superficie de terreo con vex-
etación necesario para asumir estas emisións.

Nos últimos anos, a Universidade de Santiago de Compostela, a través da Co-


ordinación do Plan de Desenvolvemento Sostible dependente do Vicerrectorado de
Responsabilidade Social e Calidade desenvolve estudos sobre a Pegada Ecolóxica.
Co presente proxecto continúase coa tarefa de recadar información e datos sobre
o impacto medioambiental da Universidade de Santiago de Compostela[7]. Para
recadar dita información, Juan David Otero Vázquez desenvolveu no ano 2011 un
sistema de cálculo de pegada ecolóxica para o seu proxecto de fin de carreira[12].
No ano 2012 Javier López Fandiño desenvolveu unha aplicación para sistemas
Android[8] co obxectivo de ampliar as plataformas a través das cales ter acceso a
información relativa á pegada ecolóxica e á adquisición de datos que alimente a
primeira aplicación. Con este mesmo obxectivo desenvolverase no presente prox-
ecto unha aplicación para plataformas iOS que permita aos usuarios calcular a
súa pegada ecolóxica e acceder a información relativa a esta.

Adicionalmente, este proxecto procura ofrecer ao usuario algunha funcionali-


dade adicional, aumentando a utilidade da aplicación e mellorar a usabilidade na
procura dunha fidelización por parte do mesmo, axudando a que o fluxo de datos
1
Entendemos sobrexiro ecolóxico o momento no cal a demanda da humanidade sobre a
natureza excede a capacidade da biosfera.
2
http://www.footprintnetwork.org/es/index.php/gfn/page/earth_overshoot_day/

v
e información sexa, ademais de abundante, regular. Para acadar este obxectivo
servímonos da metodoloxía de comportamento de Fogg[2] como guía para buscar
estímulos que fagan que o usuario utilice máis de cotío a aplicación (fidelización).

vi
Índice Xeral

1 Introdución 1
1.1 Contextualización . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Motivacións e Obxectivos . . . . . . . . . . . . . . . . . . . . . . . 3
1.3 Estrutura da memoria . . . . . . . . . . . . . . . . . . . . . . . . . 4

2 A Pegada Ecolóxica e FBM 5


2.1 Pegada Ecolóxica . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.1.1 A USC e a súa relación coa Pegada Ecolóxica . . . . . . . . . 6
2.1.2 Metodoloxía de Cálculo da Pegada Ecolóxica . . . . . . . . . 7
2.2 Metodoloxía de Comportamento de Fogg . . . . . . . . . . . . . . . 7

3 Xestión do Proxecto 11
3.1 Xestión do Alcance do Proxecto . . . . . . . . . . . . . . . . . . . . 11
3.1.1 Metodoloxía do Desenvolvemento . . . . . . . . . . . . . . . 11
3.1.2 Xestión de Requerimentos . . . . . . . . . . . . . . . . . . . 12
3.1.3 Estrutura de Desagregación do Traballo . . . . . . . . . . . . 12
3.2 Xestión de Riscos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
3.3 Xestión Temporal . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.3.1 Etapa de Formación Preliminar . . . . . . . . . . . . . . . . 19
3.3.2 Etapa de Xestión do Proxecto . . . . . . . . . . . . . . . . . 20
3.3.3 Etapa de Análise Primeira Iteración . . . . . . . . . . . . . . 20
3.3.4 Etapa de Deseño Primeira Iteración . . . . . . . . . . . . . . 20
3.3.5 Etapa de Implementación Primeira Iteración . . . . . . . . . 21
3.3.6 Etapa de Análise Segunda Iteración . . . . . . . . . . . . . . 21
3.3.7 Etapa de Deseño Segunda Iteración . . . . . . . . . . . . . . 21
3.3.8 Etapa de Implementación Segunda Iteración . . . . . . . . . 21
3.4 Xestión do Custo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.4.1 Factores Ambientais . . . . . . . . . . . . . . . . . . . . . . . 23
3.5 Xestión da Configuración . . . . . . . . . . . . . . . . . . . . . . . 26
3.5.1 Xestión do Código Fonte . . . . . . . . . . . . . . . . . . . . 26
3.5.2 Xestión da Documentación . . . . . . . . . . . . . . . . . . . 26

4 Elaboración do Catálogo de Requerimentos 27


4.1 Introdución . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

vii
4.2 Glosario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
4.2.1 Definicións . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
4.2.2 Acrónimos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
4.3 Participantes no Proxecto . . . . . . . . . . . . . . . . . . . . . . . 29
4.4 Obxectivos do Sistema . . . . . . . . . . . . . . . . . . . . . . . . . 29
4.5 Actores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
4.6 Catálogo de Requerimentos da Apaalicación . . . . . . . . . . . . . 31
4.6.1 Requerimentos Funcionais . . . . . . . . . . . . . . . . . . . 31
4.6.2 Requerimentos Non Funcionais . . . . . . . . . . . . . . . . . 33
4.7 Especificación de Requerimentos . . . . . . . . . . . . . . . . . . . 33
4.7.1 Requerimentos Funcionais . . . . . . . . . . . . . . . . . . . 34
4.7.2 Requerimentos Non Funcionais . . . . . . . . . . . . . . . . . 43
4.8 Casos de Uso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
4.8.1 Diagrama de Casos de Uso . . . . . . . . . . . . . . . . . . . 46
4.9 Matriz de Trazabilidade . . . . . . . . . . . . . . . . . . . . . . . . 60
4.10 Enunciado do Alcance do Proxecto . . . . . . . . . . . . . . . . . . 60
4.10.1 Definición do Alcance do Proxecto . . . . . . . . . . . . . . . 60
4.10.2 Criterios de Aceptación do Produto . . . . . . . . . . . . . . 61
4.10.3 Entregables do Proxecto . . . . . . . . . . . . . . . . . . . . 61
4.10.4 Exclusións do Proxecto . . . . . . . . . . . . . . . . . . . . . 61
4.10.5 Restricións do Proxecto . . . . . . . . . . . . . . . . . . . . . 61
4.10.6 Supostos do Proxecto . . . . . . . . . . . . . . . . . . . . . . 62

5 Deseño 63
5.1 Plataforma iOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
5.1.1 Compoñentes da Plataforma . . . . . . . . . . . . . . . . . . 64
5.1.2 Modelo Vista Controlador . . . . . . . . . . . . . . . . . . . 65
5.1.3 Arquitectura . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
5.2 Deseño e Implementación . . . . . . . . . . . . . . . . . . . . . . . 68
5.2.1 Modelo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
5.2.2 Vista . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
5.2.3 Controlador . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

6 Validación e Probas 105


6.1 Validación de Requerimentos . . . . . . . . . . . . . . . . . . . . . 105
6.1.1 Primeira Iteración . . . . . . . . . . . . . . . . . . . . . . . . 105
6.1.2 Segunda Iteración . . . . . . . . . . . . . . . . . . . . . . . . 110
6.2 Usabilidade, Utilidade e Fidelización . . . . . . . . . . . . . . . . . 114
6.2.1 Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
6.2.2 En canto ao test de utilidade . . . . . . . . . . . . . . . . . . 117
6.2.3 En canto á fidelización . . . . . . . . . . . . . . . . . . . . . 118
6.3 Propostas de Mellora dos Usuarios Piloto . . . . . . . . . . . . . . 120

viii
7 Conclusións 121
7.1 Conclusións . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
7.2 Posibles Ampliacións . . . . . . . . . . . . . . . . . . . . . . . . . . 122

A Manual de Instalación 123


A.1 Instalación no Dispositivo Móbil . . . . . . . . . . . . . . . . . . . 123
A.2 Probas no Simulador . . . . . . . . . . . . . . . . . . . . . . . . . . 123
A.2.1 Preparando o sistema . . . . . . . . . . . . . . . . . . . . . . 124

B Manual de Usuario 125


B.1 Selección Perfil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
B.2 Xanela Cuestionario . . . . . . . . . . . . . . . . . . . . . . . . . . 126
B.2.1 Cuestionario Transporte . . . . . . . . . . . . . . . . . . . . 127
B.2.2 Cuestionario Papel . . . . . . . . . . . . . . . . . . . . . . . 129
B.3 Cuestionario Estatísticas . . . . . . . . . . . . . . . . . . . . . . . . 129
B.3.1 Consellos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
B.3.2 Información . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
B.3.3 Resultados Pegada Ecolóxica . . . . . . . . . . . . . . . . . . 132
B.3.4 Borrar Datos . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
B.4 Xanela Calendario . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
B.5 Xanela Traballo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
B.6 Xanela Novidades . . . . . . . . . . . . . . . . . . . . . . . . . . . 135

Bibliografía 137

Índice de Figuras

2.1 O modelo de comportamento de Fogg (FBM). . . . . . . . . . . . . 8

3.1 Iteración n e iteración n+1 dunha metodoloxía áxil por incrementos 12


3.2 Estrutura de Desagregación do Traballo . . . . . . . . . . . . . . . 14
3.3 Diagrama de Gantt . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

4.1 Diagrama de Casos de Uso Global . . . . . . . . . . . . . . . . . . 47


4.2 Subsistema Perfil . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
4.3 Subsistema Enquisa . . . . . . . . . . . . . . . . . . . . . . . . . . 49
4.4 Subsistema Pegada Ecolóxica . . . . . . . . . . . . . . . . . . . . . 52
4.5 Subsistema Calendario . . . . . . . . . . . . . . . . . . . . . . . . . 53
4.6 Subsistema Novidades . . . . . . . . . . . . . . . . . . . . . . . . . 55

ix
4.7 Subsistema Bolsa de Traballo . . . . . . . . . . . . . . . . . . . . . 58

5.1 Capas da plataforma iOS . . . . . . . . . . . . . . . . . . . . . . . 63


5.2 Modelo-Vista-Controlador . . . . . . . . . . . . . . . . . . . . . . . 65
5.3 Arquitectura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
5.4 Modelo Entidade-Relación da base de datos SQLite . . . . . . . . . 71
5.5 Vista inicial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
5.6 Vistas accesibles dende o inicio da aplicación . . . . . . . . . . . . 77
5.7 Tipos vistas segundo o tipo de resposta da pregunta . . . . . . . . 77
5.8 Tipos vistas para respostas numéricas . . . . . . . . . . . . . . . . 78
5.9 Tipos vistas para listas e detalles . . . . . . . . . . . . . . . . . . . 78
5.10 Tipos vistas para detalles de diferentes entidades . . . . . . . . . . 79
5.11 Vista Resultados Pegada Ecolóxica . . . . . . . . . . . . . . . . . . 80
5.12 Diagrama de Clases do Subsistema Perfil . . . . . . . . . . . . . . . 81
5.13 Diagrama de Clases do Subsistema Enquisa . . . . . . . . . . . . . 82
5.14 Diagrama de Clases do Subsistema Calendario . . . . . . . . . . . . 83
5.15 Diagrama de Clases do Subsistema Bolsa de Traballo . . . . . . . . 84
5.16 Diagrama de Clases do Subsistema Novidades . . . . . . . . . . . . 85
5.17 Diagrama de Clases do Subsistema Pegada Ecolóxica . . . . . . . . 86
5.18 Diagrama de Clases Integrado . . . . . . . . . . . . . . . . . . . . . 87
5.19 Diagrama de Secuencia CU.17 Acceso a Lista de Ofertas de Traballo 97
5.20 Diagrama de Secuencia CU.19 Accede a Detalles da Oferta de Traballo 97
5.21 Diagrama de Secuencia CU.13 Acceso á Lista de Novidades . . . . 98
5.22 Diagrama de Secuencia CU.15 Accede a Detalles da Novidade . . . 98
5.23 Diagrama de Secuencia CU.16 Carga Máis Novidades . . . . . . . . 99
5.24 Diagrama de Secuencia CU.10 Acceso a Lista de Citas do Calendario 99
5.25 Diagrama de Secuencia CU.12 Accede a Detalles Cita . . . . . . . . 100
5.26 Diagrama de Secuencia CU.01 Selección do Perfil de Usuario . . . . 100
5.27 Diagrama de Secuencia CU.02 Borrar Datos de Usuario . . . . . . . 101
5.28 Diagrama de Secuencia para os casos de uso CU.03 e CU.05, Cobre
Enquisa Transporte e Cobre Enquisa Papel respectivamente . . . . 102
5.29 Diagrama de Secuencia para os casos de uso CU.04 e CU.06, Con-
sulta Resultados Transporte e Consulta Resultados Papel respecti-
vamente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
5.30 Diagrama de Secuencia para CU.07 Envía Datos . . . . . . . . . . 103

6.1 Respostas medias ao cuestionario de usabilidade . . . . . . . . . . . 117


6.2 Respostas medias ao cuestionario de utilidade . . . . . . . . . . . . 117
6.3 Respostas medias ao cuestionario de utilidade segregadas por tipo
de usuario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119

A.1 Captura da interface do Xcode . . . . . . . . . . . . . . . . . . . . 124

B.1 Permisos de conexión a internet (a) e notificacións (b) . . . . . . . 125

x
B.2 Selección Perfil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
B.3 Xanela Cuestionario. Cuestionarios incompletos (a) e cuestionarios
completos (b) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
B.4 Elementos comúns do cuestionario Transporte (1) . . . . . . . . . . 128
B.5 Áreas comúns do cuestionario Transporte (2) . . . . . . . . . . . . 129
B.6 Xanela Estatísticas . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
B.7 Vistas Consellos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
B.8 Vistas Información . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
B.9 Vistas Resultados Pegada Ecolóxica . . . . . . . . . . . . . . . . . 132
B.10Borrar Datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
B.11Xanela Calendario . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
B.12Xanela Traballo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
B.13Xanela Novidades . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135

Índice de Táboas

3.1 Valoración da probabilidade de que ocorra un risco . . . . . . . . . 13


3.2 Valoración do impacto sobre o prazo de entrega ou o esforzo re-
querido no caso de que ocorra un risco . . . . . . . . . . . . . . . . 13
3.3 Nivel de exposición ao risco . . . . . . . . . . . . . . . . . . . . . . 15
3.4 Risco RSC.01 Planificación Optimista . . . . . . . . . . . . . . . . 15
3.5 Risco RSC.02 Un atraso nunha tarefa, produce atrasos en cascada
nas tarefas dependentes . . . . . . . . . . . . . . . . . . . . . . . . 16
3.6 Risco RSC.03 Desenvolvemento deficiente, implica recodificar partes
da aplicación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.7 Risco RSC.04 Os obxectivos non se definiron correctamente . . . . 17
3.8 Risco RSC.05 Os intervalos para a revisión e decisión dos plans,
prototipos e/ou especificacións resultan máis lentos do esperado . . 17
3.9 Risco RSC.06 A falta de motivación e moral reduce a productividade 18
3.10 Risco RSC.07 A falta de motivación e moral reduce a productividade 18
3.11 Risco RSC.08 Apple rexeita a publicación na App Store . . . . . . 19
3.12 Táboa de custos por hora relativos aos recursos . . . . . . . . . . . 24
3.13 Táboa de custos relativos ao material . . . . . . . . . . . . . . . . . 25
3.14 Táboa de custos relativos ao software . . . . . . . . . . . . . . . . . 25
3.15 Custos Totais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

4.1 Participantes no proxecto. . . . . . . . . . . . . . . . . . . . . . . . 29


4.2 Obxectivo do sistema Obx.01 . . . . . . . . . . . . . . . . . . . . . 29

xi
4.3 Obxectivo do sistema Obx.02 . . . . . . . . . . . . . . . . . . . . . 29
4.4 Obxectivo do sistema Obx.03 . . . . . . . . . . . . . . . . . . . . . 29
4.5 Obxectivo do sistema Obx.04 . . . . . . . . . . . . . . . . . . . . . 30
4.6 Obxectivo do sistema Obx.05 . . . . . . . . . . . . . . . . . . . . . 30
4.7 Obxectivo do sistema Obx.06 . . . . . . . . . . . . . . . . . . . . . 30
4.8 Obxectivo do sistema Obx.07 . . . . . . . . . . . . . . . . . . . . . 30
4.9 Actor Act.01 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.10 Descrición das opcións de relevancia dun requerimento . . . . . . . 34
4.11 Requerimento RF.01: “Seleccionar o perfil entre 3 diferentes PDI,
PAS e Estudante” . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.12 Requerimento RF.02: “Consultar información relativa á Pegada
Ecolóxica” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
4.13 Requerimento RF.03: “Consultar recomendacións que lle permita
reducir a súa Pegada Ecolóxica” . . . . . . . . . . . . . . . . . . . 35
4.14 Requerimento RF.04: “Acceder ao cuestionario para a recollida de
información relativa a os hábitos de transporte” . . . . . . . . . . . 35
4.15 Requerimento RF.05: “Acceder ao cuestionario para a recollida de
información relativa ao consumo de papel” . . . . . . . . . . . . . . 36
4.16 Requerimento RF.06: “Recordatorio cada 6 meses” . . . . . . . . . 36
4.17 Requerimento RF.07: “Borrar todos os datos respondidos nos cues-
tionarios” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
4.18 Requerimento RF.08: “Consultar o resultado do cálculo da súa Pe-
gada Ecolóxica” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
4.19 Requerimento RF.09: “Amosará o resultado da Pegada Ecolóxica
do usuario comparada coa media da USC” . . . . . . . . . . . . . . 37
4.20 Requerimento RF.10: “Engade novidades á lista” . . . . . . . . . . 38
4.21 Requerimento RF.11: “Obter datos do calendario da páxina web da
ETSE” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
4.22 Requerimento RF.12: “Listar citas do calendario agrupados por días” 38
4.23 Requerimento RF.13: “Acceder a detalles da cita do calendario” . . 39
4.24 Requerimento RF.14: “Obter datos da sección novidades da páxina
web da ETSE” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.25 Requerimento RF.15: “Listar as novidades” . . . . . . . . . . . . . 39
4.26 Requerimento RF.16: “Acceder a detalles de unha novidade” . . . . 40
4.27 Requerimento RF.17: “Obter datos da bolsa de traballo da páxina
web da ETSE” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.28 Requerimento RF.18: “Listar as ofertas de traballo agrupadas por
perfil profesional” . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.29 Requerimento RF.19: “Acceder a os detalles dunha oferta de traballo” 41
4.30 Requerimento RF.20: “Subir datos ao servidor central” . . . . . . . 41
4.31 Requerimento RF.21: “Actualiza lista de citas do calendario” . . . 42
4.32 Requerimento RF.22: “Actualiza lista de novidades” . . . . . . . . 42
4.33 Requerimento RF.23: “Actualiza ofertas de traballo” . . . . . . . . 42

xii
4.34 Requerimento RF.24: “As respostas da enquisa poden ser consul-
tadas” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.35 Requerimento RP.01: “Desenvolta para dispositivos co sistema op-
erativo iOS de Apple” . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.36 Requerimento RP.02: “Traballar con unha base de datos MySQL” . 43
4.37 Requerimento RP.03: “Dispoñer dunha conta de desenvolvedor de
Apple gratuíta para as etapas de implementación” . . . . . . . . . 44
4.38 Requerimento RP.04: “Dispoñer dunha conta de desenvolvedor de
Apple de pago para a etapa de despregue” . . . . . . . . . . . . . . 44
4.39 Requerimento RI.01: “Interface amigable e usable” . . . . . . . . . 44
4.40 Requerimento RI.02: “Interface orientada a dispositivos táctiles” . 45
4.41 Requerimento RD.01: “Gardar as respostas en local” . . . . . . . . 45
4.42 Requerimento RD.02: “Os datos gardados en local deben ser al-
maceados nunha base de datos SQLite” . . . . . . . . . . . . . . . 45
4.43 Requerimento R.01: “A aplicación debe velar polo anonimato do
usuario” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
4.44 Requerimento R.02: “Non accederá á información da ETSE sen ter
cuberta as enquisas” . . . . . . . . . . . . . . . . . . . . . . . . . . 46
4.45 Caso de Uso CU.01 . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
4.46 Caso de Uso CU.02 . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
4.47 Caso de Uso CU.03 . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
4.48 Caso de Uso CU.04 . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
4.49 Caso de Uso CU.05 . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
4.50 Caso de Uso CU.06 . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
4.51 Caso de Uso CU.07 . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
4.52 Caso de Uso CU.08 . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
4.53 Caso de Uso CU.09 . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
4.54 Caso de Uso CU.10 . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
4.55 Caso de Uso CU.11 . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
4.56 Caso de Uso CU.12 . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
4.57 Caso de Uso CU.13 . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
4.58 Caso de Uso CU.14 . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
4.59 Caso de Uso CU.15 . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
4.60 Caso de Uso CU.16 . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
4.61 Caso de Uso CU.17 . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
4.62 Caso de Uso CU.18 . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
4.63 Caso de Uso CU.19 . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
4.64 Matriz de Trazabilidade . . . . . . . . . . . . . . . . . . . . . . . . 60

5.1 Táboa de Entidades . . . . . . . . . . . . . . . . . . . . . . . . . . 72


5.2 Táboa de Relacións . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
5.3 Táboa de Atributos . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
5.4 CRC Clase AppDelegate . . . . . . . . . . . . . . . . . . . . . . . . 88

xiii
5.5 CRC Clase MainViewController . . . . . . . . . . . . . . . . . . . . 88
5.6 CRC Clase SeleccionPerfilViewController . . . . . . . . . . . . . . . 88
5.7 CRC Clase UITabBarController . . . . . . . . . . . . . . . . . . . . 88
5.8 CRC Clase UINavigationController . . . . . . . . . . . . . . . . . . 89
5.9 CRC Clase SeleccionCuestionarioViewController . . . . . . . . . . 89
5.10 CRC Clase DetalleNovidadeViewController . . . . . . . . . . . . . 89
5.11 CRC Clase DetalleOfertaTraballoViewController . . . . . . . . . . 89
5.12 CRC Clase DetalleCitaViewController . . . . . . . . . . . . . . . . 89
5.13 CRC Clase DetalleInformacionViewController . . . . . . . . . . . . 90
5.14 CRC Clase DetalleConselloViewController . . . . . . . . . . . . . . 90
5.15 CRC Clase EstatisticaViewController . . . . . . . . . . . . . . . . . 90
5.16 CRC Clase NovidadesTableViewController . . . . . . . . . . . . . . 91
5.17 CRC Clase BolsaTraballoTableViewController . . . . . . . . . . . . 91
5.18 CRC Clase BolsaTraballoTableViewController . . . . . . . . . . . . 91
5.19 CRC Clase ConsellosTableViewController . . . . . . . . . . . . . . 91
5.20 CRC Clase InformacionTableViewController . . . . . . . . . . . . . 92
5.21 CRC Clase Utilidades . . . . . . . . . . . . . . . . . . . . . . . . . 92
5.22 CRC Clase RespuestaChecksViewController . . . . . . . . . . . . . 92
5.23 CRC Clase RespuestaChecksViewController . . . . . . . . . . . . . 93
5.24 CRC Clase RespuestaValorViewController . . . . . . . . . . . . . . 93
5.25 CRC Clase RespuestaDistanciaViewController . . . . . . . . . . . . 93
5.26 CRC Clase RespuestaCantidadViewController . . . . . . . . . . . . 93
5.27 CRC Clase EnquisaDAO . . . . . . . . . . . . . . . . . . . . . . . . 94
5.28 CRC Clase NovidadesDAO . . . . . . . . . . . . . . . . . . . . . . 94
5.29 CRC Clase TraballosDAO . . . . . . . . . . . . . . . . . . . . . . . 94
5.30 CRC Clase CitasDAO . . . . . . . . . . . . . . . . . . . . . . . . . 94
5.31 CRC Clase XeralDAO . . . . . . . . . . . . . . . . . . . . . . . . . 95
5.32 CRC Clase LocalDB . . . . . . . . . . . . . . . . . . . . . . . . . . 95
5.33 CRC Clase Perfil . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
5.34 CRC Clase Preguntas . . . . . . . . . . . . . . . . . . . . . . . . . 95
5.35 CRC Clase Respostas . . . . . . . . . . . . . . . . . . . . . . . . . 96
5.36 CRC Clase Cita . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
5.37 CRC Clase Traballo . . . . . . . . . . . . . . . . . . . . . . . . . . 96
5.38 CRC Clase Novidades . . . . . . . . . . . . . . . . . . . . . . . . . 96
5.39 CRC Clase Informacion . . . . . . . . . . . . . . . . . . . . . . . . 96
5.40 CRC Clase Consello . . . . . . . . . . . . . . . . . . . . . . . . . . 96

6.1 Táboa de puntuacións no test de usabilidade . . . . . . . . . . . . . 116


6.2 Táboa de puntuacións no test de utilidade . . . . . . . . . . . . . . 118
6.3 Táboa de propostas de mellora dos usuarios . . . . . . . . . . . . . 120

xiv
Capítulo 1

Introdución

1.1 Contextualización
Nos anos noventa, William Rees e Mathis Wackernagel da universidade da
Columbia Británica, desenvolven o concepto de Pegada Ecolóxica[18]. Este con-
cepto permite estimar cuantitativamente os requerimentos ecolóxicos dunha de-
terminada entidade, poboación, rexión ou país. As medidas que devolve o cálculo
de dita pegada represéntanse en unidades de superficie equivalentes de terreo
ecolóxicamente produtivo. Este terreo supón unha fonte de recursos de terra e
agua que deberían ser necesarios para asimilar os residuos derivados da actividade
socioeconómica e cultural da entidade estudada. Ademais do concepto definiron
un modelo de cálculo de esta Pegada Ecolóxica, que aplicaron a diferentes países
con un alto grao de desenvolvemento. Os cálculos efectuados puxeron de man-
ifesto resultados pouco optimistas en canto a sostebilidade, presentando graves
déficits ecolóxicos.

A USC desenvolveu un plan de desenvolvemento sostible, que no seu segundo


eixe “Planificación, Xestión e Avaliación Medioambiental”1 propón como unha
das liñas de actuación coñecer a pegada ecolóxica derivada da actividade uni-
versitaria. Para recopilar a información necesaria sírvense de datos de consumo
dos recursos e de bolseiros que se adican a realizar enquisas, principalmente so-
bre os hábitos de transporte e consumo de papel relacionados coa actividade
universitaria. Os datos recollidos pásanse a unhas follas e cálculo as cales devol-
ven os resultados que precisan para a elaboración de informes e a súa publicación.

O fin de esta liña de traballo non é únicamente recabar información, senon


que unha vez coñecido os datos, se poida chegar a inducir un cambio de conduta
reducindo o impacto no medio ambiente da usc en xeral, e dos usuarios da apli-
cación en particular[19].
1
https://www.usc.es/plands/seccions/datos_plan/eixe2/eixe2.htm

1
2 CAPÍTULO 1. INTRODUCIÓN

En Setembro do 2011, Juan David Otero Vázquez[12] presentou no seu Prox-


ecto de Fin de Carreira unha ferramenta que automatiza o cálculo da pegada
ecolóxica, podendo prescindir da utilización de follas de cálculo, e automatizando
a xeración e mellorando a visualización de estatísticos e informes.

Pese a todo, requírese dos bolseiros que seguiran realizando enquisas presen-
ciais para obter datos relativos ao transporte e hábitos de consumo de papel. Co
obxectivo de que os datos cheguen de xeito autónomo, Javier López Fandiño[8]
desenvolveu unha aplicación para dispositivos móbiles Android. A aplicación
encárgase de realizar a enquisa sobre transporte e consumo de papel e almace-
nala nun servidor á espera de ser procesada. A aplicación de Android presentaba
os resultados da súa pegada ecolóxica e relacionábaos coa media da USC. Ade-
mais ofrecía información adicional sobre a pegada ecolóxica e distintos consellos
para axudar a reducila. Pese a que a aplicación resultou ser usada, non ofrecía su-
ficiente atractivo para que o usuario voltara a utilizala, perdendo a continuidade
do fluxo dos datos.

A utilización de dispositivos móbiles “intelixentes” medra cada ano. Un dato


significativo é o tráfico que xeran estes dispositivos. O “ Visual Networking In-
dex (VNI) Global Mobile Data Traffic Forecast Update” de Cisco®2 que recolle
diferentes datos estatísticos sobre o tráfico que recorre os dispositivos de esta
marca, pon de manifesto que dende 2012 a 2013 case se dobrou o tráfico a través
dos seus dispositivos de interconexión tendo como orixe ou destino un dispositivo
móbil. Ademais estiman que este tráfico se vexa incrementado nun 75% ao longo
do 2014. Resulta destacable que as principais plataformas que xeran dito tráfico
sexan plataformas Android e iOS.

Seguindo co proceso de obter datos con relevancia estatística e que a obtención


de datos se produza de xeito autónomo e continuado, dispóñome a desenvolver
unha aplicación para dispositivos iOS para o cálculo da pegada ecolóxica, que
recolla a información necesaria e ofertar algún servizo adicional co fin de fidelizar
ao usuario. O cálculo da pegada ecolóxica resulta trivial fronte a este outro reto,
conseguir cambiar o comportamento dos usuarios con respecto á aplicación, ofre-
cendo un deseño máis persuasivo da aplicación.

Para comprender de que xeito se pode desenvolver un deseño persuasivo, ax-


udeime do artigo de B.J. Fogg[2] para as conferencias do ano 2009 International
Conference on Persuasive Technology que describe un novo modelo para com-
prender o comportamento humano a través do seu modelo de comportamento
2
http://www.cisco.com/en/US/solutions/collateral/ns341/ns525/ns537/ns705/
ns827/white_paper_c11-520862.html
1.2. MOTIVACIÓNS E OBXECTIVOS 3

(FBM3 ).

Fogg propón que para que unha persoa teña un comportamento desexado
deben cumprirse 3 condicións simultáneamente, que estea suficientemente movi-
tada, que sexa capaz de actuar de esa maneira (habilidade) e que exista un
desencadeante que o faga actuar (desencadeante). Coa aplicación desenvolta no
presente proxecto, trátase de aplicar a metodoloxía de comportamento de Fogg
coa intención de que o usuario da aplicación encha a enquisa e conseguir os datos
necesarios para o cálculo da pegada ecolóxica da universidade.

1.2 Motivacións e Obxectivos


Dende que a USC comezou co plan de xestión e avaliación medioambiental,
estase a traballar para acadar unha automatización de cálculos e obtención de
resultados e para a obtención autónoma de datos suficiente para obter resultados
estatísticamente relevantes. Este proxecto forma parte dun conxunto maior, e
sobretodo busca ampliar a funcionalidade das aplicacións desenvoltas ata o de
agora tentando fidelizar ao usuario.

Na procura de esta fidelización decidiuse reducir o branco da aplicación. Así


resulta máis sinxelo atopar funcionalidades que poidan resultar útiles ou atracti-
vas aos usuarios pertencentes a dito ámbito.

Seleccionada á ETSE4 como branco para a aplicación, esta ofertará o acceso


a información relevante dispoñible na súa páxina web dende a aplicación. En-
tón, a presente aplicación, ademais da recollida e procesado de datos relativos a
transporte e consumo de papel oferta:

• Presenta resultados comparativos coa media da USC.


• Información adicional relativa á Pegada Ecolóxica.
• Consellos para ver reducida a Pegada Ecolóxica.
• Descarga e presenta os eventos gardados no calendario da páxina web da
ETSE5 .
• Obtén as ofertas de traballo colgadas na páxina web da ETSE6 .
• Descarga as novidades que se presentan na páxina web da ETSE7 .
3
Fogg Behavior Model
4
Escola Técnica Superior de Enxeñaría
5
http://www.usc.es/etse/es/event
6
http://www.usc.es/etse/es/view/empleoGL
7
http://www.usc.es/etse/es/view/novidadesGL
4 CAPÍTULO 1. INTRODUCIÓN

1.3 Estrutura da memoria


Esta memoria componse de 7 capítulos, dous apéndices e a bibliografía uti-
lizada.
Capítulo 1: Neste capítulo faise unha pequena introdución aos conceptos xerais
que se van a desenrolar ao longo de esta memoria, introducimos conceptos
de Pegada Ecolóxica e o modelo de comportamento de Fogg, as motivacións
e obxectivos do proxecto e ademais contextualizamos o presente proxecto
poñendo de manifesto a súa pertenza a un proxecto de maior envergadura.
Capítulo 2: Entrarase máis a fondo na pegada ecolóxica, a relación da USC coa
mesma e explicarase en que consiste a metodoloxía de comportamento de
Fogg.
Capítulo 3: Desenvolverase a xestión do proxecto describindo o alcance, como
se xestionarán os riscos, como se desagregará o traballo en tarefas máis
simples. Describirase a planificación temporal realizada e os custos deriva-
dos do desenvolvemento do proxecto. Por último explicarase a xestión da
configuración.
Capítulo 4: En este capítulo realizarase a elaboración de requerimentos da apli-
cación, identificaranse os participantes, describiranse os requerimentos e os
casos de uso. Relacionaranse requerimentos con casos de uso a través dunha
matriz de trazabilidade. Ademais estableceranse os criterios de aceptación
do produto, restriccións e exclusións do proxecto. Por último describiranse
os supostos tidos en conta.
Capítulo 5: En este capítulo deseñarase a aplicación. Describirase a modo de
introdución a arquitectura iOS e o Modelo Vista Controlador e como se
implementa en iOS. Ademais incluirá a descrición das tres partes do MVC
e seu deseño, para iso incluímos en este apartado o diagrama entidade-
relación do modelo, unha descrición das vistas, o diagrama de clases do
controlador e unha serie de diagramas de secuencia.
Capítulo 6: En este capítulo describiranse as probas realizadas sobre a apli-
cación e como se evaluou a usabilidade e utilidade da mesma. Ademais
recóllense algunhas propostas de mellora que resultarían interesantes de
implementar en outros proxectos.
Capítulo 7: Conclusións, melloras futuras e leccións aprendidas.
Apéndice A: Manual de instalación.
Apéndice B: Manual da aplicación que describe como utilizala.
Bibliografía: Referencias utilizadas para o desenvolvemento de este proxecto.
Capítulo 2

A Pegada Ecolóxica e FBM

No presente capítulo ampliarase a información relativa á Pegada Ecolóxica xa


introducida no capítulo 1. Ademais repasarase o traballo desenvolto na USC ata
o de agora, e como este traballo encaixa nun proxecto máis ambicioso. Tamén se
repasará a metodoloxía empregada para o seu cálculo. Describirase o Modelo de
Comportamento de Fogg, tamén introducido no capítulo 1.

2.1 Pegada Ecolóxica


A Pegada Ecolóxica é a medida de canta superficie de auga e terreo biolóxi-
camente produtivo que require unha determinada actividade, poboación ou indi-
viduo para producir todos os recursos que se consumen e asimilar os materiais de
desfeito producidos. As unidades empregadas para representar a Pegada Ecolóx-
ica son, habitualmente, hectáreas1 .

Este concepto foi desenvolto en 1996 por M. Wackernagel e W. Rees[18] pre-


tendendo calcular o impacto do ser humano nun ecosistema, e que isto sirva para
a aplicación de medidas correctivas en caso de ser necesarias. (Para realizar
) os
cálculos necesítase coñecer a cantidade de material consumido toneladas eo
 ano 
toneladas
 ano 
rendemento da área específica de onde foi extraído dito recurso 
superf icie 
,

a súa relación

 
toneladas
ano
 
toneladas ⇒ superf icie
 ano
superf icie
1
A hectárea corresponde á centésima parte dun Km2 , 10.000 m2 ou aproximadamente un
campo de fútbol

5
6 CAPÍTULO 2. A PEGADA ECOLÓXICA E FBM

resolve a superficie necesaria para asumir o consumo do recurso en cuestión.


Para calcular a superficie capaz de absorber a cantidade de CO2 xerada pola
actividade estudada, necesitamos coñecer as toneladasdeCO2 anuais e o rende-
mento do territorio que absorberá ese CO2 xerado ( toneladas CO2 anuais ), e
superf icie
como no caso anterior, a súa relación resulta na superficie de terreo necesario
para absorber esas emisións de CO2 . A suma das dúas superficies conforma a
Pegada Ecolóxica de dita actividade.

2.1.1 A USC e a súa relación coa Pegada Ecolóxica


Dende 2003 e co obxectivo en mente de facer unha universidade sostible e
enerxéticamente eficiente, a USC desenvolveu o seu Plan de Desenvolvemento
Sostible[16]. Dito plan actúa sobre 3 eixes fundamentais:

1. Xeración de Coñecemento e Educación Ambiental.

2. Planificación, Xestión e Avaliación Medioambiental.

3. Divulgación, Participación e Sensibilización.

No segundo eixe2 Planificación, Xestión e Avaliación Medioambiental é onde a


Pegada Ecolóxica aporta unha maior utilidade como medida do impacto medioam-
biental producido pola actividade universitaria, utilizando esta como base para
a creación de dous documentos relacionados coa medida do impacto medioambi-
ental da USC, Impacto Ambiental da Universidade de Santiago de Compostela[7]
e Impacto Ambiental en Centros da USC[9].

A información relativa a consumo de recursos dos centros pertencentes á USC


resulta sinxelo se o comparamos coa recollida de información relativa a hábitos de
transporte e consumo de papel de persoal docente, administrativo e estudantes.
Para recoller esa información requírese da axuda dos bolseiros SPIU3 os cales
teñen, entre outras tarefas, a responsabilidade da realización de enquisas para
recoller información sobre transporte e consumo de papel nos campos de Lugo
e Santiago de Compostela. Este proxecto, xunto cos anteriores relacionados coa
Pegada Ecolóxica[12] [8] procuran que a recollida de datos se realice de forma
autónoma.

2
https://www.usc.es/plands/seccions/datos_plan/eixe2/pegada_ecoloxica/
pegada.htm
3
https://www.usc.es/plands/seccions/datos_plan/eixe3/linas_actuacion/
sensibeparticipalumnado/bolsassostibles/bolseiro.htm
2.2. METODOLOXÍA DE COMPORTAMENTO DE FOGG 7

2.1.2 Metodoloxía de Cálculo da Pegada Ecolóxica


Para comprender o significado da pegada ecolóxica resulta obrigada unha
breve explicación dos conceptos utilizados para o seu cálculo[5].

A superficie encargada de absorber o CO2 cóntase en hectáreas de bosque


galego[11]. Esta característica resulta relevante debido a que non todas as especies
vexetais teñen a mesma capacidade de fixación. A capacidade de fixación media
de carbono que se acumula na biomasa4 e no chan5 é de:
( )
Capacidade de Fixación do Carbono = 1, 71 tonC ha
ano

Esta capacidade de fixación do Carbono tradúcese en:


( )
Capacidade de Fixación do CO2 = 6, 27 tonCOha
2
ano

Coñecida a cantidade de CO2 que é emitida á atmosfera e te tendo en conta


a capacidade de fixación da masa forestal galega, o resultado de esta relación é a
Pegada Ecolóxica:
( )
ha = Emisins (tonCO
Pegada Ecolóxica ano ( 2) )
tonCO2
C.F ixacion ha
ano

2.2 Metodoloxía de Comportamento de Fogg


Tomarase a Metodoloxía do Comportamento de Fogg para acadar a fidelización
dos usuarios, para que a información sexa obtida de xeito autónomo, en lugar da
realización de enquisas como se ven facendo ata o de agora.

Fogg propón unha serie de elementos motivadores para acadar un com-


portamento determinado:

Pracer/Dor: As persoas anticípanse a estas motivacións, e son consideraras


motivacións inmediatas.

Esperanza/Medo: A esperanza é a anticipación a que algo bo suceda, fronte a


o medo, que é a anticipación a que algo malo ocorra.

Aceptación Social/Rexeitamento Social: O comportamento das persoas, nor-


malmente procura a aceptación social.
4
Viva ou morta
5
Terra vexetal e mineral
8 CAPÍTULO 2. A PEGADA ECOLÓXICA E FBM

Segundo a FBM, desencadearase o comportamento desexado cando a habili-


dade e a motivación para realizalo sexan suficientes, e sempre que se produza un
determinado desencadeante. Fogg esquematiza este modelo na Figura 2.1.

Comportamento
Desexado

3. Desencadeante

do
e xa
1. Motivación

qu ese
de d
d e nto
a e
lid am
a bi ort
ob mp
pr co
d a o
to ee
en cad
em n
cr se
In de
se

2. Habilidade

Figura 2.1: O modelo de comportamento de Fogg (FBM).

Coas utilidades engadidas á aplicación preténdese incrementar un elemento


motivador de aceptación social, ao facilitar o acceso a información sobre eventos,
ofertas de traballo e novidades rexistradas na páxina web da ETSE. Ademais
increméntase a esperanza de que a información recollida pola aplicación supoña
estar ao tanto de ofertas que podan mellorar a vida do usuario, como ofertas de
traballo de interese, a asistencia a eventos acordes co seu perfil, etc.
As Habilidades que identifica Fogg para que se desencadee un determinado
comportamento son:

Tempo: Refírese ao tempo que require realizar a tarefa asociada ao comporta-


mento.

Cartos: Para xente que dispón de poucos recursos económicos, un comporta-


mento obxectivo que custe cartos non resulta fácil de realizar.

Esforzo Físico: Comportamentos que requiran un esforzo físico non resultan


fáciles.

Ciclos de Cerebro: Se o comportamento require de un certo esforzo intelectual,


non resulta fácil.

Desviación Social: Comportamentos que requiran quebrantar certas regras so-


ciais non resultan fáciles de realizar.
2.2. METODOLOXÍA DE COMPORTAMENTO DE FOGG 9

Non Rutinario: Os comportamentos rutinarios poden resultar máis agradables


de levar a cabo.

Estes conceptos que conforman a simplicidade dunha tarefa pode resultar


subxectivos. Por exemplo unha tarefa rutinaria pode resultar menos atractiva a
unha persoa que a outra, ou unha tarefa que requira tempo pode resultar sufi-
cientemente desagradable como para que alguén estea disposto a gastar cartos
para completala.

A aplicación axuda a rebaixar a dificultade da realización das tarefas de con-


sulta do calendario da ETSE, consulta das novidades publicadas na páxina web
e a consulta das ofertas de traballo, estando dispoñibles no terminal móbil. Con-
siderando as habilidades identificadas por Fogg, redúcese o tempo de consulta, o
esforzo físico de coller o ordenador ou abrir o navegador e consultar a páxina web
e reduce os ciclos cerebrais ao non ter que recordar a páxina web e introducila
nun navegador.

Para facilitar o máximo posible o funcionamento da aplicación e incrementar


a súa usabilidade tivéronse en conta os 10 principios de usabilidade de Jakob
Nielsen[10] e os referenciados polo seu traballo Lista de principios básicos para o
deseño de interfaces de Bruce “Tog”[3]. Incrementar a usabilidade da aplicación
reduce o esforzo que necesitaría o usuario e menos ciclos de cerebro

Por último, Fogg identifica 3 tipos de Desencadeantes que lle indican á


persoa que é o momento de levar a cabo un determinado comportamento ou
realizar unha tarefa.

Chispazo: Do inglés Spark, refírense a desencadeantes instantáneos, aqueles que


desencadean un comportamento de xeito repentino.

Facilitador: O obxectivo de este disparador é facer o comportamento máis fácil


de realizar.

Sinal: Unha sinal a xeito de recordatorio.

Por último, como desencadeante do comportamento desexado (recordemos


que se trata da realización da enquisa e a obtención de datos que reflexen os
hábitos de transporte e consumo de papel) usaremos unha sinal, para isto a apli-
cación consta dun recordatorio que cada 6 meses preguntará ao usuario se os seus
hábitos de transporte e consumo de papel cambiaron. Isto recordará ao usuario
que, se quere ter acceso á información ofertada na aplicación, deberá cubrir no-
vamente a enquisa.
10 CAPÍTULO 2. A PEGADA ECOLÓXICA E FBM

Ademais para desencadear o comportamento desexado, debemos facer que o


usuario sexa o suficientemente hábil para realizar a tarefa en cuestión, que é a de
encher o cuestionario sobre consumo de papel e hábitos de transporte.
Capítulo 3

Xestión do Proxecto

Para que o desenvolvemento dun proxecto se leve a cabo resulta de vital


importancia xestionar axeitadamente unha serie de aspectos. Estes aspectos están
recollidos na Sección III do PMBOK[17]. Debido a que se trata dun Traballo de
Fin de Grao non se poderán seguir todas e cada unha das directrices recollidas
no PMBOK ou algunha parte das mesmas. Por exemplo, a xestión de recursos
humanos sería unha mera obviedade, xa que únicamente interveño eu no desenrolo
do proxecto.

3.1 Xestión do Alcance do Proxecto


A xestión do alcance asegura que o produto resultante inclúa todo, e úni-
camente, o traballo requerido para dar por finalizado o proxecto satisfactoria-
mente. Ademais defínese como se creará e definirá a Estrutura de Desagregación
do Traballo (EDT), explicaranse as técnicas de extracción de requerimentos e
seleccionarase unha metodoloxía de desenvolvemento.

3.1.1 Metodoloxía do Desenvolvemento


Debido a que os requerimentos do proxecto non se atopan definidos no comezo
do desenvolvemento da aplicación, necesítase unha metodoloxía que axude a que
se vaia adaptando o proxecto a novos requerimentos que vaian xurdindo.

Unha metodoloxía áxil de desenvolvemento permite un desenvolvemento


incremental, onde se pode ir engadindo requerimentos, e polo tanto funcionali-
dades, e ir obtendo versións da aplicación usables mentres se van ideando novas
funcionalidades.

A metodoloxía áxil permite ir incrementando a cantidade e tamaño das fun-


cionalidades da aplicación en períodos pechados chamados iteracións. Cada it-

11
12 CAPÍTULO 3. XESTIÓN DO PROXECTO

eración componse dunha fase de análise, unha de deseño, unha de implementación


e unha de probas. Cada iteración xera unha versión estable do produto á que se
lle poden engadir novas funcionalidades.

Análise Análise

Deseño Deseño

Implementación Implementación

Probas Probas

Figura 3.1: Iteración n e iteración n+1 dunha metodoloxía áxil por incrementos

En cada etapa de análise deberase analizar, tendo en conta a metodoloxía de


comportamento de Fogg, se a aplicación conta coas funcionalidades suficientes
para acadar a fidelización que se busca.

3.1.2 Xestión de Requerimentos


A aplicación que se desenvolverá para este proxecto trata de conducir o com-
portamento do usuario co obxectivo da obtención de datos de consumo de papel
e hábitos de transporte relacionados coa actividade universitaria. Seguindo a
metodoloxía de comportamento de Fogg (apartado 2.2) procuraranse definir re-
querimentos que axuden a desencadear a actuación do usuario para acadar a
automatización da adquisición de datos relativos á Pegada Ecolóxica.

Para a adquisición de requerimentos foron propoñéndose diferentes ideas so-


bre funcionalidades que debería desempeñar a aplicación. Estas serán analizadas
polos directores do proxecto xunto co alumno para buscar características que
fosen axeitadas segundo a metodoloxía de comportamento de Fogg.

No capítulo 4 describiranse en detalle os requerimentos extraídos.

3.1.3 Estrutura de Desagregación do Traballo


Segundo o PMBOK o EDT é “unha descomposición xerárquica [...] do traballo
que será executada polo equipo do proxecto, para lograr os obxectivos do proxecto
3.2. XESTIÓN DE RISCOS 13

e crear os produtos entregables requeridos”. O EDT axuda a descompoñer en por-


cións de traballo máis pequenas o proxecto que resulta nunha serie de “paquetes
de traballo” que se deben realizar para acadar con éxito o produto.

A figura 3.2 representa o EDT. Cabe sinalar que as fases análise, deseño e
implementación se realizarán en cada iteración, seguindo coa metodoloxía de de-
senvolvemento escollida.

3.2 Xestión de Riscos


A xestión de riscos implica prever e xestionar os riscos que poden influir na
planificación temporal ou na calidade do produto desenvolto e tomar as accións
necesarias para, segundo a súa natureza, evitalos ou minimizar o seu impacto. A
táboa 3.1 obxectiviza a probabilidade de que ocorra un risco.

Nivel de ocorrencia do risco Probabilidade


⩾ 80% (Case seguro que ocorre)
Alta
Entre 30% e 79% (Moi probable que
ocorra) Media
< 30% (Pouco probable)
Baixa

Táboa 3.1: Valoración da probabilidade de que ocorra un risco

Para poder valorar obxectivamente o custo da ocorrencia dun risco, terase en


conta a táboa 3.2 que describe o impacto que tería no proxecto.

Repercusión en Prazo/Esforzo Impacto


⩾ 20% Alta
Entre 10% e 19% Media
< 10% Baixa

Táboa 3.2: Valoración do impacto sobre o prazo de entrega ou o esforzo requerido


no caso de que ocorra un risco

Para xestionar debidamente os riscos, únicamente serán considerados aqueles


cun nivel de exposición Alto segundo se reflexa na táboa 3.3.
14 CAPÍTULO 3. XESTIÓN DO PROXECTO

Metodoloxía de Deseño
de Aplicacións iOS

Formación Preliminar Linguaxe Objective-C

Familiarización co Entorno
de Desenvolvemento Xcode

Definición do Alcance
da Aplicación para iOS

Creación do EDT

Creación do
Cronograma
Xestión do Proxecto
Control e Seguemento
do Cronograma

Revisión do Alcance
do Proxecto
Estudo preliminar sobre
a Pegada Ecolóxica
Documentación
Identificación dos Casos de
Uso dos Subsistemas Enquisa,
Perfil e Pegada Ecolóxica
Análise Primeira
Iteración
Especificación de Requerimentos
dos Subsistemas Enquisa, Perfil
Desenvolvemento dunha
e Pegada Ecolóxica
aplicación iOS para o cálculo da
Pegada Ecolóxica Deseño de almaceamento
de datos

Deseño orientado a
Deseño Primeira obxectos da aplicación iOS
Iteración
Deseño da interface
Primeira Iteración gráfica

Deseño das Probas

Codificación dos subsistemas


Enquisa, Perfil e Pegada
Implementación Ecolóxica
Primeira Iteración
Probas dos subsistemas
Enquisa, Perfil e Pegada
Ecolóxica

Estudo Preliminar da
Metodoloxía de
Comportamento de Fogg

Identificación dos Casos de Uso


Análise Segunda dos Subsistemas Calendario,
Iteración Bolsa de Traballo e Novidades

Especificación de requerimentos
dos subsistemas Calendario,
Bolsa de Traballo e Novidades

Deseño de
almaceamento de datos

Deseño orientado a
Segunda Iteración
Deseño Segunda obxectos da aplicación iOS
Iteración
Deseño da interface
gráfica

Deseño das Probas

Codificación dos Subsistemas


Calendario, Bolsa de Traballo e
Novidades
Implementación
Segunda Iteración Probas dos subsistemas
Calendario, Bolsa de Traballo e
Novidades

Figura 3.2: Estrutura de Desagregación do Traballo


3.3. XESTIÓN TEMPORAL 15

Probabilidade
Alta Media Baixa
Alto Alto Alto Medio
Impacto Medio Alto Medio Baixo
Baixo Medio Baixo Baixo

Táboa 3.3: Nivel de exposición ao risco

Identificación dos Riscos

RSC.01
Planificación optimista
Descrición
Alta
Probabilidade
Medio
Impacto
Alta
Exposición
• Considerar dende o principio do proxecto a data
límite e o alcance do proxecto.
Plan de Prevención • Facer unha análise e estimacións exhaustiva.

• Modificar o alcance do proxecto para cadralo coa


data límite de entrega.
Plan de Corrección • Considerar eliminar algún requerimento menor para
cadrar tempos.

Táboa 3.4: Risco RSC.01 Planificación Optimista

3.3 Xestión Temporal


Seguindo o EDT desenvolto na figura 3.2 describiranse cada unha das etapas
e a súa duración.

Para xestionar o tempo desenvolverase un Diagrama de Gantt no que se


definirán as distintas fases do proxecto coas actividades das que se compoñen.
Para a creación do diagrama de Gantt estimarase a duración das actividades
16 CAPÍTULO 3. XESTIÓN DO PROXECTO

RSC.02
Un atraso nunha tarefa, produce atrasos en cascada
Descrición nas tarefas dependentes.
Alta
Probabilidade
Medio
Impacto
Alta
Exposición
• Máis esforzo na planificación.
• Selección axeitada do ciclo de vida que permita un
Plan de Prevención desenvolvemento máis dinámico.

• Reaxuste temporal da entrega.


Plan de Corrección • Horas extra.

Táboa 3.5: Risco RSC.02 Un atraso nunha tarefa, produce atrasos en cascada
nas tarefas dependentes

RSC.03
Desenvolvemento deficiente, implica recodificar partes
Descrición da aplicación.
Media
Probabilidade
Alto
Impacto
Alta
Exposición
•Máis énfase no deseño.
• Seguemento exhaustivo na etapa de implementación.
Plan de Prevención • Probas periódicas durante a codificación.

Replanificar en base ao tempo perdido.


Plan de Corrección

Táboa 3.6: Risco RSC.03 Desenvolvemento deficiente, implica recodificar partes


da aplicación
3.3. XESTIÓN TEMPORAL 17

RSC.04
Os obxectivos non se definiron correctamente.
Descrición
Media
Probabilidade
Alto
Impacto
Alta
Exposición
Realizar novas entrevistas co cliente, facendo énfase
Plan de Prevención nos obxectivos esperados.
Renegociar o alcance co cliente.
Plan de Corrección

Táboa 3.7: Risco RSC.04 Os obxectivos non se definiron correctamente

RSC.05
Os intervalos para a revisión e decisión dos plans, pro-
Descrición totipos e especificacións resultan máis lentos do esper-
ado.
Media
Probabilidade
Medio
Impacto
Media
Exposición
Plans para as entrevistas co cliente máis minuciosas.
Plan de Prevención
Aumentar a frecuencia dos intentos de comunicación
Plan de Corrección cando son falidos.

Táboa 3.8: Risco RSC.05 Os intervalos para a revisión e decisión dos plans,
prototipos e/ou especificacións resultan máis lentos do esperado
18 CAPÍTULO 3. XESTIÓN DO PROXECTO

RSC.06
A falta de motivación e moral reduce a productividade.
Descrición
Media
Probabilidade
Medio
Impacto
Media
Exposición
Manter a motivación evitando que as tarefas máis ar-
Plan de Prevención duas se prolonguen durante moito tempo nunha única
xornada.
Distraerse con outra tarefa máis agradecida.
Plan de Corrección

Táboa 3.9: Risco RSC.06 A falta de motivación e moral reduce a productividade

RSC.07
Perda accidental do código implementado.
Descrición
Media
Probabilidade
Medio
Impacto
Media
Exposición
• Énfase na Xestión da configuración.
• Coidados axeitados sobre os sistemas hardware e
Plan de Prevención software implicados na implementación.

Recuperar o código dende o xestor de versións.


Plan de Corrección

Táboa 3.10: Risco RSC.07 A falta de motivación e moral reduce a productividade


3.3. XESTIÓN TEMPORAL 19

RSC.08
Apple rexeita a publicación na App Store.
Descrición
Alta
Probabilidade
Alto
Impacto
Media
Exposición
Énfase nos requerimentos de Apple para a publicación
Plan de Prevención de aplicacións na App Store.
Revisión das causas do rexeitamento e corrección.
Plan de Corrección

Táboa 3.11: Risco RSC.08 Apple rexeita a publicación na App Store

tendo en conta que únicamente se dispón dun recurso.

Algunha das tarefas descritas no diagrama de Gantt non se desenvolven in-


mediatamente, senon que se van a desenvolver ao longo de todo o proxecto, como
por exemplo a tarefa de Control e seguemento do cronograma que se repartirá,
o tempo reservado a esta tarefa, a períodos de tempo máis curtos cada dúas
semanas ao longo do tempo que dure o desenvolvemento do proxecto, tamén a
de Revisión do alcance do proxecto que se realizará cada vez que se remate de
implementar un subsistema. Ademais hai que considerar que segundo EDT do
anteproxecto, adicaranse aproximadamente 19,5 horas semanais, o que fai un to-
tal aproximado de unhas 4 horas diarias.

No caso de que se detecten desfases temporais durante os controles do segue-


mento do cronograma será necesario un reaxuste do plan.

3.3.1 Etapa de Formación Preliminar


Debido a que a tecnoloxía sobre a que se vai a desenvolver o proxecto é unha
tecnoloxía sobre a que non se dispón de experiencia previa, é necesaria unha
etapa inicial de toma de contacto. En esta etapa estudiaranse as metodoloxías
de deseño que se utiliza para a arquitectura iOS, unha linguaxe de programación
descoñecida como é Objective-C e unha ferramenta de desenvolvemento nova, o
Xcode.

Durante esta etapa o tempo adicarase á busca e lectura de recursos axeitados


para comezar a desenvolver para iOS, lecturas da documentación de desenvolve-
20 CAPÍTULO 3. XESTIÓN DO PROXECTO

mento de iOS[1]1 , visualización de tutoriais de manexo do Xcode, etc.

Duración: 64 horas

3.3.2 Etapa de Xestión do Proxecto


En esta etapa inclúe algunha das tarefas descritas no presente capítulo. Defini-
rase o alcance do proxecto, crearase un EDT, un cronograma polo cal guiarnos
durante o desenvolvemento do proxecto, controlarase que non haxa moito desfase
temporal entre o cronograma e o desenvolvemento real do proxecto e revisarase
periódicamente o alcance.

Como xa se comentou anteriormente, as tarefas de control e seguemento do


cronograma e a revisión do alcance realizaranse periódicamente ao longo do de-
senvolvemento do proxecto. Ademais a documentación realizarase paso a paso
segundo se vaia avanzando.

Duración: 176 horas

3.3.3 Etapa de Análise Primeira Iteración


Nesta primeira iteración realizarase a análise da primeira iteración do noso ci-
clo de vida. En esta iteración procederase a analizar, deseñar e implementar todo
o relativo á enquisa e ao cálculo da Pegada Ecolóxica do usuario. Esta etapa está
ben definida xa que os requerimentos da aplicación en esta etapa están definidos
xa dende a proposta do proxecto.

Nunha serie de reunións cos directores do proxecto, que actuarán a modo


de clientes, recolleranse apuntamentos a partir dos cales se definirá os casos de
uso e especificaranse os requerimentos da aplicación, ben sexan funcionais ou non.

Duración: 24 horas

3.3.4 Etapa de Deseño Primeira Iteración


En esta etapa realizarase o deseño da primeira iteración. Deseñarase a base
de datos que almacenará o cuestionario e todo o relativo ao perfil de usuario, un
diagrama de clases que representa o deseño orientado a obxectos de esta parte
da aplicación, a interface gráfica de enquisas e informes de resultados e o deseño
das probas para esta iteración.

1
https://developer.apple.com/library/ios/navigation/
3.3. XESTIÓN TEMPORAL 21

Duración: 19 horas

3.3.5 Etapa de Implementación Primeira Iteración


En esta etapa codificarase a parte da aplicación iOS relativa a esta iteración
e executaranse as probas deseñadas para a mesma.

Duración: 84 horas

3.3.6 Etapa de Análise Segunda Iteración


Nesta segunda iteración realizarase a análise dos requerimentos que se lle en-
gadirán á aplicación seguindo a metodoloxía de comportamento de Fogg para
acadar a fidelización do usuario. Require unha revisión de dita metodoloxía,
identificar os casos de uso e extraer os requerimentos para dito fin.

Duración: 24 horas

3.3.7 Etapa de Deseño Segunda Iteración


Realizarase o deseño da segunda iteración, que inclúe o deseño da base de
datos que almacenará os datos que se van a manexar, un deseño orientado a obx-
ectos das clases implicadas, deseño das interfaces gráficas e o deseño das probas
que se realizarán.

Duración: 16 horas

3.3.8 Etapa de Implementación Segunda Iteración


En esta etapa implementarase o deseño realizado na etapa anterior e execu-
taranse as probas deseñadas en esa etapa.
Duración: 108 horas
A figura 3.3 representa o cronograma unha vez completado.
22 CAPÍTULO 3. XESTIÓN DO PROXECTO

Figura 3.3: Diagrama de Gantt


3.4. XESTIÓN DO CUSTO 23

3.4 Xestión do Custo


3.4.1 Factores Ambientais
Debido ao carácter de traballo de fin de grado, os custos manexados en este
apartado son teóricos.

• Considérase que o proxectando non dispón do material e software necesario


para levar a cabo o proxecto.

– Ordenador Apple capaz de instalar MacOSX 10.7 ou superior.


– Dispositivo con iOS 6.1 ou superior.
– Entorno de desenvolvemento Xcode 4.6 ou superior.
– Servidor Apache[13] capaz de executar PHP[14].
– Servidor MySQL en calquera das súas versións.

• A USC non afrontará gastos adicionais.

• Os usuarios que utilizarán o software dispoñen do material necesario para


o seu uso.

– Dispositivo con iOS 6.1 ou superior

• O proxectando farase cargo dos gastos de consumibles, tipo impresións,


papel, bolígrafos, etc.

• Os custos imputados ao proxecto serán os relativos á adquisición do material


necesario para o desenvolvemento do proxecto e á contratación dos recursos
necesarios.

Custos relativos ao persoal


Debido a que se trata de un proxecto de fin de grao o único recurso dispoñible
será o proxectando. O salario bruto dun programador ronda os 24.000 € anuais
segundo Infojobs2 . Para calcular o custo por hora dun recurso debemos ter en
conta:

• Salario Bruto Anual

• S.S. (Cotizacións á Seguridade Social)

• FOGASA (Fondo de Garantía Salarial)


2
http://salarios.infojobs.net/resultados.cfm?sueldo=programador&o_id=2
24 CAPÍTULO 3. XESTIÓN DO PROXECTO

De aí obteremos o total e dividirase entre horas de traballo segundo o calen-


dario laboral do ano 2013.

Salario Bruto
Categoría

FOGASA
Recurso

Total

€/h
S.S.
Antonio Proxectando 24000 7128 48 31176 14,76

Táboa 3.12: Táboa de custos por hora relativos aos recursos

Tendo en conta o custo por hora analizado na táboa 3.12 a cantidade que
se debe aboar ao proxectando, sendo o proxecto dunha duración de 409 horas a
14,76 €/hora, é 6036,84 €.

Custos Relativos ao material


Para calcular os custos relativos ao material necesitamos coñecer unha me-
dida aproximada da vida útil do dispositivo. Esta medida utilizarase para coñecer
canto custa diariamente a utilización do material.

prezo €
= (1)
anos vida util · dias laborais da

Para o presente proxecto considerase que se investirá un 50% da xornada


laboral, o que supón 4 horas diarias. O custo por hora, polo tanto:

da = € (2)
horas hora

da
O custo dun ordenador MacBook Pro é de 1229,00 €. O tempo de vida útil
dun ordenador vai dende os 5 aos 7 anos, unha media de 6 anos. Os días laborais
son de media 250 días cada ano, polo tanto:

1299,00€
6anos·250dias
= 0, 87€/dia
0,87
4
= 0, 22€/hora
Por outro lado, o custo dun dispositivo móbil como un iPhone4, que foi o
utilizado para o proxecto, é de 389 € e a sua vida útil ronda entre 3 e 4 anos,
unha media de 3,5 anos. Aplicando as fórmulas 1 e 2:
3.4. XESTIÓN DO CUSTO 25

389€
3,5anos·250dias
= 0, 44€/dia
0,44
4
= 0, 11€/hora

Se para o proxecto se necesitan 409 horas:

Material Custo (€)


MacBook Pro 89,98 €
iPhone 4 44,99 €
Total 134,97 €

Táboa 3.13: Táboa de custos relativos ao material

Custos Relativos ao software

Software Custo (€)


MacOSX 10.7 Pro 17,99 €
Xcode 0,00 €
Servidor Apache 0,00 €
Servidor MySQL 0,00 €
Total 17,99 €

Táboa 3.14: Táboa de custos relativos ao software

Financiamento
Xa que se trata de un proxecto de fin de grado, non resulta necesario detallar
o fluxo de caixa do proxecto.

TOTAIS

Descrición Unidades Custo unitario (€) Custo Total (€)


MacBook Pro 1 89,98 89,98 €
iPhone 4 1 44,99 44,99
Horas de traballo 409 14,76 6036,84
MacOSX 10.7 1 17,99 17,99
Total 6189,80 €

Táboa 3.15: Custos Totais


26 CAPÍTULO 3. XESTIÓN DO PROXECTO

3.5 Xestión da Configuración


Durante a etapa de implementación pode xurdir todo tipo de problemas, acci-
dentes que afecten ao hardware, erros durante a manipulación do código, imple-
mentacións dependentes orixinan fallas en funcionalidades consideradas estables,
etc (táboa 3.10).

Ademais, a etapa de documentación alóngase durante todo o período de vida


do proxecto e resulta imprescindible poder recuperar a información xerada du-
rante esta etapa no caso de producirse algún problema.

3.5.1 Xestión do Código Fonte


É necesario asegurar a validez do produto, isto conséguese realizando un con-
trol de cambios axeitado que busca como fin último a dispoñibilidade dunha
versión estable en cada etapa da implementación.

Xcode dispón de un control de versións propio, facendo que non sexa nece-
saria unha ferramenta adicional para acadar a seguridade buscada. Ademais, a
metodoloxía de desenvolvemento escollida fai que o control de versións sexa algo
natural.

Crearase un repositorio novo ao comezo da etapa de implementación, crearase


un trunk no repositorio que será o tronco principal da versión a implementar. En
cada iteración crearase un branch para ir implementando funcionalidades dos
diferentes subsistemas que engloba dita iteración. Ao rematar as probas de cada
iteración e asegurarse que se dispón dunha versión estable da aplicación crearase
un novo trunk a partir de dita versión sobre a que se traballará na seguinte
iteración.

3.5.2 Xestión da Documentación


Para xestionar a documentación utilizaranse ferramentas dispoñibles gratuita-
mente en internet, como pode ser Dropbox. O control de versións proporcionado
por esta ferramenta resulta suficiente para esta tarefa.
Capítulo 4

Elaboración do Catálogo de
Requerimentos

4.1 Introdución

Dende a USC, na procura de automatizar a recollida de datos útiles para


o cálculo da Pegada Ecolóxica, e tendo en conta datos similares aos expostos
anteriormente, resulta unha evolución natural ao proxecto de David Otero[12]
que Javier López[8] créase dunha aplicación para plataformas Android que ax-
udase á recopilación de información relevante para o cálculo da Pegada Ecolóxica.

Sendo iOS a segunda plataforma en canto tráfico, este proxecto pretende facer
chegar a ese nicho de usuarios unha utilidade que, para aqueles usuarios sensi-
bilizados co desenvolvemento sostible, poida aportar información que axude á
USC a achegarse máis á sostebilidade desexada aportando información sobre os
seus hábitos de transporte e consumo de papel. Ademais, para facer que o fluxo
de información sexa o máis continuada e autónoma posible, a aplicación disporá
de funcionalidades adicionais que resulten útiles para o desenvolvemento da súa
actividade na USC, aumentando a súa utilidade con respecto á aplicación de An-
droid, unha interface máis amigable que aumente a súa usabilidade, conseguindo
así unha maior fidelización por parte dos usuarios.

Tal e como se comentou na Introdución no apartado 1.2 pretendemos estim-


ular a utilización da aplicación por parte do usuario a través da metodoloxía do
comportamento de Fogg[2].

27
28CAPÍTULO 4. ELABORACIÓN DO CATÁLOGO DE REQUERIMENTOS

4.2 Glosario
4.2.1 Definicións
Actor: Ente que interaciona coa aplicación.

App Store: Tenda de aplicacións de Apple. Único medio a través do cal se pode
distribuir software para os dispositivos iOS.

Cita: Refírese a un evento do calendario da páxina web da ETSE.

Criterio de Validación: Característica, funcionalidade ou resposta esperada


dun determinado requerimento para ser considerado válido.

ICS: Extensión dun arquivo utilizado para o intercambio de información de cal-


endarios. Segue o estándar iCalendar (RFC5546[6])

Parsear: Transformación dunha entrada de texto nunha estrutura de datos


apropiada para ser procesada.

Perfil de usuario: Persoa que desempeña unha actividade concreta na USC.


Pode ser PDI, PAS ou Estudante.

Perfil profesional: Persoa con unha determinada orientación profesional á que


vai dirixida unha oferta de traballo.

Proxectando: Refírese ao desenvolvedor dun determinado proxecto.

4.2.2 Acrónimos
API: Do inglés “Application Programming Interface”. Conxunto de funcións ou
un conxunto de clases cos seus métodos que teñen o propósito de dar acceso
aos servizos dun determinado sistema.

CiTiUS: Centro Singular de Investigación en Tecnoloxías da Información da


Universidade de Santiago

DEC: Departamento de Electrónica e Computación

ETSE: Escola Técnica Superior de Enxeñaría

PDI: Persoal Docente Investigador

PAS: Persoal de Administración e Servicios

USC: Universidade de Santiago de Compostela


4.3. PARTICIPANTES NO PROXECTO 29

4.3 Participantes no Proxecto

Participante Función Organización


Antonio Carou Proxectando ETSE
Dora Blanco Directora do Proxecto CiTiUS
Francisco Argüello Director do Proxecto DEC
Usuario Estudante ETSE
Usuario PDI ETSE
Usuario PAS ETSE

Táboa 4.1: Participantes no proxecto.

4.4 Obxectivos do Sistema


Unha vez o proxecto se atope na súa etapa de explotación debe cumprir os
seguintes obxectivos:

Realizar a enquisa de consumo de papel e hábitos de trans-


Obx.01 porte
Coa aplicación poderase realizar a enquisa co fin de recoller os
Descrición datos de consumo de papel e hábitos de transporte do usuario.

Táboa 4.2: Obxectivo do sistema Obx.01

Calcular a pegada ecolóxica.


Obx.02
Cos datos recollidos na enquisa a aplicación deberá calcular
Descrición a pegada ecolóxica derivada da actividade universitaria do
usuario.

Táboa 4.3: Obxectivo do sistema Obx.02

Presentar resultados comparados coa media da USC.


Obx.03
Coa pegada ecolóxica calculada, a aplicación deberá represen-
Descrición tar ese valor comparado coa media da USC.

Táboa 4.4: Obxectivo do sistema Obx.03


30CAPÍTULO 4. ELABORACIÓN DO CATÁLOGO DE REQUERIMENTOS

Subir os datos ao servidor.


Obx.04
Unha vez a enquisa chea, a aplicación deberá permitir subir
Descrición os datos a un servidor central.

Táboa 4.5: Obxectivo do sistema Obx.04

Manexar os diferentes tipos de usuarios da aplicación.


Obx.05
Segundo o usuario que utilice a aplicación PDI, PAS ou Estu-
Descrición dante, a aplicación deberá presentar o formulario correspon-
dente.

Táboa 4.6: Obxectivo do sistema Obx.05

A enquisa debe ser anónima.


Obx.06
Os datos que se suban ao servidor central non poden contar
Descrición datos de índole persoal do usuario que realice a enquisa.

Táboa 4.7: Obxectivo do sistema Obx.06

Debe resultar útil e atractiva aos usuarios da ETSE.


Obx.07
A aplicación debe ser útil para usuarios que desempeñan a
Descrición súa actividade universitaria na ETSE.

Táboa 4.8: Obxectivo do sistema Obx.07

4.5 Actores
Preséntanse a continuación os actores que interaccionarán coas funcionali-
dades da aplicación.
4.6. CATÁLOGO DE REQUERIMENTOS DA APAALICACIÓN 31

Usuario.
Act.01
Persoas que fan uso da aplicación.
Descrición
Non se consideran actores diferentes, usuarios que teñan un
Comentarios perfil distinto. PDI, PAS e Estudantes son considerados todos
como actores Usuario.

Táboa 4.9: Actor Act.01

4.6 Catálogo de Requerimentos da Apaalicación


Describe funcionalidades que debe desenvolver o produto. Trátase de requer-
imentos froito da análise dos Casos de Uso que establecen o comportamento da
aplicación. Segundo a súa natureza, os requerimentos serán catalogados en al-
gunha das seguintes categorías:

Requerimentos Funcionais: Son as características que debe presentar a apli-


cación para dotala da funcionalidade requerida.
Requerimentos Non Funcionais: Requerimentos que non outorgan funcional-
idade á aplicación.
Requerimentos de Plataforma: Representan requerimentos independentes
da funcionalidade, pero dependentes da plataforma sobre a que se vai
a executar a aplicación ou algunha plataforma específica coa que in-
teractuará algunha das funcionalidades da aplicación.
Requerimentos de Interface de Usuario: Requerimentos que describen
como debe ser presentada a aplicación ao usuario e como este interac-
túa con ela.
Requerimentos de Datos: Describe como deben ser manexados os datos
cos que traballará a aplicación.
Restricións: Restricións que presenta a aplicación.

4.6.1 Requerimentos Funcionais


RF.01 Seleccionar o perfil entre 3 diferentes PDI, PAS e Estudante.
RF.02 Consultar información relativa á Pegada Ecolóxica.
RF.03 Consultar recomendacións que lle permita reducir a súa Pegada Ecolóx-
ica.
32CAPÍTULO 4. ELABORACIÓN DO CATÁLOGO DE REQUERIMENTOS

RF.04 Acceder ao cuestionario para a recollida de información relativa a os


hábitos de transporte.

RF.05 Acceder ao cuestionario para a recollida de información relativa a con-


sumo de papel.

RF.06 Recordatorio cada 6 meses.

RF.07 Borrar todos os datos respondidos nos cuestionarios.

RF.08 Consultar o resultado do cálculo da súa Pegada Ecolóxica.

RF.09 Amosará o resultado da Pegada Ecolóxica do usuario comparada coa


media da USC.

RF.10 Engade novidades á lista.

RF.11 Obter datos do calendario da páxina web da ETSE.

RF.12 Listar citas do calendario agrupados por días.

RF.13 Acceder a detalles da cita do calendario.

RF.14 Obter datos da sección novidades da páxina web da ETSE.

RF.15 Listar as novidades.

RF.16 Acceder a detalles de unha novidade.

RF.17 Obter datos da bolsa de traballo da páxina web da ETSE.

RF.18 Listar as ofertas de traballo agrupadas por perfil profesional.

RF.19 Acceder a os detalles dunha oferta de traballo.

RF.20 Subir datos ao servidor central.

RF.21 Actualiza lista de citas do calendario.

RF.22 Actualiza lista de novidades.

RF.23 Actualiza ofertas de traballo.

RF.24 As respostas da enquisa poden ser consultadas.


4.7. ESPECIFICACIÓN DE REQUERIMENTOS 33

4.6.2 Requerimentos Non Funcionais


Requerimentos de Plataforma

RP.01 Desenvolta para dispositivos co sistema operativo iOS de Apple.

RP.02 Traballar con unha base de datos MySQL.

RP.03 Dispoñer dunha conta de desenvolvedor de Apple gratuíta para as etapas


de implementación.

RP.04 Dispoñer dunha conta de desenvolvedor de Apple de pago para a etapa


de despregue.

Requerimentos de Interface de Usuario

RI.01 Interface amigable e usable.

RI.02 Interface orientada a dispositivos táctiles.

Requerimentos de Datos

RD.01 Gardar as respostas en local.

RD.02 Os datos gardados en local deben ser almaceados nunha base de datos
SQLite.

Restricións

R.01 A aplicación debe velar polo anonimato do usuario.

R.02 Non accederá á información da ETSE sen ter cuberta as enquisas.

4.7 Especificación de Requerimentos


Descrición detallada dos requerimentos enumerados no apartado 4.6. Detal-
larase o requerimento, a súa relevancia segundo se describe na táboa 4.10 e o
criterio de validación.
34CAPÍTULO 4. ELABORACIÓN DO CATÁLOGO DE REQUERIMENTOS

Relevancia Descrición
Esperado O requerimento resulta de gran importancia para acadar o
obxectivo principal do proxecto.
Desexable Acadar o requerimento mellora a calidade do proxecto, pero
pode acadarse o obxectivo principal prescindindo do requer-
imento.
Opcional Requerimentos que melloran a calidade nun grao menor que
os requerimentos desexables. Únicamente se levarán a cabo
se se dispón de tempo suficiente.

Táboa 4.10: Descrición das opcións de relevancia dun requerimento

4.7.1 Requerimentos Funcionais

RF.01 Seleccionar o perfil entre 3 diferentes PDI, PAS e


Estudante.
Descrición A aplicación precisa coñecer o tipo de usuario da USC que
está a utilizar a aplicación, cando se inicie por primeira vez
daráselle a escoller ao usuario a cales dos perfís pertence
entre PDI, PAS ou Estudante.
Relevancia Esperado.
Criterio de Considerarase que se cumpre este requerimento se a apli-
Validación cación únicamente pregunta polo perfil de usuario durante
a primeira execución ou despois de que os datos sexan bor-
rados.

Táboa 4.11: Requerimento RF.01: “Seleccionar o perfil entre 3 diferentes PDI,


PAS e Estudante”
4.7. ESPECIFICACIÓN DE REQUERIMENTOS 35

RF.02 Consultar información relativa á Pegada Ecolóxica.


Descrición O usuario poderá acceder a información adicional e curiosi-
dades sobre a Pegada Ecolóxica.
Relevancia Desexable.
Criterio de Considerarase que se cumpre este requerimento se a apli-
Validación cación conta cunha función que lle permita ao usuario ac-
ceder a dita información.

Táboa 4.12: Requerimento RF.02: “Consultar información relativa á Pegada


Ecolóxica”

RF.03 Consultar recomendacións que lle permita reducir a


súa Pegada Ecolóxica.
Descrición Acceso a consellos e recomendacións sobre hábitos de trans-
porte e consumo de papel que axuden ao usuario a reducir
a súa Pegada Ecolóxica.
Relevancia Desexable.
Criterio de Considerarase que se cumpre este requerimento se a apli-
Validación cación conta cunha función que lle permita ao usuario ac-
ceder a dita información.

Táboa 4.13: Requerimento RF.03: “Consultar recomendacións que lle permita


reducir a súa Pegada Ecolóxica”

RF.04 Acceder ao cuestionario para a recollida de informa-


ción relativa a os hábitos de transporte.
Descrición O usuario debe ter acceso á enquisa relativa a hábitos de
transporte para o cálculo da Pegada Ecolóxica.
Relevancia Esperado.
Criterio de Considerarase que se cumpre este requerimento se a apli-
Validación cación conta cunha funcionalidade que lle permita acceder
á enquisa.

Táboa 4.14: Requerimento RF.04: “Acceder ao cuestionario para a recollida de


información relativa a os hábitos de transporte”
36CAPÍTULO 4. ELABORACIÓN DO CATÁLOGO DE REQUERIMENTOS

RF.05 Acceder ao cuestionario para a recollida de informa-


ción relativa ao consumo de papel.
Descrición O usuario debe ter acceso á enquisa relativa ao consumo de
papel para o cálculo da Pegada Ecolóxica.
Relevancia Esperado.
Criterio de Considerarase que se cumpre este requerimento se a apli-
Validación cación conta cunha funcionalidade que lle permita acceder
á enquisa.

Táboa 4.15: Requerimento RF.05: “Acceder ao cuestionario para a recollida de


información relativa ao consumo de papel”

RF.06 Recordatorio cada 6 meses.


Descrición A aplicación debe preguntar cada 6 meses se cambiaron os
seus hábitos de transporte ou consumo de papel a través
de unha notificación, en caso de responder afirmativamente,
a aplicación amosará a vista de selección de enquisa e in-
habilitará todas as utilidades mentres non volve a encher a
enquisa.
Relevancia Esperado.
Criterio de Considerarase que se cumpre este requerimento se a apli-
Validación cación notifica ao usuario cada 6 meses se é necesario volver
a cubrir a enquisa e a realizar os cambios necesarios sobre a
accesibilidade a certas partes da aplicación.

Táboa 4.16: Requerimento RF.06: “Recordatorio cada 6 meses”


4.7. ESPECIFICACIÓN DE REQUERIMENTOS 37

RF.07 Borrar todos os datos respondidos nos cuestionarios.


Descrición A aplicación debe permitir que o usuario borre todas as
respostas que respondera anteriormente nos cuestionarios
tanto de transporte como de papel.
Relevancia Esperado.
Criterio de Considerarase que se cumpre este requerimento se a apli-
Validación cación conta cunha funcionalidade que lle permita borrar as
respostas.

Táboa 4.17: Requerimento RF.07: “Borrar todos os datos respondidos nos cues-
tionarios”

RF.08 Consultar o resultado do cálculo da súa Pegada


Ecolóxica.
Descrición A aplicación calculará as Pegadas Ecolóxicas relativas a
transporte e papel e o usuario poderá consultala sempre que
o desexe.
Relevancia Esperado.
Criterio de Considerarase que se cumpre este requerimento se a apli-
Validación cación calcula a Pegada Ecolóxica do usuario partindo dos
datos obtidos nas enquisas.

Táboa 4.18: Requerimento RF.08: “Consultar o resultado do cálculo da súa


Pegada Ecolóxica”

RF.09 Amosará o resultado da Pegada Ecolóxica do usuario


comparada coa media da USC.
Descrición A Pegada Ecolóxica calculada amosarase comparándoa coa
media da USC do ano anterior.
Relevancia Esperado.
Criterio de Considerarase que se cumpre este requerimento se a apli-
Validación cación amosa a Pegada Ecolóxica calculada do usuario xunto
coa media da USC do ano anterior.

Táboa 4.19: Requerimento RF.09: “Amosará o resultado da Pegada Ecolóxica


do usuario comparada coa media da USC”
38CAPÍTULO 4. ELABORACIÓN DO CATÁLOGO DE REQUERIMENTOS

RF.10 Engade novidades á lista.


Descrición Ao navegar pola lista de novidades, cando se chegue ao final
da lista, a aplicación accederá automáticamente á páxina
web da ETSE para obter 10 novidades máis.
Relevancia Esperado.
Criterio de Considerarase que se cumpre este requerimento se a apli-
Validación cación consegue engadir 10 novidades máis á lista de novi-
dades xa descargadas.

Táboa 4.20: Requerimento RF.10: “Engade novidades á lista”

RF.11 Obter datos do calendario da páxina web da ETSE.


Descrición A aplicación debe descargar o arquivo ICS dende a páxina
web da ETSE e parsealo para extraer as citas contidas nel.
Relevancia Esperado.
Criterio de Considerarase que se cumpre este requerimento se a apli-
Validación cación descarga e parsea correctamente o arquivo ICS e
garda as citas en local.

Táboa 4.21: Requerimento RF.11: “Obter datos do calendario da páxina web da


ETSE”

RF.12 Listar citas do calendario agrupados por días.


Descrición A vista do calendario amosará as citas parseadas do ICS da
páxina web da ETSE nunha lista agrupada en días.
Relevancia Esperado.
Criterio de Considerarase que se cumpre este requerimento se a apli-
Validación cación amosa correctamente a lista de citas parseadas do
arquivo ICS.

Táboa 4.22: Requerimento RF.12: “Listar citas do calendario agrupados por


días”
4.7. ESPECIFICACIÓN DE REQUERIMENTOS 39

RF.13 Acceder a detalles da cita do calendario.


Descrición Premendo nunha cita da lista de citas do calendario,
amosará unha vista cos detalles de dita cita.
Relevancia Esperado.
Criterio de Considerarase que se cumpre este requerimento se a apli-
Validación cación amosa correctamente os detalles da cita (Resumo da
cita, hora de inicio, hora de fin e texto detallado da mesma).

Táboa 4.23: Requerimento RF.13: “Acceder a detalles da cita do calendario”

RF.14 Obter datos da sección novidades da páxina web da


ETSE.
Descrición A aplicación deberá parsear o código fonte en HTML da
páxina web da ETSE, na súa sección “novidades”, e extraer
unha lista das novidades publicadas na páxina web.
Relevancia Esperado.
Criterio de Considerarase que se cumpre este requerimento se a apli-
Validación cación parsea correctamente o HTML da sección “novi-
dades” da páxina web da escola e as garda en local.

Táboa 4.24: Requerimento RF.14: “Obter datos da sección novidades da páxina


web da ETSE”

RF.15 Listar as novidades.


Descrición A aplicación deberá amosar unha lista coas novidades
parseadas da páxina web da ETSE da súa sección “novi-
dades”.
Relevancia Esperado.
Criterio de Considerarase que se cumpre este requerimento se a apli-
Validación cación amosa correctamente unha lista das novidades.

Táboa 4.25: Requerimento RF.15: “Listar as novidades”


40CAPÍTULO 4. ELABORACIÓN DO CATÁLOGO DE REQUERIMENTOS

RF.16 Acceder a detalles de unha novidade.


Descrición O usuario poder consultar os detalles de unha novidade pul-
sando sobre unha novidade da lista.
Relevancia Esperado.
Criterio de Considerarase que se cumpre este requerimento se a apli-
Validación cación amosa os detalles da novidade seleccionada.

Táboa 4.26: Requerimento RF.16: “Acceder a detalles de unha novidade”

RF.17 Obter datos da bolsa de traballo da páxina web da


ETSE.
Descrición A aplicación parseará o código fonte HTML da páxina web
da ETSE, recollendo as ofertas de traballo da sección “ofer-
tas de traballo”.
Relevancia Esperado.
Criterio de Considerarase que se cumpre este requerimento se a apli-
Validación cación parsea correctamente a páxina web da ETSE, da sec-
ción “ofertas de traballo” e as garda en local.

Táboa 4.27: Requerimento RF.17: “Obter datos da bolsa de traballo da páxina


web da ETSE”

RF.18 Listar as ofertas de traballo agrupadas por perfil


profesional.
Descrición A aplicación amosará unha lista coas ofertas de traballo, es-
tas deberán aparecer agrupadas segundo o perfil profesional
da oferta.
Relevancia Esperado.
Criterio de Considerarase que se cumpre este requerimento se a apli-
Validación cación amosa unha lista completa das ofertas de traballo e
as agrupa segundo o perfil profesional requerido pola oferta.

Táboa 4.28: Requerimento RF.18: “Listar as ofertas de traballo agrupadas por


perfil profesional”
4.7. ESPECIFICACIÓN DE REQUERIMENTOS 41

RF.19 Acceder a os detalles dunha oferta de traballo.


Descrición O usuario poderá acceder aos detalles da oferta de traballo
seleccionada na lista de ofertas de traballo.
Relevancia Esperado.
Criterio de Considerarase que se cumpre este requerimento se a apli-
Validación cación amosa os detalles de unha determinada oferta de tra-
ballo cando o usuario a selecciona na lista.

Táboa 4.29: Requerimento RF.19: “Acceder a os detalles dunha oferta de tra-


ballo”

RF.20 Subir datos ao servidor central.


Descrición Unha vez feitas as enquisas poderase subir a información
recollida por elas ao servidor central para ser procesadas
polo mesmo.
Relevancia Esperado.
Criterio de Considerarase que se cumpre este requerimento se a apli-
Validación cación consegue subir o arquivo de SQLite ao servidor cen-
tral e introducir a ruta onde se atopa o arquivo na base de
datos MySQL remota.

Táboa 4.30: Requerimento RF.20: “Subir datos ao servidor central”


42CAPÍTULO 4. ELABORACIÓN DO CATÁLOGO DE REQUERIMENTOS

RF.21 Actualiza lista de citas do calendario.


Descrición Un botón permitirá recargar a lista de citas do calendario
obtendo datos novos e actualizados se existiran no arquivo
ICS da páxina web da ETSE e recarga a lista de citas.
Relevancia Esperado.
Criterio de Considerarase que se cumpre este requerimento se a apli-
Validación cación consegue volver a obter os arquivos ICS da páxina
web da ETSE e actualizar a base de datos de citas local
coas novas citas recollidas e actualizar a lista de citas.

Táboa 4.31: Requerimento RF.21: “Actualiza lista de citas do calendario”

RF.22 Actualiza lista de novidades.


Descrición Un botón permitirá recargar a lista de novidades, volvendo
a parsear a páxina web da ETSE obtendo as 10 últimas
novidades publicadas na páxina da escola e actualizando a
lista de novidades.
Relevancia Esperado.
Criterio de Considerarase que se cumpre este requerimento se a apli-
Validación cación consegue volver a obter as 10 novidades máis recentes
da páxina web da ETSE e actualizar a lista de novidades.

Táboa 4.32: Requerimento RF.22: “Actualiza lista de novidades”

RF.23 Actualiza ofertas de traballo.


Descrición Un botón permitirá recargar a lista de ofertas de traballo,
volvendo a parsear a páxina web da ETSE obtendo as úl-
timas ofertas de traballo publicadas na páxina da escola e
actualizando a lista de ofertas de traballo.
Relevancia Esperado.
Criterio de Considerarase que se cumpre este requerimento se a apli-
Validación cación consegue volver a obter as últimas ofertas de traballo
da páxina web da ETSE e actualizar a lista de ofertas de
traballo.

Táboa 4.33: Requerimento RF.23: “Actualiza ofertas de traballo”


4.7. ESPECIFICACIÓN DE REQUERIMENTOS 43

RF.24 As respostas da enquisa poden ser consultadas.


Descrición Durante o desenrolo da enquisa, amosaranse as respostas
que se realizaron previamente, para que o usuario poida
modificalas ao seu antoxo antes de envialas.
Relevancia Esperado.
Criterio de Considerarase que se cumpre este requerimento se a apli-
Validación cación garda as respostas á enquisa na base de datos local e
son amosadas ao usuario cando se desprace pola enquisa.

Táboa 4.34: Requerimento RF.24: “As respostas da enquisa poden ser consul-
tadas”

4.7.2 Requerimentos Non Funcionais


Requerimentos de Plataforma

RP.01 Desenvolta para dispositivos co sistema operativo


iOS de Apple.
Descrición A aplicación debe ser desenvolta para dispositivos con sis-
tema operativo iOS de Apple.
Relevancia Esperado.
Criterio de Considerarase que se cumpre este requerimento se a apli-
Validación cación se desenvolve para iOS.

Táboa 4.35: Requerimento RP.01: “Desenvolta para dispositivos co sistema op-


erativo iOS de Apple”

RP.02 Traballar con unha base de datos MySQL.


Descrición Durante a subida de datos ao servidor central, a aplicación
deberá poder interactuar con unha base de datos MySQL.
Relevancia Esperado.
Criterio de Considerarase que se cumpre este requerimento se a apli-
Validación cación consegue executar consultas fronte a base de datos
MySQL remota.

Táboa 4.36: Requerimento RP.02: “Traballar con unha base de datos MySQL”
44CAPÍTULO 4. ELABORACIÓN DO CATÁLOGO DE REQUERIMENTOS

RP.03 Dispoñer dunha conta de desenvolvedor de Apple


gratuíta para as etapas de implementación.
Descrición Para poder descargar as ferramentas software necesarias
para a implementación é necesario dispor dunha conta de
desenvolvedor de Apple, esta pode ser gratuíta.
Relevancia Esperado.
Criterio de Considerarase que se cumpre este requerimento se adquiriu
Validación unha conta gratuíta de desenvolvedor de apple[1].

Táboa 4.37: Requerimento RP.03: “Dispoñer dunha conta de desenvolvedor de


Apple gratuíta para as etapas de implementación”

RP.03 Dispoñer dunha conta de desenvolvedor de Apple de


pago para a etapa de despregue.
Descrición Para poder despregar a aplicación na App Store de Apple é
necesario enrolarse no iOS Developer Program1
Relevancia Non Esperado.
Criterio de Considerarase que se cumpre este requerimento se aboou a
Validación apple 90€ que costa enrolarse no programa de desenvolve-
dores.

Táboa 4.38: Requerimento RP.04: “Dispoñer dunha conta de desenvolvedor de


Apple de pago para a etapa de despregue”

Requerimentos de Interface de Usuario

RI.01 Interface amigable e usable.


Descrición A interface debería ser o máis atractiva e intuitiva posible.
Relevancia Desexable.
Criterio de Considerarase que se cumpre este requerimento se a apli-
Validación cación presenta un aspecto atractivo e cunha interface de
usuario útil e intuitiva.

Táboa 4.39: Requerimento RI.01: “Interface amigable e usable”


4.7. ESPECIFICACIÓN DE REQUERIMENTOS 45

RI.02 Interface orientada a dispositivos táctiles.


Descrición A interface debería ser utilizada a través dunha dispositivo
táctil debido á plataforma á que está orientada.
Relevancia Esperado.
Criterio de Considerarase que se cumpre este requerimento se a apli-
Validación cación se pode utilizar ao 100% a través da pantalla táctil.

Táboa 4.40: Requerimento RI.02: “Interface orientada a dispositivos táctiles”

Requerimentos de Datos

RD.01 Gardar as respostas en local.


Descrición As respostas deben gardarse na base de datos SQLite local
para poder ser actualizadas ou cambiadas en caso de que o
usuario o considere oportuno.
Relevancia Esperado.
Criterio de Considerarase que se cumpre este requerimento se a apli-
Validación cación garda axeitadamente as respostas na base de datos
local SQLite.

Táboa 4.41: Requerimento RD.01: “Gardar as respostas en local”

RD.02 Os datos gardados en local deben ser almaceados


nunha base de datos SQLite.
Descrición Os datos das enquisas deben gardarse nunha base de datos
SQLite en local, para máis adiante subilas ao servidor cen-
tral, que procesará o arquivo SQLite para extraer a infor-
mación.
Relevancia Esperado.
Criterio de Considerarase que se cumpre este requerimento se a apli-
Validación cación garda axeitadamente as respostas na base de datos
local SQLite.

Táboa 4.42: Requerimento RD.02: “Os datos gardados en local deben ser al-
maceados nunha base de datos SQLite”
46CAPÍTULO 4. ELABORACIÓN DO CATÁLOGO DE REQUERIMENTOS

Restricións

R.01 A aplicación debe velar polo anonimato do usuario.


Descrición Non poderán gardarse datos persoais do usuario na medida
do posible para manter o anonimato das enquisas.
Relevancia Esperado.
Criterio de Considerarase que se cumpre este requerimento se a apli-
Validación cación non garda información de carácter persoal.

Táboa 4.43: Requerimento R.01: “A aplicación debe velar polo anonimato do


usuario”

R.02 Non accederá á información da ETSE sen ter cu-


berta as enquisas.
Descrición Os usuarios que non cubran a enquisa non poderán acceder
á información recollida da páxina web da ETSE
Relevancia Esperado.
Criterio de Considerarase que se cumpre este requerimento se a apli-
Validación cación non da acceso ao usuario á sección de citas, novidades
e bolsa de traballo.

Táboa 4.44: Requerimento R.02: “Non accederá á información da ETSE sen ter
cuberta as enquisas”

4.8 Casos de Uso


Os casos de uso representan unidades funcionais dun sistema ou subsistema
nos que un ou máis actores interaccionan co sistema para realizar accións definidas.

4.8.1 Diagrama de Casos de Uso


O diagrama de casos de uso pretende esquematizar o que se pode esperar da
aplicación a desenvolver cun simple golpe de vista.
4.8. CASOS DE USO 47

Subsistema Bolsa de Traballo Subsistema Enquisa


Recarga Ofertas Consulta
de Traballo Resultados
Cubre Transporte
Acceso á Lista Acdede a Detalles Enquisa
de Ofertas de da Oferta de Transporte
Cubre
Traballo Traballo Enquisa
Papel

Subsistema Novidades Consulta


Resultados
Acceso á Lista Papel
de Novidades

Recarga Envía Datos


Novidades

Accede a Detalles Subsistema Calendario


da Novidade Usuario Acceso á Lista
de Citas do
Carga Máis Calendario
Novidades
Recarga Citas do
Calendario

Accede a
Detalles da Cita
Información
Adicional
Consellos para a
Redución da Pegada
Borrar Datos
Ecolóxica
Usuario
Subsistema Pegada Ecolóxica
Selección do
Perfil de Usuario

Subsistema Perfil

Figura 4.1: Diagrama de Casos de Uso Global

Subsistema Perfil

Este subsistema é o encargado de manexar as accións sobre o perfil de usuario.


Encárgase de dar funcionalidade á selección do perfil e ao borrado de datos do
mesmo.

Subsistema Perfil

Borrar Datos
Usuario

Usuario
Selección do
Perfil de Usuario

Figura 4.2: Subsistema Perfil


48CAPÍTULO 4. ELABORACIÓN DO CATÁLOGO DE REQUERIMENTOS

Identificador CU.01
Nome Selección do Perfil de Usuario
Propósito A primeira vez que se inicie a aplicación pediráselle
ao usuario que seleccione o perfil ao cal pertence
dentro da universidade.
Actores que participan Usuario
Relacións con outros Non consta
casos de uso
Precondicións O perfil non foi seleccionado con anterioridade ou
os datos do usuario foron borrados.
Poscondicións O usuario queda configurado con un perfil deter-
minado entre PDI, PAS ou Estudante
Escenarios Iníciase a aplicación por primeira vez ou borrouse
a información do usuario, preguntaráselle con cal
dos 3 perfís coincide a súa relación coa USC (PDI,
PAS ou Estudante).
Escenario alternativo Iníciase a aplicación cando o usuario xa selec-
cionara un perfil anteriormente. Saltará esta op-
ción á vista principal da aplicación.
Subsistemas Subsistema Perfil

Táboa 4.45: Caso de Uso CU.01

Identificador CU.02
Nome Borrar Datos Usuario
Propósito Eliminar do medio de almacenamento local os
datos relativos ás enquisas cubertas polo usuario.
Actores que participan Usuario
Relacións con outros Non consta
casos de uso
Precondicións O usuario seleccionou un perfil.
Poscondicións A información do usuario elimínase do almacena-
mento local.
Escenarios O usuario preme o botón que lle permite borrar
os datos relativos a el na xanela correspondente, a
aplicación xera unha alerta pedindo confirmación
para evitar borrados accidentais.
Subsistemas Subsistema Perfil

Táboa 4.46: Caso de Uso CU.02


4.8. CASOS DE USO 49

Subsistema Enquisa
Este subsistema é o encargado de manexar todas as accións que o usuario debe
realizar sobre a aplicación á hora de encher as enquisas de papel e transporte.
Tamén se encarga de amosar os resultados obtidos despois de cubrir a enquisa e
de subir os datos a o servidor central.

Subsistema Enquisa

Cubre Enquisa
Transporte

Consulta Resultados
Transporte

Usuario
Cubre Enquisa
Papel

Consulta Resultados
Papel

Envía Datos

Figura 4.3: Subsistema Enquisa

Identificador CU.03
Nome Cobre Enquisa Transporte
Propósito Responder ás preguntas relacionadas coa enquisa
sobre hábitos de transporte.
Actores que participan Usuario
Relacións con outros Non consta
casos de uso
Precondicións O usuario seleccionou un perfil.
Poscondicións As resposta seleccionadas quedan gardadas en al-
macenamento local mentres remata de cubrir a en-
quisa.
Escenarios O usuario preme o botón que o leva ao inicio da
enquisa de transporte e vai avanzando a través das
diferentes preguntas.
Subsistemas Subsistema Enquisa

Táboa 4.47: Caso de Uso CU.03


50CAPÍTULO 4. ELABORACIÓN DO CATÁLOGO DE REQUERIMENTOS

Identificador CU.04
Nome Consulta Resultados Transporte
Propósito Consulta a pegada ecolóxica relativa ao transporte.
Actores que participan Usuario
Relacións con outros Non consta
casos de uso
Precondicións O usuario completou a enquisa de transporte.
Poscondicións Todas as respostas foron gardadas en almacena-
mento local a partir das cales se calculou a pegada
ecolóxica relativa ao transporte.
Escenarios O usuario remata de cubrir a enquisa de transporte
e dirísexe á sección de estatísticas para consultar a
súa pegada ecolóxica relativa a os hábitos de trans-
porte.
Subsistemas Subsistema Enquisa

Táboa 4.48: Caso de Uso CU.04

Identificador CU.05
Nome Cobre Enquisa Papel
Propósito Responder ás preguntas relacionadas coa enquisa
sobre consumo de papel.
Actores que participan Usuario
Relacións con outros Non consta
casos de uso
Precondicións O usuario seleccionou un perfil.
Poscondicións As resposta seleccionadas quedan gardadas en al-
macenamento local mentres o usuario remata de
cubrir a enquisa.
Escenarios O usuario preme o botón que o leva ao inicio da
enquisa de transporte e vai avanzando a través das
diferentes preguntas.
Subsistemas Subsistema Enquisa

Táboa 4.49: Caso de Uso CU.05


4.8. CASOS DE USO 51

Identificador CU.06
Nome Consulta Resultados Papel
Propósito Consulta a pegada ecolóxica relativa ao consumo
de papel.
Actores que participan Usuario
Relacións con outros Non consta
casos de uso
Precondicións O usuario completou a enquisa de consumo de pa-
pel.
Poscondicións Todas as respostas foron gardadas en almacena-
mento local a partir das cales se calculou a pegada
ecolóxica relativa ao consumo de papel.
Escenarios O usuario remata de cubrir a enquisa de consumo
de papel e dirísexe á sección de estatísticas para
consultar a súa pegada ecolóxica relativa ao con-
sumo de papel.
Subsistemas Subsistema Enquisa

Táboa 4.50: Caso de Uso CU.06

Identificador CU.07
Nome Envía Datos
Propósito Enviar os datos recollidos polas enquisas ao servi-
dor central.
Actores que participan Usuario
Relacións con outros Non consta
casos de uso
Precondicións O usuario completou a enquisa de consumo de pa-
pel e de transporte.
Poscondicións Todas as respostas foron gardadas en almacena-
mento local á espera de ser enviadas. O botón que
permite enviar os datos actívase.
Escenarios O usuario remata de cubrir as dúas enquisas e dirí-
sexe á sección de estatísticas onde o botón de en-
viar datos deberá estar habilitado.
Subsistemas Subsistema Enquisa

Táboa 4.51: Caso de Uso CU.07


52CAPÍTULO 4. ELABORACIÓN DO CATÁLOGO DE REQUERIMENTOS

Subsistema Pegada Ecolóxica

Subsistema encargado de manexar información adicional sobre a pegada ecolóx-


ica, con datos curiosos e información adicional, ademais de consellos que axudarán
ao usuario a reducir a súa pegada ecolóxica na medida do posible.

Subsistema Pegada Ecolóxica


Consellos para a
Redución da Pegada
Ecolóxica

Información
Usuario Adicional

Figura 4.4: Subsistema Pegada Ecolóxica

Identificador CU.08
Nome Consellos para a Redución da Pegada Ecolóxica
Propósito Informar ao usuario sobre accións que pode re-
alizar para conseguir reducir a súa pegada ecolóx-
ica.
Actores que participan Usuario
Relacións con outros Non consta
casos de uso
Precondicións O usuario seleccionou un perfil.
Poscondicións O usuario visualizou a lista de consellos que lle
permiten reducir a súa pegada ecolóxica.
Escenarios O usuario entra na sección de estatísticos e con-
sulta os consellos para reducir a Pegada Ecolóxica.
Subsistemas Subsistema Pegada Ecolóxica

Táboa 4.52: Caso de Uso CU.08


4.8. CASOS DE USO 53

Identificador CU.09
Nome Información Adicional
Propósito Presentar ao usuario información que poida ser de
interese sobre a Pegada Ecolóxica.
Actores que participan Usuario
Relacións con outros Non consta
casos de uso
Precondicións O usuario seleccionou un perfil.
Poscondicións O usuario visualizou a lista que contén información
sobre a Pegada Ecolóxica.
Escenarios O usuario entra na sección de estatísticos e con-
sulta a información adicional sobre a Pegada
Ecolóxica.
Subsistemas Subsistema Pegada Ecolóxica

Táboa 4.53: Caso de Uso CU.09

Subsistema Calendario

Este subsistema encárgase de manexar a información aloxada na páxina web


da ETSE, concretamente as citas establecidas no calendario da Escola.

Subsistema Calendario
Acceso á Lista
de Citas do
Calendario

Recarga Citas do
Usuario Calendario

Accede a
Detalles da Cita

Figura 4.5: Subsistema Calendario


54CAPÍTULO 4. ELABORACIÓN DO CATÁLOGO DE REQUERIMENTOS

Identificador CU.10
Nome Acceso a Lista de Citas do Calendario
Propósito Acceder á vista onde se amosará unha lista coas
citas contidas no calendario da web da escola.
Actores que participan Usuario
Relacións con outros Non consta
casos de uso
Precondicións O usuario rematou de cubrir as enquisas de papel
e transporte.
Poscondicións O usuario pode navegar pola lista de citas do cal-
endario.
Escenarios O usuario preme sobre a xanela correspondente ao
calendario e amósaselle unha lista coas citas do
calendario da ETSE agrupadas por días.
Subsistemas Subsistema Calendario

Táboa 4.54: Caso de Uso CU.10

Identificador CU.11
Nome Recarga Citas Do Calendario
Propósito Actualizar as citas no calendario para comprobar
se existen citas novas.
Actores que participan Usuario
Relacións con outros Non consta
casos de uso
Precondicións O usuario rematou de cubrir as enquisas de papel
e transporte e entrou na xanela do calendario.
Poscondicións A aplicación dispón da lista actualizada de citas.
Escenarios O usuario preme sobre o botón de recarga de citas e
amosa unha lista actualizada coas novas citas obti-
das dende o arquivo ICS do calendario da ETSE.
Subsistemas Subsistema Calendario

Táboa 4.55: Caso de Uso CU.11


4.8. CASOS DE USO 55

Identificador CU.12
Nome Accede a Detalles da Cita
Propósito Amosar información detallada sobre unha deter-
minada cita.
Actores que participan Usuario
Relacións con outros Non consta
casos de uso
Precondicións O usuario rematou de cubrir as enquisas de papel
e transporte e entrou na xanela do calendario.
Poscondicións Vista coa información detallada da cita selec-
cionada.
Escenarios O usuario preme sobre unha cita da lista, cam-
biando de vista a unha que amosa a información
detallada da mesma.
Subsistemas Subsistema Calendario

Táboa 4.56: Caso de Uso CU.12

Subsistema Novidades

Este subsistema encárgase de manexar a información aloxada na páxina web


da ETSE, concretamente as novidades e avisos relevantes que se van colgando na
páxina web da Escola.

Subsistema Novidades

Acceso á Lista
de Novidades

Recarga
Novidades

Usuario
Accede a Detalles
da Novidade

Carga Máis
Novidades

Figura 4.6: Subsistema Novidades


56CAPÍTULO 4. ELABORACIÓN DO CATÁLOGO DE REQUERIMENTOS

Identificador CU.13
Nome Acceso a Lista de Novidades
Propósito Acceder á vista onde se amosará unha lista coas
novidades contidas na web da escola.
Actores que participan Usuario
Relacións con outros Non consta
casos de uso
Precondicións O usuario rematou de cubrir as enquisas de papel
e transporte.
Poscondicións O usuario pode navegar pola lista das novidades.
Escenarios O usuario preme sobre a xanela correspondente ás
novidades e amósaselle unha lista coas novidades
publicadas na páxina web da ETSE.
Subsistemas Subsistema Novidades

Táboa 4.57: Caso de Uso CU.13

Identificador CU.14
Nome Recarga Novidades
Propósito Actualizar novidades para comprobar se existen
novas.
Actores que participan Usuario
Relacións con outros Non consta
casos de uso
Precondicións O usuario rematou de cubrir as enquisas de papel
e transporte e entrou na xanela de novidades.
Poscondicións A aplicación dispón da lista actualizada das novi-
dades.
Escenarios O usuario preme sobre o botón de recarga de novi-
dades e recarga a lista de novidades coas 10 novi-
dades máis recentes publicadas na páxina web da
ETSE.
Subsistemas Subsistema Novidades

Táboa 4.58: Caso de Uso CU.14


4.8. CASOS DE USO 57

Identificador CU.15
Nome Accede a Detalles da Novidade
Propósito Amosar información detallada sobre unha deter-
minada novidade.
Actores que participan Usuario
Relacións con outros Non consta
casos de uso
Precondicións O usuario rematou de cubrir as enquisas de papel
e transporte e entrou na xanela das novidades.
Poscondicións Vista coa información detallada da novidade selec-
cionada.
Escenarios O usuario preme sobre unha novidade da lista,
cambiando de vista a unha que permita ver a in-
formación detallada da mesma.
Subsistemas Subsistema Calendario

Táboa 4.59: Caso de Uso CU.15

Identificador CU.16
Nome Carga Máis Novidades
Propósito Engade novidades á lista de novidades.
Actores que participan Usuario
Relacións con outros Non consta
casos de uso
Precondicións O usuario rematou de cubrir as enquisas de papel
e transporte e entrou na xanela das novidades.
Poscondicións Hai 10 novidades máis na lista.
Escenarios O usuario chega ao final da lista de novidades e a
aplicación carga 10 novidades máis.
Subsistemas Subsistema Novidades

Táboa 4.60: Caso de Uso CU.16

Subsistema Bolsa de Traballo

Este subsistema encárgase de manexar a información referente ás ofertas de


traballo que se publican periódicamente na páxina web da Escola.
58CAPÍTULO 4. ELABORACIÓN DO CATÁLOGO DE REQUERIMENTOS

Subsistema Bolsa de Traballo

Recarga Ofertas de
Traballo

Accede a Detalles da
Usuario Oferta de Traballo

Acceso á Lista de
Ofertas de Traballo

Figura 4.7: Subsistema Bolsa de Traballo

Identificador CU.17
Nome Acceso á lista de Ofertas de Traballo
Propósito Acceder á vista onde se amosará unha lista coas
ofertas de traballo contidas na web da escola agru-
padas por perfil.
Actores que participan Usuario
Relacións con outros Non consta
casos de uso
Precondicións O usuario rematou de cubrir as enquisas de papel
e transporte.
Poscondicións O usuario pode navegar pola lista das ofertas de
traballo.
Escenarios O usuario preme sobre a xanela correspondente ás
ofertas de traballo onde se amosa unha lista coas
ofertas de traballo organizadas segundo o perfil
profesional.
Subsistemas Subsistema Bolsa de Traballo

Táboa 4.61: Caso de Uso CU.17


4.8. CASOS DE USO 59

Identificador CU.18
Nome Recarga Ofertas de Traballo
Propósito Actualizar ofertas de traballo para comprobar se
existen novas ofertas.
Actores que participan Usuario
Relacións con outros Non consta
casos de uso
Precondicións O usuario rematou de cubrir as enquisas de papel
e transporte e entrou na xanela de traballo.
Poscondicións A aplicación dispón da lista actualizada das ofertas
de traballo.
Escenarios O usuario preme sobre o botón de recarga de ofer-
tas de traballo amosando unha lista actualizada
das ofertas de traballo publicadas na páxina web
da ETSE.
Subsistemas Subsistema Bolsa de Traballo

Táboa 4.62: Caso de Uso CU.18

Identificador CU.19
Nome Accede a Detalles da Oferta de Traballo
Propósito Amosar información detallada sobre unha deter-
minada oferta de traballo.
Actores que participan Usuario
Relacións con outros Non consta
casos de uso
Precondicións O usuario rematou de cubrir as enquisas de papel
e transporte e entrou na xanela de traballo.
Poscondicións Vista coa información detallada da oferta de tra-
ballo seleccionada.
Escenarios O usuario preme sobre unha oferta de traballo da
lista, cambiando de vista a unha que permita ver
a información detallada da mesma.
Subsistemas Subsistema Bolsa de Traballo

Táboa 4.63: Caso de Uso CU.19


60CAPÍTULO 4. ELABORACIÓN DO CATÁLOGO DE REQUERIMENTOS

4.9 Matriz de Trazabilidade


Funcionalidades Básicas fronte Casos de Uso

CU.04

CU.08
CU.01

CU.02

CU.03

CU.05

CU.06

CU.07

CU.09

CU.10

CU.11

CU.12

CU.13

CU.15
CU.14

CU.16

CU.17

CU.18

CU.19
RF.01 •
RF.02 •
RF.03 •
RF.04 •
RF.05 •
RF.06
RF.07 •
RF.08 • •
RF.09 • •
RF.10 •
RF.11 •
RF.12 •
RF.13 •
RF.14 • •
RF.15 •
RF.16 •
RF.17 •
RF.18 •
RF.19 •
RF.20 •
RF.21 •
RF.22 •
RF.23 •
RF.24 • •

Táboa 4.64: Matriz de Trazabilidade

4.10 Enunciado do Alcance do Proxecto


Incluiranse neste apartado aqueles procesos necesarios para garantir que o
proxecto inclúa o traballo requerido e suficiente para completalo con éxito.

4.10.1 Definición do Alcance do Proxecto


O proxecto procura desenvolver unha aplicación que ten como fin último obter
información sobre os hábitos de transporte e consumo de papel da comunidade
universitaria de xeito autónomo e calcular a Pegada Ecolóxica do usuario a partir
da información recollida. Inclúense funcionalidades que axudarán a fidelizar a os
usuarios, facendo que o fluxo de información sexa máis regular e cun volumen
maior.
4.10. ENUNCIADO DO ALCANCE DO PROXECTO 61

4.10.2 Criterios de Aceptación do Produto


A aplicación debe ser útil para o usuario, máis alá do cálculo da Pegada
Ecolóxica. Para iso debe cumprir cos requerimentos que se reflexan no apartado
4.6 do presente documento. Para a aceptación do produto desenvolveranse casos
de proba para os diferentes casos de uso descritos no apartado 4.1.

Para a aceptación do proxecto, as probas deberanse executar sen fallo.

4.10.3 Entregables do Proxecto


Debe depositarase un CD ou DVD que conteña o seguinte:

• Memoria completa do TFG.

• Código fonte do produto de software finalizado.

• Manual de instalación en formato PDF.

• Manual de usuario en formato PDF.

4.10.4 Exclusións do Proxecto


Non se inclúe ningún requerimento adicional aos descritos no apartado 4.6,
ningún tipo de traballo de mantemento da aplicación unha vez entregada nin
procesos de formación ou asistencia aos usuarios, entendendo como suficientes os
manuais de instalación e utilización.

4.10.5 Restricións do Proxecto


A aplicación deberá ser desenvolvida para dispositivos iOS. Esta restrición
limita considerablemente os medios utilizados para o desenvolvemento da apli-
cación que deberá ser desenvolta nun sistema operativo Mac OS X coa ferramenta
de desenvolvemento propietaria de Apple, Xcode.

Para que a aplicación poida ser publicada na App Store, deberá cumprir as
seguintes restricións:

• Non ser copia dunha aplicación xa existente na App Store.

• Non utilizar APIs privadas.

• Non conter erros de programación.

• Non conter pornografía nin contido bélico extremo.


62CAPÍTULO 4. ELABORACIÓN DO CATÁLOGO DE REQUERIMENTOS

4.10.6 Supostos do Proxecto


Suponse que se pode utilizar SQLite para o almacenamento dos datos que se
pretenden recoller nas enquisas.

Suponse que ao servidor central se debe subir o arquivo SQLite e que os datos
contidos no mesmo serán procesados dende o lado do servidor.
Capítulo 5

Deseño

Describirase o deseño da aplicación a nivel de clases, entidades e relacións


en diferentes diagramas. No caso de aplicarse algún patrón de deseño específico,
explicarase detalladamente e as razóns da súa aplicación. Ademais explicarase
o concepto de deseño Modelo-Vista-Controlador que seguen as aplicacións para
iOS e a súa arquitectura.

5.1 Plataforma iOS


Unha pequena introdución á plataforma sobre a que queremos desenvolver o
noso proxecto, resulta case obrigada se queremos describir con algún detalle a
tecnoloxía que imos a utilizar e o deseño que se vai a desenvolver.
iOS divídese en 4 capas, as cales a capa inferior ofrece servizos á capa superior.

Cocoa Touch

Media

Core Services

Core OS

Hardware

Figura 5.1: Capas da plataforma iOS

Core OS: En esta capa atópanse as características de baixo nivel sobre as que

63
64 CAPÍTULO 5. DESEÑO

se constrúen as outras tecnoloxías. Apenas accederemos a este nivel salvo


que se teña que interactuar con un accesorio hardware externo. O kernel,
o manexo de sockets, sistema de arquivos, etc son manexados a este nivel.

Core Services: Esta capa contén os servizos fundamentais do sistema que pode
chegar a utilizar unha aplicación. Acceso a arquivos, servizos de rede,
manexo de fíos, obxectos e coleccións de obxectos (coleccións, dicionar-
ios1 ...),etc son algunhas das características que se manexan en esta capa.
En esta capa comezan a implementarse obxectos, tratando o acceso a o
hardware de máis baixo nivel con programación orientada a obxectos. Por
exemplo, en este nivel un socket é un obxecto, a posición que devolve o
GPS é un obxecto, etc.

Media: Manexo de vídeo, fotos, e todo tipo de contido multimedia. Inclúe tamén
soporte para OpenGL, audio, pdf, etc.

Cocoa Touch: Manexa os botóns e todo tipo de interacción co dispositivo. É


onde se desenvolverá o 80% da aplicación.

5.1.1 Compoñentes da Plataforma


Para o desenvolvemento para iOS debemos utilizar unha serie de ferramentas
e estratexias de deseño, que se explican a continuación.

• Xcode 4: Case a totalidade do tempo que se vai a investir na imple-


mentación se vai a investir utilizando esta ferramenta. Con ela podemos
desenvolver o código, depuración, compilación, control de código fonte, con-
trol de versións, etc. A ferramenta é gratuita para aqueles que dispoñan
dunha conta de desenvolvedor de Apple[20].

• Objective-C: Trátase da linguaxe que se utiliza para desenvolver as apli-


cacións para as plataformas iOS. É unha linguaxe de programación orien-
tada obxectos[1].

• Frameworks: Paquetes que conteñen bibliotecas dinámicas e os recursos


que dan soporte a esas bibliotecas, compartidas co resto da aplicación.
Deben ser enlazados coa aplicación para poder utilizalos. Un framework
de exemplo o MapKit que contén todo o necesario para interactuar coa
ferramenta de mapas de iOS.[4]

• Estratexias de Deseño: MVC Modelo-Vista-Controlador. Esta estra-


texia pretende separar os datos que se manexan (Modelo), a maneira que
se van a manexar (Controlador) e como van a ser presentados ao usuario
(Vista). Explicarase máis en detalle no apartado 5.1.2.
1
Os dicionarios serían os equivalentes ás táboas hash de JAVA
5.1. PLATAFORMA IOS 65

5.1.2 Modelo Vista Controlador


A estratexia que segue o deseño MVC é a división de todos os obxectos que
se crean na nosa aplicación entre 3 campos ben diferenciados, Modelo, Vista e
Controlador. Para decidir en que campo debe ir un determinado obxecto:

Modelo: O campo modelo contén obxectos que describen que obxectos vai
manexar a aplicación. É completamente independente da interface de
usuario.

Controlador: O campo modelo contén obxectos que describen como os obxec-


tos do modelo serán representados ao usuario e como interactúan uns obx-
ectos con outros. É onde se manexa toda a lóxica da interface de usuario
da aplicación. O controlador debe coñecer absolutamente todo sobre a in-
terface de usuario (a vista) xa que será o encargado de establecer como se
representarán os obxectos do modelo na vista.

Vista: O campo conten obxectos manexados polo controlador. Simplemente


representa os obxectos tal e como necesita o controlador que se represen-
ten. Por exemplo botóns, táboas, etiquetas, etc.

Target
Action

Controlador Delegate

Notificación

Modelo Vista

Figura 5.2: Modelo-Vista-Controlador

Os obxectos contidos en cada un dos campos poden comunicarse entre si, pero
se queremos respetar esta estratexia de deseño existen certas restricións a estas
comunicacións.

O Controlador ten acceso total sen restricións aos obxectos presentes no campo
Modelo. Do mesmo xeito debe ter acceso aos obxectos presentes no campo Vista,
66 CAPÍTULO 5. DESEÑO

pero debe comunicarse con eles a través dun obxecto instanciado no controlador
de tipo Outlet, no caso de que dito obxecto presente unha saída (unha etiqueta,
unha imaxe, etc), ou un tipo Action, no caso de que sexa un obxecto da vista
que execute unha acción (un botón, un slider, etc). Estas entidades son partes
da vista que se referencian a través do Xcode.

Debido a que o Modelo é totalmente independente (ou debería selo) da inter-


face de usuario e a Vista suponse xenérica e reusable, é dicir, que unha etiqueta
poderá conter o texto que sexa preciso, sexa cal sexa o modelo, non está permitida
a comunicación directa entre estes dous campos en ningún sentido da comuni-
cación.

En algúns casos, a Vista pode necesitar comunicarse co Controlador. Esta


comunicación deberase realizar independentemente da clase da que sexa o con-
trolador. Para iso utilízanse distintos métodos de comunicación dende a Vista ao
Controlador.

• Target Action: A vista envía unha acción a un Target. En iOS este obxec-
tivo está representado por unha instancia do tipo Action, que será referen-
ciado a través do Xcode.

• Delegate: Certas accións que ocorren na vista son delegadas ao controlador,


para que este as manexe, configurando o Delegate dunha vista a unha clase
de Controlador específica.

En canto á comunicación dende o Modelo cara o Controlador existen maneiras


de realizar esta función a través dun sistema de notificacións dende o lado do
Modelo e “listeners” no lado do Controlador, pero nunca chamadas a métodos
directamente dende o Modelo ao Controlador.

Para esquematizar a relación entre diferentes campos vésaxe a figura 5.2.

5.1.3 Arquitectura

A arquitectura dunha aplicación iOS xenérica descríbese co seguinte esquema:


5.1. PLATAFORMA IOS 67

Modelo Obxectos
Persoalizados

Obxectos do Sistema

Do Sistema e/ou
Persoalizados

SQLite Obxectos de Datos

Controlador Vista

UIApplication Delegate UIWindow

Vistas e Obxectos
ViewController
de UI

Event
Loop

Figura 5.3: Arquitectura

UIApplication: Este obxecto do controlador administra os eventos e outros


comportamentos de alto nivel.

Delegate: É un obxecto específico da aplicación que se crea en tempo de execu-


ción. A súa principal función é administrar as transicións de estados dentro
da aplicación.

Obxectos de Datos: Obxectos que son gardados de xeito permanente. Os obx-


ectos do modelo en esta aplicación serán as citas, preguntas, respostas, etc.

SQLite: Administrar todos ou algún dos obxectos de datos.[15]

ViewControllers: Administra a presentación dos obxectos en pantalla.

UIWindow: Coordina a presentación de diferentes vistas na pantalla. Para


cambiar entre vistas utilizarase o controlador.

Vistas e Obxectos de Interface de Usuario: Proporciona a presentación en


pantalla dos obxectos da aplicación. Para a mellora da experiencia do
usuario, as vistas poden incorporar capas de animación.
68 CAPÍTULO 5. DESEÑO

5.2 Deseño e Implementación


Seguindo co deseño MVC describiranse a continuación as diferentes partes de
esta estratexia de deseño un a un.

5.2.1 Modelo
A persistencia dos datos acádase a partir dunha base de datos SQLite, e para
a súa correcta implementación é necesario seguir unha serie de tarefas de deseño:

1. Listado de datos, Transaccións e Informes.

2. Modelo Entidade-Relación.

3. Modelo Relacional.

4. Script de Xeración de Base de Datos.

5. Elaboración de consultas e informes.

Listado de datos, Transaccións e Informes


Listado de datos: Despois da lectura do capítulo 4 onde se detallan os
requerimentos da aplicación, obtemos os seguintes datos a almacenar na base de
datos.

• Perfiles: Perfil, Seleccionado, Completado, Carga inicial de traballos, Carga


inicial de citas e Carga inicial de novidades.

• Pregunta: Tipo, Enunciado e Tipo de resposta.

• Resposta: Pregunta á que responde e Resposta.

• Ofertas de Traballo: Título, Perfil Profesional, Empresa, Descrición,


URL da web da ETSE onde se atopa e localidade.

• Novidades: Título, Descrición e URL da web da ETSE onde se atopa.

• Citas: Resumo, Data de inicio, Data de fin, Descrición e URL da web da


ETSE onde se atopa.

• Consellos: Tipo, Título e Consello.

• Información: Pregunta e Resposta.

Transaccións: Coñecidos os datos que se van a manexar, necesítase coñecer


como se van a manexar ese datos.
5.2. DESEÑO E IMPLEMENTACIÓN 69

• Inserir Perfiles: É necesario poder inserir na base de datos os perfiles que


vai a manexar a aplicación. Esta inserción realizarase xunto co script de
xeración da base de datos.
• Establecer Perfil como Seleccionado: Debe poder establecerse un perfil como
Seleccionado.
• Establecer Perfil como Completado: Cando se completan as enquisas debe
poder establecerse o Perfil como Completado.
• Carga Inicial de Traballos: Establecerase esta opción cando se carguen as
ofertas de traballo dende a páxina web da ETSE.
• Carga Inicial de Citas: É necesario establecer este campo cando se carguen
as citas do calendario da páxina web da ETSE.
• Carga Inicial de Novidades: Debe poder establecerse este campo cando se
carguen as novidades da páxina web da ETSE.
• Inserir Preguntas: É necesario poder inserir na base de datos as preguntas
das enquisas. Esta inserción realizarase no script de xeración da base de
datos.
• Inserir Respostas: É necesario poder inserir na base de datos as respostas
das preguntas. Esta inserción realizarase no script de xeración da base de
datos.
• Inserir Respostas a Preguntas: Relacionarase unha pregunta con unha ou
máis respostas segundo o usuario vaia respondendo ás preguntas.
• Carga Inicial de Consellos: É necesario poder inserir na base de datos
consellos durante a execución do script de xeración da base de datos.
• Carga Inicial de Información: É necesario poder inserir na base de datos
información adicional durante a execución do script de xeración da base de
datos.

Informes: Descríbese que información se poderá obter da base de datos.

• Seleccionar Perfil: Debe poder coñecerse o tipo de perfil co que se está a


traballar na aplicación.
• Seleccionar Carga de Traballos: Debe poder coñecerse o estado da carga de
ofertas de traballo.
• Seleccionar todos os Traballos: Deberase poder obter a lista de traballos
cargados dende a páxina web da ETSE. Pode requerir que se agrupen por
perfil profesional.
70 CAPÍTULO 5. DESEÑO

• Seleccionar Carga de Citas: Debe poder coñecerse o estado da carga de


citas.

• Seleccionar todas as Citas: Deberase poder obter a lista completa de citas


obtidas dende a páxina web da ETSE. Pode requerir que se agrupen pola
data de inicio.

• Seleccionar Carga de Novidades: Debe poder coñecerse o estado da carga


de novidades.

• Seleccionar todas as Novidades: Deberase poder obter a lista completa de


novidades obtidas dende a páxina web da ETSE.

• Seleccionar Preguntas Relacionadas con un Perfil determinado: Deben se-


leccionarse as preguntas para un tipo de perfil específico.

• Seleccionar Respostas dunha Pregunta: Seleccionar todas as posibles re-


spostas dunha determinada pregunta.

• Comprobar que unha determinada pregunta foi respondida.

• Seleccionar Respostas feitas dunha pregunta: Deberase poder obter as re-


spostas feitas a unha determinada pregunta por parte do usuario.

• Seleccionar Todos os Consellos Ordenados por Tipo: A selección dos con-


sellos farase en bloque, e traeranse todos á vez dende a base de datos.

• Seleccionar Toda a información: A información seleccionarase toda á vez.

Modelo Entidade-Relación

O seguinte diagrama representa as entidades que manexará a base de datos


SQLite e a relación presente entre elas:
5.2. DESEÑO E IMPLEMENTACIÓN 71

Enquisas Utilidades

OfertaTraballo
Perfiles
titulo {PK}
id {PK}
perfil {PK}
completado
empresa {PK}
perfil
descricion
seleccionado
1 url
carga_inicial_traballos
localidade
carga_inicial_citas
carga_inicial_novidades
Citas
1
resumo {PK}
dataInicio {PK}
dispon requeridas
dataFin
1..* descricion
0..1 url
Preguntas 0..1
id {PK}
1 Responde
tipo Novidades
enunciado titulo
tipoResposta descricion
url {PK}
1

respondeseCon

Utilidades
0..*
Respostas Consellos
1..*
id {PK_P} tipo {PK_P}
resposta titulol {PK_P}
consello
Entidade débil
de Preguntas Informacion
pregunta {PK_P}
resposta {PK_P}

Figura 5.4: Modelo Entidade-Relación da base de datos SQLite

Cabe sinalar que as entidades “OfertaTraballo”, “Citas” e “Novidades” non se


relacionan con ningunha das outras entidades. Son entidades independentes xa
que non presentan relacións relevantes coas preguntas das enquisa ou os perfiles
de usuario.

Dicionario de Datos:
72 CAPÍTULO 5. DESEÑO

Entidade Descrición Número de instancias


Perfiles Datos sobre o perfil do usuario da apli- 3 perfiles (PDI, PAS e
cación Estudiante)
Preguntas Datos das preguntas pertencentes ás en- 18 preguntas
quisas de transporte e consumo de papel
Respostas Datos das respostas ás preguntas das en- 87 respostas
quisas de transporte e consumo de papel
OfertaTraballo Datos das ofertas de traballo publicadas aproximadamente 9
na páxina web da ETSE
Citas Datos das citas contidas no calendario Indeterminado.
da páxina web da ETSE
Novidades Datos das novidades publicadas na páx- Mínimo 10, máximo
ina web da ETSE indeterminado.
Consellos Consellos que axudarán ao usuario a re- Indeterminado.
ducir a súa pegada ecolóxica
Información Información adicional sobre a pegada Indeterminado.
ecolóxica

Táboa 5.1: Táboa de Entidades

Entidade Multiplicidade Relación Multiplicidade Entidade


Perfiles 1 dispón 1..* Preguntas
Preguntas 0..1 requeren 0..1 Preguntas
Preguntas 1 respondeseCon 0..* Respostas
Perfiles 1 responde 1 Preguntas
Perfil 1 responde 1..* Respostas
Preguntas 1 responde 1..* Respostas

Táboa 5.2: Táboa de Relacións

Entidade Atributos Descrición Tipos de Datos Admite Predet.


ou NULL
Relación
id {PK} Identificador do Perfil INTEGER Non
completado Garda que enquisas foron cu- INTEGER Non 0
bertas completamente
Perfiles perfil Nome do perfil VARCHAR(25) Si
seleccionado Establece se se escolleu este INTEGER Si 0
tipo de perfil ao come o da
execución da aplicación
carga_inicial_traballos Garda se foron cargados os BOOL Si
datos da bolsa de traballos da
páxina web da ETSE
5.2. DESEÑO E IMPLEMENTACIÓN 73

carga_inicial_citas Garda se foron cargados os BOOL Si


datos do calendario da páx-
ina web da ETSE
carga_inicial_novidades Garda se foron cargados os BOOL Si
datos das novidades da páx-
ina web da ETSE
id {PK} Identificador da pregunta INTEGER Non
tipo Garda información sobre se a VARCHAR(20) Si
Preguntas
pregunta é de tipo transporte
ou papel
enunciado Información coa clave que se VARCHAR(500) Si
utilizará para obter a pre-
gunta dun arquivo .strings
que contén os enunciados
completos
tiporesposta Describe o tipo de resposta VARCHAR(20) Si 0
que se espera á pregunta,
podendo ser múltiple, valor
numérico, resposta única, etc
id {PK_P} Identificador da resposta INTEGER Non
Respostas
resposta Información coa clave que se VARCHAR(20) Si
utilizará para obter a pre-
gunta dun arquivo .strings
que contén as respostas com-
pletas
resumo {PK_P} Resumo da cita TEXT Non
dataInicio {PK_P} Data e hora de inicio da cita DATETIME Non
Citas dataFin Data e hora do fin da cita DATETIME Non
descricion Información detallada sobre a TEXT Si
cita
URL URL da páxina web da ETSE TEXT Non
onde se atopa información so-
bre a cita
titulo Título da novidade TEXT Si
Novidades descricion Descrición da novidade pub- TEXT Si
licada
url {PK} URL da páxina web da ETSE VARCHAR(255) Non
onde aparece información so-
bre a novidade
titulo {PK_P} Título da oferta de traballo TEXT Non
perfil {PK_P} Perfil profesional ao que vai VARCHAR(100) Non
ofertas orientada a oferta de traballo
_traballo empresa {PK_P} Nome da empresa que oferta VARCHAR(100) Non
a praza
descricion Descrición completa da oferta TEXT Si
de traballo
url URL da páxina web da ETSE TEXT Non
onde aparece información so-
bre a oferta de traballo
localidade Localidade xeográfica onde se VARCHAR(200) Si
vai desenrolar o traballo
tipo {PK_P} Tipo de consello, se se refire VARCHAR Non
Consellos a papel ou transporte
titulo {PK_P} Título do consello VARCHAR Non
consello Clave para a obtención da VARCHAR Non
redacción completa do con-
sello do arquivo .strings
pregunta {PK_P} Pregunta información adi- VARCHAR Non
Informacion
cional sobre a Pegada Ecolóx-
ica
resposta {PK_P} Información adicional que re- VARCHAR Non
sponde á pregunta

Táboa 5.3: Táboa de Atributos


74 CAPÍTULO 5. DESEÑO

Modelo Relacional
A partir do diagrama Entidade-Relación da figura 5.4 crearase o Modelo Rela-
cional que se seguirá para a implementación do script de xeración da base de
datos. A transformación do modelo Entidade-Relación a modelo Relacional con-
séguese seguindo unha serie de pasos:
1. A partir de entidades fortes, créanse táboas que inclúan todos os atributos
da entidade.
2. A partir dunha entidade débil créase unha táboa que inclúa todos os atrib-
utos de esta, incluíndo a clave principal da entidade forte da que depende
como clave externa. A clave principal da nova relación será a composta
pola clave principal da entidade forte e a clave principal da entidade débil.
3. Nas relacións con multiplicidade 1:* debe engadirse na relación do lado “*”
a clave principal do lado “1” como clave externa. Se a relación é unha
relación con atributos deben ser incluídos na mesma táboa.
4. Se a multiplicidade é 1:1 debemos verificar a obrigatoriedade de partici-
pación na relación:
• Se é obrigatorio que as dúas entidades interveñan na relación (1..1—
1..1) combínanse as dúas entidades nunha mesma táboa
• Se a participación é obrigatoria nun único lado (1..1—0..1) a clave
principal do lado opcional da relación 0..1 engádese na táboa no lado
obrigatorio como clave externa.
• Se a participación é opcional nos dous lados (0..1—0..1), a disposición
é arbitraria sempre e cando non se dispoña de información adicional
na semántica.
5. Se a relación é *:* debe crearse unha táboa para representar a relación, que
constará coas claves primarias das entidades presentes na relación.
Ademais teranse en conta as políticas de integridade referencial.
• Restrinxir (RESTRICT): Non se permite a actualización ou borrado do atrib-
uto referenciado.
• Cascada (CASCADE): A actualización ou borrado dun atributo, no caso de
seres clave externa, desencadea o borrado da tupla que é referenciada por
esa clave externa (e así consecutivamente se esta fai referencia a outra,
sempre e cando non estea restrinxida por unha política diferente).
• Fixar un valor determinado: O atributo referenciado pola clave externa
ponse nun valor por defecto ou NULL sempre que non quebre ningunha
política de integridade.
5.2. DESEÑO E IMPLEMENTACIÓN 75

PERFILES (id, completado, perfil, seleccionado, carga_inicial_traballos,


carga_inicial_citas, carga_inicial_novidades)
CLAVE PRINCIPAL id

PREGUNTAS (id, tipo, enunciado, tiporesposta)


CLAVE PRINCIPAL id

RESPOSTAS (id, resposta, idPregunta)


CLAVE PRINCIPAL (id, idPregunta)
CLAVE FORÁNEA (idPregunta) REFERENCIA PREGUNTAS (id)
ON DELETE CASCADE, ON UPDATE CASCADE

DISPON (idPregunta, idPerfil)


CLAVE PRINCIPAL (idPregunta, idPerfil)
CLAVE FORÁNEA (idPregunta) REFERENCIA PREGUNTAS (id)
ON DELETE CASCADE, ON UPDATE CASCADE
CLAVE FORÁNEA (idPerfil) REFERENCIA PERFILES (id)
ON DELETE CASCADE, ON UPDATE CASCADE

RESPONDE (idPerfil, idPregunta, idResposta)


CLAVE PRINCIPAL (idPerfil, idPregunta, idResposta)
CLAVE FORÁNEA (idPerfil) REFERENCIA PERFILES (id)
ON DELETE CASCADE, ON UPDATE CASCADE
CLAVE FORÁNEA (idPregunta) REFERENCIA PREGUNTAS (id)
ON DELETE CASCADE, ON UPDATE CASCADE
CLAVE FORÁNEA (idResposta) REFERENCIA RESPOSTAS (id)
ON DELETE CASCADE, ON UPDATE CASCADE

PREGUNTAS_REQUERIDAS (idPregunta, idPreguntaRequerida, idRespostaRequerida)


CLAVE PRINCIPAL (idPregunta, idPreguntaRequerida, idRespostaRequerida)
CLAVE FORÁNEA (idPregunta) REFERENCIA PREGUNTAS (id)
ON DELETE CASCADE, ON UPDATE CASCADE
CLAVE FORÁNEA (idPreguntaRequerida, idRespostaRequerida) REFERENCIA
RESPONDE (idPregunta, idResposta)
ON DELETE CASCADE, ON UPDATE CASCADE

CITAS (resumo, dataInicio, dataFin, descricion, url)


CLAVE PRINCIPAL (resumo, dataInicio)

OFERTAS_TRABALLO (titulo, perfil, empresa, descricion, url, localidade)


CLAVE PRINCIPAL (titulo, perfil, empresa)

NOVIDADES (titulo, descricion, url)


76 CAPÍTULO 5. DESEÑO

CLAVE PRINCIPAL (url)

CONSELLOS (tipo, titulo, consello)


CLAVE PRINCIPAL (tipo, titulo)

INFOCMACION (pregunta, resposta)


CLAVE PRINCIPAL (pregunta, resposta)

Este Modelo Relacional xera o script de xeración dispoñible no CD-ROM


adxunto co proxecto.

5.2.2 Vista
A vista presenta a aplicación ao usuario. Está formada por diferentes vistas
segundo a función que vaia a desempeñar.

O entorno de desenvolvemento que ofrece Xcode fai que o deseño das vistas
se realice de xeito natural e dende o storyboard pódese comprobar o fluxo entre
as diferentes vistas.

Describiranse as vistas con maior relevancia e a funcionalidade dos elementos


que presentan estas.

Figura 5.5: Vista inicial

A figura 5.5 aparecerá ao inicio da aplicación se usuario non seleccionou an-


teriormente un perfil de usuario. Os botóns que aparecen na parte baixa da vista
permiten ao usuario realizar esta función, seleccionar perfil de usuario. Tamén
5.2. DESEÑO E IMPLEMENTACIÓN 77

se presentará unha pequena explicación dos obxectivos da aplicación e da súa


funcionalidade.

Unha vez seleccionado o perfil presentarase a figura 5.6a onde poderá escoller
a enquisa que desexa cubrir.

(a) (b)

Figura 5.6: Vistas accesibles dende o inicio da aplicación

Tamén se habilitará o acceso aos consellos para a redución da pegada ecolóxica


e a información adicional. A vista correspóndese coa figura 5.6b.

(a) (b)

Figura 5.7: Tipos vistas segundo o tipo de resposta da pregunta


78 CAPÍTULO 5. DESEÑO

As enquisas utilizan vistas similares segundo o tipo de resposta que require a


pregunta. Se fose resposta múltiple un exemplo é a figura 5.7a, e si a resposta
require unha resposta única que non sexa numérica tomamos como exemplo a
figura 5.7b.

(a) (b)

Figura 5.8: Tipos vistas para respostas numéricas

No caso de necesitar unha resposta de tipo numérico utilizaranse vistas como


as que representan as figuras 5.8a e 5.8b.

(a) (b)

Figura 5.9: Tipos vistas para listas e detalles


5.2. DESEÑO E IMPLEMENTACIÓN 79

As vistas que requiren presentar a información a través de listas utilizan unha


vista similar á representada na figura 5.9a. Dende esta vista podemos acceder
aos detalles da entidade representada a modo de resumo na lista que accederá a
unha lista representada na figura 5.9b. Con estas dúas vistas pódense representar
listas de citas, ofertas de traballo ou novidades.

As vistas dos detalles poden diferir sensiblemente segundo a información que


se precise amosar ao usuario. A figura 5.10a representa a vista que amosa os
detalles dunha oferta de traballo, mentres que a figura 5.10b representa os detalles
dunha novidade.

(a) (b)

Figura 5.10: Tipos vistas para detalles de diferentes entidades

A vista é moi similar unha á outra, únicamente cambia o número de campos


de texto, xa que diferentes entidades constan de diferente número de campos a
amosar.

Por último a presentación de resultados do cálculo da Pegada Ecolóxica re-


quire introducir un novo elemento que axuda a comparar a Pegada Ecolóxica do
usuario coa da media da USC.
80 CAPÍTULO 5. DESEÑO

Figura 5.11: Vista Resultados Pegada Ecolóxica

Este elemento é unha barra de estado que se vai enchendo e cambiando de


cor dende o verde ata o vermello segundo aumenta o valor calculado. A figura
5.11 amosa como se presentarán os resultados ao usuario e un exemplo da barra
de estado.

5.2.3 Controlador
Como se comentou no apartado 5.1.2 o controlador é o encargado de admin-
istrar toda a lóxica da aplicación, utilizando aquelas partes do modelo que sexan
necesarias indicándolle á vista como deben ser presentadas ao usuario. É no con-
trolador onde se precisa do maior esforzo de implementación.

Cada vista dispón dun controlador asociado. Estes controladores identifícanse


utilizando a coletilla ViewController nos nomes das mesmas. Presentarase en este
apartado os diagramas de clases que representan a estrutura do código. Debido
a que o diagrama de clases de toda a aplicación resultou dunha complexidade
elevada, dividiranse segundo os distintos subsistemas.

Ademais describiranse as clases presentes no diagrama a través de tarxetas


CRC. Estas tarxetas CRC2 axudan a describir as clases que forman parte da
aplicación. Estas tarxetas especifican para que se utiliza unha determinada clase
e con que outras clases ou interfaces colabora.

2
Acrónimo de Clase - Responsabilidade - Colaboración
5.2. DESEÑO E IMPLEMENTACIÓN 81

Diagramas de Clases

AppDelegate
+ window : UIWindow
- enquisaDAO : EnquisaDAO
- mainViewController : MainViewController
+ application (UIApplication) didReceiceLocalNotification (UILocalNotification)
Utilidades - alertView (UIAlertView) didDismissWithButtonIndex (NSInteger)
+ dataInicioDaCitaICS (NSString) : NSString
+ dataFinDaCitaICS (NSString) : NSString
+ dataDoString (NSString) : NSDate
+ urlDaCitaICS (NSString) : NSString
+ resumoDaCitaICS (NSString) : NSString
+ descricionDaCitaICS (NSString) : NSString MainViewController
+ obtenTraballos (NSUrl) : NSMutableArray
+ cargarCalendario + application (UIApplication) didReceiceLocalNotification (UILocalNotification)
+ cargarNovasCitas - alertView (UIAlertView) didDismissWithButtonIndex (NSInteger)
+ obterDetallesCita (Cita) : NSString
+ obterDetallesTraballo (Traballo) : NSString
+ obtenNovidades (NSUrl) : NSMutableArray
+ calculaEmisionesPapel : double
+ calculaEmisionesTransporte : double
+ subirArquivo : NSString
+ obterPlistOrdixinal : NSDictionary
+ obterPlistDocuments : NSMutableDictionary
+ gardarPlistDocuments (NSMutableDictionary) EstatisticaViewController SeleccionPerfilViewcontroller
+ consultaCargandoDatosDB : BOOL + selectorUnidades : UIPickerView - enquisaDAO : EnquisaDAO
+ cargandoDatos (BOOL) + labelTransportePE : UILabel - perfil : Perfil
+ labelTransportePEMedia : UILabel + SeleccionarPerfil (id) : IBAction
+ labelPapelPE : UILabel
+ labelPapelPEMedia : UILabel
+ botonTransporte : UIButton
+ botonPapel : UIButton
+ botonSubirDatos : UIButton
+ textoInicial : UITextView
+ progresoPropioTransporte : UIProgressView
+ progresoMediaTransporte : UIProgressView
+ listaUnidades : NSArray
+ progresoPropioPapel : UIProgressView
+ progresoMediaPapel : UIProgressView
+ pegadaTransporte : double
+ pegadaPapel : double
+ pegadaMediaTransporte : double
+ pegadaMediaPapel : double
+ subirDatos (id) : IBAction
+ borrarDatos (id) : IBAction
- numberOfComponentsInPickerView (UIPickerView) : NSInteger
- pickerView (UIPickerView) numberOfRowsInComponent (NSInteger) : NSInteger
- pickerView (UIPickerView) titleForRow (NSInteger) forComponent (NSInteger) : NSString
- pickerView (UIPickerView) didSelectRow (NSInteger) inComponent (NSInteger)
- alertView (UIAlertView) didDismissWithButtonIndex (NSInteger)

LocalDB
+ dataBaseName : NSString
+ dataBasePath : NSString
+ sqlString : NSString
+ paths : NSArray
+ documentsDirectory : NSString <<interface>>
+ init : id UIViewController
+ obterConsellos : NSMutableArray
+ obterInformacion : NSArray + initWithNibName (NSString) bundle (NSBubdle) : id
+ insertarNovidade (Novidades) + viewDidLoad
+ insertarNovidades (NSMutableArray) + viewDidAppear (BOOL)
+ obterNovidades : NSMutableArray + viewWillDisappear (BOOL)
+ establecerCargaInicialNovidadesCompletada + prepareForSegue (UIStoryboardSegue) sender (id)
+ estaCompletadaACargaDeNovidades : BOOL
+ establecerCargaInicialNovidadesNonCompletada *
+ insertaTraballo (Traballo)
+ obtenTraballos : NSMutableArray manexa
+ establecerCargaInicialTraballosCompletada
+ estaCompletadaACargaDeTraballos : BOOL
+ establecerCargaInicialTraballosNonCompletada
+ insertarCita (Cita) 1
+ obterCitasDende (int) ata (int) : NSMutableArray
+ borrarCitas <<interface>>
+ establecerCargaInicialCitasCompletada UINavigationController 5 controla 1 UITabBarController
+ estaCompletadaACargaDeCitas : BOOL
+ establecerCargaInicialCitasNonCompletada
+ establecerPerfil
+ borrarPerfiles 1 manexa
+ obterNumeroTiposPreguntas : int
+ obterRespostasParaPreguntaRespostaUnica (NSInteger) : NSArray
+ obterNumeroDePreguntasPorTipo : NSDictionary
+ obterRespostasAPregunta (NSInteger) : NSMutableArray *
+ estaRespondidaAPregunta (int) CoaResposta (int) : BOOL <<interface>>
+ respondePreguntaMultiple (int) coaResposta (int) UITableViewController
+ respondePreguntaValorUnico (Preguntas) coValor (Respostas)
+ borrarRespostas + viewDidLoad
+ estaRespondidaAPregunta (int) : BOOL + numberOfSectionsInTableView (UITableView) : NSInteger
+ obterRespostasDependentesDePregunta (int) : NSMutableArray + tableView (UITableView) numberOfRowsInSection (NSInteger) : NSInteger
+ eAPreguntaRequeridaDeRespostaMultiple (int) : BOOL + tableView (UITableView) cellForRowAtIndexPath (NSIndexPath) : UITableViewCell
+ obterTransportesSelecionados : NSMutableArray + tableView (UITableView) didSelectRowAtIndexPath (NSIndexPath)
+ obterPreguntaTipoVia : Preguntas + tableView (UITableView) willDisplayCell (UITableViewCell) forRowAtIndexPath (NSIndexPath)
+ obterPreguntaMotivoTipo : Preguntas + tableView (UITableView) titleForHeaderInSection (NSInteger) : NSString
+ obterPreguntaConId (int) : Preguntas + viewWillAppear : BOOL
+ obterRespostaAPregunta (int) : Respostas
+ respondePreguntaValor (int) coValor (NSString)
+ establecerCuestionarioNonCompletado (NSString) Perfil
+ finalizarCuestionario (NSString) + idPerfil : NSString
+ borrarRespostaAPregunta (int) + stringPerfil : NSString
- insertarNovaResposta (Respostas) conID (int) + completado : NSString
- actualizaResposta (int) coValor (NSString) + seleccionado : NSString
- obterIdPreguntaRequeridaPara (int) : int + cargaCalendarioInicialCompletada : NSString
- obterIdUltimaResposta : int + cargaTraballosInicialCompletada : NSString
- haiRespostaParaPreguntaDistancia (int) : BOOL + getInstance : Perfil
- obterSeguinteIdCitas : int
- obterSeguinteIdTraballos : int

Figura 5.12: Diagrama de Clases do Subsistema Perfil


82 CAPÍTULO 5. DESEÑO

AppDelegate <<interface>>
UITabBarController 1
+ window : UIWindow UINavigationController
- enquisaDAO : EnquisaDAO 1 controla 5
- mainViewController : MainViewController
+ application (UIApplication) didReceiceLocalNotification (UILocalNotification)
- alertView (UIAlertView) didDismissWithButtonIndex (NSInteger) 1

MainViewController manexa
manexa
+ application (UIApplication) didReceiceLocalNotification (UILocalNotification)
- alertView (UIAlertView) didDismissWithButtonIndex (NSInteger)

<<interface>>
SeleccionPerfilViewcontroller UITableViewController
- enquisaDAO : EnquisaDAO *
- perfil : Perfil + viewDidLoad
+ SeleccionarPerfil (id) : IBAction + numberOfSectionsInTableView (UITableView) : NSInteger
+ tableView (UITableView) numberOfRowsInSection (NSInteger) : NSInteger
+ tableView (UITableView) cellForRowAtIndexPath (NSIndexPath) : UITableViewCell
+ tableView (UITableView) didSelectRowAtIndexPath (NSIndexPath)
+ tableView (UITableView) willDisplayCell (UITableViewCell) forRowAtIndexPath (NSIndexPath)
+ tableView (UITableView) titleForHeaderInSection (NSInteger) : NSString
+ viewWillAppear : BOOL
<<interface>>
*
UIViewController

+ initWithNibName (NSString) bundle (NSBubdle) : id


+ viewDidLoad
+ viewDidAppear (BOOL)
+ viewWillDisappear (BOOL)
+ prepareForSegue (UIStoryboardSegue) sender (id)

RespuestaDistanciaViewController RespuestaCantidadViewController RespuestaValorViewController RespuestaChecksViewController


+ pregunta : Preguntas + pregunta : Preguntas + pregunta : Preguntas + pregunta : Preguntas
+ resposta : Respostas + resposta : Respostas + respostas : NSArray + arrayRespostas : NSMutableArray
+ textView : UITextView + textView : UITextView + textEnunciado : UITextView + arrayBooleams : NSMutableArray
+ sliderKM : UISlider + slider : UISlider + listaPicker : UIPickerView + arrayTransportesSeleccionados : NSMutableArray
+ distancia : UILabel + cantidade : UILabel + respostaSeleccionada : Respostas + numeroRespostasSeleccionadas : int
+ sliderM : UISlider + labelIda : UILabel + arrayTransportesSeleccionados : NSMutableArray + vehiculo : NSString
+ pasoAPaso : UIStepper + labelVolta : UILabel - enquisaDAO : EnquisaDAO + textEnunciado : UITextView
+ imaxeFog : UIImageView - enquisaDAO : EnquisaDAO - perfil : Perfil - enquisaDAO : EnquisaDAO
+ imaxe : UIImageView + cambiarCantidade (id) : IBAction + seguintePregunta (id) : IBAction - perfil : Perfil
- enquisaDAO : EnquisaDAO + seguintePregunta (id) : IBAction + cambiaValor (UISwitch) : IBAction
+ kmAkm (UIStepper) : IBAction + seguintePregunta (id) : IBAction
+ cambiaMetros (id) : IBAction
+ cambiarDistancia (id) : IBAction
+ seguintePregunta (id) : IBAction

EnquisaDAO
- fonteDatos: LocalDB
+ init : id
+ establecerPerfil LocalDB
+ borrarPerfiles + dataBaseName : NSString
+ dataBasePath : NSString Perfil
+ obterNumeroTiposPreguntas : int + idPerfil : NSString
+ obterRespostasParaPreguntaRespostaUnica (NSInteger) : NSArray + sqlString : NSString
+ paths : NSArray + stringPerfil : NSString
+ obterNumeroDePreguntasPorTipo : NSDictionary + completado : NSString
+ obterRespostasAPregunta (NSInteger) : NSMutableArray + documentsDirectory : NSString
+ init : id + seleccionado : NSString
+ estaRespondidaAPregunta (int) CoaResposta (int) : BOOL + cargaCalendarioInicialCompletada : NSString
+ respondePreguntaMultiple (int) coaResposta (int) + obterConsellos : NSMutableArray
+ obterInformacion : NSArray + cargaTraballosInicialCompletada : NSString
+ respondePreguntaValorUnico (Preguntas) coValor (Respostas) + getInstance : Perfil
+ borrarRespostas + insertarNovidade (Novidades)
+ estaRespondidaAPregunta (int) : BOOL + insertarNovidades (NSMutableArray)
+ obterRespostasDependentesDePregunta (int) : NSMutableArray + obterNovidades : NSMutableArray
+ eAPreguntaRequeridaDeRespostaMultiple (int) : BOOL + establecerCargaInicialNovidadesCompletada
+ obterTransportesSelecionados : NSMutableArray + estaCompletadaACargaDeNovidades : BOOL
+ obterPreguntaTipoVia : Preguntas + establecerCargaInicialNovidadesNonCompletada
+ obterPreguntaMotivoTipo : Preguntas + insertaTraballo (Traballo)
+ obtenTraballos : NSMutableArray Preguntas
+ obterPreguntaConId (int) : Preguntas + idPregunta : NSString
+ obterRespostaAPregunta (int) : Respostas + establecerCargaInicialTraballosCompletada
+ estaCompletadaACargaDeTraballos : BOOL + tipo : NSString
+ respondePreguntaValor (int) coValor (NSString) + enunciado : NSString
+ establecerCuestionarioNonCompletado (NSString) + establecerCargaInicialTraballosNonCompletada
+ insertarCita (Cita) + preguntaPadre : NSString
+ finalizarCuestionario (NSString) + tipoResposta : NSString
+ borrarRespostaAPregunta (int) + obterCitasDende (int) ata (int) : NSMutableArray
+ borrarCitas
+ establecerCargaInicialCitasCompletada
+ estaCompletadaACargaDeCitas : BOOL
SeleccionCuestionarioViewController + establecerCargaInicialCitasNonCompletada
+ botonTransporte : UIButton + establecerPerfil
+ botonPapel : UIButton + borrarPerfiles
+ aclaracion : UITextView + obterNumeroTiposPreguntas : int
+ completado : int + obterRespostasParaPreguntaRespostaUnica (NSInteger) : NSArray
+ transporteCompletado : UIImageView + obterNumeroDePreguntasPorTipo : NSDictionary
+ papelCompletado : UIImageView + obterRespostasAPregunta (NSInteger) : NSMutableArray
+ estaRespondidaAPregunta (int) CoaResposta (int) : BOOL
+ respondePreguntaMultiple (int) coaResposta (int)
+ respondePreguntaValorUnico (Preguntas) coValor (Respostas) Respostas
+ borrarRespostas + idResposta : NSString
+ estaRespondidaAPregunta (int) : BOOL + idPregunta : NSString
+ obterRespostasDependentesDePregunta (int) : NSMutableArray + resposta : NSString
+ eAPreguntaRequeridaDeRespostaMultiple (int) : BOOL + definitiva : BOOL
+ obterTransportesSelecionados : NSMutableArray + seleccionada : BOOL
+ obterPreguntaTipoVia : Preguntas
+ obterPreguntaMotivoTipo : Preguntas
+ obterPreguntaConId (int) : Preguntas
+ obterRespostaAPregunta (int) : Respostas
+ respondePreguntaValor (int) coValor (NSString)
+ establecerCuestionarioNonCompletado (NSString)
+ finalizarCuestionario (NSString)
+ borrarRespostaAPregunta (int)
- insertarNovaResposta (Respostas) conID (int)
- actualizaResposta (int) coValor (NSString)
- obterIdPreguntaRequeridaPara (int) : int
- obterIdUltimaResposta : int
- haiRespostaParaPreguntaDistancia (int) : BOOL
- obterSeguinteIdCitas : int
- obterSeguinteIdTraballos : int

Figura 5.13: Diagrama de Clases do Subsistema Enquisa


5.2. DESEÑO E IMPLEMENTACIÓN 83

AppDelegate
1 controla 5 <<interface>>
UITabBarController
+ window : UIWindow UINavigationController
- enquisaDAO : EnquisaDAO
- mainViewController : MainViewController
+ application (UIApplication) didReceiceLocalNotification (UILocalNotification)
- alertView (UIAlertView) didDismissWithButtonIndex (NSInteger) 1 1
<<interface>> * manexa
UIViewController

+ initWithNibName (NSString) bundle (NSBubdle) : id


MainViewController
+ viewDidLoad
+ viewDidAppear (BOOL)
+ application (UIApplication) didReceiceLocalNotification (UILocalNotification)
+ viewWillDisappear (BOOL)
- alertView (UIAlertView) didDismissWithButtonIndex (NSInteger)
+ prepareForSegue (UIStoryboardSegue) sender (id)

SeleccionPerfilViewcontroller
- enquisaDAO : EnquisaDAO
manexa
- perfil : Perfil
+ SeleccionarPerfil (id) : IBAction

*
<<interface>>
DetalleCitaViewController UITableViewController
+ cita : Cita
+ textoResumo : UITextView + viewDidLoad
+ textoData : UITextView + numberOfSectionsInTableView (UITableView) : NSInteger
+ textoDescricion : UITextView + tableView (UITableView) numberOfRowsInSection (NSInteger) : NSInteger
+ actividad : UIActivityIndicatorView + tableView (UITableView) cellForRowAtIndexPath (NSIndexPath) : UITableViewCell
- cargaDetalle + tableView (UITableView) didSelectRowAtIndexPath (NSIndexPath)
+ tableView (UITableView) willDisplayCell (UITableViewCell) forRowAtIndexPath (NSIndexPath)
+ tableView (UITableView) titleForHeaderInSection (NSInteger) : NSString
Cita + viewWillAppear : BOOL
+ dataInicio : NSDate
+ dataFin : NSDate
+ web : NSURL
+ resumo : NSString
+ descricion : NSString
CalendarioTableViewController
+ citas : NSMutableArray
+ dias : NSDictionary
+ celdas : NSMutableArray
+ keysSecciones : NSMutableArray
LocalDB + seccionHoy : int
+ dataBaseName : NSString - NSIndexPath : selectedCellIndexPath
+ dataBasePath : NSString - citasDAO : CitasDAO
+ sqlString : NSString - citaFilaSeleccionada : Citas
+ paths : NSArray + scrollAHoxe (UIBarButtonItem) : IBAction
+ documentsDirectory : NSString + recargarCitas (id) : IBAction
+ init : id - threadRecargarCitas (UIBarButtonItem)
+ obterConsellos : NSMutableArray - prepareForSegue (UIStoryBoardSegue) sender (id)
+ obterInformacion : NSArray
+ insertarNovidade (Novidades)
+ insertarNovidades (NSMutableArray)
+ obterNovidades : NSMutableArray
+ establecerCargaInicialNovidadesCompletada
CitasDAO
+ estaCompletadaACargaDeNovidades : BOOL
- fonteDatos: LocalDB
+ establecerCargaInicialNovidadesNonCompletada
+ init : id
+ insertaTraballo (Traballo)
+ insertarCita (Cita)
+ obtenTraballos : NSMutableArray
+ obterCitasDende (int) ata (int) : NSMutableArray
+ establecerCargaInicialTraballosCompletada
+ borrarCitas
+ estaCompletadaACargaDeTraballos : BOOL
+ establecerCargaInicialCitasCompletada
+ establecerCargaInicialTraballosNonCompletada
+ estaCompletadaACargaDeCitas : BOOL
+ insertarCita (Cita)
+ establecerCargaInicialCitasNonCompletada
+ obterCitasDende (int) ata (int) : NSMutableArray
+ borrarCitas
+ establecerCargaInicialCitasCompletada
+ estaCompletadaACargaDeCitas : BOOL Utilidades
+ establecerCargaInicialCitasNonCompletada
+ establecerPerfil + dataInicioDaCitaICS (NSString) : NSString
+ borrarPerfiles + dataFinDaCitaICS (NSString) : NSString
+ obterNumeroTiposPreguntas : int + dataDoString (NSString) : NSDate
+ obterRespostasParaPreguntaRespostaUnica (NSInteger) : NSArray + urlDaCitaICS (NSString) : NSString
+ obterNumeroDePreguntasPorTipo : NSDictionary + resumoDaCitaICS (NSString) : NSString
+ obterRespostasAPregunta (NSInteger) : NSMutableArray + descricionDaCitaICS (NSString) : NSString
+ estaRespondidaAPregunta (int) CoaResposta (int) : BOOL + obtenTraballos (NSUrl) : NSMutableArray
+ respondePreguntaMultiple (int) coaResposta (int) + cargarCalendario
+ respondePreguntaValorUnico (Preguntas) coValor (Respostas) + cargarNovasCitas
+ borrarRespostas + obterDetallesCita (Cita) : NSString
+ estaRespondidaAPregunta (int) : BOOL + obterDetallesTraballo (Traballo) : NSString
+ obterRespostasDependentesDePregunta (int) : NSMutableArray + obtenNovidades (NSUrl) : NSMutableArray
+ eAPreguntaRequeridaDeRespostaMultiple (int) : BOOL + calculaEmisionesPapel : double
+ obterTransportesSelecionados : NSMutableArray + calculaEmisionesTransporte : double
+ obterPreguntaTipoVia : Preguntas + subirArquivo : NSString
+ obterPreguntaMotivoTipo : Preguntas + obterPlistOrdixinal : NSDictionary
+ obterPreguntaConId (int) : Preguntas + obterPlistDocuments : NSMutableDictionary
+ obterRespostaAPregunta (int) : Respostas + gardarPlistDocuments (NSMutableDictionary)
+ respondePreguntaValor (int) coValor (NSString) + consultaCargandoDatosDB : BOOL
+ establecerCuestionarioNonCompletado (NSString) + cargandoDatos (BOOL)
+ finalizarCuestionario (NSString)
+ borrarRespostaAPregunta (int)
- insertarNovaResposta (Respostas) conID (int)
- actualizaResposta (int) coValor (NSString)
- obterIdPreguntaRequeridaPara (int) : int
- obterIdUltimaResposta : int
- haiRespostaParaPreguntaDistancia (int) : BOOL
- obterSeguinteIdCitas : int
- obterSeguinteIdTraballos : int

Figura 5.14: Diagrama de Clases do Subsistema Calendario


84 CAPÍTULO 5. DESEÑO

AppDelegate
+ window : UIWindow
- enquisaDAO : EnquisaDAO
- mainViewController : MainViewController
+ application (UIApplication) didReceiceLocalNotification (UILocalNotification)
- alertView (UIAlertView) didDismissWithButtonIndex (NSInteger)

MainViewController

+ application (UIApplication) didReceiceLocalNotification (UILocalNotification)


- alertView (UIAlertView) didDismissWithButtonIndex (NSInteger)

SeleccionPerfilViewcontroller
- enquisaDAO : EnquisaDAO
1 controla 5
UITabBarController <<interface>>
- perfil : Perfil UINavigationController 1
+ SeleccionarPerfil (id) : IBAction

manexa
<<interface>> * manexa
UIViewController

+ initWithNibName (NSString) bundle (NSBubdle) : id *


+ viewDidLoad
+ viewDidAppear (BOOL) <<interface>>
+ viewWillDisappear (BOOL) UITableViewController
+ prepareForSegue (UIStoryboardSegue) sender (id)
+ viewDidLoad
+ numberOfSectionsInTableView (UITableView) : NSInteger
+ tableView (UITableView) numberOfRowsInSection (NSInteger) : NSInteger
+ tableView (UITableView) cellForRowAtIndexPath (NSIndexPath) : UITableViewCell
+ tableView (UITableView) didSelectRowAtIndexPath (NSIndexPath)
+ tableView (UITableView) willDisplayCell (UITableViewCell) forRowAtIndexPath (NSIndexPath)
+ tableView (UITableView) titleForHeaderInSection (NSInteger) : NSString
+ viewWillAppear : BOOL
DetalleOfertaTraballoViewController
+ ofertaTraballo : Traballo
+ titulo : UITextView
+ perfilOferta : UITextView
+ localidade : UITextView BolsaTraballoTableViewController
+ descricion : UITextView + traballos : NSMutableArray
+ labelURL : UILabel + perfiles : NSMutableArray
+ ofertasPorPerfil : NSMutableArray
+ diccionarioOfertas : NSDictionary
LocalDB - ofertasPorSeccion : NSDictionary
+ dataBaseName : NSString - traballosDAO : TraballosDAO
+ dataBasePath : NSString + recargaTraballos (id) : IBAction
+ sqlString : NSString - threadRecargarTraballos (UIBarButtonItem)
+ paths : NSArray
+ documentsDirectory : NSString
+ init : id
+ obterConsellos : NSMutableArray
+ obterInformacion : NSArray
+ insertarNovidade (Novidades)
+ insertarNovidades (NSMutableArray) TraballosDAO
+ obterNovidades : NSMutableArray - fonteDatos: LocalDB
+ establecerCargaInicialNovidadesCompletada + init : id
+ estaCompletadaACargaDeNovidades : BOOL + insertaTraballo (Traballo)
+ establecerCargaInicialNovidadesNonCompletada + obtenTraballos : NSMutableArray
+ insertaTraballo (Traballo) + establecerCargaInicialTraballosCompletada
+ obtenTraballos : NSMutableArray + estaCompletadaACargaDeTraballos : BOOL
+ establecerCargaInicialTraballosCompletada + establecerCargaInicialTraballosNonCompletada
+ estaCompletadaACargaDeTraballos : BOOL
+ establecerCargaInicialTraballosNonCompletada
+ insertarCita (Cita)
+ obterCitasDende (int) ata (int) : NSMutableArray Traballo
+ borrarCitas + enlaceWebEtse : NSURL
+ establecerCargaInicialCitasCompletada + titulo : NSString
+ estaCompletadaACargaDeCitas : BOOL + perfilOferta : NSString
+ establecerCargaInicialCitasNonCompletada + empresa : NSString
+ establecerPerfil + localidade : NSString
+ borrarPerfiles + descricion : NSString
+ obterNumeroTiposPreguntas : int + idTraballo : int
+ obterRespostasParaPreguntaRespostaUnica (NSInteger) : NSArray
+ obterNumeroDePreguntasPorTipo : NSDictionary
+ obterRespostasAPregunta (NSInteger) : NSMutableArray
+ estaRespondidaAPregunta (int) CoaResposta (int) : BOOL
+ respondePreguntaMultiple (int) coaResposta (int) Utilidades
+ respondePreguntaValorUnico (Preguntas) coValor (Respostas)
+ borrarRespostas + dataInicioDaCitaICS (NSString) : NSString
+ estaRespondidaAPregunta (int) : BOOL + dataFinDaCitaICS (NSString) : NSString
+ obterRespostasDependentesDePregunta (int) : NSMutableArray + dataDoString (NSString) : NSDate
+ eAPreguntaRequeridaDeRespostaMultiple (int) : BOOL + urlDaCitaICS (NSString) : NSString
+ obterTransportesSelecionados : NSMutableArray + resumoDaCitaICS (NSString) : NSString
+ obterPreguntaTipoVia : Preguntas + descricionDaCitaICS (NSString) : NSString
+ obterPreguntaMotivoTipo : Preguntas + obtenTraballos (NSUrl) : NSMutableArray
+ obterPreguntaConId (int) : Preguntas + cargarCalendario
+ obterRespostaAPregunta (int) : Respostas + cargarNovasCitas
+ respondePreguntaValor (int) coValor (NSString) + obterDetallesCita (Cita) : NSString
+ establecerCuestionarioNonCompletado (NSString) + obterDetallesTraballo (Traballo) : NSString
+ finalizarCuestionario (NSString) + obtenNovidades (NSUrl) : NSMutableArray
+ borrarRespostaAPregunta (int) + calculaEmisionesPapel : double
- insertarNovaResposta (Respostas) conID (int) + calculaEmisionesTransporte : double
- actualizaResposta (int) coValor (NSString) + subirArquivo : NSString
- obterIdPreguntaRequeridaPara (int) : int + obterPlistOrdixinal : NSDictionary
- obterIdUltimaResposta : int + obterPlistDocuments : NSMutableDictionary
- haiRespostaParaPreguntaDistancia (int) : BOOL + gardarPlistDocuments (NSMutableDictionary)
- obterSeguinteIdCitas : int + consultaCargandoDatosDB : BOOL
- obterSeguinteIdTraballos : int + cargandoDatos (BOOL)

Figura 5.15: Diagrama de Clases do Subsistema Bolsa de Traballo


5.2. DESEÑO E IMPLEMENTACIÓN 85

AppDelegate
+ window : UIWindow
- enquisaDAO : EnquisaDAO
- mainViewController : MainViewController
+ application (UIApplication) didReceiceLocalNotification (UILocalNotification)
- alertView (UIAlertView) didDismissWithButtonIndex (NSInteger)

MainViewController

+ application (UIApplication) didReceiceLocalNotification (UILocalNotification)


- alertView (UIAlertView) didDismissWithButtonIndex (NSInteger)

SeleccionPerfilViewcontroller
- enquisaDAO : EnquisaDAO
1 controla 5 <<interface>>
UITabBarController 1
- perfil : Perfil UINavigationController
+ SeleccionarPerfil (id) : IBAction

1
manexa
<<interface>> * manexa
UIViewController

+ initWithNibName (NSString) bundle (NSBubdle) : id


+ viewDidLoad <<interface>>
+ viewDidAppear (BOOL) UITableViewController
+ viewWillDisappear (BOOL)
*
+ prepareForSegue (UIStoryboardSegue) sender (id) + viewDidLoad
+ numberOfSectionsInTableView (UITableView) : NSInteger
+ tableView (UITableView) numberOfRowsInSection (NSInteger) : NSInteger
+ tableView (UITableView) cellForRowAtIndexPath (NSIndexPath) : UITableViewCell
+ tableView (UITableView) didSelectRowAtIndexPath (NSIndexPath)
+ tableView (UITableView) willDisplayCell (UITableViewCell) forRowAtIndexPath (NSIndexPath)
DetalleNovidadeViewController + tableView (UITableView) titleForHeaderInSection (NSInteger) : NSString
+ novidade : Novidades + viewWillAppear : BOOL
+ textoTitulo : UITextView
+ textoDetalle : UITextView
+ textoURL : UITextView

NovidadesTableViewController
+ novidades : NSMutableArray
- novidadesDAO : NovidadesDAO
LocalDB - ultimaPaxinaNovidadesCargada : int
+ dataBaseName : NSString - posicionUltimaFila : int
+ dataBasePath : NSString + recargaNovidades (id) : IBAction
+ sqlString : NSString - engadeNovidades
+ paths : NSArray - recargaTodasNovidades (UIBarButtonItem)
+ documentsDirectory : NSString - threadCargaNovidadesPaxina (UIBarButtonItem)
+ init : id
+ obterConsellos : NSMutableArray
+ obterInformacion : NSArray
+ insertarNovidade (Novidades) NovidadesDAO
+ insertarNovidades (NSMutableArray) - fonteDatos: LocalDB
+ obterNovidades : NSMutableArray + init : id
+ establecerCargaInicialNovidadesCompletada + insertarNovidade (Novidades)
+ estaCompletadaACargaDeNovidades : BOOL + insertarNovidades (NSMutableArray)
+ establecerCargaInicialNovidadesNonCompletada + obterNovidades : NSMutableArray
+ insertaTraballo (Traballo) + establecerCargaInicialNovidadesCompletada
+ obtenTraballos : NSMutableArray + estaCompletadaACargaDeNovidades : BOOL
+ establecerCargaInicialTraballosCompletada + establecerCargaInicialNovidadesNonCompletada
+ estaCompletadaACargaDeTraballos : BOOL
+ establecerCargaInicialTraballosNonCompletada
+ insertarCita (Cita) Novidades
+ obterCitasDende (int) ata (int) : NSMutableArray + titulo : NSString
+ borrarCitas + descricion : NSString
+ establecerCargaInicialCitasCompletada + url : NSURL
+ estaCompletadaACargaDeCitas : BOOL
+ establecerCargaInicialCitasNonCompletada
+ establecerPerfil
+ borrarPerfiles Utilidades
+ obterNumeroTiposPreguntas : int
+ obterRespostasParaPreguntaRespostaUnica (NSInteger) : NSArray + dataInicioDaCitaICS (NSString) : NSString
+ obterNumeroDePreguntasPorTipo : NSDictionary + dataFinDaCitaICS (NSString) : NSString
+ obterRespostasAPregunta (NSInteger) : NSMutableArray + dataDoString (NSString) : NSDate
+ estaRespondidaAPregunta (int) CoaResposta (int) : BOOL + urlDaCitaICS (NSString) : NSString
+ respondePreguntaMultiple (int) coaResposta (int) + resumoDaCitaICS (NSString) : NSString
+ respondePreguntaValorUnico (Preguntas) coValor (Respostas) + descricionDaCitaICS (NSString) : NSString
+ borrarRespostas + obtenTraballos (NSUrl) : NSMutableArray
+ estaRespondidaAPregunta (int) : BOOL + cargarCalendario
+ obterRespostasDependentesDePregunta (int) : NSMutableArray + cargarNovasCitas
+ eAPreguntaRequeridaDeRespostaMultiple (int) : BOOL + obterDetallesCita (Cita) : NSString
+ obterTransportesSelecionados : NSMutableArray + obterDetallesTraballo (Traballo) : NSString
+ obterPreguntaTipoVia : Preguntas + obtenNovidades (NSUrl) : NSMutableArray
+ obterPreguntaMotivoTipo : Preguntas + calculaEmisionesPapel : double
+ obterPreguntaConId (int) : Preguntas + calculaEmisionesTransporte : double
+ obterRespostaAPregunta (int) : Respostas + subirArquivo : NSString
+ respondePreguntaValor (int) coValor (NSString) + obterPlistOrdixinal : NSDictionary
+ establecerCuestionarioNonCompletado (NSString) + obterPlistDocuments : NSMutableDictionary
+ finalizarCuestionario (NSString) + gardarPlistDocuments (NSMutableDictionary)
+ borrarRespostaAPregunta (int) + consultaCargandoDatosDB : BOOL
- insertarNovaResposta (Respostas) conID (int) + cargandoDatos (BOOL)
- actualizaResposta (int) coValor (NSString)
- obterIdPreguntaRequeridaPara (int) : int
- obterIdUltimaResposta : int
- haiRespostaParaPreguntaDistancia (int) : BOOL
- obterSeguinteIdCitas : int
- obterSeguinteIdTraballos : int

Figura 5.16: Diagrama de Clases do Subsistema Novidades


86 CAPÍTULO 5. DESEÑO

AppDelegate <<interface>>
+ window : UIWindow UITableViewController
- enquisaDAO : EnquisaDAO
- mainViewController : MainViewController + viewDidLoad
+ application (UIApplication) didReceiceLocalNotification (UILocalNotification) + numberOfSectionsInTableView (UITableView) : NSInteger
- alertView (UIAlertView) didDismissWithButtonIndex (NSInteger) + tableView (UITableView) numberOfRowsInSection (NSInteger) : NSInteger
+ tableView (UITableView) cellForRowAtIndexPath (NSIndexPath) : UITableViewCell
+ tableView (UITableView) didSelectRowAtIndexPath (NSIndexPath)
+ tableView (UITableView) willDisplayCell (UITableViewCell) forRowAtIndexPath (NSIndexPath)
+ tableView (UITableView) titleForHeaderInSection (NSInteger) : NSString
+ viewWillAppear : BOOL
MainViewController

+ application (UIApplication) didReceiceLocalNotification (UILocalNotification) *


- alertView (UIAlertView) didDismissWithButtonIndex (NSInteger)
manexa
1
<<interface>>
UITabBarController
UINavigationController
SeleccionPerfilViewcontroller
- enquisaDAO : EnquisaDAO 1 controla 5
- perfil : Perfil
+ SeleccionarPerfil (id) : IBAction

<<interface>> * manexa
UIViewController
ConsellosTableViewController InformacionTableViewController
+ initWithNibName (NSString) bundle (NSBubdle) : id + consellos : NSMutableArray + informacion : NSArray
+ viewDidLoad + keysTipos : NSMutableArray + xeralDAO : XeralDAO
+ viewDidAppear (BOOL) + consellosPorTipo : NSMutableArray
+ viewWillDisappear (BOOL) + diccionarioConsellos : NSDictionary
+ prepareForSegue (UIStoryboardSegue) sender (id) - xeralDAO : XeralDAO

EstatisticaViewController DetalleInformacionViewController DetalleConselloViewController


+ selectorUnidades : UIPickerView + informacion : Informacion + consello : Consello
+ labelTransportePE : UILabel + pregunta : UITextView + textoConsello : UITextView
+ labelTransportePEMedia : UILabel + resposta : UITextView
+ labelPapelPE : UILabel
+ labelPapelPEMedia : UILabel
+ botonTransporte : UIButton LocalDB
+ botonPapel : UIButton + dataBaseName : NSString
+ botonSubirDatos : UIButton + dataBasePath : NSString
+ textoInicial : UITextView + sqlString : NSString
+ progresoPropioTransporte : UIProgressView + paths : NSArray
+ progresoMediaTransporte : UIProgressView + documentsDirectory : NSString
+ listaUnidades : NSArray + init : id
+ progresoPropioPapel : UIProgressView + obterConsellos : NSMutableArray
+ progresoMediaPapel : UIProgressView + obterInformacion : NSArray
+ pegadaTransporte : double + insertarNovidade (Novidades)
+ pegadaPapel : double + insertarNovidades (NSMutableArray)
+ pegadaMediaTransporte : double + obterNovidades : NSMutableArray
+ pegadaMediaPapel : double + establecerCargaInicialNovidadesCompletada
+ subirDatos (id) : IBAction + estaCompletadaACargaDeNovidades : BOOL
+ borrarDatos (id) : IBAction + establecerCargaInicialNovidadesNonCompletada
- numberOfComponentsInPickerView (UIPickerView) : NSInteger + insertaTraballo (Traballo)
- pickerView (UIPickerView) numberOfRowsInComponent (NSInteger) : NSInteger + obtenTraballos : NSMutableArray
- pickerView (UIPickerView) titleForRow (NSInteger) forComponent (NSInteger) : NSString + establecerCargaInicialTraballosCompletada
- pickerView (UIPickerView) didSelectRow (NSInteger) inComponent (NSInteger) + estaCompletadaACargaDeTraballos : BOOL
- alertView (UIAlertView) didDismissWithButtonIndex (NSInteger) + establecerCargaInicialTraballosNonCompletada
+ insertarCita (Cita)
+ obterCitasDende (int) ata (int) : NSMutableArray
+ borrarCitas
Utilidades + establecerCargaInicialCitasCompletada
+ estaCompletadaACargaDeCitas : BOOL
+ dataInicioDaCitaICS (NSString) : NSString + establecerCargaInicialCitasNonCompletada
+ dataFinDaCitaICS (NSString) : NSString Informacion + establecerPerfil
+ dataDoString (NSString) : NSDate + pregunta : NSString + borrarPerfiles
+ urlDaCitaICS (NSString) : NSString + resposta : NSString + obterNumeroTiposPreguntas : int
+ resumoDaCitaICS (NSString) : NSString + obterRespostasParaPreguntaRespostaUnica (NSInteger) : NSArray
+ descricionDaCitaICS (NSString) : NSString + obterNumeroDePreguntasPorTipo : NSDictionary
+ obtenTraballos (NSUrl) : NSMutableArray + obterRespostasAPregunta (NSInteger) : NSMutableArray
+ cargarCalendario + estaRespondidaAPregunta (int) CoaResposta (int) : BOOL
Consello
+ cargarNovasCitas + respondePreguntaMultiple (int) coaResposta (int)
+ tipo : NSString
+ obterDetallesCita (Cita) : NSString + respondePreguntaValorUnico (Preguntas) coValor (Respostas)
+ titulo : NSString
+ obterDetallesTraballo (Traballo) : NSString + borrarRespostas
+ consello : NSString
+ obtenNovidades (NSUrl) : NSMutableArray + estaRespondidaAPregunta (int) : BOOL
+ calculaEmisionesPapel : double + obterRespostasDependentesDePregunta (int) : NSMutableArray
+ calculaEmisionesTransporte : double + eAPreguntaRequeridaDeRespostaMultiple (int) : BOOL
+ subirArquivo : NSString + obterTransportesSelecionados : NSMutableArray
+ obterPlistOrdixinal : NSDictionary + obterPreguntaTipoVia : Preguntas
+ obterPlistDocuments : NSMutableDictionary + obterPreguntaMotivoTipo : Preguntas
+ gardarPlistDocuments (NSMutableDictionary) + obterPreguntaConId (int) : Preguntas
+ consultaCargandoDatosDB : BOOL + obterRespostaAPregunta (int) : Respostas
+ cargandoDatos (BOOL) + respondePreguntaValor (int) coValor (NSString)
XeralDAO + establecerCuestionarioNonCompletado (NSString)
- fonteDatos: LocalDB + finalizarCuestionario (NSString)
+ init : id + borrarRespostaAPregunta (int)
+ obterConsellos : NSMutableArray - insertarNovaResposta (Respostas) conID (int)
+ obterInformacion : NSArray - actualizaResposta (int) coValor (NSString)
- obterIdPreguntaRequeridaPara (int) : int
- obterIdUltimaResposta : int
- haiRespostaParaPreguntaDistancia (int) : BOOL
- obterSeguinteIdCitas : int
- obterSeguinteIdTraballos : int

Figura 5.17: Diagrama de Clases do Subsistema Pegada Ecolóxica


5.2. DESEÑO E IMPLEMENTACIÓN 87

A figura 5.18 representa a integración dos diagramas de clases separados por


subsistemas, obviaronse os nomes de métodos e atributos.

AppDelegate

MainViewController

1 controla 5 <<interface>> <<interface>>


SeleccionPerfilViewcontroller UITabBarController 1 manexa *
UINavigationController UITableViewController

1
* manexa
<<interface>>
UIViewController

Utilidades

Novidades Traballo NovidadesTableViewController

EstatisticaViewController
Informacion Cita
BolsaTraballoTableViewController

DetalleNovidadeViewController Consello Respostas


CalendarioTableViewController

Perfil Preguntas

DetalleOfertaTraballoViewController ConsellosTableViewController

InformacionTableViewController
DetalleCitaViewController

LocalDB
DetalleInformacionViewController
NovidadesDAO

DetalleConselloViewController
TraballosDAO

SeleccionCuestionarioViewController
CitasDAO

Lenda

Subsistema Perfil
RespuestaChecksViewController XeralDAO
SubsistemaEnquisa

Subsistema Calendario
RespuestaValorViewController EnquisaDAO
Subsistema Bolsa de Traballo

Subsistema Novidades
RespuestaDistanciaViewController
Subsistema Pegada Ecolóxica

Propósito Xeral
RespuestaCantidadViewController

Figura 5.18: Diagrama de Clases Integrado


88 CAPÍTULO 5. DESEÑO

Tarxetas CRC

AppDelegate
Coordina o comportamento de toda a Chama: MainViewController
aplicación

Táboa 5.4: CRC Clase AppDelegate

MainViewController
Controlador da vista inicial da apli- Chama: SeleccionPerfilViewCon-
cación troller
Engade notificación periódica dos seis
meses
Manexa a notificación unha vez
recibida

Táboa 5.5: CRC Clase MainViewController

SeleccionPerfilViewController
Controlador da vista de selección de Herda: UIViewController
perfil de usuario
Establece na base de datos un perfil Chama: UITabaBarController
como seleccionado
Manexa a notificación unha vez Agrega: EnquisaDAO
recibida
Chamar ao controlador que manexa o
UITabBarController

Táboa 5.6: CRC Clase SeleccionPerfilViewController

UITabBarController
Encargada de manexar as xanelas que Controla: UINavigationController
conforman a aplicación
Instanciar os controladores que con-
teñen cada xanela

Táboa 5.7: CRC Clase UITabBarController


5.2. DESEÑO E IMPLEMENTACIÓN 89

UINavigationController
Interface que manexa a navegación en- Manexa: UIViewController
tre vistas de cada xanela
Manexa: UITableViewController

Táboa 5.8: CRC Clase UINavigationController

SeleccionCuestionarioViewController
Recolle a selección do usuario respecto Herda UIViewController
ao cuestionario da enquisa que desexa
realizar. Chama ao controlador que
controla a vista relativa á primeira
pregunta do cuestionario seleccionado
Controlar iconas da vista que amosan
ao usuario cales dos cuestionarios
foron completados

Táboa 5.9: CRC Clase SeleccionCuestionarioViewController

DetalleNovidadeViewController
Manexa a vista que amosa ao usuario Herda: UIViewController
o detalle dunha novidade

Táboa 5.10: CRC Clase DetalleNovidadeViewController

DetalleOfertaTraballoViewController
Manexa a vista que amosa ao usuario Herda: UIViewController
o detalle dunha oferta de traballo

Táboa 5.11: CRC Clase DetalleOfertaTraballoViewController

DetalleCitaViewController
Manexa a vista que amosa ao usuario Herda: UIViewController
o detalle dunha cita do calendario
Chama: Utilidades

Táboa 5.12: CRC Clase DetalleCitaViewController


90 CAPÍTULO 5. DESEÑO

DetalleInformacionViewController
Manexa a vista que amosa ao usuario Herda: UIViewController
información relativa á Pegada Ecolóx-
ica

Táboa 5.13: CRC Clase DetalleInformacionViewController

DetalleConselloViewController
Manexa a vista que amosa ao usuario Herda: UIViewController
un consello para reducir a Pegada
Ecolóxica

Táboa 5.14: CRC Clase DetalleConselloViewController

EstatisticaViewController
Manexa a vista que permite ao usuario Herda: UIViewController
borrar os datos relativos á enquisa
Manexa a vista que permite ao usuario Chama: Utilidades
subir os datos da enquisa ao servidor
central
Manexa a vista que da acceso ao Chama: MainViewController
usuario aos resultados da Pegada
Ecolóxica
Manexa a vista que amosa os resulta-
dos da enquisa
Manexa a vista que da acceso á lista
de consellos para a redución da Pegada
Ecolóxica
Manexa a vista que da acceso á lisa de
información adicional sobre a Pegada
Ecolóxica

Táboa 5.15: CRC Clase EstatisticaViewController


5.2. DESEÑO E IMPLEMENTACIÓN 91

NovidadesTableViewController
Encargada de manexar a repre- Herda: UITableViewController
sentación da lista de novidades
Chama: Utilidades
Chama: NovidadesDAO

Táboa 5.16: CRC Clase NovidadesTableViewController

BolsaTraballoTableViewController
Encargada de manexar a repre- Herda: UITableViewController
sentación da lista de ofertas de traballo
Chama: Utilidades
Chama: TraballosDAO

Táboa 5.17: CRC Clase BolsaTraballoTableViewController

CalendarioTableViewController
Encargada de manexar a repre- Herda: UITableViewController
sentación da lista de citas do calen-
dario
Chama: Utilidades
Chama: CitasDAO

Táboa 5.18: CRC Clase BolsaTraballoTableViewController

ConsellosTableViewController
Encargada de manexar a repre- Herda: UITableViewController
sentación da lista de consellos para re-
ducir a Pegada Ecolóxica
Chama: XeralDAO

Táboa 5.19: CRC Clase ConsellosTableViewController


92 CAPÍTULO 5. DESEÑO

InformacionTableViewController
Encargada de manexar a repre- Herda: UITableViewController
sentación a información adicional so-
bre a Pegada Ecolóxica
Chama: XeralDAO

Táboa 5.20: CRC Clase InformacionTableViewController

Utilidades
Encargada de parsear o arquivo ICS
descargado dende a páxina web da
ETSE
Encargada de parsear a páxina web da
ETSE que amosa as novidades
Encargada de parsear a páxina web da
ETSE que amosa as ofertas de traballo
Encargada de subir o arquivo cos datos
da enquisa ao servidor central
Encargada de manexar documentos de
propiedades da aplicación
Encargada de manexar a concorrencia
á base de datos SQLite

Táboa 5.21: CRC Clase Utilidades

RespuestaChecksViewController
Manexa a presentación dunha pre- Herda: UIViewController
gunta da enquisa con posible resposta
múltiple
Recolle as respostas seleccionadas polo Chama: EnquisaDAO
usuario para unha pregunta de re-
sposta múltiple
Composta: UITableViewController

Táboa 5.22: CRC Clase RespuestaChecksViewController


5.2. DESEÑO E IMPLEMENTACIÓN 93

RespuestaChecksViewController
Manexa a presentación dunha pre- Herda: UIViewController
gunta da enquisa con posible resposta
múltiple
Recolle as respostas seleccionadas polo Chama: EnquisaDAO
usuario para unha pregunta de re-
sposta múltiple
Composta: UITableViewController

Táboa 5.23: CRC Clase RespuestaChecksViewController

RespuestaValorViewController
Manexa a presentación dunha pre- Herda: UIViewController
gunta da enquisa cunha resposta única
Recolle a resposta introducida polo Chama: EnquisaDAO
usuario para unha pregunta de re-
sposta única

Táboa 5.24: CRC Clase RespuestaValorViewController

RespuestaDistanciaViewController
Manexa a presentación da pregunta Herda: UIViewController
dos quilómetros percorridos no de-
sprazamento á universidade
Recolle a resposta introducida polo Chama: EnquisaDAO
usuario

Táboa 5.25: CRC Clase RespuestaDistanciaViewController

RespuestaCantidadViewController
Manexa a presentación da pregunta do Herda: UIViewController
número de percorridos semanais
Recolle a resposta introducida polo Chama: EnquisaDAO
usuario

Táboa 5.26: CRC Clase RespuestaCantidadViewController


94 CAPÍTULO 5. DESEÑO

EnquisaDAO
Manexa o acceso a datos relativos á Composto: LocalDB
enquisa
Fai que a aplicación sexa independente
do tipo de almacenamento de datos do
modelo

Táboa 5.27: CRC Clase EnquisaDAO

NovidadesDAO
Manexa o acceso a datos relativos ás Composto: LocalDB
novidades da ETSE almaceados no
modelo
Fai que a aplicación sexa independente
do tipo de almacenamento de datos do
modelo

Táboa 5.28: CRC Clase NovidadesDAO

TraballosDAO
Manexa o acceso a datos relativos Composto: LocalDB
ás ofertas de traballo publicados pola
ETSE almaceados no modelo
Fai que a aplicación sexa independente
do tipo de almacenamento de datos do
modelo

Táboa 5.29: CRC Clase TraballosDAO

CitasDAO
Manexa o acceso a datos relativos ao Composto: LocalDB
calendario publicado na páxina web da
ETSE almaceados no modelo
Fai que a aplicación sexa independente
do tipo de almacenamento de datos do
modelo

Táboa 5.30: CRC Clase CitasDAO


5.2. DESEÑO E IMPLEMENTACIÓN 95

XeralDAO
Manexa o acceso a datos relativos á in- Composto: LocalDB
formación adicional da Pegada Ecolóx-
ica e a os consellos para reducila
Fai que a aplicación sexa independente
do tipo de almacenamento de datos do
modelo

Táboa 5.31: CRC Clase XeralDAO

LocalDB
Manexa o acceso aos datos almaceados Instancia: Perfil
nunha base de datos local nun arquivo
SQLite
Instancia: Preguntas
Instancia: Respostas
Instancia: Cita
Instancia: Traballo
Instancia: Novidades
Instancia: Informacion
Instancia: Consello

Táboa 5.32: CRC Clase LocalDB

Perfil
Encapsula nun obxecto a entidade
Perfil

Táboa 5.33: CRC Clase Perfil

Preguntas
Encapsula nun obxecto a entidade
Preguntas

Táboa 5.34: CRC Clase Preguntas


96 CAPÍTULO 5. DESEÑO

Respostas
Encapsula nun obxecto a entidade Re-
spostas

Táboa 5.35: CRC Clase Respostas

Cita
Encapsula nun obxecto a entidade
Cita

Táboa 5.36: CRC Clase Cita

Traballo
Encapsula nun obxecto a entidade
Traballo

Táboa 5.37: CRC Clase Traballo

Novidades
Encapsula nun obxecto a entidade
Novidades

Táboa 5.38: CRC Clase Novidades

Informacion
Encapsula nun obxecto a entidade In-
formacion

Táboa 5.39: CRC Clase Informacion

Consello
Encapsula nun obxecto a entidade
Consello

Táboa 5.40: CRC Clase Consello


5.2. DESEÑO E IMPLEMENTACIÓN 97

Diagramas de Secuencia
Os diagramas de secuencia representan a secuencia de eventos que segue á
interacción do usuario coa aplicación. Amósanse diagramas de secuencia para as
funcións máis representativas da aplicación.

UITabBarController UINavigationController BolsaTraballoTableViewController TraballoDAO LocalDB Traballo Utilidades

Usuario

estaCompletadaACargaDeTraballos

alt obterTraballos
obterTraballos
[completada]

[else] nil:recargarTraballos
NSURL:obtenTraballos

establecerCargaInicialTraballosCompletada

Figura 5.19: Diagrama de Secuencia CU.17 Acceso a Lista de Ofertas de Traballo

O caso de uso CU.18 aparece reflexado na figura 5.19 na sección else.

BolsaTraballoTableViewController DetalleOfertaTraballoViewController UINavigationController

Usuario

Traballo:setTraballo
pushViewController

Figura 5.20: Diagrama de Secuencia CU.19 Accede a Detalles da Oferta de Tra-


ballo

O caso de uso CU.14 Recarga Novidades aparece reflexado na figura 5.21 na


sección novidades.count==0.
98 CAPÍTULO 5. DESEÑO

UITabBarController UINavigationController NovidadesTableViewController NovidadesDAO LocalDB Novidade Utilidades

Usuario

obterNovidades
obterTraballos

alt
[novidades.count == 0] recargaNovidades
NSURL:obterNovidades

insertarNovidades
insertarNovidades

[else]

Figura 5.21: Diagrama de Secuencia CU.13 Acceso á Lista de Novidades

NovidadesTableViewController DetalleNovidadeViewController UINavigationController

Usuario

Novidade:setNovidade
pushViewController

Figura 5.22: Diagrama de Secuencia CU.15 Accede a Detalles da Novidade


5.2. DESEÑO E IMPLEMENTACIÓN 99

NovidadesTableViewController NovidadesDAO LocalDB Novidade Utilidades

Usuario

alt
[ultimaFila]
engadeNovidades

threadCargaNovidadesPaxina

NSURL:obtenNovidades

insertarNovidades
insertarNovidades

[else]

Figura 5.23: Diagrama de Secuencia CU.16 Carga Máis Novidades

UITabBarController UINavigationController CalendarioTableViewController CitasDAO LocalDB Cita Utilidades

Usuario

estaCompletadaACargaDeCitas

alt obterCitasDende: ata:


[completada] obterCitasDende: ata:

[else]
nil:recargarCitas
NSURL:cargarCalendario

borrarCitas

borrarCitas

loop
cargarCitasDoMes: doAno:
insertarCita

insertarCita

establecerCargaInicialDeCitascompletada

reloadData

Figura 5.24: Diagrama de Secuencia CU.10 Acceso a Lista de Citas do Calendario


100 CAPÍTULO 5. DESEÑO

BolsaTraballoTableViewController DetalleCitaViewController UINavigationController

Usuario

Cita:setCita
pushViewController

Figura 5.25: Diagrama de Secuencia CU.12 Accede a Detalles Cita

SeleccionPerfilViewController Perfil EnquisaDAO LocalDB

Usuario
SeleccionaPerfil
getInstance

setSeleccionado

0 : setCompletado

setStringPerfil

establecerPerfil
establecerPerfil

Figura 5.26: Diagrama de Secuencia CU.01 Selección do Perfil de Usuario


5.2. DESEÑO E IMPLEMENTACIÓN 101

EstatisticaViewController Perfil EnquisaDAO LocalDB

Usuario
borrarDatos
alert

alt getInstance
[buttonIndex==1] borrarPerfiles
borrarPerfiles

0 : setSeleccionado

setStringPerfil

0 : setCompletado

0 : setIdPerfil

[else]

Figura 5.27: Diagrama de Secuencia CU.02 Borrar Datos de Usuario

O caso de uso CU.11 Recarga Citas do Calendario aparece reflexado na figura


5.24 na sección else.

O diagrama da figura 5.28 de secuencia representa a interacción do usuario


coa enquisa, e como son gardadas as resposta inmediatamente despois de que
o usuario responda. As clases que se encargan de controlar a adquisición das
respostas denominouse Respuesta******ViewController representando os con-
troladores encargados de esta función. Existen varios segundo a natureza da
pregunta e do tipo de resposta que require.

O diagrama de secuencias da figura 5.29 resulta idéntico sexa cal sexa o re-
sultado que se desexe obter. O controlador EstatisticaViewcontroller carga todos
os datos, pero amosa aqueles que o usuario precisa.
102 CAPÍTULO 5. DESEÑO

Respuesta******ViewController EnquisaDAO LocalDB

Usuario
cambiaValor respondePreguntaMultiple:
coaResposta: respondePreguntaMultiple:
coaResposta:
alt
[ultimaPregunta]
finalizarCuestionaro

[else]

seguintePregunta

Figura 5.28: Diagrama de Secuencia para os casos de uso CU.03 e CU.05, Cobre
Enquisa Transporte e Cobre Enquisa Papel respectivamente

EstatisticaViewController Utilidades

Usuario

obterPlistDocuments

setPegadaTransporte

setPegadaPapel

setMediaPegadaTransporte

setMediaPegadaPapel

Figura 5.29: Diagrama de Secuencia para os casos de uso CU.04 e CU.06, Con-
sulta Resultados Transporte e Consulta Resultados Papel respectivamente
5.2. DESEÑO E IMPLEMENTACIÓN 103

EstatisticaViewController Utilidades

Usuario
subirDatos
subirArquivo

NO : botonSubirDatos.enable

Figura 5.30: Diagrama de Secuencia para CU.07 Envía Datos


104 CAPÍTULO 5. DESEÑO
Capítulo 6

Validación e Probas

A metodoloxía de desenvolvemento áxil require que se realicen probas do


software implementado unha vez finalizada unha iteración. O presente proxecto
consta de dúas iteracións principais nas que se desenvolveron diferentes subsis-
temas en cada unha. É necesario validar que tras cada iteración, os requerimentos
de cada subsistema fosen satisfeitos.

Os requerimentos que sexan probados nunha iteración non deberían ser proba-
dos nas seguintes xa que cada iteración resulta independente da outra.

6.1 Validación de Requerimentos


En este apartado descríbense cales foron as probas realizadas para cada unha
das iteracións. Enuméranse os casos de uso implementados en cada iteración e
utilizarase a matriz de trazabilidade para comprobar as funcionalidades que se
deben probar.

6.1.1 Primeira Iteración


En esta iteración implementáronse os subsistemas Enquisa, Perfil e Pegada
Ecolóxica, estes subsistemas están formados polos casos de uso:

• Cobre Enquisa Transporte (CU.03 táboa 4.47)

• Consulta Resultados Transporte (CU.04 táboa 4.48)

• Cobre Enquisa Papel (CU.05 táboa 4.49)

• Consulta Resultados Papel (CU.06 táboa 4.50)

• Envía Datos (CU.07 táboa 4.51)

105
106 CAPÍTULO 6. VALIDACIÓN E PROBAS

• Selección do Perfil de Usuario (CU.01 táboa 4.45)


• Borrar Datos Usuario (CU.02 táboa 4.46)
• Consellos para a Redución da Pegada Ecolóxica (CU.08 táboa 4.52)
• Información Adicional (CU.09 táboa 4.53)
Segundo a Matriz de Trazabilidade, estes casos de uso corresponden cos Re-
querimentos Funcionais:
• Acceder ao cuestionario para a recollida de información relativa a os hábitos
de transporte (RF.04 táboa 4.14).
• Acceder ao cuestionario para a recollida de información relativa a consumo
de papel (RF.05 táboa 4.15).
• Consultar o resultado do cálculo da súa Pegada Ecolóxica (RF.08 táboa
4.18).
• Amosará o resultado da Pegada Ecolóxica do usuario comparada coa media
da USC (RF.09 táboa 4.19).
• Subir datos ao servidor central (RF.20 táboa 4.30).
• Seleccionar o perfil entre 3 diferentes PDI, PAS e Estudante (RF.01 táboa
4.11).
• Borrar todos os datos respondidos nos cuestionarios (RF.07 táboa 4.17).
• Consultar información relativa á Pegada Ecolóxica (RF.02 táboa 4.12).
• Consultar recomendacións que lle permita reducir a súa Pegada Ecolóxica
(RF.03 táboa 4.13).
• As respostas da enquisa poden ser consultadas (RF.24 táboa 4.34).

RF.01 Seleccionar o perfil entre 3 diferentes PDI, PAS e Estudante


Estado: Cumprido
Proba de Funcionamento: Na vista principal se non se escolleu un perfil an-
teriormente, deberá aparecer unha selección dos perfís dispoñibles. Cando
o usuario prema un dos perfís, este será gardado na base de datos SQLite.
Comprobarase que se gardan os datos na base de datos local a través dunha
consulta dende unha terminal.
Xustificación: Necesitase comprobar que se utiliza de forma axeitada as bib-
liotecas de SQLite e que a sentenza SQL para a inserción do perfil funciona
correctamente.
6.1. VALIDACIÓN DE REQUERIMENTOS 107

RF.02 Consultar información relativa á Pegada Ecolóxica


Estado: Cumprido

Proba de Funcionamento: Accedendo á sección de información adicional so-


bre a pegada ecolóxica amosarase unha lista con preguntas frecuentes sobre
a pegada ecolóxica, esta lista debe conter todas as preguntas gardadas na
base de datos. Seleccionada unha amosará a información relacionada coa
pregunta tal como se garda na base de datos.

Xustificación: Necesitase comprobar que se utiliza de forma axeitada as bib-


liotecas de SQLite e que a sentenza SQL para a consulta da información
adicional da pegada ecolóxica funciona correctamente.

RF.03 Consultar recomendacións que lle permita reducir a súa Pegada


Ecolóxica
Estado: Cumprido

Proba de Funcionamento: Accedendo á sección de información adicional so-


bre a pegada ecolóxica amosarase unha lista con resumos sobre consellos
para reducir a pegada ecolóxica organizada segundo consumo de papel ou
hábitos de transporte, esta lista debe conter os consellos gardadas na base
de datos. Seleccionada unha amosará a información relacionada co consello
tal como se garda na base de datos.

Xustificación: Necesitase comprobar que se utiliza de forma axeitada as bib-


liotecas de SQLite e que a sentenza SQL para a consulta dos consellos para
reducir a pegada ecolóxica funciona correctamente.

RF.04 Acceder ao cuestionario para a recollida de información relativa


a os hábitos de transporte
Estado: Cumprido

Proba de Funcionamento: Para comprobar que a funcionalidade está ben im-


plementada tratarase de acceder ao cuestionario de transporte dende a vista
principal de selección do cuestionario, ademais navegarase ao longo da en-
quisa para comprobar que efectivamente se plantexan todas as preguntas
recollidas no cuestionario.

Xustificación: O controlador recolle a acción do usuario sobre a pantalla, amosando


a vista coa primeira pregunta. Tras cada resposta habilítanse os botóns
necesarios para continuar coa enquisa ata o final.
108 CAPÍTULO 6. VALIDACIÓN E PROBAS

RF.05 Acceder ao cuestionario para a recollida de información relativa


a consumo de papel;
Estado: Cumprido

Proba de Funcionamento: Para comprobar que a funcionalidade está ben im-


plementada tratarase de acceder ao cuestionario de transporte dende a vista
principal de selección do cuestionario, ademais navegarase ao longo da en-
quisa para comprobar que efectivamente se plantexan todas as preguntas
recollidas no cuestionario.

Xustificación: O controlador recolle a acción do usuario sobre a pantalla, amosando


a vista coa primeira pregunta. Tras cada resposta habilítanse os botóns
necesarios para continuar coa enquisa ata o final.

RF.07 Borrar todos os datos respondidos nos cuestionarios


Estado: Cumprido

Proba de Funcionamento: Premendo no botón “Borrar Datos” debera elimi-


narse da base de datos os datos das enquisas e a selección do perfil. Com-
probarase realizando consultas na base de datos a través dunha consulta
dende unha terminal.

Xustificación: Necesitase comprobar que se utiliza de forma axeitada as bib-


liotecas de SQLite e que a sentenza SQL para o borrado dos datos funciona
correctamente.

Estado: Cumprido

Proba de Funcionamento: Na vista principal se non se escolleu un perfil an-


teriormente, deberá aparecer unha selección dos perfís dispoñibles. Cando
o usuario prema un dos perfís, este será gardado na base de datos SQLite.
Comprobarase que se gardan os datos na base de datos local a través dunha
consulta dende unha terminal.

Xustificación: Necesitase comprobar que se utiliza de forma axeitada as bib-


liotecas de SQLite e que a sentenza SQL para a inserción do perfil funciona
correctamente.

RF.08 Consultar o resultado do cálculo da súa Pegada Ecolóxica


Estado: Cumprido

Proba de Funcionamento: Para comprobar que se pode acceder ao resultado


do cálculo da Pegada Ecolóxica accederase á xanela que amosa os resultados
6.1. VALIDACIÓN DE REQUERIMENTOS 109

e comprobarase que o resultado é exposto de maneira axeitada. Ademais


comprobarase que o cálculo realizado é o correcto introducindo os datos da
enquisa nunha folla de cálculo que realiza os cálculos e a cal foi comprobada
con anterioridade.

Xustificación: O acceso á vista de resultados resulta satisfactoria e o cálculo


compárase co obtido na folla de cálculo, se os dous valores coinciden será
aprobado o requerimento.

RF.09 Amosará o resultado da Pegada Ecolóxica do usuario comparada


coa media da USC
Estado: Cumprido

Proba de Funcionamento: Xunto co resultado da pegada ecolóxica buscarase


o valor medio da pegada ecolóxica da USC, esta será obtida dende un ar-
quivo de configuración tipo plist.

Xustificación: O acceso á vista de resultados resulta satisfactoria e o valor com-


párase co gardado no arquivo de configuración, se os dous valores coinciden
será aprobado o requerimento.

RF.20 Subir datos ao servidor central


Estado: Cumprido

Proba de Funcionamento: Cubertas as enquisas premerase no botón que fai


que realice a subida dos datos. Comprobarase no servidor web que os datos
aparecen no directorio destino axeitado e abrirase unha consola SQLite para
comprobar que o arquivo non foi corrompido durante a subida e que contén
todos os datos.

Xustificación: A transferencia de arquivos a través da rede pode facer que o


arquivo SQLite sexa inutilizado, é conveniente comprobar este aspecto xa
que o fin último da aplicación é a recollida de datos.

RF.24 As respostas da enquisa poden ser consultadas


Estado: Cumprido

Proba de Funcionamento: Cubertas unha enquisa, poderase voltar a ela e


deberán amosárselle ao usuario as respostas seleccionadas anteriormente.

Xustificación: As respostas deben ser gardadas na base de datos SQLite e de-


berá obter as respostas no caso de que fora respondida con anterioridade,
deberanse comprobar as consultas SQL para este fin.
110 CAPÍTULO 6. VALIDACIÓN E PROBAS

6.1.2 Segunda Iteración


En esta iteración implementáronse os subsistemas Calendario, Bolsa de Tra-
ballo e Novidades, estes subsistemas están formados polos casos de uso:
• Acceso a Lista de Citas do Calendario (CU.10 táboa 4.54)
• Recarga Citas Do Calendario (CU.11 táboa 4.55)
• Accede a Detalles da Cita (CU.12 táboa 4.56)
• Acceso a Lista de Novidades (CU.013 táboa 4.57)
• Recarga Novidades (CU.14 táboa 4.58)
• Accede a Detalles da Novidade (CU.15 táboa 4.59)
• Carga Máis Novidades (CU.16 táboa 4.60)
• Acceso á lista de Ofertas de Traballo (CU.17 táboa 4.61)
• Recarga Ofertas de Traballo (CU.18 táboa 4.62)
• Accede a Detalles da Oferta de Traballo (CU.19 táboa 4.63)
Segundo a Matriz de Trazabilidade, estes casos de uso corresponden cos Re-
querimentos Funcionais:
• Obter datos do calendario da páxina web da ETSE (RF.11 táboa 4.21).
• Listar citas do calendario agrupados por días (RF.12 táboa 4.22).
• Acceder a detalles da cita do calendario (RF.13 táboa 4.23).
• Obter datos da sección novidades da páxina web da ETSE (RF.14 táboa
4.24).
• Listar as novidades (RF.15 táboa 4.25).
• Acceder a detalles de unha novidade (RF.16 táboa 4.26).
• Obter datos da bolsa de traballo da páxina web da ETSE (RF.17 táboa
4.27).
• Listar as ofertas de traballo agrupadas por perfil profesional (RF.18 táboa
4.28).
• Acceder a os detalles dunha oferta de traballo (RF.19 táboa 4.29).
• Actualiza lista de citas do calendario (RF.21 táboa 4.31).
• Actualiza lista de novidades (RF.22 táboa 4.32).
• Actualiza ofertas de traballo (RF.23 táboa 4.33).
6.1. VALIDACIÓN DE REQUERIMENTOS 111

RF.11 Obter datos do calendario da páxina web da ETSE


Estado: Cumprido
Proba de Funcionamento: A base de datos SQLite encherase cos datos rec-
ollidos dun arquivo ICS descargado dende a páxina web da ETSE. Com-
probarase que se enche a base de datos cos datos axeitados a través dunha
consulta dende unha sesión nunha terminal.
Xustificación: A descarga realizarase a través dunha petición HTTP de descarga
do arquivo, este parsearase para recoller a información relevante. Esta
descarga e parseo debe funcionar correctamente, así como as sentencias
SQL de inserción de datos na base de datos SQLite.

RF.12 Listar citas do calendario agrupados por días


Estado: Cumprido
Proba de Funcionamento: Comprobarase que se lista a totalidade das citas
gardadas na base de datos SQLite e que a lista estará organizada e ordenada
segundo o día da cita. Comprobarase que a lista está completa contando as
citas contidas na base de datos a través dunha consulta dende unha sesión
nunha terminal.
Xustificación: Deben comprobarse as sentencias SQL necesarias para a obten-
ción dos datos dende a base de datos SQLite. Necesítase comprobar que a
agrupación por días é correcta.

RF.13 Acceder a detalles da cita do calendario


Estado: Cumprido
Proba de Funcionamento: Comprobarase que despois da selección dunha de-
terminada cita da lista principal amosarase unha vista que recolle a infor-
mación relativa á cita.
Xustificación: Debe comprobarse que a transición entre vistas mantén a infor-
mación da cita seleccionada para a súa representación en detalle.

RF.14 Obter datos da sección novidades da páxina web da ETSE


Estado: Cumprido
Proba de Funcionamento: A base de datos SQLite encherase cos datos rec-
ollidos parseando a páxina web da ETSE na súa sección de novidades.
Comprobarase que se enche a base de datos cos datos axeitados a través
dunha consulta dende unha sesión nunha terminal.
112 CAPÍTULO 6. VALIDACIÓN E PROBAS

Xustificación: O parseo realizarase a través dunha biblioteca de parseo, debe


comprobarse que a biblioteca funciona como se espera. Este parseo debe
funcionar correctamente, así como as sentencias SQL de inserción de datos
na base de datos SQLite.

RF.15 Listar as novidades

Estado: Cumprido

Proba de Funcionamento: Comprobarase que se lista a totalidade das novi-


dades gardadas na base de datos SQLite. Comprobarase que a lista está
completa contando as novidades contidas na base de datos a través dunha
consulta dende unha sesión nunha terminal.

Xustificación: Deben comprobarse as sentencias SQL necesarias para a obten-


ción dos datos dende a base de datos SQLite.

RF.16 Acceder a detalles de unha novidade

Estado: Cumprido

Proba de Funcionamento: Comprobarase que despois da selección dunha de-


terminada novidade da lista principal amosarase unha vista que recolle a
información relativa á novidade.

Xustificación: Debe comprobarse que a transición entre vistas mantén a infor-


mación da novidade seleccionada para a súa representación en detalle.

RF.17 Obter datos da bolsa de traballo da páxina web da ETSE

Estado: Cumprido

Proba de Funcionamento: A base de datos SQLite encherase cos datos recolli-


dos parseando a páxina web da ETSE na súa sección de ofertas de emprego.
Comprobarase que se enche a base de datos cos datos axeitados a través
dunha consulta dende unha sesión nunha terminal.

Xustificación: O parseo realizarase a través dunha biblioteca de parseo, debe


comprobarse que a biblioteca funciona como se espera. Este parseo debe
funcionar correctamente, así como as sentencias SQL de inserción de datos
na base de datos SQLite.
6.1. VALIDACIÓN DE REQUERIMENTOS 113

RF.18 Listar as ofertas de traballo agrupadas por perfil profesional


Estado: Cumprido

Proba de Funcionamento: Comprobarase que se lista a totalidade das ofertas


de traballo gardadas na base de datos SQLite e que a lista estará organizada
e ordenada segundo o perfil laboral da oferta de emprego. Comprobarase
que a lista está completa contando as ofertas de emprego contidas na base
de datos a través dunha consulta dende unha sesión nunha terminal.

Xustificación: Deben comprobarse as sentencias SQL necesarias para a obten-


ción dos datos dende a base de datos SQLite. Necesítase comprobar que a
agrupación por perfil laboral é correcta.

RF.19 Acceder a os detalles dunha oferta de traballo


Estado: Cumprido

Proba de Funcionamento: Comprobarase que despois da selección dunha de-


terminada oferta de traballo da lista principal amosarase unha vista que
recolle a información relativa á oferta de traballo.

Xustificación: Debe comprobarse que a transición entre vistas mantén a in-


formación da oferta de traballo seleccionada para a súa representación en
detalle.

RF.21 Actualiza lista de citas do calendario


Estado: Cumprido

Proba de Funcionamento: Comprobarase que ao premer o botón de recargar,


realizarase unha carga completa e actualizada das citas dos arquivos ICS
descartados dende a páxina web da ETSE.

Xustificación: Debe comprobarse que a inserción das citas parseadas dende o


arquivo ICS non se duplican na base de datos.

RF.22 Actualiza lista de novidades


Estado: Cumprido

Proba de Funcionamento: Comprobarase que ao premer o botón de recargar,


realizarase unha carga inicial e actualizada das novidades máis recentes
publicadas na páxina web da ETSE.

Xustificación: Debe comprobarse que a inserción das novidades non se duplican


na base de datos.
114 CAPÍTULO 6. VALIDACIÓN E PROBAS

RF.23 Actualiza ofertas de traballo


Estado: Cumprido

Proba de Funcionamento: Comprobarase que ao premer o botón de recar-


gar, realizarase unha carga nova e actualizada das ofertas de traballo máis
recentes publicadas na páxina web da ETSE.

Xustificación: Debe comprobarse que a inserción das ofertas de traballo non se


duplican na base de datos.

6.2 Usabilidade, Utilidade e Fidelización


Realizouse un test de usabilidade para recoller as impresións dos usuarios so-
bre a aplicación. No presente proxecto é importante coñecer as impresións do
usuario xa que se busca a súa fidelización coa aplicación. Con estas probas com-
probarase se se interpretou axeitadamente a metodoloxía de comportamento de
Fogg (descrita no apartado 2.2) para acadar a fidelización do usuario. Recorde-
mos que para Fogg requírense dúas situacións principais para desencadear un
comportamento, a habilidade do usuario para realizar a tarefa unha motivación
e un desencadeante. Un usuario será máis capaz (terá a habilidade necesaria)
canto máis usable sexa a aplicación e estará máis motivado canto máis útil sexa.

As probas de usabilidade constan dunha enquisa que se lle pasa aos individuos
de proba despois de familiarizarse coa aplicación e realizar unha serie de tarefas
sobre ela.

As tarefas propostas ao usuario son as seguintes:

1. Execute a aplicación e familiarícese con ela. Dispón de non máis de 2


minutos para realizar esta tarefa.

2. Intente realizar as seguintes actividades:

• Encha a enquisa sobre hábitos de mobilidade e transporte.


– Consulte os resultados da pegada ecolóxica sobre a enquisa que
acaba de realizar.
• Encha a enquisa sobre consumo de papel.
– Consulte os resultados da pegada ecolóxica sobre a enquisa que
acaba de realizar.
• Suba os resultados da enquisa ao servidor.
• Consulte o calendario de citas e suba ata unha data anterior á actual.
6.2. USABILIDADE, UTILIDADE E FIDELIZACIÓN 115

– Regrese á data actual.


• Consulte as ofertas de traballo e novidades que recolle a aplicación.
• Consulte as novidades e cargue máis das que aparecen inicialmente.
• Consulte como podería reducir a súa Pegada Ecolóxica.

Despois de efectuar as tarefas descritas anteriormente cubrirase unha enquisa


que pretende valorar a usabilidade da aplicación e a utilidade da mesma.

Valorando entre 1, moi en desacordo e 5, moi de acordo conteste as seguintes


preguntas:

• Usabilidade:

1. Paréceme que é innecesariamente complexa


2. Considero que é fácil de utilizar
3. Creo que necesitaría máis información sobre como funciona para poder
utilizala correctamente
4. Paréceme que as diferentes funcionalidades están ben integradas
5. Paréceme consistente (no senso de que ofrece os botóns e pantallas que
me parecen razoables para este tipo de aplicación)
6. Paréceme que a maior parte da xente aprendería a utilizala con fluidez
moi rapidamente
7. Paréceme tediosa (no senso que me resultou pesado utilizala)
8. Sentinme con confianza e cómodo utilizándoa

• Utilidade:

1. Instalaría a aplicación no meu móbil


2. Fáltame información sobre a súa finalidade
3. Creo que pregunta demasiadas cousas
4. Ofrece información que resulta interesante
5. Entendo ben os resultados que ofrece
6. Considero que ten interese suficiente como para que sexa utilizada por
outros membros da USC

O método utilizado para valorar o cuestionario é o seguinte:

• As preguntas de índole negativa contan como 6 menos a nota dada.

• As preguntas de índole positiva contan directamente coa nota dada.


116 CAPÍTULO 6. VALIDACIÓN E PROBAS

A fidelización require de resultados reais en canto a utilización da aplicación


(fidelización a longo prazo) para o cal necesitamos despregar a aplicación na App
Store de Apple. Tamén podemos obter resultados a partir da enquisa de usabil-
idade e utilidade (fidelización a curto prazo), na cal preguntas como “Considero
que ten interese suficiente como para que sexa utilizada por outros membros
da USC” ou “Instalaría a aplicación no meu móbil” indican en que medida a
aplicación resulta o suficientemente útil para un uso continuado da mesma.

6.2.1 Resultados
Realizóuselle unha proba piloto a 10 potenciais usuarios de dous perfís difer-
entes, PDI e estudantes obtendo os seguintes resultados:

En canto ao test de usabilidade


O test de usabilidade trata de coñecer se a aplicación resulta fácil de usar.
Segundo Fogg para o desencadeamento dun determinado comportamento require
que a persoa sexa suficientemente hábil para realizala.

Usuario P1 P2 P3 P4 P5 P6 P7 P8
PDI.01 1 5 1 5 5 5 1 5
PDI.02 1 5 1 4 4 4 1 5
PDI.03 1 4 2 5 4 4 1 4
PDI.04 1 5 2 5 5 5 1 4
PDI.05 1 5 1 4 4 5 1 5
Estudante.01 1 5 1 5 5 4 1 4
Estudante.02 1 4 3 5 5 4 1 4
Estudante.03 1 5 2 4 5 4 2 5
Estudante.04 1 5 1 4 4 4 1 4
Estudante.05 1 5 1 5 5 5 1 5
PAS.01 5 5 5 4 4 4 5 4
PAS.02 1 3 2 5 5 3 2 4
PAS.03 1 5 1 5 4 5 1 5

Táboa 6.1: Táboa de puntuacións no test de usabilidade

As respostas achéganse notablemente ao máximo establecido en 5 (ou mínimo


de 1 para as preguntas de de natureza negativa) poñendo de manifesto a satis-
facción dos usuarios con respecto á usabilidade.

Cabe destacar que os resultados á pregunta P3 de usabilidade Creo que nece-


sitaría máis información sobre como funciona para poder utilizala correctamente
6.2. USABILIDADE, UTILIDADE E FIDELIZACIÓN 117

Figura 6.1: Respostas medias ao cuestionario de usabilidade

ascende visiblemente de 1, co que é posible que non se investira o tempo nece-


sario en explicar a maneira de utilizar a aplicación. Ademais non se dispoñía dun
manual de usuario axeitado no momento da realización da proba piloto.

6.2.2 En canto ao test de utilidade


Este test trata de medir a utilidade da aplicación e si esta será suficientemente
útil como para motivar ao usuario a utilizala.

Figura 6.2: Respostas medias ao cuestionario de utilidade

Pese a que as respostas se achegan na súa maior parte ao máximo de 5 (ou


118 CAPÍTULO 6. VALIDACIÓN E PROBAS

Usuario P1 P2 P3 P4 P5 P6
PDI.01 5 5 5 5 5 5
PDI.02 3 5 5 4 5 4
PDI.03 1 3 4 4 5 4
PDI.04 4 5 5 5 5 5
PDI.05 3 5 5 3 5 4
Estudante.01 4 5 5 4 5 5
Estudante.02 2 4 4 4 3 5
Estudante.03 4 4 4 1 5 5
Estudante.04 3 5 2 3 5 3
Estudante.05 3 5 4 3 5 5
PAS.01 3 1 1 4 5 4
PAS.02 3 2 2 3 5 4
PAS.03 3 2 1 5 5 4

Táboa 6.2: Táboa de puntuacións no test de utilidade

mínimo de 1 para as preguntas de de natureza negativa) pode concluirse que o


usuario considera a aplicación útil.

No caso das preguntas P1 (Instalaría a aplicación no meu móbil) e P4 (Ofrece


información que resulta interesante) pode observarse resultados máis baixos do
esperado. Durante a conversa cos usuarios durante a realización da proba piloto,
déronme a entender que non están dispostos a instalar aplicacións que non con-
sideren realmente útiles e en algún caso completa falta de interese sobre a pegada
ecolóxica.

6.2.3 En canto á fidelización


A fidelización é unha característica derivada da usabilidade e da utilidade. O
feito de que a aplicación trate de atraer a usuarios de 3 perfiles moi diferentes da
comunidade universitaria, fai complicado atopar funcionalidades que fagan máis
atractiva a aplicación a todos os perfís simultáneamente. A medida que mellor
representa se as funcionalidades ofertadas pola aplicación resultan atractivas é a
medida de Utilidade.

Segregaranse os resultados da Utilidade segundo os 3 tipos de perfís:


En liñas xerales apréciase a reticencia dos usuarios de instalar a aplicación,
pero resulta interesante a información que ofrece. Isto resulta alentador xa que
seguindo por este camiño e analizando máis en profundidade as necesidades dos
usuarios pode chegar a conseguirse unha fidelización adecuada ás necesidades de
6.2. USABILIDADE, UTILIDADE E FIDELIZACIÓN 119

Figura 6.3: Respostas medias ao cuestionario de utilidade segregadas por tipo de


usuario

captura de información estatística da pegada ecolóxica.

Os estudantes son os máis críticos con respecto á enquisa e son aos que menos
útil lle resulta a información que lle aporta a aplicación. Non obstante considera
que a información pode resultar relevante para outros usuarios da USC.

Fidelización a curto prazo

A curto prazo é posible estimar a fidelización coñecendo o número de usuarios


que descargou a aplicación. Este estudio resulta imposible de realizar mentres
non se poña en marcha unha etapa de despregue da aplicación. Lamentablemente
non se dispón dunha conta de desenvolvedor de Apple para poñer esta etapa en
marcha.

O tempo medio que Apple tarda en publicar unha aplicación no caso de que
na revisión non atopasen fallas ou algunha das súas partes non violara os termos
e condicións de Apple, é de entre 5 e 10 días 12 . Tendo en conta este tempo aprox-
imado, a aplicación podería terse publicado na App Store antes da finalización
do proxecto, e posiblemente puidésemos obter algún resultado.

1
http://www.ubicuostudio.com/es/diario-de-desarrollo-es/
apple-tiempo-revision-apps-app-store/
2
http://www.ellibrogordodepetete.com/2012/02/fases-de-aprobacion-de-la-app-store.
html
120 CAPÍTULO 6. VALIDACIÓN E PROBAS

Fidelización a longo prazo


A longo prazo, a fidelización poderase evaluar segundo o número de usuarios
que envían información ao servidor central da USC durante o próximo ano. A
duración do proxecto non é suficiente para evaluar este tipo de fidelización.

6.3 Propostas de Mellora dos Usuarios Piloto


Unha vez coberta a enquisa sobre usabilidade e utilidade preguntouse aos
usuarios se existe algunha característica da aplicación que a fixera máis atractiva
ou útil. A columna “Estimación/Desestimación” refírese á decisión de incluir a
proposta en futuras ampliacións do capítulo 7, non a se foi ou non implementada
neste proxecto debido a que non se dispuñan de máis horas para investir na
implementación de funcionalidades adicionais.

Proposta Estimación/Desestimación
Consulta de correo Desestimada: iOS dispón dunha ferramenta moi po-
electrónico tente para a xestión do correo electrónico.
Acceso á infor- Estimada: Resulta útil sobretodo para os perfís de es-
mación dispoñible tudante e PDI ter acceso rápido á información dispoñible
Campus Virtual no campus virtual.
Acceso a documen- Estimada: Atractivo para PAS, podendo consultar fá-
tos relevantes de cilmente prazos e requerimentos burocráticos.
carácter administra-
tivo
Mellorar a rep- Estimada: Unha representación do calendario máis
resentación do acorde co estilo nativo da plataforma resulta moito máis
calendario atractiva e usable.
Acceso a horarios de Estimada: Faría a aplicación más atractiva a usuarios
clase co perfil de Estudante.
Sincronizar citas co Desestimada: Se se sincronizan as citas do calendario
calendario do dis- da ETSE co calendario nativo, non é necesario continuar
positivo utilizando a aplicación, indo en contra do obxectivo de
fidelización.

Táboa 6.3: Táboa de propostas de mellora dos usuarios


Capítulo 7

Conclusións

En este capítulo describiranse as conclusións do proxecto, as posibles am-


pliacións.

7.1 Conclusións
As probas realizadas despois da etapa de implementación da primeira iteración
foron satisfactorias polo que o obxectivo de que a aplicación recolla información
sobre hábitos de transporte e consumo de papel na comunidade universitaria e
expoña o valor da pegada ecolóxica ao usuario comparado coa media da USC
está cumprido.

Revisados os datos de usabilidade, utilidade e fidelización podemos consid-


erar que os obxectivos adicionais de incluir funcionalidades para incrementar a
usabilidade e utilidade da aplicación, e así acadar a fidelización do usuario vese
cumprido, pero con reservas. Esta consideración está pendente de ser confirmada
unha vez se despregue a aplicación na App Store e poder comprobar a fidelización
con cifras obxectivas.

Creouse unha aplicación que, segundo as probas piloto, é útil para ampliar o
radio de acción das enquisas realizadas polos bolseiros SPIU. Recolle información
do mesmo xeito que o fai a aplicación para Android de Javier[8], engadindo os
datos dos usuarios da segunda plataforma máis utilizada de dispositivos móbiles.

Coa inclusión na aplicación de información relevante para o usuario branco


da aplicación, como o calendario, novidades e bolsa de traballo da páxina web da
ETSE, permite aumentar a fidelización dos usuarios, facendo que instalen unha
aplicación, que en principio resultaría pouco atractiva.

121
122 CAPÍTULO 7. CONCLUSIÓNS

7.2 Posibles Ampliacións


A táboa 6.3 contén varias propostas dos usuarios que se poderían implementar
en futuros proxectos, entre elas, as consideradas máis atractivas:

• Acceso á información dispoñible Campus Virtual

• Acceso a documentos relevantes de carácter administrativo

• Mellorar a representación do calendario

• Acceso a horarios de clase

A aplicación obxecto de este proxecto céntrase nun entorno reducido como é


a ETSE, pero pode ampliarse a calquera centro da USC. O principal problema
á hora de implementar esta mellora é a falta de normalidade nas páxinas web
dos centros que ainda ofertando contidos similares nas súas páxinas web, non
existe un estándar á hora de presentalo, facendo que a recollida da información
se convirta nunha tarefa hercúlea para o programador.

En futuros proxectos poderíanse engadir as funcionalidades do presente prox-


ecto á aplicación desenvolta por Javier[8], así como as estimadas na táboa 6.3.

A aplicación non resulta todo o atractiva que pode chegar a ser utilizando
as ferramentas que nos ofrece Apple para desenvolver para iOS. Cumprir coa
planificación temporal fixo que non se puidera profundizar na utilización de esas
ferramentas e poder facer a aplicación máis atractiva visualmente.

Os resultados da Pegada Ecolóxica poderían ser presentadas de xeito máis


atractivo ao usuario e desenvolver unha análise estatística máis rigurosa.
Apéndice A

Manual de Instalación

A.1 Instalación no Dispositivo Móbil


Todas a aplicacións desenvoltas para dispositivos iOS precisan de ser publi-
cadas na App Store de Apple, para o cal se require dunha conta de desenvolvedor
de Apple.

Existen dous tipos de contas de desenvolvedor, gratuítas e de pago.

• As gratuítas permiten a descarga do entorno de desenvolvemento Xcode,


con el pódese desenvolver calquera aplicación e probala nun simulador que
dispón o entorno de desenvolvemento de Apple. Non permite instalar a
aplicación nun dispositivo físico e tampouco publicar a aplicación na App
Store.

• As contas de desenvolvedor de Apple de pago custan 90 € anuais e non


teñen límite en canto a aplicacións e dispositivos onde se poden probar
estas. Tamén permite publicar a aplicación na App Store unha vez pasado
o filtro de Apple.

Non se dispón de unha conta de desenvolvedor de Apple para o presente


proxecto e polo tanto non é posible instalar a aplicación en dispositivos móbiles,
polo tanto a aplicación non está accesible. Esta etapa de despregue da aplicación
xa non está contemplada no proxecto e queda pendente.

A.2 Probas no Simulador


É posible utilizar a aplicación se se dispón:

• Ordenador Apple con Mac OS X 10.7 ou versión superior

• Conta de desenvolvedor de Apple gratuíta

123
124 APÉNDICE A. MANUAL DE INSTALACIÓN

• Xcode 4.5 ou versión superior

• Para a parte da subida de datos ao servidor necesítase:

– Servidor Apache co módulo de PHP instalado e habilitado


– Base de datos MySQL

A.2.1 Preparando o sistema


Para obter todas as funcionalidades da aplicación deberase crear unha base
de datos co nome “ecopegada” e xerar as táboas a partir do script de xeración
ScriptXeracionBDMySQLServidor.sql adxunto no CD.

Copiamos o arquivo upload.php (tamén dispoñible no CD) ao directorio raiz


do servidor web, creando en ese mesmo directorio outro chamado “uploads”.

Unha vez preparado o sistema descomprimimos Proyecto_Xcode_PegadaEcoloxica.zip


dispoñible no CD e abrimos o arquivo PegadaEcoloxica.xcodeproj.

Unha vez aberto o proxecto prememos sobre o botón “Run” na parte superior
esquerda, sinalado na figura A.1.

Figura A.1: Captura da interface do Xcode

Abrirase un simulador coa aplicación funcionando.


Apéndice B

Manual de Usuario

A primeira vez que se inicia a aplicación deberase aceptar tanto que a apli-
cación necesita conexión de datos a internet e que se lle enviarán notificacións.

(a) (b)

Figura B.1: Permisos de conexión a internet (a) e notificacións (b)

B.1 Selección Perfil


Despois de aceptar estes dous avisos o usuario debe seleccionar o perfil que
corresponda segundo o seu traballo na USC:

125
126 APÉNDICE B. MANUAL DE USUARIO

Figura B.2: Selección Perfil

Recoméndase ler o texto explicativo que se pode ver na figura B.10 sobre os
obxectivos e funcionalidade da aplicación.

Unha vez escollido o perfil temos acceso á vista de xanelas coas funcionalidades
da aplicación. Antes de ter cuberta a enquisa únicamente se habilitan dúas
xanelas, Cuestionario e Estatísticas.

B.2 Xanela Cuestionario

A xanela Cuestionario utilízase para acceder aos cuestionarios sobre trans-


porte e papel, ademais dispón de dúas iconas ao lado de cada un dos botóns cos
que acceder aos cuestionarios que nos indican se están ou non completados.

A información das preguntas respondidas será gardada e poderase consultar


a partir de esta vista. Unha vez seleccionado un cuestionario, levará ao usuario
á primeira pregunta de cada cuestionario.
B.2. XANELA CUESTIONARIO 127

(a) (b)

Figura B.3: Xanela Cuestionario. Cuestionarios incompletos (a) e cuestionarios


completos (b)

Esta xanela conterá tamén as vistas a través das cales se cubrirán as enquisas.
Pode observarse a diferencia entre as xanelas habilitadas e as inhabilitadas, así
como a diferencia entre a xanela activa a o resto de xanelas.

Cando entra no cuestionario comeza sempre na primeira pregunta do cues-


tionario seleccionado. Se nunha sesión anterior, cubriu a totalidade de algunha
enquisa ou parte dela, poderá ver as respostas ás preguntas que xa foran respon-
didas, podendo modificalas se así o desexase.

B.2.1 Cuestionario Transporte

O cuestionario Transporte dispón de diferentes vistas coas que expoñer as


preguntas e recoller as respostas. Todas a vistas do cuestionario dispoñen de
áreas comúns:
128 APÉNDICE B. MANUAL DE USUARIO

(a) (b)

Figura B.4: Elementos comúns do cuestionario Transporte (1)

As vistas do cuestionario dispón dunha barra superior de navegación. Dispón


de dous botóns na parte superior que sirven para navegar (adiante ou atrás) ao
longo do cuestionario, remarcados cun recadro vermello na figura B.4a. O botón
Seguinte atópase inhabilitado mentres non se responda a pregunta segundo os re-
querimentos de cada unha das preguntas. Na figura B.4b pode observarse como
se habilita cando se responde a unha pregunta. A pregunta sempre se disporá na
área remarcada cun recadro vermello na figura B.4b

As respostas realizadas quedan gardadas na base de datos local, e poderá


navegar entre as preguntas respondidas mantendo o valor escollido nunha sesión
anterior. Poderá consultar as súas respostas en calquera momento.

Na figura B.4a aprécianse os selectores para as preguntas de resposta múlti-


ple, remarcados dentro dun recadro azul.

Este cuestionario dispón de outros elementos de resposta ás preguntas segundo


sexan de resposta única e unha resposta numérica:
B.3. CUESTIONARIO ESTATÍSTICAS 129

tap

(a) (b)

Figura B.5: Áreas comúns do cuestionario Transporte (2)

As preguntas con resposta única dispón dun selector que se acciona deslizando
o selector de arriba a abaixo, deixando no medio e resaltada a resposta axeitada,
tal e como se amosa na figura B.5a.

As preguntas con unha resposta numérica dispoñen dun deslizador horizontal


(figura B.5b). Adicionalmente pode dispor de unha botonera co “+” e o “-” co
que axustar o valor en unidades.

B.2.2 Cuestionario Papel


Este cuestionario únicamente dispón de preguntas con resposta única, repre-
sentada anteriormente na figura B.5a do apartado B.2.1.

B.3 Cuestionario Estatísticas


Este cuestionario estará habilitado unha vez seleccionado o perfil. Terá ha-
bilitados os botóns que dan acceso aos consellos para reducir a pegada ecolóxica,
información adicional sobre a pegada ecolóxica, e a borrar datos, que ata o de
agora borrará únicamente o perfil (figura B.6a).
130 APÉNDICE B. MANUAL DE USUARIO

(a) (b)

Figura B.6: Xanela Estatísticas

O resto de elementos habilitaranse unha vez rematadas as enquisas de papel


e transporte (figura B.6b), entre eles o botón subir datos. Este botón subirá os
datos ao servidor central para ser analizados. Unha vez subidos inhabilitarase
mentres non se modifiquen os datos das enquisas.

B.3.1 Consellos

Esta vista da figura B.7a dispón de diferentes consellos para reducir a pegada
ecolóxica do usuario. En esta vista o usuario poderá seleccionar un elemento
sobre o que obter consellos, ou voltar ao inicio da sección Estatísticas.

Os detalles dun determinado consello (figura B.7b) pode ter máis contido que
o contedor pode amosar e para poder velo todo debemos arrastrar o dedo arriba e
a baixo navegando por todo o texto. O texto resaltado en azul destaca enlaces de
interese, números de teléfono e citas no calendario. Poden accederse mantendo
pulsado este texto resaltado.
B.3. CUESTIONARIO ESTATÍSTICAS 131

tap

Atrás
tap

n
cció
Sele

(a) (b)

Figura B.7: Vistas Consellos

B.3.2 Información

(a) (b)

Figura B.8: Vistas Información


132 APÉNDICE B. MANUAL DE USUARIO

A primeira vista (figura B.8a) dispón de unha lista de preguntas frecuentes,


a lista pode non estar dispoñible na súa totalidade, podendo acceder a elemen-
tos ocultos arrastrando o dedo arriba ou abaixo. Seleccionando un elemento
da lista accederemos aos detalles, podendo ser necesario subir e baixar o texto
desprazando o dedo arriba e abaixo, tal como se amosa na figura B.8b.

B.3.3 Resultados Pegada Ecolóxica

Estas vistas (figuras B.9a e B.9b) presentan ao usuario os resultados da pegada


ecolóxica segundo os datos introducidos na enquisa. A barra superior representa
a pegada do usuario, mentres que a de abaixo a da media da USC.

(a) (b)

Figura B.9: Vistas Resultados Pegada Ecolóxica

B.3.4 Borrar Datos

O botón borrará os datos de perfil e todas a respostas das enquisas. Non


borrará as citas, novidades nin ofertas de traballo. Pedirá confirmación para
borrar os datos evitando que sexan borrados accidentalmente.
B.4. XANELA CALENDARIO 133

Figura B.10: Borrar Datos

B.4 Xanela Calendario


En esta xanela represéntanse as citas obtidas dende o calendario da páxina
web da ETSE.

(a) (b)

Figura B.11: Xanela Calendario


134 APÉNDICE B. MANUAL DE USUARIO

Na barra superior na figura B.11a, remarcados con cadros amarelos, resáltanse


dous botóns, o da esquerda é o botón Hoxe. Este botón utilízase para mover a
lista automáticamente á cita máis recente, no caso de atoparse nunha data difer-
ente, á dereita o botón de actualizar, que descargará novamente o arquivo ICS,
actualizando as citas e enchendo a lista coas citas novas. Resaltado con un
recadro vermello aparece o detalle dunha sección, estas seccións separan as citas
segundo o día da data. Xusto debaixo lístanse as citas correspondentes en ese día.

Na figura B.11b amósanse os detalles das citas seleccionada na lista represen-


tada da figura B.11a.

B.5 Xanela Traballo


Esta xanela recolle as ofertas de traballo recollidas da bolsa de traballo da
páxina web da ETSE. A lista de ofertas (figura B.12a) de traballo están orga-
nizadas por perfil laboral. Tamén dispón dun botón para actualizar a lista de
ofertas de traballo.

Seleccionando unha oferta de traballo da lista da figura B.12a lévanos á vista


da figura B.12b que amosa os detalles da oferta de traballo.

(a) (b)

Figura B.12: Xanela Traballo


B.6. XANELA NOVIDADES 135

B.6 Xanela Novidades


Na xanela novidades atópanse as novidades publicadas na páxina web da
ETSE. Non dispoñen de ningunha característica común polas que se puidera or-
ganizar. Dispón dun botón de actualizar para obter as novidades máis recentes.

A primeira vez que se cargan ou actualizan as novidades amosará as 10 novi-


dades máis recentes. Navegando á parte inferior da lista, ao aparecer a última
novidade a aplicación traerá 10 novidades máis.

(a) (b)

Figura B.13: Xanela Novidades

A figura B.13b presentan as novidades en detalle, resaltando datas, números


de teléfono e páxinas web.
136 APÉNDICE B. MANUAL DE USUARIO
Bibliografía

[1] Apple Developer iOS Reference https://developer.apple.com/library/ios/navigation/.


Consultado o día 1 de Maio de 2013.

[2] B. J. Fogg. A Behavior Model for Persuasive Design. Persuasive Technology


Lab. Stanford University. Abril 2009.

[3] Bruce ”Tog” Tognazzini’, Lista de principios básicos para o deseño de inter-
faces (http://www.asktog.com/basics/firstPrinciples.html). Consultado o 10
Xuño de 2013.

[4] Framework Programming Guide (https://developer.apple.com/library/mac/documentation/MacO


Consultado 1 de Maio de 2013, 9 de Maio de 2013.

[5] Guía práctica para el cálculo de emisiones de Gases de Efecto Invernadero


(GEI) Oficina Catalana del Canvi Climátic. Comisión interdepartamental
do cambio climático, Generalitat de Cataluña. Marzo 2012.

[6] iCalendar Transport-Independent Interoperability Protocol (iTIP)


(http://tools.ietf.org/html/rfc5546). Consultado o 7 de Xuño de 2013.

[7] López Álvarez, Noelia e Blanco Heras, Dora, Impacto Ambiental da Uni-
versidade de Santiago de Compostela. Oficina de Desenvolvemento Sostible.
Universidade Santiago de Compostela. Maio 2009.

[8] López Fandiño, Javier. Aplicación Android para o cálculo da contribución


á Pegada Ecolóxica dos hábitos de transporte e consumo de papel. Escola
Técnica Superior de Enxeñaría. Universidade de Santiago de Compostela.
Xuño 2012.

[9] López Rodríguez, Ramón; Taboada Iglesias, José Luis e López Álvarez,
Noelia, Impacto Ambiental en Centros da USC. Vicerreitoría de Calidade
e Planificación. Universidade de Santiago de Compostela. Febreiro 2008.

[10] Jakob Nielsen, 10 Usability Heuristics for User Interface Design


(http://www.nngroup.com/articles/ten-usability-heuristics/ ). Consultado o
10 Xuño de 2013.

137
138 BIBLIOGRAFÍA

[11] Merino,A. Producción de gases con efecto invernadero derivados de la activi-


dad agroforestal. Secuestro de carbono. VII Avances de Ciencia y Tecnología:
Objetivos Energéticos de la UE y el Protocolo de Kyoto. Novembro 2005.

[12] Otero Vázquez, Juan David. Sistema de cálculo da Pegada Ecolóxica e ren-
demento sostible para universidades. Escola Técnica Superior de Enxeñaría.
Universidade de Santiago de Compostela. Setembro 2011.

[13] Páxina oficial de Apache. (http://httpd.apache.org/ ). Consultada 3 de Xuño


de 2013.

[14] Páxina oficial de PHP. (http://www.php.net/ ). Consultada 25 de Maio de


2013.

[15] Páxina oficial de SQLite. (http://www.sqlite.org/ ). Consultada el 17 de Maio


de 2013.

[16] Plan de Desenvolvemento Sostible (https://www.usc.es/plands/). Consul-


tado o 15 de Maio de 2013.

[17] Project Management Institute Guía de los Fundamentos Para la Dirección


de Proyectos (Guía del PMBOK). Cuarta Edición.

[18] REES, W.,WACKERNAGEL, M., Our ecological footprint. Reducing Human


impact on Earth, New Society Publisher, Canada, 1996.

[19] S. Consolvo, D. W. McDonald, and J. A. Landay. Theory-driven design


strategies for technologies that suport behavior change in everyday life. No
Proc. of the 27th international conference on Human factors in computing
systems(CHI09), Boston, MA, USA, Apr. 2009, pp. 405–414.

[20] Xcode User Guide (https://developer.apple.com/library/ios/documentation/ToolsLanguages/C


About_Xcode/about.html). Consultado o 8 de Maio de 2013.

You might also like