Sunteți pe pagina 1din 61

TRABAJO FIN DE GRADO

Ttulo

1001 pelculas que hay que ver antes de morir, aplicacin


iOS
Autor/es

Ramn Mara Carnero Rojo

Director/es

Eloy Javier Mata Sots


Facultad

Facultad de Ciencias, Estudios Agroalimentarios e Informtica


Titulacin

Grado en Ingeniera Informtica

Departamento

Curso Acadmico

2012-2013
1001 pelculas que hay que ver antes de morir, aplicacin iOS, trabajo fin de
grado
de Ramn Mara Carnero Rojo, dirigido por Eloy Javier Mata Sots (publicado por la
Universidad de La Rioja), se difunde bajo una Licencia
Creative Commons Reconocimiento-NoComercial-SinObraDerivada 3.0 Unported.
Permisos que vayan ms all de lo cubierto por esta licencia pueden solicitarse a los
titulares del copyright.

El autor
Universidad de La Rioja, Servicio de Publicaciones, 2013
publicaciones.unirioja.es
E-mail: publicaciones@unirioja.es
Facultad de Ciencias, Estudios Agroalimentarios e Informtica

TRABAJO FIN DE GRADO


Ingeniera Informtica

1001 pelculas que hay que ver antes de


morir, aplicacin iOS

Autor: Ramn M Carnero Rojo


Tutor: Eloy Javier Mata Sots

Departamento de Matemticas y Computacin


Logroo, junio de 2013
2
Resumen

El presente proyecto se ha gestado para facilitar la consulta y seguimiento del


visionado de una lista de pelculas.

Esta memoria muestra el camino realizado entre el anlisis de funcionalidades que se


pueden aadir a la gestin de esta lista, hasta el diseo y desarrollo necesarios para
plasmarlas en una aplicacin iPhone. Utilizar metodologas giles era algo inevitable si
se quera cumplir el alcance propuesto.

La aplicacin desarrollada sirve para comprobar que este camino ha sido el correcto.

Palabras clave:
Desarrollo gil, Scrum, iOS, iPhone, usabilidad

Summary

This project aims at facilitating the consultation of a list of movies and tracking the
viewing of the movies in the list.

This report explains the approach adopted not only to the analysis of the functionalities
which can be added to the management of said list, but also to the design and
development required to build said functionalities in an iPhone application. The use of
agile development methods was required to reach our goals.

The developed application can be used to check the correctness of our approach.

Key words:
Agile development, Scrum, iOS, iPhone, usability

3
4
Agradecimientos
A mis ahijados Eduardo y Marina
por ser uno de los motivos de mi vida.

A Ella.

5
6
ndice de contenidos:

1 Introduccin ........................................................................................................... 11

2 DOP ......................................................................................................................... 12

2.1 Objetivos ........................................................................................................... 12


2.2 Descripcin ....................................................................................................... 12
2.3 Justificacin del proyecto / Antecedentes .......................................................... 12
2.4 Alcance del proyecto ......................................................................................... 13
2.5 Plan de direccin del alcance ............................................................................ 13
2.6 Entregables del proyecto ................................................................................... 13
2.7 Personal implicado en el desarrollo del proyecto ............................................... 13
2.8 Identificacin de riesgos y planes de accin ...................................................... 13
2.9 Planificacin del proyecto .................................................................................. 13
2.9.1 Ciclo de vida ............................................................................................... 13
2.9.2 Estructura de descomposicin del proyecto (WBS) (EDT) .......................... 14
2.9.3 Listado de tareas del proyecto .................................................................... 14
2.9.3.1 Gestin del proyecto............................................................................. 14
2.9.3.2 Formacin ............................................................................................ 14
2.9.3.3 Anlisis ................................................................................................. 14
2.9.3.4 Diseo .................................................................................................. 15
2.9.3.5 Construccin ........................................................................................ 15
2.9.3.6 Pruebas ................................................................................................ 15
2.9.4 Calendario previsto de actividades (Diagrama de Gantt) ............................ 15
2.10 Glosario ........................................................................................................... 17

3 Etapa de inicializacin ........................................................................................... 18

3.1 Introduccin....................................................................................................... 18
3.2 Anlisis del proyecto ......................................................................................... 18
3.2.1 Especificacin de requisitos ........................................................................ 18
3.2.1.1 Requisitos no funcionales ..................................................................... 18
3.2.1.2 Requisitos funcionales .......................................................................... 18
3.2.2 Pila de producto .......................................................................................... 19
3.2.3 Arquitectura software, Modelo-Vista-Controlador ........................................ 24
3.2.4 Justificacin de tecnologas utilizadas ......................................................... 25
3.3 Primer Sprint, Sprint de inicializacin ................................................................ 26
3.3.1 Descomposicin en tareas .......................................................................... 26
3.3.2 Desarrollo del Sprint ................................................................................... 28
3.3.3 Retrospectiva del Sprint .............................................................................. 36
3.4 Segundo Sprint.................................................................................................. 37
3.4.1 Descomposicin en tareas .......................................................................... 37
3.4.2 Desarrollo del Sprint ................................................................................... 38
3.4.3 Retrospectiva del Sprint .............................................................................. 43
3.5 Tercer Sprint ..................................................................................................... 44
3.5.1 Descomposicin en tareas .......................................................................... 44

7
3.5.2 Desarrollo del Sprint ................................................................................... 44
3.5.3 Retrospectiva del Sprint .............................................................................. 47
3.6 Cuarto Sprint ..................................................................................................... 48
3.6.1 Descomposicin en tareas .......................................................................... 48
3.6.2 Desarrollo del Sprint ................................................................................... 48

4 Seguridad ............................................................................................................... 52

5 Pruebas .................................................................................................................. 52

6 Conclusiones ......................................................................................................... 53

6.1 Evaluacin de objetivos ..................................................................................... 53


6.2 Revisin del DOP .............................................................................................. 54
6.3 Futuras mejoras ................................................................................................ 55
6.4 Conocimientos adquiridos ................................................................................. 55

7 Bibliografa ............................................................................................................. 57

8 Anexos.................................................................................................................... 58

8.1 Anexo A Actas de reunin .............................................................................. 58

8
ndice de ilustraciones:

Ilustracin 1 Estructura de descomposicin del proyecto ............................................ 14


Ilustracin 2 Diagrama de Gantt semanal con grupos de tareas plegados .................. 16
Ilustracin 3 Calendario de tareas............................................................................... 16
Ilustracin 4 Tablero Taskboard .................................................................................. 27
Ilustracin 5 Prototipado capa de la vista 1 ................................................................. 29
Ilustracin 6 Prototipado capa de la vista 2 ................................................................. 29
Ilustracin 7 Anlisis y esquema base de datos .......................................................... 30
Ilustracin 8 Diagrama del modelo .............................................................................. 31
Ilustracin 9 Diagrama del modelo de la base de datos .............................................. 32
Ilustracin 10 tabla con la lista de pelculas ................................................................ 33
Ilustracin 11 JCGridMenu desplegado ...................................................................... 33
Ilustracin 12 Swipe a la derecha para marcar visionado ........................................... 33
Ilustracin 13 Diagrama de navegabilidad de la aplicacin ......................................... 33
Ilustracin 14 Vista del detalle de la pelcula 1 ............................................................ 34
Ilustracin 15 Vista del detalle de la pelcula 2 ............................................................ 34
Ilustracin 16 Vista de las estadsticas ....................................................................... 35
Ilustracin 17 Diagrama de la aplicacin en XCode al finalizar el primer sprint ........... 35
Ilustracin 18 Estado del burndown al trmino del primer sprint ................................. 36
Ilustracin 19 Vistas de las webs de informacin ........................................................ 39
Ilustracin 20 Vista de la lista de personas ................................................................. 40
Ilustracin 21 Vista del detalla de la persona .............................................................. 40
Ilustracin 22 Vista de inicio........................................................................................ 42
Ilustracin 23 Vista de ajustes .................................................................................... 42
Ilustracin 24 Diagrama de la aplicacin en XCode al finalizar el segundo sprint ....... 42
Ilustracin 25 Estado del burndown al trmino del segundo sprint .............................. 43
Ilustracin 26 Diseo de interaccin del segundo sprint.............................................. 43
Ilustracin 27 Estado del burndown al trmino del tercer sprint .................................. 47
Ilustracin 28 Diseo final de la aplicacin.................................................................. 50
Ilustracin 29 Diagrama de la aplicacin en XCode al finalizar el cuarto sprint ........... 51
Ilustracin 30 Estado del burndown al trmino del cuarto sprint.................................. 51
Ilustracin 31 Herramienta Instruments ...................................................................... 53
Ilustracin 32 Diagrama de Gantt realizado en el DOP ............................................... 54
Ilustracin 33 Diagrama de Gantt revisado ................................................................. 54
Ilustracin 34 Reparto real del tiempo por tareas ....................................................... 55

9
10
1 Introduccin

La irrupcin de los llamados smartphones est suponiendo un gran cambio en


nuestras vidas. La capacidad de conseguir todo tipo informacin al instante es cada
vez ms elevada. A esta gran ventaja se le une un aspecto determinante, el factor
movilidad, que permite no interrumpir este flujo de datos.

Todo esto confluye en grandes cantidades continuas de informacin que necesitan ser
gestionadas correctamente para poder ser tiles. Afortunadamente se dispone de
aplicaciones en los propios dispositivos que se encargan de filtrar, separar y relacionar
esta informacin.

Por esta razn surgi este proyecto. Disponer de una forma sencilla de consultar y
gestionar informacin, concretamente una lista de visionados de pelculas. Y tal como
se requiere ahora, en cualquier momento y en cualquier lugar. Una aplicacin, por
tanto, para dispositivos mviles.

11
2 DOP

2.1 Objetivos

El objetivo fundamental del proyecto es el desarrollo de una aplicacin para


dispositivos iPhone, prestando una atencin especial a la experiencia de usuario, que
permita gestionar una lista de 1001 pelculas y consultar informacin sobre las
mismas.

2.2 Descripcin

Existen recopilatorios de pelculas, canciones, libros que intentan resaltar o poner de


