REFACTORING DE APLICACIONES MOVILES ANDROID UTILIZANDO TECNICA DE OFFLOADING - ridaa unicen

 
SEGUIR LEYENDO
REFACTORING DE APLICACIONES MOVILES ANDROID UTILIZANDO TECNICA DE OFFLOADING - ridaa unicen
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
REFACTORING DE APLICACIONES MOVILES ANDROID UTILIZANDO TECNICA DE OFFLOADING - ridaa unicen
REFACTORING DE APLICACIONES MOVILES ANDROID UTILIZANDO TECNICA DE OFFLOADING - ridaa unicen
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
REFACTORING DE APLICACIONES MOVILES ANDROID UTILIZANDO TECNICA DE OFFLOADING - ridaa unicen
REFACTORING DE APLICACIONES MOVILES ANDROID UTILIZANDO TECNICA DE OFFLOADING - ridaa unicen
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.
REFACTORING DE APLICACIONES MOVILES ANDROID UTILIZANDO TECNICA DE OFFLOADING - ridaa unicen
REFACTORING DE APLICACIONES MOVILES ANDROID UTILIZANDO TECNICA DE OFFLOADING - ridaa unicen
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
REFACTORING DE APLICACIONES MOVILES ANDROID UTILIZANDO TECNICA DE OFFLOADING - ridaa unicen
5.5.      CONCLUSIONES .................................................................................................................................. 88
6.     CONCLUSIONES ......................................................................................................................... 90
     6.1. TRABAJOS FUTUROS ........................................................................................................................ 91
7.      BIBLIOGRAFÍA ........................................................................................................................... 94
REFACTORING DE APLICACIONES MOVILES ANDROID UTILIZANDO TECNICA DE OFFLOADING - ridaa unicen
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
REFACTORING DE APLICACIONES MOVILES ANDROID UTILIZANDO TECNICA DE OFFLOADING - ridaa unicen
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