REFACTORING DE APLICACIONES MOVILES ANDROID UTILIZANDO TECNICA DE OFFLOADING - ridaa unicen
←
→
Transcripción del contenido de la página
Si su navegador no muestra la página correctamente, lea el contenido de la página a continuación
Universidad Nacional del Centro Facultad de Ciencias Exactas TRABAJO FINAL DE GRADO PARA LA CARRERA DE INGENIERÍA DE SISTEMAS REFACTORING DE APLICACIONES MOVILES ANDROID UTILIZANDO TECNICA DE OFFLOADING Autores: Ané, Juan Cruz – Rossi, Agustin Ignacio Director: Dr. Mateos Diaz, Cristian Codirector: Ing. Rodriguez, Ana
AGRADECIMIENTOS Queremos agradecer a todos los que nos han ayudado en este camino, un camino de altibajos pero que gracias a ellos estamos en este lugar. Sería interminable nombrar a todos ellos pero sí podemos destacar a nuestros familiares, novias y amigos. Hoy llegamos al fin de una primera etapa profesional para dar paso a nuevas que seguramente nos traerán grandes satisfacciones. De nuevo, muchas gracias. Juan y Agus
RESUMEN El uso de dispositivos móviles crece cada vez de forma más abrupta por la constante demanda de sus usuarios de realizar todo tipo de actividades en cualquier momento. Así, las necesidades que se presentan hace que las compañías que crean estos dispositivos móviles generen hardware cada vez más potente para satisfacerlas. Es decir, cámaras con más definición, pantallas más grandes, incremento de la velocidad táctil, entre otras cosas, haciéndolos cada vez más similares a pequeñas computadoras de escritorio. Todo esto hace que algunas características de los dispositivos móviles como lo es, por ejemplo, la batería, no avancen de la forma que lo hacen otros aspectos. En muchos casos, las baterías pasaron de durar semanas a sólo un día. Se han planteado gran cantidad de soluciones con respecto a los consumos excesivos a nivel hardware, por ejemplo, apagando y prendiendo ciertos sensores de acuerdo a su uso en los dispositivos. A raíz de esto, nace la principal motivación de este trabajo que es lograr reducir los consumos de batería de las aplicaciones móviles. Particularmente, el foco del trabajo es el sistema operativo Android, y utilizando la técnica de “offloading”. Esta se basa en usar servidores conectados a una red para ejecutar lógicas complejas provenientes desde el dispositivo móvil. Para aprovechar las ventajas que brinda esta técnica es necesario realizar una refactorización en el código fuente de estas aplicaciones móviles. Es por ello que se desarrolló una herramienta que genera estas refactorizaciones sobre las aplicaciones y permite así ejecución remota de cómputos intensivos. Durante el desarrollo de la misma se tomaron en referencia varios proyectos que siguen esta línea de mejoras y se enriquecieron ciertas características de los mismos. Además, se buscó que esta pueda ser utilizada por cualquier aplicación móvil sin importar la versión del sistema operativo Android en la que fuera ejecutada. Posterior al desarrollo de la misma se realizaron diversas pruebas bajo diferentes dispositivos móviles con aplicaciones que requieren lógicas computacionales intensivas, que son grandes consumidoras de batería. El objetivo de esto fue analizar los resultados obtenidos de las refactorizaciones y exponer los beneficios que trae la utilización de esta técnica sobre los consumos de batería. También se buscó resaltar la importancia de varios aspectos arquitectónicos de las aplicaciones refactorizadas que generan un importante impacto en la mejora obtenida a través de la técnica presentada.
INDICE GENERAL 1. INTRODUCCIÓN ......................................................................................................................... 12 1.1. MOTIVACIÓN ....................................................................................................................................... 14 1.2. OBJETIVO ............................................................................................................................................... 15 1.3. ORGANIZACIÓN DEL TRABAJO .................................................................................................... 16 2. DISPOSITIVOS MÓVILES – CONSUMO DE BATERÍA ....................................................... 17 2.1. INTRODUCCIÓN .................................................................................................................................. 17 2.2. TELÉFONOS INTELIGENTES ......................................................................................................... 18 2.3. PROLIFERACIÓN DE LOS TELÉFONOS INTELIGENTES ..................................................... 19 2.4. SISTEMA OPERATIVO ANDROID ................................................................................................. 20 2.4.1. ¿POR QUÉ ANDROID? ................................................................................................................... 21 2.5. EL PROBLEMA DE BATERÍA EN LOS TELÉFONOS INTELIGENTES ANDROID ......... 22 2.6. CONCLUSIONES .................................................................................................................................. 26 3. ESTADO DEL ARTE ................................................................................................................... 27 3.1. INTRODUCCIÓN .................................................................................................................................. 27 3.2. TRABAJOS RELACIONADOS ........................................................................................................... 27 3.2.1. MAUI .................................................................................................................................................... 28 3.2.2. CLONE CLOUD ................................................................................................................................. 29 3.2.3. THINKAIR .......................................................................................................................................... 30 3.2.4. COMET ................................................................................................................................................ 31 3.2.5. EMCO ................................................................................................................................................... 32 3.2.6. ODESSA............................................................................................................................................... 33 3.2.7. DPARTNER........................................................................................................................................ 34 3.2.8. DISCUSIÓN ........................................................................................................................................ 36 3.3. TRABAJO PROPUESTO ..................................................................................................................... 37 3.4. CONCLUSIONES .................................................................................................................................. 38 4. DISEÑO E IMPLEMENTACIÓN ............................................................................................... 40 4.1. INTRODUCCIÓN .................................................................................................................................. 40 4.2. REFACTORIZACIÓN: PASO A PASO ............................................................................................. 41 4.3. CLASIFICACIÓN DE CLASES ........................................................................................................... 43 4.4. DECISIONES DE DISEÑO ................................................................................................................. 44 4.4.1. Patrones de diseño ........................................................................................................................ 45 4.4.2. Anti-patrones de diseño .............................................................................................................. 48 4.5. RESTRICCIONES EN PROYECTOS................................................................................................ 50 4.6. PREFERENCIAS ................................................................................................................................... 52 4.6.1. FILTROS EN MÉTODOS QUE PERMITEN EJECUCIÓN REMOTA ................................ 52 4.6.2. DECISIONES DE EJECUCIÓN EN MÉTODOS ....................................................................... 56 4.6.3. CONSIDERACIONES PARA REFACTORIZACIONES .......................................................... 58 4.7. CONCLUSIONES .................................................................................................................................. 59 5. EVALUACIÓN DE RESULTADOS ............................................................................................ 60 5.1. INTRODUCCIÓN .................................................................................................................................. 60 5.2. DISPOSITIVOS Y APLICACIONES MÓVILES ............................................................................. 60 5.3. MÉTRICAS ............................................................................................................................................. 65 5.4. RESULTADOS ....................................................................................................................................... 68 5.4.1. FIBONACCI ........................................................................................................................................ 68 5.4.2. MULTIPLICACIÓN DE MATRICES ........................................................................................... 73 5.4.3. FFT (TRANSFORMADA RÁPIDA DE FOURIER) ................................................................. 77 5.4.4. KP (PROBLEMA DE LA MOCHILA) ......................................................................................... 82 5.4.5. ANÁLISIS TIEMPOS DE CONSUMO DE RED ....................................................................... 86
5.5. CONCLUSIONES .................................................................................................................................. 88 6. CONCLUSIONES ......................................................................................................................... 90 6.1. TRABAJOS FUTUROS ........................................................................................................................ 91 7. BIBLIOGRAFÍA ........................................................................................................................... 94
INDICE DE FIGURAS FIGURA 1-1: CRECIMIENTO DE DISPOSITIVOS MÓVILES VS COMPUTADORAS DE ESCRITORIO .......................................... 12 FIGURA 1-2: PORCENTAJES DE LAS MAYORES FRUSTRACIONES DE LOS USUARIOS AL MOMENTO DE UTILIZAR LOS SMARTPHONES................................................................................................................................................................... 14 FIGURA 2-1: DISTRIBUCIÓN DE MARCAS QUE UTILIZAN EL SISTEMA OPERATIVO ANDROID EN SUS SMARTPHONES ... 21 FIGURA 2-2: PORCENTAJES DE SO USADOS DURANTE EL AÑO 2015 .................................................................................. 22 FIGURA 2-3: EL INCREMENTO DE LA CAPACIDAD DE LAS BATERÍAS VS EL TAMAÑO DE LAS PANTALLAS A LO LARGO DE LOS AÑOS ............................................................................................................................................................................ 23 FIGURA 2-4: EVOLUCIÓN DE LA CAPACIDAD DE LA BATERÍA VS OTRAS FUNCIONALIDADES DE LOS SMARTPHONES A LO LARGO DE UNA DÉCADA .................................................................................................................................................... 24 FIGURA 3-1: ARQUITECTURA A ALTO NIVEL DE MAUI .......................................................................................................... 29 FIGURA 3-2: PROTOTIPO DE ARQUITECTURA DE CLONECLOUD ........................................................................................... 30 FIGURA 3-3: ARQUITECTURA DE “OFFLOADING” QUE SIGUE EMCO ................................................................................... 33 FIGURA 4-1: PASO A PASO DE LA REFACTORIZACIÓN DE UN PROYECTO ANDROID ............................................................ 41 FIGURA 4-2: PATRÓN DE DISEÑO COMPOSITE ........................................................................................................................ 47 FIGURA 4-3: ANTI-PATRÓN LAVA FLOW ................................................................................................................................. 49 FIGURA 4-4: ANTI-PATRÓN POLTERGEISTS ............................................................................................................................. 50 FIGURA 4-5: IMPLEMENTACIÓN DE “SERIALIZABLE” ............................................................................................................. 51 FIGURA 4-6: COMPARACIÓN ENTRE UN MÉTODO QUE DEBE SER REFACTORIZADO PARA UTILIZAR OBJETOS EN VEZ DE TIPOS PRIMITIVOS ............................................................................................................................................................. 51 FIGURA 4-7: PREFERENCIA CORRESPONDIENTE PARA FILTRAR POR EL ARCHIVO DE MÉTODOS A REFACTORIZAR ...... 53 FIGURA 4-8: PREFERENCIA CORRESPONDIENTE PARA FILTRAR POR EXPRESIÓN EN EL NOMBRE DE CADA MÉTODO .. 54 FIGURA 4-9: PREFERENCIA CORRESPONDIENTE PARA FILTRAR POR LA COMBINACIÓN DE LOS TIPOS ANTERIORMENTE DETALLADOS ...................................................................................................................................................................... 55 FIGURA 4-10: PREFERENCIAS DE LA HERRAMIENTA PARA EJECUCIONES DE LOS MÉTODOS REFACTORIZADOS ........... 57 FIGURA 5-1: SAMSUNG GALAXY NOTE 3.................................................................................................................................. 61 FIGURA 5-2: MOTOROLA MOTO G ............................................................................................................................................ 61 FIGURA 5-3: SAMSUNG GALAXY Y PRO .................................................................................................................................... 62 FIGURA 5-4: GENERACIÓN DE MATRIZ RESULTANTE ............................................................................................................. 64 FIGURA 5-5: EJEMPLO DEL ALGORITMO DE “PROBLEMA DE LA MOCHILA” ........................................................................ 65 FIGURA 5-6: RESULTADOS OBTENIDOS DE LA MÉTRICA “TIEMPO DE RESPUESTA” EN SAMSUNG GALAXY NOTE 3 CON LA APLICACIÓN “FIBONACCI” .......................................................................................................................................... 69 FIGURA 5-7: RESULTADOS OBTENIDOS DE LA MÉTRICA “CONSUMO DE MAH” EN SAMSUNG GALAXY NOTE 3 CON LA APLICACIÓN “FIBONACCI” ................................................................................................................................................ 69 FIGURA 5-8: RESULTADOS OBTENIDOS DE LA MÉTRICA “AHORRO DE BATERÍA ENTRE EJECUCIONES” EN SAMSUNG GALAXY NOTE 3 CON LA APLICACIÓN “FIBONACCI” .................................................................................................... 70 FIGURA 5-9: RESULTADOS OBTENIDOS DE LA MÉTRICA “TIEMPO DE RESPUESTA” EN MOTOROLA MOTO G CON LA APLICACIÓN “FIBONACCI” ................................................................................................................................................ 71 FIGURA 5-10: RESULTADOS OBTENIDOS DE LA MÉTRICA “TIEMPO DE RESPUESTA” EN SAMSUNG GALAXY Y PRO CON LA APLICACIÓN “FIBONACCI” .......................................................................................................................................... 72 FIGURA 5-11: RESULTADOS OBTENIDOS DE LA MÉTRICA “TIEMPO DE RESPUESTA” EN SAMSUNG GALAXY NOTE 3 CON LA APLICACIÓN “MULTIPLICACIÓN DE MATRICES” ............................................................................................. 73 FIGURA 5-12: RESULTADOS OBTENIDOS DE LA MÉTRICA “CONSUMO DE MAH” EN SAMSUNG GALAXY NOTE 3 CON LA APLICACIÓN “MULTIPLICACIÓN DE MATRICES” ........................................................................................................... 74 FIGURA 5-13: RESULTADOS OBTENIDOS DE LA MÉTRICA “AHORRO DE BATERÍA ENTRE EJECUCIONES” EN SAMSUNG GALAXY NOTE 3 CON LA APLICACIÓN “MULTIPLICACIÓN DE MATRICES” ............................................................... 74 FIGURA 5-14: RESULTADOS OBTENIDOS DE LA MÉTRICA “TIEMPO DE RESPUESTA” EN MOTOROLA MOTO G CON LA APLICACIÓN “MULTIPLICACIÓN DE MATRICES” ........................................................................................................... 76 FIGURA 5-15: RESULTADOS OBTENIDOS DE LA MÉTRICA “TIEMPO DE RESPUESTA” EN SAMSUNG GALAXY Y PRO CON LA APLICACIÓN “MULTIPLICACIÓN DE MATRICES” ...................................................................................................... 76 FIGURA 5-16: RESULTADOS OBTENIDOS DE LA MÉTRICA “TIEMPO DE RESPUESTA” EN SAMSUNG GALAXY NOTE 3 CON LA APLICACIÓN “FFT”.............................................................................................................................................. 78 FIGURA 5-17: RESULTADOS OBTENIDOS DE LA MÉTRICA “CONSUMO DE MAH” EN SAMSUNG GALAXY NOTE 3 CON LA APLICACIÓN “FFT” ........................................................................................................................................................... 78 FIGURA 5-18: RESULTADOS OBTENIDOS DE LA MÉTRICA “AHORRO DE BATERÍA ENTRE EJECUCIONES” EN SAMSUNG GALAXY NOTE 3 CON LA APLICACIÓN “FFT” ............................................................................................................... 79
FIGURA 5-19: RESULTADOS OBTENIDOS DE LA MÉTRICA “TIEMPO DE RESPUESTA” EN MOTOROLA MOTO G CON LA APLICACIÓN “FFT” ........................................................................................................................................................... 80 FIGURA 5-20: RESULTADOS OBTENIDOS DE LA MÉTRICA “TIEMPO DE RESPUESTA” EN SAMSUNG GALAXY Y PRO CON LA APLICACIÓN “FFT” ...................................................................................................................................................... 81 FIGURA 5-21: RESULTADOS OBTENIDOS DE LA MÉTRICA “TIEMPO DE RESPUESTA” EN SAMSUNG GALAXY NOTE 3 CON LA APLICACIÓN “KP” ................................................................................................................................................ 82 FIGURA 5-22: RESULTADOS OBTENIDOS DE LA MÉTRICA “CONSUMO DE MAH” EN SAMSUNG GALAXY NOTE 3 CON LA APLICACIÓN “KP” ............................................................................................................................................................. 83 FIGURA 5-23: RESULTADOS OBTENIDOS DE LA MÉTRICA “AHORRO DE BATERÍA ENTRE EJECUCIONES” EN SAMSUNG GALAXY NOTE 3 CON LA APLICACIÓN “KP” .................................................................................................................. 83 FIGURA 5-24: RESULTADOS OBTENIDOS DE LA MÉTRICA “TIEMPO DE RESPUESTA” EN MOTOROLA MOTO G CON LA APLICACIÓN “KP” ............................................................................................................................................................. 85 FIGURA 5-25: RESULTADOS OBTENIDOS DE LA MÉTRICA “TIEMPO DE RESPUESTA” EN SAMSUNG GALAXY Y PRO CON LA APLICACIÓN “KP” ........................................................................................................................................................ 85 FIGURA 5-26: TIEMPOS DE CONSUMO DE RED EN SAMSUNG GALAXY NOTE 3 DE TODAS LAS APLICACIONES MÓVILES ............................................................................................................................................................................................. 87
INDICE DE TABLAS TABLA 3-1: COMPARACIÓN DE HERRAMIENTAS QUE UTILIZAN LOS SERVICIOS DE LA NUBE COMO UNO DE SUS FACTORES PRINCIPALES ................................................................................................................................................... 36 TABLA 5-1: RESULTADOS OBTENIDOS PARA LA APLICACIÓN “FIBONACCI” CON SAMSUNG GALAXY NOTE 3 ............... 70 TABLA 5-2: RESULTADOS OBTENIDOS PARA LA APLICACIÓN “FIBONACCI” CON CADA UNO DE LOS DISPOSITIVOS MÓVILES PARA LA MÉTRICA “TIEMPO DE RESPUESTA” ............................................................................................... 72 TABLA 5-3: RESULTADOS OBTENIDOS PARA LA APLICACIÓN “MULTIPLICACIÓN DE MATRICES” CON SAMSUNG GALAXY NOTE 3 ................................................................................................................................................................ 75 TABLA 5-4: RESULTADOS OBTENIDOS PARA LA APLICACIÓN “MULTIPLICACIÓN DE MATRICES” CON CADA UNO DE LOS DISPOSITIVOS MÓVILES PARA LA MÉTRICA “TIEMPO DE RESPUESTA”...................................................................... 77 TABLA 5-5: RESULTADOS OBTENIDOS PARA LA APLICACIÓN “FFT” CON SAMSUNG GALAXY NOTE 3 .......................... 79 TABLA 5-6: RESULTADOS OBTENIDOS PARA LA APLICACIÓN “FFT” CON CADA UNO DE LOS DISPOSITIVOS MÓVILES PARA LA MÉTRICA “TIEMPO DE RESPUESTA” ............................................................................................................... 81 TABLA 5-7: RESULTADOS OBTENIDOS PARA LA APLICACIÓN “KP” CON SAMSUNG GALAXY NOTE 3 ............................. 84 TABLA 5-8: RESULTADOS OBTENIDOS PARA LA APLICACIÓN “KP” CON CADA UNO DE LOS DISPOSITIVOS MÓVILES PARA LA MÉTRICA “TIEMPO DE RESPUESTA” ............................................................................................................... 86 TABLA 5-9: RESULTADOS OBTENIDOS PARA CADA UNA DE LAS APLICACIONES MÓVILES PARA LA MÉTRICA “TIEMPO DE CONSUMO DE RED” ...................................................................................................................................................... 87
1. INTRODUCCIÓN Los dispositivos móviles, más específicamente los celulares, han pasado de ser dispositivos con funcionalidades limitadas a ser pequeñas computadoras que caben en la palma de la mano. Para poder evaluar el cambio que se ha producido basta comparar una computadora de años atrás en donde su memoria RAM no superaba los 128MB y sus procesadores eran limitados (Ej. Intel Pentium III 933 Mhz) comparados con los de los celulares actuales que cuentan hasta con 8 núcleos funcionando a más de 1Ghz. Hoy en día los dispositivos móviles cuentan hasta con 4GB de memoria RAM y utilizan baterías de más de 3000 mAh. Este incremento constante del hardware en los dispositivos móviles a llevado a un cese en las ventas de las computadoras para darle lugar a estos dispositivos (Figura 1-1). Figura 1-1: Crecimiento de dispositivos móviles vs computadoras de escritorio Sin embargo, es importante tener en cuenta que a pesar del crecimiento constante y exponencial de sus capacidades de procesamiento, la capacidad de sus baterías no ha sido de la misma forma [22]. Además de las simples utilidades como las llamadas y 12
mensajes de texto los celulares actuales, llamados smartphones, se utilizan para leer libros, escanear documentos, navegar por la Web, tomar fotos de forma profesional, hacer transferencias bancarias, realizar compras online, navegar por las redes sociales, e incluso realizar procesamientos intensivos que podrían consumir gran cantidad de batería. Las capacidades en aumento junto con el crecimiento constante de mercado de estos tipos de dispositivos móviles y de sus aplicaciones muestran como han tomado un protagonismo importante en la sociedad actual. Por otra parte, diferentes autores han mostrado cómo los dispositivos móviles no solo pueden ser usados para las funcionalidades detalladas anteriormente sino que también pueden ser utilizados para propósitos científicos que, dados sus requerimientos de hardware, parecían reservados solo para computadoras de escritorio y servidores. En [2] se discute la utilidad de los dispositivos móviles en base a una aplicación para el estudio de fluidos. Asimismo, en [3] se discuten en forma más general las bondades y limitaciones de los dispositivos móviles para ejecutar aplicaciones científicas con requerimientos intensivos de procesamiento. Los diversos autores muestran el potencial de los smartphones en el contexto científico y concluyen que los mismos son capaces de ejecutar mayor caudal de cómputo por unidad de batería respecto de dispositivos móviles tradicionales, tales como notebooks. A la gran cantidad de utilidades que se le pueden dar a estos tipos de dispositivos móviles también hay que tener en cuenta la importancia de la duración de sus baterías. Hace 10 años atrás la batería de los celulares podían llegar a durar más de una semana, pero hoy en día en algunos casos no superan las 24 horas y esto termina impactando directamente en la experiencia del usuario (Figura 1-2). Existen diferentes factores por los cuales las baterías de los dispositivos móviles se ven afectadas. Particularmente, estos son los consumos que generan las pantallas LED o AMOLED de los dispositivos, las conexiones a redes 3G, 4G y WIFI, y principalmente por el mal uso de recursos que generan las aplicaciones móviles. Para esto existen técnicas de refactorización de las aplicaciones móviles con el objetivo principal de generar ahorros en los consumos de batería. Una de éstas es la técnica de “offloading”. 13
Figura 1-2: Porcentajes de las mayores frustraciones de los usuarios al momento de utilizar los smartphones 1.1. MOTIVACIÓN Partiendo de la necesidad de procesamiento intensivo en dispositivos con capacidad energética limitada, se han desarrollado a lo largo de los años diferentes alternativas para reducir el consumo de batería en dispositivos móviles. Muchas de las soluciones existentes se realizaron a nivel de plataforma, como el caso del sistema operativo Android. Estas soluciones incluyen aplicaciones que reducen el consumo de batería por parte del hardware mediante el apagado selectivo de componentes (Ej. Radios [23]) cuando éstos no son utilizados, refactorización de código, y métodos y técnicas de offloading. Esta última técnica es el objetivo principal de este trabajo. Offloading implica ejecutar cómputos intensivos de una aplicación en servidores remotos, generando así ahorros en los consumos de batería. Esta técnica posee limitaciones y retos particulares como la evaluación del código para saber si debe ser ejecutado de forma remota o no. Esta decisión depende de factores tales como cuál es el objetivo de aplicar la técnica de “offloading”. En nuestro caso se buscará reducir el consumo de batería en el dispositivo móvil mediante la ejecución de secciones de código intensivas en servidores remotos. 14
Entonces, el trabajo se centró específicamente en la investigación y desarrollo de una herramienta que refactorice el código fuente de una aplicación móvil desarrollada para el sistema operativo Android en cualquiera de sus versiones para permitir aprovechar las ventajas de la técnica de offloading y así ayudar a construir software eficiente en energía, mejorando también la performance de la aplicación. Asimismo, se realizaron pruebas experimentales que permitieron evaluar el uso de esta herramienta en distintos dispositivos móviles con diferentes características técnicas. 1.2. OBJETIVO El objetivo principal del trabajo fue desarrollar una herramienta que realice refactorizaciones en las aplicaciones móviles para luego analizar las ventajas en el consumo de batería de utilizar la técnica de offloading. Esto se llevó a cabo mediante la construcción de una herramienta para la plataforma Eclipse que permitió refactorizar el código fuente en lenguaje Java de una aplicación móvil para dispositivos con sistema operativo Android. Luego del desarrollo de la misma se realizaron pruebas con aplicaciones reales sobre diversos dispositivos móviles, permitiéndonos así realizar un análisis del impacto de esta técnica en el consumo de batería. Adicionalmente, se buscó evaluar si es conveniente refactorizar por completo los cómputos intensivos de las aplicaciones móviles o si se debe considerar para estas aplicaciones qué umbrales de consumo de CPU versus uso de red hacen de la técnica de offloading conveniente. Finalmente, para obtener resultados significativos se utilizaron códigos fuente de aplicaciones móviles relevantes (juego de ajedrez, algoritmo de multiplicación de matrices, etc.) que requieren procesamiento intensivo y/o consuman importantes de cantidades de memoria, provocando así un consumo de batería significativo. En estos casos es evidente que los cómputos intensivos asociados a la inteligencia artificial del juego o la multiplicación pueden ser descargados a un servidor, tal como postula la técnica de offloading. 15
1.3. ORGANIZACIÓN DEL TRABAJO Para cumplir el objetivo propuesto en este trabajo se debe ahondar en distintos aspectos de interés, por este motivo en cada uno de los siguientes capítulos, se introduce al lector en una sección específica. A continuación se realizará una breve descripción de los contenidos de cada uno de los capítulos. • Capítulo 2: Presenta una introducción a los conceptos relacionados a dispositivos móviles y los problemas que se han presentado a lo largo de los años con el consumo de las baterías. • Capítulo 3: Introduce al lector en los proyectos que siguen la línea de investigación de la técnica de “offloading” como así también una presentación del trabajo propuesto. • Capítulo 4: En este capítulo se detalla el diseño e implementación de la herramienta propuesta describiendo los componentes principales de la misma, profundizando los puntos más importantes. • Capítulo 5: Muestra la evaluación de las pruebas realizadas con la herramienta para diferentes dispositivos móviles, analizando los resultados obtenidos para cada una de las diferentes aplicaciones. • Capítulo 6: Se presentan las conclusiones a las cuales se llega como consecuencia de los distintos análisis realizados. También se describen trabajos futuros que surgen a partir de lo investigado en este trabajo. 16
2. DISPOSITIVOS MÓVILES – CONSUMO DE BATERÍA 2.1. INTRODUCCIÓN A lo largo de los últimos años, el crecimiento que han experimentado los llamados teléfonos inteligentes o smartphones tanto en cantidad como en capacidad de procesamiento ha sido y sigue siendo significativo. Sin embargo, esto ha traído consigo una serie de problemas, especialmente en el consumo de batería de cada uno de ellos. Este problema nace en gran medida por el excesivo consumo por parte de las aplicaciones móviles que hoy en día se desarrollan. Queriendo aprovechar todos los recursos que brindan cada uno de estos dispositivos no se hace un uso eficiente de los mismos y esto termina impactando directamente en la batería. Su duración no varia únicamente por la cantidad de miliamperios que esta posee sino también por el hardware y software en donde se esté utilizando. Es por ello que el objetivo principal de este capítulo será entrar en mayor profundidad acerca de esta última problemática pero antes nutriéndonos de conocimientos básicos del contexto sobre el que esto sucede. Al comienzo nos centraremos en las características principales de los smartphones, como han crecido y se han expandido durante el último tiempo. Luego ahondaremos en el sistema operativo (SO) Android, que es el sistema operativo elegido para realizar la experimentación de este trabajo, explicando las razones por las que hemos elegido este SO y las ventajas que produce su utilización. Ya teniendo un contexto general de todo lo que rodea a los smartphones, se explicará la problemática central de este capítulo: los problemas en el consumo de batería. Repasados todos estos temas, al finalizar este capítulo tendremos una visión clara del contexto y problemática que pretende afrontar este trabajo. 17
2.2. TELÉFONOS INTELIGENTES Un teléfono inteligente es un dispositivo móvil con funcionalidad avanzada, hardware especializado y una alta capacidad de cómputo. “Smartphone” es un término inglés que se utiliza para definir a los teléfonos que cumplen una serie de características que se describen a continuación: • Funcionalidad avanzada: Los smartphones son aquellos teléfonos cuya funcionalidad va más allá de llamar o recibir mensajes SMS. Este tipo de teléfonos son capaces de realizar tareas más complejas como la gestión del correo personal o la reproducción de contenidos multimedia, entre otros. • Hardware especializado: Estos dispositivos cuentan con hardware dedicado necesario para la realización de las tareas avanzadas de las que son capaces. De esta manera, este tipo de dispositivos suele contar con chip GPS (Global Positioning System), giroscopio, acelerómetro o procesador gráfico. • Alta capacidad de cómputo: La capacidad de procesamiento de información que poseen estos dispositivos es la que hace posible toda esa funcionalidad avanzada. Por lo tanto, podemos definir un smartphone como un teléfono móvil que, gracias a una alta capacidad de cómputo y a hardware especializado, es capaz de realizar funciones avanzadas en movilidad. Esta definición no es la única que se le atribuye a estos dispositivos móviles. Existen otros autores que definen a los smartphones desde otros puntos de vista, destacándose: “Un nuevo tipo de dispositivo de comunicación que combina la funcionalidad de los teléfonos móviles tradicionales (Ej. voz y mensajería) con aquellos que son de computación en movilidad como las PDAs (Personal Digital Assistant)” [4] “Los teléfonos móviles hoy en día han evolucionado hasta convertirse en una plataforma de comunicación y de cómputo ubicua donde los usuarios pueden hacer las llamadas como un teléfono tradicional, crear diapositivas de una presentación, editar documentos, escuchar música, ver vídeos, jugar juegos, y acceder a Internet, todo desde un único dispositivo móvil, simplemente conocido como teléfono inteligente” [5] 18
Con estas definiciones podemos ver el término smartphone desde distintos puntos de vista, tanto desde la evolución natural de distintos dispositivos existentes como desde la descripción de sus capacidades. 2.3. PROLIFERACIÓN DE LOS TELÉFONOS INTELIGENTES En los últimos años, los teléfonos inteligentes han supuesto una revolución en el panorama tecnológico. Las cifras hablan por sí mismas: según un informe de IDC, el crecimiento experimentado por este tipo de dispositivos en el último año ha sido de 1.300 millones de dispositivos vendidos, superando en un 26,3% la cifra del año anterior. Este crecimiento se espera que continúe para este año pero no de forma tan abrupta, aproximándose a 1.400 millones de dispositivos vendidos [7]. Acompañado a este crecimiento se encuentra el sistema operativo Android que ha sido uno de los sistemas operativos que más ha crecido. En sus primeros 5 años de vida, ha conseguido alcanzar un ritmo 1.3 millones de activaciones diarias, rozando los 500 millones de dispositivos gobernados por este sistema operativo [7]. Este tipo de dispositivos también ha hecho proliferar el número de aplicaciones que se desarrollan para estos, generando así un gran mercado para los propios desarrolladores. Nuevamente, las cifras son elocuentes. La tienda de aplicaciones de Apple, el AppStore (a la que podríamos considerar la primera tienda de estas características), alberga 500.000 aplicaciones, mientras que la tienda oficial de Android, Google Play, aloja a más de 600.000 aplicaciones. Sin embargo, dentro de esta vorágine de crecimiento, las características de estos dispositivos también tuvieron que ir creciendo y adaptándose dependiendo de la demanda que requerían los usuarios de los mismos, desde mejores procesadores hasta sus propias cámaras. En contraparte, todo esto llevó a que se descuiden puntos importantes de los mismos como la batería y los consumos que sobre ella generan las otras mejoras. En este capítulo, analizaremos más a fondo esta problemática. 19
2.4. SISTEMA OPERATIVO ANDROID Google es una empresa que fue fundada el 4 de septiembre de 1998 en Menlo Park, con el fin de comercializar el motor de búsqueda creado como fruto de la tesis doctoral realizada por dos estudiantes de la Universidad de Stanford, Larry Page y Sergei Brin [28]. Este buscador fue el punto de partida para la comercialización de una gran diversidad de productos, algunos de desarrollos propios y otros a través de la adquisición de empresas. Dentro de este último grupo se encuentra Android. En Junio de 2005, Google compró una pequeña compañía cuya finalidad era el desarrollo de aplicaciones para dispositivos móviles que se llamaba Android Inc. Con el paso del tiempo, uno de los cofundadores de aquella pequeña compañía, Andy Rubin, pasó a ser el director de la división de plataformas móviles de Google, que es uno de las máximos responsables del desarrollo del sistema operativo Android. Android es un sistema operativo orientado a dispositivos móviles basado en una versión modificada del sistema operativo GNU y el núcleo Linux. El desarrollo corre a cargo de la Open Handset Alliance5, que es un conglomerado de fabricantes de software y hardware, compuesto entre otros por Google, Intel, Qualcomm, Texas Instruments, Nvidia, Dell, HP o Motorola [29]. El componente principal de este sistema operativo son las aplicaciones, escritas principalmente en el lenguaje de programación Java. Además cuenta también con un framework de aplicaciones, diseñado con el objetivo de simplificar la reutilización de componentes. 20
Figura 2-1: Distribución de marcas que utilizan el sistema operativo Android en sus smartphones El desarrollo de Android ha sido vertiginoso. En los últimos años, la variedad de socios (Figura 2-1) [30], unido a la posibilidad de personalización que ofrece el sistema operativo, ha conseguido que crezca a un ritmo vertiginoso. Sin embargo, se empiezan a plantear una serie de problemas, provocados en parte por esta libertad. Uno de estos problemas es la batería de estos teléfonos inteligentes, el cual se explayará en la Sección 2.5. 2.4.1. ¿POR QUÉ ANDROID? Existen varias razones por las que se ha elegido esta plataforma, por sobre otras, para el presente trabajo. La primera de ella es que se trata de un sistema operativo de fuentes abiertas. Esto implica que es posible obtener el código fuente del mismo para poder examinarlo y trabajar sobre él. También, múltiples partes del sistema son también de código abierto, por lo que es posible acceder a él. 21
Figura 2-2: Porcentajes de SO usados durante el año 2015 Por otro lado, la representatividad que Android está adquiriendo en el mercado es otro de los puntos a tener en cuenta (Figura 2-2). Se trata de un sistema operativo que está experimentando un gran crecimiento en los últimos tiempos, lo que lo hace atractivo para tratar de brindar una posible solución al problema que genera el consumo de batería en las distintas aplicaciones móviles para todos los usuarios. Es importante destacar también que este crecimiento conlleva que tenga un gran soporte para poder realizar cualquier tipo de desarrollo. A continuación se ahondará más en el problema que se busca atacar para conocer el por qué se fue produciendo esto a lo largo del tiempo y con qué herramientas se está atacando la situación hoy en día. 2.5. EL PROBLEMA DE BATERÍA EN LOS TELÉFONOS INTELIGENTES ANDROID En mitad de la década de los noventa, la idea de tener un teléfono móvil comenzó a ser más cercana para la gran mayoría de usuarios. Los precios bajaban considerablemente, pasando de precios inalcanzables a más accesibles incluso para algunos smartphones de alta gama, y la evolución tecnológica trajo terminales con tamaños reducidos, perfectos para llevar a cualquier lado. Otro de los grandes aspectos de estos primeros teléfonos móviles de toda una generación era que la duración de su batería era muy notable: podíamos pasar hasta 22
semanas sin tener que realizar cargas. Esto era posible, por aquel entonces, gracias a que un teléfono móvil se usaba para recibir y realizar llamadas, y para recibir y enviar mensajes cortos de texto. Las pantallas de los teléfonos de entonces eran monocromáticas, de cristal líquido, muy reducidas, y sólo se empleaban para mostrar caracteres y cifras. La llegada de nuevos terminales con más capacidades: radio FM, juegos, reproducción de música, conexión a Internet, y, sobre todo, el incremento de calidad y tamaño de las pantallas como así también de los procesadores, hizo cambiar radicalmente esa situación. Como lo muestra la Figura 2-3 el tamaño de las pantallas de estos teléfonos fue creciendo más significativamente que la capacidad de las baterías, y también la definición de cada una de estas mejoraba y requería mayor soporte por parte de las baterías. Figura 2-3: El incremento de la capacidad de las baterías vs el tamaño de las pantallas a lo largo de los años 23
La calidad de las baterías fue mejorando, y desaparecieron las baterías de níquel cadmio y su polémico efecto memoria, que degradaba la vida útil de la batería, para dar paso a la llegada de las baterías de ion de litio, que aportó mucha más durabilidad a estos componentes. Sin embargo, esta mejora no fue suficiente para mantener los tiempos de duración que antes poseían las baterías. Como curiosidad, Michael Sinkula, de Envia Systems (una startup californiana enfocada al mundo de las baterías), deja claro que, a pesar de todo, la capacidad de una batería de 1995 no se llegó a duplicar hasta el año 2007, y desde entonces aún ni hemos logrado aumentarla un 30% siquiera con el paso de los años. Cree que hasta 2021 no volveremos a duplicar las capacidades actuales [6]. El problema es que las capacidades, la potencia y las pantallas de los terminales no han cesado de crecer con el paso de los años, y un teléfono móvil ahora ha pasado a ser, literalmente, un ordenador de bolsillo, una máquina de escribir, una cámara, y, en definitiva, un dispositivo que “sufre” muchas horas de actividad intensa en la vida cotidiana. Cada nuevo teléfono que adquirimos pedimos que sea mucho más potente que el anterior, y no dudamos en instalar todo tipo de aplicaciones, tomar fotos y vídeos o usarlo durante horas como centro de entretenimiento. Figura 2-4: Evolución de la capacidad de la batería vs otras funcionalidades de los smartphones a lo largo de una década 24
Como podemos ver en la Figura 2-4 [24] hasta principios de la década pasada (aunque podría aplicarse a nuestra década actual perfectamente), la batería es uno de los componentes que menos ha evolucionado con el paso de los años en los distintos smartphones. Es imposible que una pequeña batería de smartphone, que normalmente cuentan con una capacidad que oscila entre los 2000 a los 3000 mAh, pueda resistir ciertos usos sin agotarse, y el incremento de las pantallas y resoluciones que cuentan estos dispositivos, ponen cada vez más difícil a los fabricantes solucionar este problema. Un problema del propio diseño de las baterías es que, mientras un componente del smartphone como las pantallas o los chips pueden evolucionar y reducirse tanto en tamaño como en consumo, las baterías actuales incorporan componentes químicos en su interior que puede que no rindan adecuadamente si no se les proporciona el espacio adecuado. Si nos centramos en la fuente de un exceso de consumo de batería en nuestro terminal, ésta suele ser múltiple. Por ejemplo, los elaborados juegos en 3D (cada vez más parecidos a los de las videoconsolas) consumen una gran cantidad de batería por diversas razones: mantienen la pantalla encendida constantemente, hacen uso de la potencia de procesamiento máxima, usan la GPU para poder renderizar los gráficos y, en ocasiones, necesitan usar conexión a la red. Otro agujero negro de consumo puede ser una aplicación con fallos en su programación o configuración: es decir, una aplicación que chequee constantemente los datos para sincronizarse, o una aplicación que esté constantemente en ejecución (con el procesador a máximo rendimiento) sin avisarnos, e incluso aplicaciones que realizan un procesamiento lógico de alta complejidad durante un largo tiempo. Este último punto es el que se busca reducir en este trabajo final. Gran parte de este consumo de procesamiento que se genera en el smartphone podría delegarse a otro dispositivo que realice el cálculo y así ahorrar cierto consumo de batería en el smartphone. Durante el próximo capítulo se entrará más en el contexto de la solución a esta gran problemática que hoy en día afecta a un gran porcentaje de aplicaciones móviles y por consecuencia a una gran cantidad de usuarios. 25
2.6. CONCLUSIONES La primera conclusión que podemos resaltar luego de finalizado este capítulo es cómo han crecido los teléfonos inteligentes en el último tiempo. No sólo en su expansión global, sino en las características que fueron sumando. Los mismos han pasado de ser simples dispositivos que realizaban llamadas y enviaban y recibían mensajes de texto a una especie de computadoras portátiles que caben en la palma de la mano. Analizado el problema del consumo de batería, es importante resaltar la relegación que sufrió esta característica sobre todas las demás que componen a un teléfono inteligente. La demanda de los usuarios siempre fue sobre funcionalidades más comunes como el tamaño de las pantallas, la mejora de procesamiento o mismo las cámaras que cada uno de estos poseía. Esta demanda provocó la reducción en el tiempo de vida de la batería y es ahí donde se empezó a darle importancia a la misma. Como desarrolladores de este trabajo final el hecho de buscar una posible solución a este problema genera un gran incentivo, no sólo por reducir el consumo de batería de estos dispositivos sino que esta solución se realiza sobre un sistema operativo que utiliza casi el 50% de la población que posee un teléfono inteligente. 26
3. ESTADO DEL ARTE 3.1. INTRODUCCIÓN La idea de usar servidores más potentes para mejorar las capacidades de procesamiento de los dispositivos móviles se ha desarrollado durante varios años. Varios proyectos de investigación han tratado de separar automáticamente partes de una aplicación que pueden ser ejecutadas de forma remota en un servidor conectado a una red para mejorar por ejemplo el consumo de batería y rendimiento del dispositivo móvil entre los aspectos más relevantes. Es por ello que durante la primer etapa de este capítulo se detallarán aquellos proyectos de la actualidad que siguen esta línea de mejoras sobre las aplicaciones móviles, resaltando los que consideramos más relevantes. El objetivo de este análisis es poder brindar un contexto sobre el que se desarrolló el trabajo propuesto. A continuación nos abocaremos en detallar las características más importantes del trabajo que se propone a partir de estos proyectos así como también ciertas comparaciones con algunos de los mismos. Finalizadas estas explicaciones se cierra el capítulo con las correspondientes conclusiones para dar paso a los siguientes, ya con una idea más concreta del aporte de este trabajo al problema en cuestión. 3.2. TRABAJOS RELACIONADOS Durante el desarrollo de esta sección se describirán varios de los proyectos que consideramos más relevantes de la actualidad con respecto a las refactorizaciones de aplicaciones para la ejecución remota de porciones de éstas. Sobre cada uno de estos proyectos se resaltarán los aspectos más importantes y además se presentarán comparaciones entre los mismos. El hilo de esta sección comenzará con la descripción de estos proyectos resaltando sus características mas relevantes para luego dar paso a un espacio de discusión en donde se marcan las diferencias y similitudes entre éstos. 27
3.2.1. MAUI Uno de los obstáculos para el futuro crecimiento de los smartphones es la tecnología de la batería cada uno de los mismos. Es por ello que en el año 2010, Eduardo Cuervo y colaboradores de la Universidad de Duke en Estados Unidos, le dieron forma a un sistema con el objetivo principal de reducir al máximo los consumos de energía de las aplicaciones. A este sistema se le dio el nombre de MAUI [10]. Su arquitectura combina los beneficios de dos enfoques: minimizar el consumo de energía mediante modificaciones al código para que las ejecuciones de los mismos se ejecuten de forma remota y minimizar la cantidad de modificaciones que se realizan. Un aspecto importante de este sistema es que dichas refactorizaciones se realizan utilizando el lenguaje de programación .NET, siempre bajo el soporte de Microsoft. Adicionalmente, una limitación importante es que MAUI delega la total responsabilidad al desarrollador de colocar anotaciones en cada uno de los métodos que se requieran refactorizar para permitir los distintos tipos de ejecución (local y remota). Luego, al momento de realizar la refactorización en la aplicación móvil, MAUI se encarga de crear dos nuevas aplicaciones: una aplicación será la ya existente con las modificaciones correspondientes al código para las ejecuciones remotas y la otra aplicación se ejecutará en el servidor al que se quiere conectar. La comunicación de estas dos aplicaciones se realiza mediante la técnica de reflexión computacional y la serialización de cada uno de los parámetros de los métodos refactorizados. Finalmente, la decisión de ejecutar de forma local o remota las distintas secciones de código está a cargo de un “Solver” que es un componente de la nueva arquitectura generada (Figura 3-1). Esta decisión se basa en varios aspectos como los tiempos de ejecución, características de la red, características de los consumos de energía del dispositivo móvil, etc. Los valores de cada uno de estos factores son tomados al inicio y monitoreados continuamente ya que son naturalmente factibles de cambio, y de esta forma se evita que la decisión que se tome no sea la correcta. 28
También puede leer