relieve diferentes obras que pueden ser olvidadas o pasadas por alto entre la inmensa
cantidad existente. Una de esas recopilaciones es el libro 1001 que hay que ver antes
de morir de Schneider, S. J. El presente proyecto tiene como objetivo facilitar el
seguimiento de esta lista para poder gestionar de forma cmoda las pelculas ya vistas
y poder consultar informacin de todas ellas de una forma sencilla y cmoda.

Para tal fin se pretende realizar una aplicacin para el sistema iOS (en principio slo
para iPhone) que permita el uso de servicios facilitados por terceros para realizar el
seguimiento de esta lista, p.ej. webs como Trakt.tv, gomiso.com o getglue.com, y para
la consulta de informacin, p.ej. pginas de referencia como Wikipedia, IMDb o
RottenTomatoes. A la hora de elegir algunos de ellos ser necesario valorar tanto la
estabilidad en su uso por parte del usuario como las herramientas facilitadas para su
integracin.

Aunque hoy es extrao disponer de un iPhone sin una conexin a datos, tampoco se
puede descuidar ofrecer una parte del contenido de forma local. De esta forma se
solventa el caso de que el usuario no tenga acceso a una o no quiera utilizar estos
servicios.

2.3 Justificacin del proyecto / Antecedentes

El alumno comenz con el estudio sobre el desarrollo de aplicaciones mviles a raz


de unas prcticas de empresa en el marco de la UR. De igual forma el proyecto final
de carrera para la titulacin de Ingeniera Tcnica de Informtica de Gestin consisti
en el desarrollo de una aplicacin iOS.

Con este conocimiento adquirido se plantea este campo como opcin profesional, para
ello se hace necesario ampliar dicho conocimiento y publicar una aplicacin en la App
Store con el fin de facilitar la obtencin de un puesto laboral.

A la hora de elegir un proyecto parece clara por tanto la eleccin de esta tecnologa.
Despus no hizo falta ms que solventar una necesidad personal, la lectura del libro

12
incita a completar el visionado de toda la lista con lo que se hace necesaria una
herramienta que facilite su seguimiento.

2.4 Alcance del proyecto

El alcance del proyecto comprende una aplicacin iPhone lo ms madura posible para
su posterior inclusin en la tienda de aplicaciones de Apple, App Store.

2.5 Plan de direccin del alcance

El alcance del proyecto estar siempre bajo la supervisin del director del proyecto y
podr cambiar a causa del volumen de funcionalidades integradas en la aplicacin.

2.6 Entregables del proyecto

Documento de objetivos del proyecto (DOP).


Memoria del proyecto (incluye el DOP).
Cdigo del proyecto.
Producto final: Aplicacin iPhone.

2.7 Personal implicado en el desarrollo del proyecto

Director del proyecto en la Universidad de La Rioja, D. Eloy Javier Mata Sots.


Proyectante, D. Ramn M Carnero Rojo.

2.8 Identificacin de riesgos y planes de accin

Este proyecto sufre los riesgos habituales en todo trabajo fin de grado como
estimaciones incorrectas, errores en el diseo, dificultades en el uso de apis de
terceras empresas, ausencia del proyectante por razones justificadas, ausencia del
Director del proyecto y prdidas de informacin.

Afortunadamente las soluciones son igualmente conocidas. Muchos de ellas se


solucionan con una buena comunicacin con el Director del proyecto, una mayor
dedicacin a la formacin y una re planificacin de las tareas con un aumento de
horas si fuera necesario.

2.9 Planificacin del proyecto


2.9.1 Ciclo de vida

Para este proyecto se dispone de un alcance claro pero las funcionalidades que se
pueden incorporar son prcticamente infinitas. Afortunadamente se dispone de un
nmero de horas acotado (aproximadamente 300 horas) que van a facilitar la
planificacin del mismo.

13
Se plantea por tanto un ciclo de vida iterativo incremental. En cada iteracin se
conseguir mejorar la calidad del producto y se incrementar la funcionalidad del
mismo. De tal forma que al finalizar cada una de ella se dispondr de un producto
plenamente funcional.

A s mismo se utilizarn algunos elementos de la gestin gil de proyectos que casan


perfectamente con este ciclo de desarrollo, como son los sprints, tablero Kanban, de
Scrum, pero sin toda la liturgia que conlleva al ser un equipo de una persona.

2.9.2 Estructura de descomposicin del proyecto (WBS) (EDT)

Ilustracin 1 Estructura de descomposicin del proyecto

2.9.3 Listado de tareas del proyecto

2.9.3.1 Gestin del proyecto

Conjunto de tareas de planificacin y seguimiento del proyecto, as como la


generacin de la memoria y defensa.

2.9.3.2 Formacin

Adquirir conocimiento tanto en las nuevas mejoras en el uso de la plataforma (iOS)


como en la seleccin y configuracin de un controlador de versiones.

2.9.3.3 Anlisis

14
Se har un estudio de los requisitos de la aplicacin y su viabilidad en el dispositivo.
As mismo se realizarn lo diagramas necesarios para tener una visin ms completa
y clara del flujo de la informacin, el uso de objetos y el paso de mensajes. Todo
desde la perspectiva de la metodologa gil, documentacin como una ayuda, no como
un fin.

2.9.3.4 Diseo

Se generarn prototipos de las interfaces grficas de usuario mediante Interface


Builder, parte del entorno de desarrollo integrado (IDE) Xcode, u otras herramientas
similares, y se irn refinando hasta conseguir alcanzar un diseo ptimo.

2.9.3.5 Construccin

Una vez definidos los interfaces y la capa de presentacin se proceder a completar la


construccin del resto de la aplicacin.

2.9.3.6 Pruebas

Pruebas para asegurar el correcto funcionamiento de la aplicacin, tanto formal como


funcional, prestando un especial cuidado a la usabilidad.

2.9.4 Calendario previsto de actividades (Diagrama de Gantt)

Se utilizar el programa Microsoft Project para crear un Diagrama de Gantt en el que


reflejar la duracin de las tareas.

Los das asignados son das hbiles, se han eliminado los das festivos y fines de
semana del calendario de trabajo. Cada da contabilizar como cinco horas de trabajo
realizadas en la jornada matinal, dejando las tardes y fines de semana libres de carga
pero disponibles en caso de aparicin de retrasos. Se han marcado diez hitos en la
finalizacin de tareas clave para tener referencias claras del ritmo del proyecto.

Se han estimado las horas de los grupos de tareas eliminando la tarea continua 1.3.1
Creacin memoria y evitando el clculo detallado por los das solapados, para hacerlo
ms aproximado.

Se han simplificado las tareas de la Etapa de iteracin entendiendo que son muy
parecidas a las de la Etapa de inicializacin pero dependern, como las horas
estimadas, de las funcionalidades que se incorporen en cada una de las iteraciones.

15
Ilustracin 2 Diagrama de Gantt semanal con grupos de tareas plegados

Ilustracin 3 Calendario de tareas

16
2.10 Glosario

Apple: Empresa multinacional estadounidense que disea y produce equipos


electrnicos y software. Entre los productos de hardware ms conocidos se cuenta
con equipos Macintosh, el iPod, el iPhone y el iPad. Entre el software de Apple se
encuentran el sistema operativo Mac OS X y el sistema operativo iOS.
Diagrama de Gantt: Es una popular herramienta grfica bsica en la gestin de
proyectos de todo tipo, con la finalidad de representar las diferentes fases, tareas y
actividades programadas como parte de un proyecto o para mostrar una lnea de
tiempo en las diferentes actividades haciendo el mtodo ms eficiente.
EDT (Estructura de Descomposicin de Trabajo): En gestin de proyectos es
una descomposicin jerrquica orientada al entregable, del trabajo a ser ejecutado
por el equipo de proyecto, para cumplir con los objetivos de ste y crear los
entregables requeridos, con cada nivel descendente de la EDT representando una
definicin con un detalle incrementado del trabajo del proyecto. La EDT es una
herramienta fundamental en la gestin de proyectos.
Interface Builder: Es una herramienta grfica para la creacin de interfaces de
usuario.
iOS: Sistema operativo mvil originalmente desarrollado para el iPhone siendo
despus usado en ms dispositivos como el iPod, iPad y Apple TV. Es un software
propietario derivado de Unix y la compaa no permite la instalacin en hardware
de terceros.
iPhone (Smartphone): Es una familia de telfonos inteligentes multimedia con
conexin a Internet, pantalla tctil capacitiva y escasos botones fsicos. La
caracterstica ms relevante para el proyecto es su LCD capacitiva de 3,5.
Microsoft Visio: Es un software de dibujo vectorial para Microsoft Windows. Gran
herramienta para crear diagramas de flujo de forma visual y con un resultado
profesional.
Scrum: Es un marco de trabajo para la gestin y desarrollo de software basada en
un proceso iterativo e incremental utilizado comnmente en entornos basados en
el desarrollo gil de software.
Xcode: Es el entorno de desarrollo integrado (IDE, en sus siglas en ingls) de
Apple Inc. y se suministra gratuitamente junto con Mac OS X.

17
3 Etapa de inicializacin
3.1 Introduccin

Despus de realizar el DOP y presentrselo al director de proyecto ocurrieron varios


sucesos que retrasaron ms de un mes el comienzo de la etapa de inicializacin.
Varias solicitudes de becas y entrevistas hicieron desviar mi atencin y consumir el
tiempo reservado para evitar imprevistos.
En esos momentos mi situacin cambi, pas a trabajar a media jornada, con lo que
ya no dispona de ese medio da extra diario y sospechaba que algunos das ni el
medio da asignado al proyecto.
Adems esos das me hicieron replantearme aspectos fundamentales del proyecto.
Quera hacer un clon del proyecto realizado el ao pasado para el PFC de ITIG o
quera profundizar en el desarrollo gil y la plataforma iOS?
Saba que tendra que habilitar como das de trabajo algunas fiestas y fines de semana
pero pens que mereca la pena aprovechar la oportunidad de seguir ampliando mi
conocimiento.
Por esta razn el diagrama de Gantt presentado anteriormente pierde mucho de su
sentido, prcticamente slo conservndolo para las horas dedicadas a cada sprint y a
la gestin del proyecto.
Salen del proyecto casos de uso y tableros Kanban y entran historias de usuario y un
Scrum taskboard con un grfico burndown. Salen accesos directos a SQLite y entra
una abstraccin a la persistencia con Core Data. Salen componentes bsicos con
aspectos estndar y entran componentes personalizados. Incluso puede que
rompamos alguna convencin de estilo de Apple, o no.

