Documente Academic
Documente Profesional
Documente Cultură
Ttulo
Director/es
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
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
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
7 Bibliografa ............................................................................................................. 57
8 Anexos.................................................................................................................... 58
8
ndice de ilustraciones:
9
10
1 Introduccin
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
2.2 Descripcin
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.
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.
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.
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.
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.
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.
2.9.3.2 Formacin
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
2.9.3.5 Construccin
2.9.3.6 Pruebas
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
16
2.10 Glosario
17
3 Etapa de inicializacin
3.1 Introduccin
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.
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.
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.
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.
20
Historias de usuario:
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
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.
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.
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.
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.
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.
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.
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
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.
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.
28
Ilustracin 5 Prototipado capa de la vista 1
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.
31.1 Diagrama de ER
31.2 Esquema lgico
31.3 Normalizacin BD
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.
Una vez completado su diseo se aparca el papel para iniciar XCode por primera vez.
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.
Una vez terminadas estas tareas concluye la historia 31 y se contina con la historia 1.
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.
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.
33
Una vez completada la historia 1 pasamos a realizar la ltima tarea de la historia 2.
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.
Ilustracin 14 Vista del detalle de la pelcula 1 Ilustracin 15 Vista del detalle de la pelcula 2
34
Ilustracin 16 Vista de las estadsticas
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.
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.
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:
Mejoras:
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.
37
Enlazar la aplicacin con webs de tracking. Trakt.tv (20 h)
Se comienza por la historia arrastrada del sprint anterior. Se busca poder ofrecer una
mayor informacin al usuario a travs de fuentes diversas.
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.
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.
Para poder reutilizar la vista web se enva desde la vista de origen la direccin web a
mostrar mediante un segue.
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.
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.
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.
Todas las operaciones relativas a la interaccin con Trakt.tv sern realizadas por la
clase LoadDBTrakt.
40
11.3 Construccin Capa Login
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.
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.
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.
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.
41
vistas sin utilizar media centers que actualicen de forma automtica lo que
reproducimos. Adems no es necesario disponer de una key de desarrollador.
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
Bien:
Mejorable:
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.
Localizacin Ingls/Espaol (5 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.
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.
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.
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.
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.
Conjugando este predicado con la consulta Core Data se consiguen las pelculas
apropiadas.
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.
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.
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.
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.
49
Ilustracin 28 Diseo final de la aplicacin
50
Ilustracin 29 Diagrama de la aplicacin en XCode al finalizar el 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.
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.
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.
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.
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.
54
Pruebas Gestin del
3% proyecto
34%
Desarrollo
55%
Formacin
8%
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.
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
57
8 Anexos
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.
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.
59