Desarrollo de una aplicación Android para el estudio técnico de la Bolsa española
Abstract
Grado en Ingeniería Informática
Full text
1 Escuela de Ingeniería Informática Trabajo de Fin de Grado Grado en Ingeniería Informática (Mención en Tecnologías de la Información) Desarrollo de una aplicación Android para el estudio técnico de la Bolsa Española Autor: D. Miguel González Bravo.
2 Escuela de Ingeniería Informática Trabajo de Fin de Grado Grado en Ingeniería Informática (Mención en Tecnologías de la Información) Desarrollo de una aplicación Android para el estudio técnico de la Bolsa española Autor: D. Miguel González Bravo. Tutor: Joaquín Adiego Rodríguez Co-tutor: Julio Herrera Revuelta
3 Agradecimientos A mi familia y colegas. A la Escuela de Ingeniería Informática de Valladolid y sus profesores.
4 Resumen Este es un trabajo de fin de grado con el objetivo de desarrollar una aplicación que permita a los usuarios solicitantes de la misma, provenientes de la Facultad de Ciencias Económicas y Empresariales, obtener los resultados de una serie de estudios que se han acordado previamente, aplicados sobre los resultados obtenidos del IBEX 35 durante el año 2018, con el fin de que la aplicación indique cuándo se debió comprar y vender durante dicho año, en base a los resultados de dichos estudios. Para la realización de esta aplicación, se pretende conseguir datos del IBEX 35 desde una fuente ajena a la misma, tratando y almacenando estos datos en una base de datos local de la aplicación, para que el usuario pueda realizar posteriormente un estudio de los datos sin necesidad de conexión a internet. Por otro lado, para exponer dicho estudio al usuario, estos datos deben disponerse en la pantalla del dispositivo, de tal manera que, para una empresa seleccionada, aparezcan los días en los que se debió comprar y vender, junto a su valor de la Bolsa dicho día. Por último, la aplicación debe ofrecer la posibilidad de representar estos datos gráficamente.
5 Abtract This is a final degree project with the purpose of getting to develop an application that allow users, from the “Facultad de Ciencias Económicas y Empresariales”, to obtain the results of studies that have been previously agreed upon, applied to the results obtained from “IBEX 35” during 2018, so that the application indicates when someone had to buy and sell along that year, based on the results of these studies. To develop this applicattion, the data must be got from an external source. This data are processed and stored in the aplicattions local database, so then, the user can carry out a study of the data without requirement an internet connection. On the other hand, to show this study to the user, these data have to be be available on the screen of the device, so, for a selected company, the days in which it had to buy and sell must be shown, with the Stocks value of that day. Finally, the application should offer the possibility to show this data graphically.
6 Lista de imágenes Ilustración 1: Esquema de la supervisión del mercado continuo por la CNMV.......................... 12 Ilustración 2: Datos fundamentales ........................................................................................ 21 Ilustración 3: Gráfico de barras ............................................................................................... 21 Ilustración 4: Gráfico de velas ................................................................................................. 22 Ilustración 5: Tipos de tendencias ........................................................................................... 23 Ilustración 6: Resultados del cruce de medias en la aplicación ................................................. 25 Ilustración 7: Resultados del momento en la aplicación........................................................... 28 Ilustración 8: Página web Invertia sobre el IBEX 35 .................................................................. 30 Ilustración 9: Archivo Excel resultado de la petición ................................................................ 31 Ilustración 10: Diferentes dispositivos móviles actuales .......................................................... 32 Ilustración 11: Logo de Android .............................................................................................. 33 Ilustración 12: Apariencia del IDE Android Studio .................................................................... 34 Ilustración 13: Logo de Java .................................................................................................... 35 Ilustración 14: Logo de Excel (2019) ....................................................................................... 36 Ilustración 15: Logo de la compañía Apache ........................................................................... 37 Ilustración 16: Logo de SQLite ................................................................................................ 39 Ilustración 17: Logos de Microsoft Office (2016) y Visual Paradigm respectivamente .............. 39 Ilustración 18: Diagrama de Casos de Uso ............................................................................... 54 Ilustración 19: Realización de CU – Análisis: Consultar histórico .............................................. 57 Ilustración 20: Realización de CU – Análisis: Consultar cruce de medias .................................. 58 Ilustración 21: Realización de CU – Análisis: Consultar momento ............................................ 59 Ilustración 22: Realización de CU – Análisis: Consultar gráfico ................................................. 60 Ilustración 23: Típica estructura del patrón Capas ................................................................... 62 Ilustración 24: Combinación de patrones MVC y Capas .......................................................... 63 Ilustración 25: Estructura del patrón DAO .............................................................................. 64 Ilustración 26: Caso de Uso: Consultar histórico (Diseño) ........................................................ 65 Ilustración 27: Fragmento combinado : Petición de datos ....................................................... 66 Ilustración 28: Realización de CU – Diseño: Consultar cruce de medias ................................... 67 Ilustración 29: Realización de CU – Diseño: Consultar momento ............................................. 68 Ilustración 30: Realización de CU – Diseño: Consultar gráfico (extends Consultar Momento)... 69 Ilustración 31: DCD - Consultar Grafico (extends Momento) .................................................... 70 Ilustración 32: Diagrama Entidad-Relación de la BD................................................................. 72 Ilustración 33: Instalación ....................................................................................................... 84 Ilustración 34: logo de la aplicación IBEXStudio ....................................................................... 85 Ilustración 35: Ver histórico .................................................................................................... 85 Ilustración 36: Consultar resultados del cruce de medias ........................................................ 86 Ilustración 37: Consultar resultados del cruce de medias ........................................................ 86
7 Lista de tablas Tabla 1: Lista de empresas que componen el IBEX 35 (2019) ................................................... 15 Tabla 2: Sprints del proyecto ................................................................................................... 42 Tabla 3: Tareas a realizar durante el Sprint 1 ........................................................................... 43 Tabla 4: Tareas a realizar durante el Sprint 2 ........................................................................... 43 Tabla 5: Tareas a realizar durante el Sprint 3 ........................................................................... 44 Tabla 6: Tareas a realizar durante el Sprint 4 ........................................................................... 44 Tabla 7: Tareas a realizar durante el Sprint 5 ........................................................................... 45 Tabla 8: Tareas a realizar durante el Sprint 6 ........................................................................... 45 Tabla 9: Tareas a desarrollar durante el Sprint 7...................................................................... 46 Tabla 10: Tareas a desarrollar durante el Sprint 8 .................................................................... 46 Tabla 11: Tareas a desarrollar durante el Sprint 9 .................................................................... 47 Tabla 12: Tareas a desarrollar durante el Sprint 10 .................................................................. 48 Tabla 13: Tareas a realizar durante el Sprint 11 ....................................................................... 48 Tabla 14: Tareas a desarrollar durante el Sprint 12 .................................................................. 48 Tabla 15: Tareas a realizar durante el Sprint 12 ....................................................................... 49 Tabla 16: Lista de riesgos posibles del proyecto ...................................................................... 52 Tabla 17: Lista de requisitos funcionales de la aplicación ......................................................... 53 Tabla 18: Lista de requisitos no funcionales de la aplicación .................................................... 53 Tabla 19: Batería de pruebas finales de la aplicación ............................................................... 73 Tabla 20: Método del cruce de medias móviles: Colonial ........................................................ 74 Tabla 21: Método del cruce de medias móviles: Ferrovial ....................................................... 75 Tabla 22: Comparación de ambos estudios: Colonial .............................................................. 76 Tabla 23: Comparación de ambos estudios: Ferrovial ............................................................. 77 Tabla 24: Mejoras futuras ....................................................................................................... 80
8 Índice Resumen ................................................................................................................................... 4 Abtract ..................................................................................................................................... 5 Lista de imágenes ..................................................................................................................... 6 Lista de tablas ........................................................................................................................... 7 Capítulo 1: Introducción y objetivos ........................................................................................ 11 1.1 La Bolsa ......................................................................................................................... 11 1.2 El mercado continuo ..................................................................................................... 11 1.3 El IBEX 35 ...................................................................................................................... 12 1.4 Objetivos ....................................................................................................................... 16 1.5 Motivación personal ...................................................................................................... 17 Capítulo 2: Estado del arte ...................................................................................................... 18 2.1 Análisis fundamental ..................................................................................................... 18 2.2 Análisis técnico .............................................................................................................. 18 2.2 Análisis chartista ........................................................................................................... 19 2.3 Datos fundamentales .................................................................................................... 19 2.3.1 Apertura ................................................................................................................. 19 2.3.2 Cierre ..................................................................................................................... 19 2.3.3 Diferencial .............................................................................................................. 19 2.3.4 Máximo .................................................................................................................. 19 2.3.5 Mínimo ................................................................................................................... 20 2.3.6 Volumen e Interés abierto. ..................................................................................... 20 2.4 Gráficos ......................................................................................................................... 21 2.5 Indicadores y osciladores............................................................................................... 23 2.5.1 La media móvil y el cruce de medias. ...................................................................... 23 2.5.2 Bandas de Bollinger ................................................................................................ 26 2.5.3 Momento ............................................................................................................... 26 2.5.4 Índice de Fuerza Relativa (IFR). ............................................................................... 28 2.5.5 Indicador de convergencia/divergencia (MACD)...................................................... 29 2.6 Recogida de datos ......................................................................................................... 30 Capítulo 3: Aspectos tecnológicos de la aplicación ................................................................. 32 3.1 Tecnologías, aplicaciones y dispositivos móviles. ........................................................... 32 3.2 El Sistema Operativo Android. ....................................................................................... 33 3.2.1 Manejo de versiones............................................................................................... 33
9 3.2.2 Instalación de aplicaciones. .................................................................................... 33 3.3 Android Studio IDE. ....................................................................................................... 34 3.4 Lenguaje de programación Java. .................................................................................... 35 3.5 Ficheros utilizados ......................................................................................................... 36 3.5.1 Ficheros Excel ......................................................................................................... 36 3.5.2 Ficheros CSV ........................................................................................................... 36 3.6 Librerías externas utilizadas para Java y Android ........................................................... 37 3.6.1 Apache POI ............................................................................................................. 37 3.6.2 Opencsv.................................................................................................................. 38 3.6.3 MPAndroidChart ..................................................................................................... 38 3.7 El SGBD SQLite............................................................................................................... 39 3.8 Ofimática y elaboración de diagramas ........................................................................... 39 Capítulo 4: Gestión del proyecto ............................................................................................. 40 4.1 Metodologías utilizadas ................................................................................................. 40 4.1.1 SCRUM: Roles y eventos ......................................................................................... 40 4.2 Aplicación de la metodología ......................................................................................... 41 4.2.1 Roles del proyecto .................................................................................................. 41 4.2.2 Eventos del proyecto: Realización de los Sprints y otras reuniones. ........................ 41 4.2 Gestión de costes .......................................................................................................... 50 4.3 Gestión de riesgos ......................................................................................................... 50 Capítulo 5: Proceso de ingeniería de software. Análisis ........................................................... 53 5.1 Requisitos de la aplicación ............................................................................................. 53 5.1.1 Requisitos funcionales ............................................................................................ 53 5.1.2 Requisitos no funcionales ....................................................................................... 53 5.2 Diagrama de casos de uso. ............................................................................................ 54 5.3 Descripción de casos de uso. ......................................................................................... 54 5.3.1 Consultar histórico.................................................................................................. 54 5.3.2 Consultar cruce de medias ...................................................................................... 55 5.3.3 Consultar momento ................................................................................................ 56 5.3.4 Consultar Gráfico .................................................................................................... 56 5.4 Realizaciones de Caso de Uso (Análisis) ......................................................................... 57 5.4.1 Realización de CU – Análisis: Consultar histórico ..................................................... 57 5.4.2 Realización de CU – Análisis: Consultar cruce de medias ......................................... 58 5.4.3 Realización de CU – Análisis: Consultar momento. .................................................. 59 5.4.4 Realización de CU – Análisis: Mostrar gráfico. ......................................................... 60 Capítulo 6: Proceso de ingeniería de software. Diseño. ........................................................... 61
16 1.4 Objetivos Es sabido por todo el mundo que no se pueden predecir los resultados de la bolsa. Por su puesto no solo de la española, si no de cualquier índice bursátil mundial. Si se pudiera, sería pan comido hacerse millonario. Se invierte en acciones baratas porque se tiene la certeza de que luego dichas acciones van a subir. Pero ¿cómo se puede saber cuándo las acciones van a bajar o subir? ¿Existe un algoritmo que explique el comportamiento de la bolsa? La respuesta a esta pregunta es por supuesto negativa, por ahora. No obstante, existen diversos estudios que a través de en una serie de cálculos derivan en unas determinadas conclusiones, que en contextos concretos se han acercado a las predicciones de estos valores, como se explicará en el siguiente punto. Dicho esto, el objetivo de este trabajo de fin de grado es implementar estos estudios, a través de indicadores y osciladores, aplicados sobre los resultados obtenidos en bolsa española durante el año 2018. Para así, una vez se dispongan de los diversos índices, puedan los usuarios finales ver cuál se ha aproximado más en cada caso, y poder seguir refinándolos en el futuro para llegar a aproximaciones aún más realistas. En líneas generales, a partir de los datos cosechados en 2018, se van a llevar a cabo una serie de algoritmos que van a intentar indicar cuándo se debió comprar y vender dicho año para que el negocio saliera rentable. La aplicación no está destinada a cualquier usuario, sino que los clientes son los realizadores del mismo trabajo de fin de grado en la facultad de económicas. Esto quiere decir que los usuarios piden una aplicación concreta y en un contexto concreto. Con esto se pretende dejar claro que este no es un estudio para predecir valores futuros ni un trabajo que pretenda utilizar inteligencia artificial. El producto final es una aplicación para Android que va a mostrar los resultados de este estudio, llevando a cabo una simulación de cuándo se debe comprar y vender acciones de la empresa solicitada, dependiendo el tipo de estudio que se elija, para poder ver cuál de ellos es más rentable. Finalizando, así como para los clientes de esta aplicación es más importante sacar conclusiones de dichos estudios, para lo que concierne al trabajo de fin de grado de esta facultad es más importante poder implementar dicho estudio de manera correcta y exponerlo de una manera visualmente útil y amena (mediante tablas y gráficas) para determinar su utilidad. El que el estudio contenga conclusiones positivas o no es algo secundario. A su vez, la aplicación permitirá en un futuro ampliarse, ejecutando más estudios mediante otros indicadores u osciladores, de manera eficiente puesto que el diseño de esta permite reciclar la mayor parte de la implementación, siguiendo además unos diagramas de diseño muy similares para cada caso de uso.
17 1.5 Motivación personal Llegados a este apartado, voy a hacer una excepción y hablar directamente en primera persona, ya que es algo que únicamente me concierne a mí personalmente. Una de las razones por las que decidí estudiar informática fue porque esta es la es la ciencia más interdisciplinar qué existe. La informática en la vida moderna está en todos los sitios, y más concretamente el software. Por ello, quiero comprobar por mí mismo mi potencial y capacidad como informático para llevar a cabo un proyecto que pueda servir de ayuda a un tema del que inicial y sinceramente, no tengo ni idea a priori, como es el tema de la inversión en bolsa. Quiero ser capaz de dar soporte a algo más que hacer una mera página web o aplicación, pretendo hacer algo diferente a lo que he hecho hasta ahora. Este TFG se me ha propuesto por el propio profesor de la asignatura Sistemas Móviles de la Escuela de Ingeniería Informática, y me pareció más interesante que otros trabajos de fin de grado que se proponían por parte de la propia universidad.
18 Capítulo 2: Estado del arte En este apartado se van a detallar nociones fundamentales de economía necesarias para entender este estudio sobre los valores de la bolsa, No obstante, antes de comenzar a hablar sobre estas nociones, se va a exponer una serie de conocimientos iniciales para la comprensión del por qué se realiza este estudio, así como una breve definición de cada uno de los valores recogidos de la bolsa (apertura, cierre, volumen, etc.). Lo primero es tener claro el concepto de acción. La acción se define como partes iguales en las que está dividido el capital escriturado de una sociedad anónima. El titular de una acción es socio de la empresa y co-propietario de la misma, junto con los demás titulares de acciones. Tener acciones faculta a suscribir preferentemente las nuevas que se emitan en las ampliaciones de capital, a percibir dividendos, a votar en las juntas generales de la sociedad y, en caso de liquidación de la misma, a participar en el reparto del patrimonio social. Cuando la sociedad cotiza en el mercado bursátil, las acciones se pueden comprar y vender en bolsa. [5] Típicamente, existen tres tipos de análisis realizables sobre las acciones de la bolsa, definidos en los siguientes puntos. 2.1 Análisis fundamental Método de análisis que utiliza toda la información disponible en el mercado. En el caso de las acciones, esta información incluye el estudio detallado de los estados contables de las compañías que emiten esas acciones, sus expectativas de crecimiento y de generación de beneficios, además del mercado en el que operan, sin olvidar todo su entorno macroeconómico y cómo influyen en ellas los tipos de interés y las grandes variables de la economía. El objetivo final de este análisis es determinar el precio al que sería adecuado invertir en ese valor en función de sus expectativas. Su denominación de "fundamental" no deriva del hecho de que sea el sistema de análisis más importante o básico, sino que se debe a una traducción directa y literal de su denominación anglosajona, "fundamental analysis", cuya traducción correcta sería más bien "análisis de los fundamentos", es decir, de las bases sobre las que se sostiene el valor analizado. [5] [3] 2.2 Análisis técnico Método de análisis que se basa en la premisa de que el mercado tiene toda la información disponible sobre el valor analizado. Este cruce de información da lugar a un precio y a un volumen de negociación, y determina la evolución de ambos, que da lugar a que dicha evolución sea históricamente previsible. Dicho esto, a partir de su representación mediante gráficas y de su posterior estudio de tendencias de dichos gráficos, el análisis técnico se utiliza para determinar cuándo y a qué precio invertir en el valor analizado, ya que se ha detectado la tendencia de dichos precios. A menudo, análisis técnico se utiliza como sinónimo de análisis chartista, aunque en realidad lo engloba, como veremos en el siguiente punto. [5] [3]
19 2.2 Análisis chartista El análisis chartista viene del término anglosajón "chart": gráfico). Mientras el análisis técnico efectúa operaciones estadísticas y matemáticas con los precios y los volúmenes negociados, para determinar y detectar sus tendencias, el análisis chartista se basa en el estudio de las figuras que forman los precios, como indicación de la tendencia que pueden seguir dichos precios en el futuro. El objetivo final de este análisis es tomar una acertada decisión de inversión. [5] [3] 2.3 Datos fundamentales Una vez se tiene claro los tipos de estudios realizables sobre los valores de las acciones, se va a dar una visión genérica de qué significan los diferentes valores de éstas. Estos valores vienen en forma de precios, denominados cotizaciones. Una cotización equivale al precio alcanzado diariamente por los títulos negociados en bolsa. La cotización puede darse en cuatro momentos de la sesión: apertura, mínima, máxima y cierre. Es importante tener claras las diferencias de estos conceptos, porque estos valores son los que se van a utilizar en este estudio, como se verá a continuación. [5] 2.3.1 Apertura La cotización de apertura es aquella con la que se inicia la sesión en la bolsa. Está representada en un gráfico con una pequeña línea horizontal a la izquierda de la línea vertical. [6] 2.3.2 Cierre La cotización de cierre es la última cotización que tiene una acción durante una sesión en bolsa. Está representada en un chart con una pequeña línea horizontal a la derecha de la línea vertical. [6] Por lo general esta cotización es la que se informa en los medios de comunicación y es la más representativa de la sesión. De hecho, esta cotización es la que suele representar la evolución de la empresa, y es la que se tiene en cuenta en la mayoría de los estudios. En lo que concierne a este trabajo de fin de grado, el valor de cierre va a ser el valor objeto de estudio por defecto. 2.3.3 Diferencial Diferencia entre el precio de venta al que se puede vender un instrumento y el precio de compra al que se puede comprar. [7] Como las cotizaciones van variando a lo largo del día, se tiene en cuenta como un indicador. No obstante, se ha desestimado su caso de estudio de la aplicación por parte de los clientes. 2.3.4 Máximo La cotización máxima es la cotización más alta que tiene una acción durante una sesión en bolsa. En un gráfico es fácilmente distinguible porque es el punto más alto de dicho gráfico. [6]
20 2.3.5 Mínimo La cotización mínima es la cotización más baja que tiene una acción durante una sesión en bolsa. Al igual que le ocurre a la cotización máxima, en un gráfico es fácilmente distinguible, pero en este caso porque es el punto más bajo de dicho gráfico. [6] 2.3.6 Volumen e Interés abierto. Se denomina volumen al número de operaciones de compraventa cerradas en un espacio temporal determinado de la sesión de la bolsa. No tienen por qué ser solamente acciones, sino que también se incluyen contratos de futuros y otros factores. El Volumen es un indicador muy popular y típicamente es utilizado para confirmar tendencias, giros de mercado y cualquier movimiento destacable en un gráfico o chart. No obstante, el volumen sólo nos indica la cantidad de títulos negociados, no el "dinero real“ intercambiado, por lo que puede resultar engañoso si no se tiene claro su concepto. [8] Según Doblado et al. (2017), el volumen es el nivel de intercambios que se negocian en un mercado durante un periodo determinado. Muchos analistas lo consideran como un parámetro para medir la intensidad con la que se mueven los precios a lo largo del gráfico. Si se pretende comprobar si un movimiento del mercado es robusto, el volumen se verá incrementado en los impulsos y se disminuirá en las correcciones. Por ello, si en un movimiento alcista el volumen comienza a disminuir, significa que esa subida está cercana a su final. En cambio, si en un movimiento bajista el volumen disminuye, nos está dando señales de que los inversores están esperando a que los precios vuelvan a subir para volver a vender. Murphy (2016) señala que el interés abierto es el número total de contratos de un determinado producto que están pendientes o no liquidados al final del día. Hay que tener en cuenta que el interés abierto representa en el mercado la cantidad de posiciones largas o cortas en el mercado, pero no la suma de las dos, ya que un contrato debe tener un comprador y un vendedor. Por tanto, en el mercado se combina para crear un único contrato. Es muy útil porque nos permite saber cuánto dinero está saliendo y entrando de un mercado. En lo referido al estudio, se van a interpretar las dos dimensiones. Si el volumen y el interés abierto aumentan, la tendencia de precios que esté formada en ese momento se mantendrá en la dirección que lleve. En el caso de que las dos dimensiones disminuyan, se puede interpretar como un aviso de que esa tendencia va a acabarse pronto. [9]
21 Ilustración 2: Datos fundamentales [10] 2.4 Gráficos Una vez repasados los datos fundamentales, uno puede ver la utilidad de éstos de manera rápida y cómoda en diversos gráficos. Los gráficos más utilizados para realizar el análisis técnico son el gráfico de barras, de líneas, de puntos y figuras y el de velas. A continuación, se hará una breve explicación de los más comunes de manera superficial. Por un lado, se tiene el básico gráfico de barras, en el que cada día se representa con una barra vertical. Esta barra refleja los precios de cierre, máximo, apertura y mínimo, que explicaremos más delante. La raya a la izquierda de la barra representa el precio de apertura, y la que está a la derecha representa el precio de cierre. Ilustración 3: Gráfico de barras [11]
22 Por otro lado, se encuentra, de origen japonés, el gráfico de velas va a registrar los cuatro precios que comentamos anteriormente en el gráfico de barras, pero de forma diferente. Cada jornada, una línea vertical muestra el recorrido del precio en ese día, desde el máximo hasta el mínimo. Una parte más ancha de esta barra representará la distancia entre el precio de apertura y cierre. En el caso de que el cierre haya sido más alto que la apertura, esta parte más ancha llamada cuerpo real, será positiva (verde). Si el cierre fue más bajo que la apertura, el cuerpo real pasará a ser negativo (rojo). Ilustración 4: Gráfico de velas [11] No obstante, para el análisis chartista, se suelen utilizar otro tipo de gráficos, principalmente el de la línea de tendencia. Según Murphy (2016), la tendencia es la dirección del mercado, hacia donde se está moviendo. Como es sabido, los mercados no se mueven en línea recta, sino que lo hacen con movimientos en zigzag imitando a los picos y valles de una montaña. La dirección de esos picos y valles es lo que conforma la tendencia del mercado. La tendencia ascendente está compuesta por una serie de picos y valles sucesivamente más altos, al contrario que la tendencia descendente, que está formada por unos picos y valles en declive. En el caso de que los picos y valles fueran horizontales, uno podría decir que se encuentra ante una tendencia lateral. [9]
23 Ilustración 5: Tipos de tendencias [12] En resumen, y como puede verse en el gráfico anterior, se pueden identificar tres tipos de tendencia atendiendo a su duración en el tiempo: a) Tendencia principal: Está en vigor más de un año. b) Tendencia intermedia: Se acotará entre las tres semanas y el año. c) Tendencia corta: Tendrá una duración menor a las tres semanas. Por tanto, una línea de tendencia ascendente (plasmada de color verde) se va a representar como una línea inclinada hacia arriba y hacia la derecha que va a unir los valles ascendentes bajo las cotizaciones. La línea de tendencia descendente (en este caso, de color roja) estará inclinada hacia abajo y hacia la derecha uniendo los picos descendientes por encima de las cotizaciones. La utilidad que aporta este estudio es que la violación de una línea de tendencia va a sugerir el cambio de dicha tendencia, por lo que se puede prever movimientos futuros en los valores de las acciones. [9] 2.5 Indicadores y osciladores De acuerdo con Elvira et al. (2001), los análisis basados en indicadores y osciladores se evita la subjetividad que nos puede proporcionar el análisis Chartista, cuando se tiene que determinar si una ruptura dentro de una formación Chartista corresponde a un cambio de tendencia o solamente es una corrección. Para ello, se han desarrollado los indicadores y osciladores, que van a proporcionar valores numéricos interpretables como señales de compra y venta. A continuación, se va a realizar una explicación del significado e importancia de los siguientes indicadores y osciladores estadísticos. [9] 2.5.1 La media móvil y el cruce de medias. Según Murphy (2016), la media móvil es el indicador más extendido, dado que tiene una mayor versatilidad a la hora de realizar el análisis técnico. Todo esto es debido a su facilidad para cuantificar y verificar los resultados obtenidos, debido a que permite una fácil aplicación en los sistemas informáticos (pues su algoritmo está basado en el cálculo de medias). Esto permite seguir las tendencias e indicar qué momento es el adecuado para comprar o vender. Aquí no puede haber discusión alguna, como podría pasar en el análisis Chartista, ya que las medias móviles son precisas y cuantificables.
24 La media móvil va a consistir en un promedio aritmético de una cantidad determinada de cotizaciones. El propósito de este indicador es hacer saber que una nueva tendencia ha comenzado o una vieja ha finalizado, por tanto, es un seguidor y no un líder que pronostica hacia dónde va a ir la tendencia. Existen varios tipos de medias móviles (simple, ponderada linealmente, suavizada exponencialmente, etc.). La más utilizada es la simple, que también se suele llamar media aritmética y considera todos los días analizados con el mismo peso. Cuando se añade una nueva sesión, se elimina la primera sesión que se calculó y se añade la última que ha aparecido. Así es como se va calculando y desplazando a lo largo del tiempo. Cuando haya un precio de cierre que sobrepase la media móvil, estará indicando que existe una señal de compra y cuando el precio de cierre caiga por debajo de la media móvil, habrá una señal de venta. También debemos analizar las tendencias primarias y secundarias. Para detectar cambios en la tendencia primaria, es necesario irse al largo plazo, superior a un año (media móvil larga). Cuando se pretenda hacer en la tendencia secundaria, se coloca en el corto plazo, aproximadamente datos de un mes (media móvil corta). La media móvil corta nos proporciona señales de cambio de tendencia mucho antes y la media móvil larga es mucho más precisa al analizar mayor cantidad de cotizaciones. Para asegurarse de que las señales de compra y venta proporcionadas por las medias móviles son fiables, se va a utilizar el método de doble cruce que consiste en plasmar al mismo tiempo la media móvil corta y larga en el gráfico. Tendremos una señal de compra cuando la media móvil corta cruce por encima de la larga. También cabe destacar que las medias móviles funcionan de manera muy positiva cuando el mercado está en fase de seguir una tendencia. Sin embargo, no nos será útil cuando los precios oscilen lateralmente, sin tendencia. En este supuesto, usaremos los osciladores. [9] Ilustración 6: Representación gráfica del cruce de medias móviles [9] Este gráfico ha sido extraído de la obra de Elvira et al (2001): Análisis técnico bursátil y modificado para una mejor comprensión del tema a tratar, facilitando la percepción de
25 las señales y los puntos que deben ser analizados para poder justificar la viabilidad de este indicador bursátil. Se han marcado con color verde los puntos donde se produce una señal de compra, que como se ha comentado anteriormente, es el momento donde la media móvil corta supera a la media móvil larga. Por otro lado, con un color rojo aparecen marcadas las señales de venta las cuales vienen producidas por el cruce de la media móvil corta y larga, superando ésta última a la media móvil corta. También se puede observar que hay una fase, marcada en amarillo, donde no se encuentran señales claras de ningún tipo. Esto se debe a que el mercado fluctúa de forma horizontal, es decir, sin tendencia. Por tanto, está demostrado que cuando el mercado carece de la presencia de una tendencia bien marcada, los indicadores no son buenas herramientas para apoyarnos a la hora de realizar transacciones en los mercados financieros y, por ende, el método de doble cruce de medias móviles no va a reportar unas señales en las cuales podamos confiar con total seguridad. En lo referente a este trabajo de fin de grado, el estudio del cruce de medias móviles va a ser el primer estudio que se va a realizar. Cabe destacar que, de todos los valores de cotizaciones recogidas, para realizar este estudio se utiliza la de cierre. Para ello, se van a tener en cuenta medias móviles a 12 y a 26 días, que comenzarán a compararse a partir del día veintiséis (porque hasta ese momento no hay medias a doce días). Cuando la comparación entre dichas medias sea menor que cero (es decir, que la media a 12 días es menor que la de 26) se dispara una señal de venta. Por otro lado, cuando la comparación sea positiva se dispara una señal de compra. El resultado se puede ver en la siguiente imagen, capturada directamente de la aplicación desarrollada de para este trabajo de fin de grado. Ilustración 7: Resultados del cruce de medias en la aplicación [Propia]
32 Capítulo 3: Tecnologías utilizadas para la aplicación En este capítulo se pretende dar inicialmente una pequeña instrucción sobre las tecnologías móviles, con el objetivo de que el lector entienda las ventajas y, en definitiva, la razón de por qué esta aplicación se ha decidido implementar para tecnologías móviles (en lugar de, por ejemplo, en un servidor web). Posteriormente se indicarán cada una de las tecnologías utilizadas y su importancia en el desarrollo de la aplicación. 3.1 Tecnologías, aplicaciones y dispositivos móviles. El término tecnologías móviles hace referencia al conjunto de dispositivos y herramientas que nos dan la posibilidad de realizar una actividad determinada de manera ubicua, que normalmente se inscribe en un espacio físico, en otro lugar (ya sea un servidor u otro cliente). Las tecnologías móviles dieron pie a los conocidos hoy en día como dispositivos móviles. Estos son aparatos de pequeño tamaño, con capacidad de procesamiento, con conexión permanente o intermitente a una red, con memoria limitada, diseñados específicamente para una función, pero que pueden llevar a cabo otras funciones más generales. [14] En términos generales, los dispositivos móviles no están orientados a llevar a cabo tareas que requieran grandes capacidades de procesamiento. No obstante hoy en día, casi todas las personas disponen en su bolsillo de un móvil que típicamente tiene un procesador de unos 1000 MHz y unos 512 MB de RAM, teniendo 100.000 veces más RAM que el AGC (Apollo Guiding Computer) que corría a alrededor de 1 MHz, y que fue ni más ni menos que el computador responsable de las misiones Apolo que llevaron a la humanidad a la superficie de la Luna. [15] En lo particular a este trabajo de fin de grado, se ha decidido que aplicación de estos métodos de estudio se realicen mediante una aplicación móvil dada su comodidad y facilidad de uso hoy en día. Como se ha destacado anteriormente, esta aplicación precisa de una casi inmediata conexión a internet, que además no requiere la descarga de gran cantidad de datos. De hecho, los archivos requeridos ocupan normalmente unos 40 - 50 KB, ya que está restringido a descargar únicamente los datos del último año. Ilustración 12: Diferentes dispositivos móviles actuales [Propia]
33 3.2 El Sistema Operativo Android. Android es un sistema operativo para dispositivos móviles desarrollado por Google, basado en el Kernel de Linux y cuyo software es de código abierto. Actualmente es el sistema operativo móvil más utilizado del mundo, con una cuota de mercado superior al 80% durante el año 2017, muy por encima de iOS. [14] Esta es la principal razón por la que se ha decidido desarrollar la aplicación que da pie a este estudio en Android, ya que principalmente los clientes para los que está destinado, utilizan dispositivos que corren este sistema operativo. 3.2.1 Manejo de versiones. La única parte que aparentemente puede poner en dificultades a los desarrolladores en cuanto al Sistema Operativo Android es su versión. Actualmente los dispositivos que se desarrollan incorporan, por lo general, la versión 6 (Marshmallow, Google API 23), 7 (Nougat, Google API 24-25) u 8 (Oreo, Google API 26-27) en adelante. [16] Dado que no sólo muchos dispositivos comunes en los entornos de trabajo son antiguos, y que además los usuarios finales de esta aplicación en concreto utilizan dispositivos de dicha generación, se ha decidido, como se destacará en los requisitos no funcionales de la aplicación, intentar limitarlo a la versión 6 (Marshmallow, Google API 23), e incluso a la versión 5 (Lollipop, Google API 21-22) para evitar problemas. 3.2.2 Instalación de aplicaciones. La instalación de aplicaciones para Android es tremendamente sencilla. Las aplicaciones pueden estar licenciadas oficialmente en Google Play Store o no, como es el caso de esta aplicación. Una vez se dispone de la aplicación, para su uso y depuración se requiere de una instalación previa. Dicha instalación puede hacerse por dos métodos: Por APK: El más sencillo y común. Se genera un archivo comprimido ejecutable con extensión .apk, que el usuario no tiene más que tocar en la pantalla, y se genera el proceso de instalación. Método recomendado para los usuarios finales. Por depuración USB: Se necesita conectar físicamente con un cable del dispositivo al PC donde se ha desarrollado la aplicación por USB, y activar las opciones de desarrollador en el dispositivo para permitir la depuración USB. La instalación es instantánea, sin permisos de ningún tipo. Método recomendado para desarrolladores, cuando la aplicación está precisamente en momentos de desarrollo. Ilustración 13: Logo de Android [38]
34 3.3 Android Studio IDE. Android Studio es el entorno de desarrollo integrado (IDE) oficial para la plataforma Android. Lanzado el 16 de mayo de 2013, reemplazó a Eclipse como el IDE oficial para el desarrollo de aplicaciones para Android. La primera versión estable fue publicada en diciembre de 2014. Permite programar en Java y Kotlin, aunque también dispone de plugins para C y C++. [17] Este entorno avanzado e inteligente da mucha comodidad al usuario, ya que permite autocompletar operaciones de llamadas a objetos, importar clases de manera automática, un log para depuración muy accesible y hasta un simulador de dispositivos móviles incorporado muy optimizado para desarrollar y depurar aplicaciones sin necesidad de disponer físicamente de un dispositivo. También dispone de una paleta para desarrollar la interfaz de la aplicación mediante la propia interfaz del IDE. Incluso da sugerencias al propio desarrollador mientras está programando. Y además totalmente gratis. El entorno ideal para un programador moderno. Eso sí, como ocurre con todo, no está exento de desventajas, pues para poder ofrecer toda esta gama de posibilidades al programador, éste necesita disponer de un PC con grandes recursos que lo soporten. Por ejemplo, para usuarios de Windows, ya se pide este mínimo de requisitos: Microsoft Windows 7/8/10 (32-bit/64-bit). 3 GB RAM como mínimo, 8 GB RAM recomendados (+1 GB para el emulador de Android). 2 GB of disponibles de disk disco duro como mínimo, 4 GB recomendados (500 MB para IDE y +1.5 GB para Android SDK y la imagen del SO del emulador). 1280 x 800 mínimo de resolución de pantalla. [18] Ilustración 14: Apariencia del IDE Android Studio [Propia]
35 3.4 Lenguaje de programación Java. Java es un lenguaje de programación de propósito general, concurrente y orientado a objetos, que fue diseñado específicamente para tener tan pocas dependencias de implementación como fuera posible. La idea básica de su desarrollo es la característica del desarrollo multiplataforma, es decir, permitir que los desarrolladores construyan su aplicación una única vez, y se pueda ejecutar en cualquier dispositivo (en inglés WORA, "write once, run anywhere"). Esto quiere decir que el código que es ejecutado en una plataforma no tiene que ser compilado de nuevo específicamente para correr en otra. [19] Actualmente, Java tiene encuentra su última versión en Java 1.8, típicamente conocida como Java 8 o Java versión 8 [20] Para dar desarrollar aplicaciones móviles en Java para Android se deben tener en cuenta que, las aplicaciones se compilan para ejecutarse en una Máquina Virtual Java (JVM) específicamente diseñada para clientes móviles. Esto deriva en que la aplicación tiene un desarrollo rápido y una amplia portabilidad (siempre y cuando se tenga instalada la JVM). No obstante, no funciona bien para tareas y para dispositivos con poca memoria. Aunque como se ha destacado anteriormente en el apartado de dispositivos y tecnologías móviles, con los smartphones comunes de hoy en día esto no va a suponer un problema, pues tienen memoria y capacidades suficientes, así como la JVM ya instalada. [14] En lo referente a este trabajo de fin de grado, se ha decidido implementar en Java por dos razones. La primera, porque es el lenguaje básico de desarrollo de aplicaciones Android. Aunque actualmente Kotlin está pisando fuerte, este lenguaje en realidad no deja de correr sobre una JVM. La segunda razón es, que el propio desarrollador de la aplicación está más experimentado en la programación orientada a objetos mediante la sintaxis de Java que en la de otros lenguajes. Por ambas razones, se ha creído oportuno llevar a cabo la aplicación en este lenguaje de programación. Ilustración 15: Logo de Java [19]
36 3.5 Ficheros utilizados En el siguiente apartado se va a exponer brevemente los tipos de ficheros que utiliza la aplicación. Ya que en la práctica son transparentes para el usuario, el objetivo de este apartado es dar simplemente una idea de qué son y sus diferencias, así como por qué son necesarios para la aplicación. 3.5.1 Ficheros Excel Microsoft Excel es una aplicación de hojas de cálculo que forma parte de la suite de oficina Microsoft Office. Es una aplicación utilizada en tareas financieras y contables, que soporta la aplicación de fórmulas, gráficos y un lenguaje de programación. También es capaz de ejecutar macros programables en Visual Basic. En general, es una hoja de cálculo muy potente. Los ficheros que utiliza Microsoft Excel son principalmente los ficheros de extensión .xls y .xlsx. Ambos son respectivamente el formato antiguo y nuevo de los típicamente llamados ficheros Excel. [21] En lo que a la aplicación respecta, es interesante conocer que estos ficheros se componen de una o varias hojas de cálculo (llamadas sheets), en las que dentro de ellas existe, por lo general, una tabla con filas y columnas. Ilustración 16: Logo de Excel (2019) [21] 3.5.2 Ficheros CSV Los ficheros CSV (Comma-Separated Values) son un tipo de documento en formato sencillo para representar datos en forma de tabla, cuyas columnas están separadas por comas (o punto y coma en donde la coma es el separador decimal, en países de habla hispana como Chile, Argentina, España, etc.) y cuyas filas por saltos de línea. [22] En lo que a la aplicación respecta, los ficheros CSV se utilizan a modo de transición, por comodidad informática. Es más sencillo importar a una Base de Datos un fichero en formato CSV, cuyos únicos separadores son comas y saltos de línea, que un fichero Excel avanzado en formato .xls, que como veremos en el apartado de implementación del capítulo 7, contiene una gran cantidad de objetos para su lectura mediante otras aplicaciones. La idea es descargar un archivo Excel con los datos, convertirlo a CSV e importarlo a la Base de Datos local. Después, los ficheros se borran de la aplicación. Esto es posible en gran parte, como veremos a continuación, a una serie de librerías para Java, y su compatibilidad para aplicaciones Android.
37 3.6 Librerías externas utilizadas para Java y Android Destacar que todas las librerías utilizadas en esta aplicación son de uso libre. 3.6.1 Apache POI Tal y como apuntan en su página oficial, el proyecto de la librería Apache POI tiene como misión u objetivo final construir y mantener una API de software libre para Java, capaz de manipular varios ficheros asociados a Microsoft Office y Open Office. Además, no solo es capaz de adaptar los ficheros para modo lectura, sino también para escritura, por lo que tiene la capacidad de generar este tipo de ficheros de manera correcta. Actualmente, su última versión es la 4.0.1 (Lanzada en la fecha 12/03/2018). [23] En el contexto de la aplicación, la tarea concreta para la que utiliza esta librería es abrir el fichero Excel descargado en modo lectura, acceder a su primera hoja de cálculo o sheet, y a través de un índice, ir guardando los valores que contiene en una estructura de datos. Cabe destacar que recoger estos datos no es tan sencillo como puede aparentar, pues como se ha destacado anteriormente, las celdas Excel no contienen un formato estándar, si no que en la librería se interpretan como objetos, que pueden valer un entero, un decimal, una cadena de caracteres, un valor calculado, una variable, una constante… en definitiva, una gran variedad de posibilidades. Según un tipo de celda u otro hay que actuar en consecuencia. El objetivo principal es leer los datos del fichero y cargarlos en algún tipo de estructura de datos, para poder guardarles en un fichero CSV, para lo cual se utiliza la librería del siguiente apartado. Ilustración 17: Logo de la compañía Apache [23] Esta librería puede usarse importando el archivo .jar al proyecto y funcionaría correctamente en un IDE típico de Java. No obstante, para Android Studio, a veces las librerías necesitan una serie de dependencias para compilarse que hay que especificar en el script build.gradle (Module: app) del proyecto. En concreto, hay que añadir las siguientes especificaciones de compilar con la versión de Java 1.8, ya que por defecto trabaja con la versión 7, por lo menos a la hora de la compilación. [24] compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 }
38 3.6.2 Opencsv Opencsv es una librería de software libre de fácil uso y gestión de archivos CSV para el programador, que permite a este convertir o generar archivos CSV utilizando el lenguaje Java. Según dicen en su página web, fue desarrollada porque, literalmente, “parsers at the time didn’t have commercial-friendly licenses”. Opera como mínimo en Java 7, por lo que no dará problemas de compatibilidad a la aplicación. [25] Esta API de uso libre fue desarrollada pertenece a Maven (Apache Maven Project). [26] En lo que respecta a la aplicación, una vez disponga de los datos recogidos de un fichero Excel, va a utilizar una clase de esta librería, (en concreto CSVWritter), para generar un archivo CSV. Todo ello de forma trasparente al usuario. Para su uso, en esta ocasión basta con importar el archivo .jar a las dependencias del proyecto, sin restricciones a mayores como en el anterior caso. Se detallará en el apartado de implementación del capítulo 7. 3.6.3 MPAndroidChart MPAndroidChart es una librería de uso libre desarrollada por Philipp Jahoda, un desarrollador austriaco de aplicaciones Android e iOS, co-creador de un famoso “bot mayordomo” de Android llamado Butleroy. [27] [28] Esta librería consiste en una API muy potente, de uso libre y desarrollada en Java, para la representación de gráficos (de muchísimos tipos) para Android. Representa los valores de las coordenadas en ambos lados de la gráfica, mientras que el eje de abscisas solamente aparece en el lado superior de la misma (formato americano). Desde el punto de vista de la aplicación es muy interesante porque permite el autoscrolling tanto del eje de abscisas como para el eje de ordenadas. Esto es muy útil teniendo en cuenta que la pantalla de los dispositivos móviles es muy reducida para representar toda la información anual en un solo gráfico. También permite aplicar animaciones a las gráficas desarrolladas. Por último, permite la incrustación de varias gráficas en una misma representación, acompañadas cada una por una leyenda (con una descripción y color de la misma) en la parte inferior de la gráfica. En lo que concierne a la aplicación, se va a utilizar esta librería principalmente para representar los datos obtenidos del estudio del cruce de medias móviles y el momento, así como un histórico de la evolución de las cotizaciones de las empresas durante el año. Para su importación al proyecto, dado que es una librería Java pensada exclusivamente para Android, no es necesario importar ningún .jar al proyecto, sino que basta con añadir en los scripts del Gradle del proyecto las siguientes dependencias: [29] repositories { maven { url 'https://jitpack.io' } } dependencies { implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' }
39 3.7 El SGBD SQLite. Aunque SQLite no deja de ser una librería, se va a destacar en un apartado diferente, pues básicamente supone la implementación de la Base de Datos local de la aplicación. SQLite es una librería multiplataforma, desarrollada en principio lenguaje C por D. Richard Hipp en el año 2000, pero dispone de compatibilidad para Java. Implementa un Sistema Gestor de la Base de Datos (SGBD, DBMS en inglés) relacional del tipo SQL, por lo que cumple las propiedades ACID (Atomicity, Consistency, Isolation, Durability), es decir, las operaciones sobre la Base de Datos se realizan de manera atómica, consistente, de manera aislada entre ellas, y las operaciones son permanentes. [30] [31] [32] SQLite es compatible con los dispositivos móviles y la gran mayoría de ordenadores, y es muy usada hoy en día, ya que es una librería muy ligera, ya integrada en Android Studio, que permite dar un soporte muy avanzado de la Base de Datos, como recién se acaba de explicar. Según dicen en su sitio oficial, hay actualmente alrededor de un trillón de Bases de Datos implementadas mediante SQLite. Aunque implemente una sintaxis similar tecnologías SQL, como MySQL o Oracle, tiene ligeros matices, sobre todo a la hora de realizar consultas por coincidencias de cadenas de caracteres. [33] Ilustración 18: Logo de SQLite [33] 3.8 Ofimática y elaboración de diagramas Para la elaboración de documentos sobre la documentación de la aplicación realizada durante este trabajo de fin de grado se ha utilizado Microsoft Office Word (2016), y para la elaboración de diagramas relacionados con procesos de ingeniería del software se ha utilizado Visual Paradigm, ambos programas disponibles con licencia universitaria para alumnos por la Escuela de Ingeniería Informática de Valladolid. Ilustración 19: Logos de Microsoft Office (2016) [34] y Visual Paradigm [35] respectivamente
40 Capítulo 4: Gestión del proyecto En este capítulo se va a exponer toda la parte relacionada con la planificación, gestión y organización del proyecto, desde la implementación de metodologías utilizadas hasta un cálculo de los costes, sin dejar de lado otras gestiones como es la gestión de riesgos. 4.1 Metodologías utilizadas Para llevar a cabo la consecución de este proyecto de una manera más moderna, se ha decidido llevar a cabo una metodología ágil, (o al menos una aproximación o simulación de ella) en concreto la conocida como SCRUM. Las razones son por la facilidad de dividir el trabajo en sprints y desconocimiento de la aplicación de otro tipo de metodologías. No obstante, ya que existe la condición de que solamente hay un único desarrollador al cargo del proyecto, la aplicación de dicha metodología nunca va a ser estrictamente correcta, ya que está pensada para ámbitos empresariales profesionales, con varios participantes y roles bien definidos. Ocurrirá de forma similar en la gestión de costes y planificación del proyecto indicadas en el siguiente apartado. A continuación, se va a dar una breve noción del proceso SCRUM para posteriormente poder clarificar cómo se ha ido llevando a cabo. 4.1.1 SCRUM: Roles y eventos SCRUM Manager es una metodología ágil concreta, basada en los pilares de transparencia, inspección y revisión. Tiene unos roles diferenciados, los más destacables son los siguientes: Equipo de desarrollo: Encargados de realizar la aplicación o producto final. Product Owner: Clarifica requisitos y decide en última instancia cómo va a ser el producto final, gestionando qué se añade y que se elimina, y dando prioridad a las funcionalidades. SCRUM Master o Manager: La persona responsable de apoyar al equipo de desarrollo, eliminar las barreras organizativas y mantener la consistencia del proyecto ágil. También contiene una serie de eventos, traducidos en forma de reuniones. De nuevo, los más destacables son los siguientes. Sprint: Un ciclo de desarrollo corto para crear funcionalidad de producto vendible. Contiene una serie de tareas a realizar dentro de él.
41 a) Todos los Sprint deben tener la misma duración, con un máximo de 30 días. b) Solo es posible cambiar el curso de un sprint abortándolo. Las únicas razones para abortarlo son bien porque la tecnología acordada no funciona, las circunstancias de negocio han cambiado o el equipo de desarrollo ha tenido interferencias. Planificación de Sprint: Una reunión al comienzo de cada sprint donde se fijan los objetivos del mismo. Se identifican los requisitos y las tareas a realizar para completa cada requisito. Daily SCRUM: Una reunión de unos 15 minutos a tener cada día de un sprint donde se indica lo realizado el día anterior y lo que se va a realizar en el actual. Debe ser muy concreta, y ayuda a evitar otras reuniones innecesarias. Revisión de Sprint: Una reunión al final de cada sprint, iniciada en teoría por el Product Owner, donde se analiza la funcionalidad del producto conseguida durante el Sprint. Sprint retrospective: Una reunión al final de cada sprint, donde el equipo del sprint analiza qué fue bien, qué debe cambiar y cómo realizar los cambios en el próximo sprint. [36] 4.2 Aplicación de la metodología Para exponer la aplicación del SCRUM, inicialmente se va a definir quién habría hecho cada rol, y luego qué se ha llevado a cabo en cada sprint, así como cuándo y qué reuniones se han realizado. 4.2.1 Roles del proyecto - El equipo de desarrollo: ha sido llevado a cabo por el alumno a cargo del trabajo de fin de grado, Miguel González Bravo. - El Product Owner se podría decir que está llevado a cabo por el tutor y co-tutor del trabajo de fin de grado. Aunque no es del todo correcto desde el punto de vista del SCRUM, porque también tendrían el rol de clientes, realmente son quienes han impuesto los requisitos del proyecto. - El rol del SCRUM Manager podría equivaler al tutor del trabajo de fin de grado. 4.2.2 Eventos del proyecto: Realización de los Sprints y otras reuniones. Aunque se supone que al final de cada Sprint se debe disponer de alguna funcionalidad de la aplicación, dado que solo existe un único desarrollador para la aplicación, se ha creído oportuno proponer como Sprints también la investigación, estudio y realización de la ingeniería del software como parte del proyecto, aunque este no empiece a desarrollarse como tal hasta el 4º Sprint. Sprints del Proyecto
48 Tabla 12: Tareas a desarrollar durante el Sprint 10 Fecha de inicio prevista: 22/5/2019 Fecha de inicio real: 22/5/2019 Fecha de fin prevista: 02/6/2019 Fecha de fin real: 30/5/2019 Sprint 11: Mejora de la interfaz. Una vez llegados a este punto, es importante destacar que los clientes ya dejan de proponer cambios y requisitos para la aplicación, porque tienen lo necesario para realizar su estudio. No obstante, el proyecto aún sigue en marcha, a través de reuniones con el Product Owner (el tutor del proyecto), para examinar la aplicación y determinar que mejoras se puede realizar. Co esto se quiere decir, que ya es algo totalmente ajeno al trabajo de fin de grado de la facultad de económicas. Lista de objetivos a desarrollar. N.º de Objetivo Tarea Horas previstas Horas reales 1 Reuniones con el tutor 2 2 2 Mejora de la interfaz 5 5 Total horas 7 7 Tabla 13: Tareas a realizar durante el Sprint 11 Fecha de inicio prevista: 02/5/2019 Fecha de inicio real: 30/5/2019 Fecha de fin prevista: 08/6/2019 Fecha de fin real: 08/6/2019 Destacar que en junio el único desarrollador de la aplicación tiene exámenes universitarios, por lo que el proyecto va más despacio. Como se tenía una holgura de varias horas del sprint anterior, se decide avanzar más despacio para ajustarse a la planificación. Sprint 12: Depuración de la aplicación. Mejoras, pruebas, logo y nombre de la aplicación y depuración en general. Lista de objetivos a desarrollar. N.º de Objetivo Tarea Horas previstas Horas reales 1 Depuración 7 7 Total horas 7 7 Tabla 14: Tareas a desarrollar durante el Sprint 12
49 Fecha de inicio prevista: 08/5/2019 Fecha de inicio real: 08/5/2019 Fecha de fin prevista: 15/6/2019 Fecha de fin real: 15/6/2019 Sprint 12: Elaboración de la documentación. Elaboración de este documento Lista de objetivos a desarrollar. N.º de Objetivo Tarea Horas previstas Horas reales 1 Documentación 30 30 Total horas 30 30 Tabla 15: Tareas a realizar durante el Sprint 12 Fecha de inicio prevista: 15/5/2019 Fecha de inicio real: 15/5/2019 Fecha de fin prevista: x/6/2019 Fecha de fin real: x/6/2019 Destacar que la documentación se ha ido realizando paralelamente a lo largo del proyecto.
50 4.2 Gestión de costes Ya que este proyecto no dispone de ningún servidor que mantener, el coste se centrará solo sobre el desarrollo y mantenimiento del cliente, que es en sí la aplicación. Por otro lado, dado que este proyecto se ha desarrollado por un único programador, y ha puesto él los medios necesarios, se puede decir que el coste se sobrentiende nulo. No obstante, se van a destacar los medios y su coste para tenerlos en cuenta, en caso de que fuera un proyecto de una empresa real que tuviera que dar soporte a un empleado nuevo para realizar dicho proyecto: a) Portatif / PC: 8GB RAM, CPU i5-i5, 100 GB SSD, (600-900€) b) Ratón inalámbrico o por cable (5-20€) c) Teclado si no se dispone (5-20€) d) Otros: Conexión a internet, alimentación, avituallamiento, etc. (desestimado). Total medios: (610-940€) En cuanto al acortamiento de tareas, dado que solo hay un programador y que las actividades por lo general no tienen holgura, se ha decidido desestimar esta operación porque el acortamiento sería despreciable. Por tanto, el coste de las actividades será basado en el cálculo de horas de la mano de obra, suponiendo que todas las actividades tienen el mismo coste. Finalizando, en un supuesto práctico en el que el programador cobre, por ejemplo, 30 € la hora, el coste de las actividades sería de 30*297 = 8.910€. Si es un trabajador nuevo y hay que suministrarle los medios, el coste sería de unos 9.810€. 4.3 Gestión de riesgos Según el PM-BOK [36], un riesgo es un evento o una condición inciertos que, si ocurren, tienen un efecto positivo o negativo sobre los objetivos del proyecto. Se relacionan con posibles problemas futuros, no problemas actuales. Implican por tanto una posible causa y su efecto. Los riesgos están caracterizados por: Probabilidad de ocurrencia. Puede ocurrir o no. Impacto: Tamaño de la pérdida. Cuantificación de un riesgo = Probabilidad x Impacto. La práctica de valorar y controlar los riesgos que afectan a un proyecto se conoce como gestión de riesgos. El propósito de ésta es identificar, analizar, tratar y monitorizar los riesgos continuamente, así como mitigar el problema potencial con antelación suficiente para prevenir el impacto adverso en factores como presupuesto. El proceso de la gestión de riesgos suele ser el siguiente: Se determina el alcance de la gestión a realizar. Se definen e implementan estrategias apropiadas de gestión de riesgos. Se identifican los riesgos y se determina su prioridad. Se consideran las medidas de riesgo que serán definidas, aplicadas y valoradas para determinar cambios en el estado de un riesgo.
51 Se toma el tratamiento adecuado para corregir o impedir el impacto del riesgo basado en su prioridad, probabilidad y consecuencia. [36] Por tanto, se ha creído conveniente elaborar una lista de riesgos para este proyecto. Para ello, se han utilizado los métodos convencionales de listas de comprobación y tormenta de ideas. Las listas de comprobación consisten en revisar uno por uno los riesgos posibles del proyecto, basados sobretodo en proyectos anteriores. Son fáciles de aplicar, pero causan fatiga comúnmente. Por otro lado, las tormentas de ideas, también son rápidas de utilizar y no causan tanta fatiga, aunque requieren de entrenamiento y de experiencia. En general, el mecanismo que se utiliza para identificar los riesgos de un proyecto es el siguiente: 1. Comenzar con una tormenta de ideas abierta, generalizada, inespecífica. 2. Seguir con una tormenta de ideas focalizada: Por proyecto, por objetivo, etc. 3. Utilizar una lista de comprobación para garantizar un recubrimiento suficiente. [36] Por último, se ha añadido un plan de acción, el plan que se va a ejecutar si el riesgo llega a ocurrir. Existen diversos tipos de respuestas a los riesgos: a) Evitación. b) Protección: Actuar antes. Previsión y planificación. c) Reducción: Actuar después. d) Investigación: Investigar hasta resolver el riesgo. e) Transferencia: Reorganizar para desplazar el riesgo. f) Aceptación: Si Coste de evitación > Coste de impacto del propio riesgo [36] El resultado obtenido ha sido el siguiente: Riesgo Probabilidad Impacto Cuantificación Plan de acción Desaparece una empresa del IBEX 35. 25% 2 0,5 Aceptación La aplicación no se instala por problemas desconocidos. 1% 3 0,03 Reducción Se encuentran librerías útiles, pero no se consigue su importación a Android Studio. 25% 2 0,5 Investigación El Product Owner y los clientes no se ponen de acuerdo en los objetivos de proyecto. 50% 2 1 Protección El Product Owner y los clientes se ponen de acuerdo en los objetivos de proyecto con retraso. 75% 2 1,5 Protección Incapacidad del único desarrollador para 10% 3 0,3 Aceptación
52 trabajar por enfermedad, desconocimiento, ansiedad u otros factores. El programador no consigue desarrollar los objetivos en el plazo de tiempo dado. 30% 2 0,6 Protección La aplicación no se instala por temas de versiones entre dispositivos. 30% 1 0,3 Investigación El cliente utiliza un dispositivo que no corre el SO Android. 0% 3 0 Transferencia No se consigue desarrollar a tiempo el cruce de medias para que el cliente desarrolle su TFG particular. 20% 3 0,6 Protección La interfaz no es óptima para dispositivos de diferente tamaño. 25% 1 0,25 Reducción El servidor de la fuente de datos no está disponible. 1% 1,5 0,01 Aceptación El servidor no devuelve un fichero correcto. 0,01% 3 0 Aceptación El servidor ha cambiado de implementación 0,01% 3 0 Aceptación La red social de comunicación (WhatsApp) utilizada entre clientes y desarrollador se caiga de repente, retrasando las comunicaciones. 40% 1 0,4 Protección Necesidad de refinar o concretar el estudio para casos concretos, dada la gran cantidad de valores posibles. (1/35) 2 0,05 Investigación Tabla 16: Lista de riesgos posibles del proyecto Tras la identificación de riesgos, se ha desestimado la elaboración de un plan de contingencia (es decir, un plan B a parte del plan de acción), pues los riesgos de mayor cuantificación entran dentro de la planificación y solo elaborar este plan para cada riesgo llevaría más tiempo que ejecutar únicamente el plan de acción preparado para ello.
53 Capítulo 5: Proceso de ingeniería de software. Análisis 5.1 Requisitos de la aplicación 5.1.1 Requisitos funcionales 5.1.2 Requisitos no funcionales RF1 La aplicación deberá poder descargar datos desde a Internet. RF2 El usuario deberá poder seleccionar cualquier empresa del IBEX 35 actual. RF3 La aplicación deberá ser un cliente, no hay lógica de servidor. RF4 La base de datos será local, no remota. RF5 El estudio estará limitado a los datos de empresas del IBEX 35 del año 2018, pero si una empresa cae del IBEX, será removida de la aplicación. RF6 Se deberá desarrollar el estudio del indicador del cruce de medias móviles. RF7 Se deberá desarrollar el estudio del oscilador del momento. RF8 Se deberá complementar los resultados obtenidos con una gráfica lineal. RF9 El indicador del cruce de medias tendrá preferencia en desarrollarse. RF10 El usuario deberá poder seleccionar una de todas las empresas del IBEX 35. RF11 La aplicación deberá poder consultar el histórico de cotizaciones de una empresa durante el año pasado. RF12 La aplicación deberá poder consultar los estudios y el histórico sin conexión a internet si ha descargado los datos con anterioridad. Tabla 17: Lista de requisitos funcionales de la aplicación RNF1 La aplicación deberá funcionar en dispositivos Android con la versión 6 de Android (Marshmallow, Google API 23) o en su defecto para la versión 5 (Lollipop, Google API 21-22) o superior. RNF2 En la medida de lo posible se utilizará librerías de software libre. RNF3 Para la descarga de datos el dispositivo debe intentar conectarse por Wifi antes que por conexión de datos. RNF4 La tecnología de la Base de Datos será SQLite. RNF5 El tiempo de respuesta de la aplicación debe ser aceptable (<1-5 segundos). RNF6 Las gráficas, aunque deben ser visibles desde la pantalla de un Smartphone, deberá estar más optimizada para su uso mediante Tablet. Tabla 18: Lista de requisitos no funcionales de la aplicación
54 5.2 Diagrama de casos de uso. 5.3 Descripción de casos de uso. 5.3.1 Consultar histórico Actores: Usuario de la aplicación. Descripción: En este caso de uso se cubre la funcionalidad que permite al usuario de la aplicación consultar el histórico de una empresa del IBEX 35 durante 2018, es decir, las cotizaciones que ha cosechado la empresa en el año 2018. Precondiciones: - El usuario ha iniciado la aplicación y se encuentra en la ventana principal, de forma que la aplicación ya ha cargado los datos de las empresas al iniciarse. - El dispositivo debe tener conexión a internet en caso de que no haya descargado los datos de dicha empresa con anterioridad. Escenario principal: 1. El caso de uso comienza cuando el usuario a través de la ventana principal selecciona una empresa del IBEX 35. 2. El sistema recoge la selección del usuario y la muestra. 3. El usuario selecciona “Consultar Histórico” en la ventana principal. 4. El sistema carga los datos de las cotizaciones recogidas de la empresa seleccionada. 4.1 Si los datos se han descargado con anterioridad, el sistema cargará los datos de su base de datos local. 4.2 Si los datos no se han descargado con anterioridad, el sistema lanzará una petición de descarga de datos y los almacenará en su base de datos local. 5. El sistema actualiza la ventana a la vista secundaria que muestre los datos del histórico de cotizaciones. Ilustración 20: Diagrama de Casos de Uso [Propia]
55 5.3.2 Consultar cruce de medias Actores: Usuario de la aplicación. Descripción: En este caso de uso se cubre la funcionalidad que permite al usuario de la aplicación consultar los resultados del estudio del cruce de medias de una empresa del IBEX 35 aplicados durante 2018, es decir, los días y valores del año 2018 en los que según el indicador del cruce de medias hay que comprar o vender. Los días en los que hay que mantenerse sin realizar ninguna acción no se muestran. Precondiciones: - El usuario ha iniciado la aplicación y se encuentra en la ventana principal, de forma que la aplicación ya ha cargado los datos de las empresas al iniciarse. - El dispositivo debe tener conexión a internet en caso de que no haya descargado los datos de dicha empresa con anterioridad. Escenario principal: 1. El caso de uso comienza cuando el usuario a través de la ventana principal selecciona una empresa del IBEX 35. 2. El sistema recoge la selección del usuario y la muestra. 3. El usuario selecciona “Estudio de Medias Móviles” en la ventana principal. 4. El sistema carga los datos de las cotizaciones recogidas de la empresa seleccionada. 4.1 Si los datos se han descargado con anterioridad, el sistema cargará los datos de su base de datos local. 4.2 Si los datos no se han descargado con anterioridad, el sistema lanzará una petición de descarga de datos y los almacenará en su base de datos local. 5. El sistema calcula las cotizaciones en las que hay que comprar y vender dados según los datos recogidos y según el estudio programado para el cruce de medias. 6. El sistema actualiza la ventana a la vista secundaria que muestre los resultados obtenidos.
56 5.3.3 Consultar momento Actores: Usuario de la aplicación. Descripción: En este caso de uso se cubre la funcionalidad que permite al usuario de la aplicación consultar los resultados del estudio del momento de una empresa del IBEX 35 aplicados durante 2018, es decir, los días y valores del año 2018 en los que según el oscilador del momento hay que comprar o vender. Los días en los que hay que mantenerse sin realizar ninguna acción no se muestran. Precondiciones: - El usuario ha iniciado la aplicación y se encuentra en la ventana principal, de forma que la aplicación ya ha cargado los datos de las empresas al iniciarse. - El dispositivo debe tener conexión a internet en caso de que no haya descargado los datos de dicha empresa con anterioridad. Escenario principal: 1. El caso de uso comienza cuando el usuario a través de la ventana principal selecciona una empresa del IBEX 35. 2. El sistema recoge la selección del usuario y la muestra. 3. El usuario selecciona “Estudio del Momento” en la ventana principal. 4. El sistema carga los datos de las cotizaciones recogidas de la empresa seleccionada. 4.1 Si los datos se han descargado con anterioridad, el sistema cargará los datos de su base de datos local. 4.2 Si los datos no se han descargado con anterioridad, el sistema lanzará una petición de descarga de datos y los almacenará en su base de datos local. 5. El sistema calcula las cotizaciones en las que hay que comprar y vender dados según los datos recogidos y según el estudio programado para el momento. 6. El sistema actualiza la ventana a la vista secundaria que muestre los resultados obtenidos. 5.3.4 Consultar Gráfico Actores: Usuario de la aplicación. Descripción: El usuario ha realizado uno de los casos de uso anteriores y su intención es consultar los resultados del caso de uso concreto en forma de gráfico. Precondiciones: - El usuario ha finalizado uno de los casos de uso anteriores. Escenario principal: 1. El caso de uso comienza al terminar uno de los anteriores casos de uso. En concreto, cuando el usuario selecciona “Ver Gráfico”. 2. El sistema muestra la gráfica correspondiente de los resultados.
57 5.4 Realizaciones de Caso de Uso (Análisis) A partir de ahora se abreviará Caso de Uso como CU. Para modelar el Análisis se ha utilizado el esquema BCE (Boundary-Entity-Control). 5.4.1 Realización de CU – Análisis: Consultar histórico Ilustración 21: Realización de CU – Análisis: Consultar histórico [Propia]
64 6.2 Patrones software de la aplicación Un patrón software o patrón de diseño proporciona un esquema para el refinamiento de subsistemas o componentes de un sistema software, o las relaciones entre ellos. Estos patrones generalmente describen una estructura recurrente de componentes que se comunican y que resuelven un problema general de diseño (dentro de un contexto particular). Los patrones software utilizados en el diseño de la aplicación han sido destinados principalmente para la lógica de acceso a datos y otras gestiones como adaptadores y proxys. Para acceso a datos, se ha intentado utilizar en la medida de lo posible el patrón DAO (Data Access Object). El patrón DAO abstrae y encapsula el acceso a las fuentes de datos en una capa separada. Proporciona una interfaz de acceso a la Base de Datos, para manejarla independientemente de su implementación. Y lo más importante, devuelve las consultas como objetos, lo cual es necesario para seguir un esquema de Domain Model como se ha expuesto anteriormente. [37] Ilustración 27: Estructura del patrón DAO [37] Para determinar si durante la realización del caso de los casos de uso del sistema la aplicación contiene datos previos en local o no, se ha implementado una comprobación a modo similar al patrón proxy, que en función de si tiene datos o no, realiza la petición de datos en consecuencia o responde él mismo con los datos. Por otro lado, existe el acceso a la fuente externa para la descarga de datos. Esto se podría haber resuelto mediante la aplicación del patrón adaptador, destinando su responsabilidad exclusivamente a parametrizar la URL. No obstante, dado que la parte de la petición de datos es la más larga a nivel de código, se ha decidido no aumentar su complejidad, poniendo esta responsabilidad en el controlador principal de la aplicación. Como consecuencia, si cambiara la fuente de datos (algo que podría ocurrir, ya que no pertenece al sistema), habría que modificar el código del controlador principal en lugar de solo la parte de la parametrización. Pero, por otra parte, es improbable y se gana en facilidad de diseño, ya que la tarea de parametrización de la URL es bastante simple. Para finalizar, existe un caso similar para la interfaz inicial, la cual tiene tres botones que podrían implementar el patrón comando, aislando su funcionalidad en clases, en lugar de que el controlador de la vista gestione directamente sus eventos. Con el patrón comando se ganaría independencia, pues si se modifica las acciones de los botones, no habría que modificar el controlador, porque su función está aislada. No obstante, para implementar el patrón comando, habría que elevar la complejidad de la solución, por lo que se ha desestimado. En ambos casos anteriores, los inconvenientes de aplicación de dichos patrones son mayores que las ventajas.
65 6.3 Realizaciones de Caso de Uso – Diseño 6.3.1 Realización de CU – Diseño: Consultar histórico Ilustración 28: Caso de Uso: Consultar histórico (Diseño) [Propia]
66 Ilustración 29: Fragmento combinado : Petición de datos [Propia]
67 6.3.2 Realización de CU – Diseño: Consultar cruce de medias Ilustración 30: Realización de CU – Diseño: Consultar cruce de medias [Propia]
68 6.3.3 Realización de CU – Diseño: Consultar momento Ilustración 31: Realización de CU – Diseño: Consultar momento [Propia]
69 6.3.4 Realización de CU – Diseño: Consultar gráfico Al igual que se destacó en la etapa de análisis de dicho caso de uso, como extiende de los tres anteriores, solamente se va a representar una única vez. En este caso, será el caso de uso extendido de consultar el momento. Ilustración 32: Realización de CU – Diseño: Consultar gráfico (extends Consultar Momento) [Propia]
70 6.4 Diagrama de Clases de Diseño para los Casos de Uso Llegados a este apartado, exponer los Diagramas de Clases de Diseño (DCD) para los cuatro casos de uso sería una tarea que realizaría algo pesada la lectura, y dado que los casos de uso son similares, no aportaría mucho al lector. Por ello, se ha creído oportuno que solo figure en este apartado el DCD el caso de uso anterior, que es el más completo. Destacar también que no figuran todos los componentes e interfaces de que incorpora Android, pues quedaría un diagrama muy costoso de entender. 6.4.1 DCD – Consultar Gráfico (Extends Consultar Momento) Ilustración 33: DCD - Consultar Grafico (extends Momento) [Propia]
71 6.5 Diseño de la Base de Datos La Base de Datos de la aplicación consta de dos tablas, la de empresas y la de cotizaciones, conteniendo esta segunda una clave ajena del atributo “acrónimo” de la primera. De esta forma, la segunda tabla recoge todas las cotizaciones de manera única, relacionadas a su empresa por el acrónimo, es decir, que el acrónimo se utiliza como clave ajena. Esto evita el tener, por ejemplo, que crear 35 tablas Cotizaciones. La tabla EMPRESA, como su nombre indica, guarda información sobre las empresas. Cada una está definida por un acrónimo único, que refleja el identificador en forma de tres caracteres de la empresa, el nombre, que refleja el nombre completo de la empresa, una columna por si en un futuro se quiere guardar de información acerca de la empresa y por último la columna de petición. Esta última columna se añadió posteriormente en una idea de adaptar las empresas a la fuente de los datos, ya que esta, por algún extraño motivo no identifica a las empresas por su acrónimo (el cual incluso muestra en la página), si no que parece archivarlas por una cadena de caracteres un poco arbitraria, la cual no ha habido más remedio que investigar y añadir manualmente empresa por empresa. El Lenguaje de Definición de Datos (DDL) escrito en sintaxis de SQLite necesario para crear dichas tablas que se ha utilizado es el mostrado a continuación. Para la tabla que contiene información sobre las empresas: create table EMPRESA ( acronimo TEXT PRIMARY KEY, nombre TEXT, info TEXT, peticion TEXT); Para la tabla que contiene información sobre las cotizaciones de cada empresa. create table COTIZACIONES ( acronimo TEXT, fecha TEXT, ultimo REAL, apertura REAL, dif REAL, max REAL, min REAL, volumen REAL, FOREIGN KEY ('acronimo') REFERENCES EMPRESA('acronimo') ON DELETE CASCADE, PRIMARY KEY('acronimo','fecha'));
72 Ilustración 34: Diagrama Entidad-Relación de la BD 6.6 Diseño de la interfaz La que anteriormente se ha denominado capa de presentación corresponde a la interfaz de usuario que ofrece la aplicación. Desarrollar interfaces para dispositivos móviles es bastante diferente a desarrollarlas para portátiles y PCs, aunque ambas estén desarrolladas siguiendo una estructura XML. Para la interfaz de la ventana principal, se ha pensado que la mejor manera de permitir que el usuario elija una empresa del IBEX 35 en la pequeña pantalla del dispositivo móvil es mediante un spinner, comúnmente llamado desplegable o select en HTML. Posteriormente, para que el usuario pueda escoger qué tipo de estudio quiere, se han dispuesto dos botones dentro de un panel (layout) horizontal, para maximizar el tamaño de la pantalla, independientemente de si el dispositivo es más o menos grande. Por último, un botón en la parte inferior para dar la oportunidad de ver el estudio. Para las ventanas secundarias, dado que su función es muy parecida, que es la de mostrar información al usuario en forma de tabla, se ha realizado un diseño que permita mostrar de manera óptima esta información, mediante una tabla capaz de realizar un scroll vertical y posteriormente la reutilización de dicha interfaz para los tres casos de uso. Esto es posible gracias a utilización de los llamados fragments. Introducidos a partir de la versión 3 de Android (Ice Cream Sandwich, Google API 11), los fragments permiten modular las vistas, de tal manera que permiten modular muy fácilmente, conteniendo “fragmentos” de la interfaz de usuario. Esto permite al programador, entre otras cosas, cambiar completamente la parte de la interfaz sin tener que crear nuevos contenedores para cada configuración. En otras palabras, un fragment se puede lanzar varias veces, reutilizando el contenido de u vista, en lugar de crear varias vistas. [14] Un fragment puede lanzarse de manera estática o dinámica. Para lanzarlo de manera estática, es necesario añadirlo manualmente sobre la interfaz de cada vista donde se pretende que aparezca el contenido del fragment. Como es recomendable modificar el código de la interfaz lo menos posible en un diseño de capas, se ha cargado esta responsabilidad a cada controlador de cada interfaz, lanzando cada uno de manera dinámica su propio fragment dentro (o, “por encima”) de su vista asociada.
73 6.7 Pruebas En este apartado se va a llevar a cabo un seguimiento del cumplimiento de los requisitos de la aplicación, así como la elaboración de una batería de pruebas. Prueba realizada Respuesta esperada Respuesta obtenida Dispositivo con acceso a internet por WIFI, se prueba a descargar datos de una empresa cualquiera, sin datos guardados anteriormente. Datos descargados. Datos descargados. Los muestra en la tabla. Dispositivo sin acceso a internet por WIFI, se prueba a descargar datos de una empresa cualquiera, sin datos guardados anteriormente. Datos no descargados, pero la aplicación sigue Mensaje de error: “Conecte el dispositivo a internet!” Dispositivo sin acceso a internet por WIFI, se prueba a descargar datos de una empresa cualquiera, con datos guardados anteriormente. Se muestran los datos. Se muestran los datos. No se descargan, se cargan de la Base de Datos local. Pantalla inicial, se prueba a buscar todas las empresas del IBEX 35 una por una. Están todas. Están todas. Pantalla inicial, se prueba a buscar todas las empresas del IBEX 35, cuando se sabe que una empresa ha dejado de estar en el IBEX 35. Falta la empresa Falta la empresa, porque la aplicación no se actualiza automáticamente. Comprobación de los límites del estudio, viendo en Consultar Histórico Datos del 1/1/2018 al 31/12/2018. Datos del 3/1/2018 al 31/12/2018 (1 y 2 de Enero no hay Bolsa). Comprobación o demostración de que el cálculo de los resultados del cruce de medias y el momento son los correctos, mediante métodos de debug por consola. Notifica la acción correcta cuando detecta el cambio de valores solicitado. Notifica la acción correcta cuando detecta el cambio de valores solicitado. La gráfica representa correctamente los datos. Se escoge una empresa, una operación y se comprueba que los registros de las tablas (día y valor) coincidan con los representados Los pares fecha y valor coinciden de principio a fin. Los pares fecha y valor coinciden de principio a fin (fácilmente comprobable con el cruce de medias). Tabla 19: Batería de pruebas finales de la aplicación Nota: En un principio se quería haber ejecutado una batería de pruebas de caja negra. No obstante, esto no ha sido posible en la prueba de demostración del cálculo correcto de días. Es indispensable conocer el código para ver es
80 Actualizaciones destinadas a mejoras: Nº. Actualización 1 El desarrollo de otro indicador u oscilador. 2 Permitir al usuario borrar todos los datos almacenados. 3 Permitir al usuario elegir desde qué fecha de inicio quiere realizar los estudios de las cotizaciones. 4 Permitir al usuario elegir desde qué fecha de fin quiere realizar los estudios de las cotizaciones. 5 Añadir en la parte superior un menú con este tipo de configuraciones 6 Optimización o paralelización del cálculo de resultados, dentro de lo que la tecnología móvil permite. 7 Desarrollo de algún tipo de parche que sea capaz de identificar por sí solo cuándo una empresa ha dejado de cotizar en el IBEX 35, y actualizar el menú de selección de la aplicación 8 Permitir al usuario la descarga de datos mediante conexión de datos y no únicamente por Wifi. 9 Avisar al usuario de que no se encuentra disponible la conexión a internet. 10 Optimizar la vista de la aplicación en función del tamaño de pantalla del dispositivo utilizado. 11 Ofrecer la posibilidad de guardar el contenido de la BD de la aplicación en una tarjeta SD, mediante los permisos necesarios. 12 Ofrecer una ventana de información sobre la empresa en el histórico, guardando dichos datos en la tabla empresa de la BD. 13 Cuestiones de interfaz. Mejorar el logo, cambiar diseño botones, etc. Tabla 24: Mejoras futuras Complemento futuro o aplicación nueva futura a mayores: Una vez los economistas determinen qué estudio es más fiable de los destacados (para cada caso), se podría implementar una aplicación similar, pero de diferente naturaleza. Esta aplicación descargaría automáticamente datos desde hace justo un año de la fecha actual en la que el usuario desee ver los resultados del estudio. Además, su objetivo no debería ser el de ver los resultados de un histórico de compras o ventas, si no de que en función de los valores que retorna el estudio de qué tiene que hacer el día que lo solicita, si comprar, vender o mantenerse. De esta manera, la aplicación podría ser utilizada por cualquier usuario, no solo un economista. Para realizar estos cambios bastaría con añadir un nuevo botón o funcionalidad en la ventana principal, pero a la hora de realizar la descarga de datos, esta debería estar parametrizada, de tal forma, que calcule un año atrás de donde se encuentra el usuario. Finalmente, aunque se descarguen todos los datos, la capa de acceso a datos debería de acceder solamente a los del último año (porque al pasar los días, habría habiendo datos de hace más de un año en el BD), y de esta forma se respetaría el estudio original realizado durante un año, y se reutilizaría al máximo el código de la aplicación. Esta posibilidad se barajeó durante las reuniones iniciales del proyecto, no obstante, se acabó desestimando por falta de tiempo, tanto del proyecto de informática como el de economía, ya que esto depende no solo del programador, sino del otro proyecto. En cualquier caso, queda como trabajo futuro de la aplicación.
81 Referencias y bibliografía [1] «www.bolsamadrid.es,» [En línea]. Available: http://www.bolsamadrid.es/esp/Inversores/Formacion/QueeslaBolsa.aspx. [2] «Economipedia,» [En línea]. Available: https://economipedia.com/definiciones/mercadocontinuo.html. [Último acceso: 2019]. [3] L. H. García, TFG: Desarrollo de una aplicación de recogida,, 2017. [4] «Wikipedia,» [En línea]. Available: https://es.wikipedia.org/wiki/IBEX_35. [5] «www.r4.com,» [En línea]. Available: https://www.r4.com/que-necesitas/formacion/diccionario. [6] D. (blog), «aprenderbolsa.com,» [En línea]. Available: http://aprenderbolsa.com/cotizaciones-de- apertura-maxima-minima-y-de-cierre/. [7] «activotrade,» [En línea]. Available: https://www.activotrade.com/es/formacao-dicionario.html. [8] «estrategiasdebolsa,» [En línea]. Available: http://www.estrategiasdebolsa.es/articulos/volumen/index.php. [9] R. V. Santana, TFG: Análisis técnico de la bolsa mediante el uso de la Inteligencia Artificial, Valladolid, 2019. [10] «bolsamadrid,» [En línea]. Available: http://www.bolsamadrid.es/esp/aspx/Mercados/Precios.aspx?indice=ESI100000000&punto=indice. [11] «investing,» [En línea]. Available: www.es.investing.com. [12] «Rankia.com,» [En línea]. Available: Rankia.com. [13] «invertia,» [En línea]. Available: https://www.invertia.com/es/.
82 [14] J. Adiego, Transparencias de la asignatura "Sistemas Móviles", Valladolid: Escuela de Ingeniería Informática de Valladolid, 2019. [15] «fayerwayer,» [En línea]. Available: https://www.fayerwayer.com/2012/08/los-computadores-del- apolo-11-que-llevaron-a-neil-armstrong-a-la-luna/. [16] «Wikipedia,» [En línea]. Available: https://es.wikipedia.org/wiki/Anexo:Historial_de_versiones_de_Android. [17] «wikipedia,» [En línea]. Available: https://es.wikipedia.org/wiki/Android_Studio. [18] «Requisitos Mínimos de Android Studio,» [En línea]. Available: https://www.javaworld.com/article/3095406/android-studio-for-beginners-part-1-installation-and- setup.html. [19] «Wikipedia,» [En línea]. Available: https://en.wikipedia.org/wiki/Java_(programming_language). [20] «Java 8 API,» [En línea]. Available: https://docs.oracle.com/javase/8/docs/api/. [21] «Wikipedia,» [En línea]. Available: https://es.wikipedia.org/wiki/Microsoft_Excel. [22] «Wikipedia,» [En línea]. Available: https://es.wikipedia.org/wiki/Valores_separados_por_comas. [23] «Apache Software Foundation,» [En línea]. Available: https://poi.apache.org. [24] «developer.android.com - Android support for Java 8,» [En línea]. Available: https://developer.android.com/studio/write/java8-support?hl=es-419. [25] «Opencsv,» [En línea]. Available: http://opencsv.sourceforge.net. [26] «Maven Apache Project,» [En línea]. Available: http://maven.apache.org. [27] P. Jahoda, «Perfil de GitHub,» [En línea]. Available: https://github.com/PhilJay.
83 [28] P. Jahoda, «Perfil de Twitter de butleroyapp,» [En línea]. Available: https://twitter.com/butleroyapp. [29] P. Jahoda, «MPAndroidChart,» [En línea]. Available: https://github.com/PhilJay/MPAndroidChart#quick-start. [30] «Wikipedia - SQLite,» [En línea]. Available: https://es.wikipedia.org/wiki/SQLite. [31] D. R. Hipp, «sqlite.org,» [En línea]. Available: https://www.sqlite.org/index.html. [32] C. H. Díez, Asignatura Adminsitración de Base de Datos, Valladolid: Escuela de Ingeniería Informática de Valladolid, 2019. [33] «SQLite API,» [En línea]. Available: https://www.sqlite.org/backup.html. [34] «Microsoft Office Word,» [En línea]. Available: https://products.office.com/es-es/officeonline/documents-spreadsheets-presentations-office-online. [35] «Visual Paradigm,» [En línea]. Available: https://www.visual-paradigm.com. [36] P. d. l. F. Redondo, Asignatura Planificación y Gestión de Plataformas Informáticas, Valladolid: Universidad de Ingeniería Informática de Valladolid, 2019. [37] J. M. M. Corral, Transparencias de la asignatura Asignatura DISEÑO, INTEGRACIÓN Y ADAPTACIÓN DE SOFTWARE, Valladolid: Escuela de Ingeniería Informatica de Valladolid, 2019. [38] «Android.com,» [En línea]. Available: https://www.android.com/intl/es_es/.
84 Anexos Anexo I: Contenido del DVD El DVD contiene el código fuente de la aplicación (en ZIP), el archivo APK instalable de la aplicación, la memoria del TFG en PDF y los diagramas en JPG. Anexo II: Manual de usuario Para facilitar al usuario el uso de la aplicación, se ha diseñado el siguiente manual de usuario. Para una mayor comprensión del lector, se adjuntan capturas de pantalla de cada paso, así como unas flechas de colores. Estas flechas indican, las de color rojo, dónde tiene que pulsar el usuario, y las de color azul a dónde le llevará la aplicación. a) Paso 1: Requisitos - Dispositivo que corra el Sistema Operativo Android, en su versión 6 o superior (Google API 26, Marshmallow). - Se necesita que el dispositivo tenga conexión a internet vía Wifi. - Lector de discos para extraer la aplicación del DVD. b) Paso 2: Instalación: Extraer la aplicación y guardarla en el dispositivo móvil. La instalación de la aplicación mediante APK es muy sencilla, simplemente debe seleccionar con el dedo el archivo APK llamado IBEXStudio.apk y saldrá el menú predeterminado de instalación de Android, como indican las siguientes capturas: Ilustración 35: Instalación [Propia]
85 Busque la aplicación con el siguiente icono en su dispositivo Android, el cual está basado en el logo de la Bolsa de Madrid. Ilustración 36: logo de la aplicación IBEXStudio [Propia] c) Paso 3: Ver el histórico Una vez se encuentre en la pantalla o vista principal de la aplicación, para ver el histórico de una empresa durante el año 2018 debe seleccionar primero dicha empresa, mediante el menú desplegable, y a continuación seleccionar en “Consultar Histórico”. Puede usted a mayores consultar un gráfico representando los datos del histórico, para una mejor visualización, tal y como indican las siguientes capturas de pantalla: Ilustración 37: Ver histórico [Propia]
86 d) Paso 4: Ver resultados del cruce de medias De manera similar al caso anterior, una vez se encuentre en la pantalla o vista principal de la aplicación, para ver los resultados del cruce de medias móviles a 12 y 26 días de una empresa durante el año 2018 debe seleccionar primero dicha empresa, mediante el menú desplegable, y a continuación seleccionar en “Estudio de cruce de medias”. Puede usted a mayores consultar un gráfico representando los datos de dicho indicador, para una mejor visualización, tal y como indican las siguientes capturas de pantalla: Ilustración 38: Consultar resultados del cruce de medias [Propia]
87 e) Paso 5: Ver resultados del momento De manera similar al caso anterior, una vez se encuentre en la pantalla o vista principal de la aplicación, para ver los resultados del estudio del momento aplicado a la cotización actual con su cotización cuatro días atrás de una empresa durante el año 2018 debe seleccionar primero dicha empresa, mediante el menú desplegable, y a continuación seleccionar en “Estudio del momento”. Puede usted a mayores consultar un gráfico representando los datos de dicho oscilador, para una mejor visualización, tal y como indican las siguientes capturas de pantalla: Ilustración 39: Consultar resultados del cruce de medias [Propia]