3.2 Anlisis del proyecto

3.2.1 Especificacin de requisitos

3.2.1.1 Requisitos no funcionales

i. Plataforma: La aplicacin funcionar sobre el sistema operativo iOS.


ii. Distribucin: La aplicacin se distribuir mediante la plataforma oficial de
Apple, App Store.
iii. Sencillez y usabilidad: Eliminacin de todos los controles y funcionalidades
redundantes que no aporten ninguna ventaja real para el usuario.
iv. Usuarios: La aplicacin slo ser operada por un usuario simultneamente
(monousuario).
v. Conectividad: Para el funcionamiento bsico de la aplicacin no ser
necesaria una conexin a internet. Siendo obligatoria para servicios
suministrados por terceras compaas.

3.2.1.2 Requisitos funcionales

Se lleva a cabo una brainstorming para ampliar la funcionalidad principal, poder


registrar las pelculas ya visionadas. Se incorporan las mejores ideas registradas

18
aunque no todas sern finalmente desarrolladas. En esta fase se har una pre-
estimacin que ser refinada en la fase de iteracin correspondiente.

1. Poder recorrer la lista de pelculas para sealar las pelculas que ya he visto.
2. Consultar informacin relativa a la pelcula como director, actor, argumento, gnero...
3. Consultar fcilmente las pelculas del mismo director, actor
4. Ver la influencia de unas pelculas en otras para poder seleccionar mejor qu ver.
5. Poder ver los premios que ha ganado una pelcula.
6. Que me sugiera una pelcula como la ms premiada o mejor valorada...
7. Que me sugiera una pelcula aleatoria.
8. Poder ver el nmero de veces que he visto una pelcula.
9. Poder hacer anotaciones en las pelculas.
10. Poder ver la fecha en la que visto una pelcula.
11. Poder enlazar mi cuenta de Trakt.tv, Miso o GetGlue a la aplicacin.
12. Poder consultar las pelculas en sitios webs especializados como IMDB, Wikipedia,
Rotten Tomatoes
13. Poder comentar que he visto una pelcula en redes sociales como Twitter, Facebook,
14. Poder anotar citas en mi agenda para planificarme ver una pelcula.
15. Que la aplicacin me incentive ver pelculas como poder bajarme un politono de la
pelcula marcada o nuevas imgenes.
16. Ver el porcentaje/nmero de pelculas que ya he visto y las que me quedan por ver.
17. Que me haga un planificacin de cuntas pelculas tengo que ver en un determinado
tiempo para verlas todas.
18. Poder marcar mis preferencias de gnero, director
19. Que tenga un tutorial sencillo para conocer qu puedo hacer en la aplicacin.
20. Que me cambie el fondo de pantalla con la cartula de la pelcula que tengo planeado
ver para recordrmelo.
21. Poder valorar las pelculas as como marcar mis favoritas.
22. Poder ordenar la lista de pelculas segn mis preferencias.
23. Poder ordenar la lista como quiera.
24. Poder sugerir pelculas a mis amigos.
25. Poder aadir pelculas a la lista.
26. Poder compartir la lista.
27. Poder utilizar el programa en ingls y en espaol.
28. Poder ver estadsticas de las horas que he estado viendo pelculas, cundo...
29. Poder jugar al trivial con la informacin de las pelculas.
30. Poder ver los trailers de las pelculas.
31. Poder utilizar la aplicacin sin acceso a internet.

3.2.2 Pila de producto

Se crean pequeas historias de usuario con las funcionalidades obtenidas, se realizar


una estimacin, una descripcin en alto nivel de cmo se demostrar la historia y se
agruparn segn su prioridad por el mtodo MoSCoW.

19
Con este mtodo se consigue percibir la prioridad de una forma ms clara, agregando
ms informacin que las opciones habituales alta, media y baja.

Must: debe incluirse, imprescindible. La funcionalidad mnima que tiene que tener el
producto antes de ser lanzado.
Should: debera incluirse, importante. No es crtica y se podra pasar sin ella.
Could: podra incluirse, interesante. Podra realizarse si no consume muchos recursos,
las primeras en descartarse por falta de tiempo.
Wont: no se incluir, opcional. No se descarta del todo, no se elimina de la pila para
evitar reintroducirla.

Estas pequeas historias de usuario indicarn el qu, no el cmo. No suelen ni deben


tener un detalle tal alto como una especificacin de un requisito ya que su objetivo es,
entre otros, lograr la interaccin del cliente con el equipo.

Por eso una parte importante de la historia de usuario es toda esa conversacin con el
cliente que crea un contexto y ayuda a despejar dudas sobre los objetivos reales. Esas
conversaciones tienen que desembocar en una descripcin corta con un lenguaje
sencillo y unas pruebas de aceptacin igualmente sencillas. A estas historias de
usuario se les aadir un cdigo para facilitar su identificacin

Toda historia de usuario est incompleta sin una estimacin y una prioridad. Aspectos
muy importantes porque implican reflexionar sobre su objetivo y aspectos sobre su
desarrollo.

Para este primer sprint no se realizarn clculos de velocidad para seleccionar las
historias, ni se podr utilizar el rol del Dueo del Producto por ser un equipo de una
sola persona. As mismo tampoco se pueden utilizar tcnicas de estimacin como del
estilo del plannig poker. Por supuesto el rol del Scrum Master tambin desaparece.

Se seleccionarn las cinco primeras historias por su importancia, cubriendo la


funcionalidad bsica de la aplicacin y se estimar el tiempo condicionado por el
tiempo planificado para el primer sprint y experiencia previa. Se analizar el resultado
obtenido al finalizar el mismo y se tomar como una primera aproximacin para las
siguientes estimaciones.

La estimacin de las tareas va a coincidir con los puntos de historia, por comodidad se
tomar un punto de historia como una hora de tiempo. El sprint va a ser de tres
semanas, cinco das por semana, cinco horas por da. Se dispone de 75 puntos de
historia.

Tambin se establecer una primera prioridad a todas las historias aunque no ser
definitiva, la pila de producto es algo vivo que puede cambiar a lo largo del desarrollo
del proyecto.

Se elige realizar un cuadro en vez de tarjetas fsicas por comodidad.

20
Historias de usuario:

ID Descripcin Prioridad Estimacin Cmo probarlo Notas


1 Recorrer la lista de M 30 Iniciar, moverse por la lista, seleccionar una pelcula, Tenemos que tener
pelculas para marcar las marcarla, salir, volver a entrar y comprobar que sigue en cuenta la 31
vistas marcada.
2 Consultar informacin M 12 Iniciar, seleccionar una pelcula, comprobar que se
relativa a la pelcula muestra informacin correspondiente a esa pelcula.
12 Consultar webs de M 8 Iniciar, seleccionar una pelcula, seleccionar consulta,
informacin comprobar que se muestra correctamente.
16 Ver el nmero de pelculas M 5 Iniciar, consultar nmero de pelculas vistas, marcar una
vistas pelcula como vista y comprobar que se ha incrementado
este valor.
31 Poder utilizar la aplicacin M 20 Iniciar sin conexin, comprobar las historias 1, 2 y 16.
Informacin sobre
sin acceso a internet pelculas reducida
3 Consultar pelculas del S Iniciar, consultar una pelcula, consultar informacin Acceso a las
mismo director, actor relacionada, comprobar que es correcta. relaciones desde
varios puntos de la
aplicacin.
11 Enlazar la aplicacin con S
webs de tracking
19 Tutorial sencillo para S Iniciar, ver la aparicin del tutorial. O acceder desde la Muy sencillo.
conocer la aplicacin configuracin si no es el primer inicio.
27 Utilizar el programa en S Iniciar, entrar a la configuracin, cambiar el idioma y
ingls y en espaol comprobar el cambio.
28 Estadsticas sobre las S Iniciar, consultar las estadsticas, marcar una pelcula,
pelculas vistas volver a consultar las estadsticas para comprobar el
cambio.

21
4 Ver la influencia de unas C Iniciar, seleccionar una pelcula, consultar la informacin.
pelculas en otras
5 Ver los premios de las C Iniciar, seleccionar una pelcula, consultar la
pelculas informacin.
6 Sugerir pelculas por sus C Iniciar, acceder las sugerencias, cambiar valoraciones,
premios, valoraciones comprobar que cambian las sugerencias.
7 Sugerir pelcula aleatoria C Iniciar, pedir sugerencia, volver a pedir sugerencia varias
veces para comprobar que es diferente.
8 Ver el nmero de C Iniciar, consultar el nmero de visionados de una
visionados de una pelcula pelcula, volver a marcarla como vista y comprobar que
se ha incrementado este valor.
9 Hacer anotaciones en las C Iniciar, seleccionar una pelcula, realizar una anotacin,
fichas de las pelculas salir, volver a entrar y comprobar que sigue la anotacin.
10 Consultar la fecha de C Iniciar, seleccionar una pelcula, marcarla, salir, volver a
visionado entrar y comprobar la fecha de visionado.
13 Conectar con redes C Iniciar, seleccionar una pelcula, lanzar un mensaje a Primero Twitter.
sociales una red social, comprobar por web que ha sido correcto.
14 Anotar citas en la agenda C Iniciar, seleccionar una pelcula, crear una cita,
para planificar los comprobar que en el calendario se ha creado la cita.
visionados
15 Incentivar el visionado de C Iniciar, seleccionar una pelcula, marcarla como vista,
pelculas con recompensas comprobar que aparece/se reproduce algo.
18 Marcar preferencias de C Iniciar, seleccionar como preferidas varias pelculas del
gustos mismo gnero, comprobar si cambian las sugerencias.
21 Valorar y marcar pelculas C Iniciar, valorar/marcar pelculas, comprobar que se
como favoritas aaden en la categora de favoritas.
22 Ordenar la lista segn las C Iniciar, cambiar preferencias de algunas pelculas,
preferencias comprobar que cambia el orden.

22
30 Ver trailers C Iniciar, seleccionar una pelcula, ver el triler, comprobar Youtube
que es correcto.
17 Planificacin automtica de W Iniciar, ejecutar planificacin, volver a ejecutarla con la
pelculas segn el tiempo mitad del tiempo, comprobar que es correcto.
asignado
20 Cambio del fondo de W Iniciar, seleccionar una pelcula como prevista, salir, Posible
pantalla del mvil con la comprobar que el fondo se ha modificado. tcnicamente?
pelcula a ver
23 Ordenar libremente la lista W Iniciar, cambiar las pelculas de orden, comprobar que es
correcto.
24 Sugerir pelculas a amigos W Iniciar, seleccionar una pelcula, mandarme una
sugerencia, comprobar que es correcto.
25 Aadir pelculas a la lista W Iniciar, aadir una pelcula, salir, volver a entrar y
comprobar que existe en la lista.
26 Compartir la lista W Iniciar, compartir la lista, la comprobacin depende del
mtodo de comparticin.
29 Trivial sobre las pelculas W Iniciar, jugar, comprobar el funcionamiento y las
soluciones.

23
3.2.3 Arquitectura software, Modelo-Vista-Controlador

Antes de seguir avanzando en el proyecto es necesario reflexionar sobre la


arquitectura del software y su influencia en el diseo y desarrollo de la aplicacin.

El patrn Modelo-Vista-Controlador (MVC) y sus variantes han estado dando vueltas


desde los aos 80. Este patrn es fundamental para muchos mecanismos y
tecnologas de Cocoa Touch, ya que gran parte de las tecnologas que nos brinda este
framework estn construidas siguiendo este patrn y requieren a su vez que nuestras
aplicaciones y objetos sigan las mismas reglas.

Los objetos en MVC son segregados en uno de los tres roles de una aplicacin:
modelo, vista o controlador. Adems este patrn define la forma de comunicacin
entre ellos a travs de las fronteras abstractas de sus roles. Un gran paso en el diseo
de una aplicacin es conocer en cul de estos tres grupos encaja cada uno de
nuestros objetos y clases. Una vez aclarado este aspecto debera ser sencillo usar las
tecnologas puestas a nuestra disposicin por el framework Cocoa Touch.

Los objetos del Modelo mantienen los datos de una aplicacin as como define la
lgica que los manipula. Son reutilizables porque representan un conocimiento que es
aplicable para un problema especfico.

Una vez que cualquier dato que contiene informacin persistente de la aplicacin es
cargado, debera ser colocado en los objetos del modelo. En una situacin ideal un
objeto de modelo no debera tener ninguna asociacin explcita con la interfaz de
usuario utilizada para presentarlo y editarlo.

Un objeto de la Vista deber ser capaz de responder a las acciones del usuario y
conocer cmo representarse en pantalla. Un objeto de la Vista suele representar la
informacin obtenida de los objetos del Modelo de la aplicacin.

A pesar de la estrecha relacin entre un objeto de la Vista y un objeto del Modelo no


deberan estar acoplados en una aplicacin MVC. A excepcin de por razones de
rendimiento, una Vista no debera ser usada para almacenar los datos que est
mostrando.

Estos objetos de la Vista pueden trabajar con diferentes objetos del Modelo con lo que
son reutilizables dentro de la aplicacin e incluso para futuras aplicaciones.

Un objeto Controlador acta como intermediario entre los objetos Vista y Modelo.
Establece el canal de comunicacin entre la informacin de la que puede disponer la
Vista y la respuesta de las acciones aplicadas al Modelo. Adems pueden realizar
otras operaciones dentro de la aplicacin como mantener el ciclo de vida de otros
objetos, realizar configuraciones y coordinar tareas de la aplicacin.

Esta capa es la menos reutilizable de las tres, depender mucho del diseo necesario
para la aplicacin.

24
Una vez aclarados los aspectos bsicos del patrn de diseo MVC conviene conocer
que contiene a su vez muchos, relativamente primitivos, patrones de diseo
dependiendo de la versin de MVC utilizada.

La versin de Cocoa Touch comprende los patrones Composite, Command, Mediator,


Strategy y Observer. No entraremos en sus definiciones particulares ya que no es
objeto del presente estudio.

S que conviene resaltar lo explicado anteriormente, en la implementacin del MVC


usada por Apple en Cocoa no se permite que la Vista tenga acceso directo al Modelo,
dejando que el controlador enve los datos del Modelo a la Vista. Esta variacin del
MVC ms puro suele citarse como Modelo-Interface-Control.

Un ejemplo sencillo del flujo normal de la aplicacin es:

El usuario interacta con la Vista, la cual enva las acciones al Controlador.


El controlador actualiza el Modelo basado en las acciones del usuario.
El Modelo notifica al Controlador las actualizaciones.
El Controlador actualiza la presentacin de la Vista.

Las ventajas del uso este patrn son:

Aislamiento por la separacin de las capas.


Sencillez para crear distintos tipos de datos o usar distintos protocolos.
Posibilidad de utilizacin de distintas capas de persistencia.
Reutilizacin de componentes.
Simplicidad de mantenimiento.

Con todo esto en mente se ve claramente el paso de mensajes necesario entre las
distintas capas a lo largo de la aplicacin.
En el caso particular de nuestra aplicacin no ser necesario realizar diagramas de
actividad o secuencia para modelar esta secuencia de acciones y condiciones dentro
de las cinco primeras historias de usuario. Las acciones a realizar son sencillas, no
comprendiendo modificacin o insercin en los datos de las pelculas.

3.2.4 Justificacin de tecnologas utilizadas

Para realizar el diseo de la interfaz se evita buscar entre las abundantes


herramientas digitales, incluido el Interface Builder del XCode, y se utilizar papel y
una regla con plantilla. Por experiencia, el ritmo de diseo se agiliza, sobre todo si se
van a utilizar componentes personalizados.

Para construir los dems diagramas se utilizar el Microsoft Visio por tener experiencia
en su manejo.

25
Como control de versiones se utilizar el propio servidor Git incorporado en el Interface
Builder conectado a un repositorio privado en Bitbucket.org.

3.3 Primer Sprint, Sprint de inicializacin

Una vez que el Dueo del Producto, junto con el Cliente, ha priorizado la Pila de
Producto es el Equipo el que decide el nmero de historias de usuario a completar
durante el primer sprint. El equipo de desarrollo procede a su descomposicin en
tareas y estimacin de cada una de ellas. Este sprint quedar cerrado y ya no se
podr modificar, salvo sucesos excepcionales, hasta su finalizacin. As mismo el
equipo tiene la potestad de decidir el orden de ejecucin de las tareas durante el
sprint.

3.3.1 Descomposicin en tareas

Recorrer la lista de pelculas para marcar las vistas (30 h)

1.1 Diseo de la capa de Vista (7 h)


1.2 Diagrama de navegabilidad de la aplicacin (3 h)
1.3 Diseo de la capa de Modelo (6 h)
1.4 Construccin de la capa de Vista (7 h)
1.5 Construccin de la capa de Modelo (7 h)

Consultar informacin relativa a la pelcula (12 h)

2.1 Diseo de la vista de la pelcula (6 h)


2.2 Construccin de la vista de la pelcula (6 h)

Consultar webs de informacin (8 h)

12.1 Estudio de las webs a utilizar (1.5 h)


12.2 Integracin en el diseo (2 h)
12.3 Construccin de la consulta de la web (3.5 h)

Ver el nmero de pelculas vistas (5 h)

16.1 Diseo de la vista del nmero de pelculas vistas (2.5 h)


16.2 Construccin de la vista del nmero de pelculas vistas (2.5 h)

Poder utilizar la aplicacin sin acceso a internet (20 h)

31.1 Diagrama de ER (4 h)
31.2 Esquema lgico (4 h)
31.3 Normalizacin BD (3 h)
31.4 Construccin BD (4 h)
31.5 Integracin con la capa de Modelo (5 h)

26
Todo esto es plasmado en un Taskboard junto a un diagrama burndown. Estas
herramientas facilitarn el seguimiento del desarrollo durante el sprint.
Su funcionamiento es muy sencillo, se disponen cuatro columnas (se pueden aadir
las que se necesiten), Historias de usuario, Pendiente, En curso y Terminado y carriles
para cada historia. Al inicio del sprint se colocarn todas las Historias de usuario en su
carril correspondiente y todas sus tareas en la columna Pendiente. En las reuniones
diarias del Sprint (Scrum diarios) se actualiza el tablero, pasando a la columna
Terminado las tareas finalizadas, y el grfico burndown. Despus se deciden las
tareas a realizar en ese da, movindolas a la columna En curso.

Ilustracin 4 Tablero Taskboard

El grfico burndown refleja el trabajo restante a realizar en ese sprint. En el eje vertical
se establecen los puntos de historia del sprint y en el eje horizontal los das
disponibles (se eliminan los fines de semana y festivos para evitar confusin en el
diagrama). Se traza una diagonal entre los puntos mximos de los ejes que servir de
gua en el transcurso del sprint.
Si el progreso est por debajo de la diagonal la velocidad del sprint es alta, indica que
es factible terminar todas las historias al finalizar el sprint. Si est por encima refleja
todo lo contrario. De un rpido vistazo puede verse el progreso y buscar los motivos
del mismo. Incorrecta estimacin de las tareas, mala eleccin en el orden de
ejecucin, aparicin de tareas no planificadas?

27
3.3.2 Desarrollo del Sprint

1.1 Diseo de la capa de vista de la lista de pelculas


2.1 Diseo de la vista de la pelcula
16.1 Diseo de la vista del nmero de pelculas vistas

Se comienza el sprint con estas tres tareas. El estudio de varias aplicaciones para
mviles y los sitios web como iMDB, Trakt.tv, Rotten Tomatoes y The Movie DB lleva a
conseguir el tipo de informacin que se va a ofrecer en la aplicacin.

El punto de inicio ser una seccin de Pelculas. En ella el usuario puede ver qu
pelculas ha marcado como vistas y cules no. Pudiendo marcar los nuevos visionados
de una forma sencilla.

Una vez seleccionada una pelcula nos desplazaremos a una vista en detalle de la
misma. Con informacin como el ttulo, cartel, ao de realizacin, fecha de estreno,
duracin, gnero, argumento, la gente que participa, si est vista y el nmero de
veces.

Como complemento se dispone una seccin de Celebridades similar a la de Pelculas,


en la que se encuentran los actores, directores y guionistas. Al seleccionar uno de
ellos nos desplazaremos a una vista en detalle. En ella se mostrar el nombre, foto,
fecha de nacimiento, nacionalidad, profesin y un listado de las pelculas en las que ha
trabajado.

Para poder consultar el nmero total de pelculas vistas se disea una zona de
estadsticas. En ella se pueden mostrar desde las ltimas pelculas vistas hasta el
tiempo que se ha dedicado a ello.

Para estas tres secciones se plantea realizar en sprints posteriores diferentes formas
de ordenacin que faciliten su utilizacin.

Para este planteamiento se valoran varias propuestas de diseo pero lo fundamental


es la decisin de utilizar una Tab Bar que vertebre la aplicacin. Se prev que el
comportamiento habitual del usuario sea desplazarse de una seccin a otra en busca
de informacin. De esta forma se consigue tener un acceso rpido a las secciones
Pelculas y Celebridades desde cualquier punto de la misma.

28
Ilustracin 5 Prototipado capa de la vista 1

Ilustracin 6 Prototipado capa de la vista 2

Se disean varias propuestas de celdas para las tablas de los listados de elementos,
as como la forma de seleccionar el orden de las listas. Para la seleccin del orden se
ofrece la solucin estndar de los Segmented Control aunque presentan un problema
de escalabilidad. La solucin alternativa es utilizar una pantalla modal que muestre las
opciones.

29
Como uno de los objetivos es intentar salirse un poco de las opciones clsicas, en la
fase de construccin se buscarn componentes alternativos y en caso de no
encontrarlos se implementar esta solucin.

Para realizar la accin de marcar una pelcula como vista, se dispone un botn que
ejecute la accin correspondiente. Se plantea modificar el gesto de Swipe
(deslizamiento lateral) que en la plataforma significa eliminacin por marcar como
visto. En principio no se plantea ningn inconveniente con confundir dichas acciones
porque no es posible eliminar pelculas de la lista. En caso de realizar la vista de tipo
malla con los carteles de las pelculas se podra habilitar un botn de edicin para
seleccionar las pelculas o utilizar algn gesto como un doble tap. Igual que en el caso
de la ordenacin ser estudiado en la fase de construccin. En caso de que no sea
posible utilizar gestos se utilizar el botn.

Al terminar la fase de diseo de la vista se comienza con el estudio y realizacin de la


base de datos. En ella se almacenar la informacin necesaria para poder utilizar la
aplicacin de forma offline.

31.1 Diagrama de ER
31.2 Esquema lgico
31.3 Normalizacin BD

Ilustracin 7 Anlisis y esquema base de datos

La base de datos est en forma normal de Boyce-Codd. Se plante la posibilidad de


desnormalizar la relacin entre Profesin y Persona integrndola en Persona por
medio de tres atributos booleanos, motivado por ser un nmero mximo de valores

30
pequeo y conocido, y siendo difcil que fueran a cambiar a lo largo del tiempo. Como
generalmente saldran dos nulos por tupla se decidi mantener la forma normal.

Con la base de datos completada resulta muy sencillo continuar con la capa de
Modelo.

1.3 Diseo de la capa de Modelo

Ilustracin 8 Diagrama del modelo

Una vez completado su diseo se aparca el papel para iniciar XCode por primera vez.

1.5 Construccin de la capa de Modelo


31.4 Construccin BD
31.5 Integracin con la capa de Modelo

Para abstraer la capa de persistencia se utilizar el framework Core Data. Ser el


encargado de crear los diferentes objetos del modelo sin importar si se estn utilizando
archivos binarios, SQLite (en nuestro caso) o directamente la memoria.

El alumno no tiene experiencia en el uso del mismo lo que ha conllevado un retraso


que se ve reflejado claramente en el burndown. Es ms, al conseguir la abstraccin
del sistema de persistencia se ha malgastado cierto tiempo realizando la base de
datos. Core Data crear la base de datos que estime oportuna para reflejar los
atributos y relaciones del modelo que le describamos. Incluso implementa los archivos
de las clases del modelo de forma automtica, pudiendo en este caso modificarlas
posteriormente.

31
Se crea una clase llamada CoreDataManager encargada de las operaciones relativas
al contexto. El contexto es el encargado de realizar las operaciones de los objetos y su
almacenamiento. Debe ser nico as que la clase seguir el patrn Singleton.

Ilustracin 9 Diagrama del modelo de la base de datos

Una vez terminadas estas tareas concluye la historia 31 y se contina con la historia 1.

1.4 Construccin de la capa de Vista de la lista de pelculas

En esta tarea se realiza una bsqueda de proyectos pblicos y con licencia del tipo
MIT (para poder ser utilizados sin obstculos legales) en la web GitHub. Se recopilan
una serie de ideas tanto para desplegar las listas como sus comportamientos.

Por una parte se consigue informacin a travs de varios proyectos para poder utilizar
el gesto swipe para marcar las pelculas como vistas. Adems se elige JCGridMenu
para evitar la utilizacin de segmented control o pantallas modales en el caso de
utilizar criterios de ordenacin en las listas.

Para acelerar el desarrollo se ha comenzado el proyecto utilizando un template


Master-Detail Application activando el soporte de Core Data. De esta forma se
consigue la correcta configuracin e integracin de Core Data, un Navigation
Controller encargado de la navegabilidad entre la vista de la lista de pelculas y la vista
con el detalle de las mismas y los controladores para estas dos vistas. Se extrae el
cdigo relacionado con la inicializacin y uso de Core Data de la clase AppDelegate a
una clase propia llamada CoreDataManager para facilitar la lectura de cdigo. Es
habitual sobrecargar la clase AppDelegate de cdigo por ser la clase de inicio de la
aplicacin pero es preferible evitarlo.

Adems se incorpora un Tab Bar Controller necesario para gestionar las secciones
Pelculas, Personas y Estadsticas. Una vez aadido a travs del Interface Builder, se
aade el segue (transicin entre vistas) necesario desde el Tab Bar Controller hasta el

32
Navigation Controller, se cambia el segue de inicio de la aplicacin para que apunte al
Tab Bar Controller y se modifican las jerarquas de las vistas en el AppDelegate.m.

Con esto dispuesto se crea una clase propia para personalizar la celda de la tabla de
las pelculas. Se integra el proyecto JCGridMenu y se configura el swipe a la derecha
para marcar el visionado de la pelcula.

Por ltimo se aaden algunas pelculas y se comprueba su correcto funcionamiento.

Ilustracin 10 tabla con la lista de Ilustracin 11 JCGridMenu Ilustracin 12 Swipe a la derecha


pelculas desplegado para marcar visionado

1.2 Diagrama de navegabilidad de la aplicacin

Diagrama temporal susceptible a futuros cambios dependiendo de las funcionalidades


aadidas en prximos sprints.

Ilustracin 13 Diagrama de navegabilidad de la aplicacin

33
Una vez completada la historia 1 pasamos a realizar la ltima tarea de la historia 2.

2.2 Construccin de la vista de la pelcula

Para esta vista es necesario aadir una Scroll View que permita desplegar toda la
informacin. Adems se aade una Table View agrupada para disponer las personas
que participan en la pelcula. Una vez ms se crea una clase especfica para las
celdas de esta tabla.

En una futura iteracin, cuando se aada la seccin de Personas, se establecern los


mecanismos adecuados para poder mostrar una vista en detalle de la persona
seleccionada.

Ilustracin 14 Vista del detalle de la pelcula 1 Ilustracin 15 Vista del detalle de la pelcula 2

Se da por finalizada la historia 2 desde el punto funcional, dejando para ms adelante


mejorar su diseo.

16.2 Construccin de la vista del nmero de pelculas vistas

Se despliegan grficamente varios elementos que sern necesarios en el caso de


seguir desarrollando el rea de estadsticas.

34
Ilustracin 16 Vista de las estadsticas

Como en la anterior tarea se completa la historia 16 slo desde el punto de vista


funcional al llegar al fin del sprint.

Ilustracin 17 Diagrama de la aplicacin en XCode al finalizar el primer sprint

35
Llega el final del sprint y la historia 12 ni siquiera ha sido empezada. Las historias que
no se han completado, sea cual sea su grado de desarrollo, vuelven a la Pila de
Producto. Por este motivo la historia 12 se retira del tablero y se valorar su
incorporacin para el siguiente sprint.

A lo largo del sprint se ha incorporado una nueva historia al tablero. En este caso una
historia tcnica, poblar la base de datos. Es estimada en siete horas, tiempo necesario
para crear un script que permita recopilar, de forma automtica, los datos de las
pelculas e insertarlos en la base de datos.

Ilustracin 18 Estado del burndown al trmino del primer sprint

Al finalizar el sprint se preparar una pequea demo, en este caso ser un ejemplo
sencillo de utilizacin de la aplicacin, que en ausencia de Cliente se presentar al
tutor del proyecto en la prxima reunin.

3.3.3 Retrospectiva del Sprint

Al finalizar cada sprint es necesario realizar una reunin de todo el equipo. Se


analizar el desarrollo del mismo con el objetivo de poder mejorar en los sucesivos.

Se suelen crear tres categoras y utilizar un tablero con post-its para hacerlo ms
visual y participativo.

Bien: si hiciramos el Sprint otra vez, volveramos a hacer estas cosas igual.
Mejorable: si hiciramos otra vez el Sprint, haramos estas cosas de forma diferente.
Mejoras: ideas concretas sobre cmo podemos mejorar en el futuro.

Bien:

36
La descomposicin a este nivel de detalle ha sido correcta.
La concentracin durante el desarrollo es buena. De momento no es necesario utilizar
tcnicas como Pomodoro.

Mejorable:

Hay que respetar ms los horarios, sobre todo el inicio.


Antes de disear vistas hay que conocer los proyectos que se van a integrar con las
mismas.
Ceirse ms al objetivo de la tarea en vez de aadir mejoras futuras o no solicitadas.
Consumen mucho tiempo.
Las tareas de construccin deben estimarse mejor, han sido muy subestimadas.

Mejoras:

Completar las tareas atendiendo a la funcionalidad para realizarlas lo ms rpido


posible y hacer un sprint slo para mejorar la experiencia de usuario.

3.4 Segundo Sprint

En el primer sprint se ha cubierto el objetivo bsico de la aplicacin, disponer de un


mecanismo para mostrar una lista de pelculas y poder marcarlas como vistas. En el
segundo sprint se dotar de contenido a esa lista, la posibilidad de sincronizar la
aplicacin con Trakt.tv, ampliar la informacin sobre las pelculas, localizar la
aplicacin a otro idioma y consultar estadsticas sobre el avance del usuario.

Se reduce la duracin del sprint a dos semanas, cinco das por semana, cinco horas
por da (50 puntos de historia). Se busca evitar grandes desviaciones y poder
aumentar el nmero de iteraciones.

3.4.1 Descomposicin en tareas

Se preseleccionan las historias de usuario, se priorizan, se descomponen en tareas,


se estiman y se trasladan al taskboard las historias que cubran los puntos de historia
de este sprint.

Consultar webs de informacin (8 h)

12.1 Estudio de las webs a utilizar (0.5 h)


12.2 Integracin con el diseo (1.5 h)
12.3 Construccin consulta a la web (3 h)

Consultar pelculas del mismo director, actor (10 h)

3.1 Construccin Capa Vista de lista de personas (5 h)


3.2 Construccin Capa Vista de persona (5 h)

37
Enlazar la aplicacin con webs de tracking. Trakt.tv (20 h)

11.1 Anlisis AFNetworking (2 h)


11.2 Diseo Capa Login (1h)
11.3 Construccin Capa Login (5 h)
11.4 Primera sincronizacin Trakt.tv (4 h)
11.5 Opciones Trakt.tv en Ajustes (3 h)
11.6 Marcar pelcula vista en Trakt.tv (5 h)

Poblar la base de datos (5 h)

32.1 Script Trakt.tv (5 h)

Localizacin Ingls Espaol (5 h)

27.1 Anlisis localizacin (1 h)


27.2 Construccin localizacin (4 h)

Estadsticas sobre las pelculas vistas (5 h)

28.1 Anlisis estadsticas (1 h)


28.2 Construccin estadsticas (4 h)

3.4.2 Desarrollo del Sprint

Se comienza por la historia arrastrada del sprint anterior. Se busca poder ofrecer una
mayor informacin al usuario a travs de fuentes diversas.

12.1 Estudio de las webs a utilizar

El primer criterio para la seleccin de las webs que se van a utilizar es la calidad de la
informacin disponible. El segundo es que dispongan de versin mvil para una
correcta visualizacin en el dispositivo mvil.

Por este segundo criterio quedan descartadas pginas muy interesantes como Box
Office Mojo, pgina con informacin financiera de las pelculas, o TheMovieDB, pgina
de informacin general sobre pelculas.

Son seleccionadas IMDb, referente de informacin, y Rotten Tomatoes, sobresale por


las crticas, para informacin sobre pelculas y celebridades. Por complementar an
ms tambin se selecciona Wikipedia para abundar en la informacin sobre
celebridades y Amazon para conocer la oferta disponible en las pelculas.

12.2 Integracin con el diseo

Se redistribuirn los elementos de la ficha de pelculas para introducir los accesos a


las webs tal como se haba diseado en el primer sprint. Antes de realizar cualquier
llamada web se realiza una comprobacin de la conexin del dispositivo.

Se utilizar una sola vista web que ser reutilizada para desplegar la informacin de
pelculas y celebridades. No se incluirn elementos de navegacin web, botn volver
atrs, para evitar la dispersin del usuario. De esta forma podr navegar como en una

38
web normal, avanzando a travs de enlaces, pero no podr retroceder a las pginas
anteriores, slo cerrar la vista para retornar a la ficha original.

12.3 Construccin consulta a la web

Para poder reutilizar la vista web se enva desde la vista de origen la direccin web a
mostrar mediante un segue.

En el caso de IMDb se dispone directamente del cdigo de la pelcula en nuestra base


de datos ya que es una informacin recuperada desde Trakt.tv.

Para el resto se lanzan bsquedas a Google. Aadiendo &btnI=1 al trmino de la


cadena de bsqueda se consigue que no aparezca la lista de resultados obtenidos,
sino que se cargue directamente el primer resultado.

Ilustracin 19 Vistas de las webs de informacin

3.1 Construccin Capa Vista de lista de personas


3.2 Construccin Capa Vista de persona

Ya se dispona del diseo de estas capas y el cdigo es muy similar al utilizado en las
capas de Pelculas. Por estas razones su desarrollo no ha sido complicado.

Se realizaron varias pruebas de diseo para las celdas personalizadas. La ms


atractiva pareca ser la que desplegaba una imagen de la celebridad ocupando la
totalidad del ancho de la celda. Adems se daba un estilo ms novedoso que el
habitual retrato.

El problema que se presentaba era cmo conseguir esas imgenes. Utilizando Trakt.tv
se consiguen las imgenes estilo retrato pero no se encontr otra pgina que pusiera a

39
disposicin imgenes en otro formato para su utilizacin o recopilacin de manera
automtica. Recopilarlas de forma manual queda completamente descartado. A una
media de diez personas por pelcula se necesitan ms de diez mil imgenes.

Por esta misma razn se modifica la vista de las pelculas. Abandonando el diseo
inicial por la imagen estilo cartel.

Ilustracin 20 Vista de la lista de personas Ilustracin 21 Vista del detalla de la persona

11.1 Anlisis AFNetworking

El framework de referencia para implementar comunicaciones en iOS es


AFNetworking. Ha sustituido a ASIHTTPRequest desde el momento que este ltimo no
fue actualizado a ARC (Automatic Reference Counting), una mejora para la gestin de
la memoria.

11.2 Diseo Capa Login

En un principio se pens disear un sistema de seleccin de webs de tracking para


poder utilizar varios servicios al mismo tiempo. Debido a la limitacin de tiempo y que,
por experiencia personal, al final se tiende a utilizar slo una web, se decidi utilizar
nicamente Track.tv.

Esta vista est diseada pensando en que ser la ltima vista de un tutorial, a realizar
en una futura iteracin, desplegado la primera vez que se utiliza la aplicacin.

Se utilizar el KeyChain, almacn de contraseas, del mvil para almacenar datos


sensibles como los relativos a la cuenta del usuario. Para almacenar pequeos
fragmentos de informacin relativos a las preferencias del usuario se utilizar
NSUserDefaults. Su funcionamiento es el de un diccionario persistido en una base de
datos creada y manejada por el sistema.

Todas las operaciones relativas a la interaccin con Trakt.tv sern realizadas por la
clase LoadDBTrakt.

40
11.3 Construccin Capa Login

Si el usuario introduce sus datos y selecciona la opcin de conexin, se crea una


AFJSONRequestOperation para lanzar una peticin POST con los datos del usuario
(la contrasea en sha1) a la direccin http://api.Trakt.tv/account/test/. En caso de xito
se habilita Trakt.tv en NSUserDefaults para poder habilitar servicios en otras
operaciones de la aplicacin y se almacenan los datos en el keychain (nombre de
usuario y hash de la contrasea). Si falla se muestra una aviso al usuario.

32.1 Script Trakt.tv

Esta historia de usuario fue la causante del retraso en este sprint debido a la
complejidad de utilizar varios frameworks al mismo tiempo.

Core Data crea una base de datos sqlite con los datos obtenidos mediante llamadas a
travs de AFNetworking a Trakt.tv. Esta base de datos se crea una nica vez y estar
incluida en el paquete de instalacin de la aplicacin. De esta forma el usuario
dispondr de toda la informacin sin necesidad de conexin.

Es creada mediante Core Data debido a que la base de datos sqlite que utiliza tiene
algunas peculiaridades que desaconsejan sean realizadas manualmente. Y junto a
AFNetworking se consigue realizar la insercin de informacin de forma automtica.

Las imgenes han sido descargadas del mismo modo y el nombre de los ficheros
introducidos en la base de datos. Estas imgenes sern modificadas fuera de este
script para optimizar su tamao y dimensin.

11.4 Primera sincronizacin Trakt.tv

Una vez conseguidos los datos del usuario en la pantalla de login, o ms tarde en los
ajustes, y la base de datos, se pude realizar una primera sincronizacin con Trakt.tv.

Se implementa un nuevo mtodo en la clase LoadDBTrakt que comprueba si la opcin


de Trakt.tv est activada en NSUserDefaults. En caso afirmativo se lanza una peticin
a la web para recibir las pelculas vistas, se comparan con las incluidas en la base de
datos y se actualiza la informacin.

11.5 Opciones Trakt.tv en Ajustes

El funcionamiento es anlogo al de la vista de login.

El switch permanece inactivo hasta que el usuario introduzca informacin en los dos
campos. Cuando el usuario cambia su estado a activo se lanza una comprobacin de
los datos. Si son correctos se almacenan en el keychain y se activa la opcin en
NSUserDefaults. En caso contrario se lanza un aviso al usuario.

11.6 Marcar pelcula vista en Trakt.tv

Nuevo mtodo en la clase LoadDBTrakt que lanza una peticin POST con la pelcula
(un diccionario con su identificador) y los datos del usuario a la direccin
http://api.Trakt.tv/movie/see.

Trakt.tv tiene varios estados respecto al visionado de pelculas. Checkin, watching,


scrobble y seen. En la aplicacin se utilizar seen, indicada para marcar pelculas

41
vistas sin utilizar media centers que actualicen de forma automtica lo que
reproducimos. Adems no es necesario disponer de una key de desarrollador.

Ilustracin 22 Vista de inicio Ilustracin 23 Vista de ajustes

Ilustracin 24 Diagrama de la aplicacin en XCode al finalizar el segundo sprint

27 Localizacin Ingls Espaol


28 Estadsticas sobre las pelculas vistas

Debido al retraso por la creacin del script de Trakt.tv estas dos historias de usuario no
se han podido completar. Vuelven a la Pila de Producto.

42
Ilustracin 25 Estado del burndown al trmino del segundo sprint

Se incorpora la vista de ajustes al diseo de interaccin.

Ilustracin 26 Diseo de interaccin del segundo sprint

3.4.3 Retrospectiva del Sprint

Bien:

La descomposicin de historias en tareas en fracciones menores a la duracin de una


jornada de trabajo facilita evitar retrasos prolongados.

Mejorable:

La estimacin de tareas relativas a la construccin.

43
3.5 Tercer Sprint

Una vez ms se ha utilizado la anterior semana a este sprint para redactar la memoria
del sprint completado y corregir varios bugs.
Durante la realizacin de la memoria se ha notado mucho no seguir la misma
metodologa. El no disponer de objetivos medibles diarios reduce el rendimiento.

A las dos historias heredadas del anterior sprint se aaden dos nuevas.
Sorprendentemente nuevas porque aunque se haban incorporado a los diseos no se
haban definido como historias. Una es poder discriminar las pelculas que han sido
vistas para facilitar la consulta de la lista a nivel general y la otra es poder utilizar un
buscador para facilitar la consulta a nivel particular.

3.5.1 Descomposicin en tareas

Localizacin Ingls/Espaol (5 h)

27.1 Anlisis localizacin (1 h)


27.2 Construccin localizacin (4 h)

Estadsticas sobre las pelculas vistas (5 h)

28.1 Anlisis estadsticas (1 h)


28.2 Construccin estadsticas (4 h)

Discriminar pelculas vistas/no vistas (7 h)

Cmo probarlo: se parte viendo la lista con slo los no visionados, se marca una
pelcula como vista y se comprueba que desaparece, se cambia al modo de vista de
slo visionados y se comprueba su aparicin. Repetir estas acciones para varias
pelculas.

33.1 Anlisis y diseo discriminacin (2 h)


33.2 Construccin discriminacin (5 h)

Buscador de pelculas (8 h)

Cmo probarlo: se realizan distintas bsquedas sobre pelculas que existen en la base
de datos, se comprueba su aparicin y su correcta vista en detalle.

34.1 Anlisis y diseo buscador (2 h)


34.2 Construccin buscador (6 h)

3.5.2 Desarrollo del Sprint

27.1 Anlisis localizacin


27.2 Construccin localizacin

Apple aconseja realizar la localizacin de las aplicaciones debido al inmenso mercado


global al que est abierta la App Store. Es muy sencillo y compensa sobradamente el
trabajo extra que conlleva.

44
Se puede localizar directamente el storyboard, disponiendo de uno especfico para
cada idioma. Puede ser recomendado para casos muy singulares pero realizar esto
duplica las tareas de mantenimiento. En principio slo se va a necesitar localizar textos
y su nmero es reducido, as que ni se duplicar ni es necesario apoyarse en
herramientas externas.

Se utilizar un fichero de cadenas, nombrado como Localizable.strings. Con este


fichero como referencia se crearn tantos como idiomas adicionales sern soportados
por la aplicacin. En este caso el idioma por defecto es ingls y el espaol como
idioma adicional.

Estos ficheros estn compuestos por pares, primero aparece la cadena de referencia
situada en el cdigo, despus la traduccin dependiendo de los ajustes de idioma
seleccionados de la aplicacin.

Para habilitar la localizacin se utiliza NSLocalizedString en vez de NSString. El primer


parmetro es la key, el segundo es un comentario para el traductor facilitando su
trabajo, sobre todo al utilizar herramientas que extraigan automticamente todas las
cadenas a traducir.

28.1 Anlisis estadsticas


28.2 Construccin estadsticas

Adems de mostrar el nmero total de pelculas vistas se quiere conocer la progresin


mediante el nmero de pelculas vistas por intervalos de tiempo. Se utilizar un
segmented control para consultar las pelculas que se vieron en la ltima semana,
ltimo mes, ltimo ao o todas las vistas hasta el momento. A travs de l se
establece la fecha de inicio del perodo que se quiere consultar y se configurarn
predicados en combinacin con Core Data para conseguir slo las pelculas que
entren dentro del mismo.

45
Aunque a simple vista pueda parecer que se est realizando una consulta sql
mediante Core Data, realmente son procesos independientes. Los predicados se
utilizan para evaluar expresiones regulares en cualquier clase de objeto. En este caso
lo que se est haciendo es evaluarlo en el array resultado de la peticin realizada
mediante Core Data.

33.1 Anlisis y diseo discriminacin


33.2 Construccin discriminacin

Similar a la historia anterior. En este caso en vez de utilizar un segmented control se


utilizar el men desplegable a la derecha de la vista.
Cada pelcula posee un NSSet con los visionados que le corresponden. Si ese
conjunto es nulo quiere decir que la pelcula no ha sido vista.

Conjugando este predicado con la consulta Core Data se consiguen las pelculas
apropiadas.

34.1 Anlisis y diseo buscador


34.2 Construccin buscador

46
De igual forma seguir el funcionamiento del buscador. Recogiendo la cadena
introducida por el usuario y configurando un predicado para seleccionar los ttulos que
contengan esa cadena. De manera anloga se crea el buscador para celebridades.

En este sprint se han completado todas las historias asignadas.

Ilustracin 27 Estado del burndown al trmino del tercer sprint

3.5.3 Retrospectiva del Sprint

Bien:

Las estimaciones sobre las tareas de construccin han sido algo mejores.

47
3.6 Cuarto Sprint

En este ltimo sprint se harn pequeas iteraciones sobre aspectos puntuales del
proyecto, sobre todo referentes a la interfaz grfica. Toda la funcionalidad recogida en
las historias de usuario que se ha podido incluir en la aplicacin, limitada por el
perodo de tiempo de duracin del proyecto, ya ha sido completada. Slo se aadirn
detalles muy especficos para favorecer la usabilidad y experiencia del usuario.

3.6.1 Descomposicin en tareas

Iteracin comunicacin con tracker (10 h)


35.1 Resolucin bugs en el script para la poblacin de la DB (5 h)
35.2 Refactorizacin script (5 h)

Iteracin vistas listas (5 h)


36.1 Iteracin vista pelculas (2.5 h)
36.2 Iteracin vista celebridades (2.5 h)

Iteracin vistas detalle (5 h)


37.1 Iteracin vista pelcula (2.5 h)
37.2 Iteracin vista celebridad (2.5 h)

Iteracin vista estadsticas (2.5 h)


38.1 Iteracin vista estadsticas (2.5 h)

Iteracin vista login (2.5 h)


39.1 Iteracin vista login (2.5 h)

3.6.2 Desarrollo del Sprint

35.1 Resolucin bugs en el script para la poblacin de la DB.


35.2 Refactorizacin script.

Se comienza resolviendo algunos bugs del script encargado de extraer la informacin


de Trakt.tv y crear, mediante Core Data, la capa de persistencia que usar la
aplicacin. Los principales bugs son la aparicin de mltiples tuplas vacas en la base
de datos que disminuyen mucho el rendimiento en las consultas y la creacin de
personas repetidas cuando aparecen en distintas pelculas.

El primero se ha resuelto modificando la creacin de objetos. Se creaba un objeto de


uno de los tipos de entidad dentro de un bucle en vez de una asignacin, lo que
conllevaba a una duplicidad del mismo sin informacin.

El segundo era debido a la naturaleza asncrona de las llamadas a la api web y las
consultas a la base de datos de la aplicacin. El script se inicia con un bucle que

48
genera y lanza una llamada asncrona por cada pelcula. En el momento de recibir la
informacin de la pelcula se recogen los participantes y se realiza una consulta a la
base de datos. Si ya estn almacenados se recupera la informacin para establecer la
relacin con la pelcula. En caso negativo se lanza una nueva llamada a la web para
recibir la informacin del participante. El problema radicaba en que entre la consulta
inicial a la base de datos y la consulta de la informacin a la web, otra pelcula estaba
actualizando la base de datos con informacin de ese mismo participante. Las dos
consultas iniciales haban resultado negativas en este instante de tiempo y las dos
haban pedido informacin. Al no haber una consulta posterior se creaba dos veces el
mismo participante. El mismo resultado por diferente causa se daba cuando una
misma persona participaba dos veces en la misma pelcula.

Hay varias soluciones para resolver este problema, se opt por almacenar
directamente al participante con los datos recogidos en la primera llamada y luego
completarlos con los recogidos en la segunda. Cuando una segunda pelcula realice la
comprobacin en la base de datos ya no podr ser negativa.

36.1 Iteracin vista pelculas


36.2 Iteracin vista celebridades

Se dota de sentido al botn situado en la parte superior izquierda de la vista de la lista


de pelculas. Puede ser utilizado por el usuario para desplazar la vista al inicio de la
lista.

En las dos vistas se cambia el diseo, manteniendo tres colores principales como
paleta de la aplicacin (negro, blanco y naranja) y se disea el smbolo de pelcula
vista y los smbolos de los mens desplegables.

37.1 Iteracin vista pelcula


37.2 Iteracin vista celebridad

Se entiende que la navegacin ser vertical, en profundidad. Apple facilita el


mecanismo de navegacin, apilando y desapilando vistas a medida que se avanza y
se retrocede. Para facilitar al usuario volver al punto de inicio sin atravesar todas las
vistas anteriores, se ha aadido un botn en la parte superior derecha.

38.1 Iteracin vista estadsticas


39.1 Iteracin vista login

Lamentablemente no se dispone del tiempo necesario para realizar el tutorial


introductorio a la aplicacin.

Se ha simplificado el primer diseo temporal de la vista de inicio. Para evitar


confusiones en el usuario se elimina uno de los dos botones y se discrimina el
comportamiento mediante cdigo. Si el campo de usuario est vaco es que el usuario
no quiere utilizar Trakt.tv desde el inicio.

49
Ilustracin 28 Diseo final de la aplicacin

50
Ilustracin 29 Diagrama de la aplicacin en XCode al finalizar el cuarto sprint

Ilustracin 30 Estado del burndown al trmino del cuarto sprint

51
4 Seguridad
Las peticiones a los servicios web de Trakt.tv se realizan mediante SSL ya que es
soportado por el servidor.

Dentro de la aplicacin se almacenan una serie de datos que son necesarios para el
lanzamiento de otras llamadas a los servicios web, como los datos de acceso a la
cuenta del usuario y el identificador.

En el caso de estos datos de acceso se ha optado por almacenarlos en el iOS


Keychain del dispositivo mvil ya que son datos muy sensibles. Keychain es un
mecanismo para el almacenamiento seguro de datos, que utiliza el cifrado y asla los
secretos de una aplicacin de los de otra.

Para los datos no relevantes se utiliza NSUserDefaults.

5 Pruebas
Se han realizado pruebas funcionales a lo largo del desarrollo para comprobar el
correcto funcionamiento. Haba mucho inters en realizar pruebas de usabilidad con
usuarios, algo desconocido para el proyectante, pero no ha sido posible por falta de
tiempo.

Al instalar la aplicacin en el dispositivo para realizar las ltimas pruebas aparecieron


varios alertas de reduccin de memoria en la vista de la lista de celebridades. Era
debido a que la carga de imgenes se estaba haciendo mediante la funcin del
sistema imageNamed. Esta funcin realiza un cacheo de las imgenes y no est
diseada para cambios continuos como configuraciones de celdas de listas.
Se sustituy por la funcin imageWithContentsOfFile mucho ms orientada a este
comportamiento y desaparecieron las alertas.

Para comprobar que no haba fugas de memoria (memory leaks) se utiliz la


herramienta Instruments incluida en el paquete de desarrollo XCode. Era la primera
vez que se utilizaba por lo que slo se ha comprobado de forma superficial la
inexistencia de fugas (existe una muy pequea de menos de 50KB pero ha sido
imposible aislarla) y que la memoria no creca sin control de forma ilimitada.

52
Ilustracin 31 Herramienta Instruments

6 Conclusiones
6.1 Evaluacin de objetivos

Dos eran los objetivos fundamentales del proyecto. El primero el desarrollo de una
aplicacin iPhone para gestionar una lista de pelculas. El segundo aumentar el
conocimiento personal sobre la plataforma iOS y el desarrollo de proyectos. Los dos
han sido satisfechos.

A falta de completar la base de datos y realizar tests de usabilidad o recabar opiniones


de usuarios, la aplicacin est lista para su lanzamiento en la App Store. Puede ser
una buena primera versin que sirva de base para aadir nuevas funcionalidades.

Aumentar el conocimiento en el desarrollo gil de proyectos ha sido fundamental para


poder completar el proyecto en el tiempo delimitado. Realizar la descomposicin y
estimacin en tareas ofrece un objetivo claro y medible en cada sprint. Es de gran
ayuda a la hora de enfocar el desarrollo y conocer el ritmo del proyecto.

Algo reseable es la frase tan oda en desarrollo Done is done. La definicin utilizada
para declarar una tarea como terminada es fundamental para la buena marcha de un
proyecto. En las historias de usuario definidas se prest una especial atencin a que
fueran completadas correctamente desde los puntos de vista relativos a la usabilidad y
funcionalidad. En cambio se descuid contemplar el punto de vista relativo a la
experiencia de usuario. Como resultado, utilizar la aplicacin resultaba sencillo y no
haba errores pero no era agradable ya que el aspecto grfico no era el adecuado.

53
Esto oblig a realizar un sprint que se podra haber evitado incluyendo esta
preocupacin en las estimaciones iniciales.

6.2 Revisin del DOP

Ilustracin 32 Diagrama de Gantt realizado en el DOP

Ilustracin 33 Diagrama de Gantt revisado

La planificacin del proyecto se realiz partiendo de una metodologa gil. Por tanto la
decisin de profundizar en aspectos de esta metodologa ha modificado la forma de
divisin del trabajo dentro de los sprints/iteraciones pero ha mantenido casi intacta la
estimacin inicial.

Se entenda que la realizacin de la memoria se tomaba como un continuo. Se


realizara al mismo tiempo que progresara el desarrollo pero no se asignaba un tiempo
determinado. En estos momentos es difcil realizar una valoracin de si el tiempo
sustrado de las fases originales de iteracin, corresponde con el finalmente utilizado.
Atendiendo a las horas de cada tarea me atrevo a decir que la desviacin, incluida la
reduccin de horas asignadas a las pruebas, ha sido debida a esta realizacin.
Quedando por tanto prcticamente intactas las dedicadas al desarrollo de la
aplicacin.

54
Pruebas Gestin del
3% proyecto
34%

Desarrollo
55%

Formacin
8%

Ilustracin 34 Reparto real del tiempo por tareas

6.3 Futuras mejoras

Hay muchas ideas que parecen correctas en la lista originada mediante la


brainstorming pero las primeras mejoras deberan ser completar la informacin de la
base de datos y optimizar las imgenes.

Trakt.tv ha sido un buen punto de partida para conseguir recopilar informacin de


forma rpida pero hay muchas celebridades que no tienen ms informacin que su
nombre.

Optimizar las imgenes resulta fundamental para que el tamao de la aplicacin no


exceda lo razonable. A una media de quince integrantes por cada pelcula hacen un
total de 15000 imgenes, que se doblan al tener que soportar dos resoluciones.

De las dems ideas se debera dar prioridad a las que faciliten an ms la consulta de
la lista de pelculas y su informacin. Disponer de varios tipos de lista y ver sus trailers
sera un buen paso.

Por ltimo, algn tipo de planificacin o aviso de prxima aparicin de las pelculas en
las cadenas de televisin sera muy deseable para poder completar el objetivo del uso
de esta aplicacin, ver todas las pelculas.

6.4 Conocimientos adquiridos

El salto ha sido grande ya que se han utilizado muchas herramientas y caractersticas


por primera vez.

De realizar una descomposicin en casos de uso con un seguimiento mediante un


tablero Kanban se ha pasado a una descomposicin en tareas en un tablero Scrum.
Esta descomposicin ms minuciosa ha sido la que ha obligado a realizar un esfuerzo
55
en la estimacin, propiciando la consiguiente mejora de la misma. Tambin ha
ayudado mucho la limitacin de 300 horas impuestas para el desarrollo del proyecto.
Impidiendo la posibilidad de alargar el desarrollo del proyecto.

En el punto de vista tecnolgico es donde ms se ha explorado, por ejemplo:

Aadiendo al servidor GIT local un servicio como Bitbucket.org para respaldo (aparte
de Time Machine) y consulta.
Utilizando Core Data como capa de persistencia, un nuevo framework de
comunicaciones como AFNetworking y la integracin y modificacin de proyectos
externos como JCGridMenu.
Redefiniendo gestos, localizando la aplicacin o utilizando NSUserDefaults para
almacenar informacin.
Probando otros mtodos de comunicacin entre vistas como NSNotificationCenter.
Aadiendo elementos como UISwitch, UISegmentedControl o UIScrollView.
Apoyndose en Reachability para conocer el estado de la conexin.
Utilizando herramientas como Instruments para comprobar un aspecto tan
fundamental como la gestin de memoria.

56
7 Bibliografa

Apple. Mobile Kniberg H. Scrum y


Human Interface XP desde las
Guidelines. (2013) trincheras. (2008)
ISBN: 978-1-4303-
2264-1

Conway, J. (2012). Hillegass, A.


iOS Programming: (2011). Objective-C
The Big Nerd Programming: The
Ranch Guide (3nd Big Nerd Ranch
Edition). Addison- Guide. Addison-
Wesley Wesley
Professional. Professional.
ISBN-10: ISBN-10:
0321821521 0321706285

Duckett, T. (2012). Neil, T. (2012).


Pro iOS Table Mobile Design
Views for iPhone, Pattern Gallery,
iPad and iPod Color Edition.
Touch. Apress. O'Reilly Media.
ISBN- 13: 978-1- ISBN-10:
4302-3348-0 1449336442

Privat M., Warner Wood, T. (2011).


R. (2011). Pro iOS Wow Factor:
Core Data for iOS. UX Design
Apress ISBN- 13: Techniques for
978-1-4302-3656-6 iPhone and iPad.
Apress. ISBN-10:
1430238798

57
8 Anexos

8.1 Anexo A Actas de reunin

Acta de reunin

Ttulo proyecto: 1001 pelculas que hay que ver antes de morir, aplicacin iOS
Fecha: 5 de Febrero de 2013
Lugar: Universidad de la Rioja, Edificio Vives, C/ Luis de Ulloa, S/n.
Hora inicio: 10:00
Duracin: 1 hora
Asistentes: Eloy Javier Mata Sots , Ramn M Carnero Rojo
Orden del da: Aprobacin del DOP
Documentos DOP
relacionados:

Temas tratados:
Presentacin del DOP.
Consideraciones generales sobre el Proyecto.

Conclusiones y decisiones:
DOP aprobado.

Actividades para la prxima reunin:


Realizar la pila de producto.

58
Acta de reunin

Ttulo proyecto: 1001 pelculas que hay que ver antes de morir, aplicacin iOS
Fecha: 23 de Mayo de 2013
Lugar: Universidad de la Rioja, Edificio Vives, C/ Luis de Ulloa, S/n.
Hora inicio: 17:00
Duracin: 1 hora y cuarto
Asistentes: Eloy Javier Mata Sots , Ramn M Carnero Rojo
Orden del da: Memoria
Documentos Documento con la memoria del primer sprint
relacionados:

Temas tratados:
Estado del proyecto. Demostracin de la aplicacin en desarrollo.
Aspectos de la realizacin de la memoria.
Consideraciones generales sobre el proyecto.

Conclusiones y decisiones:
El estado de desarrollo del proyecto es bueno y se prev su finalizacin en los
plazos establecidos.

El tutor enviar los comentarios sobre el documento del primer sprint.

El alumno enviar el documento del segundo sprint durante el fin de semana.

59

S-ar putea să vă placă și