Desarrollo de Aplicaciones Móviles Multiplataforma

84
Desarrollo de Aplicaciones Móviles Multiplataforma Alumno: Lic. Lisandro Nahuel Delía Lic. en Sistemas UNLP [email protected] Director: Mg. Pablo Javier Thomas Prof. Asociado. - Facultad de Informática UNLP [email protected] Trabajo Final presentado para obtener el grado de Especialista en Ingeniería de Software Facultad de Informática Universidad Nacional de La Plata Marzo 2017

Transcript of Desarrollo de Aplicaciones Móviles Multiplataforma

Page 1: Desarrollo de Aplicaciones Móviles Multiplataforma

Desarrollo de Aplicaciones Moacuteviles Multiplataforma

Alumno Lic Lisandro Nahuel Deliacutea

Lic en Sistemas ndash UNLP ldelialidiinfounlpeduar

Director Mg Pablo Javier Thomas

Prof Asociado - Facultad de Informaacutetica ndash UNLP pthomaslidiinfounlpeduar

Trabajo Final presentado para obtener el grado de Especialista en Ingenieriacutea de Software

Facultad de Informaacutetica

Universidad Nacional de La Plata

Marzo 2017

2

Agradecimientos

A Pablo Thomas por la confianza depositada diacutea a diacutea

Al III-LIDI por permitirme crecer profesionalmente

A todas aquellas personas que en forma directa o indirecta aportaron a este trabajo y que contribuyen al crecimiento de la Ingenieriacutea de Software como disciplina

Y especialmente a mi familia por estar siempre a mi lado y alentarme a que continuacutee con mi formacioacuten acadeacutemica

3

Iacutendice de Contenidos Objetivo 6

Prefacio 7

Trabajos publicados 8

Organizacioacuten del trabajo 8

Capiacutetulo 1 Tecnologiacutea Moacutevil 10

11 Los inicios 10

12 Evolucioacuten de los protocolos para redes de comunicaciones 13

13 La actualidad 14

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas 17

21 Desarrollo de Aplicaciones Nativas en Android 19

211 Evolucioacuten 19

212 Proceso de Desarrollo 26

22 Desarrollo de Aplicaciones Nativas en iOS 28

221 Evolucioacuten 28

222 Proceso de desarrollo 30

23 Desarrollo de Aplicaciones Nativas en Windows Phone 32

231 Evolucioacuten 32

232 Proceso de desarrollo 33

24 Diferencias teacutecnicas entre Android iOS y Windows Phone 34

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma 37

31 Aplicaciones Web Moacuteviles 38

311 Aplicacioacuten Web dedicada y exclusiva para dispositivos moacuteviles 39

312 Aplicacioacuten Web con Disentildeo Adaptable 39

32 Aplicaciones Hiacutebridas 40

321 PhoneGap 41

322 CocoonJS 42

323 Ionic 43

324 Sencha Touch 43

33 Aplicaciones Interpretadas 43

331 Appcelerator Titanium 44

332 NativeScript 44

34 Aplicaciones Generadas por Compilacioacuten Cruzada 45

4

341 Xamarin 46

342 Embarcadero Delphi 10 Seattle 47

343 RubyMotion 48

Capiacutetulo 4 Experimentacioacuten 50

41 Aplicacioacuten Moacutevil para la plataforma de E-Learning WebUNLP 50

411 Descripcioacuten del problema 50

412 Anaacutelisis 51

413 Disentildeo 51

414 Desarrollo 53

4141 Aplicacioacuten Nativa para Android 53

4142 Aplicacioacuten Nativa para iOS 54

4143 Aplicacioacuten Web Moacutevil 54

4144 Aplicacioacuten Hiacutebrida desarrollada con PhoneGap y Jquery Mobile 55

4145 Aplicacioacuten Hiacutebrida desarrollada con Sencha Touch 56

4146 Aplicacioacuten Interpretada de WebUNLP con Appcelerator Titanium 3 56

4147 Aplicacioacuten Generada por Compilacioacuten Cruzada de WebUNLP utilizando XamarinVisual Studio 57

4148 Aplicacioacuten Generada por Compilacioacuten Cruzada de WebUNLP utilizando Delphi 10 Seattle 58

415 Conclusiones del experimento WebUNLP 58

42 Enfoques de desarrollo Anaacutelisis comparativo de rendimiento 60

421 Descripcioacuten del Problema 60

422 Desarrollo 62

4221 Disentildeo de las pruebas 62

4222 Recoleccioacuten de datos 65

423 Resultados Obtenidos 66

424 Anaacutelisis de Resultados 67

425 Conclusiones 69

43 Anaacutelisis comparativo de enfoques de Desarrollo de Aplicaciones Moacuteviles 70

Capiacutetulo 5 Conclusiones 75

Capiacutetulo 6 Trabajo Futuro 78

Bibliografiacutea 80

5

Iacutendice de Figuras

Figura 1 Mobile Telephone System A (MTA) 11 Figura 2 Martin Cooper el autor de la primer llamada moacutevil 12 Figura 3 Evolucioacuten de los protocolos para redes de comunicacioacuten moacuteviles 14 Figura 4 Comparacioacuten entre plataformas [15] 15 Figura 5- Utilizacioacuten de Sistemas Operativos Moacuteviles en el mundo 18 Figura 6- Utilizacioacuten de Sistemas Operativos Moacuteviles en Argentina 19 Figura 7 Entorno de desarrollo Android Studio 27 Figura 8 Distribucioacuten de versiones de Android - Diciembre 2016 28 Figura 9 Entorno de desarrollo Xcode 31 Figura 10 Distribucioacuten de versiones de iOS - Noviembre 2016 31 Figura 11 Entorno de desarrollo Visual Studio 34 Figura 12 Disentildeo Adaptable 40 Figura 13 Funcionamiento de Apache Cordova 42 Figura 14 Proceso de interpretacioacuten mediante NativeScript 45 Figura 15 Entorno de Desarrollo Xamarin Studio 47 Figura 16 Entorno de Desarrollo Delphi 10 Seattle 48 Figura 17 Arquitectura geneacuterica para aplicacioacuten nativa e hiacutebrida 52 Figura 18 Mockup independiente del tipo de aplicacioacuten 53 Figura 19 Aplicacioacuten nativa para Android 53 Figura 20 Aplicacioacuten nativa para iOS 54 Figura 21 Aplicacioacuten hiacutebrida desarrollada con PhoneGap 55 Figura 22 Aplicacioacuten desarrollada con Sencha Touch 56 Figura 23 Enfoque uacutenico de desarrollo Xamarin 57 Figura 24 Aplicacioacuten desarrollada con a) Titanium b) XamarinVisual Studio y c) Delphi XE 58 Figura 25 Caacutelculo de serie coacutedigo multiplataforma desarrollado en Apache Cordova 65 Figura 26 Diagrama de barras con las muestras recolectadas (las barras muestran el tiempo promedio expresado en milisegundos) 67

6

Objetivo

Existen diversos enfoques para desarrollar aplicaciones moacuteviles multiplataforma

A partir de ello el objetivo de este trabajo final consiste en elaborar un anaacutelisis

comparativo sobre los enfoques predominantes y realizar experimentos con el desarrollo

de aplicaciones moacuteviles especiacuteficas para cada elemento analizado

Los objetivos especiacuteficos de este trabajo son

a) Realizar un anaacutelisis comparativo entre los enfoques de desarrollo de aplicaciones

moacuteviles multiplataforma

b) Llevar a cabo el desarrollo de una aplicacioacuten moacutevil concreta en cada enfoque de

desarrollo multiplataforma Analizar ventajas y desventajas de los enfoques seguacuten

el experimento

c) Analizar la performance de las aplicaciones que se generan con cada enfoque de

desarrollo multiplataforma

d) Estudiar los impactos que se producen en el proceso de desarrollo de software

seguacuten el enfoque a utilizar

Prefacio

7

Prefacio

La computacioacuten moacutevil se puede definir como un entorno de coacutemputo con movilidad

fiacutesica El usuario de un entorno de computacioacuten moacutevil seraacute capaz de acceder a datos

informacioacuten u otros objetos loacutegicos desde cualquier dispositivo en cualquier red mientras

estaacute en movimiento [1]

Estos dispositivos tienen caracteriacutesticas fiacutesicas distintivas entre las cuales se

destacan su tamantildeo peso tamantildeo de pantalla su mecanismo de ingreso de datos y su

capacidad de expansioacuten Ademaacutes tienen un rol esencial los aspectos teacutecnicos incluyendo

el poder de procesamiento espacio de memoria autonomiacutea de bateriacutea sistema operativo

entre otros

El desarrollo de software para dispositivos moacuteviles plantea nuevos desafiacuteos

originados en las caracteriacutesticas uacutenicas de esta actividad La necesidad de tratar con

diversas plataformas estaacutendares protocolos y tecnologiacuteas de red las capacidades

limitadas aunque en continua evolucioacuten de los dispositivos y las exigencias de tiempo

del mercado son soacutelo algunos de los problemas a tratar [2]

Las aplicaciones moacuteviles son generadas en un entorno dinaacutemico e incierto

Generalmente son pequentildeas no criacuteticas aunque no menos importantes Estaacuten destinadas

a un gran nuacutemero de usuarios finales y son liberadas en versiones raacutepidas para poder

satisfacer las demandas del mercado [3]

Por todo lo expuesto el desarrollo de software para dispositivos moacuteviles difiere

considerablemente del tradicional [4] y acompantildea el crecimiento y evolucioacuten de la

Ingenieriacutea de Software como disciplina

Para maximizar su presencia en el mercado un producto de software debe

ejecutarse en la mayor cantidad de dispositivos posible Una solucioacuten consiste en el

desarrollo nativo de la aplicacioacuten en cada una de las plataformas existentes utilizando el

entorno de desarrollo integrado (IDE por sus siglas en ingleacutes) el lenguaje y las

herramientas propias de cada plataforma [5] Sin embargo al no ser posible la

reutilizacioacuten de coacutedigo fuente entre diferentes plataformas el esfuerzo se multiplica y se

elevan los costos de desarrollo actualizacioacuten y distribucioacuten de nuevas versiones [6]

Prefacio

8

El desarrollo multiplataforma a diferencia del desarrollo nativo se centra en el

reuacuteso de coacutedigo La construccioacuten de aplicaciones web moacuteviles constituye un ejemplo que

representa este enfoque Sin embargo las limitaciones derivadas de su ejecucioacuten dentro

de un navegador ha motivado a los ingenieros de software a dirigir su atencioacuten hacia otro

tipo de aplicaciones multiplataforma con el que se obtienen resultados maacutes cercanos a las

soluciones nativas En este contexto existen diversas sub-clasificaciones [5] [7] [8] y es

de intereacutes analizar las caracteriacutesticas inherentes a cada una de ellas a traveacutes de la

construccioacuten de un prototipo experimental

Trabajos publicados

Los resultados parciales del presente trabajo dieron lugar al siguiente capiacutetulo de

libro

ldquoAn Experimental Analysis of Application Types for Mobile Devicesrdquo [9]

Lisandro Deliacutea Nicolaacutes Galdaacutemez Pablo Thomas Patricia Pesado

Computer Science amp Technology Series - XIX Argentine Congress of Computer

Science - Selected Papers Editorial de la Universidad de La Plata 2014 p173 -

183 ISBN 978-987-1985-49-4

Asiacute mismo se realizaron publicaciones en los siguientes eventos cientiacuteficos

ldquoMulti-Platform Mobile Application Development Analysisrdquo [10]

Lisandro Deliacutea Nicolaacutes Galdamez Pablo Thomas Leonardo Corbalaacuten Patricia

Pesado

IEEE Ninth International Conference on Research Challenges in Information

Science - IEEE RCIS

Atenas Grecia 13 al 15 de mayo de 2015

Forma de Publicacioacuten Proceedings - CD ROM

ISBN 978-1-4673-6630-4

Organizacioacuten del trabajo

Este trabajo se organiza de la siguiente manera

El capiacutetulo 1 resentildea la evolucioacuten de los dispositivos moacuteviles

Prefacio

9

En el capiacutetulo 2 se describen conceptos esenciales del desarrollo de aplicaciones

para dispositivos moacuteviles

En el capiacutetulo 3 se profundizan conceptos relacionados al desarrollo de

aplicaciones moacuteviles multiplataforma y se estudian diferentes metodologiacuteas y

herramientas

El capiacutetulo 4 contiene un conjunto de experimentos sobre desarrollos de

aplicaciones moacuteviles multiplataforma y el anaacutelisis de los resultados obtenidos

El capiacutetulo 5 presenta las conclusiones obtenidas y el capiacutetulo 6 los trabajos

futuros propuestos en relacioacuten al tema

Finalmente se detalla la bibliografiacutea utilizada en el presente trabajo

Capiacutetulo 1 Tecnologiacutea Moacutevil

10

Capiacutetulo 1 Tecnologiacutea Moacutevil

Hubo una eacutepoca en el que los teleacutefonos moacuteviles no teniacutean pantalla taacutectil ni

permitiacutean grabar viacutedeo ni siquiera podiacutean conectarse a Internet Tampoco podiacutean enviar

y recibir mensajes Simplemente permitiacutean la funcioacuten baacutesica de hablar por teleacutefono

Dos deacutecadas atraacutes los dispositivos moacuteviles eran aparatos de gran tamantildeo y pesados

Soacutelo algunas pocas personas podiacutean acceder a estos dispositivos ya que se consideraban

artiacuteculos de lujo Pero este escenario fue cambiando paulatinamente llevando a que el

celular se transforme en un elemento imprescindible en nuestras vidas En Argentina en

el antildeo 2003 habiacutea 4 millones de liacuteneas activas En la actualidad la cifra llega a 37 millones

de liacuteneas activas y 62 millones de liacuteneas declaradas [11]

11 Los inicios

La Segunda Guerra Mundial originoacute la necesidad de comunicarse a distancia por

lo que Motorola creoacute un equipo militar llamado Handie Talkie H12-16 para

comunicaciones viacutea ondas de radio

Su salto a los sistemas civiles sucedioacute a finales de la deacutecada de los 40 con sistemas

de radio analoacutegicos en frecuencias FM principalmente y con servicios en las bandas HF

y VHF ofrecidos por la americana Bell

En 1955 Ericsson comercializoacute el Mobile Telephone System A (MTA) Phone

(Figura 1) un teleacutefono que pesaba 40 kilogramos y que se instalaba en automoacuteviles

Como curiosidad tuvo un total de 125 usuarios hasta 1967

Capiacutetulo 1 Tecnologiacutea Moacutevil

11

Figura 1 Mobile Telephone System A (MTA)

La primera llamada moacutevil data del 3 de abril de 1973 cuando Martin Cooper

(Figura 2) en aquel entonces ingeniero electroacutenico de Motorola realizoacute una llamada

desde la calle en Nueva York La llamada fue realizada mediante un prototipo del

Motorola DynaTAC 8000x Considerado el primer moacutevil del mundo pesaba cerca de un

kilo y mediacutea 33x45x89 centiacutemetros su bateriacutea teniacutea uacutenicamente la autonomiacutea de una

hora en conversacioacuten necesitando diez horas para cargarse Su costo era de USD 4000

Capiacutetulo 1 Tecnologiacutea Moacutevil

12

Figura 2 Martin Cooper el autor de la primer llamada moacutevil

El verdadero conocimiento popular del teleacutefono moacutevil no llegoacute hasta la deacutecada de

los 90 con la segunda generacioacuten de estos dispositivos

La comunicacioacuten digital permitioacute mejorar la calidad de la escucha de voz la

reduccioacuten del tamantildeo y peso de los dispositivos utilizados y sobre todo el incremento de

compantildeiacuteas operadoras que dieron paso a un mercado maacutes competitivo y accesible

Los usuarios fueron testigos de avances sorprendentes como la identificacioacuten de

llamada o los mensajes de texto que constituyeron a una nueva forma de comunicacioacuten

Vertiginosamente el celular pasoacute de ser considerado una herramienta de trabajo a

generalizarse en todos los estratos de la sociedad

Seguacuten avanzaba la deacutecada del 90 los teleacutefonos moacuteviles iban adaptaacutendose a esas

novedades incorporando pantallas cada vez de mayor tamantildeo y en los maacutes avanzados

haciendo desaparecer la antena que era necesario desplegar para poder realizar una

comunicacioacuten en condiciones adecuadas

Poco a poco los dispositivos empezaron a integrar cada vez maacutes funciones aviso

por vibracioacuten juegos bluetooth infrarrojos politonos y ya con el cambio de siglo

pantallas a color y caacutemaras fotograacuteficas Maacutes adelante llegariacutea la grabacioacuten de viacutedeo el

acceso a Internet las pantallas taacutectiles entre otras [12]

Capiacutetulo 1 Tecnologiacutea Moacutevil

13

12 Evolucioacuten de los protocolos para redes de comunicaciones

Hubiera sido imposible el auge de los teleacutefonos moacuteviles sin la estandarizacioacuten

mejora y evolucioacuten de los protocolos para redes de comunicaciones y su soporte por las

operadoras Asiacute tras las primeras comunicaciones viacutea ondas de radio con banda de

frecuencias por debajo de los 600 kHz las posteriores en AM y FM los servicios de Bell

y Ericsson en los antildeos 50 y 60 llegoacute esa primera llamada de 1973 que popularizoacute todo el

sector

La primera generacioacuten 1G fue responsabilidad de Ericsson con el sistema Telefoniacutea

Moacutevil Noacuterdica (NMT) y seguiacutea utilizando canales analoacutegicos En 1986 la compantildeiacutea

modernizoacute el sistema funcionando a frecuencias superiores de 900 MHz posibilitando

servicio para un mayor nuacutemero de usuarios Ademaacutes del NMT en los 80 se desarrollaron

otros sistemas de telefoniacutea moacutevil como el Sistema Telefoacutenico Moacutevil Avanzado (AMP)

desarrollado por los laboratorios Bell

La segunda generacioacuten 2G llegoacute en la deacutecada de los 90 con sistemas como Global

System for Mobile Communications (GSM) Estaacutendar Interno 136 (IS-136) Red

Mejorada Digital Integrada (iDEN) y el Estaacutendar Interno 95 (IS-95) GSM fue el

desarrollo maacutes relevante ya que fue el estaacutendar europeo de telefoniacutea moacutevil digital En el

proyecto participaron 26 compantildeiacuteas europeas de telecomunicaciones y en 1992 se

pusieron en marcha las primeras redes europeas de GSM-900 y los primeros teleacutefonos

moacuteviles GSM Ademaacutes de Europa GSM ha terminado imponieacutendose tambieacuten en Asia

Ameacuterica Latina Oceaniacutea y una parte de Ameacuterica del Norte

La necesidad de mayores velocidades de transmisioacuten de datos y mayores

capacidades que permitieran nuevos servicios dieron paso a la Tercera Generacioacuten (3G)

no sin antes pasar por el 25G que proporcionoacute el General Packet Radio Service (GPRS)

El estaacutendar europeo es el Universal Mobile Telecommunications System (UMTS) basado

en la tecnologiacutea W-CDMA y estaacute gestionado por la organizacioacuten 3GPP tambieacuten

responsable de GSM GPRS y Enhanced Data Rates for GSM Evolution (EDGE)

La Cuarta Generacioacuten (4G) sucede a las tecnologiacuteas 2G y 3G y ofrece entre otras

mejoras mayor seguridad y Calidad de Servicio (QoS) junto a velocidades de acceso

muy superiores a las anteriores (mayores a 100 Mbits en movimiento y a 1 Gbits en

Capiacutetulo 1 Tecnologiacutea Moacutevil

14

reposo) Estaacute basada completamente en el protocolo IP siendo un sistema de sistemas y

una red de redes que se alcanza gracias a la convergencia entre las redes de cables e

inalaacutembricas Seguacuten Vodafone ldquoel 4G tiene finalmente una razoacuten y es el entretenimientordquo

[13] La norma Long Term Evolution (LTE) es la maacutes extendida aunque no la uacutenica

existente

5G seraacute la nueva revisioacuten del sistema de conexioacuten de red sin cables y se espera que

esteacute disponible en el antildeo 2020 (Figura 3) en paiacuteses como Corea del Sur como asiacute tambieacuten

en Europa Como 4G la mayor velocidad de transferencia seraacute su mayor avance con

velocidades de descarga de hasta 10 Gbps (125 GBs) [14]

Figura 3 Evolucioacuten de los protocolos para redes de comunicacioacuten moacuteviles

13 La actualidad

Muchas de las actividades que un tiempo atraacutes soliacutean hacerse desde una

computadora tales como revisar el correo electroacutenico escuchar muacutesica agendar una

nueva cita en el calendario compartir fotos en alguna red social entre muchiacutesimas otras

en nuestros diacuteas se llevan a cabo de forma natural desde los dispositivos moacuteviles La

Figura 4 muestra coacutemo los dispositivos moacuteviles les han ganado terreno a los equipos

Capiacutetulo 1 Tecnologiacutea Moacutevil

15

tradicionales denominados lsquode escritoriorsquo

Figura 4 Comparacioacuten entre plataformas [15]

En la actualidad existen cientos de modelos diferentes de dispositivos moacuteviles y

los fabricantes siguen innovando intentando destacarse sobre la competencia Hoy en diacutea

no nos sorprende encontrar dispositivos moacuteviles con procesadores quad-core de 22 Ghz

Incluso ya se comienzan a conocer prototipos de dispositivos con ocho o diez nuacutecleos

De la mano de los procesadores la memoria RAM de los dispositivos moacuteviles

tambieacuten ha crecido considerablemente llegando a comercializarse dispositivos con 3 GB

de memoria

La caacutemara de los dispositivos es otra de las capacidades que maacutes ha progresado

llegando a encontrarse sensores de 20 MP y la posibilidad de grabar videos en formato

UHD 4K (3840 x 2160)

El tamantildeo de las pantallas y sus resoluciones fueron otra de las caracteriacutesticas que

maacutes han evolucionado Es posible encontrar dispositivos con pantallas de 5 pulgadas con

posibilidad de visualizar 16 millones de colores y con resoluciones Quad HD (2560 x

1440)

La tecnologiacutea de las bateriacuteas es un aspecto en que no se ha logrado grandes avances

en el sector ni se pronostican grandes progresos a corto plazo Incluso la llegada de chips

Capiacutetulo 1 Tecnologiacutea Moacutevil

16

maacutes potentes mayores pantallas o el 4G disminuiraacuten auacuten maacutes la autonomiacutea de las bateriacuteas

El uacuteltimo aspecto a mencionar es el de las capacidades del dispositivo Ademaacutes de

los ya claacutesicos sensores Global Positioning System (GPS) la capacidad de conectividad

viacutea bluetooth infrarrojo y WIFI hoy surge una diversidad de opciones que pueden

disponer los teleacutefonos inteligentes

Por el lado de la conectividad cada vez es maacutes comuacuten encontrar terminales con

mecanismos de comunicacioacuten Near Field Communication (NFC) o WIFI Direct

Con respecto a los sensores actualmente existen dispositivos que cuentan con

aceleroacutemetros giroscopios y magnetoacutemetros los cuales brindan a los desarrolladores de

aplicaciones la posibilidad de controlar la posicioacuten del aparato la aceleracioacuten que sufre

el dispositivo con respecto a la fuerza de la gravedad etc Tambieacuten es comuacuten el uso de

sensores de proximidad por ejemplo para apagar la pantalla mientras se atiende una

llamada El sensor de luminosidad permite medir el brillo de la luz ambiental Asiacute el

software del teleacutefono utiliza estos datos para ajustar el brillo de la pantalla

automaacuteticamente hacieacutendola maacutes clara o maacutes oscura

Los uacuteltimos smartphones de gama alta tambieacuten son capaces de medir la presioacuten

atmosfeacuterica a traveacutes de un baroacutemetro Los datos que mide el dispositivo sirven para

determinar en queacute nivel por encima del mar se encuentra el teleacutefono lo que se traduce en

la mejora de la precisioacuten del GPS

Incluso ya existen dispositivos que cuentan con un sensor de humedad del aire el

cual permite controlar los niveles de humedad para por ejemplo ayudar a las personas

con problemas respiratorios

Como si todo esto fuese poco existen modelos con podoacutemetro -para medir con

precisioacuten los pasos que da el usuario- pulsoacutemetro -para medir las pulsaciones a traveacutes de

los vasos sanguiacuteneos de los dedos- y hasta sensor de huellas digitales para cuestiones

relativas a la seguridad

Por lo anteriormente dicho los desarrolladores de aplicaciones para dispositivos

moacuteviles de la actualidad tienen el desafiacuteo de poder manipular desde sus aplicaciones

todas las posibilidades descriptas

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

17

Capiacutetulo 2 Desarrollo de

Aplicaciones Moacuteviles Nativas

Si bien el desarrollo de aplicaciones para dispositivos moacuteviles se remonta por lo

menos a 10 antildeos atraacutes ha habido un crecimiento exponencial desde que se abrioacute la tienda

de aplicaciones de iPhone en julio de 2008 Desde entonces los fabricantes de

dispositivos han creado tiendas de aplicaciones para otros dispositivos moacuteviles

incluyendo Android BlackBerry Nokia Ovi Windows Phone entre otros [16]

Actualmente el desarrollo de aplicaciones para dispositivos moacuteviles es un campo

en evolucioacuten con gran intereacutes econoacutemico y cientiacutefico Una prueba de esto es que para

Julio del 2014 se disponiacutean de maacutes de 3 millones de aplicaciones entre las principales

tiendas virtuales de aplicaciones Y solamente en el antildeo 2013 se contabilizaron 101

billones de descargas de aplicaciones moacuteviles en todo el mundo de las cuales 9 billones

fueron descargas pagas y 92 billones descargas gratuitas [17]

Con el actual creciente nuacutemero de plataformas moacuteviles desarrollar aplicaciones

moacuteviles se hizo muy difiacutecil para las empresas ya que necesitan desarrollar las mismas

aplicaciones para cada plataforma de destino

El desarrollo de aplicaciones nativas es la forma natural de implementar

aplicaciones moacuteviles Las aplicaciones nativas son concebidas para ejecutarse en una

plataforma especiacutefica es decir se debe considerar el tipo de dispositivo el sistema

operativo a utilizar y su versioacuten

Las aplicaciones nativas se desarrollan utilizando un entorno de desarrollo

integrado (IDE) que proporciona las herramientas de desarrollo necesarias para la

construccioacuten y depuracioacuten de aplicaciones El coacutedigo fuente se compila para obtener

coacutedigo ejecutable proceso similar que el utilizado para las tradicionales aplicaciones de

escritorio

Cuando la aplicacioacuten estaacute lista para ser distribuida debe ser transferida a las App

stores (tiendas de aplicaciones) especiacuteficas de cada sistema operativo Estas tiendas tienen

un proceso de auditoriacutea para evaluar si la aplicacioacuten se adecuacutea a los requerimientos de la

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

18

plataforma a operar Cumplido este paso la aplicacioacuten se pone a disposicioacuten de los

usuarios

La principal ventaja de este tipo de aplicaciones es la posibilidad de interactuar con

todas las capacidades del dispositivo (caacutemara GPS aceleroacutemetro agenda entre otras)

Ademaacutes no es estrictamente necesario poseer acceso a internet Su ejecucioacuten es raacutepida

puede ejecutarse en modo background y notificar al usuario cuando ocurra un evento que

necesite su atencioacuten

Claramente estas ventajas tienen como contrapartida un mayor costo de desarrollo

pues se debe utilizar un lenguaje de programacioacuten diferente seguacuten la plataforma Por ende

si se desea cubrir varias plataformas se deberaacute generar una aplicacioacuten para cada una de

ellas Esto conlleva a mayores costos de desarrollo actualizacioacuten y distribucioacuten de nuevas

versiones [9] [18] [19]

En la actualidad hay una gran cantidad de sistemas operativos para dispositivos

moacuteviles La Figura 5 muestra la utilizacioacuten de los sistemas operativos en los uacuteltimos antildeos

en todo el mundo mientras que la Figura 6 muestra la misma comparativa en Argentina

En ambos casos el ranking es liderado por Android seguido por iOS y en tercer lugar

Windows Phone [20]

Figura 5- Utilizacioacuten de Sistemas Operativos Moacuteviles en el mundo

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

19

Figura 6- Utilizacioacuten de Sistemas Operativos Moacuteviles en Argentina

A continuacioacuten se analizaraacute coacutemo es el proceso de desarrollo de aplicaciones

moacuteviles nativas en los sistemas operativos maacutes relevantes de la actualidad y luego en la

Tabla 1 se compararaacuten aspectos teacutecnicos de estas plataformas

21 Desarrollo de Aplicaciones Nativas en Android

Android es el sistema operativo maacutes utilizado en la actualidad Puede ser utilizado

en teleacutefonos inteligentes tablets relojes inteligentes televisores y automoacuteviles

Estaacute basado en Linux y es respaldado por Google

211 Evolucioacuten Inicialmente el desarrollo de Android era llevado a cabo por la empresa Android

Inc la cual fue fundada en el antildeo 2003 y recibiacutea respaldo econoacutemico por parte de Google

Antildeos maacutes tarde maacutes precisamente en Julio del 2005 Google adquiere Android y da lugar

a la primer versioacuten del sistema operativo en el antildeo 2007 Android 10 Apple Pie1

desarrollado sobre el kernel de Linux 26 En su presentacioacuten se hizo hincapieacute en que era

un sistema operativo para dispositivos moacuteviles totalmente gratuito y open source a

1 Desde la salida de la primera versioacuten del sistema operativo hasta el presente Google ha seguido la tradicioacuten de ponerle un nombre de postre a cada una de sus versiones siguiendo un orden alfabeacutetico

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

20

diferencia de iOS

La primera versioacuten comercial teniacutea mucho margen de mejora y apenas inquietoacute a la

competencia pero ya introduciacutea algunos conceptos que antildeos despueacutes son un estaacutendar de

los sistemas operativos moacuteviles

Menuacute desplegable de notificaciones

Widgets de escritorio

Android Market la tienda de apps (no contaba con ninguacuten sistema de pago para

usuarios Todo el cataacutelogo era gratuito)

Integracioacuten con Google Mail Contacts y Calendar

Navegador Maps Google Talk reproductor de YouTube y soporte para caacutemaras

En febrero del 2009 apenas 3 meses despueacutes del lanzamiento de Android 10 Apple

Pie llega la primera actualizacioacuten Android 11 Banana Bread No antildeadiacutea grandes

novedades pero siacute corregiacutea numerosos fallos detectados en la primera versioacuten e introduciacutea

un concepto por entonces poco usado por los rivales que buscaba facilitar la vida al

usuario las actualizaciones automaacuteticas con las que resultaba muy simple mantener todo

el software al diacutea

El 30 de abril del 2009 lanzan una nueva actualizacioacuten de gran importancia con

muchas novedades en cuanto a usabilidad Android 15 Cupcake Esta nueva versioacuten

introdujo las siguientes caracteriacutesticas

Teclado taacutectil QWERTY en pantalla con prediccioacuten de texto y diccionario de

usuarios para palabras personalizadas

Grabacioacuten y reproduccioacuten en formatos MPEG-4 y 3GP

Widget de escritorio de Google para realizar buacutesquedas directamente

SDK para el desarrollo de widgets de escritorio por parte de terceros

Funciones del portapapeles ampliadas

Interfaz para grabar y reproducir viacutedeos mejorada

Posibilidad de auto-rotacioacuten

Android 16 Donut apareciacutea en septiembre del 2009 con algunas novedades

adicionales

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

21

Soporte para CDMAEVDO 8021x VPN que ampliaba los mercados al alcance

de Android

Compatibilidad con distintas resoluciones de pantalla Soporte WVGA

Actualizacioacuten y nuevo disentildeo del Android Market

Utilidad de buacutesqueda universal en Internet y en el mismo dispositivo

Galeriacutea caacutemara y videocaacutemara con mejor integracioacuten con raacutepido acceso a la

caacutemara

Motor multi-lenguaje de Siacutentesis de habla para permitir a cualquier aplicacioacuten de

Android hablar una cadena de texto

Mejoras en las buacutesquedas por texto y voz

Apenas dos meses despueacutes en noviembre del 2009 lanzan Android 20 Eclair

uno de los cambios maacutes sustanciales sufridos por Android tanto a nivel de disentildeo como

de arquitectura interna Era una versioacuten dirigida a dispositivos de mayor tamantildeo en un

tiempo en el que los fabricantes empezaban a diversificar su oferta La versioacuten 21

mantuvo la misma nomenclatura y soacutelo corrigioacute algunos fallos pero su uso fue mayor

entre los fabricantes que la versioacuten anterior A continuacioacuten se mencionan algunas de las

nuevas caracteriacutesticas

Sincronizacioacuten de cuenta expandida permitiendo a los usuarios agregar muacuteltiples

cuentas al dispositivo para sincronizacioacuten de correo y contactos

Google Maps Navigation sistema de navegacioacuten GPS gratuito

Compatibilidad con Microsoft Exchange

Optimizacioacuten en velocidad de hardware y GUI renovada

Soporte para maacutes tamantildeos de pantalla y resoluciones con una mejor tasa de

contraste

Navegador actualizado soporte para HTML5 y barra de direccioacuten y buacutesqueda

unificada

Funcioacuten Speech to Text para escribir textos mediante el uso de la voz

Nueva pantalla de desbloqueo

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

22

Nuevas caracteriacutesticas para la caacutemara incluyendo soporte de flash zoom digital

modo escena balance de blancos efecto de colores y enfoque macro

Adicioacuten de fondos de pantalla animados permitiendo la animacioacuten de imaacutegenes

de fondo de la pantalla inicio para mostrar movimiento

El 20 de mayo del 2010 apareciacutea una nueva actualizacioacuten del sistema operativo

Android 22 Froyo Traiacutea numerosos cambios algunos copiados de otras ROMs y otros

con el uso empresarial en mente

Pantalla Home totalmente redisentildeada con 5 paneles en lugar de 3

Nueva galeriacutea de imaacutegenes

Soporte para actuar como hotspot2 para otros dispositivos tethering3 de datos

Soporte para Flash 101

Funcioacuten copiar y pegar mejorada en Google Mail

Nueva pantalla alternativa de desbloqueo mediante coacutedigo PIN

Grabacioacuten de viacutedeo en 720p

Optimizaciones en velocidad memoria y rendimiento Compilador JIT

Integracioacuten del motor de JavaScript V8 de Chrome en el navegador

Soporte para el servicio Android Cloud to Device Messaging (C2DM)

habilitando notificaciones push

El antildeo 2010 iba a concluir con el lanzamiento de una versioacuten sumamente popular

que prevalecioacute gran tiempo Android 23 Gingerbread Esta versioacuten contoacute con las

siguientes caracteriacutesticas

Disentildeo de la interfaz de usuario actualizado con incremento en velocidad y

simpleza

Nuevo disentildeo para el teclado numeacuterico en pantalla

Soporte para tamantildeos y resoluciones de pantalla extra-grandes (WXGA y

mayores)

Funcioacuten para copiar y pegar mejorada con soporte para caracteres individuales en

lugar de cajas de texto

2 lugar que ofrece acceso a Internet a traveacutes de una red inalaacutembrica y un enrutador conectado a un proveedor de servicios de Internet 3 proceso por el cual un dispositivo moacutevil con conexioacuten a Internet actuacutea como pasarela para ofrecer acceso a la red a otros dispositivos

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

23

Soporte para NFC

Herramientas de visualizacioacuten de consumo y uso de la bateriacutea mejoradas

Soporte para caacutemaras frontales

Acceso de bajo nivel para los desarrolladores de juegos

Recolector basura concurrente para incrementar el rendimiento

Sustitucioacuten del sistema de archivos YAFFS por ext4

Soporte nativo para maacutes sensores (tales como giroscopio y baroacutemetro)

Soporte de chat de video o voz usando Google Talk

En febrero del 2011 Google lanza Android 30 Honeycomb Se trata de una

actualizacioacuten especiacutefica para tablets no compatible con teleacutefonos que introduciacutea las

liacuteneas maestras de la interfaz en el futuro Las versiones 31 y 32 mantuvieron el mismo

nombre y fueron baacutesicamente un conjunto de correcciones A continuacioacuten se listan los

cambios significativos que tuvieron lugar en estas versiones

Pantalla de Inicio redisentildeada

Inclusioacuten de tonos azules en la interfaz en detrimento del verde tradicional

Nuevas funcionalidades para el emplazamiento y uso de widgets

Fin de los botones fiacutesicos Adaptacioacuten automaacutetica del SO seguacuten el dispositivo

Agregado de barra de sistema con caracteriacutesticas de acceso raacutepido a

notificaciones estados y botones de navegacioacuten suavizados disponible en la parte

inferior de la pantalla

Antildeadida la barra de accioacuten (Action Bar en ingleacutes) entregando acceso a opciones

contextuales navegacioacuten widgets u otros tipos de contenido en la parte superior

de la pantalla

Multitarea simplificada ndash tocando Aplicaciones recientes en la barra del sistema

permite a los usuarios ver instantaacuteneas de las tareas en curso y saltar raacutepidamente

de una aplicacioacuten a otra

Aceleracioacuten graacutefica mediante hardware

Optimizacioacuten del renderizado de graacuteficos 3D

Soporte para perifeacutericos USB

Octubre del 2011 fue el mes del lanzamiento de Android 40 Ice Cream Sandwich

basado en el nuacutecleo de Linux 301 Esta nueva versioacuten introdujo las siguientes mejoras

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

24

Nueva Interfaz Holo y fuente tipograacutefica Roboto

Sistema de gestioacuten de notificaciones mejorado

Multitarea mejorada

Android Beam funcionalidad para transferir datos entre dos dispositivos viacutea NFC

Funcioacuten de desbloqueo mediante el rostro

Nuevas funciones para la visualizacioacuten y gestioacuten del consumo de datos

Nuevas aplicaciones de correo y calendario

Habilidad de acceder a aplicaciones directamente desde la pantalla de bloqueo

Herramienta integrada de captura de pantalla

Soporte MKV

Aceleracioacuten por hardware de la interfaz de usuario

Soporte Stylus (laacutepiz taacutectil)

En Julio del 2012 se presenta Android 41 Jelly Bean que incluye las siguientes

novedades

Sistema de deteccioacuten de entrada de datos taacutectiles optimizado

Estreno de Google Now el servicio-asistente de voz inteligente de Google

Navegador Google Chrome

Buacutesqueda mediante voz mejorada

Nuevas posibilidades para las notificaciones interactivas de escritorio

Dictado de voz offline

Se deja de dar soporte al Flash Player

Meses despueacutes en noviembre del 2012 se lanza la versioacuten Android 42 Jelly Bean

la cual incluye habituales correcciones rendimiento mejorado y cambios puntuales en

ciertas aplicaciones

Android 43 Jelly Bean es anunciado el 24 de julio del 2013 Uno de los objetivos

de esta versioacuten fue tratar de consolidar a Android como un sistema operativo capaz de

ejecutar juegos Esta nueva versioacuten cuenta con las siguientes novedades

Soporte multiusuario y de perfiles mejorado

Soporte OpenGL ES 30

Bluetooth Smart

Plataforma Google Games

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

25

Servicios de localizacioacuten Wi-Fi mejorados

Ya no es necesario pulsar el icono del microacutefono para realizar una buacutesqueda de

voz Solo hay que decir OK Google y en seguida ordenar al equipo lo que se

necesite

Android 44 KitKat es anunciado en octubre del 2013 Esta nueva versioacuten intenta

corregir el problema de fragmentacioacuten se cuenta con muchas versiones y los fabricantes

tienen dificultades para adaptar sus productos a los requerimientos de cada nueva versioacuten

Se destaca de esta versioacuten

Menores requisitos de hardware para corregir la fragmentacioacuten de versiones

Compatible con terminales con 512 MB de memoria RAM

Reduccioacuten del consumo de bateriacutea mediante la optimizacioacuten de los sensores

Inclusioacuten de la suite ofimaacutetica QuickOffice

Servicios de almacenamiento online integrados Google Drive Box

Soporte para infrarrojos Usar el moacutevil como mando de TV

Aplicaciones a pantalla completa

Captura de pantalla en viacutedeo

En octubre del 2014 se lanza Android 5 Lollipop daacutendole soporte a otros

dispositivos como Android TV relojes inteligentes autos etc Esta nueva versioacuten

incluye

Nuevo disentildeo basado en Material Design que logra un flujo de trabajo maacutes fluido

Interfaz que se adapta a cualquier tamantildeo de dispositivo

Renovado sistema de notificaciones inteligente

Interesante vista multitarea que muestra capas con las diferentes aplicaciones

abiertas

Funcioacuten Android Smart Lock que permite emparejar un dispositivo Android con

otro ya sea un reloj inteligente o un automoacutevil

Modo Invitado para que puedas prestar el dispositivo sin que otros usuarios

tengan acceso a la informacioacuten privada

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

26

Soporte para sistemas de 64 bits

En octubre del 2015 se anuncia Android 6 Marshmallow que incluye las

siguientes novedades

Soporte para autenticacioacuten viacutea huella digital

Desinstalacioacuten raacutepida de las aplicaciones desde la pantalla de inicio

Nuevo esquema de gestioacuten de energiacutea llamado Doze

Mayor duracioacuten de la bateriacutea cuando el dispositivo estaacute en reposo

Inclusioacuten de Android Pay que emplearaacute el chip NFC

Mejoras en Google Now

Mayor control sobre los permisos requeridos por las aplicaciones

212 Proceso de Desarrollo Las aplicaciones nativas para esta plataforma se implementan utilizando el lenguaje

de programacioacuten Java

El estaacutendar sugiere utilizar el IDE oficial Android Studio (Figura 7) aunque es

posible utilizar otros entornos Independientemente del IDE utilizado se necesita

disponer del Software Development Kit (SDK) de la versioacuten de Android en la que se

desea trabajar El SDK provee todas las herramientas necesarias para desarrollar

compilar depurar y simular aplicaciones

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

27

Figura 7 Entorno de desarrollo Android Studio

Uno de los interrogantes que surgen en el momento de crear una aplicacioacuten es con

cual versioacuten de la Application Programming Interface (API) de Android trabajar Se debe

tener en cuenta que al trabajar con una versioacuten especiacutefica se estaacute limitando cuales son los

dispositivos que soportaraacuten la aplicacioacuten a crear No se recomienda utilizar una API

antigua -ya que no se estariacutea utilizando muchos de los avances de la plataforma- ni

tampoco la uacuteltima en el mercado ndashdebido a que pocos seriacutean los usuarios que podriacutean

utilizarla- En la Figura 8 se visualiza la distribucioacuten de versiones seguacuten los dispositivos

activos a la fecha de Diciembre 2016 [21] De esa informacioacuten se desprende que si se

optara por trabajar con la API 16 (Jelly Bean) el 966 de los celulares activos podraacuten

utilizar la aplicacioacuten a crear

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

28

Figura 8 Distribucioacuten de versiones de Android - Diciembre 2016

22 Desarrollo de Aplicaciones Nativas en iOS

iOS es un sistema operativo para dispositivos moacuteviles de la empresa multinacional

Apple Si bien fue originalmente desarrollado para el dispositivo iPhone luego el sistema

operativo alcanzoacute otros dispositivos como iPod Touch iPad A diferencias de otros

sistemas operativos para dispositivos moacuteviles iOS solo funciona en dispositivos creados

por la empresa Apple pero no asiacute en otro hardware de terceros

221 Evolucioacuten El sistema operativo moacutevil iOS se deriva del sistema operativo OS X el cual estaacute

basado en UNIX

La primera versioacuten del sistema operativo se presentoacute en enero del 2007 A

diferencia de sus sucesores la primera versioacuten no se llamoacute iOS sino iPhone OS Se

trataba de una plataforma bastante cerrada ya que las uacutenicas aplicaciones disponibles

eran las que estaban integradas al sistema operativo y fueron creadas por Apple como los

Mapas Mail Fotos Calendario entre otras

El desarrollo de aplicaciones nativas por parte de terceros no tuvo lugar hasta marzo

del 2008 momento en el cual Apple liberoacute el primer kit de desarrollo

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

29

Meses despueacutes se lanza la segunda versioacuten del sistema operativo iPhone OS 2 En

esta oportunidad introducen la App Store la cual permitioacute la descarga de aplicaciones de

terceros Ademaacutes la aplicacioacuten de Mapas recibioacute compatibilidad con el GPS y el Mail

notificaciones push

En 2009 Apple lanzoacute iPhone OS 3 y en su versioacuten 32 se le cambioacute el nombre a

iOS 32 iOS 3 incorporoacute grandes novedades buacutesqueda Spotlight botones Copiar y

Pegar grabacioacuten de viacutedeo edicioacuten de viacutedeo mensajes MMS comandos de voz modo

landscape y otras muchas apps Ademaacutes se siguioacute explotando las ventajas de las

notificaciones push y se continuoacute evolucionando su SDK daacutendole mayor poder a los

desarrolladores de aplicaciones

iOS 4 llegoacute a mediados del 2010 y trajo consigo nuevos cambios a la plataforma

Los maacutes destacables fueron la inclusioacuten de fondos de pantalla y la posibilidad de poder

abrir varias aplicaciones en simultaacuteneo Adicionalmente las aplicaciones podiacutean ser

agrupadas mediante carpetas algo simple pero uacutetil

En Junio del 2011 se libera iOS 5 Esta nueva versioacuten ofreciacutea grandes novedades

un Centro de Notificaciones Siri ndashel asistente virtual que marcoacute tendencia en los uacuteltimos

antildeos- iMessage iCloud Game Center Quiosco Recordatorios integracioacuten social para

Twitter y se mejoroacute notablemente la app de navegacioacuten web nativa Safari

iOS 6 fue presentado en Junio del 2012 y trajo como novedades la inclusioacuten de

Apple Maps (en reemplazo de Google Maps) mejoras en Siri con informacioacuten mucho

maacutes precisa la integracioacuten de Facebook y Twitter en el sistema el modo no molestar el

soporte para LTE entre otras

Los usuarios de este sistema operativo recibieron una de las mayores

actualizaciones en Junio del 2013 cuando se presenta iOS 7 Esta nueva versioacuten contoacute

con un redisentildeo total de la interfaz de usuario basaacutendose en transparencias y degradados

Ademaacutes se introdujo el Centro de Control AirDrop una renovada app de fotos iTunes

Radio y CarPlay mejoras en el App Switcher videos a caacutemara lenta entre otras cosas

Junio del 2014 fue el mes donde quedoacute disponible iOS 8 una nueva versioacuten del

sistema operativo que intenta resolver algunos errores de iOS 7 y antildeadir ciertas mejoras

Las extensiones y la posibilidad de conectar apps entre siacute mediante el menuacute compartir

hicieron que iOS 8 fuese mucho maacutes productivo Ademaacutes incorporoacute widgets para el

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

30

Centro de Notificaciones o las notificaciones interactivas Ademaacutes se implementaron los

contactos favoritos los teclados de terceros la funcioacuten Reachability y la utilidad

Continuity y las aplicaciones Apple Pay Salud HandOff QuickType Compartir en

Familia iCloud Drive y Apple Music

En el 2015 se presenta iOS 9 que introdujo todo un cambio en el uso del sistema

gracias a la compatibilidad con el 3D Touch del iPhone 6s y el iPhone 6s Plus Se

actualizoacute Notas con nuevas funciones se sustituyoacute Newsstand por News se incorporaron

mejoras en Passbook que pasoacute a llamarse Wallet y se mejoroacute Mapas con direcciones y

traacutefico Se antildeadioacute Split View Picture-in-Picture y atajos en teclados de terceros Ademaacutes

el sistema ahora podiacutea aprovechar mejor la autonomiacutea del dispositivo gracias al Modo

ahorro de bateriacutea que limita las conexiones y caracteriacutesticas del sistema para no consumir

tanta energiacutea

Por uacuteltimo en Junio del 2016 quedoacute disponible iOS 10 versioacuten que se caracteriza

por abrirse a los desarrolladores Con esta nueva versioacuten se puede tener acceso a Siri al

3D Touch y a apps directas del sistema operativo Ademaacutes el centro de widgets ahora es

maacutes intuitivo y la pantalla de bloqueo maacutes uacutetil Como es habitual se aprecian mejoras en

distintas aplicaciones del sistema operativo y se permite borrar apps de Apple que no sean

utilizadas por los usuarios

222 Proceso de desarrollo Las aplicaciones moacuteviles para la plataforma iOS se desarrollan utilizando el

lenguaje de programacioacuten Objetive C El entorno de desarrollo oficial es la plataforma

Xcode [22] la cual opera en conjunto con Interface Builder una herramienta graacutefica para

la creacioacuten de interfaces de usuario

Actualmente hay dos grandes versiones del sistema operativo moacutevil en curso como

se puede apreciar en la Figura 10 Es algo a destacar que la uacuteltima versioacuten del sistema

operativo es soportada por el 63 de los dispositivos activos Claramente la

fragmentacioacuten interna es mucho menor que la encontrada en Android

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

31

Figura 9 Entorno de desarrollo Xcode

Figura 10 Distribucioacuten de versiones de iOS - Noviembre 2016

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

32

23 Desarrollo de Aplicaciones Nativas en Windows Phone

El sistema operativo moacutevil Windows Phone fue desarrollado por Microsoft y

sucede a Windows Mobile A diferencia de su predecesor estaacute enfocado en el mercado de

consumo en lugar del mercado empresarial

231 Evolucioacuten Su primera versioacuten lanzada en septiembre del 2010 fue denominada Windows

Phone 7 Fue presentado como un nuevo sistema operativo que incluye funciones de

integracioacuten con los servicios Xbox Live y Zune La interfaz conocida como Metro ha

sido revisada en su totalidad y comparte caracteriacutesticas visuales similares a la interfaz del

dispositivo Zune HD

Windows Phone 75 es una actualizacioacuten para Windows Phone lanzada en

septiembre de 2011 Esta nueva versioacuten incorporoacute numerosas caracteriacutesticas como por

ejemplo la inclusioacuten de Internet Explorer 9 con soporte para CSS3 Media Queries y

soporte para usar GPS cuando se trabaje con aplicaciones de ubicacioacuten geograacutefica entre

otros

En enero del 2013 se presenta Windows Phone 78 una actualizacioacuten que trae

mejoras como la nueva interfaz de usuario y fondos personalizados para la pantalla de

bloqueo Fue la uacuteltima gran actualizacioacuten de Windows Phone 7 ya que Microsoft se

centroacute en Windows Phone 8

Windows Phone 8 es la siguiente versioacuten del sistema operativo la cual fue

presentada a finales de 2012 Entre las nuevas caracteriacutesticas se incluyen

Nuevas pantallas de inicio y de bloqueo maacutes personalizables

Rincoacuten infantil un espacio exclusivo y controlado para los nintildeos

Cartera para almacenar tarjetas de fidelizacioacuten y de creacutedito

NFC

Internet Explorer 10

Integracioacuten con Skype

Nuevo nuacutecleo Windows NT con soporte para procesadores de varios

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

33

nuacutecleos

Captura de pantalla

Su proacutexima versioacuten es Windows Phone 81 y fue presentada en abril del 2014

Entre sus caracteriacutesticas maacutes relevantes se encuentran

Centro de notificaciones

Asistente de voz conocido con el nombre de Cortana

Sensores (de Wi-Fi de datos y de bateriacutea)

Aplicaciones que vienen en el paquete de instalacioacuten como Salud y

ejercicios Comida y bebida Viajes y Mapas (esta uacuteltima compite con Here

Maps la cual es la aplicacioacuten de mapas de Nokia)

Mejoras en la pantalla de inicio posibilidad de agregar fondos de pantalla y

una tercera columna de mosaicos personalizables (Tiles)

A mediados del 2014 Microsoft decide cambiar de estrategia tratando de unificar

todas las plataformas como PC tablets smartphones Xbox One entre otros Windows

10 (moacutevil) se dio a conocer puacuteblicamente durante un evento el 21 de enero para 2015 Al

igual que su homoacutelogo Windows 10 Mobile utiliza como navegador predeterminado

Microsoft Edge reemplazando Internet Explorer de Windows Phone 81 ya que este no

se adecuaba a las nuevas liacuteneas de disentildeo del sistema operativo

232 Proceso de desarrollo El entorno de desarrollo maacutes popular para el desarrollo de aplicaciones para

Windows Phone es Visual Studio (Figura 11) En la actualidad es posible utilizar diversos

lenguajes de programacioacuten VBNET y CNET C++ y JavaScript

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

34

Figura 11 Entorno de desarrollo Visual Studio

24 Diferencias teacutecnicas entre Android iOS y Windows Phone

Desarrollar aplicaciones moacuteviles para los tres sistemas operativos maacutes populares

implica conocer ciertos aspectos teacutecnicos de cada plataforma Algunos de estos aspectos

teacutecnicos difieren sustancialmente entre cada sistema operativo

Una de las caracteriacutesticas a tener en cuenta es si las aplicaciones moacuteviles se ejecutan

dentro de una maacutequina virtual especiacuteficamente disentildeada o si se ejecutan directamente

sobre el sistema operativo

Otro aspecto que los desarrolladores deben tener en cuenta es el lenguaje de

programacioacuten a utilizar para crear aplicaciones nativas Este aspecto es importante porque

incide en otros aspectos como por ejemplo la gestioacuten de memoria

Ademaacutes del lenguaje de programacioacuten a utilizar es importante conocer la

tecnologiacutea requerida para disentildear interfaces de usuario

Asimismo los desarrolladores deben familiarizarse con diferentes IDEs seguacuten la

plataforma en la que se desea desarrollar como asiacute tambieacuten con diferentes tiendas de

aplicaciones donde alojar los productos finales

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

35

Por uacuteltimo la tecnologiacutea de hardware requerida para soportar el sistema operativo

tambieacuten difiere seguacuten cada plataforma

La Tabla 1 compara cada uno de estos aspectos en los sistemas operativos moacuteviles

Android iOS y Windows Phone

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

36

Sistema

Operativo

Maacutequina

Virtual

Lenguaje de

Programacioacuten

Interfaces

de usuario

Gestioacuten de

memoria

IDE Plataforma de

desarrollo

Dispositivos Tienda de

Aplicaciones

Android Dalvik VM Java XML files Garbage

collector

Android

Studio

Multiplatforma Heterogeneos Google Play

Store

iOS No Objective-C Cocoa

Touch

Reference

counting

XCode Mac OS X Homogeneos iTunes Apps

Store

Windows

Phone

CLR C and Net XAML files Garbage

collector

Visual

Studio

Windows Vista7 Homogeneos Windows

Phone Store

Tabla 1 Diferencias teacutecnicas entre las plataformas Android iOS y Windows Phone

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

37

Capiacutetulo 3 Desarrollo de

Aplicaciones Moacuteviles

Multiplataforma

En los uacuteltimos antildeos el mercado de los dispositivos moacuteviles en especial

smartphones ha mostrado un crecimiento notable tanto en Argentina como en todo el

mundo En particular en nuestro paiacutes las plataformas que maacutes han crecido son Android

e iOS [1520]

Actualmente gran parte de la industria del software se concentra en desarrollar

soluciones para dispositivos moacuteviles proveyendo especialmente aplicaciones nativas

Las aplicaciones nativas tal como se mencionoacute en el capiacutetulo anterior ofrecen la

posibilidad de acceder a todas las capacidades del dispositivo (caacutemara GPS aceleroacutemetro

y agenda entre otras) su rendimiento es alto el acceso a Internet no es estrictamente

necesario y pueden ejecutarse en segundo plano notificando al usuario cuando se requiera

su atencioacuten Estas aplicaciones pueden distribuirsecomercializarse a traveacutes de las tiendas

en liacutenea correspondientes

El principal reto para los proveedores de aplicaciones es proporcionar soluciones

para todas las plataformas pero esto conlleva un alto costo [6] no es posible reusar el

coacutedigo fuente entre plataformas diferentes multiplicando esfuerzos y elevando los costos

de desarrollo actualizacioacuten y distribucioacuten de nuevas versiones

El desarrollo multiplataforma procura optimizar la relacioacuten costobeneficio

compartiendo la misma codificacioacuten entre las versiones para las distintas plataformas

Entre otras ventajas sobresalen menor tiempo y costo de desarrollo prestaciones

similares a las nativas con acceso al hardware del dispositivo y disponibilidad de

entornos potentes de desarrollo (Delphi Visual Studio etc) o en su lugar utilizacioacuten de

tecnologiacuteas (HTML5 Javascript y CSS) bien conocidas por los desarrolladores web

quienes pueden trasladar sus conocimientos y experiencias al paradigma moacutevil Sin

embargo el rendimiento de las aplicaciones y sus interfaces de usuario pueden afectar la

experiencia de usuario

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

38

Las aplicaciones multiplataforma pueden clasificarse en aplicaciones web moacuteviles

hiacutebridas interpretadas y generadas por compilacioacuten cruzada [5] En las secciones

siguientes se analizaran cada una de estas clasifcaciones

31 Aplicaciones Web Moacuteviles

Las Aplicaciones Web Moacuteviles disentildeadas para ejecutarse dentro de un navegador

se desarrollan con tecnologiacutea web estaacutendar (HTML CSS y JavaScript) y cuentan con

una serie de caracteriacutesticas favorables no necesitan adecuarse a ninguacuten entorno operativo

son independientes de la plataforma y su puesta en marcha es raacutepida y sencilla

Por contrapartida sus tiempos de respuesta decaen debido a la interaccioacuten cliente-

servidor Al mismo tiempo resultan ser menos atractivas que las aplicaciones nativas ya

que no se encuentran instaladas en el dispositivo lo que implica acceder previamente a

un navegador Ademaacutes las restricciones de seguridad impuestas a la ejecucioacuten de coacutedigo

por medio de un navegador limitan el acceso a todas las capacidades del dispositivo [23]

Asimismo no es posible desarrollar aplicaciones web que corran en segundo plano ni

tampoco aplicaciones offline ya que es requisito disponer de una conexioacuten a internet para

su funcionamiento

El proceso de desarrollo de una aplicacioacuten web moacutevil debe contemplar una serie de

caracteriacutesticas inherentes al entorno de ejecucioacuten Como ya ha sido mencionado las

aplicaciones web moacuteviles pueden ser accesibles desde cualquier dispositivo moacutevil que

cuente con un navegador y acceso a internet pero esto no significa que la navegacioacuten en

la aplicacioacuten resulte ser coacutemoda u oacuteptima Por ejemplo una aplicacioacuten web con un menuacute

compuesto de 20 iacutetems puede implicar una usabilidad correcta desde una PC Por lo

contrario para un dispositivo moacutevil con una pantalla limitada no resulta praacutectico que se

le presente al usuario tantas opciones en el menuacute Con este ejemplo lo que se pretende

mostrar es que para que una aplicacioacuten sea accesible desde diferentes dispositivos

moacuteviles posiblemente se tengan que realizar al menos dos disentildeos de presentacioacuten

diferentes un disentildeo para PC y otro disentildeo para dispositivos moacuteviles con una estructura

organizativa de la aplicacioacuten maacutes simplificada con respecto al disentildeo tradicional Por

ejemplo algunas de las funcionalidades de la aplicacioacuten para PC pueden ser eliminadas

para la versioacuten para dispositivos moacuteviles o presentadas de forma diferente

Para desarrollar diferentes presentaciones de una misma aplicacioacuten web

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

39

actualmente existen dos estrategias distintas ambas vaacutelidas seguacuten el contexto En los

siguientes apartados se analizaraacuten cada una de ellas

311 Aplicacioacuten Web dedicada y exclusiva para dispositivos moacuteviles Esta metodologiacutea ha sido el estaacutendar hasta el antildeo 2012 En ella la direccioacuten URL

y el coacutedigo HTML de la versioacuten moacutevil son distintos de la versioacuten de escritorio Por lo

general las direcciones URL tienen el formato mnombresitiocom

Algunas de las ventajas de este meacutetodo

- En general la carga es maacutes raacutepida y la navegacioacuten maacutes coacutemoda

- Es posible adaptar de manera maacutes faacutecil el contenido de las secciones

Desventajas de este meacutetodo

- Mantenimiento maacutes costoso Se debe mantener dos versiones distintas del mismo

sitio

- Dificulta el posicionamiento del sitio en los buscadores

- Estos desarrollos al final tienden a ser versiones muy reducidas de la web para

PC llevando al usuario a frustrarse y a preferir ver la versioacuten original de la web

312 Aplicacioacuten Web con Disentildeo Adaptable Con esta metodologiacutea la aplicacioacuten web se adapta al dispositivo desde el cual se la

estaacute accediendo El coacutedigo HTML y la direccioacuten URL de la aplicacioacuten son uacutenicos El

Disentildeo Adaptable o Responsive Design (Figura 12) tiene sus oriacutegenes en el antildeo 2008

cuando la W3C discutioacute y describioacute sus propoacutesitos Desde el antildeo 2012 -momento en el

cual Google recomendoacute fuertemente su implicancia [24]- viene en ascenso y

posiblemente llegue a convertirse en un standard en un corto plazo

Mediante un Disentildeo Adaptable todos los elementos de la web se reajustan en ancho

y altura adaptaacutendose al tamantildeo de tu pantalla Incluso es posible ocultar secciones cuando

se accede desde un dispositivo moacutevil

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

40

Figura 12 Disentildeo Adaptable

Las principales ventajas del desarrollo de aplicaciones web con Disentildeo Adaptable

son

- El mantenimiento es menos costoso ya que solo hay que mantener una uacutenica

versioacuten de la aplicacioacuten

- Se simplifica el proceso de posicionar la aplicacioacuten en los buscadores

Como contrapartida el Disentildeo Adaptable presenta una serie de desventajas

- Requiere de mayores niveles teacutecnicos para su desarrollo

- El contenido de las aplicaciones con Disentildeo Adaptable puede ser mayor que el

contenido de las aplicaciones web especiacuteficas para dispositivos moacuteviles

perjudicando el tiempo de carga cuando se utiliza un tipo de conexioacuten no muy

potente y generando un mayor consumo de datos

En la actualidad existe una gran cantidad de frameworks que simplifican el

desarrollo de aplicaciones web con disentildeo adaptable destacaacutendose por su popularidad y

extensa documentacioacuten los frameworks Bootstrap [25] y Foundation [26]

32 Aplicaciones Hiacutebridas

Las aplicaciones hiacutebridas utilizan tecnologiacuteas web (HTML Javascript y CSS) pero

no son ejecutadas por un navegador En su lugar se ejecutan en un contenedor web

(webview) como parte de una aplicacioacuten nativa la cual estaacute instalada en el dispositivo

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

41

moacutevil Desde una aplicacioacuten hiacutebrida es posible acceder a las capacidades del dispositivo

a traveacutes de diversas API

Las aplicaciones hiacutebridas ofrecen grandes ventajas permitiendo la reutilizacioacuten de

coacutedigo en las distintas plataformas el acceso al hardware del dispositivo y la distribucioacuten

a traveacutes de las tiendas de aplicaciones En contrapartida se observan dos desventajas de

las aplicaciones hiacutebridas respecto del caso nativo i) la experiencia de usuario se ve

perjudicada al no utilizar componentes nativos en la interfaz y ii) la ejecucioacuten se ve

ralentizada por la carga asociada al contenedor web

Afortunadamente existe una diversidad de frameworks que permiten desarrollar

aplicaciones hiacutebridas A continuacioacuten se haraacute un breve resumen de los maacutes populares

321 PhoneGap PhoneGap [27] es un framework gratuito y open source creado en el antildeo 2008 por

la empresa Nitobi Software que permite crear aplicaciones moacuteviles usando tecnologiacutea

web estaacutendar HTML JavaScript y CSS En octubre del 2011 Adobe adquiere la empresa

Nitobi y aporta el coacutedigo de PhoneGap a Apache Software Foundation para iniciar un

nuevo proyecto por encima de PhoneGap llamado Apache Cordova [28] PhoneGap pasoacute

a ser una de las varias distribuciones de Apache Cordova (Figura 13) brindando servicios

extras como por ejemplo Adobe PhoneGap Build [29] un servicio de compilacioacuten en la

nube proporcionado por Adobe Creative Cloud PhoneGap Desktop y PhoneGap

Developer

PhoneGap permite compilar aplicaciones para las siguientes plataformas Android

IOS Amazon Fire OS Windows Phone Windows 8 Ubuntu Tizen Firefox OS

Blackberry 10

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

42

Figura 13 Funcionamiento de Apache Cordova

322 CocoonJS CocoonJS [30] es un framework para el desarrollo de aplicaciones moacuteviles

producido por Ludei [31] Actualmente cuenta con una licencia propietaria y ofrece

diferente tipos de planes pagos y gratuitos El mencionado framework estaacute basado en

Apache Cordova al igual que PhoneGap pero se diferencia de este uacuteltimo en que hace

un mayor hincapieacute en la performance de las aplicaciones resultantes CocoonJS ofrece

dos tipos de webview

Canvas+ un webview liviano optimizado para video juegos Provee solo un

subconjunto de las funcionalidades del HTML5 (canvas audio motion

geolocalizacioacuten etc) necesarias para desarrollar video juegos con el objetivo de

brindar la mejor performance posible

Webview+ un potente y completo webview basado en el webview del proyecto

Chromium el cual cuenta de una mejor performance en comparacioacuten con el

webview por defecto de Apache Cordova

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

43

CocoonJs permite crear aplicaciones tanto para iOS como para Android

323 Ionic Ionic [32] es un completo SDK gratuito y open source para el desarrollo de

aplicaciones hiacutebridas producido por Max Lynch Ben Sperry y Adam Bradley de la

compantildeia Drifty Co en el antildeo 2013 En un tiempo relativamente corto alcanzoacute una

popularidad a destacar Estaacute basado en Apache Cordova permitiendo desarrollar

aplicaciones con tecnologiacutea web A diferencia de otros frameworks para el desarrollo de

aplicaciones hibridas Ionic provee un framework para la interfaz de usuario y

herramientas visuales para disentildear interfaces

Mediante Ionic es posible crear aplicaciones para Android IOS Windows Phone y

Firefox OS

324 Sencha Touch Sencha Touch [33] es un framework gratuito Model-View-Controller (MVC)

JavaScript construido sobre el sistema de clases de Ext JS disentildeado especialmente para

el desarrollo de aplicaciones web moacuteviles para dispositivos taacutectiles [34]

Al igual que PhoneGap Sencha Touch permite a los desarrolladores crear

aplicaciones moacuteviles a partir de un desarrollo web con HTML5 CSS y Javascript A

diferencia de PhoneGap Sencha no necesita de ninguna libreriacutea de terceros para construir

interfaces similares a las nativas ya que el framework provee consigo una gran cantidad

de componentes visuales listos para utilizar

Sencha empaqueta el coacutedigo del proyecto mediante PhoneGap para luego poder

construir aplicaciones en todas las plataformas soportadas por PhoneGap

33 Aplicaciones Interpretadas

Las aplicaciones interpretadas son implementadas utilizando un lenguaje base el

cual se traduce en su mayor parte a coacutedigo nativo mientras el resto es interpretado en

tiempo de ejecucioacuten Estas aplicaciones son implementadas de manera independiente de

las plataformas utilizando diversas tecnologiacuteas y lenguajes tales como Javascript Java

Ruby y XML entre otros

Una de las principales ventajas de este tipo de aplicaciones es que se obtienen

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

44

interfaces de usuario totalmente nativas Sin embargo los desarrolladores experimentan

una dependencia total con el entorno de desarrollo elegido

Seguidamente se presentaran algunos de frameworks maacutes reconocidos para el

desarrollo de aplicaciones interpretadas

331 Appcelerator Titanium Desarrollado por Appcelerator Inc Appcelerator Titanium [35] es un framework

de coacutedigo abierto que permite la creacioacuten de aplicaciones moacuteviles para las plataformas

iOS y Android Dicho framework estaacute formado por Titanium Studio un entorno de

desarrollo de coacutedigo libre para la codificacioacuten de aplicaciones moacuteviles multiplataforma

y el SDK Titanium una serie de herramientas para el desarrollo testeo anaacutelisis

depuracioacuten y compilacioacuten de aplicaciones

Las aplicaciones desarrolladas con Appcelerator Titanium se codifican utilizando

el lenguaje Javascript el cual es evaluado en tiempo de ejecucioacuten mediante un inteacuterprete

de Javascript que se ejecuta en el sistema operativo del dispositivo Al iniciar la

aplicacioacuten desde el coacutedigo nativo se ejecuta el coacutedigo Javascript y mediante la API de

Titanium se mapea uno-a-uno cada elemento del coacutedigo Javascript con los elementos

nativos De esta manera la API de Titanium actuacutea como puente logrando interfaces de

usuario compuestas de controles nativos Este entorno de desarrollo utiliza el framework

Alloy disentildeado para el desarrollo aacutegil de aplicaciones moacuteviles Alloy estaacute basado en la

arquitectura MVC y soporta el uso de tecnologiacuteas populares como Backbonejs [36] y

Underscorejs [37]

Los creadores de Titanium destacan que mediante este framework es posible

reutilizar entre el 60 y 90 del coacutedigo entre distintas plataformas

332 NativeScript El 5 de marzo del 2015 la empresa Telerik lanzoacute NativeScript [38] un proyecto de

coacutedigo abierto el cual permite generar aplicaciones nativas utilizando JavaScript

Asimismo es posible desarrollar la aplicacioacuten utilizando el lenguaje TypeScript [39]

lenguaje libre y de coacutedigo abierto desarrollado por Microsoft que extiende a JavaScript

esencialmente antildeadiendo tipado estaacutetico y objetos basados en clases En este sentido

cuando se compila la aplicacioacuten se realiza la traduccioacuten del coacutedigo TypeScript a coacutedigo

JavaScript

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

45

NativeScript provee un moacutedulo multiplataforma que permite obtener aplicaciones

nativas desde coacutedigo JavaScript Este moacutedulo expone las capacidades del dispositivo y

de la plataforma subyacente de una manera consistente y permite accederlas desde el

coacutedigo JavaScript De igual manera las interfaces de usuario pueden ser definidas

mediante coacutedigo JavaScript documentos HTML y archivos CSS abstrayeacutendose de los

componentes nativos reales

Cuando la aplicacioacuten es compilada parte del coacutedigo multiplataforma es traducido

a coacutedigo nativo mientras que el resto es interpretado en tiempo de ejecucioacuten (Figura 14)

Por el momento NativeScript permite generar aplicaciones para Android e iOS y

se preveacute dar soporte a Windows Phone NativeScript renderiza controles nativos sin

utilizar WebViews logrando una performance y experiencia de usuario similar al de las

aplicaciones nativas

Figura 14 Proceso de interpretacioacuten mediante NativeScript

34 Aplicaciones Generadas por Compilacioacuten Cruzada

Estas aplicaciones se compilan de manera nativa creando una versioacuten especiacutefica de

alto rendimiento para cada plataforma destino Ejemplos de entornos de desarrollo para

generar aplicaciones por compilacioacuten cruzada son Applause [40] Xamarin [41]

Embarcadero Delphi 10 Seattle [42] y RubyMotion [43]

El entorno de desarrollo abierto Applause utiliza como entrada un lenguaje

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

46

especiacutefico del dominio basado en el framework Xtext [44] disentildeado expliacutecitamente para

aplicaciones moacuteviles orientadas a datos y genera coacutedigo fuente en Objective C Java C

o Python Las caracteriacutesticas de Xamarin Embarcadero Delphi 10 Seattle y RubyMotion

se presentan en secciones posteriores

341 Xamarin Xamarin es una plataforma de desarrollo de aplicaciones moacuteviles para generar

aplicaciones 100 nativas para iOS Android y Windows a partir de una base de coacutedigo

CNET comuacuten para conseguir entre un 75 y hasta casi un 100 de reutilizacioacuten de

coacutedigo entre plataformas Las aplicaciones escritas con Xamarin y C disponen de acceso

completo a las API de la plataforma subyacente asiacute como de la capacidad de crear

interfaces de usuario nativas y de realizar la compilacioacuten en coacutedigo nativo por lo que el

impacto en el rendimiento en tiempo de ejecucioacuten es escaso

Xamarin es una compantildeiacutea que se establecioacute en mayo de 2011 por los mismos

ingenieros que crearon el proyecto Mono [45] consistente en una implementacioacuten libre

de la plataforma de desarrollo NET para dispositivos Android iOS y GNULinux

Anteriormente este proyecto se llamaba MonoTouch y MonoDroid

Si bien Xamarin cuenta con su propio IDE denominado Xamarin Studio (Figura

15) es posible integrarlo con Microsoft Visual Studio y de esta manera generar tambieacuten

aplicaciones para Windows incluido Windows RT para tablets y Windows Phone para

celulares

En febrero del 2016 Xamarin es comprada por Microsoft y desde ese momento la

plataforma Xamarin y el IDE Xamarin Studio pasaron a ser gratuitas

Xamarin propone un enfoque de desarrollo multiplataforma en el que se comparte

la codificacioacuten completa de la loacutegica del negocio Sin embargo las interfaces deben ser

programadas de manera independiente para cada una de las plataformas destino Asiacute la

reutilizacioacuten de coacutedigo seguacuten estudios estadiacutesticos de la compantildeiacutea Xamarin es cercana

al 85

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

47

Figura 15 Entorno de Desarrollo Xamarin Studio

342 Embarcadero Delphi 10 Seattle Embarcadero Delphi 10 Seattle [42] es una plataforma de desarrollo propietaria y

no gratuita que permite a los desarrolladores crear aplicaciones raacutepidamente a traveacutes de

un entorno visual coacutemodo e intuitivo (Figura 16) La aplicacioacuten desarrollada puede ser

compilada para muacuteltiples plataformas incluyendo Windows Mac Android e iOS

Delphi 10 Seattle al igual que Xamarin aventaja a otros tipos de aplicaciones

multiplataformas con resultados 100 nativos con acceso total a los sensores y

capacidades del dispositivo (caacutemara notificaciones GPS aceleroacutemetro entre otras)

Un punto a destacar es que Delphi 10 Seattle a traveacutes del framework de interfaces

de usuario FireUI Multi-Device Designer permite crear interfaces de usuario totalmente

nativas sin la necesidad de tener que disentildear interfaces especiacuteficas para cada plataforma

en particular

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

48

Figura 16 Entorno de Desarrollo Delphi 10 Seattle

343 RubyMotion En Mayo de 2012 la empresa HipByte lanza RubyMontion un proyecto que

permite generar aplicaciones para iOS Android y OS X utilizando el lenguaje de

programacioacuten Ruby

Para poder generar las aplicaciones multiplataforma RubyMotion posee

implementaciones de Ruby sobre los sistemas operativos destinos (Android e iOS) que

permiten acceder a todas las caracteriacutesticas provistas por cada plataforma Las

herramientas de compilacioacuten provistas por RubyMotion se encargan de embeber la

correspondiente implementacioacuten de Ruby al momento de compilar para cada plataforma

La principal desventaja de RubyMotion es que soacutelo funciona bajo el sistema

operativo OS X Otro factor a tener en cuenta es que no posee un entorno de desarrollo

integrado que facilite todo el proceso al desarrollador esto se ve solventado gracias a que

ofrece complementos para los IDE y editores de coacutedigo maacutes utilizados

Finalmente si bien el producto es un servicio pago ofrece una posibilidad de

probarlo gratuitamente aunque con soporte uacutenicamente para compilar a la uacuteltima versioacuten

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

49

de cada plataforma destino

Capiacutetulo 4 Experimentacioacuten

50

Capiacutetulo 4 Experimentacioacuten

Con el objetivo de profundizar la investigacioacuten de las diferentes metodologiacuteas de

desarrollo de aplicaciones moacuteviles multiplataforma es que se llevaron a cabo diferentes

experimentos en simultaacuteneo El primer experimento consiste en el desarrollo de una

aplicacioacuten moacutevil utilizando cada una de las metodologiacuteas estudiadas en el capiacutetulo

anterior con el objetivo de analizar el proceso de desarrollo El segundo experimento

tiene como objetivo analizar el rendimiento de las aplicaciones moacuteviles generadas

mediante las metodologiacuteas estudiadas a traveacutes de un caacutelculo matemaacutetico Por uacuteltimo se

presenta un informe comparativo que pueda ayudar en la toma de decisiones sobre queacute

metodologiacutea utilizar en futuros desarrollos

41 Aplicacioacuten Moacutevil para la plataforma de E-Learning WebUNLP

411 Descripcioacuten del problema WebUNLP es un entorno virtual de ensentildeanza y aprendizaje que permite a los

docentes mediar sus propuestas educativas Alumnos y docentes pueden encontrarse en

ese espacio para compartir materiales de estudio comunicarse y generar una experiencia

educativa en forma virtual [46]

Actualmente WebUNLP cuenta con una versioacuten web enfocada a computadoras de

escritorio o portaacutetiles pero no estaacute adaptada para ser utilizada desde dispositivos moacuteviles

El desarrollo planteado consiste en extender WebUNLP con la construccioacuten de una

aplicacioacuten moacutevil que permita acceder a determinadas funcionalidades del sistema a

traveacutes de un dispositivo moacutevil El enfoque propuesto incluye un anaacutelisis de la misma

solucioacuten comparando el desarrollo nativo web hiacutebrido interpretado y de compilacioacuten

cruzada a fin de establecer cuaacutel de ellos es conveniente

Como ocurre con cualquier desarrollo de software la construccioacuten de una

aplicacioacuten moacutevil implica tener claramente definido su propoacutesito y cuaacuteles requerimientos

debe cumplir En particular para el caso de software para dispositivos moacuteviles resulta

esencial tener objetivos maacutes acotados que en su versioacuten de escritorio [47]

Capiacutetulo 4 Experimentacioacuten

51

Para el caso especiacutefico de WebUNLP se realizoacute el desarrollo incremental de una

aplicacioacuten moacutevil y esta primera versioacuten se enfocoacute en una de sus herramientas de

comunicacioacuten la cartelera Esta herramienta permite comunicar las novedades de un

curso como por ejemplo el cambio de horario de una cursada recordar las fechas de

entrega de un trabajo praacutectico entre otras [46]

412 Anaacutelisis Uno de los primeros interrogantes planteados fue la eleccioacuten de la plataforma En

teacuterminos de mercado los sistemas operativos que predominan en Argentina son Android

e iOS [4815] con lo cual se decidioacute dar soporte a estos dos sistemas operativos

Se analizaron los requerimientos funcionales y no funcionales de forma aislada a la

plataforma y luego de forma especiacutefica para cada una de ellas

A continuacioacuten se presentan algunos requerimientos a cumplir por la aplicacioacuten

El usuario debe poder ingresar a la aplicacioacuten con las mismas credenciales que las

utilizadas para acceder a la versioacuten web de escritorio

El usuario debe poder acceder a la cartelera de todos los cursos en los que

participa ya sea como docente o alumno

El usuario debe recibir una notificacioacuten en su dispositivo cuando una novedad es

publicada en la cartelera Este requerimiento no se puede cumplir en la versioacuten

web accesible desde computadoras de escritorio yo portables

El usuario debe tener la misma experiencia de uso en todas las plataformas

operativas

La aplicacioacuten web existente debe estar sincronizada con la aplicacioacuten moacutevil a

desarrollar esto significa que cualquier cambio realizado desde la aplicacioacuten

moacutevil debe verse reflejado en la versioacuten web y viceversa

413 Disentildeo Para satisfacer los requerimientos planteados en el punto anterior a excepcioacuten de

la notificacioacuten el disentildeo de la aplicacioacuten moacutevil web consiste en una reacuteplica de lo ofrecido

por WEBUNLP adaptaacutendose solamente la interfaz al tamantildeo de pantalla del dispositivo

moacutevil

Capiacutetulo 4 Experimentacioacuten

52

Para el disentildeo de las aplicaciones moacuteviles nativa hiacutebrida interpretada y de

compilacioacuten cruzada la situacioacuten es maacutes compleja En la Figura 17 se presenta la

arquitectura geneacuterica de todos los componentes que participan en este escenario de

desarrollo En ella se observa el acceso desde una PC a WebUNLP y el acceso desde

dispositivos moacuteviles a la informacioacuten de WebUNLP mediante servicios web Para el

desarrollo de los servicios web se disentildeoacute una API Restful dada su simpleza escalabilidad

e interoperabilidad [49]

Figura 17 Arquitectura geneacuterica para aplicacioacuten nativa e hiacutebrida

Asimismo existe una tarea programada (Cron) de ejecucioacuten intermitente a

intervalos regulares de tiempo la cual notifica a los dispositivos moacuteviles correspondientes

cuando se crea una novedad en la cartelera de WebUNLP El Cron identifica el sistema

operativo del dispositivo a notificar y genera dicha notificacioacuten

En cuanto a la interfaz graacutefica se planteoacute un disentildeo independiente de la plataforma

para analizar los aspectos de usabilidad de la aplicacioacuten y luego se realizaron los ajustes

necesarios para cada tipo de aplicacioacuten

En las interfaces disentildeadas la navegacioacuten es en serie en el orden en que se presentan

en el mockup [50] de la Figura 18

Capiacutetulo 4 Experimentacioacuten

53

Figura 18 Mockup independiente del tipo de aplicacioacuten

414 Desarrollo

4141 Aplicacioacuten Nativa para Android

El desarrollo de aplicaciones para la plataforma Android requiere disponer del Java

Development Kit (JDK) y su entorno de programacioacuten conocido como Android SDK

Este uacuteltimo provee libreriacuteas y herramientas necesarias para construir testear y depurar

aplicaciones para Android

El desarrollo de la aplicacioacuten de WebUNLP para Android se realizoacute seguacuten las

convenciones adoptadas por su comunidad porque aplica buenas praacutecticas en la

construccioacuten de interfaces y de la loacutegica detraacutes de ellas el acceso a datos y a servicios

web Para cumplir el requerimiento de las notificaciones en el dispositivo

correspondiente el Cron genera la notificacioacuten mediante el uso del servicio Google Cloud

Messaging (GCM) [51] En la Figura 19 se presentan las interfaces de la aplicacioacuten

desarrollada

Figura 19 Aplicacioacuten nativa para Android

Capiacutetulo 4 Experimentacioacuten

54

4142 Aplicacioacuten Nativa para iOS

La plataforma Apple iOS estaacute basada en un modelo propietario es por ello que el

desarrollo de una aplicacioacuten nativa iOS implica contar con una Apple Mac ejecutando OS

X con Xcode instalado El lenguaje de programacioacuten principal es Objective C Xcode es

el entorno de desarrollo de Apple para todos sus dispositivos y es el encargado de

proporcionar el iOS SDK con las herramientas compiladores y frameworks necesarios

Ademaacutes Xcode viene integrado con simuladores para dispositivos iOS (iPhones y iPads)

que facilitan las etapas de prueba del sistema desarrollado

Para los aspectos referentes a la interfaz graacutefica y la interaccioacuten con el usuario se

siguieron las convenciones propuestas por Apple [52] para lograr una mejor integracioacuten

de la aplicacioacuten con el sistema operativo y mejorar la experiencia del usuario

Por uacuteltimo para satisfacer el requerimiento de notificaciones el Cron notifica al

dispositivo iOS correspondiente mediante el uso del servicio Apple Push Notification

Service (APNs) [53] En la Figura 20 se presentan las interfaces de la aplicacioacuten

desarrollada

Figura 20 Aplicacioacuten nativa para iOS

4143 Aplicacioacuten Web Moacutevil

Se desarrolloacute una aplicacioacuten web capaz de acceder a la cartelera de WebUNLP

disponible para cualquier dispositivo moacutevil que cuente con un navegador que soporte las

caracteriacutesticas utilizadas para el desarrollo HTML5 CSS3 y Javascript

Como la velocidad de transmisioacutenrecepcioacuten de datos de un dispositivo moacutevil a

traveacutes de WiFi y en particular 3G es inferior a la velocidad de una computadora de

Capiacutetulo 4 Experimentacioacuten

55

escritorio la versioacuten web de la cartelera de WebUNLP es liviana y gran parte de los

requerimientos son implementados a traveacutes de Ajax [54] para evitar ante alguacuten cambio

la recarga de la paacutegina completa

Debido a las limitaciones que tienen las aplicaciones que se ejecutan sobre un

navegador no es posible implementar la recepcioacuten de una notificacioacuten en el dispositivo

cuando una novedad es publicada en la cartelera

4144 Aplicacioacuten Hiacutebrida desarrollada con PhoneGap y Jquery Mobile

Para la construccioacuten de la aplicacioacuten WebUNLP hiacutebrida se utilizoacute el framework

PhoneGap [27] el cual permite desarrollar aplicaciones moacuteviles que utiliza tecnologiacuteas

comunes a todos los dispositivos HTML5 CSS y Javascript

Asimismo se utilizoacute el framework Javascript Jquery Mobile [55] para lograr

interfaces con apariencia y comportamiento consistente a traveacutes de las diferentes

plataformas moacuteviles

Con el objetivo de implementar el patroacuten de disentildeo MVC se utilizoacute la libreriacutea

Backbonejs [36]

Por uacuteltimo para satisfacer el requerimiento de notificaciones se utilizoacute el plugin

Pushwoosh [56]

En la figura 5 se presentan las interfaces de la aplicacioacuten desarrollada

Figura 21 Aplicacioacuten hiacutebrida desarrollada con PhoneGap

Capiacutetulo 4 Experimentacioacuten

56

4145 Aplicacioacuten Hiacutebrida desarrollada con Sencha Touch

El desarrollo de WebUNLP utilizando Sencha Touch se vio favorecido por el uso

del patroacuten de disentildeo MVC Esto permitioacute mayor flexibilidad y legibilidad en el coacutedigo

[57] [34]

Sencha ofrece Sencha Command una herramienta multiplataforma de liacutenea de

comandos que provee tareas automatizadas para todo el ciclo completo de una aplicacioacuten

En el caso de WebUNLP se utilizoacute tanto para la generacioacuten del proyecto como para el

empaquetado de la aplicacioacuten

En la Figura 22 se presentan las interfaces de la aplicacioacuten desarrollada

Figura 22 Aplicacioacuten desarrollada con Sencha Touch

4146 Aplicacioacuten Interpretada de WebUNLP con Appcelerator Titanium 3

Para desarrollar una aplicacioacuten moacutevil experimental seguacuten el enfoque interpretado

se utilizoacute el entorno de desarrollo gratuito y open source Appcelerator Titanium 3 [35]

Se destaca la simplicidad y legibilidad de los controladores y modelos de la

aplicacioacuten desarrollada luego de utilizar Alloy el framework de Titanium que permite

disentildear aplicaciones seguacuten el patroacuten de disentildeo MVC Para la construccioacuten de las vistas se

puede optar por la programacioacuten mediante Javascript y la API de Titanium o bien por

una especificacioacuten XML con estilos TSS (Titanium Style Sheets) Esta uacuteltima opcioacuten

simplifica el proceso de creacioacuten de las vistas aunque falta todaviacutea un buen editor visual

de interfaces que lo potencie

Capiacutetulo 4 Experimentacioacuten

57

Para cubrir requerimientos de notificaciones en el dispositivo Titanium provee el

moacutedulo PushNotifications para plataformas Android e iOS

La Figura 24 (a) muestra la experimentacioacuten con Titanium

4147 Aplicacioacuten Generada por Compilacioacuten Cruzada de WebUNLP utilizando XamarinVisual Studio

Tal como se mencionoacute en la seccioacuten 341 Xamarin propone un enfoque de

desarrollo multiplataforma en el que se comparte la codificacioacuten completa de la loacutegica

del negocio Sin embargo las interfaces deben ser programadas de manera independiente

para cada una de las plataformas destino (ver Figura 23) Asiacute la reutilizacioacuten de coacutedigo

seguacuten estudios estadiacutesticos de la compantildeiacutea Xamarin es cercana al 85

Figura 23 Enfoque uacutenico de desarrollo Xamarin

Para el estudio de las aplicaciones generadas por compilacioacuten cruzada se desarrolloacute

la aplicacioacuten moacutevil de WebUNLP utilizando Xamarin integrado con Microsoft Visual

Studio Siguiendo la estrategia maacutes eficiente para trabajar en este entorno se ha creado

una solucioacuten uacutenica conteniendo tres proyectos distintos Uno de ellos se utilizoacute para

generar la aplicacioacuten Android otro para la aplicacioacuten Windwos Phone 8 y el tercero para

la implementacioacuten de una biblioteca de clases portable (PCL por sus siglas en ingleacutes) con

todo el coacutedigo compartido Los tres proyectos fueron desarrollaacutendose de manera conjunta

y concurrente

Aunque una de las ventajas maacutes importantes de Xamarin es la reutilizacioacuten de

coacutedigo eacutesta se ve fuertemente afectada por el tipo de aplicacioacuten que se desarrolla La

relacioacuten existente entre la complejidad de la interfaz y la loacutegica del negocio impacta

directamente sobre la posibilidad de mantener la mayor cantidad de coacutedigo compartido

Capiacutetulo 4 Experimentacioacuten

58

en la PCL En el desarrollo de WebUNLP la reutilizacioacuten de coacutedigo ha sido cercana al

50 Sin embargo no debe despreciarse la ventaja de utilizar el mismo lenguaje entorno

y conjunto de herramientas comunes en el desarrollo de aplicaciones para distintas

plataformas moacuteviles

La Figura 24 (b) presenta la interfaz desarrollada para Windows Phone 8

4148 Aplicacioacuten Generada por Compilacioacuten Cruzada de WebUNLP utilizando Delphi 10 Seattle

Para el profundizar el estudio de las aplicaciones generadas por compilacioacuten

cruzada ademaacutes se desarrolloacute la aplicacioacuten moacutevil de WebUNLP utilizando Delphi 10

Seattle En particular fueron de gran utilidad tanto los componentes provistos por Delphi

para acceder a servicios RESTful como el entorno visual de desarrollo de Delphi 10

Seattle

Para la recepcioacuten de notificaciones en el dispositivo de las novedades de WebUNLP

se utilizoacute el componente TPushEvent conectado al servicio Kinvey [58]

La Figura 24 (c) presenta la interfaz de la aplicacioacuten desarrollada

(a) (b) (c)

Figura 24 Aplicacioacuten desarrollada con a) Titanium b) XamarinVisual Studio y c) Delphi XE

415 Conclusiones del experimento WebUNLP Seleccionar un dominio para desarrollar un caso experimental tiene sus

particularidades La novedad de disponer una aplicacioacuten moacutevil no es motivo suficiente

que justifique tal desarrollo Es necesario satisfacer un conjunto de requerimientos

claramente planteados

Capiacutetulo 4 Experimentacioacuten

59

WebUNLP es un entorno virtual de ensentildeanza y aprendizaje utilizado por diversos

cursos de grado y postgrado de la Universidad Nacional de La Plata Por ende la cantidad

de usuarios beneficiados por acceder desde cualquier lugar a este entorno es importante

De esta manera se optoacute por elegir dicho espacio virtual para ser replicado en una

versioacuten moacutevil que no soacutelo permita acercarlo a sus usuarios sino que ademaacutes ampliacutee sus

funciones en este caso puntualmente para la cartelera

Para el desarrollo de esta experimentacioacuten se desarrolloacute la misma aplicacioacuten para

los cinco tipos de enfoques de desarrollo moacutevil (web nativa hiacutebrida interpretada y

generada por compilacioacuten cruzada)

Se destaca la gran simpleza de generar la versioacuten web dado que se utilizan las

mismas herramientas tecnoloacutegicas que las usadas para el desarrollo de cualquier

aplicacioacuten web tradicional La principal diferencia en este sentido radica en la limitacioacuten

de espacio en la pantalla del dispositivo No obstante el mayor contraste estaacute dado en que

no es posible acceder a todas las capacidades de hardware del dispositivo lo que impidioacute

implementar uno de los requerimientos probablemente el maacutes interesante la notificacioacuten

de novedades de la cartelera de WebUNLP al usuario

Por otra parte las versiones nativas han cumplido todos los requerimientos Aunque

la mayor desventaja consiste en la no portabilidad lo que implicoacute un desarrollo especiacutefico

para la plataforma que se desee cubrir En este trabajo se han presentado los desarrollos

para Android e iOS sistemas operativos maacutes usados en Argentina con un costo de

desarrollo y mantenimiento inherente mayor

Para el caso del enfoque hiacutebrido tanto la versioacuten de WebUNLP desarrollada con

PhoneGap y Jquery Mobile como la versioacuten desarrollada con Sencha Touch han logrado

conjugar la simpleza del desarrollo web con el uso de todas las capacidades del

dispositivo Este tipo de enfoque pretende suplir las desventajas de los dos enfoques

previos hecho que lo posiciona como una eleccioacuten realmente interesante siempre

condicionada por los requerimientos especiacuteficos a cumplir

Por el lado del modo de desarrollo interpretado la versioacuten de WebUNLP

desarrollada con Titanium logroacute resolver todos los requerimientos previamente

planteados Al igual que en el enfoque hiacutebrido es un punto a destacar que el desarrollo

de la aplicacioacuten con Titanium es relativamente simple y es posible reutilizar todo el

Capiacutetulo 4 Experimentacioacuten

60

coacutedigo entre plataformas Lo que lo hace la eleccioacuten prima facie es el hecho de obtener

interfaces totalmente nativas algo que no se lograba mediante el enfoque hiacutebrido

Por uacuteltimo las versiones de WebUNLP generadas con el enfoque de compilacioacuten

cruzada con Xamarin y Delphi lograron cumplir los requerimientos planteados Se

destaca el hecho de que se genera interfaces totalmente nativas pero considero que el

costo es muy alto se debe disentildear las interfaces para cada plataforma de manera

independiente lo que hace que no se pueda reutilizar todo el coacutedigo fuente de la

aplicacioacuten

42 Enfoques de desarrollo Anaacutelisis comparativo de rendimiento 421 Descripcioacuten del Problema

Hace apenas unas deacutecadas atraacutes el uso de los sistemas de software estaba

restringido a un grupo reducido de usuarios especializados Aquella eacutepoca contrasta

fuertemente con la actualidad en la que los smartphones pequentildeas computadoras moacuteviles

de propoacutesito general se han vuelto cotidianos y omnipresentes Estos dispositivos pueden

utilizarse para llevar a cabo tareas complejas y criacuteticas requiriendo la mejora continua de

las capacidades de coacutemputo la disponibilidad el rendimiento eficiente entre otras

necesidades La evolucioacuten vertiginosa de esta tecnologiacutea ejerce presioacuten en la adaptacioacuten

de la Ingenieriacutea de Software

Respecto del desarrollo para dispositivos moacuteviles se debe considerar una serie de

caracteriacutesticas propias de esta actividad que no estaban presentes en el desarrollo

tradicional de software [59] Es necesario tener en cuenta sobre queacute tipo de dispositivos

se debe ejecutar la aplicacioacuten a construir La diversidad de plataformas lenguajes de

programacioacuten herramientas de desarrollo estaacutendares protocolos y tecnologiacuteas de red

algunas limitaciones de ciertos dispositivos y las exigencias de tiempo del mercado entre

otros constituyen algunos de los problemas a tratar

En la mayoriacutea de los casos el eacutexito de un producto de software para dispositivos

moacuteviles estaraacute condicionado por el nivel de popularidad que logre alcanzar Para

maximizar su presencia en el mercado es necesario que la aplicacioacuten pueda ejecutarse

sobre la mayor cantidad de plataformas moacuteviles existentes especialmente sobre las dos

maacutes populares Android e iOS [60] Para lograr este objetivo existen dos alternativas

Capiacutetulo 4 Experimentacioacuten

61

i) Desarrollar aplicaciones especiacuteficas para cada plataforma impulsando en

paralelo varios proyectos de desarrollo con las herramientas y lenguajes propios de cada

una de ellas Estas aplicaciones analizadas previamente en este trabajo se denominan

aplicaciones nativas

ii) Generar aplicaciones que puedan ejecutarse en forma directa sobre maacutes de una

plataforma de sistema operativo a partir de un uacutenico proyecto de desarrollo Estas

aplicaciones como ya se ha presentado en este trabajo se denominan aplicaciones

multiplataforma

En los uacuteltimos antildeos se ha incrementado el intereacutes de la comunidad de Ingenieriacutea de

Software por el estudio del desarrollo de aplicaciones multiplataforma para dispositivos

moacuteviles

En [5] se presenta un anaacutelisis comparativo de enfoques de desarrollo de aplicaciones

multiplataforma para dispositivos moacuteviles proponiendo la siguiente taxonomiacutea

aplicaciones web moacuteviles aplicaciones hiacutebridas aplicaciones interpretadas y

aplicaciones generadas por compilacioacuten cruzada

En [7] y [8] se analizan aspectos generales de frameworks de desarrollo

multiplataforma para dispositivos moacuteviles

En [61] se comparan aspectos no funcionales para los diferentes enfoques de

desarrollo de aplicaciones multiplataforma para dispositivos moacuteviles

En [9] se analizaron ventajas y desventajas de los enfoques de desarrollo

multiplataforma mencionados desde el punto de vista del Ingeniero de Software

La eleccioacuten del modo de desarrollo de aplicaciones para dispositivos moacuteviles

depende de varios factores Uno de ellos en muchos casos esencial es el tiempo de

ejecucioacuten El intereacutes por optimizar el tiempo de ejecucioacuten de una aplicacioacuten de software

es intriacutenseco a la disciplina informaacutetica Esto se evidencia entre otras cosas por la

evolucioacuten del poder de coacutemputo de los procesadores Ademaacutes el rendimiento eficiente

es uno de los atributos que las aplicaciones de software deben satisfacer seguacuten diversos

estaacutendares de calidad entre otros ISOIEC 9126 e ISOIEC 25010 [62]

En lo que respecta al desarrollo de aplicaciones para dispositivos moacuteviles es

oportuno considerar el tiempo de ejecucioacuten de las aplicaciones por diversos motivos

El tiempo de ejecucioacuten de una aplicacioacuten estaacute fuertemente ligado al consumo de

Capiacutetulo 4 Experimentacioacuten

62

energiacutea [63] el cual estaacute limitado por la capacidad de la bateriacutea de los dispositivos

Asimismo el rendimiento de las aplicaciones se ve reflejado principalmente

mediante las calificaciones de los usuarios en las tiendas de aplicaciones en liacutenea

Aplicaciones con bajo rendimiento pueden implicar usuarios disconformes produciendo

publicidad negativa [60] Andre Charland y Brian Leroux identifican al tiempo de

ejecucioacuten como uno de los problemas principales a resolver en el desarrollo de

aplicaciones multiplataforma y afirman que a los usuarios finales les preocupa la calidad

del software y la experiencia de uso [64]

Corral Sillitti y Succi realizaron un anaacutelisis de rendimiento comparativo entre

aplicaciones nativas y aplicaciones hiacutebridas utilizando el framework Phonegap para una

versioacuten del sistema operativo Android [65]

Es importante destacar que no se han encontrado estudios que evaluacuteen y comparen

el rendimiento entre los diversos modos de desarrollo multiplataforma de acuerdo a la

taxonomiacutea propuesta en [5] aplicaciones web moacuteviles aplicaciones hiacutebridas

aplicaciones interpretadas y aplicaciones generadas por compilacioacuten cruzada Esta

taxonomiacutea es la que se utiliza de referencia en este trabajo

El presente apartado realiza un anaacutelisis comparativo de rendimiento de aplicaciones

para dispositivos moacuteviles generadas por el enfoque de desarrollo nativo y los distintos

enfoques de desarrollo multiplataforma seguacuten [5]

En la seccioacuten siguiente se describe el experimento utilizado para evaluar tiempos

de ejecucioacuten en aplicaciones nativas y en los diversos modos de desarrollo de aplicaciones

moacuteviles multiplataforma y en las secciones posteriores se muestran y analizan los

resultados obtenidos se presentan las conclusiones y el trabajo futuro

422 Desarrollo

4221 Disentildeo de las pruebas

Todas las pruebas cuyos resultados se presentan en este trabajo fueron realizadas

sobre dispositivos moacuteviles con sistemas operativos Android e iOS dado que en la

actualidad abarcan gran parte del mercado mundial de acuerdo a lo indicado en [60]

Para llevar a cabo la experimentacioacuten se seleccionaron los frameworks de desarrollo

multiplataforma seguacuten las alternativas presentadas en [10] Se disentildearon pruebas para

evaluar el rendimiento de Apache Cordova [28] Appcelerator Titanium [35] y Xamarin

Capiacutetulo 4 Experimentacioacuten

63

[41] que se corresponden con los modos de desarrollo hiacutebrido interpretado y compilacioacuten

cruzada respectivamente Tambieacuten se experimentoacute con otros dos frameworks de

desarrollo multiplataforma que recientemente han ganado popularidad NativeScript

(desarrollo interpretado) y Corona (compilacioacuten cruzada) Finalmente se incluyeron al

conjunto de pruebas las aplicaciones web y el enfoque nativo de desarrollo para Android

e iOS De este modo se logroacute una muestra razonablemente representativa de las diversas

opciones existentes en la actualidad

Para la realizacioacuten de las pruebas se utilizaron seis dispositivos moacuteviles distintos

(ver Tabla 2) tres de ellos con sistema operativo Android identificados como DA1 DA2 y

DA3 (dos smartphone y una tablet) y tres con sistema operativo iOS identificados como

DI1 DI2 y DI3 (dos smartphone y una tablet)

ID Sistema Operativo Caracteriacutesticas

DA1 Android 44

Tipo Smartphone Marca Motorola

Modelo Moto-G2 Procesador Quad-core 12 GHz Cortex-A7

RAM 1GB Snapdragon 400

DA2 Android 502

Tipo Smartphone Marca Samsung

Modelo S6 Procesador Octa-core (4x21 GHz Cortex-A57 amp 4x15

GHz Cortex-A53) RAM 3GB Exynos 7420 Octa

DA3 Android 422

Tipo Tablet Marca Samsung Modelo Tab 2

Procesador Dual-core 10 GHz RAM 1GB TI OMAP 4430

DI1 iOS 92

Tipo Smartphone Marca Apple Modelo 5S

Procesador Dual-core 13 GHz Cyclone (ARM v8-based)

RAM 1GB Apple A7

DI2 iOS 91

Tipo Smartphone Marca Apple

Modelo 6 plus Procesador Dual-core 14 GHz Typhoon (ARM v8-

based) RAM 1GB Apple A8

DI3 iOS 91 Tipo Tablet

Marca Apple Modelo Ipad Air

Capiacutetulo 4 Experimentacioacuten

64

Procesador Dual-core 13 GHz Cyclone (ARM v8-based)

RAM 1GB Apple A7 Tabla 2 Dispositivos moacuteviles utilizados en el experimento

Se definieron siete escenarios de anaacutelisis distintos uno por cada estrategia de

desarrollo utilizada

1 Nativo para Android y nativo para iOS 2 Aplicaciones web (multiplataforma) 3 Apache Cordova (multiplataforma hibrido) 4 Appcelerator Titanium (multiplataforma interpretado) 5 NativeScript (multiplataforma interpretado) 6 Xamarin (multiplataforma compilacioacuten cruzada) 7 Corona (multiplataforma compilacioacuten cruzada)

En los seis dispositivos se llevaron a cabo pruebas para cada uno de los siete

escenarios mencionados definiendo asiacute un total de 42 casos de prueba

Con el fin de evaluar la velocidad de procesamiento se planteoacute un caacutelculo simple

que incluyoacute varias iteraciones funciones matemaacuteticas y aritmeacutetica de punto flotante que

se resume en la siguiente serie

119904119890119903119894119890 =sum sum (log2(119896) +3119896

2119895+ radic119896

100000

119896=1

+ 119896119895minus1)

5

119895=1

A modo de ejemplo en la Figura 25 se muestra el coacutedigo multiplataforma

desarrollado en Apache Cordova para el caacutelculo de la serie definida

El experimento planteado permite medir con precisioacuten la variable analizada en este

caso el tiempo de ejecucioacuten requerido para realizar un caacutelculo matemaacutetico intensivo

Este tipo de caacutelculo matemaacutetico es frecuente en diversas aplicaciones que se

ejecutan en dispositivos moacuteviles por ejemplo juegos aplicaciones con realidad

aumentada aplicaciones para tratamiento de imaacutegenes entre otras en las cuales no

siempre es posible utilizar el poder de la Unidad de Procesamiento Grafico (GPU) para

el caacutelculo

El coacutedigo fuente de los experimentos llevados a cabo se encuentra disponible en

[66]

En las siguientes secciones se describe la experimentacioacuten y se analizan los

resultados obtenidos

Capiacutetulo 4 Experimentacioacuten

65

4222 Recoleccioacuten de datos

Para cada uno de los 42 casos de prueba definidos se realizaron 30 ejecuciones

independientes del experimento disentildeado obteniendo en cada caso una muestra T = T1

T2 hellip T30 con Ti = tiempo requerido para el caacutelculo de la serie en la i-eacutesima ejecucioacuten

del experimento planteado El tiempo Ti se expresa en milisegundos

Para caracterizar cada una de las muestras obtenidas se han calculado los

estadiacutesticos y S que se corresponden con la media (o promedio muestral) y la

desviacioacuten estaacutendar muestral (ver Tabla 3)

var startTime = new Date()getTime()

var serie = 0

for ( var j=1 j lt= 5 j++ )

for ( var k=1 k lt= 100000 k++ )

series = series + (Mathlog(k)MathLN2) + (3k2j) +

Mathsqrt(k) + Mathpow(k j-1)

var finalTime = new Date()getTime()

var duration = finalTime - startTime

documentgetElementById(result)innerHTML = duration + -gt + series

Figura 25 Caacutelculo de serie coacutedigo multiplataforma desarrollado en Apache Cordova

Capiacutetulo 4 Experimentacioacuten

66

Dada la muestra T=T1 T2 hellip Tn

Media o promedio muestral = (

1

119899)sum119879119894

119899

119894=1

Desviacioacuten estaacutendar muestral 119878 = radic

1

119899 minus 1sum(119879119894 minus )2119899

119894=1

Tabla 3 Estadiacutesticos utilizados en el anaacutelisis de los datos

423 Resultados Obtenidos En la Tabla 4 se presenta una siacutentesis de los resultados obtenidos conformada por

los valores y S calculados para cada caso de prueba planteado Estos valores permiten

comparar el rendimiento de las aplicaciones generadas a partir de los distintos enfoques

de desarrollo evaluadas sobre cada uno de los seis dispositivos utilizados

Los valores presentados en la Tabla 4 y graficados con diagramas de barras en la

Figura 26 sugieren un anaacutelisis por separado de los casos con sistema operativo Android

y los casos con sistema operativo iOS Claramente las siluetas delineadas en los

diagramas de barras de la Figura 26 se repiten de forma similar en los escenarios con el

mismo sistema operativo pero se diferencian notablemente entre distintos sistemas

operativos

Nativo WebApp Apache Cordova Titanium NativeScript Xamarin Corona

DA1 53293 18627 23033 21167 18730 39517 140173

S 1614 632 1422 2495 939 895 1260

DA2 21180 9067 8577 9563 8967 21100 60053

S 1997 1248 883 764 916 669 595

DA3 76380 17273 19060 19270 18350 37933 134430

S 2898 1551 936 1680 304 831 2339

DI1 413 5710 32373 29977 25203 12543 3963

S 078 1655 1662 401 728 1103 085

DI2 413 4190 26397 24113 22343 10303 9863

S 073 538 1544 495 861 491 613

DI3 253 4167 29223 27267 22597 11053 10967

S 057 444 1082 550 277 390 275

Tabla 4 Siacutentesis de resultados obtenidos

Capiacutetulo 4 Experimentacioacuten

67

Figura 26 Diagrama de barras con las muestras recolectadas (las barras muestran el tiempo promedio expresado en milisegundos)

Capiacutetulo 4 Experimentacioacuten

68

424 Anaacutelisis de Resultados Debido a las diferencias de hardware de los dispositivos utilizados no es prudente

comparar el rendimiento de las aplicaciones nativas en Android con respecto a las de

iOS No obstante de los resultados obtenidos es posible inferir que el enfoque nativo en

iOS resulta mucho maacutes eficiente que el enfoque nativo en Android Existen diversos

factores que presumen justificar este hecho entre ellos la diferencia inherente de ejecutar

coacutedigo Objective C en iOS comparado con ejecutar coacutedigo Java en Android el cual

necesita del Android Runtime (ART) para su funcionamiento ralentizaacutendolo

Respecto de las aplicaciones web multiplataforma los resultados de rendimiento

resaltaron positivamente en relacioacuten al resto tanto en Android como en iOS Asiacute el

enfoque de desarrollo multiplataforma web seriacutea una opcioacuten conveniente para alcanzar

un buen rendimiento en todos los dispositivos moacuteviles independientemente de su sistema

operativo Sin embargo esta eleccioacuten podriacutea verse afectada por las limitaciones de estas

aplicaciones para acceder en forma completa a las capacidades especiacuteficas del dispositivo

Respecto de los enfoques hiacutebrido e interpretado -analizados a traveacutes de las

tecnologiacuteas Coacuterdova Titanium y NativeScript- es importante destacar que si bien estos

enfoques trabajan de modo distinto entre siacute tienen algo en comuacuten la ejecucioacuten de coacutedigo

JavaScript En este sentido el motor de JavaScript -encargado de convertir el coacutedigo

JavaScript en coacutedigo optimizado para que luego lo interprete un WebView- cumple un

rol determinante Las pruebas de estos enfoques en Android -que utiliza el motor de

JavaScript V8- tuvieron un comportamiento similar al enfoque web y comportamiento

superior que el enfoque nativo y el enfoque de compilacioacuten cruzada Por el contrario en

los dispositivos moacuteviles con iOS -que utiliza el motor JavaScriptCore- los resultados de

estas pruebas fueron peores que en los enfoques nativos web y de compilacioacuten cruzada

En los dispositivos moacuteviles con iOS los casos de compilacioacuten cruzada -analizados

a traveacutes de las tecnologiacuteas Xamarin y Corona- obtuvieron mejores resultados que los

casos hiacutebridos e interpretados pero mostraron peor rendimiento que el enfoque nativo y

que el enfoque web En cambio en los dispositivos moacuteviles con Android los resultados

de las pruebas con las aplicaciones construidas mediante el enfoque de compilacioacuten

cruzada fueron los peores La necesidad de ejecucioacuten de coacutedigo Java a traveacutes del Android

Runtime entre otros factores justifican este resultado

Capiacutetulo 4 Experimentacioacuten

69

425 Conclusiones Se ha presentado un estudio comparativo sobre el tiempo de procesamiento de

aplicaciones de software para dispositivos moacuteviles generadas con distintos enfoques de

desarrollo

Los escenarios de prueba disentildeados incluyeron los dos sistemas operativos para

dispositivos moacuteviles con mayor presencia en el mercado Android e iOS ejecutaacutendose

cada uno de ellos sobre dos smartphones (considerados de gama media y gama alta al

momento en que este trabajo fue escrito) y una Tablet

Sobre estos seis dispositivos se realizoacute un estudio de rendimiento para las

aplicaciones construidas seguacuten los enfoques de desarrollo nativos y multiplataforma

mediante un conjunto de aplicaciones que fueron desarrolladas para tal fin

1 Aplicacioacuten nativa para Android 2 Aplicacioacuten nativa para iOS 3 Aplicacioacuten web (multiplataforma) 4 Aplicacioacuten Apache Cordova (multiplataforma hibrido) 5 Aplicacioacuten Appcelerator Titanium 6 (multiplataforma interpretado) 7 Aplicacioacuten NativeScript (multiplataforma interpretada) 8 Aplicacioacuten Xamarin (multiplataforma compilacioacuten cruzada) 9 Aplicacioacuten Corona (multiplataforma compilacioacuten cruzada)

En todos los dispositivos con sistema operativo Android el peor rendimiento fue

evidenciado por Corona seguido por el enfoque nativo y Xamarin Esta situacioacuten es

totalmente opuesta a los resultados obtenidos sobre el sistema operativo iOS en doacutende las

tecnologiacuteas de desarrollo mencionadas se mostraron siempre entre las cuatro mejores En

particular es destacable la supremaciacutea del enfoque nativo frente a todos los demaacutes para el

caso de los dispositivos con iOS

Respecto al mejor rendimiento en los dispositivos Android no es posible identificar

claramente cuaacutel es el enfoque maacutes conveniente Tanto las aplicaciones web como

Coacuterdova NativeScript y Titanium alcanzaron buenos resultados en relacioacuten al resto

Nuevamente esta situacioacuten se contrapone con los datos obtenidos sobre los dispositivos

iOS en los que Coacuterdova Titanium y NativeScript obtuvieron las peores mediciones entre

las tecnologiacuteas utilizadas No ocurrioacute lo mismo con las aplicaciones web en iOS que

tambieacuten produjeron buenos resultados en relacioacuten al resto

Capiacutetulo 4 Experimentacioacuten

70

En liacuteneas generales independientemente del sistema operativo las aplicaciones

web han mostrado un buen rendimiento si se consideran todos los casos analizados

Actualmente al desarrollar un sistema de software existe la posibilidad de generar

su versioacuten para dispositivos moacuteviles Esta tarea muchas veces no es simple y una de las

decisiones maacutes importantes a tomar es elegir el enfoque de desarrollo

A partir de este trabajo se dispone de un indicador de rendimiento que puede ser

uacutetil para el Ingeniero de Software que debe seleccionar un enfoque de desarrollo de

software para dispositivos moacuteviles

Por otra parte no se han encontrado trabajos de otros autores donde se haya

analizado el rendimiento en todos los enfoques de desarrollo de software para dispositivos

moacuteviles Este tema tal como se indicoacute en la introduccioacuten es importante para la

comunidad de Ingenieriacutea de Software y los trabajos analizados hasta el momento se han

concentrado solo en los enfoques nativos yo hiacutebridos

43 Anaacutelisis comparativo de enfoques de Desarrollo de Aplicaciones Moacuteviles

Como se estudioacute en las secciones anteriores existen diferentes enfoques de

desarrollo de aplicaciones moacuteviles

Una opcioacuten es desarrollar aplicaciones moacuteviles nativas las cuales hacen uso de

todas las capacidades del dispositivo moacutevil y permiten una alta experiencia de usuario

debido a que las interfaces de usuario se componen por componentes nativos resultando

semejantes al resto de las interfaces del sistema operativo No obstante el desarrollo no

puede ser reutilizado para dar soporte a otras familias de sistemas operativos implicando

mayores costos de desarrollo y mantenimiento

En contraposicioacuten al desarrollo nativo surgioacute el desarrollo multiplataforma dando

la posibilidad de desarrollar un uacutenico producto y ejecutarlo en diferentes plataformas En

este sentido se estudiaron diferentes enfoques desarrollo web moacutevil hiacutebrido

interpretado y generado por compilacioacuten cruzada Cada uno de estos enfoques cuenta con

ciertas caracteriacutesticas que naturalmente los hacen diferenciar con ventajas y

desventajas

Se identificaron diversos factores que pueden ser utilizados para analizar las

Capiacutetulo 4 Experimentacioacuten

71

aplicaciones que se generan mediante los enfoques de desarrollo nativo y

multiplataforma los cuales se detallan a continuacioacuten

Experiencia de usuario conjunto de factores y elementos que hacen referencia

al nivel de satisfaccioacuten total de los usuarios cuando utilizan un producto o sistema

El resultado es la generacioacuten de una percepcioacuten positiva o negativa de dicho

servicio producto o dispositivo

Plataformas alcanzadas se ha visto en capiacutetulos anteriores que existen distintas

familias de sistemas operativos Seguacuten el modo de desarrollo elegido se puede

desarrollar aplicaciones para una plataforma especiacutefica o por varias

Costo del desarrollo el desarrollo puede ser maacutes o menos costoso seguacuten si

requiere codificar las soluciones de forma especiacutefica para cada sistema operativo

o si es posible la reutilizacioacuten de coacutedigo

Costo del mantenimiento la correccioacuten de errores o agregados de nuevas

funcionalidades puede requerir codificar de forma especiacutefica para cada sistema

operativo Ademaacutes se debe tener en cuenta si deben convivir diferentes versiones

del mismo producto

Entorno de desarrollo integrado Software que asiste al programador en la

construccioacuten de aplicaciones

Interfaces de usuario factor que analiza los tipos de componentes utilizados para

construir las interfaces de usuario Como se mencionoacute al analizar los distintos

enfoques de desarrollo la eleccioacuten de la herramienta a utilizar incide en si las

interfaces estaraacuten compuestas mediante componentes nativos o componentes web

los cuales pueden ser decorados para simular componentes nativos

Acceso total al dispositivo posibilidad de acceder mediante las herramientas de

desarrollo a todas las capacidades del dispositivo como la caacutemara sensores entre

otros

Modo de instalacioacuten se refiere a si la aplicacioacuten puede ser instalada desde las

tiendas de aplicaciones o es accesible sin instalacioacuten desde un navegador de

Internet

Rendimiento factor que analiza la ejecucioacuten de tareas y los tiempos asociados

Capiacutetulo 4 Experimentacioacuten

72

en su resolucioacuten

Uso offline capacidad que tiene la aplicacioacuten de funcionar sin estar conectada a

internet

Distribucioacuten a traveacutes de las tiendas posibilidad de descargar la aplicacioacuten desde

las tiendas de aplicaciones

Categoriacuteas de aplicaciones a desarrollar tipo de aplicacioacuten que se desea

desarrollar

Porcentaje de coacutedigo a reutilizar Cantidad de liacuteneas de coacutedigo con respecto al

total que pueden ser reutilizadas para en la generacioacuten de aplicaciones

multiplataforma

Con el objetivo de estudiar coacutemo se comportan e inciden estos factores en los

distintos enfoques de desarrollo se realizoacute un estudio comparativo de los diferentes

criterios a tener en cuenta Dicho estudio se sintetiza en la Tabla 5

Capiacutetulo 4 Experimentacioacuten

73

Factor a analizar Desarrollo Nativo Desarrollo Web Desarrollo Hiacutebrido Desarrollo

Interpretado

Desarrollo Generado

por Compilacioacuten

Cruzada

Experiencia de Usuario

Alta Muy Baja Baja Alta Alta

Plataformas alcanzadas

Se desarrolla

exclusivamente

para una

plataforma destino

Cualquier

plataforma Se

necesita solo un

navegador y acceso a

internet

Es posible compilar

para Android iOS

Windows Phone

Es posible compilar

para Android iOS

Windows Phone

Es posible compilar

para Android iOS

Windows Phone

Costo del desarrollo

Muy Alto Muy Bajo Bajo Medio Medio a Alto

Costo del mantenimiento

Muy Alto Muy Bajo Medio Alto Alto a Muy Alto

Entorno de desarrollo integrado

IDE uacutenico por SO Muacuteltiples opciones Plugins para IDE

geneacutericos

Algunos frameworks

disponen de IDE

especiacutefico

IDE uacutenico por

framework

Interfaces de usuario

Nativas Web Web Nativas Nativas

Acceso total al dispositivo

Si No Si Si Si

Modo de instalacioacuten

Descargar desde la Sin instalaciones Descargar desde la Descargar desde la Descargar desde la

Capiacutetulo 4 Experimentacioacuten

74

Factor a analizar Desarrollo Nativo Desarrollo Web Desarrollo Hiacutebrido Desarrollo

Interpretado

Desarrollo Generado

por Compilacioacuten

Cruzada

tienda de

aplicaciones e

instalar

tienda de aplicaciones

e instalar

tienda de aplicaciones e

instalar

tienda de aplicaciones e

instalar

Rendimiento Muy Alto Muy Bajo Bajo a Medio Alto Medio a Alto

Uso offline Si No Si Si Si

Distribucioacuten a traveacutes de las tiendas

Si No Si Si Si

Categoriacutea de aplicaciones a desarrollar

Aplicaciones que

demandan muchos

recursos o que

requiere una alta

experiencia de

usuario

Sitios web existentes Sitios web

encapsulados como

aplicacioacuten para ser

distribuidas a traveacutes

de tiendas

Aplicaciones simples a

complejas

Aplicaciones simples a

complejas

Porcentaje de Coacutedigo a reutilizar

0 100 Cerca del 100 Cerca del 90 Entre el 60 y 85

Tabla 5 Anaacutelisis comparativo de enfoques de desarrollo de aplicaciones moacuteviles

Capiacutetulo 5 Conclusiones

75

Capiacutetulo 5 Conclusiones

Inicialmente los dispositivos moacuteviles fueron pensados y disentildeados con un propoacutesito

particular A traveacutes de los antildeos el crecimiento tecnoloacutegico ha permitido incorporar

funcionalidades adicionales lo que ha posibilitado expandir el marco de uso

Actualmente el poder de coacutemputo subyacente en una gran variedad de dispositivos

moacuteviles ha generado nuevas posibilidades lo que constituye un reto para los ingenieros

de software

Asimismo y tal como se mencionoacute en capiacutetulos anteriores existen diversos

sistemas operativos para dispositivos moacuteviles siendo los maacutes populares Android iOS y

Windows Phone Debido a que el eacutexito de un producto de software estaacute vinculado en

gran parte a su uso masivo surge la necesidad de desarrollar aplicaciones moacuteviles

teniendo en cuenta cada una de estas plataformas

El desarrollo de software para dispositivos moacuteviles tiene caracteriacutesticas propias que

difieren del desarrollo tradicional Esta actividad reciente impensada deacutecadas atraacutes

marca un antes y un despueacutes en la evolucioacuten de la Ingenieriacutea de Software Es de esperar

que dicha evolucioacuten continuacutee y por consiguiente que los enfoques de desarrollo para

dispositivos moacuteviles cambien o sean reemplazados por otros Es claro que por el

momento existen cinco posibilidades de desarrollo de una misma aplicacioacuten moacutevil

Aplicaciones nativas

Aplicaciones web

Aplicaciones hiacutebridas

Aplicaciones interpretadas

Aplicaciones generadas por compilacioacuten cruzada

Para un completo anaacutelisis de cada enfoque de desarrollo es que se disentildearon una

serie de casos de estudio El primero de ellos consistioacute en desarrollar una aplicacioacuten moacutevil

para cada enfoque de desarrollo presentado Teniendo este primer objetivo definido se

decidioacute extender el entorno virtual de ensentildeanza y aprendizaje WebUNLP a traveacutes de

una aplicacioacuten moacutevil enfocada en la cartelera de novedades de los cursos La aplicacioacuten

Capiacutetulo 5 Conclusiones

76

moacutevil debiacutea permitir el ingreso de alumnos y docentes con las mismas credenciales que

las utilizadas en la versioacuten web y debiacutea mostrar informacioacuten sincronizada con la web

sobre las novedades publicadas en las carteleras de los cursos Asimismo cuando los

docentes publiquen novedades aquellos alumnos pertenecientes al curso deben recibir

una notificacioacuten en su dispositivo moacutevil

Luego de desarrollar las aplicaciones moacuteviles para cada enfoque de desarrollo se

pueden elaborar algunas conclusiones

Se destaca la simpleza a la hora de generar la versioacuten web moacutevil pero se observan

limitaciones al no poder acceder a todas las capacidades de hardware del dispositivo

El desarrollo de las aplicaciones nativas resultoacute oacuteptimo si se lo compara con los

requerimientos oportunamente planteados con la desventaja de que las aplicaciones no

son portables implicando desarrollos especiacuteficos para cada plataforma que se desee

cubrir Por otro lado el desarrollo de las aplicaciones hibridas ndashutilizando PhoneGap y

Sencha- lograron conjugar la simpleza del desarrollo web con el uso de todas las

capacidades del dispositivo posicionaacutendolo como una eleccioacuten realmente interesante De

igual manera la aplicacioacuten interpretada desarrollada mediante Titanium logroacute resolver

todos los requerimientos previamente planteados se destaca que el desarrollo fue

relativamente simple y es posible reutilizar todo el coacutedigo entre plataformas El hecho de

obtener interfaces totalmente nativas la posiciona como la alternativa ideal Por uacuteltimo

las aplicaciones generadas con el enfoque de compilacioacuten cruzada (Delphi y Xamarin)

lograron cumplir los requerimientos planteados la obtencioacuten de interfaces totalmente

nativas es algo a destacar pero conlleva un alto costo ya que se debe disentildear las interfaces

para cada plataforma de manera independiente

El segundo experimento del presente trabajo consistioacute en analizar el rendimiento

de las aplicaciones generadas mediante cada enfoque de desarrollo En total se

desarrollaron mediante distintas tecnologiacuteas nueve aplicaciones Las pruebas se

realizaron en los dos sistemas operativos de mayor relevancia Android e iOS a traveacutes de

seis dispositivos (cuatro smartphones y dos tablets)

En todos los dispositivos con sistema operativo Android el peor rendimiento se

encontroacute en la aplicacioacuten generada por Corona seguido por el enfoque nativo y Xamarin

En cambio estas tecnologiacuteas se mostraron siempre entre las cuatro mejores sobre el

sistema operativo iOS

Capiacutetulo 5 Conclusiones

77

Respecto al mejor rendimiento en los dispositivos Android no es posible identificar

claramente cuaacutel es el enfoque maacutes conveniente Tanto las aplicaciones web como

Coacuterdova NativeScript y Titanium obtuvieron buenos resultados de rendimiento en

relacioacuten al resto Nuevamente esta situacioacuten se contrapone con los datos obtenidos sobre

los dispositivos iOS en los que Coacuterdova Titanium y NativeScript obtuvieron las peores

mediciones entre las tecnologiacuteas utilizadas No ocurrioacute lo mismo con las aplicaciones web

en iOS que tambieacuten produjeron buenos resultados en relacioacuten al resto

En liacuteneas generales independientemente del sistema operativo las aplicaciones

web han mostrado un buen rendimiento si se consideran todos los casos analizados

Por uacuteltimo se elaboroacute un anaacutelisis comparativo de las caracteriacutesticas inherentes a

cada enfoque de desarrollo Se identificaron ciertos factores de intereacutes que la comunidad

de ingenieriacutea de software considera al elegir queacute tecnologiacutea utilizar y se analizoacute su

impacto en cada enfoque de desarrollo

Capiacutetulo 6 Trabajo Futuro

78

Capiacutetulo 6 Trabajo Futuro

Si bien se estudiaron en el presente trabajo diversas tecnologiacuteas para el desarrollo

de aplicaciones moacuteviles se planea profundizar el estudio analizando otras herramientas

multiplataforma disponibles en el mercado como Ionic [32] NativeScript [38] Applause

[40] React Native [67] entre otras

Ademaacutes se plantea como liacutenea de trabajo futuro ampliar el anaacutelisis comparativo de

rendimiento incluyendo otros aspectos del desarrollo para dispositivos moacuteviles como

por ejemplo el acceso a disco el consumo de bateriacutea y el tiempo de renderizacioacuten de

imaacutegenes

Por uacuteltimo es deseable estudiar la experiencia de usuario en las aplicaciones

generadas por cada enfoque de desarrollo de aplicaciones para dispositivos moacuteviles

Capiacutetulo 6 Trabajo Futuro

79

Bibliografiacutea

80

Bibliografiacutea

[1] A Talukder H Ahmed and R Yavagal Mobile Computing Technology Applications and Service Creation Tata McGraw-Hill Ed 2010

[2] Abrahamsson P et al Mobile-D An Agile Approach for Mobile Application Development in In Companion To the 19th Annual ACM SIGPLAN Conference on Object-Oriented Programming Systems Languages and Applications (OOPSLA 04 ) Vancouver Canada 2004 pp 174-175

[3] P Abrahamsson Mobile software development - the business opportunity of today in Proceedings of the International Conference on Software Development Reykjavik 2005

[4] I S Hayes Just Enough Wireless Computing Prentice Hall Professional Technical 2002

[5] Stelios Xinogalos Spyros Xanthopoulos A Comparative Analysis of Cross-platform Development Approaches for Mobile Applications in Proceedings of the 6th Balkan Conference in Informatics Thessaloniki Greece 2013 pp 213-220

[6] Tolety SB Raj R A study on approaches to build cross-platform mobile applications and criteria to select appropriate approach in India Conference (INDICON) 2012 Annual IEEE India 2012

[7] Yonathan Aklilu Redda Cross platform Mobile Applications Development in Master in Information Systems Norwegian University of Science and Technology Norway 2012

[8] Datta SK Bonnet C Nikaein N Dalmasso I Survey comparison and evaluation of cross platform mobile application development tools in Wireless Communications and Mobile Computing Conference (IWCMC) Cagliari Sardinia Italia 2013

[9] Lisandro Deliacutea Nicolaacutes Galdaacutemez Pablo Thomas and Patricia Pesado An Experimental Analysis of Application Types for Mobile Devices in Computer Science amp Technology Series - XIX Argentine Congress of Computer Science - Selected Papers Editorial de la Universidad de La Plata 2014 pp 173 -183

[10] Lisandro Deliacutea Nicolaacutes Galdamez Pablo Thomas Leonardo Corbalaacuten and Patricia Pesado Multi-Platform Mobile Application Development Analysis in IEEE Ninth International Conference on Research Challenges in Information Science - IEEE RCIS Atenas Grecia May 2015

[11] Telam [Online] httpwwwtelamcomarnotas201504102073-telefonia-movil-lineas-activashtml

Bibliografiacutea

81

[12] RTVE [Online] httpwwwrtveesnoticias20110212evolucion-del-telefono-movil-del-zapatofono-smartphones404523shtml

[13] Vodafone [Online] httpblogvodafonecouk20130829vodafone-uks-ceo-guy-laurence-4g-finally-has-a-purpose

[14] Muy Canal [Online] httpwwwmuycanalcom20140131futuro-del-telefono-movil

[15] Statcounter [Online] httpgsstatcountercom

[16] Anthony I Wasserman Software Engineering Issues for Mobile Application Development 2010

[17] Statista [Online] httpwwwstatistacom

[18] Lisandro Deliacutea Nicolaacutes Galdamez Pablo Thomas Leonardo Corbalaacuten and Patricia Pesado Anaacutelisis Experimental de desarrollo de Aplicaciones Moacuteviles Multiplataforma in XX Congreso Argentino de Ciencias de la Computacioacuten CACIC 2014 San Justo Argentina octubre 2014

[19] Lisandro Deliacutea Nicolaacutes Galdamez Pablo Thomas and Patricia Pesado Un Anaacutelisis Experimental de Tipo de Aplicaciones para Dispositivos Moacuteviles in XIX Congreso Argentino de Ciencias de la Computacioacuten CACIC 2013 Mar del Plata Argentina 2013

[20] Abhinay Puvvala Amitava Dutta Rahul Roy and Priya Seetharaman Mobile Application Developersrsquo Platform Choice Model in 2016 49th Hawaii International Conference on System Sciences (HICSS) Koloa Hawaii 2016

[21] Android Dashboard [Online] httpsdeveloperandroidcomaboutdashboardsindexhtml

[22] Xcode [Online] httpsdeveloperapplecomxcode

[23] KW Tracy Mobile Application Development Experiences on Applersquos iOS and

Android OS Potentials IEEE vol 31 no 4 July-Aug 2012

[24] Google Recommendations for building smartphone-optimized websites [Online] httpgooglewebmastercentralblogspotcomar

[25] Bootstrap [Online] httpgetbootstrapcom

[26] Foundation [Online] httpfoundationzurbcom

[27] PhoneGap [Online] httpphonegapcom

[28] Apache Cordova [Online] httpscordovaapacheorg

Bibliografiacutea

82

[29] Adobe PhoneGap Build [Online] httpsbuildphonegapcom

[30] CocoonJS [Online] httpscocoonio

[31] Ludei [Online] httpswwwludeicom

[32] Ionic [Online] httpionicframeworkcom

[33] Sencha [Online] httpswwwsenchacomproductstouchoverview

[34] A Kosmaczewski Sencha Touch 2 Up and Running OrsquoReilly 2013

[35] Appcelerator Titanium [Online] httpwwwappceleratorcomproduct

[36] Backbone [Online] httpbackbonejsorg

[37] Underscorejs [Online] httpunderscorejsorg

[38] NativeScript [Online] httpswwwnativescriptorg

[39] TypeScript [Online] httpswwwtypescriptlangorg

[40] applause [Online] httpwwwapplausecom

[41] Xamarin [Online] wwwxamarincom

[42] Delphi [Online] httpswwwembarcaderocomproductsdelphi

[43] RubyMotion [Online] httpwwwrubymotioncom

[44] Xtext [Online] httpwwweclipseorgXtext

[45] Mono [Online] httpwwwmono-projectcom

[46] [Online] httpswebunlpeadunlpeduar

[47] I Salmre Writing Mobile Code Essential Software Engineering for Building Mobile Applications Addison Wesley Professional 2005

[48] Mapbox [Online] httpswwwmapboxcomlabstwitter-gnipbrands

[49] Ruby S Richardson L RESTful Web Services OrsquoReilly Media 2007

[50] Matthew J Hamm Wireframing Essentials Packt Publishing 2014

[51] GCM [Online] httpsdevelopersgooglecomcloud-messaging

[52] iOS Human Interface Guidelines [Online] httpsdeveloperapplecomioshuman-interface-guidelinesoverviewdesign-principles

[53] APN [Online] httpdeveloperapplecomlibrarymacdocumentationNetworkingInternetConceptual

Bibliografiacutea

83

RemoteNotificationsPGChaptersApplePushServicehtmlapple_refdocuidTP40008194-CH100-SW9

[54] Mark Norm Norman Francis Christian Heilmann Web Development Solutions Ajax APIs Libraries and Hosted Services Made Easy Apress 2007

[55] JqueryMobile [Online] httpsjquerymobilecom

[56] Pushwoosh [Online] httpsgithubcomPushwooshpushwoosh-phonegap-plugin

[57] J Clark Creating Mobile Apps with Sencha Touch 2 Packt Publishing 2013

[58] Kinvey [Online] httpwwwkinveycom

[59] Ali Mesbah Philippe Kruchten Mona Erfani Joorabchi Real Challenges in Mobile App Development in ACM IEEE International Symposium on Empirical Software Engineering and Measurement Baltimore Maryland US 2013

[60] Andreacute Nitze Andreas Schmietendorf Florian Roumlsler Towards a Mobile Application Performance Benchmark in ICIW 2014 The Ninth International Conference on Internet and Web Applications and Services Paris France 2014

[61] Sebastian Hanschke and Tim A Majchrzak Henning Heitkoumltter Comparing Cross Platform Development approaches For Mobile Applications in 8th International Conference on Web Information Systems and Technologies (WEBIST) Porto Portugal 2012

[62] HW Kim SG Chung CS Jung Measuring Software Quality A Survey of ISOIEC 9126 IEEE Software vol 21 no 5 pp 88 ndash 92 SeptemberOctober 2004

[63] Luis Corral Anton B Georgiev Alberto Sillitti and Giancarlo Succi Can execution time describe accurately the energy consumption of mobile apps An experiment in Android GREENS 2014 Proceedings of the 3rd International Workshop on Green and Sustainable Software pp 31-37 June 2014

[64] Brian Leroux Andre Charland Mobile application development web vs native Magazine Communications of the ACM vol 54 no 5 pp 49-53 May 2011

[65] Luis Corral Alberto Sillitti and Giancarlo Succi Mobile multiplatform development An experiment for performance analysis in The 9th International Conference on Mobile Web Information Systems (MobiWIS) Ontario Canada 2012

[66] Repositorio Git III-LIDI [Online] httpsgitlabcomiii-lidiperformance-assessment-multiplatform-mobile-applicationstreemaster

[67] React Native [Online] httpsfacebookgithubioreact-native

[68] Lisandro Galdaacutemez Nicolaacutes Corbalaacuten Leonardo Thomas Pablo Pesado Patricia Deliacutea Un anaacutelisis comparativo de rendimiento en aplicaciones moacuteviles

Bibliografiacutea

84

multiplataforma in XXI Congreso Argentino de Ciencias de la Computacioacuten Juniacuten 2015

Page 2: Desarrollo de Aplicaciones Móviles Multiplataforma

2

Agradecimientos

A Pablo Thomas por la confianza depositada diacutea a diacutea

Al III-LIDI por permitirme crecer profesionalmente

A todas aquellas personas que en forma directa o indirecta aportaron a este trabajo y que contribuyen al crecimiento de la Ingenieriacutea de Software como disciplina

Y especialmente a mi familia por estar siempre a mi lado y alentarme a que continuacutee con mi formacioacuten acadeacutemica

3

Iacutendice de Contenidos Objetivo 6

Prefacio 7

Trabajos publicados 8

Organizacioacuten del trabajo 8

Capiacutetulo 1 Tecnologiacutea Moacutevil 10

11 Los inicios 10

12 Evolucioacuten de los protocolos para redes de comunicaciones 13

13 La actualidad 14

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas 17

21 Desarrollo de Aplicaciones Nativas en Android 19

211 Evolucioacuten 19

212 Proceso de Desarrollo 26

22 Desarrollo de Aplicaciones Nativas en iOS 28

221 Evolucioacuten 28

222 Proceso de desarrollo 30

23 Desarrollo de Aplicaciones Nativas en Windows Phone 32

231 Evolucioacuten 32

232 Proceso de desarrollo 33

24 Diferencias teacutecnicas entre Android iOS y Windows Phone 34

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma 37

31 Aplicaciones Web Moacuteviles 38

311 Aplicacioacuten Web dedicada y exclusiva para dispositivos moacuteviles 39

312 Aplicacioacuten Web con Disentildeo Adaptable 39

32 Aplicaciones Hiacutebridas 40

321 PhoneGap 41

322 CocoonJS 42

323 Ionic 43

324 Sencha Touch 43

33 Aplicaciones Interpretadas 43

331 Appcelerator Titanium 44

332 NativeScript 44

34 Aplicaciones Generadas por Compilacioacuten Cruzada 45

4

341 Xamarin 46

342 Embarcadero Delphi 10 Seattle 47

343 RubyMotion 48

Capiacutetulo 4 Experimentacioacuten 50

41 Aplicacioacuten Moacutevil para la plataforma de E-Learning WebUNLP 50

411 Descripcioacuten del problema 50

412 Anaacutelisis 51

413 Disentildeo 51

414 Desarrollo 53

4141 Aplicacioacuten Nativa para Android 53

4142 Aplicacioacuten Nativa para iOS 54

4143 Aplicacioacuten Web Moacutevil 54

4144 Aplicacioacuten Hiacutebrida desarrollada con PhoneGap y Jquery Mobile 55

4145 Aplicacioacuten Hiacutebrida desarrollada con Sencha Touch 56

4146 Aplicacioacuten Interpretada de WebUNLP con Appcelerator Titanium 3 56

4147 Aplicacioacuten Generada por Compilacioacuten Cruzada de WebUNLP utilizando XamarinVisual Studio 57

4148 Aplicacioacuten Generada por Compilacioacuten Cruzada de WebUNLP utilizando Delphi 10 Seattle 58

415 Conclusiones del experimento WebUNLP 58

42 Enfoques de desarrollo Anaacutelisis comparativo de rendimiento 60

421 Descripcioacuten del Problema 60

422 Desarrollo 62

4221 Disentildeo de las pruebas 62

4222 Recoleccioacuten de datos 65

423 Resultados Obtenidos 66

424 Anaacutelisis de Resultados 67

425 Conclusiones 69

43 Anaacutelisis comparativo de enfoques de Desarrollo de Aplicaciones Moacuteviles 70

Capiacutetulo 5 Conclusiones 75

Capiacutetulo 6 Trabajo Futuro 78

Bibliografiacutea 80

5

Iacutendice de Figuras

Figura 1 Mobile Telephone System A (MTA) 11 Figura 2 Martin Cooper el autor de la primer llamada moacutevil 12 Figura 3 Evolucioacuten de los protocolos para redes de comunicacioacuten moacuteviles 14 Figura 4 Comparacioacuten entre plataformas [15] 15 Figura 5- Utilizacioacuten de Sistemas Operativos Moacuteviles en el mundo 18 Figura 6- Utilizacioacuten de Sistemas Operativos Moacuteviles en Argentina 19 Figura 7 Entorno de desarrollo Android Studio 27 Figura 8 Distribucioacuten de versiones de Android - Diciembre 2016 28 Figura 9 Entorno de desarrollo Xcode 31 Figura 10 Distribucioacuten de versiones de iOS - Noviembre 2016 31 Figura 11 Entorno de desarrollo Visual Studio 34 Figura 12 Disentildeo Adaptable 40 Figura 13 Funcionamiento de Apache Cordova 42 Figura 14 Proceso de interpretacioacuten mediante NativeScript 45 Figura 15 Entorno de Desarrollo Xamarin Studio 47 Figura 16 Entorno de Desarrollo Delphi 10 Seattle 48 Figura 17 Arquitectura geneacuterica para aplicacioacuten nativa e hiacutebrida 52 Figura 18 Mockup independiente del tipo de aplicacioacuten 53 Figura 19 Aplicacioacuten nativa para Android 53 Figura 20 Aplicacioacuten nativa para iOS 54 Figura 21 Aplicacioacuten hiacutebrida desarrollada con PhoneGap 55 Figura 22 Aplicacioacuten desarrollada con Sencha Touch 56 Figura 23 Enfoque uacutenico de desarrollo Xamarin 57 Figura 24 Aplicacioacuten desarrollada con a) Titanium b) XamarinVisual Studio y c) Delphi XE 58 Figura 25 Caacutelculo de serie coacutedigo multiplataforma desarrollado en Apache Cordova 65 Figura 26 Diagrama de barras con las muestras recolectadas (las barras muestran el tiempo promedio expresado en milisegundos) 67

6

Objetivo

Existen diversos enfoques para desarrollar aplicaciones moacuteviles multiplataforma

A partir de ello el objetivo de este trabajo final consiste en elaborar un anaacutelisis

comparativo sobre los enfoques predominantes y realizar experimentos con el desarrollo

de aplicaciones moacuteviles especiacuteficas para cada elemento analizado

Los objetivos especiacuteficos de este trabajo son

a) Realizar un anaacutelisis comparativo entre los enfoques de desarrollo de aplicaciones

moacuteviles multiplataforma

b) Llevar a cabo el desarrollo de una aplicacioacuten moacutevil concreta en cada enfoque de

desarrollo multiplataforma Analizar ventajas y desventajas de los enfoques seguacuten

el experimento

c) Analizar la performance de las aplicaciones que se generan con cada enfoque de

desarrollo multiplataforma

d) Estudiar los impactos que se producen en el proceso de desarrollo de software

seguacuten el enfoque a utilizar

Prefacio

7

Prefacio

La computacioacuten moacutevil se puede definir como un entorno de coacutemputo con movilidad

fiacutesica El usuario de un entorno de computacioacuten moacutevil seraacute capaz de acceder a datos

informacioacuten u otros objetos loacutegicos desde cualquier dispositivo en cualquier red mientras

estaacute en movimiento [1]

Estos dispositivos tienen caracteriacutesticas fiacutesicas distintivas entre las cuales se

destacan su tamantildeo peso tamantildeo de pantalla su mecanismo de ingreso de datos y su

capacidad de expansioacuten Ademaacutes tienen un rol esencial los aspectos teacutecnicos incluyendo

el poder de procesamiento espacio de memoria autonomiacutea de bateriacutea sistema operativo

entre otros

El desarrollo de software para dispositivos moacuteviles plantea nuevos desafiacuteos

originados en las caracteriacutesticas uacutenicas de esta actividad La necesidad de tratar con

diversas plataformas estaacutendares protocolos y tecnologiacuteas de red las capacidades

limitadas aunque en continua evolucioacuten de los dispositivos y las exigencias de tiempo

del mercado son soacutelo algunos de los problemas a tratar [2]

Las aplicaciones moacuteviles son generadas en un entorno dinaacutemico e incierto

Generalmente son pequentildeas no criacuteticas aunque no menos importantes Estaacuten destinadas

a un gran nuacutemero de usuarios finales y son liberadas en versiones raacutepidas para poder

satisfacer las demandas del mercado [3]

Por todo lo expuesto el desarrollo de software para dispositivos moacuteviles difiere

considerablemente del tradicional [4] y acompantildea el crecimiento y evolucioacuten de la

Ingenieriacutea de Software como disciplina

Para maximizar su presencia en el mercado un producto de software debe

ejecutarse en la mayor cantidad de dispositivos posible Una solucioacuten consiste en el

desarrollo nativo de la aplicacioacuten en cada una de las plataformas existentes utilizando el

entorno de desarrollo integrado (IDE por sus siglas en ingleacutes) el lenguaje y las

herramientas propias de cada plataforma [5] Sin embargo al no ser posible la

reutilizacioacuten de coacutedigo fuente entre diferentes plataformas el esfuerzo se multiplica y se

elevan los costos de desarrollo actualizacioacuten y distribucioacuten de nuevas versiones [6]

Prefacio

8

El desarrollo multiplataforma a diferencia del desarrollo nativo se centra en el

reuacuteso de coacutedigo La construccioacuten de aplicaciones web moacuteviles constituye un ejemplo que

representa este enfoque Sin embargo las limitaciones derivadas de su ejecucioacuten dentro

de un navegador ha motivado a los ingenieros de software a dirigir su atencioacuten hacia otro

tipo de aplicaciones multiplataforma con el que se obtienen resultados maacutes cercanos a las

soluciones nativas En este contexto existen diversas sub-clasificaciones [5] [7] [8] y es

de intereacutes analizar las caracteriacutesticas inherentes a cada una de ellas a traveacutes de la

construccioacuten de un prototipo experimental

Trabajos publicados

Los resultados parciales del presente trabajo dieron lugar al siguiente capiacutetulo de

libro

ldquoAn Experimental Analysis of Application Types for Mobile Devicesrdquo [9]

Lisandro Deliacutea Nicolaacutes Galdaacutemez Pablo Thomas Patricia Pesado

Computer Science amp Technology Series - XIX Argentine Congress of Computer

Science - Selected Papers Editorial de la Universidad de La Plata 2014 p173 -

183 ISBN 978-987-1985-49-4

Asiacute mismo se realizaron publicaciones en los siguientes eventos cientiacuteficos

ldquoMulti-Platform Mobile Application Development Analysisrdquo [10]

Lisandro Deliacutea Nicolaacutes Galdamez Pablo Thomas Leonardo Corbalaacuten Patricia

Pesado

IEEE Ninth International Conference on Research Challenges in Information

Science - IEEE RCIS

Atenas Grecia 13 al 15 de mayo de 2015

Forma de Publicacioacuten Proceedings - CD ROM

ISBN 978-1-4673-6630-4

Organizacioacuten del trabajo

Este trabajo se organiza de la siguiente manera

El capiacutetulo 1 resentildea la evolucioacuten de los dispositivos moacuteviles

Prefacio

9

En el capiacutetulo 2 se describen conceptos esenciales del desarrollo de aplicaciones

para dispositivos moacuteviles

En el capiacutetulo 3 se profundizan conceptos relacionados al desarrollo de

aplicaciones moacuteviles multiplataforma y se estudian diferentes metodologiacuteas y

herramientas

El capiacutetulo 4 contiene un conjunto de experimentos sobre desarrollos de

aplicaciones moacuteviles multiplataforma y el anaacutelisis de los resultados obtenidos

El capiacutetulo 5 presenta las conclusiones obtenidas y el capiacutetulo 6 los trabajos

futuros propuestos en relacioacuten al tema

Finalmente se detalla la bibliografiacutea utilizada en el presente trabajo

Capiacutetulo 1 Tecnologiacutea Moacutevil

10

Capiacutetulo 1 Tecnologiacutea Moacutevil

Hubo una eacutepoca en el que los teleacutefonos moacuteviles no teniacutean pantalla taacutectil ni

permitiacutean grabar viacutedeo ni siquiera podiacutean conectarse a Internet Tampoco podiacutean enviar

y recibir mensajes Simplemente permitiacutean la funcioacuten baacutesica de hablar por teleacutefono

Dos deacutecadas atraacutes los dispositivos moacuteviles eran aparatos de gran tamantildeo y pesados

Soacutelo algunas pocas personas podiacutean acceder a estos dispositivos ya que se consideraban

artiacuteculos de lujo Pero este escenario fue cambiando paulatinamente llevando a que el

celular se transforme en un elemento imprescindible en nuestras vidas En Argentina en

el antildeo 2003 habiacutea 4 millones de liacuteneas activas En la actualidad la cifra llega a 37 millones

de liacuteneas activas y 62 millones de liacuteneas declaradas [11]

11 Los inicios

La Segunda Guerra Mundial originoacute la necesidad de comunicarse a distancia por

lo que Motorola creoacute un equipo militar llamado Handie Talkie H12-16 para

comunicaciones viacutea ondas de radio

Su salto a los sistemas civiles sucedioacute a finales de la deacutecada de los 40 con sistemas

de radio analoacutegicos en frecuencias FM principalmente y con servicios en las bandas HF

y VHF ofrecidos por la americana Bell

En 1955 Ericsson comercializoacute el Mobile Telephone System A (MTA) Phone

(Figura 1) un teleacutefono que pesaba 40 kilogramos y que se instalaba en automoacuteviles

Como curiosidad tuvo un total de 125 usuarios hasta 1967

Capiacutetulo 1 Tecnologiacutea Moacutevil

11

Figura 1 Mobile Telephone System A (MTA)

La primera llamada moacutevil data del 3 de abril de 1973 cuando Martin Cooper

(Figura 2) en aquel entonces ingeniero electroacutenico de Motorola realizoacute una llamada

desde la calle en Nueva York La llamada fue realizada mediante un prototipo del

Motorola DynaTAC 8000x Considerado el primer moacutevil del mundo pesaba cerca de un

kilo y mediacutea 33x45x89 centiacutemetros su bateriacutea teniacutea uacutenicamente la autonomiacutea de una

hora en conversacioacuten necesitando diez horas para cargarse Su costo era de USD 4000

Capiacutetulo 1 Tecnologiacutea Moacutevil

12

Figura 2 Martin Cooper el autor de la primer llamada moacutevil

El verdadero conocimiento popular del teleacutefono moacutevil no llegoacute hasta la deacutecada de

los 90 con la segunda generacioacuten de estos dispositivos

La comunicacioacuten digital permitioacute mejorar la calidad de la escucha de voz la

reduccioacuten del tamantildeo y peso de los dispositivos utilizados y sobre todo el incremento de

compantildeiacuteas operadoras que dieron paso a un mercado maacutes competitivo y accesible

Los usuarios fueron testigos de avances sorprendentes como la identificacioacuten de

llamada o los mensajes de texto que constituyeron a una nueva forma de comunicacioacuten

Vertiginosamente el celular pasoacute de ser considerado una herramienta de trabajo a

generalizarse en todos los estratos de la sociedad

Seguacuten avanzaba la deacutecada del 90 los teleacutefonos moacuteviles iban adaptaacutendose a esas

novedades incorporando pantallas cada vez de mayor tamantildeo y en los maacutes avanzados

haciendo desaparecer la antena que era necesario desplegar para poder realizar una

comunicacioacuten en condiciones adecuadas

Poco a poco los dispositivos empezaron a integrar cada vez maacutes funciones aviso

por vibracioacuten juegos bluetooth infrarrojos politonos y ya con el cambio de siglo

pantallas a color y caacutemaras fotograacuteficas Maacutes adelante llegariacutea la grabacioacuten de viacutedeo el

acceso a Internet las pantallas taacutectiles entre otras [12]

Capiacutetulo 1 Tecnologiacutea Moacutevil

13

12 Evolucioacuten de los protocolos para redes de comunicaciones

Hubiera sido imposible el auge de los teleacutefonos moacuteviles sin la estandarizacioacuten

mejora y evolucioacuten de los protocolos para redes de comunicaciones y su soporte por las

operadoras Asiacute tras las primeras comunicaciones viacutea ondas de radio con banda de

frecuencias por debajo de los 600 kHz las posteriores en AM y FM los servicios de Bell

y Ericsson en los antildeos 50 y 60 llegoacute esa primera llamada de 1973 que popularizoacute todo el

sector

La primera generacioacuten 1G fue responsabilidad de Ericsson con el sistema Telefoniacutea

Moacutevil Noacuterdica (NMT) y seguiacutea utilizando canales analoacutegicos En 1986 la compantildeiacutea

modernizoacute el sistema funcionando a frecuencias superiores de 900 MHz posibilitando

servicio para un mayor nuacutemero de usuarios Ademaacutes del NMT en los 80 se desarrollaron

otros sistemas de telefoniacutea moacutevil como el Sistema Telefoacutenico Moacutevil Avanzado (AMP)

desarrollado por los laboratorios Bell

La segunda generacioacuten 2G llegoacute en la deacutecada de los 90 con sistemas como Global

System for Mobile Communications (GSM) Estaacutendar Interno 136 (IS-136) Red

Mejorada Digital Integrada (iDEN) y el Estaacutendar Interno 95 (IS-95) GSM fue el

desarrollo maacutes relevante ya que fue el estaacutendar europeo de telefoniacutea moacutevil digital En el

proyecto participaron 26 compantildeiacuteas europeas de telecomunicaciones y en 1992 se

pusieron en marcha las primeras redes europeas de GSM-900 y los primeros teleacutefonos

moacuteviles GSM Ademaacutes de Europa GSM ha terminado imponieacutendose tambieacuten en Asia

Ameacuterica Latina Oceaniacutea y una parte de Ameacuterica del Norte

La necesidad de mayores velocidades de transmisioacuten de datos y mayores

capacidades que permitieran nuevos servicios dieron paso a la Tercera Generacioacuten (3G)

no sin antes pasar por el 25G que proporcionoacute el General Packet Radio Service (GPRS)

El estaacutendar europeo es el Universal Mobile Telecommunications System (UMTS) basado

en la tecnologiacutea W-CDMA y estaacute gestionado por la organizacioacuten 3GPP tambieacuten

responsable de GSM GPRS y Enhanced Data Rates for GSM Evolution (EDGE)

La Cuarta Generacioacuten (4G) sucede a las tecnologiacuteas 2G y 3G y ofrece entre otras

mejoras mayor seguridad y Calidad de Servicio (QoS) junto a velocidades de acceso

muy superiores a las anteriores (mayores a 100 Mbits en movimiento y a 1 Gbits en

Capiacutetulo 1 Tecnologiacutea Moacutevil

14

reposo) Estaacute basada completamente en el protocolo IP siendo un sistema de sistemas y

una red de redes que se alcanza gracias a la convergencia entre las redes de cables e

inalaacutembricas Seguacuten Vodafone ldquoel 4G tiene finalmente una razoacuten y es el entretenimientordquo

[13] La norma Long Term Evolution (LTE) es la maacutes extendida aunque no la uacutenica

existente

5G seraacute la nueva revisioacuten del sistema de conexioacuten de red sin cables y se espera que

esteacute disponible en el antildeo 2020 (Figura 3) en paiacuteses como Corea del Sur como asiacute tambieacuten

en Europa Como 4G la mayor velocidad de transferencia seraacute su mayor avance con

velocidades de descarga de hasta 10 Gbps (125 GBs) [14]

Figura 3 Evolucioacuten de los protocolos para redes de comunicacioacuten moacuteviles

13 La actualidad

Muchas de las actividades que un tiempo atraacutes soliacutean hacerse desde una

computadora tales como revisar el correo electroacutenico escuchar muacutesica agendar una

nueva cita en el calendario compartir fotos en alguna red social entre muchiacutesimas otras

en nuestros diacuteas se llevan a cabo de forma natural desde los dispositivos moacuteviles La

Figura 4 muestra coacutemo los dispositivos moacuteviles les han ganado terreno a los equipos

Capiacutetulo 1 Tecnologiacutea Moacutevil

15

tradicionales denominados lsquode escritoriorsquo

Figura 4 Comparacioacuten entre plataformas [15]

En la actualidad existen cientos de modelos diferentes de dispositivos moacuteviles y

los fabricantes siguen innovando intentando destacarse sobre la competencia Hoy en diacutea

no nos sorprende encontrar dispositivos moacuteviles con procesadores quad-core de 22 Ghz

Incluso ya se comienzan a conocer prototipos de dispositivos con ocho o diez nuacutecleos

De la mano de los procesadores la memoria RAM de los dispositivos moacuteviles

tambieacuten ha crecido considerablemente llegando a comercializarse dispositivos con 3 GB

de memoria

La caacutemara de los dispositivos es otra de las capacidades que maacutes ha progresado

llegando a encontrarse sensores de 20 MP y la posibilidad de grabar videos en formato

UHD 4K (3840 x 2160)

El tamantildeo de las pantallas y sus resoluciones fueron otra de las caracteriacutesticas que

maacutes han evolucionado Es posible encontrar dispositivos con pantallas de 5 pulgadas con

posibilidad de visualizar 16 millones de colores y con resoluciones Quad HD (2560 x

1440)

La tecnologiacutea de las bateriacuteas es un aspecto en que no se ha logrado grandes avances

en el sector ni se pronostican grandes progresos a corto plazo Incluso la llegada de chips

Capiacutetulo 1 Tecnologiacutea Moacutevil

16

maacutes potentes mayores pantallas o el 4G disminuiraacuten auacuten maacutes la autonomiacutea de las bateriacuteas

El uacuteltimo aspecto a mencionar es el de las capacidades del dispositivo Ademaacutes de

los ya claacutesicos sensores Global Positioning System (GPS) la capacidad de conectividad

viacutea bluetooth infrarrojo y WIFI hoy surge una diversidad de opciones que pueden

disponer los teleacutefonos inteligentes

Por el lado de la conectividad cada vez es maacutes comuacuten encontrar terminales con

mecanismos de comunicacioacuten Near Field Communication (NFC) o WIFI Direct

Con respecto a los sensores actualmente existen dispositivos que cuentan con

aceleroacutemetros giroscopios y magnetoacutemetros los cuales brindan a los desarrolladores de

aplicaciones la posibilidad de controlar la posicioacuten del aparato la aceleracioacuten que sufre

el dispositivo con respecto a la fuerza de la gravedad etc Tambieacuten es comuacuten el uso de

sensores de proximidad por ejemplo para apagar la pantalla mientras se atiende una

llamada El sensor de luminosidad permite medir el brillo de la luz ambiental Asiacute el

software del teleacutefono utiliza estos datos para ajustar el brillo de la pantalla

automaacuteticamente hacieacutendola maacutes clara o maacutes oscura

Los uacuteltimos smartphones de gama alta tambieacuten son capaces de medir la presioacuten

atmosfeacuterica a traveacutes de un baroacutemetro Los datos que mide el dispositivo sirven para

determinar en queacute nivel por encima del mar se encuentra el teleacutefono lo que se traduce en

la mejora de la precisioacuten del GPS

Incluso ya existen dispositivos que cuentan con un sensor de humedad del aire el

cual permite controlar los niveles de humedad para por ejemplo ayudar a las personas

con problemas respiratorios

Como si todo esto fuese poco existen modelos con podoacutemetro -para medir con

precisioacuten los pasos que da el usuario- pulsoacutemetro -para medir las pulsaciones a traveacutes de

los vasos sanguiacuteneos de los dedos- y hasta sensor de huellas digitales para cuestiones

relativas a la seguridad

Por lo anteriormente dicho los desarrolladores de aplicaciones para dispositivos

moacuteviles de la actualidad tienen el desafiacuteo de poder manipular desde sus aplicaciones

todas las posibilidades descriptas

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

17

Capiacutetulo 2 Desarrollo de

Aplicaciones Moacuteviles Nativas

Si bien el desarrollo de aplicaciones para dispositivos moacuteviles se remonta por lo

menos a 10 antildeos atraacutes ha habido un crecimiento exponencial desde que se abrioacute la tienda

de aplicaciones de iPhone en julio de 2008 Desde entonces los fabricantes de

dispositivos han creado tiendas de aplicaciones para otros dispositivos moacuteviles

incluyendo Android BlackBerry Nokia Ovi Windows Phone entre otros [16]

Actualmente el desarrollo de aplicaciones para dispositivos moacuteviles es un campo

en evolucioacuten con gran intereacutes econoacutemico y cientiacutefico Una prueba de esto es que para

Julio del 2014 se disponiacutean de maacutes de 3 millones de aplicaciones entre las principales

tiendas virtuales de aplicaciones Y solamente en el antildeo 2013 se contabilizaron 101

billones de descargas de aplicaciones moacuteviles en todo el mundo de las cuales 9 billones

fueron descargas pagas y 92 billones descargas gratuitas [17]

Con el actual creciente nuacutemero de plataformas moacuteviles desarrollar aplicaciones

moacuteviles se hizo muy difiacutecil para las empresas ya que necesitan desarrollar las mismas

aplicaciones para cada plataforma de destino

El desarrollo de aplicaciones nativas es la forma natural de implementar

aplicaciones moacuteviles Las aplicaciones nativas son concebidas para ejecutarse en una

plataforma especiacutefica es decir se debe considerar el tipo de dispositivo el sistema

operativo a utilizar y su versioacuten

Las aplicaciones nativas se desarrollan utilizando un entorno de desarrollo

integrado (IDE) que proporciona las herramientas de desarrollo necesarias para la

construccioacuten y depuracioacuten de aplicaciones El coacutedigo fuente se compila para obtener

coacutedigo ejecutable proceso similar que el utilizado para las tradicionales aplicaciones de

escritorio

Cuando la aplicacioacuten estaacute lista para ser distribuida debe ser transferida a las App

stores (tiendas de aplicaciones) especiacuteficas de cada sistema operativo Estas tiendas tienen

un proceso de auditoriacutea para evaluar si la aplicacioacuten se adecuacutea a los requerimientos de la

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

18

plataforma a operar Cumplido este paso la aplicacioacuten se pone a disposicioacuten de los

usuarios

La principal ventaja de este tipo de aplicaciones es la posibilidad de interactuar con

todas las capacidades del dispositivo (caacutemara GPS aceleroacutemetro agenda entre otras)

Ademaacutes no es estrictamente necesario poseer acceso a internet Su ejecucioacuten es raacutepida

puede ejecutarse en modo background y notificar al usuario cuando ocurra un evento que

necesite su atencioacuten

Claramente estas ventajas tienen como contrapartida un mayor costo de desarrollo

pues se debe utilizar un lenguaje de programacioacuten diferente seguacuten la plataforma Por ende

si se desea cubrir varias plataformas se deberaacute generar una aplicacioacuten para cada una de

ellas Esto conlleva a mayores costos de desarrollo actualizacioacuten y distribucioacuten de nuevas

versiones [9] [18] [19]

En la actualidad hay una gran cantidad de sistemas operativos para dispositivos

moacuteviles La Figura 5 muestra la utilizacioacuten de los sistemas operativos en los uacuteltimos antildeos

en todo el mundo mientras que la Figura 6 muestra la misma comparativa en Argentina

En ambos casos el ranking es liderado por Android seguido por iOS y en tercer lugar

Windows Phone [20]

Figura 5- Utilizacioacuten de Sistemas Operativos Moacuteviles en el mundo

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

19

Figura 6- Utilizacioacuten de Sistemas Operativos Moacuteviles en Argentina

A continuacioacuten se analizaraacute coacutemo es el proceso de desarrollo de aplicaciones

moacuteviles nativas en los sistemas operativos maacutes relevantes de la actualidad y luego en la

Tabla 1 se compararaacuten aspectos teacutecnicos de estas plataformas

21 Desarrollo de Aplicaciones Nativas en Android

Android es el sistema operativo maacutes utilizado en la actualidad Puede ser utilizado

en teleacutefonos inteligentes tablets relojes inteligentes televisores y automoacuteviles

Estaacute basado en Linux y es respaldado por Google

211 Evolucioacuten Inicialmente el desarrollo de Android era llevado a cabo por la empresa Android

Inc la cual fue fundada en el antildeo 2003 y recibiacutea respaldo econoacutemico por parte de Google

Antildeos maacutes tarde maacutes precisamente en Julio del 2005 Google adquiere Android y da lugar

a la primer versioacuten del sistema operativo en el antildeo 2007 Android 10 Apple Pie1

desarrollado sobre el kernel de Linux 26 En su presentacioacuten se hizo hincapieacute en que era

un sistema operativo para dispositivos moacuteviles totalmente gratuito y open source a

1 Desde la salida de la primera versioacuten del sistema operativo hasta el presente Google ha seguido la tradicioacuten de ponerle un nombre de postre a cada una de sus versiones siguiendo un orden alfabeacutetico

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

20

diferencia de iOS

La primera versioacuten comercial teniacutea mucho margen de mejora y apenas inquietoacute a la

competencia pero ya introduciacutea algunos conceptos que antildeos despueacutes son un estaacutendar de

los sistemas operativos moacuteviles

Menuacute desplegable de notificaciones

Widgets de escritorio

Android Market la tienda de apps (no contaba con ninguacuten sistema de pago para

usuarios Todo el cataacutelogo era gratuito)

Integracioacuten con Google Mail Contacts y Calendar

Navegador Maps Google Talk reproductor de YouTube y soporte para caacutemaras

En febrero del 2009 apenas 3 meses despueacutes del lanzamiento de Android 10 Apple

Pie llega la primera actualizacioacuten Android 11 Banana Bread No antildeadiacutea grandes

novedades pero siacute corregiacutea numerosos fallos detectados en la primera versioacuten e introduciacutea

un concepto por entonces poco usado por los rivales que buscaba facilitar la vida al

usuario las actualizaciones automaacuteticas con las que resultaba muy simple mantener todo

el software al diacutea

El 30 de abril del 2009 lanzan una nueva actualizacioacuten de gran importancia con

muchas novedades en cuanto a usabilidad Android 15 Cupcake Esta nueva versioacuten

introdujo las siguientes caracteriacutesticas

Teclado taacutectil QWERTY en pantalla con prediccioacuten de texto y diccionario de

usuarios para palabras personalizadas

Grabacioacuten y reproduccioacuten en formatos MPEG-4 y 3GP

Widget de escritorio de Google para realizar buacutesquedas directamente

SDK para el desarrollo de widgets de escritorio por parte de terceros

Funciones del portapapeles ampliadas

Interfaz para grabar y reproducir viacutedeos mejorada

Posibilidad de auto-rotacioacuten

Android 16 Donut apareciacutea en septiembre del 2009 con algunas novedades

adicionales

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

21

Soporte para CDMAEVDO 8021x VPN que ampliaba los mercados al alcance

de Android

Compatibilidad con distintas resoluciones de pantalla Soporte WVGA

Actualizacioacuten y nuevo disentildeo del Android Market

Utilidad de buacutesqueda universal en Internet y en el mismo dispositivo

Galeriacutea caacutemara y videocaacutemara con mejor integracioacuten con raacutepido acceso a la

caacutemara

Motor multi-lenguaje de Siacutentesis de habla para permitir a cualquier aplicacioacuten de

Android hablar una cadena de texto

Mejoras en las buacutesquedas por texto y voz

Apenas dos meses despueacutes en noviembre del 2009 lanzan Android 20 Eclair

uno de los cambios maacutes sustanciales sufridos por Android tanto a nivel de disentildeo como

de arquitectura interna Era una versioacuten dirigida a dispositivos de mayor tamantildeo en un

tiempo en el que los fabricantes empezaban a diversificar su oferta La versioacuten 21

mantuvo la misma nomenclatura y soacutelo corrigioacute algunos fallos pero su uso fue mayor

entre los fabricantes que la versioacuten anterior A continuacioacuten se mencionan algunas de las

nuevas caracteriacutesticas

Sincronizacioacuten de cuenta expandida permitiendo a los usuarios agregar muacuteltiples

cuentas al dispositivo para sincronizacioacuten de correo y contactos

Google Maps Navigation sistema de navegacioacuten GPS gratuito

Compatibilidad con Microsoft Exchange

Optimizacioacuten en velocidad de hardware y GUI renovada

Soporte para maacutes tamantildeos de pantalla y resoluciones con una mejor tasa de

contraste

Navegador actualizado soporte para HTML5 y barra de direccioacuten y buacutesqueda

unificada

Funcioacuten Speech to Text para escribir textos mediante el uso de la voz

Nueva pantalla de desbloqueo

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

22

Nuevas caracteriacutesticas para la caacutemara incluyendo soporte de flash zoom digital

modo escena balance de blancos efecto de colores y enfoque macro

Adicioacuten de fondos de pantalla animados permitiendo la animacioacuten de imaacutegenes

de fondo de la pantalla inicio para mostrar movimiento

El 20 de mayo del 2010 apareciacutea una nueva actualizacioacuten del sistema operativo

Android 22 Froyo Traiacutea numerosos cambios algunos copiados de otras ROMs y otros

con el uso empresarial en mente

Pantalla Home totalmente redisentildeada con 5 paneles en lugar de 3

Nueva galeriacutea de imaacutegenes

Soporte para actuar como hotspot2 para otros dispositivos tethering3 de datos

Soporte para Flash 101

Funcioacuten copiar y pegar mejorada en Google Mail

Nueva pantalla alternativa de desbloqueo mediante coacutedigo PIN

Grabacioacuten de viacutedeo en 720p

Optimizaciones en velocidad memoria y rendimiento Compilador JIT

Integracioacuten del motor de JavaScript V8 de Chrome en el navegador

Soporte para el servicio Android Cloud to Device Messaging (C2DM)

habilitando notificaciones push

El antildeo 2010 iba a concluir con el lanzamiento de una versioacuten sumamente popular

que prevalecioacute gran tiempo Android 23 Gingerbread Esta versioacuten contoacute con las

siguientes caracteriacutesticas

Disentildeo de la interfaz de usuario actualizado con incremento en velocidad y

simpleza

Nuevo disentildeo para el teclado numeacuterico en pantalla

Soporte para tamantildeos y resoluciones de pantalla extra-grandes (WXGA y

mayores)

Funcioacuten para copiar y pegar mejorada con soporte para caracteres individuales en

lugar de cajas de texto

2 lugar que ofrece acceso a Internet a traveacutes de una red inalaacutembrica y un enrutador conectado a un proveedor de servicios de Internet 3 proceso por el cual un dispositivo moacutevil con conexioacuten a Internet actuacutea como pasarela para ofrecer acceso a la red a otros dispositivos

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

23

Soporte para NFC

Herramientas de visualizacioacuten de consumo y uso de la bateriacutea mejoradas

Soporte para caacutemaras frontales

Acceso de bajo nivel para los desarrolladores de juegos

Recolector basura concurrente para incrementar el rendimiento

Sustitucioacuten del sistema de archivos YAFFS por ext4

Soporte nativo para maacutes sensores (tales como giroscopio y baroacutemetro)

Soporte de chat de video o voz usando Google Talk

En febrero del 2011 Google lanza Android 30 Honeycomb Se trata de una

actualizacioacuten especiacutefica para tablets no compatible con teleacutefonos que introduciacutea las

liacuteneas maestras de la interfaz en el futuro Las versiones 31 y 32 mantuvieron el mismo

nombre y fueron baacutesicamente un conjunto de correcciones A continuacioacuten se listan los

cambios significativos que tuvieron lugar en estas versiones

Pantalla de Inicio redisentildeada

Inclusioacuten de tonos azules en la interfaz en detrimento del verde tradicional

Nuevas funcionalidades para el emplazamiento y uso de widgets

Fin de los botones fiacutesicos Adaptacioacuten automaacutetica del SO seguacuten el dispositivo

Agregado de barra de sistema con caracteriacutesticas de acceso raacutepido a

notificaciones estados y botones de navegacioacuten suavizados disponible en la parte

inferior de la pantalla

Antildeadida la barra de accioacuten (Action Bar en ingleacutes) entregando acceso a opciones

contextuales navegacioacuten widgets u otros tipos de contenido en la parte superior

de la pantalla

Multitarea simplificada ndash tocando Aplicaciones recientes en la barra del sistema

permite a los usuarios ver instantaacuteneas de las tareas en curso y saltar raacutepidamente

de una aplicacioacuten a otra

Aceleracioacuten graacutefica mediante hardware

Optimizacioacuten del renderizado de graacuteficos 3D

Soporte para perifeacutericos USB

Octubre del 2011 fue el mes del lanzamiento de Android 40 Ice Cream Sandwich

basado en el nuacutecleo de Linux 301 Esta nueva versioacuten introdujo las siguientes mejoras

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

24

Nueva Interfaz Holo y fuente tipograacutefica Roboto

Sistema de gestioacuten de notificaciones mejorado

Multitarea mejorada

Android Beam funcionalidad para transferir datos entre dos dispositivos viacutea NFC

Funcioacuten de desbloqueo mediante el rostro

Nuevas funciones para la visualizacioacuten y gestioacuten del consumo de datos

Nuevas aplicaciones de correo y calendario

Habilidad de acceder a aplicaciones directamente desde la pantalla de bloqueo

Herramienta integrada de captura de pantalla

Soporte MKV

Aceleracioacuten por hardware de la interfaz de usuario

Soporte Stylus (laacutepiz taacutectil)

En Julio del 2012 se presenta Android 41 Jelly Bean que incluye las siguientes

novedades

Sistema de deteccioacuten de entrada de datos taacutectiles optimizado

Estreno de Google Now el servicio-asistente de voz inteligente de Google

Navegador Google Chrome

Buacutesqueda mediante voz mejorada

Nuevas posibilidades para las notificaciones interactivas de escritorio

Dictado de voz offline

Se deja de dar soporte al Flash Player

Meses despueacutes en noviembre del 2012 se lanza la versioacuten Android 42 Jelly Bean

la cual incluye habituales correcciones rendimiento mejorado y cambios puntuales en

ciertas aplicaciones

Android 43 Jelly Bean es anunciado el 24 de julio del 2013 Uno de los objetivos

de esta versioacuten fue tratar de consolidar a Android como un sistema operativo capaz de

ejecutar juegos Esta nueva versioacuten cuenta con las siguientes novedades

Soporte multiusuario y de perfiles mejorado

Soporte OpenGL ES 30

Bluetooth Smart

Plataforma Google Games

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

25

Servicios de localizacioacuten Wi-Fi mejorados

Ya no es necesario pulsar el icono del microacutefono para realizar una buacutesqueda de

voz Solo hay que decir OK Google y en seguida ordenar al equipo lo que se

necesite

Android 44 KitKat es anunciado en octubre del 2013 Esta nueva versioacuten intenta

corregir el problema de fragmentacioacuten se cuenta con muchas versiones y los fabricantes

tienen dificultades para adaptar sus productos a los requerimientos de cada nueva versioacuten

Se destaca de esta versioacuten

Menores requisitos de hardware para corregir la fragmentacioacuten de versiones

Compatible con terminales con 512 MB de memoria RAM

Reduccioacuten del consumo de bateriacutea mediante la optimizacioacuten de los sensores

Inclusioacuten de la suite ofimaacutetica QuickOffice

Servicios de almacenamiento online integrados Google Drive Box

Soporte para infrarrojos Usar el moacutevil como mando de TV

Aplicaciones a pantalla completa

Captura de pantalla en viacutedeo

En octubre del 2014 se lanza Android 5 Lollipop daacutendole soporte a otros

dispositivos como Android TV relojes inteligentes autos etc Esta nueva versioacuten

incluye

Nuevo disentildeo basado en Material Design que logra un flujo de trabajo maacutes fluido

Interfaz que se adapta a cualquier tamantildeo de dispositivo

Renovado sistema de notificaciones inteligente

Interesante vista multitarea que muestra capas con las diferentes aplicaciones

abiertas

Funcioacuten Android Smart Lock que permite emparejar un dispositivo Android con

otro ya sea un reloj inteligente o un automoacutevil

Modo Invitado para que puedas prestar el dispositivo sin que otros usuarios

tengan acceso a la informacioacuten privada

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

26

Soporte para sistemas de 64 bits

En octubre del 2015 se anuncia Android 6 Marshmallow que incluye las

siguientes novedades

Soporte para autenticacioacuten viacutea huella digital

Desinstalacioacuten raacutepida de las aplicaciones desde la pantalla de inicio

Nuevo esquema de gestioacuten de energiacutea llamado Doze

Mayor duracioacuten de la bateriacutea cuando el dispositivo estaacute en reposo

Inclusioacuten de Android Pay que emplearaacute el chip NFC

Mejoras en Google Now

Mayor control sobre los permisos requeridos por las aplicaciones

212 Proceso de Desarrollo Las aplicaciones nativas para esta plataforma se implementan utilizando el lenguaje

de programacioacuten Java

El estaacutendar sugiere utilizar el IDE oficial Android Studio (Figura 7) aunque es

posible utilizar otros entornos Independientemente del IDE utilizado se necesita

disponer del Software Development Kit (SDK) de la versioacuten de Android en la que se

desea trabajar El SDK provee todas las herramientas necesarias para desarrollar

compilar depurar y simular aplicaciones

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

27

Figura 7 Entorno de desarrollo Android Studio

Uno de los interrogantes que surgen en el momento de crear una aplicacioacuten es con

cual versioacuten de la Application Programming Interface (API) de Android trabajar Se debe

tener en cuenta que al trabajar con una versioacuten especiacutefica se estaacute limitando cuales son los

dispositivos que soportaraacuten la aplicacioacuten a crear No se recomienda utilizar una API

antigua -ya que no se estariacutea utilizando muchos de los avances de la plataforma- ni

tampoco la uacuteltima en el mercado ndashdebido a que pocos seriacutean los usuarios que podriacutean

utilizarla- En la Figura 8 se visualiza la distribucioacuten de versiones seguacuten los dispositivos

activos a la fecha de Diciembre 2016 [21] De esa informacioacuten se desprende que si se

optara por trabajar con la API 16 (Jelly Bean) el 966 de los celulares activos podraacuten

utilizar la aplicacioacuten a crear

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

28

Figura 8 Distribucioacuten de versiones de Android - Diciembre 2016

22 Desarrollo de Aplicaciones Nativas en iOS

iOS es un sistema operativo para dispositivos moacuteviles de la empresa multinacional

Apple Si bien fue originalmente desarrollado para el dispositivo iPhone luego el sistema

operativo alcanzoacute otros dispositivos como iPod Touch iPad A diferencias de otros

sistemas operativos para dispositivos moacuteviles iOS solo funciona en dispositivos creados

por la empresa Apple pero no asiacute en otro hardware de terceros

221 Evolucioacuten El sistema operativo moacutevil iOS se deriva del sistema operativo OS X el cual estaacute

basado en UNIX

La primera versioacuten del sistema operativo se presentoacute en enero del 2007 A

diferencia de sus sucesores la primera versioacuten no se llamoacute iOS sino iPhone OS Se

trataba de una plataforma bastante cerrada ya que las uacutenicas aplicaciones disponibles

eran las que estaban integradas al sistema operativo y fueron creadas por Apple como los

Mapas Mail Fotos Calendario entre otras

El desarrollo de aplicaciones nativas por parte de terceros no tuvo lugar hasta marzo

del 2008 momento en el cual Apple liberoacute el primer kit de desarrollo

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

29

Meses despueacutes se lanza la segunda versioacuten del sistema operativo iPhone OS 2 En

esta oportunidad introducen la App Store la cual permitioacute la descarga de aplicaciones de

terceros Ademaacutes la aplicacioacuten de Mapas recibioacute compatibilidad con el GPS y el Mail

notificaciones push

En 2009 Apple lanzoacute iPhone OS 3 y en su versioacuten 32 se le cambioacute el nombre a

iOS 32 iOS 3 incorporoacute grandes novedades buacutesqueda Spotlight botones Copiar y

Pegar grabacioacuten de viacutedeo edicioacuten de viacutedeo mensajes MMS comandos de voz modo

landscape y otras muchas apps Ademaacutes se siguioacute explotando las ventajas de las

notificaciones push y se continuoacute evolucionando su SDK daacutendole mayor poder a los

desarrolladores de aplicaciones

iOS 4 llegoacute a mediados del 2010 y trajo consigo nuevos cambios a la plataforma

Los maacutes destacables fueron la inclusioacuten de fondos de pantalla y la posibilidad de poder

abrir varias aplicaciones en simultaacuteneo Adicionalmente las aplicaciones podiacutean ser

agrupadas mediante carpetas algo simple pero uacutetil

En Junio del 2011 se libera iOS 5 Esta nueva versioacuten ofreciacutea grandes novedades

un Centro de Notificaciones Siri ndashel asistente virtual que marcoacute tendencia en los uacuteltimos

antildeos- iMessage iCloud Game Center Quiosco Recordatorios integracioacuten social para

Twitter y se mejoroacute notablemente la app de navegacioacuten web nativa Safari

iOS 6 fue presentado en Junio del 2012 y trajo como novedades la inclusioacuten de

Apple Maps (en reemplazo de Google Maps) mejoras en Siri con informacioacuten mucho

maacutes precisa la integracioacuten de Facebook y Twitter en el sistema el modo no molestar el

soporte para LTE entre otras

Los usuarios de este sistema operativo recibieron una de las mayores

actualizaciones en Junio del 2013 cuando se presenta iOS 7 Esta nueva versioacuten contoacute

con un redisentildeo total de la interfaz de usuario basaacutendose en transparencias y degradados

Ademaacutes se introdujo el Centro de Control AirDrop una renovada app de fotos iTunes

Radio y CarPlay mejoras en el App Switcher videos a caacutemara lenta entre otras cosas

Junio del 2014 fue el mes donde quedoacute disponible iOS 8 una nueva versioacuten del

sistema operativo que intenta resolver algunos errores de iOS 7 y antildeadir ciertas mejoras

Las extensiones y la posibilidad de conectar apps entre siacute mediante el menuacute compartir

hicieron que iOS 8 fuese mucho maacutes productivo Ademaacutes incorporoacute widgets para el

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

30

Centro de Notificaciones o las notificaciones interactivas Ademaacutes se implementaron los

contactos favoritos los teclados de terceros la funcioacuten Reachability y la utilidad

Continuity y las aplicaciones Apple Pay Salud HandOff QuickType Compartir en

Familia iCloud Drive y Apple Music

En el 2015 se presenta iOS 9 que introdujo todo un cambio en el uso del sistema

gracias a la compatibilidad con el 3D Touch del iPhone 6s y el iPhone 6s Plus Se

actualizoacute Notas con nuevas funciones se sustituyoacute Newsstand por News se incorporaron

mejoras en Passbook que pasoacute a llamarse Wallet y se mejoroacute Mapas con direcciones y

traacutefico Se antildeadioacute Split View Picture-in-Picture y atajos en teclados de terceros Ademaacutes

el sistema ahora podiacutea aprovechar mejor la autonomiacutea del dispositivo gracias al Modo

ahorro de bateriacutea que limita las conexiones y caracteriacutesticas del sistema para no consumir

tanta energiacutea

Por uacuteltimo en Junio del 2016 quedoacute disponible iOS 10 versioacuten que se caracteriza

por abrirse a los desarrolladores Con esta nueva versioacuten se puede tener acceso a Siri al

3D Touch y a apps directas del sistema operativo Ademaacutes el centro de widgets ahora es

maacutes intuitivo y la pantalla de bloqueo maacutes uacutetil Como es habitual se aprecian mejoras en

distintas aplicaciones del sistema operativo y se permite borrar apps de Apple que no sean

utilizadas por los usuarios

222 Proceso de desarrollo Las aplicaciones moacuteviles para la plataforma iOS se desarrollan utilizando el

lenguaje de programacioacuten Objetive C El entorno de desarrollo oficial es la plataforma

Xcode [22] la cual opera en conjunto con Interface Builder una herramienta graacutefica para

la creacioacuten de interfaces de usuario

Actualmente hay dos grandes versiones del sistema operativo moacutevil en curso como

se puede apreciar en la Figura 10 Es algo a destacar que la uacuteltima versioacuten del sistema

operativo es soportada por el 63 de los dispositivos activos Claramente la

fragmentacioacuten interna es mucho menor que la encontrada en Android

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

31

Figura 9 Entorno de desarrollo Xcode

Figura 10 Distribucioacuten de versiones de iOS - Noviembre 2016

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

32

23 Desarrollo de Aplicaciones Nativas en Windows Phone

El sistema operativo moacutevil Windows Phone fue desarrollado por Microsoft y

sucede a Windows Mobile A diferencia de su predecesor estaacute enfocado en el mercado de

consumo en lugar del mercado empresarial

231 Evolucioacuten Su primera versioacuten lanzada en septiembre del 2010 fue denominada Windows

Phone 7 Fue presentado como un nuevo sistema operativo que incluye funciones de

integracioacuten con los servicios Xbox Live y Zune La interfaz conocida como Metro ha

sido revisada en su totalidad y comparte caracteriacutesticas visuales similares a la interfaz del

dispositivo Zune HD

Windows Phone 75 es una actualizacioacuten para Windows Phone lanzada en

septiembre de 2011 Esta nueva versioacuten incorporoacute numerosas caracteriacutesticas como por

ejemplo la inclusioacuten de Internet Explorer 9 con soporte para CSS3 Media Queries y

soporte para usar GPS cuando se trabaje con aplicaciones de ubicacioacuten geograacutefica entre

otros

En enero del 2013 se presenta Windows Phone 78 una actualizacioacuten que trae

mejoras como la nueva interfaz de usuario y fondos personalizados para la pantalla de

bloqueo Fue la uacuteltima gran actualizacioacuten de Windows Phone 7 ya que Microsoft se

centroacute en Windows Phone 8

Windows Phone 8 es la siguiente versioacuten del sistema operativo la cual fue

presentada a finales de 2012 Entre las nuevas caracteriacutesticas se incluyen

Nuevas pantallas de inicio y de bloqueo maacutes personalizables

Rincoacuten infantil un espacio exclusivo y controlado para los nintildeos

Cartera para almacenar tarjetas de fidelizacioacuten y de creacutedito

NFC

Internet Explorer 10

Integracioacuten con Skype

Nuevo nuacutecleo Windows NT con soporte para procesadores de varios

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

33

nuacutecleos

Captura de pantalla

Su proacutexima versioacuten es Windows Phone 81 y fue presentada en abril del 2014

Entre sus caracteriacutesticas maacutes relevantes se encuentran

Centro de notificaciones

Asistente de voz conocido con el nombre de Cortana

Sensores (de Wi-Fi de datos y de bateriacutea)

Aplicaciones que vienen en el paquete de instalacioacuten como Salud y

ejercicios Comida y bebida Viajes y Mapas (esta uacuteltima compite con Here

Maps la cual es la aplicacioacuten de mapas de Nokia)

Mejoras en la pantalla de inicio posibilidad de agregar fondos de pantalla y

una tercera columna de mosaicos personalizables (Tiles)

A mediados del 2014 Microsoft decide cambiar de estrategia tratando de unificar

todas las plataformas como PC tablets smartphones Xbox One entre otros Windows

10 (moacutevil) se dio a conocer puacuteblicamente durante un evento el 21 de enero para 2015 Al

igual que su homoacutelogo Windows 10 Mobile utiliza como navegador predeterminado

Microsoft Edge reemplazando Internet Explorer de Windows Phone 81 ya que este no

se adecuaba a las nuevas liacuteneas de disentildeo del sistema operativo

232 Proceso de desarrollo El entorno de desarrollo maacutes popular para el desarrollo de aplicaciones para

Windows Phone es Visual Studio (Figura 11) En la actualidad es posible utilizar diversos

lenguajes de programacioacuten VBNET y CNET C++ y JavaScript

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

34

Figura 11 Entorno de desarrollo Visual Studio

24 Diferencias teacutecnicas entre Android iOS y Windows Phone

Desarrollar aplicaciones moacuteviles para los tres sistemas operativos maacutes populares

implica conocer ciertos aspectos teacutecnicos de cada plataforma Algunos de estos aspectos

teacutecnicos difieren sustancialmente entre cada sistema operativo

Una de las caracteriacutesticas a tener en cuenta es si las aplicaciones moacuteviles se ejecutan

dentro de una maacutequina virtual especiacuteficamente disentildeada o si se ejecutan directamente

sobre el sistema operativo

Otro aspecto que los desarrolladores deben tener en cuenta es el lenguaje de

programacioacuten a utilizar para crear aplicaciones nativas Este aspecto es importante porque

incide en otros aspectos como por ejemplo la gestioacuten de memoria

Ademaacutes del lenguaje de programacioacuten a utilizar es importante conocer la

tecnologiacutea requerida para disentildear interfaces de usuario

Asimismo los desarrolladores deben familiarizarse con diferentes IDEs seguacuten la

plataforma en la que se desea desarrollar como asiacute tambieacuten con diferentes tiendas de

aplicaciones donde alojar los productos finales

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

35

Por uacuteltimo la tecnologiacutea de hardware requerida para soportar el sistema operativo

tambieacuten difiere seguacuten cada plataforma

La Tabla 1 compara cada uno de estos aspectos en los sistemas operativos moacuteviles

Android iOS y Windows Phone

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

36

Sistema

Operativo

Maacutequina

Virtual

Lenguaje de

Programacioacuten

Interfaces

de usuario

Gestioacuten de

memoria

IDE Plataforma de

desarrollo

Dispositivos Tienda de

Aplicaciones

Android Dalvik VM Java XML files Garbage

collector

Android

Studio

Multiplatforma Heterogeneos Google Play

Store

iOS No Objective-C Cocoa

Touch

Reference

counting

XCode Mac OS X Homogeneos iTunes Apps

Store

Windows

Phone

CLR C and Net XAML files Garbage

collector

Visual

Studio

Windows Vista7 Homogeneos Windows

Phone Store

Tabla 1 Diferencias teacutecnicas entre las plataformas Android iOS y Windows Phone

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

37

Capiacutetulo 3 Desarrollo de

Aplicaciones Moacuteviles

Multiplataforma

En los uacuteltimos antildeos el mercado de los dispositivos moacuteviles en especial

smartphones ha mostrado un crecimiento notable tanto en Argentina como en todo el

mundo En particular en nuestro paiacutes las plataformas que maacutes han crecido son Android

e iOS [1520]

Actualmente gran parte de la industria del software se concentra en desarrollar

soluciones para dispositivos moacuteviles proveyendo especialmente aplicaciones nativas

Las aplicaciones nativas tal como se mencionoacute en el capiacutetulo anterior ofrecen la

posibilidad de acceder a todas las capacidades del dispositivo (caacutemara GPS aceleroacutemetro

y agenda entre otras) su rendimiento es alto el acceso a Internet no es estrictamente

necesario y pueden ejecutarse en segundo plano notificando al usuario cuando se requiera

su atencioacuten Estas aplicaciones pueden distribuirsecomercializarse a traveacutes de las tiendas

en liacutenea correspondientes

El principal reto para los proveedores de aplicaciones es proporcionar soluciones

para todas las plataformas pero esto conlleva un alto costo [6] no es posible reusar el

coacutedigo fuente entre plataformas diferentes multiplicando esfuerzos y elevando los costos

de desarrollo actualizacioacuten y distribucioacuten de nuevas versiones

El desarrollo multiplataforma procura optimizar la relacioacuten costobeneficio

compartiendo la misma codificacioacuten entre las versiones para las distintas plataformas

Entre otras ventajas sobresalen menor tiempo y costo de desarrollo prestaciones

similares a las nativas con acceso al hardware del dispositivo y disponibilidad de

entornos potentes de desarrollo (Delphi Visual Studio etc) o en su lugar utilizacioacuten de

tecnologiacuteas (HTML5 Javascript y CSS) bien conocidas por los desarrolladores web

quienes pueden trasladar sus conocimientos y experiencias al paradigma moacutevil Sin

embargo el rendimiento de las aplicaciones y sus interfaces de usuario pueden afectar la

experiencia de usuario

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

38

Las aplicaciones multiplataforma pueden clasificarse en aplicaciones web moacuteviles

hiacutebridas interpretadas y generadas por compilacioacuten cruzada [5] En las secciones

siguientes se analizaran cada una de estas clasifcaciones

31 Aplicaciones Web Moacuteviles

Las Aplicaciones Web Moacuteviles disentildeadas para ejecutarse dentro de un navegador

se desarrollan con tecnologiacutea web estaacutendar (HTML CSS y JavaScript) y cuentan con

una serie de caracteriacutesticas favorables no necesitan adecuarse a ninguacuten entorno operativo

son independientes de la plataforma y su puesta en marcha es raacutepida y sencilla

Por contrapartida sus tiempos de respuesta decaen debido a la interaccioacuten cliente-

servidor Al mismo tiempo resultan ser menos atractivas que las aplicaciones nativas ya

que no se encuentran instaladas en el dispositivo lo que implica acceder previamente a

un navegador Ademaacutes las restricciones de seguridad impuestas a la ejecucioacuten de coacutedigo

por medio de un navegador limitan el acceso a todas las capacidades del dispositivo [23]

Asimismo no es posible desarrollar aplicaciones web que corran en segundo plano ni

tampoco aplicaciones offline ya que es requisito disponer de una conexioacuten a internet para

su funcionamiento

El proceso de desarrollo de una aplicacioacuten web moacutevil debe contemplar una serie de

caracteriacutesticas inherentes al entorno de ejecucioacuten Como ya ha sido mencionado las

aplicaciones web moacuteviles pueden ser accesibles desde cualquier dispositivo moacutevil que

cuente con un navegador y acceso a internet pero esto no significa que la navegacioacuten en

la aplicacioacuten resulte ser coacutemoda u oacuteptima Por ejemplo una aplicacioacuten web con un menuacute

compuesto de 20 iacutetems puede implicar una usabilidad correcta desde una PC Por lo

contrario para un dispositivo moacutevil con una pantalla limitada no resulta praacutectico que se

le presente al usuario tantas opciones en el menuacute Con este ejemplo lo que se pretende

mostrar es que para que una aplicacioacuten sea accesible desde diferentes dispositivos

moacuteviles posiblemente se tengan que realizar al menos dos disentildeos de presentacioacuten

diferentes un disentildeo para PC y otro disentildeo para dispositivos moacuteviles con una estructura

organizativa de la aplicacioacuten maacutes simplificada con respecto al disentildeo tradicional Por

ejemplo algunas de las funcionalidades de la aplicacioacuten para PC pueden ser eliminadas

para la versioacuten para dispositivos moacuteviles o presentadas de forma diferente

Para desarrollar diferentes presentaciones de una misma aplicacioacuten web

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

39

actualmente existen dos estrategias distintas ambas vaacutelidas seguacuten el contexto En los

siguientes apartados se analizaraacuten cada una de ellas

311 Aplicacioacuten Web dedicada y exclusiva para dispositivos moacuteviles Esta metodologiacutea ha sido el estaacutendar hasta el antildeo 2012 En ella la direccioacuten URL

y el coacutedigo HTML de la versioacuten moacutevil son distintos de la versioacuten de escritorio Por lo

general las direcciones URL tienen el formato mnombresitiocom

Algunas de las ventajas de este meacutetodo

- En general la carga es maacutes raacutepida y la navegacioacuten maacutes coacutemoda

- Es posible adaptar de manera maacutes faacutecil el contenido de las secciones

Desventajas de este meacutetodo

- Mantenimiento maacutes costoso Se debe mantener dos versiones distintas del mismo

sitio

- Dificulta el posicionamiento del sitio en los buscadores

- Estos desarrollos al final tienden a ser versiones muy reducidas de la web para

PC llevando al usuario a frustrarse y a preferir ver la versioacuten original de la web

312 Aplicacioacuten Web con Disentildeo Adaptable Con esta metodologiacutea la aplicacioacuten web se adapta al dispositivo desde el cual se la

estaacute accediendo El coacutedigo HTML y la direccioacuten URL de la aplicacioacuten son uacutenicos El

Disentildeo Adaptable o Responsive Design (Figura 12) tiene sus oriacutegenes en el antildeo 2008

cuando la W3C discutioacute y describioacute sus propoacutesitos Desde el antildeo 2012 -momento en el

cual Google recomendoacute fuertemente su implicancia [24]- viene en ascenso y

posiblemente llegue a convertirse en un standard en un corto plazo

Mediante un Disentildeo Adaptable todos los elementos de la web se reajustan en ancho

y altura adaptaacutendose al tamantildeo de tu pantalla Incluso es posible ocultar secciones cuando

se accede desde un dispositivo moacutevil

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

40

Figura 12 Disentildeo Adaptable

Las principales ventajas del desarrollo de aplicaciones web con Disentildeo Adaptable

son

- El mantenimiento es menos costoso ya que solo hay que mantener una uacutenica

versioacuten de la aplicacioacuten

- Se simplifica el proceso de posicionar la aplicacioacuten en los buscadores

Como contrapartida el Disentildeo Adaptable presenta una serie de desventajas

- Requiere de mayores niveles teacutecnicos para su desarrollo

- El contenido de las aplicaciones con Disentildeo Adaptable puede ser mayor que el

contenido de las aplicaciones web especiacuteficas para dispositivos moacuteviles

perjudicando el tiempo de carga cuando se utiliza un tipo de conexioacuten no muy

potente y generando un mayor consumo de datos

En la actualidad existe una gran cantidad de frameworks que simplifican el

desarrollo de aplicaciones web con disentildeo adaptable destacaacutendose por su popularidad y

extensa documentacioacuten los frameworks Bootstrap [25] y Foundation [26]

32 Aplicaciones Hiacutebridas

Las aplicaciones hiacutebridas utilizan tecnologiacuteas web (HTML Javascript y CSS) pero

no son ejecutadas por un navegador En su lugar se ejecutan en un contenedor web

(webview) como parte de una aplicacioacuten nativa la cual estaacute instalada en el dispositivo

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

41

moacutevil Desde una aplicacioacuten hiacutebrida es posible acceder a las capacidades del dispositivo

a traveacutes de diversas API

Las aplicaciones hiacutebridas ofrecen grandes ventajas permitiendo la reutilizacioacuten de

coacutedigo en las distintas plataformas el acceso al hardware del dispositivo y la distribucioacuten

a traveacutes de las tiendas de aplicaciones En contrapartida se observan dos desventajas de

las aplicaciones hiacutebridas respecto del caso nativo i) la experiencia de usuario se ve

perjudicada al no utilizar componentes nativos en la interfaz y ii) la ejecucioacuten se ve

ralentizada por la carga asociada al contenedor web

Afortunadamente existe una diversidad de frameworks que permiten desarrollar

aplicaciones hiacutebridas A continuacioacuten se haraacute un breve resumen de los maacutes populares

321 PhoneGap PhoneGap [27] es un framework gratuito y open source creado en el antildeo 2008 por

la empresa Nitobi Software que permite crear aplicaciones moacuteviles usando tecnologiacutea

web estaacutendar HTML JavaScript y CSS En octubre del 2011 Adobe adquiere la empresa

Nitobi y aporta el coacutedigo de PhoneGap a Apache Software Foundation para iniciar un

nuevo proyecto por encima de PhoneGap llamado Apache Cordova [28] PhoneGap pasoacute

a ser una de las varias distribuciones de Apache Cordova (Figura 13) brindando servicios

extras como por ejemplo Adobe PhoneGap Build [29] un servicio de compilacioacuten en la

nube proporcionado por Adobe Creative Cloud PhoneGap Desktop y PhoneGap

Developer

PhoneGap permite compilar aplicaciones para las siguientes plataformas Android

IOS Amazon Fire OS Windows Phone Windows 8 Ubuntu Tizen Firefox OS

Blackberry 10

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

42

Figura 13 Funcionamiento de Apache Cordova

322 CocoonJS CocoonJS [30] es un framework para el desarrollo de aplicaciones moacuteviles

producido por Ludei [31] Actualmente cuenta con una licencia propietaria y ofrece

diferente tipos de planes pagos y gratuitos El mencionado framework estaacute basado en

Apache Cordova al igual que PhoneGap pero se diferencia de este uacuteltimo en que hace

un mayor hincapieacute en la performance de las aplicaciones resultantes CocoonJS ofrece

dos tipos de webview

Canvas+ un webview liviano optimizado para video juegos Provee solo un

subconjunto de las funcionalidades del HTML5 (canvas audio motion

geolocalizacioacuten etc) necesarias para desarrollar video juegos con el objetivo de

brindar la mejor performance posible

Webview+ un potente y completo webview basado en el webview del proyecto

Chromium el cual cuenta de una mejor performance en comparacioacuten con el

webview por defecto de Apache Cordova

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

43

CocoonJs permite crear aplicaciones tanto para iOS como para Android

323 Ionic Ionic [32] es un completo SDK gratuito y open source para el desarrollo de

aplicaciones hiacutebridas producido por Max Lynch Ben Sperry y Adam Bradley de la

compantildeia Drifty Co en el antildeo 2013 En un tiempo relativamente corto alcanzoacute una

popularidad a destacar Estaacute basado en Apache Cordova permitiendo desarrollar

aplicaciones con tecnologiacutea web A diferencia de otros frameworks para el desarrollo de

aplicaciones hibridas Ionic provee un framework para la interfaz de usuario y

herramientas visuales para disentildear interfaces

Mediante Ionic es posible crear aplicaciones para Android IOS Windows Phone y

Firefox OS

324 Sencha Touch Sencha Touch [33] es un framework gratuito Model-View-Controller (MVC)

JavaScript construido sobre el sistema de clases de Ext JS disentildeado especialmente para

el desarrollo de aplicaciones web moacuteviles para dispositivos taacutectiles [34]

Al igual que PhoneGap Sencha Touch permite a los desarrolladores crear

aplicaciones moacuteviles a partir de un desarrollo web con HTML5 CSS y Javascript A

diferencia de PhoneGap Sencha no necesita de ninguna libreriacutea de terceros para construir

interfaces similares a las nativas ya que el framework provee consigo una gran cantidad

de componentes visuales listos para utilizar

Sencha empaqueta el coacutedigo del proyecto mediante PhoneGap para luego poder

construir aplicaciones en todas las plataformas soportadas por PhoneGap

33 Aplicaciones Interpretadas

Las aplicaciones interpretadas son implementadas utilizando un lenguaje base el

cual se traduce en su mayor parte a coacutedigo nativo mientras el resto es interpretado en

tiempo de ejecucioacuten Estas aplicaciones son implementadas de manera independiente de

las plataformas utilizando diversas tecnologiacuteas y lenguajes tales como Javascript Java

Ruby y XML entre otros

Una de las principales ventajas de este tipo de aplicaciones es que se obtienen

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

44

interfaces de usuario totalmente nativas Sin embargo los desarrolladores experimentan

una dependencia total con el entorno de desarrollo elegido

Seguidamente se presentaran algunos de frameworks maacutes reconocidos para el

desarrollo de aplicaciones interpretadas

331 Appcelerator Titanium Desarrollado por Appcelerator Inc Appcelerator Titanium [35] es un framework

de coacutedigo abierto que permite la creacioacuten de aplicaciones moacuteviles para las plataformas

iOS y Android Dicho framework estaacute formado por Titanium Studio un entorno de

desarrollo de coacutedigo libre para la codificacioacuten de aplicaciones moacuteviles multiplataforma

y el SDK Titanium una serie de herramientas para el desarrollo testeo anaacutelisis

depuracioacuten y compilacioacuten de aplicaciones

Las aplicaciones desarrolladas con Appcelerator Titanium se codifican utilizando

el lenguaje Javascript el cual es evaluado en tiempo de ejecucioacuten mediante un inteacuterprete

de Javascript que se ejecuta en el sistema operativo del dispositivo Al iniciar la

aplicacioacuten desde el coacutedigo nativo se ejecuta el coacutedigo Javascript y mediante la API de

Titanium se mapea uno-a-uno cada elemento del coacutedigo Javascript con los elementos

nativos De esta manera la API de Titanium actuacutea como puente logrando interfaces de

usuario compuestas de controles nativos Este entorno de desarrollo utiliza el framework

Alloy disentildeado para el desarrollo aacutegil de aplicaciones moacuteviles Alloy estaacute basado en la

arquitectura MVC y soporta el uso de tecnologiacuteas populares como Backbonejs [36] y

Underscorejs [37]

Los creadores de Titanium destacan que mediante este framework es posible

reutilizar entre el 60 y 90 del coacutedigo entre distintas plataformas

332 NativeScript El 5 de marzo del 2015 la empresa Telerik lanzoacute NativeScript [38] un proyecto de

coacutedigo abierto el cual permite generar aplicaciones nativas utilizando JavaScript

Asimismo es posible desarrollar la aplicacioacuten utilizando el lenguaje TypeScript [39]

lenguaje libre y de coacutedigo abierto desarrollado por Microsoft que extiende a JavaScript

esencialmente antildeadiendo tipado estaacutetico y objetos basados en clases En este sentido

cuando se compila la aplicacioacuten se realiza la traduccioacuten del coacutedigo TypeScript a coacutedigo

JavaScript

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

45

NativeScript provee un moacutedulo multiplataforma que permite obtener aplicaciones

nativas desde coacutedigo JavaScript Este moacutedulo expone las capacidades del dispositivo y

de la plataforma subyacente de una manera consistente y permite accederlas desde el

coacutedigo JavaScript De igual manera las interfaces de usuario pueden ser definidas

mediante coacutedigo JavaScript documentos HTML y archivos CSS abstrayeacutendose de los

componentes nativos reales

Cuando la aplicacioacuten es compilada parte del coacutedigo multiplataforma es traducido

a coacutedigo nativo mientras que el resto es interpretado en tiempo de ejecucioacuten (Figura 14)

Por el momento NativeScript permite generar aplicaciones para Android e iOS y

se preveacute dar soporte a Windows Phone NativeScript renderiza controles nativos sin

utilizar WebViews logrando una performance y experiencia de usuario similar al de las

aplicaciones nativas

Figura 14 Proceso de interpretacioacuten mediante NativeScript

34 Aplicaciones Generadas por Compilacioacuten Cruzada

Estas aplicaciones se compilan de manera nativa creando una versioacuten especiacutefica de

alto rendimiento para cada plataforma destino Ejemplos de entornos de desarrollo para

generar aplicaciones por compilacioacuten cruzada son Applause [40] Xamarin [41]

Embarcadero Delphi 10 Seattle [42] y RubyMotion [43]

El entorno de desarrollo abierto Applause utiliza como entrada un lenguaje

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

46

especiacutefico del dominio basado en el framework Xtext [44] disentildeado expliacutecitamente para

aplicaciones moacuteviles orientadas a datos y genera coacutedigo fuente en Objective C Java C

o Python Las caracteriacutesticas de Xamarin Embarcadero Delphi 10 Seattle y RubyMotion

se presentan en secciones posteriores

341 Xamarin Xamarin es una plataforma de desarrollo de aplicaciones moacuteviles para generar

aplicaciones 100 nativas para iOS Android y Windows a partir de una base de coacutedigo

CNET comuacuten para conseguir entre un 75 y hasta casi un 100 de reutilizacioacuten de

coacutedigo entre plataformas Las aplicaciones escritas con Xamarin y C disponen de acceso

completo a las API de la plataforma subyacente asiacute como de la capacidad de crear

interfaces de usuario nativas y de realizar la compilacioacuten en coacutedigo nativo por lo que el

impacto en el rendimiento en tiempo de ejecucioacuten es escaso

Xamarin es una compantildeiacutea que se establecioacute en mayo de 2011 por los mismos

ingenieros que crearon el proyecto Mono [45] consistente en una implementacioacuten libre

de la plataforma de desarrollo NET para dispositivos Android iOS y GNULinux

Anteriormente este proyecto se llamaba MonoTouch y MonoDroid

Si bien Xamarin cuenta con su propio IDE denominado Xamarin Studio (Figura

15) es posible integrarlo con Microsoft Visual Studio y de esta manera generar tambieacuten

aplicaciones para Windows incluido Windows RT para tablets y Windows Phone para

celulares

En febrero del 2016 Xamarin es comprada por Microsoft y desde ese momento la

plataforma Xamarin y el IDE Xamarin Studio pasaron a ser gratuitas

Xamarin propone un enfoque de desarrollo multiplataforma en el que se comparte

la codificacioacuten completa de la loacutegica del negocio Sin embargo las interfaces deben ser

programadas de manera independiente para cada una de las plataformas destino Asiacute la

reutilizacioacuten de coacutedigo seguacuten estudios estadiacutesticos de la compantildeiacutea Xamarin es cercana

al 85

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

47

Figura 15 Entorno de Desarrollo Xamarin Studio

342 Embarcadero Delphi 10 Seattle Embarcadero Delphi 10 Seattle [42] es una plataforma de desarrollo propietaria y

no gratuita que permite a los desarrolladores crear aplicaciones raacutepidamente a traveacutes de

un entorno visual coacutemodo e intuitivo (Figura 16) La aplicacioacuten desarrollada puede ser

compilada para muacuteltiples plataformas incluyendo Windows Mac Android e iOS

Delphi 10 Seattle al igual que Xamarin aventaja a otros tipos de aplicaciones

multiplataformas con resultados 100 nativos con acceso total a los sensores y

capacidades del dispositivo (caacutemara notificaciones GPS aceleroacutemetro entre otras)

Un punto a destacar es que Delphi 10 Seattle a traveacutes del framework de interfaces

de usuario FireUI Multi-Device Designer permite crear interfaces de usuario totalmente

nativas sin la necesidad de tener que disentildear interfaces especiacuteficas para cada plataforma

en particular

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

48

Figura 16 Entorno de Desarrollo Delphi 10 Seattle

343 RubyMotion En Mayo de 2012 la empresa HipByte lanza RubyMontion un proyecto que

permite generar aplicaciones para iOS Android y OS X utilizando el lenguaje de

programacioacuten Ruby

Para poder generar las aplicaciones multiplataforma RubyMotion posee

implementaciones de Ruby sobre los sistemas operativos destinos (Android e iOS) que

permiten acceder a todas las caracteriacutesticas provistas por cada plataforma Las

herramientas de compilacioacuten provistas por RubyMotion se encargan de embeber la

correspondiente implementacioacuten de Ruby al momento de compilar para cada plataforma

La principal desventaja de RubyMotion es que soacutelo funciona bajo el sistema

operativo OS X Otro factor a tener en cuenta es que no posee un entorno de desarrollo

integrado que facilite todo el proceso al desarrollador esto se ve solventado gracias a que

ofrece complementos para los IDE y editores de coacutedigo maacutes utilizados

Finalmente si bien el producto es un servicio pago ofrece una posibilidad de

probarlo gratuitamente aunque con soporte uacutenicamente para compilar a la uacuteltima versioacuten

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

49

de cada plataforma destino

Capiacutetulo 4 Experimentacioacuten

50

Capiacutetulo 4 Experimentacioacuten

Con el objetivo de profundizar la investigacioacuten de las diferentes metodologiacuteas de

desarrollo de aplicaciones moacuteviles multiplataforma es que se llevaron a cabo diferentes

experimentos en simultaacuteneo El primer experimento consiste en el desarrollo de una

aplicacioacuten moacutevil utilizando cada una de las metodologiacuteas estudiadas en el capiacutetulo

anterior con el objetivo de analizar el proceso de desarrollo El segundo experimento

tiene como objetivo analizar el rendimiento de las aplicaciones moacuteviles generadas

mediante las metodologiacuteas estudiadas a traveacutes de un caacutelculo matemaacutetico Por uacuteltimo se

presenta un informe comparativo que pueda ayudar en la toma de decisiones sobre queacute

metodologiacutea utilizar en futuros desarrollos

41 Aplicacioacuten Moacutevil para la plataforma de E-Learning WebUNLP

411 Descripcioacuten del problema WebUNLP es un entorno virtual de ensentildeanza y aprendizaje que permite a los

docentes mediar sus propuestas educativas Alumnos y docentes pueden encontrarse en

ese espacio para compartir materiales de estudio comunicarse y generar una experiencia

educativa en forma virtual [46]

Actualmente WebUNLP cuenta con una versioacuten web enfocada a computadoras de

escritorio o portaacutetiles pero no estaacute adaptada para ser utilizada desde dispositivos moacuteviles

El desarrollo planteado consiste en extender WebUNLP con la construccioacuten de una

aplicacioacuten moacutevil que permita acceder a determinadas funcionalidades del sistema a

traveacutes de un dispositivo moacutevil El enfoque propuesto incluye un anaacutelisis de la misma

solucioacuten comparando el desarrollo nativo web hiacutebrido interpretado y de compilacioacuten

cruzada a fin de establecer cuaacutel de ellos es conveniente

Como ocurre con cualquier desarrollo de software la construccioacuten de una

aplicacioacuten moacutevil implica tener claramente definido su propoacutesito y cuaacuteles requerimientos

debe cumplir En particular para el caso de software para dispositivos moacuteviles resulta

esencial tener objetivos maacutes acotados que en su versioacuten de escritorio [47]

Capiacutetulo 4 Experimentacioacuten

51

Para el caso especiacutefico de WebUNLP se realizoacute el desarrollo incremental de una

aplicacioacuten moacutevil y esta primera versioacuten se enfocoacute en una de sus herramientas de

comunicacioacuten la cartelera Esta herramienta permite comunicar las novedades de un

curso como por ejemplo el cambio de horario de una cursada recordar las fechas de

entrega de un trabajo praacutectico entre otras [46]

412 Anaacutelisis Uno de los primeros interrogantes planteados fue la eleccioacuten de la plataforma En

teacuterminos de mercado los sistemas operativos que predominan en Argentina son Android

e iOS [4815] con lo cual se decidioacute dar soporte a estos dos sistemas operativos

Se analizaron los requerimientos funcionales y no funcionales de forma aislada a la

plataforma y luego de forma especiacutefica para cada una de ellas

A continuacioacuten se presentan algunos requerimientos a cumplir por la aplicacioacuten

El usuario debe poder ingresar a la aplicacioacuten con las mismas credenciales que las

utilizadas para acceder a la versioacuten web de escritorio

El usuario debe poder acceder a la cartelera de todos los cursos en los que

participa ya sea como docente o alumno

El usuario debe recibir una notificacioacuten en su dispositivo cuando una novedad es

publicada en la cartelera Este requerimiento no se puede cumplir en la versioacuten

web accesible desde computadoras de escritorio yo portables

El usuario debe tener la misma experiencia de uso en todas las plataformas

operativas

La aplicacioacuten web existente debe estar sincronizada con la aplicacioacuten moacutevil a

desarrollar esto significa que cualquier cambio realizado desde la aplicacioacuten

moacutevil debe verse reflejado en la versioacuten web y viceversa

413 Disentildeo Para satisfacer los requerimientos planteados en el punto anterior a excepcioacuten de

la notificacioacuten el disentildeo de la aplicacioacuten moacutevil web consiste en una reacuteplica de lo ofrecido

por WEBUNLP adaptaacutendose solamente la interfaz al tamantildeo de pantalla del dispositivo

moacutevil

Capiacutetulo 4 Experimentacioacuten

52

Para el disentildeo de las aplicaciones moacuteviles nativa hiacutebrida interpretada y de

compilacioacuten cruzada la situacioacuten es maacutes compleja En la Figura 17 se presenta la

arquitectura geneacuterica de todos los componentes que participan en este escenario de

desarrollo En ella se observa el acceso desde una PC a WebUNLP y el acceso desde

dispositivos moacuteviles a la informacioacuten de WebUNLP mediante servicios web Para el

desarrollo de los servicios web se disentildeoacute una API Restful dada su simpleza escalabilidad

e interoperabilidad [49]

Figura 17 Arquitectura geneacuterica para aplicacioacuten nativa e hiacutebrida

Asimismo existe una tarea programada (Cron) de ejecucioacuten intermitente a

intervalos regulares de tiempo la cual notifica a los dispositivos moacuteviles correspondientes

cuando se crea una novedad en la cartelera de WebUNLP El Cron identifica el sistema

operativo del dispositivo a notificar y genera dicha notificacioacuten

En cuanto a la interfaz graacutefica se planteoacute un disentildeo independiente de la plataforma

para analizar los aspectos de usabilidad de la aplicacioacuten y luego se realizaron los ajustes

necesarios para cada tipo de aplicacioacuten

En las interfaces disentildeadas la navegacioacuten es en serie en el orden en que se presentan

en el mockup [50] de la Figura 18

Capiacutetulo 4 Experimentacioacuten

53

Figura 18 Mockup independiente del tipo de aplicacioacuten

414 Desarrollo

4141 Aplicacioacuten Nativa para Android

El desarrollo de aplicaciones para la plataforma Android requiere disponer del Java

Development Kit (JDK) y su entorno de programacioacuten conocido como Android SDK

Este uacuteltimo provee libreriacuteas y herramientas necesarias para construir testear y depurar

aplicaciones para Android

El desarrollo de la aplicacioacuten de WebUNLP para Android se realizoacute seguacuten las

convenciones adoptadas por su comunidad porque aplica buenas praacutecticas en la

construccioacuten de interfaces y de la loacutegica detraacutes de ellas el acceso a datos y a servicios

web Para cumplir el requerimiento de las notificaciones en el dispositivo

correspondiente el Cron genera la notificacioacuten mediante el uso del servicio Google Cloud

Messaging (GCM) [51] En la Figura 19 se presentan las interfaces de la aplicacioacuten

desarrollada

Figura 19 Aplicacioacuten nativa para Android

Capiacutetulo 4 Experimentacioacuten

54

4142 Aplicacioacuten Nativa para iOS

La plataforma Apple iOS estaacute basada en un modelo propietario es por ello que el

desarrollo de una aplicacioacuten nativa iOS implica contar con una Apple Mac ejecutando OS

X con Xcode instalado El lenguaje de programacioacuten principal es Objective C Xcode es

el entorno de desarrollo de Apple para todos sus dispositivos y es el encargado de

proporcionar el iOS SDK con las herramientas compiladores y frameworks necesarios

Ademaacutes Xcode viene integrado con simuladores para dispositivos iOS (iPhones y iPads)

que facilitan las etapas de prueba del sistema desarrollado

Para los aspectos referentes a la interfaz graacutefica y la interaccioacuten con el usuario se

siguieron las convenciones propuestas por Apple [52] para lograr una mejor integracioacuten

de la aplicacioacuten con el sistema operativo y mejorar la experiencia del usuario

Por uacuteltimo para satisfacer el requerimiento de notificaciones el Cron notifica al

dispositivo iOS correspondiente mediante el uso del servicio Apple Push Notification

Service (APNs) [53] En la Figura 20 se presentan las interfaces de la aplicacioacuten

desarrollada

Figura 20 Aplicacioacuten nativa para iOS

4143 Aplicacioacuten Web Moacutevil

Se desarrolloacute una aplicacioacuten web capaz de acceder a la cartelera de WebUNLP

disponible para cualquier dispositivo moacutevil que cuente con un navegador que soporte las

caracteriacutesticas utilizadas para el desarrollo HTML5 CSS3 y Javascript

Como la velocidad de transmisioacutenrecepcioacuten de datos de un dispositivo moacutevil a

traveacutes de WiFi y en particular 3G es inferior a la velocidad de una computadora de

Capiacutetulo 4 Experimentacioacuten

55

escritorio la versioacuten web de la cartelera de WebUNLP es liviana y gran parte de los

requerimientos son implementados a traveacutes de Ajax [54] para evitar ante alguacuten cambio

la recarga de la paacutegina completa

Debido a las limitaciones que tienen las aplicaciones que se ejecutan sobre un

navegador no es posible implementar la recepcioacuten de una notificacioacuten en el dispositivo

cuando una novedad es publicada en la cartelera

4144 Aplicacioacuten Hiacutebrida desarrollada con PhoneGap y Jquery Mobile

Para la construccioacuten de la aplicacioacuten WebUNLP hiacutebrida se utilizoacute el framework

PhoneGap [27] el cual permite desarrollar aplicaciones moacuteviles que utiliza tecnologiacuteas

comunes a todos los dispositivos HTML5 CSS y Javascript

Asimismo se utilizoacute el framework Javascript Jquery Mobile [55] para lograr

interfaces con apariencia y comportamiento consistente a traveacutes de las diferentes

plataformas moacuteviles

Con el objetivo de implementar el patroacuten de disentildeo MVC se utilizoacute la libreriacutea

Backbonejs [36]

Por uacuteltimo para satisfacer el requerimiento de notificaciones se utilizoacute el plugin

Pushwoosh [56]

En la figura 5 se presentan las interfaces de la aplicacioacuten desarrollada

Figura 21 Aplicacioacuten hiacutebrida desarrollada con PhoneGap

Capiacutetulo 4 Experimentacioacuten

56

4145 Aplicacioacuten Hiacutebrida desarrollada con Sencha Touch

El desarrollo de WebUNLP utilizando Sencha Touch se vio favorecido por el uso

del patroacuten de disentildeo MVC Esto permitioacute mayor flexibilidad y legibilidad en el coacutedigo

[57] [34]

Sencha ofrece Sencha Command una herramienta multiplataforma de liacutenea de

comandos que provee tareas automatizadas para todo el ciclo completo de una aplicacioacuten

En el caso de WebUNLP se utilizoacute tanto para la generacioacuten del proyecto como para el

empaquetado de la aplicacioacuten

En la Figura 22 se presentan las interfaces de la aplicacioacuten desarrollada

Figura 22 Aplicacioacuten desarrollada con Sencha Touch

4146 Aplicacioacuten Interpretada de WebUNLP con Appcelerator Titanium 3

Para desarrollar una aplicacioacuten moacutevil experimental seguacuten el enfoque interpretado

se utilizoacute el entorno de desarrollo gratuito y open source Appcelerator Titanium 3 [35]

Se destaca la simplicidad y legibilidad de los controladores y modelos de la

aplicacioacuten desarrollada luego de utilizar Alloy el framework de Titanium que permite

disentildear aplicaciones seguacuten el patroacuten de disentildeo MVC Para la construccioacuten de las vistas se

puede optar por la programacioacuten mediante Javascript y la API de Titanium o bien por

una especificacioacuten XML con estilos TSS (Titanium Style Sheets) Esta uacuteltima opcioacuten

simplifica el proceso de creacioacuten de las vistas aunque falta todaviacutea un buen editor visual

de interfaces que lo potencie

Capiacutetulo 4 Experimentacioacuten

57

Para cubrir requerimientos de notificaciones en el dispositivo Titanium provee el

moacutedulo PushNotifications para plataformas Android e iOS

La Figura 24 (a) muestra la experimentacioacuten con Titanium

4147 Aplicacioacuten Generada por Compilacioacuten Cruzada de WebUNLP utilizando XamarinVisual Studio

Tal como se mencionoacute en la seccioacuten 341 Xamarin propone un enfoque de

desarrollo multiplataforma en el que se comparte la codificacioacuten completa de la loacutegica

del negocio Sin embargo las interfaces deben ser programadas de manera independiente

para cada una de las plataformas destino (ver Figura 23) Asiacute la reutilizacioacuten de coacutedigo

seguacuten estudios estadiacutesticos de la compantildeiacutea Xamarin es cercana al 85

Figura 23 Enfoque uacutenico de desarrollo Xamarin

Para el estudio de las aplicaciones generadas por compilacioacuten cruzada se desarrolloacute

la aplicacioacuten moacutevil de WebUNLP utilizando Xamarin integrado con Microsoft Visual

Studio Siguiendo la estrategia maacutes eficiente para trabajar en este entorno se ha creado

una solucioacuten uacutenica conteniendo tres proyectos distintos Uno de ellos se utilizoacute para

generar la aplicacioacuten Android otro para la aplicacioacuten Windwos Phone 8 y el tercero para

la implementacioacuten de una biblioteca de clases portable (PCL por sus siglas en ingleacutes) con

todo el coacutedigo compartido Los tres proyectos fueron desarrollaacutendose de manera conjunta

y concurrente

Aunque una de las ventajas maacutes importantes de Xamarin es la reutilizacioacuten de

coacutedigo eacutesta se ve fuertemente afectada por el tipo de aplicacioacuten que se desarrolla La

relacioacuten existente entre la complejidad de la interfaz y la loacutegica del negocio impacta

directamente sobre la posibilidad de mantener la mayor cantidad de coacutedigo compartido

Capiacutetulo 4 Experimentacioacuten

58

en la PCL En el desarrollo de WebUNLP la reutilizacioacuten de coacutedigo ha sido cercana al

50 Sin embargo no debe despreciarse la ventaja de utilizar el mismo lenguaje entorno

y conjunto de herramientas comunes en el desarrollo de aplicaciones para distintas

plataformas moacuteviles

La Figura 24 (b) presenta la interfaz desarrollada para Windows Phone 8

4148 Aplicacioacuten Generada por Compilacioacuten Cruzada de WebUNLP utilizando Delphi 10 Seattle

Para el profundizar el estudio de las aplicaciones generadas por compilacioacuten

cruzada ademaacutes se desarrolloacute la aplicacioacuten moacutevil de WebUNLP utilizando Delphi 10

Seattle En particular fueron de gran utilidad tanto los componentes provistos por Delphi

para acceder a servicios RESTful como el entorno visual de desarrollo de Delphi 10

Seattle

Para la recepcioacuten de notificaciones en el dispositivo de las novedades de WebUNLP

se utilizoacute el componente TPushEvent conectado al servicio Kinvey [58]

La Figura 24 (c) presenta la interfaz de la aplicacioacuten desarrollada

(a) (b) (c)

Figura 24 Aplicacioacuten desarrollada con a) Titanium b) XamarinVisual Studio y c) Delphi XE

415 Conclusiones del experimento WebUNLP Seleccionar un dominio para desarrollar un caso experimental tiene sus

particularidades La novedad de disponer una aplicacioacuten moacutevil no es motivo suficiente

que justifique tal desarrollo Es necesario satisfacer un conjunto de requerimientos

claramente planteados

Capiacutetulo 4 Experimentacioacuten

59

WebUNLP es un entorno virtual de ensentildeanza y aprendizaje utilizado por diversos

cursos de grado y postgrado de la Universidad Nacional de La Plata Por ende la cantidad

de usuarios beneficiados por acceder desde cualquier lugar a este entorno es importante

De esta manera se optoacute por elegir dicho espacio virtual para ser replicado en una

versioacuten moacutevil que no soacutelo permita acercarlo a sus usuarios sino que ademaacutes ampliacutee sus

funciones en este caso puntualmente para la cartelera

Para el desarrollo de esta experimentacioacuten se desarrolloacute la misma aplicacioacuten para

los cinco tipos de enfoques de desarrollo moacutevil (web nativa hiacutebrida interpretada y

generada por compilacioacuten cruzada)

Se destaca la gran simpleza de generar la versioacuten web dado que se utilizan las

mismas herramientas tecnoloacutegicas que las usadas para el desarrollo de cualquier

aplicacioacuten web tradicional La principal diferencia en este sentido radica en la limitacioacuten

de espacio en la pantalla del dispositivo No obstante el mayor contraste estaacute dado en que

no es posible acceder a todas las capacidades de hardware del dispositivo lo que impidioacute

implementar uno de los requerimientos probablemente el maacutes interesante la notificacioacuten

de novedades de la cartelera de WebUNLP al usuario

Por otra parte las versiones nativas han cumplido todos los requerimientos Aunque

la mayor desventaja consiste en la no portabilidad lo que implicoacute un desarrollo especiacutefico

para la plataforma que se desee cubrir En este trabajo se han presentado los desarrollos

para Android e iOS sistemas operativos maacutes usados en Argentina con un costo de

desarrollo y mantenimiento inherente mayor

Para el caso del enfoque hiacutebrido tanto la versioacuten de WebUNLP desarrollada con

PhoneGap y Jquery Mobile como la versioacuten desarrollada con Sencha Touch han logrado

conjugar la simpleza del desarrollo web con el uso de todas las capacidades del

dispositivo Este tipo de enfoque pretende suplir las desventajas de los dos enfoques

previos hecho que lo posiciona como una eleccioacuten realmente interesante siempre

condicionada por los requerimientos especiacuteficos a cumplir

Por el lado del modo de desarrollo interpretado la versioacuten de WebUNLP

desarrollada con Titanium logroacute resolver todos los requerimientos previamente

planteados Al igual que en el enfoque hiacutebrido es un punto a destacar que el desarrollo

de la aplicacioacuten con Titanium es relativamente simple y es posible reutilizar todo el

Capiacutetulo 4 Experimentacioacuten

60

coacutedigo entre plataformas Lo que lo hace la eleccioacuten prima facie es el hecho de obtener

interfaces totalmente nativas algo que no se lograba mediante el enfoque hiacutebrido

Por uacuteltimo las versiones de WebUNLP generadas con el enfoque de compilacioacuten

cruzada con Xamarin y Delphi lograron cumplir los requerimientos planteados Se

destaca el hecho de que se genera interfaces totalmente nativas pero considero que el

costo es muy alto se debe disentildear las interfaces para cada plataforma de manera

independiente lo que hace que no se pueda reutilizar todo el coacutedigo fuente de la

aplicacioacuten

42 Enfoques de desarrollo Anaacutelisis comparativo de rendimiento 421 Descripcioacuten del Problema

Hace apenas unas deacutecadas atraacutes el uso de los sistemas de software estaba

restringido a un grupo reducido de usuarios especializados Aquella eacutepoca contrasta

fuertemente con la actualidad en la que los smartphones pequentildeas computadoras moacuteviles

de propoacutesito general se han vuelto cotidianos y omnipresentes Estos dispositivos pueden

utilizarse para llevar a cabo tareas complejas y criacuteticas requiriendo la mejora continua de

las capacidades de coacutemputo la disponibilidad el rendimiento eficiente entre otras

necesidades La evolucioacuten vertiginosa de esta tecnologiacutea ejerce presioacuten en la adaptacioacuten

de la Ingenieriacutea de Software

Respecto del desarrollo para dispositivos moacuteviles se debe considerar una serie de

caracteriacutesticas propias de esta actividad que no estaban presentes en el desarrollo

tradicional de software [59] Es necesario tener en cuenta sobre queacute tipo de dispositivos

se debe ejecutar la aplicacioacuten a construir La diversidad de plataformas lenguajes de

programacioacuten herramientas de desarrollo estaacutendares protocolos y tecnologiacuteas de red

algunas limitaciones de ciertos dispositivos y las exigencias de tiempo del mercado entre

otros constituyen algunos de los problemas a tratar

En la mayoriacutea de los casos el eacutexito de un producto de software para dispositivos

moacuteviles estaraacute condicionado por el nivel de popularidad que logre alcanzar Para

maximizar su presencia en el mercado es necesario que la aplicacioacuten pueda ejecutarse

sobre la mayor cantidad de plataformas moacuteviles existentes especialmente sobre las dos

maacutes populares Android e iOS [60] Para lograr este objetivo existen dos alternativas

Capiacutetulo 4 Experimentacioacuten

61

i) Desarrollar aplicaciones especiacuteficas para cada plataforma impulsando en

paralelo varios proyectos de desarrollo con las herramientas y lenguajes propios de cada

una de ellas Estas aplicaciones analizadas previamente en este trabajo se denominan

aplicaciones nativas

ii) Generar aplicaciones que puedan ejecutarse en forma directa sobre maacutes de una

plataforma de sistema operativo a partir de un uacutenico proyecto de desarrollo Estas

aplicaciones como ya se ha presentado en este trabajo se denominan aplicaciones

multiplataforma

En los uacuteltimos antildeos se ha incrementado el intereacutes de la comunidad de Ingenieriacutea de

Software por el estudio del desarrollo de aplicaciones multiplataforma para dispositivos

moacuteviles

En [5] se presenta un anaacutelisis comparativo de enfoques de desarrollo de aplicaciones

multiplataforma para dispositivos moacuteviles proponiendo la siguiente taxonomiacutea

aplicaciones web moacuteviles aplicaciones hiacutebridas aplicaciones interpretadas y

aplicaciones generadas por compilacioacuten cruzada

En [7] y [8] se analizan aspectos generales de frameworks de desarrollo

multiplataforma para dispositivos moacuteviles

En [61] se comparan aspectos no funcionales para los diferentes enfoques de

desarrollo de aplicaciones multiplataforma para dispositivos moacuteviles

En [9] se analizaron ventajas y desventajas de los enfoques de desarrollo

multiplataforma mencionados desde el punto de vista del Ingeniero de Software

La eleccioacuten del modo de desarrollo de aplicaciones para dispositivos moacuteviles

depende de varios factores Uno de ellos en muchos casos esencial es el tiempo de

ejecucioacuten El intereacutes por optimizar el tiempo de ejecucioacuten de una aplicacioacuten de software

es intriacutenseco a la disciplina informaacutetica Esto se evidencia entre otras cosas por la

evolucioacuten del poder de coacutemputo de los procesadores Ademaacutes el rendimiento eficiente

es uno de los atributos que las aplicaciones de software deben satisfacer seguacuten diversos

estaacutendares de calidad entre otros ISOIEC 9126 e ISOIEC 25010 [62]

En lo que respecta al desarrollo de aplicaciones para dispositivos moacuteviles es

oportuno considerar el tiempo de ejecucioacuten de las aplicaciones por diversos motivos

El tiempo de ejecucioacuten de una aplicacioacuten estaacute fuertemente ligado al consumo de

Capiacutetulo 4 Experimentacioacuten

62

energiacutea [63] el cual estaacute limitado por la capacidad de la bateriacutea de los dispositivos

Asimismo el rendimiento de las aplicaciones se ve reflejado principalmente

mediante las calificaciones de los usuarios en las tiendas de aplicaciones en liacutenea

Aplicaciones con bajo rendimiento pueden implicar usuarios disconformes produciendo

publicidad negativa [60] Andre Charland y Brian Leroux identifican al tiempo de

ejecucioacuten como uno de los problemas principales a resolver en el desarrollo de

aplicaciones multiplataforma y afirman que a los usuarios finales les preocupa la calidad

del software y la experiencia de uso [64]

Corral Sillitti y Succi realizaron un anaacutelisis de rendimiento comparativo entre

aplicaciones nativas y aplicaciones hiacutebridas utilizando el framework Phonegap para una

versioacuten del sistema operativo Android [65]

Es importante destacar que no se han encontrado estudios que evaluacuteen y comparen

el rendimiento entre los diversos modos de desarrollo multiplataforma de acuerdo a la

taxonomiacutea propuesta en [5] aplicaciones web moacuteviles aplicaciones hiacutebridas

aplicaciones interpretadas y aplicaciones generadas por compilacioacuten cruzada Esta

taxonomiacutea es la que se utiliza de referencia en este trabajo

El presente apartado realiza un anaacutelisis comparativo de rendimiento de aplicaciones

para dispositivos moacuteviles generadas por el enfoque de desarrollo nativo y los distintos

enfoques de desarrollo multiplataforma seguacuten [5]

En la seccioacuten siguiente se describe el experimento utilizado para evaluar tiempos

de ejecucioacuten en aplicaciones nativas y en los diversos modos de desarrollo de aplicaciones

moacuteviles multiplataforma y en las secciones posteriores se muestran y analizan los

resultados obtenidos se presentan las conclusiones y el trabajo futuro

422 Desarrollo

4221 Disentildeo de las pruebas

Todas las pruebas cuyos resultados se presentan en este trabajo fueron realizadas

sobre dispositivos moacuteviles con sistemas operativos Android e iOS dado que en la

actualidad abarcan gran parte del mercado mundial de acuerdo a lo indicado en [60]

Para llevar a cabo la experimentacioacuten se seleccionaron los frameworks de desarrollo

multiplataforma seguacuten las alternativas presentadas en [10] Se disentildearon pruebas para

evaluar el rendimiento de Apache Cordova [28] Appcelerator Titanium [35] y Xamarin

Capiacutetulo 4 Experimentacioacuten

63

[41] que se corresponden con los modos de desarrollo hiacutebrido interpretado y compilacioacuten

cruzada respectivamente Tambieacuten se experimentoacute con otros dos frameworks de

desarrollo multiplataforma que recientemente han ganado popularidad NativeScript

(desarrollo interpretado) y Corona (compilacioacuten cruzada) Finalmente se incluyeron al

conjunto de pruebas las aplicaciones web y el enfoque nativo de desarrollo para Android

e iOS De este modo se logroacute una muestra razonablemente representativa de las diversas

opciones existentes en la actualidad

Para la realizacioacuten de las pruebas se utilizaron seis dispositivos moacuteviles distintos

(ver Tabla 2) tres de ellos con sistema operativo Android identificados como DA1 DA2 y

DA3 (dos smartphone y una tablet) y tres con sistema operativo iOS identificados como

DI1 DI2 y DI3 (dos smartphone y una tablet)

ID Sistema Operativo Caracteriacutesticas

DA1 Android 44

Tipo Smartphone Marca Motorola

Modelo Moto-G2 Procesador Quad-core 12 GHz Cortex-A7

RAM 1GB Snapdragon 400

DA2 Android 502

Tipo Smartphone Marca Samsung

Modelo S6 Procesador Octa-core (4x21 GHz Cortex-A57 amp 4x15

GHz Cortex-A53) RAM 3GB Exynos 7420 Octa

DA3 Android 422

Tipo Tablet Marca Samsung Modelo Tab 2

Procesador Dual-core 10 GHz RAM 1GB TI OMAP 4430

DI1 iOS 92

Tipo Smartphone Marca Apple Modelo 5S

Procesador Dual-core 13 GHz Cyclone (ARM v8-based)

RAM 1GB Apple A7

DI2 iOS 91

Tipo Smartphone Marca Apple

Modelo 6 plus Procesador Dual-core 14 GHz Typhoon (ARM v8-

based) RAM 1GB Apple A8

DI3 iOS 91 Tipo Tablet

Marca Apple Modelo Ipad Air

Capiacutetulo 4 Experimentacioacuten

64

Procesador Dual-core 13 GHz Cyclone (ARM v8-based)

RAM 1GB Apple A7 Tabla 2 Dispositivos moacuteviles utilizados en el experimento

Se definieron siete escenarios de anaacutelisis distintos uno por cada estrategia de

desarrollo utilizada

1 Nativo para Android y nativo para iOS 2 Aplicaciones web (multiplataforma) 3 Apache Cordova (multiplataforma hibrido) 4 Appcelerator Titanium (multiplataforma interpretado) 5 NativeScript (multiplataforma interpretado) 6 Xamarin (multiplataforma compilacioacuten cruzada) 7 Corona (multiplataforma compilacioacuten cruzada)

En los seis dispositivos se llevaron a cabo pruebas para cada uno de los siete

escenarios mencionados definiendo asiacute un total de 42 casos de prueba

Con el fin de evaluar la velocidad de procesamiento se planteoacute un caacutelculo simple

que incluyoacute varias iteraciones funciones matemaacuteticas y aritmeacutetica de punto flotante que

se resume en la siguiente serie

119904119890119903119894119890 =sum sum (log2(119896) +3119896

2119895+ radic119896

100000

119896=1

+ 119896119895minus1)

5

119895=1

A modo de ejemplo en la Figura 25 se muestra el coacutedigo multiplataforma

desarrollado en Apache Cordova para el caacutelculo de la serie definida

El experimento planteado permite medir con precisioacuten la variable analizada en este

caso el tiempo de ejecucioacuten requerido para realizar un caacutelculo matemaacutetico intensivo

Este tipo de caacutelculo matemaacutetico es frecuente en diversas aplicaciones que se

ejecutan en dispositivos moacuteviles por ejemplo juegos aplicaciones con realidad

aumentada aplicaciones para tratamiento de imaacutegenes entre otras en las cuales no

siempre es posible utilizar el poder de la Unidad de Procesamiento Grafico (GPU) para

el caacutelculo

El coacutedigo fuente de los experimentos llevados a cabo se encuentra disponible en

[66]

En las siguientes secciones se describe la experimentacioacuten y se analizan los

resultados obtenidos

Capiacutetulo 4 Experimentacioacuten

65

4222 Recoleccioacuten de datos

Para cada uno de los 42 casos de prueba definidos se realizaron 30 ejecuciones

independientes del experimento disentildeado obteniendo en cada caso una muestra T = T1

T2 hellip T30 con Ti = tiempo requerido para el caacutelculo de la serie en la i-eacutesima ejecucioacuten

del experimento planteado El tiempo Ti se expresa en milisegundos

Para caracterizar cada una de las muestras obtenidas se han calculado los

estadiacutesticos y S que se corresponden con la media (o promedio muestral) y la

desviacioacuten estaacutendar muestral (ver Tabla 3)

var startTime = new Date()getTime()

var serie = 0

for ( var j=1 j lt= 5 j++ )

for ( var k=1 k lt= 100000 k++ )

series = series + (Mathlog(k)MathLN2) + (3k2j) +

Mathsqrt(k) + Mathpow(k j-1)

var finalTime = new Date()getTime()

var duration = finalTime - startTime

documentgetElementById(result)innerHTML = duration + -gt + series

Figura 25 Caacutelculo de serie coacutedigo multiplataforma desarrollado en Apache Cordova

Capiacutetulo 4 Experimentacioacuten

66

Dada la muestra T=T1 T2 hellip Tn

Media o promedio muestral = (

1

119899)sum119879119894

119899

119894=1

Desviacioacuten estaacutendar muestral 119878 = radic

1

119899 minus 1sum(119879119894 minus )2119899

119894=1

Tabla 3 Estadiacutesticos utilizados en el anaacutelisis de los datos

423 Resultados Obtenidos En la Tabla 4 se presenta una siacutentesis de los resultados obtenidos conformada por

los valores y S calculados para cada caso de prueba planteado Estos valores permiten

comparar el rendimiento de las aplicaciones generadas a partir de los distintos enfoques

de desarrollo evaluadas sobre cada uno de los seis dispositivos utilizados

Los valores presentados en la Tabla 4 y graficados con diagramas de barras en la

Figura 26 sugieren un anaacutelisis por separado de los casos con sistema operativo Android

y los casos con sistema operativo iOS Claramente las siluetas delineadas en los

diagramas de barras de la Figura 26 se repiten de forma similar en los escenarios con el

mismo sistema operativo pero se diferencian notablemente entre distintos sistemas

operativos

Nativo WebApp Apache Cordova Titanium NativeScript Xamarin Corona

DA1 53293 18627 23033 21167 18730 39517 140173

S 1614 632 1422 2495 939 895 1260

DA2 21180 9067 8577 9563 8967 21100 60053

S 1997 1248 883 764 916 669 595

DA3 76380 17273 19060 19270 18350 37933 134430

S 2898 1551 936 1680 304 831 2339

DI1 413 5710 32373 29977 25203 12543 3963

S 078 1655 1662 401 728 1103 085

DI2 413 4190 26397 24113 22343 10303 9863

S 073 538 1544 495 861 491 613

DI3 253 4167 29223 27267 22597 11053 10967

S 057 444 1082 550 277 390 275

Tabla 4 Siacutentesis de resultados obtenidos

Capiacutetulo 4 Experimentacioacuten

67

Figura 26 Diagrama de barras con las muestras recolectadas (las barras muestran el tiempo promedio expresado en milisegundos)

Capiacutetulo 4 Experimentacioacuten

68

424 Anaacutelisis de Resultados Debido a las diferencias de hardware de los dispositivos utilizados no es prudente

comparar el rendimiento de las aplicaciones nativas en Android con respecto a las de

iOS No obstante de los resultados obtenidos es posible inferir que el enfoque nativo en

iOS resulta mucho maacutes eficiente que el enfoque nativo en Android Existen diversos

factores que presumen justificar este hecho entre ellos la diferencia inherente de ejecutar

coacutedigo Objective C en iOS comparado con ejecutar coacutedigo Java en Android el cual

necesita del Android Runtime (ART) para su funcionamiento ralentizaacutendolo

Respecto de las aplicaciones web multiplataforma los resultados de rendimiento

resaltaron positivamente en relacioacuten al resto tanto en Android como en iOS Asiacute el

enfoque de desarrollo multiplataforma web seriacutea una opcioacuten conveniente para alcanzar

un buen rendimiento en todos los dispositivos moacuteviles independientemente de su sistema

operativo Sin embargo esta eleccioacuten podriacutea verse afectada por las limitaciones de estas

aplicaciones para acceder en forma completa a las capacidades especiacuteficas del dispositivo

Respecto de los enfoques hiacutebrido e interpretado -analizados a traveacutes de las

tecnologiacuteas Coacuterdova Titanium y NativeScript- es importante destacar que si bien estos

enfoques trabajan de modo distinto entre siacute tienen algo en comuacuten la ejecucioacuten de coacutedigo

JavaScript En este sentido el motor de JavaScript -encargado de convertir el coacutedigo

JavaScript en coacutedigo optimizado para que luego lo interprete un WebView- cumple un

rol determinante Las pruebas de estos enfoques en Android -que utiliza el motor de

JavaScript V8- tuvieron un comportamiento similar al enfoque web y comportamiento

superior que el enfoque nativo y el enfoque de compilacioacuten cruzada Por el contrario en

los dispositivos moacuteviles con iOS -que utiliza el motor JavaScriptCore- los resultados de

estas pruebas fueron peores que en los enfoques nativos web y de compilacioacuten cruzada

En los dispositivos moacuteviles con iOS los casos de compilacioacuten cruzada -analizados

a traveacutes de las tecnologiacuteas Xamarin y Corona- obtuvieron mejores resultados que los

casos hiacutebridos e interpretados pero mostraron peor rendimiento que el enfoque nativo y

que el enfoque web En cambio en los dispositivos moacuteviles con Android los resultados

de las pruebas con las aplicaciones construidas mediante el enfoque de compilacioacuten

cruzada fueron los peores La necesidad de ejecucioacuten de coacutedigo Java a traveacutes del Android

Runtime entre otros factores justifican este resultado

Capiacutetulo 4 Experimentacioacuten

69

425 Conclusiones Se ha presentado un estudio comparativo sobre el tiempo de procesamiento de

aplicaciones de software para dispositivos moacuteviles generadas con distintos enfoques de

desarrollo

Los escenarios de prueba disentildeados incluyeron los dos sistemas operativos para

dispositivos moacuteviles con mayor presencia en el mercado Android e iOS ejecutaacutendose

cada uno de ellos sobre dos smartphones (considerados de gama media y gama alta al

momento en que este trabajo fue escrito) y una Tablet

Sobre estos seis dispositivos se realizoacute un estudio de rendimiento para las

aplicaciones construidas seguacuten los enfoques de desarrollo nativos y multiplataforma

mediante un conjunto de aplicaciones que fueron desarrolladas para tal fin

1 Aplicacioacuten nativa para Android 2 Aplicacioacuten nativa para iOS 3 Aplicacioacuten web (multiplataforma) 4 Aplicacioacuten Apache Cordova (multiplataforma hibrido) 5 Aplicacioacuten Appcelerator Titanium 6 (multiplataforma interpretado) 7 Aplicacioacuten NativeScript (multiplataforma interpretada) 8 Aplicacioacuten Xamarin (multiplataforma compilacioacuten cruzada) 9 Aplicacioacuten Corona (multiplataforma compilacioacuten cruzada)

En todos los dispositivos con sistema operativo Android el peor rendimiento fue

evidenciado por Corona seguido por el enfoque nativo y Xamarin Esta situacioacuten es

totalmente opuesta a los resultados obtenidos sobre el sistema operativo iOS en doacutende las

tecnologiacuteas de desarrollo mencionadas se mostraron siempre entre las cuatro mejores En

particular es destacable la supremaciacutea del enfoque nativo frente a todos los demaacutes para el

caso de los dispositivos con iOS

Respecto al mejor rendimiento en los dispositivos Android no es posible identificar

claramente cuaacutel es el enfoque maacutes conveniente Tanto las aplicaciones web como

Coacuterdova NativeScript y Titanium alcanzaron buenos resultados en relacioacuten al resto

Nuevamente esta situacioacuten se contrapone con los datos obtenidos sobre los dispositivos

iOS en los que Coacuterdova Titanium y NativeScript obtuvieron las peores mediciones entre

las tecnologiacuteas utilizadas No ocurrioacute lo mismo con las aplicaciones web en iOS que

tambieacuten produjeron buenos resultados en relacioacuten al resto

Capiacutetulo 4 Experimentacioacuten

70

En liacuteneas generales independientemente del sistema operativo las aplicaciones

web han mostrado un buen rendimiento si se consideran todos los casos analizados

Actualmente al desarrollar un sistema de software existe la posibilidad de generar

su versioacuten para dispositivos moacuteviles Esta tarea muchas veces no es simple y una de las

decisiones maacutes importantes a tomar es elegir el enfoque de desarrollo

A partir de este trabajo se dispone de un indicador de rendimiento que puede ser

uacutetil para el Ingeniero de Software que debe seleccionar un enfoque de desarrollo de

software para dispositivos moacuteviles

Por otra parte no se han encontrado trabajos de otros autores donde se haya

analizado el rendimiento en todos los enfoques de desarrollo de software para dispositivos

moacuteviles Este tema tal como se indicoacute en la introduccioacuten es importante para la

comunidad de Ingenieriacutea de Software y los trabajos analizados hasta el momento se han

concentrado solo en los enfoques nativos yo hiacutebridos

43 Anaacutelisis comparativo de enfoques de Desarrollo de Aplicaciones Moacuteviles

Como se estudioacute en las secciones anteriores existen diferentes enfoques de

desarrollo de aplicaciones moacuteviles

Una opcioacuten es desarrollar aplicaciones moacuteviles nativas las cuales hacen uso de

todas las capacidades del dispositivo moacutevil y permiten una alta experiencia de usuario

debido a que las interfaces de usuario se componen por componentes nativos resultando

semejantes al resto de las interfaces del sistema operativo No obstante el desarrollo no

puede ser reutilizado para dar soporte a otras familias de sistemas operativos implicando

mayores costos de desarrollo y mantenimiento

En contraposicioacuten al desarrollo nativo surgioacute el desarrollo multiplataforma dando

la posibilidad de desarrollar un uacutenico producto y ejecutarlo en diferentes plataformas En

este sentido se estudiaron diferentes enfoques desarrollo web moacutevil hiacutebrido

interpretado y generado por compilacioacuten cruzada Cada uno de estos enfoques cuenta con

ciertas caracteriacutesticas que naturalmente los hacen diferenciar con ventajas y

desventajas

Se identificaron diversos factores que pueden ser utilizados para analizar las

Capiacutetulo 4 Experimentacioacuten

71

aplicaciones que se generan mediante los enfoques de desarrollo nativo y

multiplataforma los cuales se detallan a continuacioacuten

Experiencia de usuario conjunto de factores y elementos que hacen referencia

al nivel de satisfaccioacuten total de los usuarios cuando utilizan un producto o sistema

El resultado es la generacioacuten de una percepcioacuten positiva o negativa de dicho

servicio producto o dispositivo

Plataformas alcanzadas se ha visto en capiacutetulos anteriores que existen distintas

familias de sistemas operativos Seguacuten el modo de desarrollo elegido se puede

desarrollar aplicaciones para una plataforma especiacutefica o por varias

Costo del desarrollo el desarrollo puede ser maacutes o menos costoso seguacuten si

requiere codificar las soluciones de forma especiacutefica para cada sistema operativo

o si es posible la reutilizacioacuten de coacutedigo

Costo del mantenimiento la correccioacuten de errores o agregados de nuevas

funcionalidades puede requerir codificar de forma especiacutefica para cada sistema

operativo Ademaacutes se debe tener en cuenta si deben convivir diferentes versiones

del mismo producto

Entorno de desarrollo integrado Software que asiste al programador en la

construccioacuten de aplicaciones

Interfaces de usuario factor que analiza los tipos de componentes utilizados para

construir las interfaces de usuario Como se mencionoacute al analizar los distintos

enfoques de desarrollo la eleccioacuten de la herramienta a utilizar incide en si las

interfaces estaraacuten compuestas mediante componentes nativos o componentes web

los cuales pueden ser decorados para simular componentes nativos

Acceso total al dispositivo posibilidad de acceder mediante las herramientas de

desarrollo a todas las capacidades del dispositivo como la caacutemara sensores entre

otros

Modo de instalacioacuten se refiere a si la aplicacioacuten puede ser instalada desde las

tiendas de aplicaciones o es accesible sin instalacioacuten desde un navegador de

Internet

Rendimiento factor que analiza la ejecucioacuten de tareas y los tiempos asociados

Capiacutetulo 4 Experimentacioacuten

72

en su resolucioacuten

Uso offline capacidad que tiene la aplicacioacuten de funcionar sin estar conectada a

internet

Distribucioacuten a traveacutes de las tiendas posibilidad de descargar la aplicacioacuten desde

las tiendas de aplicaciones

Categoriacuteas de aplicaciones a desarrollar tipo de aplicacioacuten que se desea

desarrollar

Porcentaje de coacutedigo a reutilizar Cantidad de liacuteneas de coacutedigo con respecto al

total que pueden ser reutilizadas para en la generacioacuten de aplicaciones

multiplataforma

Con el objetivo de estudiar coacutemo se comportan e inciden estos factores en los

distintos enfoques de desarrollo se realizoacute un estudio comparativo de los diferentes

criterios a tener en cuenta Dicho estudio se sintetiza en la Tabla 5

Capiacutetulo 4 Experimentacioacuten

73

Factor a analizar Desarrollo Nativo Desarrollo Web Desarrollo Hiacutebrido Desarrollo

Interpretado

Desarrollo Generado

por Compilacioacuten

Cruzada

Experiencia de Usuario

Alta Muy Baja Baja Alta Alta

Plataformas alcanzadas

Se desarrolla

exclusivamente

para una

plataforma destino

Cualquier

plataforma Se

necesita solo un

navegador y acceso a

internet

Es posible compilar

para Android iOS

Windows Phone

Es posible compilar

para Android iOS

Windows Phone

Es posible compilar

para Android iOS

Windows Phone

Costo del desarrollo

Muy Alto Muy Bajo Bajo Medio Medio a Alto

Costo del mantenimiento

Muy Alto Muy Bajo Medio Alto Alto a Muy Alto

Entorno de desarrollo integrado

IDE uacutenico por SO Muacuteltiples opciones Plugins para IDE

geneacutericos

Algunos frameworks

disponen de IDE

especiacutefico

IDE uacutenico por

framework

Interfaces de usuario

Nativas Web Web Nativas Nativas

Acceso total al dispositivo

Si No Si Si Si

Modo de instalacioacuten

Descargar desde la Sin instalaciones Descargar desde la Descargar desde la Descargar desde la

Capiacutetulo 4 Experimentacioacuten

74

Factor a analizar Desarrollo Nativo Desarrollo Web Desarrollo Hiacutebrido Desarrollo

Interpretado

Desarrollo Generado

por Compilacioacuten

Cruzada

tienda de

aplicaciones e

instalar

tienda de aplicaciones

e instalar

tienda de aplicaciones e

instalar

tienda de aplicaciones e

instalar

Rendimiento Muy Alto Muy Bajo Bajo a Medio Alto Medio a Alto

Uso offline Si No Si Si Si

Distribucioacuten a traveacutes de las tiendas

Si No Si Si Si

Categoriacutea de aplicaciones a desarrollar

Aplicaciones que

demandan muchos

recursos o que

requiere una alta

experiencia de

usuario

Sitios web existentes Sitios web

encapsulados como

aplicacioacuten para ser

distribuidas a traveacutes

de tiendas

Aplicaciones simples a

complejas

Aplicaciones simples a

complejas

Porcentaje de Coacutedigo a reutilizar

0 100 Cerca del 100 Cerca del 90 Entre el 60 y 85

Tabla 5 Anaacutelisis comparativo de enfoques de desarrollo de aplicaciones moacuteviles

Capiacutetulo 5 Conclusiones

75

Capiacutetulo 5 Conclusiones

Inicialmente los dispositivos moacuteviles fueron pensados y disentildeados con un propoacutesito

particular A traveacutes de los antildeos el crecimiento tecnoloacutegico ha permitido incorporar

funcionalidades adicionales lo que ha posibilitado expandir el marco de uso

Actualmente el poder de coacutemputo subyacente en una gran variedad de dispositivos

moacuteviles ha generado nuevas posibilidades lo que constituye un reto para los ingenieros

de software

Asimismo y tal como se mencionoacute en capiacutetulos anteriores existen diversos

sistemas operativos para dispositivos moacuteviles siendo los maacutes populares Android iOS y

Windows Phone Debido a que el eacutexito de un producto de software estaacute vinculado en

gran parte a su uso masivo surge la necesidad de desarrollar aplicaciones moacuteviles

teniendo en cuenta cada una de estas plataformas

El desarrollo de software para dispositivos moacuteviles tiene caracteriacutesticas propias que

difieren del desarrollo tradicional Esta actividad reciente impensada deacutecadas atraacutes

marca un antes y un despueacutes en la evolucioacuten de la Ingenieriacutea de Software Es de esperar

que dicha evolucioacuten continuacutee y por consiguiente que los enfoques de desarrollo para

dispositivos moacuteviles cambien o sean reemplazados por otros Es claro que por el

momento existen cinco posibilidades de desarrollo de una misma aplicacioacuten moacutevil

Aplicaciones nativas

Aplicaciones web

Aplicaciones hiacutebridas

Aplicaciones interpretadas

Aplicaciones generadas por compilacioacuten cruzada

Para un completo anaacutelisis de cada enfoque de desarrollo es que se disentildearon una

serie de casos de estudio El primero de ellos consistioacute en desarrollar una aplicacioacuten moacutevil

para cada enfoque de desarrollo presentado Teniendo este primer objetivo definido se

decidioacute extender el entorno virtual de ensentildeanza y aprendizaje WebUNLP a traveacutes de

una aplicacioacuten moacutevil enfocada en la cartelera de novedades de los cursos La aplicacioacuten

Capiacutetulo 5 Conclusiones

76

moacutevil debiacutea permitir el ingreso de alumnos y docentes con las mismas credenciales que

las utilizadas en la versioacuten web y debiacutea mostrar informacioacuten sincronizada con la web

sobre las novedades publicadas en las carteleras de los cursos Asimismo cuando los

docentes publiquen novedades aquellos alumnos pertenecientes al curso deben recibir

una notificacioacuten en su dispositivo moacutevil

Luego de desarrollar las aplicaciones moacuteviles para cada enfoque de desarrollo se

pueden elaborar algunas conclusiones

Se destaca la simpleza a la hora de generar la versioacuten web moacutevil pero se observan

limitaciones al no poder acceder a todas las capacidades de hardware del dispositivo

El desarrollo de las aplicaciones nativas resultoacute oacuteptimo si se lo compara con los

requerimientos oportunamente planteados con la desventaja de que las aplicaciones no

son portables implicando desarrollos especiacuteficos para cada plataforma que se desee

cubrir Por otro lado el desarrollo de las aplicaciones hibridas ndashutilizando PhoneGap y

Sencha- lograron conjugar la simpleza del desarrollo web con el uso de todas las

capacidades del dispositivo posicionaacutendolo como una eleccioacuten realmente interesante De

igual manera la aplicacioacuten interpretada desarrollada mediante Titanium logroacute resolver

todos los requerimientos previamente planteados se destaca que el desarrollo fue

relativamente simple y es posible reutilizar todo el coacutedigo entre plataformas El hecho de

obtener interfaces totalmente nativas la posiciona como la alternativa ideal Por uacuteltimo

las aplicaciones generadas con el enfoque de compilacioacuten cruzada (Delphi y Xamarin)

lograron cumplir los requerimientos planteados la obtencioacuten de interfaces totalmente

nativas es algo a destacar pero conlleva un alto costo ya que se debe disentildear las interfaces

para cada plataforma de manera independiente

El segundo experimento del presente trabajo consistioacute en analizar el rendimiento

de las aplicaciones generadas mediante cada enfoque de desarrollo En total se

desarrollaron mediante distintas tecnologiacuteas nueve aplicaciones Las pruebas se

realizaron en los dos sistemas operativos de mayor relevancia Android e iOS a traveacutes de

seis dispositivos (cuatro smartphones y dos tablets)

En todos los dispositivos con sistema operativo Android el peor rendimiento se

encontroacute en la aplicacioacuten generada por Corona seguido por el enfoque nativo y Xamarin

En cambio estas tecnologiacuteas se mostraron siempre entre las cuatro mejores sobre el

sistema operativo iOS

Capiacutetulo 5 Conclusiones

77

Respecto al mejor rendimiento en los dispositivos Android no es posible identificar

claramente cuaacutel es el enfoque maacutes conveniente Tanto las aplicaciones web como

Coacuterdova NativeScript y Titanium obtuvieron buenos resultados de rendimiento en

relacioacuten al resto Nuevamente esta situacioacuten se contrapone con los datos obtenidos sobre

los dispositivos iOS en los que Coacuterdova Titanium y NativeScript obtuvieron las peores

mediciones entre las tecnologiacuteas utilizadas No ocurrioacute lo mismo con las aplicaciones web

en iOS que tambieacuten produjeron buenos resultados en relacioacuten al resto

En liacuteneas generales independientemente del sistema operativo las aplicaciones

web han mostrado un buen rendimiento si se consideran todos los casos analizados

Por uacuteltimo se elaboroacute un anaacutelisis comparativo de las caracteriacutesticas inherentes a

cada enfoque de desarrollo Se identificaron ciertos factores de intereacutes que la comunidad

de ingenieriacutea de software considera al elegir queacute tecnologiacutea utilizar y se analizoacute su

impacto en cada enfoque de desarrollo

Capiacutetulo 6 Trabajo Futuro

78

Capiacutetulo 6 Trabajo Futuro

Si bien se estudiaron en el presente trabajo diversas tecnologiacuteas para el desarrollo

de aplicaciones moacuteviles se planea profundizar el estudio analizando otras herramientas

multiplataforma disponibles en el mercado como Ionic [32] NativeScript [38] Applause

[40] React Native [67] entre otras

Ademaacutes se plantea como liacutenea de trabajo futuro ampliar el anaacutelisis comparativo de

rendimiento incluyendo otros aspectos del desarrollo para dispositivos moacuteviles como

por ejemplo el acceso a disco el consumo de bateriacutea y el tiempo de renderizacioacuten de

imaacutegenes

Por uacuteltimo es deseable estudiar la experiencia de usuario en las aplicaciones

generadas por cada enfoque de desarrollo de aplicaciones para dispositivos moacuteviles

Capiacutetulo 6 Trabajo Futuro

79

Bibliografiacutea

80

Bibliografiacutea

[1] A Talukder H Ahmed and R Yavagal Mobile Computing Technology Applications and Service Creation Tata McGraw-Hill Ed 2010

[2] Abrahamsson P et al Mobile-D An Agile Approach for Mobile Application Development in In Companion To the 19th Annual ACM SIGPLAN Conference on Object-Oriented Programming Systems Languages and Applications (OOPSLA 04 ) Vancouver Canada 2004 pp 174-175

[3] P Abrahamsson Mobile software development - the business opportunity of today in Proceedings of the International Conference on Software Development Reykjavik 2005

[4] I S Hayes Just Enough Wireless Computing Prentice Hall Professional Technical 2002

[5] Stelios Xinogalos Spyros Xanthopoulos A Comparative Analysis of Cross-platform Development Approaches for Mobile Applications in Proceedings of the 6th Balkan Conference in Informatics Thessaloniki Greece 2013 pp 213-220

[6] Tolety SB Raj R A study on approaches to build cross-platform mobile applications and criteria to select appropriate approach in India Conference (INDICON) 2012 Annual IEEE India 2012

[7] Yonathan Aklilu Redda Cross platform Mobile Applications Development in Master in Information Systems Norwegian University of Science and Technology Norway 2012

[8] Datta SK Bonnet C Nikaein N Dalmasso I Survey comparison and evaluation of cross platform mobile application development tools in Wireless Communications and Mobile Computing Conference (IWCMC) Cagliari Sardinia Italia 2013

[9] Lisandro Deliacutea Nicolaacutes Galdaacutemez Pablo Thomas and Patricia Pesado An Experimental Analysis of Application Types for Mobile Devices in Computer Science amp Technology Series - XIX Argentine Congress of Computer Science - Selected Papers Editorial de la Universidad de La Plata 2014 pp 173 -183

[10] Lisandro Deliacutea Nicolaacutes Galdamez Pablo Thomas Leonardo Corbalaacuten and Patricia Pesado Multi-Platform Mobile Application Development Analysis in IEEE Ninth International Conference on Research Challenges in Information Science - IEEE RCIS Atenas Grecia May 2015

[11] Telam [Online] httpwwwtelamcomarnotas201504102073-telefonia-movil-lineas-activashtml

Bibliografiacutea

81

[12] RTVE [Online] httpwwwrtveesnoticias20110212evolucion-del-telefono-movil-del-zapatofono-smartphones404523shtml

[13] Vodafone [Online] httpblogvodafonecouk20130829vodafone-uks-ceo-guy-laurence-4g-finally-has-a-purpose

[14] Muy Canal [Online] httpwwwmuycanalcom20140131futuro-del-telefono-movil

[15] Statcounter [Online] httpgsstatcountercom

[16] Anthony I Wasserman Software Engineering Issues for Mobile Application Development 2010

[17] Statista [Online] httpwwwstatistacom

[18] Lisandro Deliacutea Nicolaacutes Galdamez Pablo Thomas Leonardo Corbalaacuten and Patricia Pesado Anaacutelisis Experimental de desarrollo de Aplicaciones Moacuteviles Multiplataforma in XX Congreso Argentino de Ciencias de la Computacioacuten CACIC 2014 San Justo Argentina octubre 2014

[19] Lisandro Deliacutea Nicolaacutes Galdamez Pablo Thomas and Patricia Pesado Un Anaacutelisis Experimental de Tipo de Aplicaciones para Dispositivos Moacuteviles in XIX Congreso Argentino de Ciencias de la Computacioacuten CACIC 2013 Mar del Plata Argentina 2013

[20] Abhinay Puvvala Amitava Dutta Rahul Roy and Priya Seetharaman Mobile Application Developersrsquo Platform Choice Model in 2016 49th Hawaii International Conference on System Sciences (HICSS) Koloa Hawaii 2016

[21] Android Dashboard [Online] httpsdeveloperandroidcomaboutdashboardsindexhtml

[22] Xcode [Online] httpsdeveloperapplecomxcode

[23] KW Tracy Mobile Application Development Experiences on Applersquos iOS and

Android OS Potentials IEEE vol 31 no 4 July-Aug 2012

[24] Google Recommendations for building smartphone-optimized websites [Online] httpgooglewebmastercentralblogspotcomar

[25] Bootstrap [Online] httpgetbootstrapcom

[26] Foundation [Online] httpfoundationzurbcom

[27] PhoneGap [Online] httpphonegapcom

[28] Apache Cordova [Online] httpscordovaapacheorg

Bibliografiacutea

82

[29] Adobe PhoneGap Build [Online] httpsbuildphonegapcom

[30] CocoonJS [Online] httpscocoonio

[31] Ludei [Online] httpswwwludeicom

[32] Ionic [Online] httpionicframeworkcom

[33] Sencha [Online] httpswwwsenchacomproductstouchoverview

[34] A Kosmaczewski Sencha Touch 2 Up and Running OrsquoReilly 2013

[35] Appcelerator Titanium [Online] httpwwwappceleratorcomproduct

[36] Backbone [Online] httpbackbonejsorg

[37] Underscorejs [Online] httpunderscorejsorg

[38] NativeScript [Online] httpswwwnativescriptorg

[39] TypeScript [Online] httpswwwtypescriptlangorg

[40] applause [Online] httpwwwapplausecom

[41] Xamarin [Online] wwwxamarincom

[42] Delphi [Online] httpswwwembarcaderocomproductsdelphi

[43] RubyMotion [Online] httpwwwrubymotioncom

[44] Xtext [Online] httpwwweclipseorgXtext

[45] Mono [Online] httpwwwmono-projectcom

[46] [Online] httpswebunlpeadunlpeduar

[47] I Salmre Writing Mobile Code Essential Software Engineering for Building Mobile Applications Addison Wesley Professional 2005

[48] Mapbox [Online] httpswwwmapboxcomlabstwitter-gnipbrands

[49] Ruby S Richardson L RESTful Web Services OrsquoReilly Media 2007

[50] Matthew J Hamm Wireframing Essentials Packt Publishing 2014

[51] GCM [Online] httpsdevelopersgooglecomcloud-messaging

[52] iOS Human Interface Guidelines [Online] httpsdeveloperapplecomioshuman-interface-guidelinesoverviewdesign-principles

[53] APN [Online] httpdeveloperapplecomlibrarymacdocumentationNetworkingInternetConceptual

Bibliografiacutea

83

RemoteNotificationsPGChaptersApplePushServicehtmlapple_refdocuidTP40008194-CH100-SW9

[54] Mark Norm Norman Francis Christian Heilmann Web Development Solutions Ajax APIs Libraries and Hosted Services Made Easy Apress 2007

[55] JqueryMobile [Online] httpsjquerymobilecom

[56] Pushwoosh [Online] httpsgithubcomPushwooshpushwoosh-phonegap-plugin

[57] J Clark Creating Mobile Apps with Sencha Touch 2 Packt Publishing 2013

[58] Kinvey [Online] httpwwwkinveycom

[59] Ali Mesbah Philippe Kruchten Mona Erfani Joorabchi Real Challenges in Mobile App Development in ACM IEEE International Symposium on Empirical Software Engineering and Measurement Baltimore Maryland US 2013

[60] Andreacute Nitze Andreas Schmietendorf Florian Roumlsler Towards a Mobile Application Performance Benchmark in ICIW 2014 The Ninth International Conference on Internet and Web Applications and Services Paris France 2014

[61] Sebastian Hanschke and Tim A Majchrzak Henning Heitkoumltter Comparing Cross Platform Development approaches For Mobile Applications in 8th International Conference on Web Information Systems and Technologies (WEBIST) Porto Portugal 2012

[62] HW Kim SG Chung CS Jung Measuring Software Quality A Survey of ISOIEC 9126 IEEE Software vol 21 no 5 pp 88 ndash 92 SeptemberOctober 2004

[63] Luis Corral Anton B Georgiev Alberto Sillitti and Giancarlo Succi Can execution time describe accurately the energy consumption of mobile apps An experiment in Android GREENS 2014 Proceedings of the 3rd International Workshop on Green and Sustainable Software pp 31-37 June 2014

[64] Brian Leroux Andre Charland Mobile application development web vs native Magazine Communications of the ACM vol 54 no 5 pp 49-53 May 2011

[65] Luis Corral Alberto Sillitti and Giancarlo Succi Mobile multiplatform development An experiment for performance analysis in The 9th International Conference on Mobile Web Information Systems (MobiWIS) Ontario Canada 2012

[66] Repositorio Git III-LIDI [Online] httpsgitlabcomiii-lidiperformance-assessment-multiplatform-mobile-applicationstreemaster

[67] React Native [Online] httpsfacebookgithubioreact-native

[68] Lisandro Galdaacutemez Nicolaacutes Corbalaacuten Leonardo Thomas Pablo Pesado Patricia Deliacutea Un anaacutelisis comparativo de rendimiento en aplicaciones moacuteviles

Bibliografiacutea

84

multiplataforma in XXI Congreso Argentino de Ciencias de la Computacioacuten Juniacuten 2015

Page 3: Desarrollo de Aplicaciones Móviles Multiplataforma

3

Iacutendice de Contenidos Objetivo 6

Prefacio 7

Trabajos publicados 8

Organizacioacuten del trabajo 8

Capiacutetulo 1 Tecnologiacutea Moacutevil 10

11 Los inicios 10

12 Evolucioacuten de los protocolos para redes de comunicaciones 13

13 La actualidad 14

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas 17

21 Desarrollo de Aplicaciones Nativas en Android 19

211 Evolucioacuten 19

212 Proceso de Desarrollo 26

22 Desarrollo de Aplicaciones Nativas en iOS 28

221 Evolucioacuten 28

222 Proceso de desarrollo 30

23 Desarrollo de Aplicaciones Nativas en Windows Phone 32

231 Evolucioacuten 32

232 Proceso de desarrollo 33

24 Diferencias teacutecnicas entre Android iOS y Windows Phone 34

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma 37

31 Aplicaciones Web Moacuteviles 38

311 Aplicacioacuten Web dedicada y exclusiva para dispositivos moacuteviles 39

312 Aplicacioacuten Web con Disentildeo Adaptable 39

32 Aplicaciones Hiacutebridas 40

321 PhoneGap 41

322 CocoonJS 42

323 Ionic 43

324 Sencha Touch 43

33 Aplicaciones Interpretadas 43

331 Appcelerator Titanium 44

332 NativeScript 44

34 Aplicaciones Generadas por Compilacioacuten Cruzada 45

4

341 Xamarin 46

342 Embarcadero Delphi 10 Seattle 47

343 RubyMotion 48

Capiacutetulo 4 Experimentacioacuten 50

41 Aplicacioacuten Moacutevil para la plataforma de E-Learning WebUNLP 50

411 Descripcioacuten del problema 50

412 Anaacutelisis 51

413 Disentildeo 51

414 Desarrollo 53

4141 Aplicacioacuten Nativa para Android 53

4142 Aplicacioacuten Nativa para iOS 54

4143 Aplicacioacuten Web Moacutevil 54

4144 Aplicacioacuten Hiacutebrida desarrollada con PhoneGap y Jquery Mobile 55

4145 Aplicacioacuten Hiacutebrida desarrollada con Sencha Touch 56

4146 Aplicacioacuten Interpretada de WebUNLP con Appcelerator Titanium 3 56

4147 Aplicacioacuten Generada por Compilacioacuten Cruzada de WebUNLP utilizando XamarinVisual Studio 57

4148 Aplicacioacuten Generada por Compilacioacuten Cruzada de WebUNLP utilizando Delphi 10 Seattle 58

415 Conclusiones del experimento WebUNLP 58

42 Enfoques de desarrollo Anaacutelisis comparativo de rendimiento 60

421 Descripcioacuten del Problema 60

422 Desarrollo 62

4221 Disentildeo de las pruebas 62

4222 Recoleccioacuten de datos 65

423 Resultados Obtenidos 66

424 Anaacutelisis de Resultados 67

425 Conclusiones 69

43 Anaacutelisis comparativo de enfoques de Desarrollo de Aplicaciones Moacuteviles 70

Capiacutetulo 5 Conclusiones 75

Capiacutetulo 6 Trabajo Futuro 78

Bibliografiacutea 80

5

Iacutendice de Figuras

Figura 1 Mobile Telephone System A (MTA) 11 Figura 2 Martin Cooper el autor de la primer llamada moacutevil 12 Figura 3 Evolucioacuten de los protocolos para redes de comunicacioacuten moacuteviles 14 Figura 4 Comparacioacuten entre plataformas [15] 15 Figura 5- Utilizacioacuten de Sistemas Operativos Moacuteviles en el mundo 18 Figura 6- Utilizacioacuten de Sistemas Operativos Moacuteviles en Argentina 19 Figura 7 Entorno de desarrollo Android Studio 27 Figura 8 Distribucioacuten de versiones de Android - Diciembre 2016 28 Figura 9 Entorno de desarrollo Xcode 31 Figura 10 Distribucioacuten de versiones de iOS - Noviembre 2016 31 Figura 11 Entorno de desarrollo Visual Studio 34 Figura 12 Disentildeo Adaptable 40 Figura 13 Funcionamiento de Apache Cordova 42 Figura 14 Proceso de interpretacioacuten mediante NativeScript 45 Figura 15 Entorno de Desarrollo Xamarin Studio 47 Figura 16 Entorno de Desarrollo Delphi 10 Seattle 48 Figura 17 Arquitectura geneacuterica para aplicacioacuten nativa e hiacutebrida 52 Figura 18 Mockup independiente del tipo de aplicacioacuten 53 Figura 19 Aplicacioacuten nativa para Android 53 Figura 20 Aplicacioacuten nativa para iOS 54 Figura 21 Aplicacioacuten hiacutebrida desarrollada con PhoneGap 55 Figura 22 Aplicacioacuten desarrollada con Sencha Touch 56 Figura 23 Enfoque uacutenico de desarrollo Xamarin 57 Figura 24 Aplicacioacuten desarrollada con a) Titanium b) XamarinVisual Studio y c) Delphi XE 58 Figura 25 Caacutelculo de serie coacutedigo multiplataforma desarrollado en Apache Cordova 65 Figura 26 Diagrama de barras con las muestras recolectadas (las barras muestran el tiempo promedio expresado en milisegundos) 67

6

Objetivo

Existen diversos enfoques para desarrollar aplicaciones moacuteviles multiplataforma

A partir de ello el objetivo de este trabajo final consiste en elaborar un anaacutelisis

comparativo sobre los enfoques predominantes y realizar experimentos con el desarrollo

de aplicaciones moacuteviles especiacuteficas para cada elemento analizado

Los objetivos especiacuteficos de este trabajo son

a) Realizar un anaacutelisis comparativo entre los enfoques de desarrollo de aplicaciones

moacuteviles multiplataforma

b) Llevar a cabo el desarrollo de una aplicacioacuten moacutevil concreta en cada enfoque de

desarrollo multiplataforma Analizar ventajas y desventajas de los enfoques seguacuten

el experimento

c) Analizar la performance de las aplicaciones que se generan con cada enfoque de

desarrollo multiplataforma

d) Estudiar los impactos que se producen en el proceso de desarrollo de software

seguacuten el enfoque a utilizar

Prefacio

7

Prefacio

La computacioacuten moacutevil se puede definir como un entorno de coacutemputo con movilidad

fiacutesica El usuario de un entorno de computacioacuten moacutevil seraacute capaz de acceder a datos

informacioacuten u otros objetos loacutegicos desde cualquier dispositivo en cualquier red mientras

estaacute en movimiento [1]

Estos dispositivos tienen caracteriacutesticas fiacutesicas distintivas entre las cuales se

destacan su tamantildeo peso tamantildeo de pantalla su mecanismo de ingreso de datos y su

capacidad de expansioacuten Ademaacutes tienen un rol esencial los aspectos teacutecnicos incluyendo

el poder de procesamiento espacio de memoria autonomiacutea de bateriacutea sistema operativo

entre otros

El desarrollo de software para dispositivos moacuteviles plantea nuevos desafiacuteos

originados en las caracteriacutesticas uacutenicas de esta actividad La necesidad de tratar con

diversas plataformas estaacutendares protocolos y tecnologiacuteas de red las capacidades

limitadas aunque en continua evolucioacuten de los dispositivos y las exigencias de tiempo

del mercado son soacutelo algunos de los problemas a tratar [2]

Las aplicaciones moacuteviles son generadas en un entorno dinaacutemico e incierto

Generalmente son pequentildeas no criacuteticas aunque no menos importantes Estaacuten destinadas

a un gran nuacutemero de usuarios finales y son liberadas en versiones raacutepidas para poder

satisfacer las demandas del mercado [3]

Por todo lo expuesto el desarrollo de software para dispositivos moacuteviles difiere

considerablemente del tradicional [4] y acompantildea el crecimiento y evolucioacuten de la

Ingenieriacutea de Software como disciplina

Para maximizar su presencia en el mercado un producto de software debe

ejecutarse en la mayor cantidad de dispositivos posible Una solucioacuten consiste en el

desarrollo nativo de la aplicacioacuten en cada una de las plataformas existentes utilizando el

entorno de desarrollo integrado (IDE por sus siglas en ingleacutes) el lenguaje y las

herramientas propias de cada plataforma [5] Sin embargo al no ser posible la

reutilizacioacuten de coacutedigo fuente entre diferentes plataformas el esfuerzo se multiplica y se

elevan los costos de desarrollo actualizacioacuten y distribucioacuten de nuevas versiones [6]

Prefacio

8

El desarrollo multiplataforma a diferencia del desarrollo nativo se centra en el

reuacuteso de coacutedigo La construccioacuten de aplicaciones web moacuteviles constituye un ejemplo que

representa este enfoque Sin embargo las limitaciones derivadas de su ejecucioacuten dentro

de un navegador ha motivado a los ingenieros de software a dirigir su atencioacuten hacia otro

tipo de aplicaciones multiplataforma con el que se obtienen resultados maacutes cercanos a las

soluciones nativas En este contexto existen diversas sub-clasificaciones [5] [7] [8] y es

de intereacutes analizar las caracteriacutesticas inherentes a cada una de ellas a traveacutes de la

construccioacuten de un prototipo experimental

Trabajos publicados

Los resultados parciales del presente trabajo dieron lugar al siguiente capiacutetulo de

libro

ldquoAn Experimental Analysis of Application Types for Mobile Devicesrdquo [9]

Lisandro Deliacutea Nicolaacutes Galdaacutemez Pablo Thomas Patricia Pesado

Computer Science amp Technology Series - XIX Argentine Congress of Computer

Science - Selected Papers Editorial de la Universidad de La Plata 2014 p173 -

183 ISBN 978-987-1985-49-4

Asiacute mismo se realizaron publicaciones en los siguientes eventos cientiacuteficos

ldquoMulti-Platform Mobile Application Development Analysisrdquo [10]

Lisandro Deliacutea Nicolaacutes Galdamez Pablo Thomas Leonardo Corbalaacuten Patricia

Pesado

IEEE Ninth International Conference on Research Challenges in Information

Science - IEEE RCIS

Atenas Grecia 13 al 15 de mayo de 2015

Forma de Publicacioacuten Proceedings - CD ROM

ISBN 978-1-4673-6630-4

Organizacioacuten del trabajo

Este trabajo se organiza de la siguiente manera

El capiacutetulo 1 resentildea la evolucioacuten de los dispositivos moacuteviles

Prefacio

9

En el capiacutetulo 2 se describen conceptos esenciales del desarrollo de aplicaciones

para dispositivos moacuteviles

En el capiacutetulo 3 se profundizan conceptos relacionados al desarrollo de

aplicaciones moacuteviles multiplataforma y se estudian diferentes metodologiacuteas y

herramientas

El capiacutetulo 4 contiene un conjunto de experimentos sobre desarrollos de

aplicaciones moacuteviles multiplataforma y el anaacutelisis de los resultados obtenidos

El capiacutetulo 5 presenta las conclusiones obtenidas y el capiacutetulo 6 los trabajos

futuros propuestos en relacioacuten al tema

Finalmente se detalla la bibliografiacutea utilizada en el presente trabajo

Capiacutetulo 1 Tecnologiacutea Moacutevil

10

Capiacutetulo 1 Tecnologiacutea Moacutevil

Hubo una eacutepoca en el que los teleacutefonos moacuteviles no teniacutean pantalla taacutectil ni

permitiacutean grabar viacutedeo ni siquiera podiacutean conectarse a Internet Tampoco podiacutean enviar

y recibir mensajes Simplemente permitiacutean la funcioacuten baacutesica de hablar por teleacutefono

Dos deacutecadas atraacutes los dispositivos moacuteviles eran aparatos de gran tamantildeo y pesados

Soacutelo algunas pocas personas podiacutean acceder a estos dispositivos ya que se consideraban

artiacuteculos de lujo Pero este escenario fue cambiando paulatinamente llevando a que el

celular se transforme en un elemento imprescindible en nuestras vidas En Argentina en

el antildeo 2003 habiacutea 4 millones de liacuteneas activas En la actualidad la cifra llega a 37 millones

de liacuteneas activas y 62 millones de liacuteneas declaradas [11]

11 Los inicios

La Segunda Guerra Mundial originoacute la necesidad de comunicarse a distancia por

lo que Motorola creoacute un equipo militar llamado Handie Talkie H12-16 para

comunicaciones viacutea ondas de radio

Su salto a los sistemas civiles sucedioacute a finales de la deacutecada de los 40 con sistemas

de radio analoacutegicos en frecuencias FM principalmente y con servicios en las bandas HF

y VHF ofrecidos por la americana Bell

En 1955 Ericsson comercializoacute el Mobile Telephone System A (MTA) Phone

(Figura 1) un teleacutefono que pesaba 40 kilogramos y que se instalaba en automoacuteviles

Como curiosidad tuvo un total de 125 usuarios hasta 1967

Capiacutetulo 1 Tecnologiacutea Moacutevil

11

Figura 1 Mobile Telephone System A (MTA)

La primera llamada moacutevil data del 3 de abril de 1973 cuando Martin Cooper

(Figura 2) en aquel entonces ingeniero electroacutenico de Motorola realizoacute una llamada

desde la calle en Nueva York La llamada fue realizada mediante un prototipo del

Motorola DynaTAC 8000x Considerado el primer moacutevil del mundo pesaba cerca de un

kilo y mediacutea 33x45x89 centiacutemetros su bateriacutea teniacutea uacutenicamente la autonomiacutea de una

hora en conversacioacuten necesitando diez horas para cargarse Su costo era de USD 4000

Capiacutetulo 1 Tecnologiacutea Moacutevil

12

Figura 2 Martin Cooper el autor de la primer llamada moacutevil

El verdadero conocimiento popular del teleacutefono moacutevil no llegoacute hasta la deacutecada de

los 90 con la segunda generacioacuten de estos dispositivos

La comunicacioacuten digital permitioacute mejorar la calidad de la escucha de voz la

reduccioacuten del tamantildeo y peso de los dispositivos utilizados y sobre todo el incremento de

compantildeiacuteas operadoras que dieron paso a un mercado maacutes competitivo y accesible

Los usuarios fueron testigos de avances sorprendentes como la identificacioacuten de

llamada o los mensajes de texto que constituyeron a una nueva forma de comunicacioacuten

Vertiginosamente el celular pasoacute de ser considerado una herramienta de trabajo a

generalizarse en todos los estratos de la sociedad

Seguacuten avanzaba la deacutecada del 90 los teleacutefonos moacuteviles iban adaptaacutendose a esas

novedades incorporando pantallas cada vez de mayor tamantildeo y en los maacutes avanzados

haciendo desaparecer la antena que era necesario desplegar para poder realizar una

comunicacioacuten en condiciones adecuadas

Poco a poco los dispositivos empezaron a integrar cada vez maacutes funciones aviso

por vibracioacuten juegos bluetooth infrarrojos politonos y ya con el cambio de siglo

pantallas a color y caacutemaras fotograacuteficas Maacutes adelante llegariacutea la grabacioacuten de viacutedeo el

acceso a Internet las pantallas taacutectiles entre otras [12]

Capiacutetulo 1 Tecnologiacutea Moacutevil

13

12 Evolucioacuten de los protocolos para redes de comunicaciones

Hubiera sido imposible el auge de los teleacutefonos moacuteviles sin la estandarizacioacuten

mejora y evolucioacuten de los protocolos para redes de comunicaciones y su soporte por las

operadoras Asiacute tras las primeras comunicaciones viacutea ondas de radio con banda de

frecuencias por debajo de los 600 kHz las posteriores en AM y FM los servicios de Bell

y Ericsson en los antildeos 50 y 60 llegoacute esa primera llamada de 1973 que popularizoacute todo el

sector

La primera generacioacuten 1G fue responsabilidad de Ericsson con el sistema Telefoniacutea

Moacutevil Noacuterdica (NMT) y seguiacutea utilizando canales analoacutegicos En 1986 la compantildeiacutea

modernizoacute el sistema funcionando a frecuencias superiores de 900 MHz posibilitando

servicio para un mayor nuacutemero de usuarios Ademaacutes del NMT en los 80 se desarrollaron

otros sistemas de telefoniacutea moacutevil como el Sistema Telefoacutenico Moacutevil Avanzado (AMP)

desarrollado por los laboratorios Bell

La segunda generacioacuten 2G llegoacute en la deacutecada de los 90 con sistemas como Global

System for Mobile Communications (GSM) Estaacutendar Interno 136 (IS-136) Red

Mejorada Digital Integrada (iDEN) y el Estaacutendar Interno 95 (IS-95) GSM fue el

desarrollo maacutes relevante ya que fue el estaacutendar europeo de telefoniacutea moacutevil digital En el

proyecto participaron 26 compantildeiacuteas europeas de telecomunicaciones y en 1992 se

pusieron en marcha las primeras redes europeas de GSM-900 y los primeros teleacutefonos

moacuteviles GSM Ademaacutes de Europa GSM ha terminado imponieacutendose tambieacuten en Asia

Ameacuterica Latina Oceaniacutea y una parte de Ameacuterica del Norte

La necesidad de mayores velocidades de transmisioacuten de datos y mayores

capacidades que permitieran nuevos servicios dieron paso a la Tercera Generacioacuten (3G)

no sin antes pasar por el 25G que proporcionoacute el General Packet Radio Service (GPRS)

El estaacutendar europeo es el Universal Mobile Telecommunications System (UMTS) basado

en la tecnologiacutea W-CDMA y estaacute gestionado por la organizacioacuten 3GPP tambieacuten

responsable de GSM GPRS y Enhanced Data Rates for GSM Evolution (EDGE)

La Cuarta Generacioacuten (4G) sucede a las tecnologiacuteas 2G y 3G y ofrece entre otras

mejoras mayor seguridad y Calidad de Servicio (QoS) junto a velocidades de acceso

muy superiores a las anteriores (mayores a 100 Mbits en movimiento y a 1 Gbits en

Capiacutetulo 1 Tecnologiacutea Moacutevil

14

reposo) Estaacute basada completamente en el protocolo IP siendo un sistema de sistemas y

una red de redes que se alcanza gracias a la convergencia entre las redes de cables e

inalaacutembricas Seguacuten Vodafone ldquoel 4G tiene finalmente una razoacuten y es el entretenimientordquo

[13] La norma Long Term Evolution (LTE) es la maacutes extendida aunque no la uacutenica

existente

5G seraacute la nueva revisioacuten del sistema de conexioacuten de red sin cables y se espera que

esteacute disponible en el antildeo 2020 (Figura 3) en paiacuteses como Corea del Sur como asiacute tambieacuten

en Europa Como 4G la mayor velocidad de transferencia seraacute su mayor avance con

velocidades de descarga de hasta 10 Gbps (125 GBs) [14]

Figura 3 Evolucioacuten de los protocolos para redes de comunicacioacuten moacuteviles

13 La actualidad

Muchas de las actividades que un tiempo atraacutes soliacutean hacerse desde una

computadora tales como revisar el correo electroacutenico escuchar muacutesica agendar una

nueva cita en el calendario compartir fotos en alguna red social entre muchiacutesimas otras

en nuestros diacuteas se llevan a cabo de forma natural desde los dispositivos moacuteviles La

Figura 4 muestra coacutemo los dispositivos moacuteviles les han ganado terreno a los equipos

Capiacutetulo 1 Tecnologiacutea Moacutevil

15

tradicionales denominados lsquode escritoriorsquo

Figura 4 Comparacioacuten entre plataformas [15]

En la actualidad existen cientos de modelos diferentes de dispositivos moacuteviles y

los fabricantes siguen innovando intentando destacarse sobre la competencia Hoy en diacutea

no nos sorprende encontrar dispositivos moacuteviles con procesadores quad-core de 22 Ghz

Incluso ya se comienzan a conocer prototipos de dispositivos con ocho o diez nuacutecleos

De la mano de los procesadores la memoria RAM de los dispositivos moacuteviles

tambieacuten ha crecido considerablemente llegando a comercializarse dispositivos con 3 GB

de memoria

La caacutemara de los dispositivos es otra de las capacidades que maacutes ha progresado

llegando a encontrarse sensores de 20 MP y la posibilidad de grabar videos en formato

UHD 4K (3840 x 2160)

El tamantildeo de las pantallas y sus resoluciones fueron otra de las caracteriacutesticas que

maacutes han evolucionado Es posible encontrar dispositivos con pantallas de 5 pulgadas con

posibilidad de visualizar 16 millones de colores y con resoluciones Quad HD (2560 x

1440)

La tecnologiacutea de las bateriacuteas es un aspecto en que no se ha logrado grandes avances

en el sector ni se pronostican grandes progresos a corto plazo Incluso la llegada de chips

Capiacutetulo 1 Tecnologiacutea Moacutevil

16

maacutes potentes mayores pantallas o el 4G disminuiraacuten auacuten maacutes la autonomiacutea de las bateriacuteas

El uacuteltimo aspecto a mencionar es el de las capacidades del dispositivo Ademaacutes de

los ya claacutesicos sensores Global Positioning System (GPS) la capacidad de conectividad

viacutea bluetooth infrarrojo y WIFI hoy surge una diversidad de opciones que pueden

disponer los teleacutefonos inteligentes

Por el lado de la conectividad cada vez es maacutes comuacuten encontrar terminales con

mecanismos de comunicacioacuten Near Field Communication (NFC) o WIFI Direct

Con respecto a los sensores actualmente existen dispositivos que cuentan con

aceleroacutemetros giroscopios y magnetoacutemetros los cuales brindan a los desarrolladores de

aplicaciones la posibilidad de controlar la posicioacuten del aparato la aceleracioacuten que sufre

el dispositivo con respecto a la fuerza de la gravedad etc Tambieacuten es comuacuten el uso de

sensores de proximidad por ejemplo para apagar la pantalla mientras se atiende una

llamada El sensor de luminosidad permite medir el brillo de la luz ambiental Asiacute el

software del teleacutefono utiliza estos datos para ajustar el brillo de la pantalla

automaacuteticamente hacieacutendola maacutes clara o maacutes oscura

Los uacuteltimos smartphones de gama alta tambieacuten son capaces de medir la presioacuten

atmosfeacuterica a traveacutes de un baroacutemetro Los datos que mide el dispositivo sirven para

determinar en queacute nivel por encima del mar se encuentra el teleacutefono lo que se traduce en

la mejora de la precisioacuten del GPS

Incluso ya existen dispositivos que cuentan con un sensor de humedad del aire el

cual permite controlar los niveles de humedad para por ejemplo ayudar a las personas

con problemas respiratorios

Como si todo esto fuese poco existen modelos con podoacutemetro -para medir con

precisioacuten los pasos que da el usuario- pulsoacutemetro -para medir las pulsaciones a traveacutes de

los vasos sanguiacuteneos de los dedos- y hasta sensor de huellas digitales para cuestiones

relativas a la seguridad

Por lo anteriormente dicho los desarrolladores de aplicaciones para dispositivos

moacuteviles de la actualidad tienen el desafiacuteo de poder manipular desde sus aplicaciones

todas las posibilidades descriptas

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

17

Capiacutetulo 2 Desarrollo de

Aplicaciones Moacuteviles Nativas

Si bien el desarrollo de aplicaciones para dispositivos moacuteviles se remonta por lo

menos a 10 antildeos atraacutes ha habido un crecimiento exponencial desde que se abrioacute la tienda

de aplicaciones de iPhone en julio de 2008 Desde entonces los fabricantes de

dispositivos han creado tiendas de aplicaciones para otros dispositivos moacuteviles

incluyendo Android BlackBerry Nokia Ovi Windows Phone entre otros [16]

Actualmente el desarrollo de aplicaciones para dispositivos moacuteviles es un campo

en evolucioacuten con gran intereacutes econoacutemico y cientiacutefico Una prueba de esto es que para

Julio del 2014 se disponiacutean de maacutes de 3 millones de aplicaciones entre las principales

tiendas virtuales de aplicaciones Y solamente en el antildeo 2013 se contabilizaron 101

billones de descargas de aplicaciones moacuteviles en todo el mundo de las cuales 9 billones

fueron descargas pagas y 92 billones descargas gratuitas [17]

Con el actual creciente nuacutemero de plataformas moacuteviles desarrollar aplicaciones

moacuteviles se hizo muy difiacutecil para las empresas ya que necesitan desarrollar las mismas

aplicaciones para cada plataforma de destino

El desarrollo de aplicaciones nativas es la forma natural de implementar

aplicaciones moacuteviles Las aplicaciones nativas son concebidas para ejecutarse en una

plataforma especiacutefica es decir se debe considerar el tipo de dispositivo el sistema

operativo a utilizar y su versioacuten

Las aplicaciones nativas se desarrollan utilizando un entorno de desarrollo

integrado (IDE) que proporciona las herramientas de desarrollo necesarias para la

construccioacuten y depuracioacuten de aplicaciones El coacutedigo fuente se compila para obtener

coacutedigo ejecutable proceso similar que el utilizado para las tradicionales aplicaciones de

escritorio

Cuando la aplicacioacuten estaacute lista para ser distribuida debe ser transferida a las App

stores (tiendas de aplicaciones) especiacuteficas de cada sistema operativo Estas tiendas tienen

un proceso de auditoriacutea para evaluar si la aplicacioacuten se adecuacutea a los requerimientos de la

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

18

plataforma a operar Cumplido este paso la aplicacioacuten se pone a disposicioacuten de los

usuarios

La principal ventaja de este tipo de aplicaciones es la posibilidad de interactuar con

todas las capacidades del dispositivo (caacutemara GPS aceleroacutemetro agenda entre otras)

Ademaacutes no es estrictamente necesario poseer acceso a internet Su ejecucioacuten es raacutepida

puede ejecutarse en modo background y notificar al usuario cuando ocurra un evento que

necesite su atencioacuten

Claramente estas ventajas tienen como contrapartida un mayor costo de desarrollo

pues se debe utilizar un lenguaje de programacioacuten diferente seguacuten la plataforma Por ende

si se desea cubrir varias plataformas se deberaacute generar una aplicacioacuten para cada una de

ellas Esto conlleva a mayores costos de desarrollo actualizacioacuten y distribucioacuten de nuevas

versiones [9] [18] [19]

En la actualidad hay una gran cantidad de sistemas operativos para dispositivos

moacuteviles La Figura 5 muestra la utilizacioacuten de los sistemas operativos en los uacuteltimos antildeos

en todo el mundo mientras que la Figura 6 muestra la misma comparativa en Argentina

En ambos casos el ranking es liderado por Android seguido por iOS y en tercer lugar

Windows Phone [20]

Figura 5- Utilizacioacuten de Sistemas Operativos Moacuteviles en el mundo

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

19

Figura 6- Utilizacioacuten de Sistemas Operativos Moacuteviles en Argentina

A continuacioacuten se analizaraacute coacutemo es el proceso de desarrollo de aplicaciones

moacuteviles nativas en los sistemas operativos maacutes relevantes de la actualidad y luego en la

Tabla 1 se compararaacuten aspectos teacutecnicos de estas plataformas

21 Desarrollo de Aplicaciones Nativas en Android

Android es el sistema operativo maacutes utilizado en la actualidad Puede ser utilizado

en teleacutefonos inteligentes tablets relojes inteligentes televisores y automoacuteviles

Estaacute basado en Linux y es respaldado por Google

211 Evolucioacuten Inicialmente el desarrollo de Android era llevado a cabo por la empresa Android

Inc la cual fue fundada en el antildeo 2003 y recibiacutea respaldo econoacutemico por parte de Google

Antildeos maacutes tarde maacutes precisamente en Julio del 2005 Google adquiere Android y da lugar

a la primer versioacuten del sistema operativo en el antildeo 2007 Android 10 Apple Pie1

desarrollado sobre el kernel de Linux 26 En su presentacioacuten se hizo hincapieacute en que era

un sistema operativo para dispositivos moacuteviles totalmente gratuito y open source a

1 Desde la salida de la primera versioacuten del sistema operativo hasta el presente Google ha seguido la tradicioacuten de ponerle un nombre de postre a cada una de sus versiones siguiendo un orden alfabeacutetico

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

20

diferencia de iOS

La primera versioacuten comercial teniacutea mucho margen de mejora y apenas inquietoacute a la

competencia pero ya introduciacutea algunos conceptos que antildeos despueacutes son un estaacutendar de

los sistemas operativos moacuteviles

Menuacute desplegable de notificaciones

Widgets de escritorio

Android Market la tienda de apps (no contaba con ninguacuten sistema de pago para

usuarios Todo el cataacutelogo era gratuito)

Integracioacuten con Google Mail Contacts y Calendar

Navegador Maps Google Talk reproductor de YouTube y soporte para caacutemaras

En febrero del 2009 apenas 3 meses despueacutes del lanzamiento de Android 10 Apple

Pie llega la primera actualizacioacuten Android 11 Banana Bread No antildeadiacutea grandes

novedades pero siacute corregiacutea numerosos fallos detectados en la primera versioacuten e introduciacutea

un concepto por entonces poco usado por los rivales que buscaba facilitar la vida al

usuario las actualizaciones automaacuteticas con las que resultaba muy simple mantener todo

el software al diacutea

El 30 de abril del 2009 lanzan una nueva actualizacioacuten de gran importancia con

muchas novedades en cuanto a usabilidad Android 15 Cupcake Esta nueva versioacuten

introdujo las siguientes caracteriacutesticas

Teclado taacutectil QWERTY en pantalla con prediccioacuten de texto y diccionario de

usuarios para palabras personalizadas

Grabacioacuten y reproduccioacuten en formatos MPEG-4 y 3GP

Widget de escritorio de Google para realizar buacutesquedas directamente

SDK para el desarrollo de widgets de escritorio por parte de terceros

Funciones del portapapeles ampliadas

Interfaz para grabar y reproducir viacutedeos mejorada

Posibilidad de auto-rotacioacuten

Android 16 Donut apareciacutea en septiembre del 2009 con algunas novedades

adicionales

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

21

Soporte para CDMAEVDO 8021x VPN que ampliaba los mercados al alcance

de Android

Compatibilidad con distintas resoluciones de pantalla Soporte WVGA

Actualizacioacuten y nuevo disentildeo del Android Market

Utilidad de buacutesqueda universal en Internet y en el mismo dispositivo

Galeriacutea caacutemara y videocaacutemara con mejor integracioacuten con raacutepido acceso a la

caacutemara

Motor multi-lenguaje de Siacutentesis de habla para permitir a cualquier aplicacioacuten de

Android hablar una cadena de texto

Mejoras en las buacutesquedas por texto y voz

Apenas dos meses despueacutes en noviembre del 2009 lanzan Android 20 Eclair

uno de los cambios maacutes sustanciales sufridos por Android tanto a nivel de disentildeo como

de arquitectura interna Era una versioacuten dirigida a dispositivos de mayor tamantildeo en un

tiempo en el que los fabricantes empezaban a diversificar su oferta La versioacuten 21

mantuvo la misma nomenclatura y soacutelo corrigioacute algunos fallos pero su uso fue mayor

entre los fabricantes que la versioacuten anterior A continuacioacuten se mencionan algunas de las

nuevas caracteriacutesticas

Sincronizacioacuten de cuenta expandida permitiendo a los usuarios agregar muacuteltiples

cuentas al dispositivo para sincronizacioacuten de correo y contactos

Google Maps Navigation sistema de navegacioacuten GPS gratuito

Compatibilidad con Microsoft Exchange

Optimizacioacuten en velocidad de hardware y GUI renovada

Soporte para maacutes tamantildeos de pantalla y resoluciones con una mejor tasa de

contraste

Navegador actualizado soporte para HTML5 y barra de direccioacuten y buacutesqueda

unificada

Funcioacuten Speech to Text para escribir textos mediante el uso de la voz

Nueva pantalla de desbloqueo

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

22

Nuevas caracteriacutesticas para la caacutemara incluyendo soporte de flash zoom digital

modo escena balance de blancos efecto de colores y enfoque macro

Adicioacuten de fondos de pantalla animados permitiendo la animacioacuten de imaacutegenes

de fondo de la pantalla inicio para mostrar movimiento

El 20 de mayo del 2010 apareciacutea una nueva actualizacioacuten del sistema operativo

Android 22 Froyo Traiacutea numerosos cambios algunos copiados de otras ROMs y otros

con el uso empresarial en mente

Pantalla Home totalmente redisentildeada con 5 paneles en lugar de 3

Nueva galeriacutea de imaacutegenes

Soporte para actuar como hotspot2 para otros dispositivos tethering3 de datos

Soporte para Flash 101

Funcioacuten copiar y pegar mejorada en Google Mail

Nueva pantalla alternativa de desbloqueo mediante coacutedigo PIN

Grabacioacuten de viacutedeo en 720p

Optimizaciones en velocidad memoria y rendimiento Compilador JIT

Integracioacuten del motor de JavaScript V8 de Chrome en el navegador

Soporte para el servicio Android Cloud to Device Messaging (C2DM)

habilitando notificaciones push

El antildeo 2010 iba a concluir con el lanzamiento de una versioacuten sumamente popular

que prevalecioacute gran tiempo Android 23 Gingerbread Esta versioacuten contoacute con las

siguientes caracteriacutesticas

Disentildeo de la interfaz de usuario actualizado con incremento en velocidad y

simpleza

Nuevo disentildeo para el teclado numeacuterico en pantalla

Soporte para tamantildeos y resoluciones de pantalla extra-grandes (WXGA y

mayores)

Funcioacuten para copiar y pegar mejorada con soporte para caracteres individuales en

lugar de cajas de texto

2 lugar que ofrece acceso a Internet a traveacutes de una red inalaacutembrica y un enrutador conectado a un proveedor de servicios de Internet 3 proceso por el cual un dispositivo moacutevil con conexioacuten a Internet actuacutea como pasarela para ofrecer acceso a la red a otros dispositivos

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

23

Soporte para NFC

Herramientas de visualizacioacuten de consumo y uso de la bateriacutea mejoradas

Soporte para caacutemaras frontales

Acceso de bajo nivel para los desarrolladores de juegos

Recolector basura concurrente para incrementar el rendimiento

Sustitucioacuten del sistema de archivos YAFFS por ext4

Soporte nativo para maacutes sensores (tales como giroscopio y baroacutemetro)

Soporte de chat de video o voz usando Google Talk

En febrero del 2011 Google lanza Android 30 Honeycomb Se trata de una

actualizacioacuten especiacutefica para tablets no compatible con teleacutefonos que introduciacutea las

liacuteneas maestras de la interfaz en el futuro Las versiones 31 y 32 mantuvieron el mismo

nombre y fueron baacutesicamente un conjunto de correcciones A continuacioacuten se listan los

cambios significativos que tuvieron lugar en estas versiones

Pantalla de Inicio redisentildeada

Inclusioacuten de tonos azules en la interfaz en detrimento del verde tradicional

Nuevas funcionalidades para el emplazamiento y uso de widgets

Fin de los botones fiacutesicos Adaptacioacuten automaacutetica del SO seguacuten el dispositivo

Agregado de barra de sistema con caracteriacutesticas de acceso raacutepido a

notificaciones estados y botones de navegacioacuten suavizados disponible en la parte

inferior de la pantalla

Antildeadida la barra de accioacuten (Action Bar en ingleacutes) entregando acceso a opciones

contextuales navegacioacuten widgets u otros tipos de contenido en la parte superior

de la pantalla

Multitarea simplificada ndash tocando Aplicaciones recientes en la barra del sistema

permite a los usuarios ver instantaacuteneas de las tareas en curso y saltar raacutepidamente

de una aplicacioacuten a otra

Aceleracioacuten graacutefica mediante hardware

Optimizacioacuten del renderizado de graacuteficos 3D

Soporte para perifeacutericos USB

Octubre del 2011 fue el mes del lanzamiento de Android 40 Ice Cream Sandwich

basado en el nuacutecleo de Linux 301 Esta nueva versioacuten introdujo las siguientes mejoras

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

24

Nueva Interfaz Holo y fuente tipograacutefica Roboto

Sistema de gestioacuten de notificaciones mejorado

Multitarea mejorada

Android Beam funcionalidad para transferir datos entre dos dispositivos viacutea NFC

Funcioacuten de desbloqueo mediante el rostro

Nuevas funciones para la visualizacioacuten y gestioacuten del consumo de datos

Nuevas aplicaciones de correo y calendario

Habilidad de acceder a aplicaciones directamente desde la pantalla de bloqueo

Herramienta integrada de captura de pantalla

Soporte MKV

Aceleracioacuten por hardware de la interfaz de usuario

Soporte Stylus (laacutepiz taacutectil)

En Julio del 2012 se presenta Android 41 Jelly Bean que incluye las siguientes

novedades

Sistema de deteccioacuten de entrada de datos taacutectiles optimizado

Estreno de Google Now el servicio-asistente de voz inteligente de Google

Navegador Google Chrome

Buacutesqueda mediante voz mejorada

Nuevas posibilidades para las notificaciones interactivas de escritorio

Dictado de voz offline

Se deja de dar soporte al Flash Player

Meses despueacutes en noviembre del 2012 se lanza la versioacuten Android 42 Jelly Bean

la cual incluye habituales correcciones rendimiento mejorado y cambios puntuales en

ciertas aplicaciones

Android 43 Jelly Bean es anunciado el 24 de julio del 2013 Uno de los objetivos

de esta versioacuten fue tratar de consolidar a Android como un sistema operativo capaz de

ejecutar juegos Esta nueva versioacuten cuenta con las siguientes novedades

Soporte multiusuario y de perfiles mejorado

Soporte OpenGL ES 30

Bluetooth Smart

Plataforma Google Games

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

25

Servicios de localizacioacuten Wi-Fi mejorados

Ya no es necesario pulsar el icono del microacutefono para realizar una buacutesqueda de

voz Solo hay que decir OK Google y en seguida ordenar al equipo lo que se

necesite

Android 44 KitKat es anunciado en octubre del 2013 Esta nueva versioacuten intenta

corregir el problema de fragmentacioacuten se cuenta con muchas versiones y los fabricantes

tienen dificultades para adaptar sus productos a los requerimientos de cada nueva versioacuten

Se destaca de esta versioacuten

Menores requisitos de hardware para corregir la fragmentacioacuten de versiones

Compatible con terminales con 512 MB de memoria RAM

Reduccioacuten del consumo de bateriacutea mediante la optimizacioacuten de los sensores

Inclusioacuten de la suite ofimaacutetica QuickOffice

Servicios de almacenamiento online integrados Google Drive Box

Soporte para infrarrojos Usar el moacutevil como mando de TV

Aplicaciones a pantalla completa

Captura de pantalla en viacutedeo

En octubre del 2014 se lanza Android 5 Lollipop daacutendole soporte a otros

dispositivos como Android TV relojes inteligentes autos etc Esta nueva versioacuten

incluye

Nuevo disentildeo basado en Material Design que logra un flujo de trabajo maacutes fluido

Interfaz que se adapta a cualquier tamantildeo de dispositivo

Renovado sistema de notificaciones inteligente

Interesante vista multitarea que muestra capas con las diferentes aplicaciones

abiertas

Funcioacuten Android Smart Lock que permite emparejar un dispositivo Android con

otro ya sea un reloj inteligente o un automoacutevil

Modo Invitado para que puedas prestar el dispositivo sin que otros usuarios

tengan acceso a la informacioacuten privada

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

26

Soporte para sistemas de 64 bits

En octubre del 2015 se anuncia Android 6 Marshmallow que incluye las

siguientes novedades

Soporte para autenticacioacuten viacutea huella digital

Desinstalacioacuten raacutepida de las aplicaciones desde la pantalla de inicio

Nuevo esquema de gestioacuten de energiacutea llamado Doze

Mayor duracioacuten de la bateriacutea cuando el dispositivo estaacute en reposo

Inclusioacuten de Android Pay que emplearaacute el chip NFC

Mejoras en Google Now

Mayor control sobre los permisos requeridos por las aplicaciones

212 Proceso de Desarrollo Las aplicaciones nativas para esta plataforma se implementan utilizando el lenguaje

de programacioacuten Java

El estaacutendar sugiere utilizar el IDE oficial Android Studio (Figura 7) aunque es

posible utilizar otros entornos Independientemente del IDE utilizado se necesita

disponer del Software Development Kit (SDK) de la versioacuten de Android en la que se

desea trabajar El SDK provee todas las herramientas necesarias para desarrollar

compilar depurar y simular aplicaciones

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

27

Figura 7 Entorno de desarrollo Android Studio

Uno de los interrogantes que surgen en el momento de crear una aplicacioacuten es con

cual versioacuten de la Application Programming Interface (API) de Android trabajar Se debe

tener en cuenta que al trabajar con una versioacuten especiacutefica se estaacute limitando cuales son los

dispositivos que soportaraacuten la aplicacioacuten a crear No se recomienda utilizar una API

antigua -ya que no se estariacutea utilizando muchos de los avances de la plataforma- ni

tampoco la uacuteltima en el mercado ndashdebido a que pocos seriacutean los usuarios que podriacutean

utilizarla- En la Figura 8 se visualiza la distribucioacuten de versiones seguacuten los dispositivos

activos a la fecha de Diciembre 2016 [21] De esa informacioacuten se desprende que si se

optara por trabajar con la API 16 (Jelly Bean) el 966 de los celulares activos podraacuten

utilizar la aplicacioacuten a crear

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

28

Figura 8 Distribucioacuten de versiones de Android - Diciembre 2016

22 Desarrollo de Aplicaciones Nativas en iOS

iOS es un sistema operativo para dispositivos moacuteviles de la empresa multinacional

Apple Si bien fue originalmente desarrollado para el dispositivo iPhone luego el sistema

operativo alcanzoacute otros dispositivos como iPod Touch iPad A diferencias de otros

sistemas operativos para dispositivos moacuteviles iOS solo funciona en dispositivos creados

por la empresa Apple pero no asiacute en otro hardware de terceros

221 Evolucioacuten El sistema operativo moacutevil iOS se deriva del sistema operativo OS X el cual estaacute

basado en UNIX

La primera versioacuten del sistema operativo se presentoacute en enero del 2007 A

diferencia de sus sucesores la primera versioacuten no se llamoacute iOS sino iPhone OS Se

trataba de una plataforma bastante cerrada ya que las uacutenicas aplicaciones disponibles

eran las que estaban integradas al sistema operativo y fueron creadas por Apple como los

Mapas Mail Fotos Calendario entre otras

El desarrollo de aplicaciones nativas por parte de terceros no tuvo lugar hasta marzo

del 2008 momento en el cual Apple liberoacute el primer kit de desarrollo

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

29

Meses despueacutes se lanza la segunda versioacuten del sistema operativo iPhone OS 2 En

esta oportunidad introducen la App Store la cual permitioacute la descarga de aplicaciones de

terceros Ademaacutes la aplicacioacuten de Mapas recibioacute compatibilidad con el GPS y el Mail

notificaciones push

En 2009 Apple lanzoacute iPhone OS 3 y en su versioacuten 32 se le cambioacute el nombre a

iOS 32 iOS 3 incorporoacute grandes novedades buacutesqueda Spotlight botones Copiar y

Pegar grabacioacuten de viacutedeo edicioacuten de viacutedeo mensajes MMS comandos de voz modo

landscape y otras muchas apps Ademaacutes se siguioacute explotando las ventajas de las

notificaciones push y se continuoacute evolucionando su SDK daacutendole mayor poder a los

desarrolladores de aplicaciones

iOS 4 llegoacute a mediados del 2010 y trajo consigo nuevos cambios a la plataforma

Los maacutes destacables fueron la inclusioacuten de fondos de pantalla y la posibilidad de poder

abrir varias aplicaciones en simultaacuteneo Adicionalmente las aplicaciones podiacutean ser

agrupadas mediante carpetas algo simple pero uacutetil

En Junio del 2011 se libera iOS 5 Esta nueva versioacuten ofreciacutea grandes novedades

un Centro de Notificaciones Siri ndashel asistente virtual que marcoacute tendencia en los uacuteltimos

antildeos- iMessage iCloud Game Center Quiosco Recordatorios integracioacuten social para

Twitter y se mejoroacute notablemente la app de navegacioacuten web nativa Safari

iOS 6 fue presentado en Junio del 2012 y trajo como novedades la inclusioacuten de

Apple Maps (en reemplazo de Google Maps) mejoras en Siri con informacioacuten mucho

maacutes precisa la integracioacuten de Facebook y Twitter en el sistema el modo no molestar el

soporte para LTE entre otras

Los usuarios de este sistema operativo recibieron una de las mayores

actualizaciones en Junio del 2013 cuando se presenta iOS 7 Esta nueva versioacuten contoacute

con un redisentildeo total de la interfaz de usuario basaacutendose en transparencias y degradados

Ademaacutes se introdujo el Centro de Control AirDrop una renovada app de fotos iTunes

Radio y CarPlay mejoras en el App Switcher videos a caacutemara lenta entre otras cosas

Junio del 2014 fue el mes donde quedoacute disponible iOS 8 una nueva versioacuten del

sistema operativo que intenta resolver algunos errores de iOS 7 y antildeadir ciertas mejoras

Las extensiones y la posibilidad de conectar apps entre siacute mediante el menuacute compartir

hicieron que iOS 8 fuese mucho maacutes productivo Ademaacutes incorporoacute widgets para el

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

30

Centro de Notificaciones o las notificaciones interactivas Ademaacutes se implementaron los

contactos favoritos los teclados de terceros la funcioacuten Reachability y la utilidad

Continuity y las aplicaciones Apple Pay Salud HandOff QuickType Compartir en

Familia iCloud Drive y Apple Music

En el 2015 se presenta iOS 9 que introdujo todo un cambio en el uso del sistema

gracias a la compatibilidad con el 3D Touch del iPhone 6s y el iPhone 6s Plus Se

actualizoacute Notas con nuevas funciones se sustituyoacute Newsstand por News se incorporaron

mejoras en Passbook que pasoacute a llamarse Wallet y se mejoroacute Mapas con direcciones y

traacutefico Se antildeadioacute Split View Picture-in-Picture y atajos en teclados de terceros Ademaacutes

el sistema ahora podiacutea aprovechar mejor la autonomiacutea del dispositivo gracias al Modo

ahorro de bateriacutea que limita las conexiones y caracteriacutesticas del sistema para no consumir

tanta energiacutea

Por uacuteltimo en Junio del 2016 quedoacute disponible iOS 10 versioacuten que se caracteriza

por abrirse a los desarrolladores Con esta nueva versioacuten se puede tener acceso a Siri al

3D Touch y a apps directas del sistema operativo Ademaacutes el centro de widgets ahora es

maacutes intuitivo y la pantalla de bloqueo maacutes uacutetil Como es habitual se aprecian mejoras en

distintas aplicaciones del sistema operativo y se permite borrar apps de Apple que no sean

utilizadas por los usuarios

222 Proceso de desarrollo Las aplicaciones moacuteviles para la plataforma iOS se desarrollan utilizando el

lenguaje de programacioacuten Objetive C El entorno de desarrollo oficial es la plataforma

Xcode [22] la cual opera en conjunto con Interface Builder una herramienta graacutefica para

la creacioacuten de interfaces de usuario

Actualmente hay dos grandes versiones del sistema operativo moacutevil en curso como

se puede apreciar en la Figura 10 Es algo a destacar que la uacuteltima versioacuten del sistema

operativo es soportada por el 63 de los dispositivos activos Claramente la

fragmentacioacuten interna es mucho menor que la encontrada en Android

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

31

Figura 9 Entorno de desarrollo Xcode

Figura 10 Distribucioacuten de versiones de iOS - Noviembre 2016

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

32

23 Desarrollo de Aplicaciones Nativas en Windows Phone

El sistema operativo moacutevil Windows Phone fue desarrollado por Microsoft y

sucede a Windows Mobile A diferencia de su predecesor estaacute enfocado en el mercado de

consumo en lugar del mercado empresarial

231 Evolucioacuten Su primera versioacuten lanzada en septiembre del 2010 fue denominada Windows

Phone 7 Fue presentado como un nuevo sistema operativo que incluye funciones de

integracioacuten con los servicios Xbox Live y Zune La interfaz conocida como Metro ha

sido revisada en su totalidad y comparte caracteriacutesticas visuales similares a la interfaz del

dispositivo Zune HD

Windows Phone 75 es una actualizacioacuten para Windows Phone lanzada en

septiembre de 2011 Esta nueva versioacuten incorporoacute numerosas caracteriacutesticas como por

ejemplo la inclusioacuten de Internet Explorer 9 con soporte para CSS3 Media Queries y

soporte para usar GPS cuando se trabaje con aplicaciones de ubicacioacuten geograacutefica entre

otros

En enero del 2013 se presenta Windows Phone 78 una actualizacioacuten que trae

mejoras como la nueva interfaz de usuario y fondos personalizados para la pantalla de

bloqueo Fue la uacuteltima gran actualizacioacuten de Windows Phone 7 ya que Microsoft se

centroacute en Windows Phone 8

Windows Phone 8 es la siguiente versioacuten del sistema operativo la cual fue

presentada a finales de 2012 Entre las nuevas caracteriacutesticas se incluyen

Nuevas pantallas de inicio y de bloqueo maacutes personalizables

Rincoacuten infantil un espacio exclusivo y controlado para los nintildeos

Cartera para almacenar tarjetas de fidelizacioacuten y de creacutedito

NFC

Internet Explorer 10

Integracioacuten con Skype

Nuevo nuacutecleo Windows NT con soporte para procesadores de varios

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

33

nuacutecleos

Captura de pantalla

Su proacutexima versioacuten es Windows Phone 81 y fue presentada en abril del 2014

Entre sus caracteriacutesticas maacutes relevantes se encuentran

Centro de notificaciones

Asistente de voz conocido con el nombre de Cortana

Sensores (de Wi-Fi de datos y de bateriacutea)

Aplicaciones que vienen en el paquete de instalacioacuten como Salud y

ejercicios Comida y bebida Viajes y Mapas (esta uacuteltima compite con Here

Maps la cual es la aplicacioacuten de mapas de Nokia)

Mejoras en la pantalla de inicio posibilidad de agregar fondos de pantalla y

una tercera columna de mosaicos personalizables (Tiles)

A mediados del 2014 Microsoft decide cambiar de estrategia tratando de unificar

todas las plataformas como PC tablets smartphones Xbox One entre otros Windows

10 (moacutevil) se dio a conocer puacuteblicamente durante un evento el 21 de enero para 2015 Al

igual que su homoacutelogo Windows 10 Mobile utiliza como navegador predeterminado

Microsoft Edge reemplazando Internet Explorer de Windows Phone 81 ya que este no

se adecuaba a las nuevas liacuteneas de disentildeo del sistema operativo

232 Proceso de desarrollo El entorno de desarrollo maacutes popular para el desarrollo de aplicaciones para

Windows Phone es Visual Studio (Figura 11) En la actualidad es posible utilizar diversos

lenguajes de programacioacuten VBNET y CNET C++ y JavaScript

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

34

Figura 11 Entorno de desarrollo Visual Studio

24 Diferencias teacutecnicas entre Android iOS y Windows Phone

Desarrollar aplicaciones moacuteviles para los tres sistemas operativos maacutes populares

implica conocer ciertos aspectos teacutecnicos de cada plataforma Algunos de estos aspectos

teacutecnicos difieren sustancialmente entre cada sistema operativo

Una de las caracteriacutesticas a tener en cuenta es si las aplicaciones moacuteviles se ejecutan

dentro de una maacutequina virtual especiacuteficamente disentildeada o si se ejecutan directamente

sobre el sistema operativo

Otro aspecto que los desarrolladores deben tener en cuenta es el lenguaje de

programacioacuten a utilizar para crear aplicaciones nativas Este aspecto es importante porque

incide en otros aspectos como por ejemplo la gestioacuten de memoria

Ademaacutes del lenguaje de programacioacuten a utilizar es importante conocer la

tecnologiacutea requerida para disentildear interfaces de usuario

Asimismo los desarrolladores deben familiarizarse con diferentes IDEs seguacuten la

plataforma en la que se desea desarrollar como asiacute tambieacuten con diferentes tiendas de

aplicaciones donde alojar los productos finales

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

35

Por uacuteltimo la tecnologiacutea de hardware requerida para soportar el sistema operativo

tambieacuten difiere seguacuten cada plataforma

La Tabla 1 compara cada uno de estos aspectos en los sistemas operativos moacuteviles

Android iOS y Windows Phone

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

36

Sistema

Operativo

Maacutequina

Virtual

Lenguaje de

Programacioacuten

Interfaces

de usuario

Gestioacuten de

memoria

IDE Plataforma de

desarrollo

Dispositivos Tienda de

Aplicaciones

Android Dalvik VM Java XML files Garbage

collector

Android

Studio

Multiplatforma Heterogeneos Google Play

Store

iOS No Objective-C Cocoa

Touch

Reference

counting

XCode Mac OS X Homogeneos iTunes Apps

Store

Windows

Phone

CLR C and Net XAML files Garbage

collector

Visual

Studio

Windows Vista7 Homogeneos Windows

Phone Store

Tabla 1 Diferencias teacutecnicas entre las plataformas Android iOS y Windows Phone

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

37

Capiacutetulo 3 Desarrollo de

Aplicaciones Moacuteviles

Multiplataforma

En los uacuteltimos antildeos el mercado de los dispositivos moacuteviles en especial

smartphones ha mostrado un crecimiento notable tanto en Argentina como en todo el

mundo En particular en nuestro paiacutes las plataformas que maacutes han crecido son Android

e iOS [1520]

Actualmente gran parte de la industria del software se concentra en desarrollar

soluciones para dispositivos moacuteviles proveyendo especialmente aplicaciones nativas

Las aplicaciones nativas tal como se mencionoacute en el capiacutetulo anterior ofrecen la

posibilidad de acceder a todas las capacidades del dispositivo (caacutemara GPS aceleroacutemetro

y agenda entre otras) su rendimiento es alto el acceso a Internet no es estrictamente

necesario y pueden ejecutarse en segundo plano notificando al usuario cuando se requiera

su atencioacuten Estas aplicaciones pueden distribuirsecomercializarse a traveacutes de las tiendas

en liacutenea correspondientes

El principal reto para los proveedores de aplicaciones es proporcionar soluciones

para todas las plataformas pero esto conlleva un alto costo [6] no es posible reusar el

coacutedigo fuente entre plataformas diferentes multiplicando esfuerzos y elevando los costos

de desarrollo actualizacioacuten y distribucioacuten de nuevas versiones

El desarrollo multiplataforma procura optimizar la relacioacuten costobeneficio

compartiendo la misma codificacioacuten entre las versiones para las distintas plataformas

Entre otras ventajas sobresalen menor tiempo y costo de desarrollo prestaciones

similares a las nativas con acceso al hardware del dispositivo y disponibilidad de

entornos potentes de desarrollo (Delphi Visual Studio etc) o en su lugar utilizacioacuten de

tecnologiacuteas (HTML5 Javascript y CSS) bien conocidas por los desarrolladores web

quienes pueden trasladar sus conocimientos y experiencias al paradigma moacutevil Sin

embargo el rendimiento de las aplicaciones y sus interfaces de usuario pueden afectar la

experiencia de usuario

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

38

Las aplicaciones multiplataforma pueden clasificarse en aplicaciones web moacuteviles

hiacutebridas interpretadas y generadas por compilacioacuten cruzada [5] En las secciones

siguientes se analizaran cada una de estas clasifcaciones

31 Aplicaciones Web Moacuteviles

Las Aplicaciones Web Moacuteviles disentildeadas para ejecutarse dentro de un navegador

se desarrollan con tecnologiacutea web estaacutendar (HTML CSS y JavaScript) y cuentan con

una serie de caracteriacutesticas favorables no necesitan adecuarse a ninguacuten entorno operativo

son independientes de la plataforma y su puesta en marcha es raacutepida y sencilla

Por contrapartida sus tiempos de respuesta decaen debido a la interaccioacuten cliente-

servidor Al mismo tiempo resultan ser menos atractivas que las aplicaciones nativas ya

que no se encuentran instaladas en el dispositivo lo que implica acceder previamente a

un navegador Ademaacutes las restricciones de seguridad impuestas a la ejecucioacuten de coacutedigo

por medio de un navegador limitan el acceso a todas las capacidades del dispositivo [23]

Asimismo no es posible desarrollar aplicaciones web que corran en segundo plano ni

tampoco aplicaciones offline ya que es requisito disponer de una conexioacuten a internet para

su funcionamiento

El proceso de desarrollo de una aplicacioacuten web moacutevil debe contemplar una serie de

caracteriacutesticas inherentes al entorno de ejecucioacuten Como ya ha sido mencionado las

aplicaciones web moacuteviles pueden ser accesibles desde cualquier dispositivo moacutevil que

cuente con un navegador y acceso a internet pero esto no significa que la navegacioacuten en

la aplicacioacuten resulte ser coacutemoda u oacuteptima Por ejemplo una aplicacioacuten web con un menuacute

compuesto de 20 iacutetems puede implicar una usabilidad correcta desde una PC Por lo

contrario para un dispositivo moacutevil con una pantalla limitada no resulta praacutectico que se

le presente al usuario tantas opciones en el menuacute Con este ejemplo lo que se pretende

mostrar es que para que una aplicacioacuten sea accesible desde diferentes dispositivos

moacuteviles posiblemente se tengan que realizar al menos dos disentildeos de presentacioacuten

diferentes un disentildeo para PC y otro disentildeo para dispositivos moacuteviles con una estructura

organizativa de la aplicacioacuten maacutes simplificada con respecto al disentildeo tradicional Por

ejemplo algunas de las funcionalidades de la aplicacioacuten para PC pueden ser eliminadas

para la versioacuten para dispositivos moacuteviles o presentadas de forma diferente

Para desarrollar diferentes presentaciones de una misma aplicacioacuten web

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

39

actualmente existen dos estrategias distintas ambas vaacutelidas seguacuten el contexto En los

siguientes apartados se analizaraacuten cada una de ellas

311 Aplicacioacuten Web dedicada y exclusiva para dispositivos moacuteviles Esta metodologiacutea ha sido el estaacutendar hasta el antildeo 2012 En ella la direccioacuten URL

y el coacutedigo HTML de la versioacuten moacutevil son distintos de la versioacuten de escritorio Por lo

general las direcciones URL tienen el formato mnombresitiocom

Algunas de las ventajas de este meacutetodo

- En general la carga es maacutes raacutepida y la navegacioacuten maacutes coacutemoda

- Es posible adaptar de manera maacutes faacutecil el contenido de las secciones

Desventajas de este meacutetodo

- Mantenimiento maacutes costoso Se debe mantener dos versiones distintas del mismo

sitio

- Dificulta el posicionamiento del sitio en los buscadores

- Estos desarrollos al final tienden a ser versiones muy reducidas de la web para

PC llevando al usuario a frustrarse y a preferir ver la versioacuten original de la web

312 Aplicacioacuten Web con Disentildeo Adaptable Con esta metodologiacutea la aplicacioacuten web se adapta al dispositivo desde el cual se la

estaacute accediendo El coacutedigo HTML y la direccioacuten URL de la aplicacioacuten son uacutenicos El

Disentildeo Adaptable o Responsive Design (Figura 12) tiene sus oriacutegenes en el antildeo 2008

cuando la W3C discutioacute y describioacute sus propoacutesitos Desde el antildeo 2012 -momento en el

cual Google recomendoacute fuertemente su implicancia [24]- viene en ascenso y

posiblemente llegue a convertirse en un standard en un corto plazo

Mediante un Disentildeo Adaptable todos los elementos de la web se reajustan en ancho

y altura adaptaacutendose al tamantildeo de tu pantalla Incluso es posible ocultar secciones cuando

se accede desde un dispositivo moacutevil

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

40

Figura 12 Disentildeo Adaptable

Las principales ventajas del desarrollo de aplicaciones web con Disentildeo Adaptable

son

- El mantenimiento es menos costoso ya que solo hay que mantener una uacutenica

versioacuten de la aplicacioacuten

- Se simplifica el proceso de posicionar la aplicacioacuten en los buscadores

Como contrapartida el Disentildeo Adaptable presenta una serie de desventajas

- Requiere de mayores niveles teacutecnicos para su desarrollo

- El contenido de las aplicaciones con Disentildeo Adaptable puede ser mayor que el

contenido de las aplicaciones web especiacuteficas para dispositivos moacuteviles

perjudicando el tiempo de carga cuando se utiliza un tipo de conexioacuten no muy

potente y generando un mayor consumo de datos

En la actualidad existe una gran cantidad de frameworks que simplifican el

desarrollo de aplicaciones web con disentildeo adaptable destacaacutendose por su popularidad y

extensa documentacioacuten los frameworks Bootstrap [25] y Foundation [26]

32 Aplicaciones Hiacutebridas

Las aplicaciones hiacutebridas utilizan tecnologiacuteas web (HTML Javascript y CSS) pero

no son ejecutadas por un navegador En su lugar se ejecutan en un contenedor web

(webview) como parte de una aplicacioacuten nativa la cual estaacute instalada en el dispositivo

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

41

moacutevil Desde una aplicacioacuten hiacutebrida es posible acceder a las capacidades del dispositivo

a traveacutes de diversas API

Las aplicaciones hiacutebridas ofrecen grandes ventajas permitiendo la reutilizacioacuten de

coacutedigo en las distintas plataformas el acceso al hardware del dispositivo y la distribucioacuten

a traveacutes de las tiendas de aplicaciones En contrapartida se observan dos desventajas de

las aplicaciones hiacutebridas respecto del caso nativo i) la experiencia de usuario se ve

perjudicada al no utilizar componentes nativos en la interfaz y ii) la ejecucioacuten se ve

ralentizada por la carga asociada al contenedor web

Afortunadamente existe una diversidad de frameworks que permiten desarrollar

aplicaciones hiacutebridas A continuacioacuten se haraacute un breve resumen de los maacutes populares

321 PhoneGap PhoneGap [27] es un framework gratuito y open source creado en el antildeo 2008 por

la empresa Nitobi Software que permite crear aplicaciones moacuteviles usando tecnologiacutea

web estaacutendar HTML JavaScript y CSS En octubre del 2011 Adobe adquiere la empresa

Nitobi y aporta el coacutedigo de PhoneGap a Apache Software Foundation para iniciar un

nuevo proyecto por encima de PhoneGap llamado Apache Cordova [28] PhoneGap pasoacute

a ser una de las varias distribuciones de Apache Cordova (Figura 13) brindando servicios

extras como por ejemplo Adobe PhoneGap Build [29] un servicio de compilacioacuten en la

nube proporcionado por Adobe Creative Cloud PhoneGap Desktop y PhoneGap

Developer

PhoneGap permite compilar aplicaciones para las siguientes plataformas Android

IOS Amazon Fire OS Windows Phone Windows 8 Ubuntu Tizen Firefox OS

Blackberry 10

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

42

Figura 13 Funcionamiento de Apache Cordova

322 CocoonJS CocoonJS [30] es un framework para el desarrollo de aplicaciones moacuteviles

producido por Ludei [31] Actualmente cuenta con una licencia propietaria y ofrece

diferente tipos de planes pagos y gratuitos El mencionado framework estaacute basado en

Apache Cordova al igual que PhoneGap pero se diferencia de este uacuteltimo en que hace

un mayor hincapieacute en la performance de las aplicaciones resultantes CocoonJS ofrece

dos tipos de webview

Canvas+ un webview liviano optimizado para video juegos Provee solo un

subconjunto de las funcionalidades del HTML5 (canvas audio motion

geolocalizacioacuten etc) necesarias para desarrollar video juegos con el objetivo de

brindar la mejor performance posible

Webview+ un potente y completo webview basado en el webview del proyecto

Chromium el cual cuenta de una mejor performance en comparacioacuten con el

webview por defecto de Apache Cordova

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

43

CocoonJs permite crear aplicaciones tanto para iOS como para Android

323 Ionic Ionic [32] es un completo SDK gratuito y open source para el desarrollo de

aplicaciones hiacutebridas producido por Max Lynch Ben Sperry y Adam Bradley de la

compantildeia Drifty Co en el antildeo 2013 En un tiempo relativamente corto alcanzoacute una

popularidad a destacar Estaacute basado en Apache Cordova permitiendo desarrollar

aplicaciones con tecnologiacutea web A diferencia de otros frameworks para el desarrollo de

aplicaciones hibridas Ionic provee un framework para la interfaz de usuario y

herramientas visuales para disentildear interfaces

Mediante Ionic es posible crear aplicaciones para Android IOS Windows Phone y

Firefox OS

324 Sencha Touch Sencha Touch [33] es un framework gratuito Model-View-Controller (MVC)

JavaScript construido sobre el sistema de clases de Ext JS disentildeado especialmente para

el desarrollo de aplicaciones web moacuteviles para dispositivos taacutectiles [34]

Al igual que PhoneGap Sencha Touch permite a los desarrolladores crear

aplicaciones moacuteviles a partir de un desarrollo web con HTML5 CSS y Javascript A

diferencia de PhoneGap Sencha no necesita de ninguna libreriacutea de terceros para construir

interfaces similares a las nativas ya que el framework provee consigo una gran cantidad

de componentes visuales listos para utilizar

Sencha empaqueta el coacutedigo del proyecto mediante PhoneGap para luego poder

construir aplicaciones en todas las plataformas soportadas por PhoneGap

33 Aplicaciones Interpretadas

Las aplicaciones interpretadas son implementadas utilizando un lenguaje base el

cual se traduce en su mayor parte a coacutedigo nativo mientras el resto es interpretado en

tiempo de ejecucioacuten Estas aplicaciones son implementadas de manera independiente de

las plataformas utilizando diversas tecnologiacuteas y lenguajes tales como Javascript Java

Ruby y XML entre otros

Una de las principales ventajas de este tipo de aplicaciones es que se obtienen

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

44

interfaces de usuario totalmente nativas Sin embargo los desarrolladores experimentan

una dependencia total con el entorno de desarrollo elegido

Seguidamente se presentaran algunos de frameworks maacutes reconocidos para el

desarrollo de aplicaciones interpretadas

331 Appcelerator Titanium Desarrollado por Appcelerator Inc Appcelerator Titanium [35] es un framework

de coacutedigo abierto que permite la creacioacuten de aplicaciones moacuteviles para las plataformas

iOS y Android Dicho framework estaacute formado por Titanium Studio un entorno de

desarrollo de coacutedigo libre para la codificacioacuten de aplicaciones moacuteviles multiplataforma

y el SDK Titanium una serie de herramientas para el desarrollo testeo anaacutelisis

depuracioacuten y compilacioacuten de aplicaciones

Las aplicaciones desarrolladas con Appcelerator Titanium se codifican utilizando

el lenguaje Javascript el cual es evaluado en tiempo de ejecucioacuten mediante un inteacuterprete

de Javascript que se ejecuta en el sistema operativo del dispositivo Al iniciar la

aplicacioacuten desde el coacutedigo nativo se ejecuta el coacutedigo Javascript y mediante la API de

Titanium se mapea uno-a-uno cada elemento del coacutedigo Javascript con los elementos

nativos De esta manera la API de Titanium actuacutea como puente logrando interfaces de

usuario compuestas de controles nativos Este entorno de desarrollo utiliza el framework

Alloy disentildeado para el desarrollo aacutegil de aplicaciones moacuteviles Alloy estaacute basado en la

arquitectura MVC y soporta el uso de tecnologiacuteas populares como Backbonejs [36] y

Underscorejs [37]

Los creadores de Titanium destacan que mediante este framework es posible

reutilizar entre el 60 y 90 del coacutedigo entre distintas plataformas

332 NativeScript El 5 de marzo del 2015 la empresa Telerik lanzoacute NativeScript [38] un proyecto de

coacutedigo abierto el cual permite generar aplicaciones nativas utilizando JavaScript

Asimismo es posible desarrollar la aplicacioacuten utilizando el lenguaje TypeScript [39]

lenguaje libre y de coacutedigo abierto desarrollado por Microsoft que extiende a JavaScript

esencialmente antildeadiendo tipado estaacutetico y objetos basados en clases En este sentido

cuando se compila la aplicacioacuten se realiza la traduccioacuten del coacutedigo TypeScript a coacutedigo

JavaScript

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

45

NativeScript provee un moacutedulo multiplataforma que permite obtener aplicaciones

nativas desde coacutedigo JavaScript Este moacutedulo expone las capacidades del dispositivo y

de la plataforma subyacente de una manera consistente y permite accederlas desde el

coacutedigo JavaScript De igual manera las interfaces de usuario pueden ser definidas

mediante coacutedigo JavaScript documentos HTML y archivos CSS abstrayeacutendose de los

componentes nativos reales

Cuando la aplicacioacuten es compilada parte del coacutedigo multiplataforma es traducido

a coacutedigo nativo mientras que el resto es interpretado en tiempo de ejecucioacuten (Figura 14)

Por el momento NativeScript permite generar aplicaciones para Android e iOS y

se preveacute dar soporte a Windows Phone NativeScript renderiza controles nativos sin

utilizar WebViews logrando una performance y experiencia de usuario similar al de las

aplicaciones nativas

Figura 14 Proceso de interpretacioacuten mediante NativeScript

34 Aplicaciones Generadas por Compilacioacuten Cruzada

Estas aplicaciones se compilan de manera nativa creando una versioacuten especiacutefica de

alto rendimiento para cada plataforma destino Ejemplos de entornos de desarrollo para

generar aplicaciones por compilacioacuten cruzada son Applause [40] Xamarin [41]

Embarcadero Delphi 10 Seattle [42] y RubyMotion [43]

El entorno de desarrollo abierto Applause utiliza como entrada un lenguaje

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

46

especiacutefico del dominio basado en el framework Xtext [44] disentildeado expliacutecitamente para

aplicaciones moacuteviles orientadas a datos y genera coacutedigo fuente en Objective C Java C

o Python Las caracteriacutesticas de Xamarin Embarcadero Delphi 10 Seattle y RubyMotion

se presentan en secciones posteriores

341 Xamarin Xamarin es una plataforma de desarrollo de aplicaciones moacuteviles para generar

aplicaciones 100 nativas para iOS Android y Windows a partir de una base de coacutedigo

CNET comuacuten para conseguir entre un 75 y hasta casi un 100 de reutilizacioacuten de

coacutedigo entre plataformas Las aplicaciones escritas con Xamarin y C disponen de acceso

completo a las API de la plataforma subyacente asiacute como de la capacidad de crear

interfaces de usuario nativas y de realizar la compilacioacuten en coacutedigo nativo por lo que el

impacto en el rendimiento en tiempo de ejecucioacuten es escaso

Xamarin es una compantildeiacutea que se establecioacute en mayo de 2011 por los mismos

ingenieros que crearon el proyecto Mono [45] consistente en una implementacioacuten libre

de la plataforma de desarrollo NET para dispositivos Android iOS y GNULinux

Anteriormente este proyecto se llamaba MonoTouch y MonoDroid

Si bien Xamarin cuenta con su propio IDE denominado Xamarin Studio (Figura

15) es posible integrarlo con Microsoft Visual Studio y de esta manera generar tambieacuten

aplicaciones para Windows incluido Windows RT para tablets y Windows Phone para

celulares

En febrero del 2016 Xamarin es comprada por Microsoft y desde ese momento la

plataforma Xamarin y el IDE Xamarin Studio pasaron a ser gratuitas

Xamarin propone un enfoque de desarrollo multiplataforma en el que se comparte

la codificacioacuten completa de la loacutegica del negocio Sin embargo las interfaces deben ser

programadas de manera independiente para cada una de las plataformas destino Asiacute la

reutilizacioacuten de coacutedigo seguacuten estudios estadiacutesticos de la compantildeiacutea Xamarin es cercana

al 85

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

47

Figura 15 Entorno de Desarrollo Xamarin Studio

342 Embarcadero Delphi 10 Seattle Embarcadero Delphi 10 Seattle [42] es una plataforma de desarrollo propietaria y

no gratuita que permite a los desarrolladores crear aplicaciones raacutepidamente a traveacutes de

un entorno visual coacutemodo e intuitivo (Figura 16) La aplicacioacuten desarrollada puede ser

compilada para muacuteltiples plataformas incluyendo Windows Mac Android e iOS

Delphi 10 Seattle al igual que Xamarin aventaja a otros tipos de aplicaciones

multiplataformas con resultados 100 nativos con acceso total a los sensores y

capacidades del dispositivo (caacutemara notificaciones GPS aceleroacutemetro entre otras)

Un punto a destacar es que Delphi 10 Seattle a traveacutes del framework de interfaces

de usuario FireUI Multi-Device Designer permite crear interfaces de usuario totalmente

nativas sin la necesidad de tener que disentildear interfaces especiacuteficas para cada plataforma

en particular

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

48

Figura 16 Entorno de Desarrollo Delphi 10 Seattle

343 RubyMotion En Mayo de 2012 la empresa HipByte lanza RubyMontion un proyecto que

permite generar aplicaciones para iOS Android y OS X utilizando el lenguaje de

programacioacuten Ruby

Para poder generar las aplicaciones multiplataforma RubyMotion posee

implementaciones de Ruby sobre los sistemas operativos destinos (Android e iOS) que

permiten acceder a todas las caracteriacutesticas provistas por cada plataforma Las

herramientas de compilacioacuten provistas por RubyMotion se encargan de embeber la

correspondiente implementacioacuten de Ruby al momento de compilar para cada plataforma

La principal desventaja de RubyMotion es que soacutelo funciona bajo el sistema

operativo OS X Otro factor a tener en cuenta es que no posee un entorno de desarrollo

integrado que facilite todo el proceso al desarrollador esto se ve solventado gracias a que

ofrece complementos para los IDE y editores de coacutedigo maacutes utilizados

Finalmente si bien el producto es un servicio pago ofrece una posibilidad de

probarlo gratuitamente aunque con soporte uacutenicamente para compilar a la uacuteltima versioacuten

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

49

de cada plataforma destino

Capiacutetulo 4 Experimentacioacuten

50

Capiacutetulo 4 Experimentacioacuten

Con el objetivo de profundizar la investigacioacuten de las diferentes metodologiacuteas de

desarrollo de aplicaciones moacuteviles multiplataforma es que se llevaron a cabo diferentes

experimentos en simultaacuteneo El primer experimento consiste en el desarrollo de una

aplicacioacuten moacutevil utilizando cada una de las metodologiacuteas estudiadas en el capiacutetulo

anterior con el objetivo de analizar el proceso de desarrollo El segundo experimento

tiene como objetivo analizar el rendimiento de las aplicaciones moacuteviles generadas

mediante las metodologiacuteas estudiadas a traveacutes de un caacutelculo matemaacutetico Por uacuteltimo se

presenta un informe comparativo que pueda ayudar en la toma de decisiones sobre queacute

metodologiacutea utilizar en futuros desarrollos

41 Aplicacioacuten Moacutevil para la plataforma de E-Learning WebUNLP

411 Descripcioacuten del problema WebUNLP es un entorno virtual de ensentildeanza y aprendizaje que permite a los

docentes mediar sus propuestas educativas Alumnos y docentes pueden encontrarse en

ese espacio para compartir materiales de estudio comunicarse y generar una experiencia

educativa en forma virtual [46]

Actualmente WebUNLP cuenta con una versioacuten web enfocada a computadoras de

escritorio o portaacutetiles pero no estaacute adaptada para ser utilizada desde dispositivos moacuteviles

El desarrollo planteado consiste en extender WebUNLP con la construccioacuten de una

aplicacioacuten moacutevil que permita acceder a determinadas funcionalidades del sistema a

traveacutes de un dispositivo moacutevil El enfoque propuesto incluye un anaacutelisis de la misma

solucioacuten comparando el desarrollo nativo web hiacutebrido interpretado y de compilacioacuten

cruzada a fin de establecer cuaacutel de ellos es conveniente

Como ocurre con cualquier desarrollo de software la construccioacuten de una

aplicacioacuten moacutevil implica tener claramente definido su propoacutesito y cuaacuteles requerimientos

debe cumplir En particular para el caso de software para dispositivos moacuteviles resulta

esencial tener objetivos maacutes acotados que en su versioacuten de escritorio [47]

Capiacutetulo 4 Experimentacioacuten

51

Para el caso especiacutefico de WebUNLP se realizoacute el desarrollo incremental de una

aplicacioacuten moacutevil y esta primera versioacuten se enfocoacute en una de sus herramientas de

comunicacioacuten la cartelera Esta herramienta permite comunicar las novedades de un

curso como por ejemplo el cambio de horario de una cursada recordar las fechas de

entrega de un trabajo praacutectico entre otras [46]

412 Anaacutelisis Uno de los primeros interrogantes planteados fue la eleccioacuten de la plataforma En

teacuterminos de mercado los sistemas operativos que predominan en Argentina son Android

e iOS [4815] con lo cual se decidioacute dar soporte a estos dos sistemas operativos

Se analizaron los requerimientos funcionales y no funcionales de forma aislada a la

plataforma y luego de forma especiacutefica para cada una de ellas

A continuacioacuten se presentan algunos requerimientos a cumplir por la aplicacioacuten

El usuario debe poder ingresar a la aplicacioacuten con las mismas credenciales que las

utilizadas para acceder a la versioacuten web de escritorio

El usuario debe poder acceder a la cartelera de todos los cursos en los que

participa ya sea como docente o alumno

El usuario debe recibir una notificacioacuten en su dispositivo cuando una novedad es

publicada en la cartelera Este requerimiento no se puede cumplir en la versioacuten

web accesible desde computadoras de escritorio yo portables

El usuario debe tener la misma experiencia de uso en todas las plataformas

operativas

La aplicacioacuten web existente debe estar sincronizada con la aplicacioacuten moacutevil a

desarrollar esto significa que cualquier cambio realizado desde la aplicacioacuten

moacutevil debe verse reflejado en la versioacuten web y viceversa

413 Disentildeo Para satisfacer los requerimientos planteados en el punto anterior a excepcioacuten de

la notificacioacuten el disentildeo de la aplicacioacuten moacutevil web consiste en una reacuteplica de lo ofrecido

por WEBUNLP adaptaacutendose solamente la interfaz al tamantildeo de pantalla del dispositivo

moacutevil

Capiacutetulo 4 Experimentacioacuten

52

Para el disentildeo de las aplicaciones moacuteviles nativa hiacutebrida interpretada y de

compilacioacuten cruzada la situacioacuten es maacutes compleja En la Figura 17 se presenta la

arquitectura geneacuterica de todos los componentes que participan en este escenario de

desarrollo En ella se observa el acceso desde una PC a WebUNLP y el acceso desde

dispositivos moacuteviles a la informacioacuten de WebUNLP mediante servicios web Para el

desarrollo de los servicios web se disentildeoacute una API Restful dada su simpleza escalabilidad

e interoperabilidad [49]

Figura 17 Arquitectura geneacuterica para aplicacioacuten nativa e hiacutebrida

Asimismo existe una tarea programada (Cron) de ejecucioacuten intermitente a

intervalos regulares de tiempo la cual notifica a los dispositivos moacuteviles correspondientes

cuando se crea una novedad en la cartelera de WebUNLP El Cron identifica el sistema

operativo del dispositivo a notificar y genera dicha notificacioacuten

En cuanto a la interfaz graacutefica se planteoacute un disentildeo independiente de la plataforma

para analizar los aspectos de usabilidad de la aplicacioacuten y luego se realizaron los ajustes

necesarios para cada tipo de aplicacioacuten

En las interfaces disentildeadas la navegacioacuten es en serie en el orden en que se presentan

en el mockup [50] de la Figura 18

Capiacutetulo 4 Experimentacioacuten

53

Figura 18 Mockup independiente del tipo de aplicacioacuten

414 Desarrollo

4141 Aplicacioacuten Nativa para Android

El desarrollo de aplicaciones para la plataforma Android requiere disponer del Java

Development Kit (JDK) y su entorno de programacioacuten conocido como Android SDK

Este uacuteltimo provee libreriacuteas y herramientas necesarias para construir testear y depurar

aplicaciones para Android

El desarrollo de la aplicacioacuten de WebUNLP para Android se realizoacute seguacuten las

convenciones adoptadas por su comunidad porque aplica buenas praacutecticas en la

construccioacuten de interfaces y de la loacutegica detraacutes de ellas el acceso a datos y a servicios

web Para cumplir el requerimiento de las notificaciones en el dispositivo

correspondiente el Cron genera la notificacioacuten mediante el uso del servicio Google Cloud

Messaging (GCM) [51] En la Figura 19 se presentan las interfaces de la aplicacioacuten

desarrollada

Figura 19 Aplicacioacuten nativa para Android

Capiacutetulo 4 Experimentacioacuten

54

4142 Aplicacioacuten Nativa para iOS

La plataforma Apple iOS estaacute basada en un modelo propietario es por ello que el

desarrollo de una aplicacioacuten nativa iOS implica contar con una Apple Mac ejecutando OS

X con Xcode instalado El lenguaje de programacioacuten principal es Objective C Xcode es

el entorno de desarrollo de Apple para todos sus dispositivos y es el encargado de

proporcionar el iOS SDK con las herramientas compiladores y frameworks necesarios

Ademaacutes Xcode viene integrado con simuladores para dispositivos iOS (iPhones y iPads)

que facilitan las etapas de prueba del sistema desarrollado

Para los aspectos referentes a la interfaz graacutefica y la interaccioacuten con el usuario se

siguieron las convenciones propuestas por Apple [52] para lograr una mejor integracioacuten

de la aplicacioacuten con el sistema operativo y mejorar la experiencia del usuario

Por uacuteltimo para satisfacer el requerimiento de notificaciones el Cron notifica al

dispositivo iOS correspondiente mediante el uso del servicio Apple Push Notification

Service (APNs) [53] En la Figura 20 se presentan las interfaces de la aplicacioacuten

desarrollada

Figura 20 Aplicacioacuten nativa para iOS

4143 Aplicacioacuten Web Moacutevil

Se desarrolloacute una aplicacioacuten web capaz de acceder a la cartelera de WebUNLP

disponible para cualquier dispositivo moacutevil que cuente con un navegador que soporte las

caracteriacutesticas utilizadas para el desarrollo HTML5 CSS3 y Javascript

Como la velocidad de transmisioacutenrecepcioacuten de datos de un dispositivo moacutevil a

traveacutes de WiFi y en particular 3G es inferior a la velocidad de una computadora de

Capiacutetulo 4 Experimentacioacuten

55

escritorio la versioacuten web de la cartelera de WebUNLP es liviana y gran parte de los

requerimientos son implementados a traveacutes de Ajax [54] para evitar ante alguacuten cambio

la recarga de la paacutegina completa

Debido a las limitaciones que tienen las aplicaciones que se ejecutan sobre un

navegador no es posible implementar la recepcioacuten de una notificacioacuten en el dispositivo

cuando una novedad es publicada en la cartelera

4144 Aplicacioacuten Hiacutebrida desarrollada con PhoneGap y Jquery Mobile

Para la construccioacuten de la aplicacioacuten WebUNLP hiacutebrida se utilizoacute el framework

PhoneGap [27] el cual permite desarrollar aplicaciones moacuteviles que utiliza tecnologiacuteas

comunes a todos los dispositivos HTML5 CSS y Javascript

Asimismo se utilizoacute el framework Javascript Jquery Mobile [55] para lograr

interfaces con apariencia y comportamiento consistente a traveacutes de las diferentes

plataformas moacuteviles

Con el objetivo de implementar el patroacuten de disentildeo MVC se utilizoacute la libreriacutea

Backbonejs [36]

Por uacuteltimo para satisfacer el requerimiento de notificaciones se utilizoacute el plugin

Pushwoosh [56]

En la figura 5 se presentan las interfaces de la aplicacioacuten desarrollada

Figura 21 Aplicacioacuten hiacutebrida desarrollada con PhoneGap

Capiacutetulo 4 Experimentacioacuten

56

4145 Aplicacioacuten Hiacutebrida desarrollada con Sencha Touch

El desarrollo de WebUNLP utilizando Sencha Touch se vio favorecido por el uso

del patroacuten de disentildeo MVC Esto permitioacute mayor flexibilidad y legibilidad en el coacutedigo

[57] [34]

Sencha ofrece Sencha Command una herramienta multiplataforma de liacutenea de

comandos que provee tareas automatizadas para todo el ciclo completo de una aplicacioacuten

En el caso de WebUNLP se utilizoacute tanto para la generacioacuten del proyecto como para el

empaquetado de la aplicacioacuten

En la Figura 22 se presentan las interfaces de la aplicacioacuten desarrollada

Figura 22 Aplicacioacuten desarrollada con Sencha Touch

4146 Aplicacioacuten Interpretada de WebUNLP con Appcelerator Titanium 3

Para desarrollar una aplicacioacuten moacutevil experimental seguacuten el enfoque interpretado

se utilizoacute el entorno de desarrollo gratuito y open source Appcelerator Titanium 3 [35]

Se destaca la simplicidad y legibilidad de los controladores y modelos de la

aplicacioacuten desarrollada luego de utilizar Alloy el framework de Titanium que permite

disentildear aplicaciones seguacuten el patroacuten de disentildeo MVC Para la construccioacuten de las vistas se

puede optar por la programacioacuten mediante Javascript y la API de Titanium o bien por

una especificacioacuten XML con estilos TSS (Titanium Style Sheets) Esta uacuteltima opcioacuten

simplifica el proceso de creacioacuten de las vistas aunque falta todaviacutea un buen editor visual

de interfaces que lo potencie

Capiacutetulo 4 Experimentacioacuten

57

Para cubrir requerimientos de notificaciones en el dispositivo Titanium provee el

moacutedulo PushNotifications para plataformas Android e iOS

La Figura 24 (a) muestra la experimentacioacuten con Titanium

4147 Aplicacioacuten Generada por Compilacioacuten Cruzada de WebUNLP utilizando XamarinVisual Studio

Tal como se mencionoacute en la seccioacuten 341 Xamarin propone un enfoque de

desarrollo multiplataforma en el que se comparte la codificacioacuten completa de la loacutegica

del negocio Sin embargo las interfaces deben ser programadas de manera independiente

para cada una de las plataformas destino (ver Figura 23) Asiacute la reutilizacioacuten de coacutedigo

seguacuten estudios estadiacutesticos de la compantildeiacutea Xamarin es cercana al 85

Figura 23 Enfoque uacutenico de desarrollo Xamarin

Para el estudio de las aplicaciones generadas por compilacioacuten cruzada se desarrolloacute

la aplicacioacuten moacutevil de WebUNLP utilizando Xamarin integrado con Microsoft Visual

Studio Siguiendo la estrategia maacutes eficiente para trabajar en este entorno se ha creado

una solucioacuten uacutenica conteniendo tres proyectos distintos Uno de ellos se utilizoacute para

generar la aplicacioacuten Android otro para la aplicacioacuten Windwos Phone 8 y el tercero para

la implementacioacuten de una biblioteca de clases portable (PCL por sus siglas en ingleacutes) con

todo el coacutedigo compartido Los tres proyectos fueron desarrollaacutendose de manera conjunta

y concurrente

Aunque una de las ventajas maacutes importantes de Xamarin es la reutilizacioacuten de

coacutedigo eacutesta se ve fuertemente afectada por el tipo de aplicacioacuten que se desarrolla La

relacioacuten existente entre la complejidad de la interfaz y la loacutegica del negocio impacta

directamente sobre la posibilidad de mantener la mayor cantidad de coacutedigo compartido

Capiacutetulo 4 Experimentacioacuten

58

en la PCL En el desarrollo de WebUNLP la reutilizacioacuten de coacutedigo ha sido cercana al

50 Sin embargo no debe despreciarse la ventaja de utilizar el mismo lenguaje entorno

y conjunto de herramientas comunes en el desarrollo de aplicaciones para distintas

plataformas moacuteviles

La Figura 24 (b) presenta la interfaz desarrollada para Windows Phone 8

4148 Aplicacioacuten Generada por Compilacioacuten Cruzada de WebUNLP utilizando Delphi 10 Seattle

Para el profundizar el estudio de las aplicaciones generadas por compilacioacuten

cruzada ademaacutes se desarrolloacute la aplicacioacuten moacutevil de WebUNLP utilizando Delphi 10

Seattle En particular fueron de gran utilidad tanto los componentes provistos por Delphi

para acceder a servicios RESTful como el entorno visual de desarrollo de Delphi 10

Seattle

Para la recepcioacuten de notificaciones en el dispositivo de las novedades de WebUNLP

se utilizoacute el componente TPushEvent conectado al servicio Kinvey [58]

La Figura 24 (c) presenta la interfaz de la aplicacioacuten desarrollada

(a) (b) (c)

Figura 24 Aplicacioacuten desarrollada con a) Titanium b) XamarinVisual Studio y c) Delphi XE

415 Conclusiones del experimento WebUNLP Seleccionar un dominio para desarrollar un caso experimental tiene sus

particularidades La novedad de disponer una aplicacioacuten moacutevil no es motivo suficiente

que justifique tal desarrollo Es necesario satisfacer un conjunto de requerimientos

claramente planteados

Capiacutetulo 4 Experimentacioacuten

59

WebUNLP es un entorno virtual de ensentildeanza y aprendizaje utilizado por diversos

cursos de grado y postgrado de la Universidad Nacional de La Plata Por ende la cantidad

de usuarios beneficiados por acceder desde cualquier lugar a este entorno es importante

De esta manera se optoacute por elegir dicho espacio virtual para ser replicado en una

versioacuten moacutevil que no soacutelo permita acercarlo a sus usuarios sino que ademaacutes ampliacutee sus

funciones en este caso puntualmente para la cartelera

Para el desarrollo de esta experimentacioacuten se desarrolloacute la misma aplicacioacuten para

los cinco tipos de enfoques de desarrollo moacutevil (web nativa hiacutebrida interpretada y

generada por compilacioacuten cruzada)

Se destaca la gran simpleza de generar la versioacuten web dado que se utilizan las

mismas herramientas tecnoloacutegicas que las usadas para el desarrollo de cualquier

aplicacioacuten web tradicional La principal diferencia en este sentido radica en la limitacioacuten

de espacio en la pantalla del dispositivo No obstante el mayor contraste estaacute dado en que

no es posible acceder a todas las capacidades de hardware del dispositivo lo que impidioacute

implementar uno de los requerimientos probablemente el maacutes interesante la notificacioacuten

de novedades de la cartelera de WebUNLP al usuario

Por otra parte las versiones nativas han cumplido todos los requerimientos Aunque

la mayor desventaja consiste en la no portabilidad lo que implicoacute un desarrollo especiacutefico

para la plataforma que se desee cubrir En este trabajo se han presentado los desarrollos

para Android e iOS sistemas operativos maacutes usados en Argentina con un costo de

desarrollo y mantenimiento inherente mayor

Para el caso del enfoque hiacutebrido tanto la versioacuten de WebUNLP desarrollada con

PhoneGap y Jquery Mobile como la versioacuten desarrollada con Sencha Touch han logrado

conjugar la simpleza del desarrollo web con el uso de todas las capacidades del

dispositivo Este tipo de enfoque pretende suplir las desventajas de los dos enfoques

previos hecho que lo posiciona como una eleccioacuten realmente interesante siempre

condicionada por los requerimientos especiacuteficos a cumplir

Por el lado del modo de desarrollo interpretado la versioacuten de WebUNLP

desarrollada con Titanium logroacute resolver todos los requerimientos previamente

planteados Al igual que en el enfoque hiacutebrido es un punto a destacar que el desarrollo

de la aplicacioacuten con Titanium es relativamente simple y es posible reutilizar todo el

Capiacutetulo 4 Experimentacioacuten

60

coacutedigo entre plataformas Lo que lo hace la eleccioacuten prima facie es el hecho de obtener

interfaces totalmente nativas algo que no se lograba mediante el enfoque hiacutebrido

Por uacuteltimo las versiones de WebUNLP generadas con el enfoque de compilacioacuten

cruzada con Xamarin y Delphi lograron cumplir los requerimientos planteados Se

destaca el hecho de que se genera interfaces totalmente nativas pero considero que el

costo es muy alto se debe disentildear las interfaces para cada plataforma de manera

independiente lo que hace que no se pueda reutilizar todo el coacutedigo fuente de la

aplicacioacuten

42 Enfoques de desarrollo Anaacutelisis comparativo de rendimiento 421 Descripcioacuten del Problema

Hace apenas unas deacutecadas atraacutes el uso de los sistemas de software estaba

restringido a un grupo reducido de usuarios especializados Aquella eacutepoca contrasta

fuertemente con la actualidad en la que los smartphones pequentildeas computadoras moacuteviles

de propoacutesito general se han vuelto cotidianos y omnipresentes Estos dispositivos pueden

utilizarse para llevar a cabo tareas complejas y criacuteticas requiriendo la mejora continua de

las capacidades de coacutemputo la disponibilidad el rendimiento eficiente entre otras

necesidades La evolucioacuten vertiginosa de esta tecnologiacutea ejerce presioacuten en la adaptacioacuten

de la Ingenieriacutea de Software

Respecto del desarrollo para dispositivos moacuteviles se debe considerar una serie de

caracteriacutesticas propias de esta actividad que no estaban presentes en el desarrollo

tradicional de software [59] Es necesario tener en cuenta sobre queacute tipo de dispositivos

se debe ejecutar la aplicacioacuten a construir La diversidad de plataformas lenguajes de

programacioacuten herramientas de desarrollo estaacutendares protocolos y tecnologiacuteas de red

algunas limitaciones de ciertos dispositivos y las exigencias de tiempo del mercado entre

otros constituyen algunos de los problemas a tratar

En la mayoriacutea de los casos el eacutexito de un producto de software para dispositivos

moacuteviles estaraacute condicionado por el nivel de popularidad que logre alcanzar Para

maximizar su presencia en el mercado es necesario que la aplicacioacuten pueda ejecutarse

sobre la mayor cantidad de plataformas moacuteviles existentes especialmente sobre las dos

maacutes populares Android e iOS [60] Para lograr este objetivo existen dos alternativas

Capiacutetulo 4 Experimentacioacuten

61

i) Desarrollar aplicaciones especiacuteficas para cada plataforma impulsando en

paralelo varios proyectos de desarrollo con las herramientas y lenguajes propios de cada

una de ellas Estas aplicaciones analizadas previamente en este trabajo se denominan

aplicaciones nativas

ii) Generar aplicaciones que puedan ejecutarse en forma directa sobre maacutes de una

plataforma de sistema operativo a partir de un uacutenico proyecto de desarrollo Estas

aplicaciones como ya se ha presentado en este trabajo se denominan aplicaciones

multiplataforma

En los uacuteltimos antildeos se ha incrementado el intereacutes de la comunidad de Ingenieriacutea de

Software por el estudio del desarrollo de aplicaciones multiplataforma para dispositivos

moacuteviles

En [5] se presenta un anaacutelisis comparativo de enfoques de desarrollo de aplicaciones

multiplataforma para dispositivos moacuteviles proponiendo la siguiente taxonomiacutea

aplicaciones web moacuteviles aplicaciones hiacutebridas aplicaciones interpretadas y

aplicaciones generadas por compilacioacuten cruzada

En [7] y [8] se analizan aspectos generales de frameworks de desarrollo

multiplataforma para dispositivos moacuteviles

En [61] se comparan aspectos no funcionales para los diferentes enfoques de

desarrollo de aplicaciones multiplataforma para dispositivos moacuteviles

En [9] se analizaron ventajas y desventajas de los enfoques de desarrollo

multiplataforma mencionados desde el punto de vista del Ingeniero de Software

La eleccioacuten del modo de desarrollo de aplicaciones para dispositivos moacuteviles

depende de varios factores Uno de ellos en muchos casos esencial es el tiempo de

ejecucioacuten El intereacutes por optimizar el tiempo de ejecucioacuten de una aplicacioacuten de software

es intriacutenseco a la disciplina informaacutetica Esto se evidencia entre otras cosas por la

evolucioacuten del poder de coacutemputo de los procesadores Ademaacutes el rendimiento eficiente

es uno de los atributos que las aplicaciones de software deben satisfacer seguacuten diversos

estaacutendares de calidad entre otros ISOIEC 9126 e ISOIEC 25010 [62]

En lo que respecta al desarrollo de aplicaciones para dispositivos moacuteviles es

oportuno considerar el tiempo de ejecucioacuten de las aplicaciones por diversos motivos

El tiempo de ejecucioacuten de una aplicacioacuten estaacute fuertemente ligado al consumo de

Capiacutetulo 4 Experimentacioacuten

62

energiacutea [63] el cual estaacute limitado por la capacidad de la bateriacutea de los dispositivos

Asimismo el rendimiento de las aplicaciones se ve reflejado principalmente

mediante las calificaciones de los usuarios en las tiendas de aplicaciones en liacutenea

Aplicaciones con bajo rendimiento pueden implicar usuarios disconformes produciendo

publicidad negativa [60] Andre Charland y Brian Leroux identifican al tiempo de

ejecucioacuten como uno de los problemas principales a resolver en el desarrollo de

aplicaciones multiplataforma y afirman que a los usuarios finales les preocupa la calidad

del software y la experiencia de uso [64]

Corral Sillitti y Succi realizaron un anaacutelisis de rendimiento comparativo entre

aplicaciones nativas y aplicaciones hiacutebridas utilizando el framework Phonegap para una

versioacuten del sistema operativo Android [65]

Es importante destacar que no se han encontrado estudios que evaluacuteen y comparen

el rendimiento entre los diversos modos de desarrollo multiplataforma de acuerdo a la

taxonomiacutea propuesta en [5] aplicaciones web moacuteviles aplicaciones hiacutebridas

aplicaciones interpretadas y aplicaciones generadas por compilacioacuten cruzada Esta

taxonomiacutea es la que se utiliza de referencia en este trabajo

El presente apartado realiza un anaacutelisis comparativo de rendimiento de aplicaciones

para dispositivos moacuteviles generadas por el enfoque de desarrollo nativo y los distintos

enfoques de desarrollo multiplataforma seguacuten [5]

En la seccioacuten siguiente se describe el experimento utilizado para evaluar tiempos

de ejecucioacuten en aplicaciones nativas y en los diversos modos de desarrollo de aplicaciones

moacuteviles multiplataforma y en las secciones posteriores se muestran y analizan los

resultados obtenidos se presentan las conclusiones y el trabajo futuro

422 Desarrollo

4221 Disentildeo de las pruebas

Todas las pruebas cuyos resultados se presentan en este trabajo fueron realizadas

sobre dispositivos moacuteviles con sistemas operativos Android e iOS dado que en la

actualidad abarcan gran parte del mercado mundial de acuerdo a lo indicado en [60]

Para llevar a cabo la experimentacioacuten se seleccionaron los frameworks de desarrollo

multiplataforma seguacuten las alternativas presentadas en [10] Se disentildearon pruebas para

evaluar el rendimiento de Apache Cordova [28] Appcelerator Titanium [35] y Xamarin

Capiacutetulo 4 Experimentacioacuten

63

[41] que se corresponden con los modos de desarrollo hiacutebrido interpretado y compilacioacuten

cruzada respectivamente Tambieacuten se experimentoacute con otros dos frameworks de

desarrollo multiplataforma que recientemente han ganado popularidad NativeScript

(desarrollo interpretado) y Corona (compilacioacuten cruzada) Finalmente se incluyeron al

conjunto de pruebas las aplicaciones web y el enfoque nativo de desarrollo para Android

e iOS De este modo se logroacute una muestra razonablemente representativa de las diversas

opciones existentes en la actualidad

Para la realizacioacuten de las pruebas se utilizaron seis dispositivos moacuteviles distintos

(ver Tabla 2) tres de ellos con sistema operativo Android identificados como DA1 DA2 y

DA3 (dos smartphone y una tablet) y tres con sistema operativo iOS identificados como

DI1 DI2 y DI3 (dos smartphone y una tablet)

ID Sistema Operativo Caracteriacutesticas

DA1 Android 44

Tipo Smartphone Marca Motorola

Modelo Moto-G2 Procesador Quad-core 12 GHz Cortex-A7

RAM 1GB Snapdragon 400

DA2 Android 502

Tipo Smartphone Marca Samsung

Modelo S6 Procesador Octa-core (4x21 GHz Cortex-A57 amp 4x15

GHz Cortex-A53) RAM 3GB Exynos 7420 Octa

DA3 Android 422

Tipo Tablet Marca Samsung Modelo Tab 2

Procesador Dual-core 10 GHz RAM 1GB TI OMAP 4430

DI1 iOS 92

Tipo Smartphone Marca Apple Modelo 5S

Procesador Dual-core 13 GHz Cyclone (ARM v8-based)

RAM 1GB Apple A7

DI2 iOS 91

Tipo Smartphone Marca Apple

Modelo 6 plus Procesador Dual-core 14 GHz Typhoon (ARM v8-

based) RAM 1GB Apple A8

DI3 iOS 91 Tipo Tablet

Marca Apple Modelo Ipad Air

Capiacutetulo 4 Experimentacioacuten

64

Procesador Dual-core 13 GHz Cyclone (ARM v8-based)

RAM 1GB Apple A7 Tabla 2 Dispositivos moacuteviles utilizados en el experimento

Se definieron siete escenarios de anaacutelisis distintos uno por cada estrategia de

desarrollo utilizada

1 Nativo para Android y nativo para iOS 2 Aplicaciones web (multiplataforma) 3 Apache Cordova (multiplataforma hibrido) 4 Appcelerator Titanium (multiplataforma interpretado) 5 NativeScript (multiplataforma interpretado) 6 Xamarin (multiplataforma compilacioacuten cruzada) 7 Corona (multiplataforma compilacioacuten cruzada)

En los seis dispositivos se llevaron a cabo pruebas para cada uno de los siete

escenarios mencionados definiendo asiacute un total de 42 casos de prueba

Con el fin de evaluar la velocidad de procesamiento se planteoacute un caacutelculo simple

que incluyoacute varias iteraciones funciones matemaacuteticas y aritmeacutetica de punto flotante que

se resume en la siguiente serie

119904119890119903119894119890 =sum sum (log2(119896) +3119896

2119895+ radic119896

100000

119896=1

+ 119896119895minus1)

5

119895=1

A modo de ejemplo en la Figura 25 se muestra el coacutedigo multiplataforma

desarrollado en Apache Cordova para el caacutelculo de la serie definida

El experimento planteado permite medir con precisioacuten la variable analizada en este

caso el tiempo de ejecucioacuten requerido para realizar un caacutelculo matemaacutetico intensivo

Este tipo de caacutelculo matemaacutetico es frecuente en diversas aplicaciones que se

ejecutan en dispositivos moacuteviles por ejemplo juegos aplicaciones con realidad

aumentada aplicaciones para tratamiento de imaacutegenes entre otras en las cuales no

siempre es posible utilizar el poder de la Unidad de Procesamiento Grafico (GPU) para

el caacutelculo

El coacutedigo fuente de los experimentos llevados a cabo se encuentra disponible en

[66]

En las siguientes secciones se describe la experimentacioacuten y se analizan los

resultados obtenidos

Capiacutetulo 4 Experimentacioacuten

65

4222 Recoleccioacuten de datos

Para cada uno de los 42 casos de prueba definidos se realizaron 30 ejecuciones

independientes del experimento disentildeado obteniendo en cada caso una muestra T = T1

T2 hellip T30 con Ti = tiempo requerido para el caacutelculo de la serie en la i-eacutesima ejecucioacuten

del experimento planteado El tiempo Ti se expresa en milisegundos

Para caracterizar cada una de las muestras obtenidas se han calculado los

estadiacutesticos y S que se corresponden con la media (o promedio muestral) y la

desviacioacuten estaacutendar muestral (ver Tabla 3)

var startTime = new Date()getTime()

var serie = 0

for ( var j=1 j lt= 5 j++ )

for ( var k=1 k lt= 100000 k++ )

series = series + (Mathlog(k)MathLN2) + (3k2j) +

Mathsqrt(k) + Mathpow(k j-1)

var finalTime = new Date()getTime()

var duration = finalTime - startTime

documentgetElementById(result)innerHTML = duration + -gt + series

Figura 25 Caacutelculo de serie coacutedigo multiplataforma desarrollado en Apache Cordova

Capiacutetulo 4 Experimentacioacuten

66

Dada la muestra T=T1 T2 hellip Tn

Media o promedio muestral = (

1

119899)sum119879119894

119899

119894=1

Desviacioacuten estaacutendar muestral 119878 = radic

1

119899 minus 1sum(119879119894 minus )2119899

119894=1

Tabla 3 Estadiacutesticos utilizados en el anaacutelisis de los datos

423 Resultados Obtenidos En la Tabla 4 se presenta una siacutentesis de los resultados obtenidos conformada por

los valores y S calculados para cada caso de prueba planteado Estos valores permiten

comparar el rendimiento de las aplicaciones generadas a partir de los distintos enfoques

de desarrollo evaluadas sobre cada uno de los seis dispositivos utilizados

Los valores presentados en la Tabla 4 y graficados con diagramas de barras en la

Figura 26 sugieren un anaacutelisis por separado de los casos con sistema operativo Android

y los casos con sistema operativo iOS Claramente las siluetas delineadas en los

diagramas de barras de la Figura 26 se repiten de forma similar en los escenarios con el

mismo sistema operativo pero se diferencian notablemente entre distintos sistemas

operativos

Nativo WebApp Apache Cordova Titanium NativeScript Xamarin Corona

DA1 53293 18627 23033 21167 18730 39517 140173

S 1614 632 1422 2495 939 895 1260

DA2 21180 9067 8577 9563 8967 21100 60053

S 1997 1248 883 764 916 669 595

DA3 76380 17273 19060 19270 18350 37933 134430

S 2898 1551 936 1680 304 831 2339

DI1 413 5710 32373 29977 25203 12543 3963

S 078 1655 1662 401 728 1103 085

DI2 413 4190 26397 24113 22343 10303 9863

S 073 538 1544 495 861 491 613

DI3 253 4167 29223 27267 22597 11053 10967

S 057 444 1082 550 277 390 275

Tabla 4 Siacutentesis de resultados obtenidos

Capiacutetulo 4 Experimentacioacuten

67

Figura 26 Diagrama de barras con las muestras recolectadas (las barras muestran el tiempo promedio expresado en milisegundos)

Capiacutetulo 4 Experimentacioacuten

68

424 Anaacutelisis de Resultados Debido a las diferencias de hardware de los dispositivos utilizados no es prudente

comparar el rendimiento de las aplicaciones nativas en Android con respecto a las de

iOS No obstante de los resultados obtenidos es posible inferir que el enfoque nativo en

iOS resulta mucho maacutes eficiente que el enfoque nativo en Android Existen diversos

factores que presumen justificar este hecho entre ellos la diferencia inherente de ejecutar

coacutedigo Objective C en iOS comparado con ejecutar coacutedigo Java en Android el cual

necesita del Android Runtime (ART) para su funcionamiento ralentizaacutendolo

Respecto de las aplicaciones web multiplataforma los resultados de rendimiento

resaltaron positivamente en relacioacuten al resto tanto en Android como en iOS Asiacute el

enfoque de desarrollo multiplataforma web seriacutea una opcioacuten conveniente para alcanzar

un buen rendimiento en todos los dispositivos moacuteviles independientemente de su sistema

operativo Sin embargo esta eleccioacuten podriacutea verse afectada por las limitaciones de estas

aplicaciones para acceder en forma completa a las capacidades especiacuteficas del dispositivo

Respecto de los enfoques hiacutebrido e interpretado -analizados a traveacutes de las

tecnologiacuteas Coacuterdova Titanium y NativeScript- es importante destacar que si bien estos

enfoques trabajan de modo distinto entre siacute tienen algo en comuacuten la ejecucioacuten de coacutedigo

JavaScript En este sentido el motor de JavaScript -encargado de convertir el coacutedigo

JavaScript en coacutedigo optimizado para que luego lo interprete un WebView- cumple un

rol determinante Las pruebas de estos enfoques en Android -que utiliza el motor de

JavaScript V8- tuvieron un comportamiento similar al enfoque web y comportamiento

superior que el enfoque nativo y el enfoque de compilacioacuten cruzada Por el contrario en

los dispositivos moacuteviles con iOS -que utiliza el motor JavaScriptCore- los resultados de

estas pruebas fueron peores que en los enfoques nativos web y de compilacioacuten cruzada

En los dispositivos moacuteviles con iOS los casos de compilacioacuten cruzada -analizados

a traveacutes de las tecnologiacuteas Xamarin y Corona- obtuvieron mejores resultados que los

casos hiacutebridos e interpretados pero mostraron peor rendimiento que el enfoque nativo y

que el enfoque web En cambio en los dispositivos moacuteviles con Android los resultados

de las pruebas con las aplicaciones construidas mediante el enfoque de compilacioacuten

cruzada fueron los peores La necesidad de ejecucioacuten de coacutedigo Java a traveacutes del Android

Runtime entre otros factores justifican este resultado

Capiacutetulo 4 Experimentacioacuten

69

425 Conclusiones Se ha presentado un estudio comparativo sobre el tiempo de procesamiento de

aplicaciones de software para dispositivos moacuteviles generadas con distintos enfoques de

desarrollo

Los escenarios de prueba disentildeados incluyeron los dos sistemas operativos para

dispositivos moacuteviles con mayor presencia en el mercado Android e iOS ejecutaacutendose

cada uno de ellos sobre dos smartphones (considerados de gama media y gama alta al

momento en que este trabajo fue escrito) y una Tablet

Sobre estos seis dispositivos se realizoacute un estudio de rendimiento para las

aplicaciones construidas seguacuten los enfoques de desarrollo nativos y multiplataforma

mediante un conjunto de aplicaciones que fueron desarrolladas para tal fin

1 Aplicacioacuten nativa para Android 2 Aplicacioacuten nativa para iOS 3 Aplicacioacuten web (multiplataforma) 4 Aplicacioacuten Apache Cordova (multiplataforma hibrido) 5 Aplicacioacuten Appcelerator Titanium 6 (multiplataforma interpretado) 7 Aplicacioacuten NativeScript (multiplataforma interpretada) 8 Aplicacioacuten Xamarin (multiplataforma compilacioacuten cruzada) 9 Aplicacioacuten Corona (multiplataforma compilacioacuten cruzada)

En todos los dispositivos con sistema operativo Android el peor rendimiento fue

evidenciado por Corona seguido por el enfoque nativo y Xamarin Esta situacioacuten es

totalmente opuesta a los resultados obtenidos sobre el sistema operativo iOS en doacutende las

tecnologiacuteas de desarrollo mencionadas se mostraron siempre entre las cuatro mejores En

particular es destacable la supremaciacutea del enfoque nativo frente a todos los demaacutes para el

caso de los dispositivos con iOS

Respecto al mejor rendimiento en los dispositivos Android no es posible identificar

claramente cuaacutel es el enfoque maacutes conveniente Tanto las aplicaciones web como

Coacuterdova NativeScript y Titanium alcanzaron buenos resultados en relacioacuten al resto

Nuevamente esta situacioacuten se contrapone con los datos obtenidos sobre los dispositivos

iOS en los que Coacuterdova Titanium y NativeScript obtuvieron las peores mediciones entre

las tecnologiacuteas utilizadas No ocurrioacute lo mismo con las aplicaciones web en iOS que

tambieacuten produjeron buenos resultados en relacioacuten al resto

Capiacutetulo 4 Experimentacioacuten

70

En liacuteneas generales independientemente del sistema operativo las aplicaciones

web han mostrado un buen rendimiento si se consideran todos los casos analizados

Actualmente al desarrollar un sistema de software existe la posibilidad de generar

su versioacuten para dispositivos moacuteviles Esta tarea muchas veces no es simple y una de las

decisiones maacutes importantes a tomar es elegir el enfoque de desarrollo

A partir de este trabajo se dispone de un indicador de rendimiento que puede ser

uacutetil para el Ingeniero de Software que debe seleccionar un enfoque de desarrollo de

software para dispositivos moacuteviles

Por otra parte no se han encontrado trabajos de otros autores donde se haya

analizado el rendimiento en todos los enfoques de desarrollo de software para dispositivos

moacuteviles Este tema tal como se indicoacute en la introduccioacuten es importante para la

comunidad de Ingenieriacutea de Software y los trabajos analizados hasta el momento se han

concentrado solo en los enfoques nativos yo hiacutebridos

43 Anaacutelisis comparativo de enfoques de Desarrollo de Aplicaciones Moacuteviles

Como se estudioacute en las secciones anteriores existen diferentes enfoques de

desarrollo de aplicaciones moacuteviles

Una opcioacuten es desarrollar aplicaciones moacuteviles nativas las cuales hacen uso de

todas las capacidades del dispositivo moacutevil y permiten una alta experiencia de usuario

debido a que las interfaces de usuario se componen por componentes nativos resultando

semejantes al resto de las interfaces del sistema operativo No obstante el desarrollo no

puede ser reutilizado para dar soporte a otras familias de sistemas operativos implicando

mayores costos de desarrollo y mantenimiento

En contraposicioacuten al desarrollo nativo surgioacute el desarrollo multiplataforma dando

la posibilidad de desarrollar un uacutenico producto y ejecutarlo en diferentes plataformas En

este sentido se estudiaron diferentes enfoques desarrollo web moacutevil hiacutebrido

interpretado y generado por compilacioacuten cruzada Cada uno de estos enfoques cuenta con

ciertas caracteriacutesticas que naturalmente los hacen diferenciar con ventajas y

desventajas

Se identificaron diversos factores que pueden ser utilizados para analizar las

Capiacutetulo 4 Experimentacioacuten

71

aplicaciones que se generan mediante los enfoques de desarrollo nativo y

multiplataforma los cuales se detallan a continuacioacuten

Experiencia de usuario conjunto de factores y elementos que hacen referencia

al nivel de satisfaccioacuten total de los usuarios cuando utilizan un producto o sistema

El resultado es la generacioacuten de una percepcioacuten positiva o negativa de dicho

servicio producto o dispositivo

Plataformas alcanzadas se ha visto en capiacutetulos anteriores que existen distintas

familias de sistemas operativos Seguacuten el modo de desarrollo elegido se puede

desarrollar aplicaciones para una plataforma especiacutefica o por varias

Costo del desarrollo el desarrollo puede ser maacutes o menos costoso seguacuten si

requiere codificar las soluciones de forma especiacutefica para cada sistema operativo

o si es posible la reutilizacioacuten de coacutedigo

Costo del mantenimiento la correccioacuten de errores o agregados de nuevas

funcionalidades puede requerir codificar de forma especiacutefica para cada sistema

operativo Ademaacutes se debe tener en cuenta si deben convivir diferentes versiones

del mismo producto

Entorno de desarrollo integrado Software que asiste al programador en la

construccioacuten de aplicaciones

Interfaces de usuario factor que analiza los tipos de componentes utilizados para

construir las interfaces de usuario Como se mencionoacute al analizar los distintos

enfoques de desarrollo la eleccioacuten de la herramienta a utilizar incide en si las

interfaces estaraacuten compuestas mediante componentes nativos o componentes web

los cuales pueden ser decorados para simular componentes nativos

Acceso total al dispositivo posibilidad de acceder mediante las herramientas de

desarrollo a todas las capacidades del dispositivo como la caacutemara sensores entre

otros

Modo de instalacioacuten se refiere a si la aplicacioacuten puede ser instalada desde las

tiendas de aplicaciones o es accesible sin instalacioacuten desde un navegador de

Internet

Rendimiento factor que analiza la ejecucioacuten de tareas y los tiempos asociados

Capiacutetulo 4 Experimentacioacuten

72

en su resolucioacuten

Uso offline capacidad que tiene la aplicacioacuten de funcionar sin estar conectada a

internet

Distribucioacuten a traveacutes de las tiendas posibilidad de descargar la aplicacioacuten desde

las tiendas de aplicaciones

Categoriacuteas de aplicaciones a desarrollar tipo de aplicacioacuten que se desea

desarrollar

Porcentaje de coacutedigo a reutilizar Cantidad de liacuteneas de coacutedigo con respecto al

total que pueden ser reutilizadas para en la generacioacuten de aplicaciones

multiplataforma

Con el objetivo de estudiar coacutemo se comportan e inciden estos factores en los

distintos enfoques de desarrollo se realizoacute un estudio comparativo de los diferentes

criterios a tener en cuenta Dicho estudio se sintetiza en la Tabla 5

Capiacutetulo 4 Experimentacioacuten

73

Factor a analizar Desarrollo Nativo Desarrollo Web Desarrollo Hiacutebrido Desarrollo

Interpretado

Desarrollo Generado

por Compilacioacuten

Cruzada

Experiencia de Usuario

Alta Muy Baja Baja Alta Alta

Plataformas alcanzadas

Se desarrolla

exclusivamente

para una

plataforma destino

Cualquier

plataforma Se

necesita solo un

navegador y acceso a

internet

Es posible compilar

para Android iOS

Windows Phone

Es posible compilar

para Android iOS

Windows Phone

Es posible compilar

para Android iOS

Windows Phone

Costo del desarrollo

Muy Alto Muy Bajo Bajo Medio Medio a Alto

Costo del mantenimiento

Muy Alto Muy Bajo Medio Alto Alto a Muy Alto

Entorno de desarrollo integrado

IDE uacutenico por SO Muacuteltiples opciones Plugins para IDE

geneacutericos

Algunos frameworks

disponen de IDE

especiacutefico

IDE uacutenico por

framework

Interfaces de usuario

Nativas Web Web Nativas Nativas

Acceso total al dispositivo

Si No Si Si Si

Modo de instalacioacuten

Descargar desde la Sin instalaciones Descargar desde la Descargar desde la Descargar desde la

Capiacutetulo 4 Experimentacioacuten

74

Factor a analizar Desarrollo Nativo Desarrollo Web Desarrollo Hiacutebrido Desarrollo

Interpretado

Desarrollo Generado

por Compilacioacuten

Cruzada

tienda de

aplicaciones e

instalar

tienda de aplicaciones

e instalar

tienda de aplicaciones e

instalar

tienda de aplicaciones e

instalar

Rendimiento Muy Alto Muy Bajo Bajo a Medio Alto Medio a Alto

Uso offline Si No Si Si Si

Distribucioacuten a traveacutes de las tiendas

Si No Si Si Si

Categoriacutea de aplicaciones a desarrollar

Aplicaciones que

demandan muchos

recursos o que

requiere una alta

experiencia de

usuario

Sitios web existentes Sitios web

encapsulados como

aplicacioacuten para ser

distribuidas a traveacutes

de tiendas

Aplicaciones simples a

complejas

Aplicaciones simples a

complejas

Porcentaje de Coacutedigo a reutilizar

0 100 Cerca del 100 Cerca del 90 Entre el 60 y 85

Tabla 5 Anaacutelisis comparativo de enfoques de desarrollo de aplicaciones moacuteviles

Capiacutetulo 5 Conclusiones

75

Capiacutetulo 5 Conclusiones

Inicialmente los dispositivos moacuteviles fueron pensados y disentildeados con un propoacutesito

particular A traveacutes de los antildeos el crecimiento tecnoloacutegico ha permitido incorporar

funcionalidades adicionales lo que ha posibilitado expandir el marco de uso

Actualmente el poder de coacutemputo subyacente en una gran variedad de dispositivos

moacuteviles ha generado nuevas posibilidades lo que constituye un reto para los ingenieros

de software

Asimismo y tal como se mencionoacute en capiacutetulos anteriores existen diversos

sistemas operativos para dispositivos moacuteviles siendo los maacutes populares Android iOS y

Windows Phone Debido a que el eacutexito de un producto de software estaacute vinculado en

gran parte a su uso masivo surge la necesidad de desarrollar aplicaciones moacuteviles

teniendo en cuenta cada una de estas plataformas

El desarrollo de software para dispositivos moacuteviles tiene caracteriacutesticas propias que

difieren del desarrollo tradicional Esta actividad reciente impensada deacutecadas atraacutes

marca un antes y un despueacutes en la evolucioacuten de la Ingenieriacutea de Software Es de esperar

que dicha evolucioacuten continuacutee y por consiguiente que los enfoques de desarrollo para

dispositivos moacuteviles cambien o sean reemplazados por otros Es claro que por el

momento existen cinco posibilidades de desarrollo de una misma aplicacioacuten moacutevil

Aplicaciones nativas

Aplicaciones web

Aplicaciones hiacutebridas

Aplicaciones interpretadas

Aplicaciones generadas por compilacioacuten cruzada

Para un completo anaacutelisis de cada enfoque de desarrollo es que se disentildearon una

serie de casos de estudio El primero de ellos consistioacute en desarrollar una aplicacioacuten moacutevil

para cada enfoque de desarrollo presentado Teniendo este primer objetivo definido se

decidioacute extender el entorno virtual de ensentildeanza y aprendizaje WebUNLP a traveacutes de

una aplicacioacuten moacutevil enfocada en la cartelera de novedades de los cursos La aplicacioacuten

Capiacutetulo 5 Conclusiones

76

moacutevil debiacutea permitir el ingreso de alumnos y docentes con las mismas credenciales que

las utilizadas en la versioacuten web y debiacutea mostrar informacioacuten sincronizada con la web

sobre las novedades publicadas en las carteleras de los cursos Asimismo cuando los

docentes publiquen novedades aquellos alumnos pertenecientes al curso deben recibir

una notificacioacuten en su dispositivo moacutevil

Luego de desarrollar las aplicaciones moacuteviles para cada enfoque de desarrollo se

pueden elaborar algunas conclusiones

Se destaca la simpleza a la hora de generar la versioacuten web moacutevil pero se observan

limitaciones al no poder acceder a todas las capacidades de hardware del dispositivo

El desarrollo de las aplicaciones nativas resultoacute oacuteptimo si se lo compara con los

requerimientos oportunamente planteados con la desventaja de que las aplicaciones no

son portables implicando desarrollos especiacuteficos para cada plataforma que se desee

cubrir Por otro lado el desarrollo de las aplicaciones hibridas ndashutilizando PhoneGap y

Sencha- lograron conjugar la simpleza del desarrollo web con el uso de todas las

capacidades del dispositivo posicionaacutendolo como una eleccioacuten realmente interesante De

igual manera la aplicacioacuten interpretada desarrollada mediante Titanium logroacute resolver

todos los requerimientos previamente planteados se destaca que el desarrollo fue

relativamente simple y es posible reutilizar todo el coacutedigo entre plataformas El hecho de

obtener interfaces totalmente nativas la posiciona como la alternativa ideal Por uacuteltimo

las aplicaciones generadas con el enfoque de compilacioacuten cruzada (Delphi y Xamarin)

lograron cumplir los requerimientos planteados la obtencioacuten de interfaces totalmente

nativas es algo a destacar pero conlleva un alto costo ya que se debe disentildear las interfaces

para cada plataforma de manera independiente

El segundo experimento del presente trabajo consistioacute en analizar el rendimiento

de las aplicaciones generadas mediante cada enfoque de desarrollo En total se

desarrollaron mediante distintas tecnologiacuteas nueve aplicaciones Las pruebas se

realizaron en los dos sistemas operativos de mayor relevancia Android e iOS a traveacutes de

seis dispositivos (cuatro smartphones y dos tablets)

En todos los dispositivos con sistema operativo Android el peor rendimiento se

encontroacute en la aplicacioacuten generada por Corona seguido por el enfoque nativo y Xamarin

En cambio estas tecnologiacuteas se mostraron siempre entre las cuatro mejores sobre el

sistema operativo iOS

Capiacutetulo 5 Conclusiones

77

Respecto al mejor rendimiento en los dispositivos Android no es posible identificar

claramente cuaacutel es el enfoque maacutes conveniente Tanto las aplicaciones web como

Coacuterdova NativeScript y Titanium obtuvieron buenos resultados de rendimiento en

relacioacuten al resto Nuevamente esta situacioacuten se contrapone con los datos obtenidos sobre

los dispositivos iOS en los que Coacuterdova Titanium y NativeScript obtuvieron las peores

mediciones entre las tecnologiacuteas utilizadas No ocurrioacute lo mismo con las aplicaciones web

en iOS que tambieacuten produjeron buenos resultados en relacioacuten al resto

En liacuteneas generales independientemente del sistema operativo las aplicaciones

web han mostrado un buen rendimiento si se consideran todos los casos analizados

Por uacuteltimo se elaboroacute un anaacutelisis comparativo de las caracteriacutesticas inherentes a

cada enfoque de desarrollo Se identificaron ciertos factores de intereacutes que la comunidad

de ingenieriacutea de software considera al elegir queacute tecnologiacutea utilizar y se analizoacute su

impacto en cada enfoque de desarrollo

Capiacutetulo 6 Trabajo Futuro

78

Capiacutetulo 6 Trabajo Futuro

Si bien se estudiaron en el presente trabajo diversas tecnologiacuteas para el desarrollo

de aplicaciones moacuteviles se planea profundizar el estudio analizando otras herramientas

multiplataforma disponibles en el mercado como Ionic [32] NativeScript [38] Applause

[40] React Native [67] entre otras

Ademaacutes se plantea como liacutenea de trabajo futuro ampliar el anaacutelisis comparativo de

rendimiento incluyendo otros aspectos del desarrollo para dispositivos moacuteviles como

por ejemplo el acceso a disco el consumo de bateriacutea y el tiempo de renderizacioacuten de

imaacutegenes

Por uacuteltimo es deseable estudiar la experiencia de usuario en las aplicaciones

generadas por cada enfoque de desarrollo de aplicaciones para dispositivos moacuteviles

Capiacutetulo 6 Trabajo Futuro

79

Bibliografiacutea

80

Bibliografiacutea

[1] A Talukder H Ahmed and R Yavagal Mobile Computing Technology Applications and Service Creation Tata McGraw-Hill Ed 2010

[2] Abrahamsson P et al Mobile-D An Agile Approach for Mobile Application Development in In Companion To the 19th Annual ACM SIGPLAN Conference on Object-Oriented Programming Systems Languages and Applications (OOPSLA 04 ) Vancouver Canada 2004 pp 174-175

[3] P Abrahamsson Mobile software development - the business opportunity of today in Proceedings of the International Conference on Software Development Reykjavik 2005

[4] I S Hayes Just Enough Wireless Computing Prentice Hall Professional Technical 2002

[5] Stelios Xinogalos Spyros Xanthopoulos A Comparative Analysis of Cross-platform Development Approaches for Mobile Applications in Proceedings of the 6th Balkan Conference in Informatics Thessaloniki Greece 2013 pp 213-220

[6] Tolety SB Raj R A study on approaches to build cross-platform mobile applications and criteria to select appropriate approach in India Conference (INDICON) 2012 Annual IEEE India 2012

[7] Yonathan Aklilu Redda Cross platform Mobile Applications Development in Master in Information Systems Norwegian University of Science and Technology Norway 2012

[8] Datta SK Bonnet C Nikaein N Dalmasso I Survey comparison and evaluation of cross platform mobile application development tools in Wireless Communications and Mobile Computing Conference (IWCMC) Cagliari Sardinia Italia 2013

[9] Lisandro Deliacutea Nicolaacutes Galdaacutemez Pablo Thomas and Patricia Pesado An Experimental Analysis of Application Types for Mobile Devices in Computer Science amp Technology Series - XIX Argentine Congress of Computer Science - Selected Papers Editorial de la Universidad de La Plata 2014 pp 173 -183

[10] Lisandro Deliacutea Nicolaacutes Galdamez Pablo Thomas Leonardo Corbalaacuten and Patricia Pesado Multi-Platform Mobile Application Development Analysis in IEEE Ninth International Conference on Research Challenges in Information Science - IEEE RCIS Atenas Grecia May 2015

[11] Telam [Online] httpwwwtelamcomarnotas201504102073-telefonia-movil-lineas-activashtml

Bibliografiacutea

81

[12] RTVE [Online] httpwwwrtveesnoticias20110212evolucion-del-telefono-movil-del-zapatofono-smartphones404523shtml

[13] Vodafone [Online] httpblogvodafonecouk20130829vodafone-uks-ceo-guy-laurence-4g-finally-has-a-purpose

[14] Muy Canal [Online] httpwwwmuycanalcom20140131futuro-del-telefono-movil

[15] Statcounter [Online] httpgsstatcountercom

[16] Anthony I Wasserman Software Engineering Issues for Mobile Application Development 2010

[17] Statista [Online] httpwwwstatistacom

[18] Lisandro Deliacutea Nicolaacutes Galdamez Pablo Thomas Leonardo Corbalaacuten and Patricia Pesado Anaacutelisis Experimental de desarrollo de Aplicaciones Moacuteviles Multiplataforma in XX Congreso Argentino de Ciencias de la Computacioacuten CACIC 2014 San Justo Argentina octubre 2014

[19] Lisandro Deliacutea Nicolaacutes Galdamez Pablo Thomas and Patricia Pesado Un Anaacutelisis Experimental de Tipo de Aplicaciones para Dispositivos Moacuteviles in XIX Congreso Argentino de Ciencias de la Computacioacuten CACIC 2013 Mar del Plata Argentina 2013

[20] Abhinay Puvvala Amitava Dutta Rahul Roy and Priya Seetharaman Mobile Application Developersrsquo Platform Choice Model in 2016 49th Hawaii International Conference on System Sciences (HICSS) Koloa Hawaii 2016

[21] Android Dashboard [Online] httpsdeveloperandroidcomaboutdashboardsindexhtml

[22] Xcode [Online] httpsdeveloperapplecomxcode

[23] KW Tracy Mobile Application Development Experiences on Applersquos iOS and

Android OS Potentials IEEE vol 31 no 4 July-Aug 2012

[24] Google Recommendations for building smartphone-optimized websites [Online] httpgooglewebmastercentralblogspotcomar

[25] Bootstrap [Online] httpgetbootstrapcom

[26] Foundation [Online] httpfoundationzurbcom

[27] PhoneGap [Online] httpphonegapcom

[28] Apache Cordova [Online] httpscordovaapacheorg

Bibliografiacutea

82

[29] Adobe PhoneGap Build [Online] httpsbuildphonegapcom

[30] CocoonJS [Online] httpscocoonio

[31] Ludei [Online] httpswwwludeicom

[32] Ionic [Online] httpionicframeworkcom

[33] Sencha [Online] httpswwwsenchacomproductstouchoverview

[34] A Kosmaczewski Sencha Touch 2 Up and Running OrsquoReilly 2013

[35] Appcelerator Titanium [Online] httpwwwappceleratorcomproduct

[36] Backbone [Online] httpbackbonejsorg

[37] Underscorejs [Online] httpunderscorejsorg

[38] NativeScript [Online] httpswwwnativescriptorg

[39] TypeScript [Online] httpswwwtypescriptlangorg

[40] applause [Online] httpwwwapplausecom

[41] Xamarin [Online] wwwxamarincom

[42] Delphi [Online] httpswwwembarcaderocomproductsdelphi

[43] RubyMotion [Online] httpwwwrubymotioncom

[44] Xtext [Online] httpwwweclipseorgXtext

[45] Mono [Online] httpwwwmono-projectcom

[46] [Online] httpswebunlpeadunlpeduar

[47] I Salmre Writing Mobile Code Essential Software Engineering for Building Mobile Applications Addison Wesley Professional 2005

[48] Mapbox [Online] httpswwwmapboxcomlabstwitter-gnipbrands

[49] Ruby S Richardson L RESTful Web Services OrsquoReilly Media 2007

[50] Matthew J Hamm Wireframing Essentials Packt Publishing 2014

[51] GCM [Online] httpsdevelopersgooglecomcloud-messaging

[52] iOS Human Interface Guidelines [Online] httpsdeveloperapplecomioshuman-interface-guidelinesoverviewdesign-principles

[53] APN [Online] httpdeveloperapplecomlibrarymacdocumentationNetworkingInternetConceptual

Bibliografiacutea

83

RemoteNotificationsPGChaptersApplePushServicehtmlapple_refdocuidTP40008194-CH100-SW9

[54] Mark Norm Norman Francis Christian Heilmann Web Development Solutions Ajax APIs Libraries and Hosted Services Made Easy Apress 2007

[55] JqueryMobile [Online] httpsjquerymobilecom

[56] Pushwoosh [Online] httpsgithubcomPushwooshpushwoosh-phonegap-plugin

[57] J Clark Creating Mobile Apps with Sencha Touch 2 Packt Publishing 2013

[58] Kinvey [Online] httpwwwkinveycom

[59] Ali Mesbah Philippe Kruchten Mona Erfani Joorabchi Real Challenges in Mobile App Development in ACM IEEE International Symposium on Empirical Software Engineering and Measurement Baltimore Maryland US 2013

[60] Andreacute Nitze Andreas Schmietendorf Florian Roumlsler Towards a Mobile Application Performance Benchmark in ICIW 2014 The Ninth International Conference on Internet and Web Applications and Services Paris France 2014

[61] Sebastian Hanschke and Tim A Majchrzak Henning Heitkoumltter Comparing Cross Platform Development approaches For Mobile Applications in 8th International Conference on Web Information Systems and Technologies (WEBIST) Porto Portugal 2012

[62] HW Kim SG Chung CS Jung Measuring Software Quality A Survey of ISOIEC 9126 IEEE Software vol 21 no 5 pp 88 ndash 92 SeptemberOctober 2004

[63] Luis Corral Anton B Georgiev Alberto Sillitti and Giancarlo Succi Can execution time describe accurately the energy consumption of mobile apps An experiment in Android GREENS 2014 Proceedings of the 3rd International Workshop on Green and Sustainable Software pp 31-37 June 2014

[64] Brian Leroux Andre Charland Mobile application development web vs native Magazine Communications of the ACM vol 54 no 5 pp 49-53 May 2011

[65] Luis Corral Alberto Sillitti and Giancarlo Succi Mobile multiplatform development An experiment for performance analysis in The 9th International Conference on Mobile Web Information Systems (MobiWIS) Ontario Canada 2012

[66] Repositorio Git III-LIDI [Online] httpsgitlabcomiii-lidiperformance-assessment-multiplatform-mobile-applicationstreemaster

[67] React Native [Online] httpsfacebookgithubioreact-native

[68] Lisandro Galdaacutemez Nicolaacutes Corbalaacuten Leonardo Thomas Pablo Pesado Patricia Deliacutea Un anaacutelisis comparativo de rendimiento en aplicaciones moacuteviles

Bibliografiacutea

84

multiplataforma in XXI Congreso Argentino de Ciencias de la Computacioacuten Juniacuten 2015

Page 4: Desarrollo de Aplicaciones Móviles Multiplataforma

4

341 Xamarin 46

342 Embarcadero Delphi 10 Seattle 47

343 RubyMotion 48

Capiacutetulo 4 Experimentacioacuten 50

41 Aplicacioacuten Moacutevil para la plataforma de E-Learning WebUNLP 50

411 Descripcioacuten del problema 50

412 Anaacutelisis 51

413 Disentildeo 51

414 Desarrollo 53

4141 Aplicacioacuten Nativa para Android 53

4142 Aplicacioacuten Nativa para iOS 54

4143 Aplicacioacuten Web Moacutevil 54

4144 Aplicacioacuten Hiacutebrida desarrollada con PhoneGap y Jquery Mobile 55

4145 Aplicacioacuten Hiacutebrida desarrollada con Sencha Touch 56

4146 Aplicacioacuten Interpretada de WebUNLP con Appcelerator Titanium 3 56

4147 Aplicacioacuten Generada por Compilacioacuten Cruzada de WebUNLP utilizando XamarinVisual Studio 57

4148 Aplicacioacuten Generada por Compilacioacuten Cruzada de WebUNLP utilizando Delphi 10 Seattle 58

415 Conclusiones del experimento WebUNLP 58

42 Enfoques de desarrollo Anaacutelisis comparativo de rendimiento 60

421 Descripcioacuten del Problema 60

422 Desarrollo 62

4221 Disentildeo de las pruebas 62

4222 Recoleccioacuten de datos 65

423 Resultados Obtenidos 66

424 Anaacutelisis de Resultados 67

425 Conclusiones 69

43 Anaacutelisis comparativo de enfoques de Desarrollo de Aplicaciones Moacuteviles 70

Capiacutetulo 5 Conclusiones 75

Capiacutetulo 6 Trabajo Futuro 78

Bibliografiacutea 80

5

Iacutendice de Figuras

Figura 1 Mobile Telephone System A (MTA) 11 Figura 2 Martin Cooper el autor de la primer llamada moacutevil 12 Figura 3 Evolucioacuten de los protocolos para redes de comunicacioacuten moacuteviles 14 Figura 4 Comparacioacuten entre plataformas [15] 15 Figura 5- Utilizacioacuten de Sistemas Operativos Moacuteviles en el mundo 18 Figura 6- Utilizacioacuten de Sistemas Operativos Moacuteviles en Argentina 19 Figura 7 Entorno de desarrollo Android Studio 27 Figura 8 Distribucioacuten de versiones de Android - Diciembre 2016 28 Figura 9 Entorno de desarrollo Xcode 31 Figura 10 Distribucioacuten de versiones de iOS - Noviembre 2016 31 Figura 11 Entorno de desarrollo Visual Studio 34 Figura 12 Disentildeo Adaptable 40 Figura 13 Funcionamiento de Apache Cordova 42 Figura 14 Proceso de interpretacioacuten mediante NativeScript 45 Figura 15 Entorno de Desarrollo Xamarin Studio 47 Figura 16 Entorno de Desarrollo Delphi 10 Seattle 48 Figura 17 Arquitectura geneacuterica para aplicacioacuten nativa e hiacutebrida 52 Figura 18 Mockup independiente del tipo de aplicacioacuten 53 Figura 19 Aplicacioacuten nativa para Android 53 Figura 20 Aplicacioacuten nativa para iOS 54 Figura 21 Aplicacioacuten hiacutebrida desarrollada con PhoneGap 55 Figura 22 Aplicacioacuten desarrollada con Sencha Touch 56 Figura 23 Enfoque uacutenico de desarrollo Xamarin 57 Figura 24 Aplicacioacuten desarrollada con a) Titanium b) XamarinVisual Studio y c) Delphi XE 58 Figura 25 Caacutelculo de serie coacutedigo multiplataforma desarrollado en Apache Cordova 65 Figura 26 Diagrama de barras con las muestras recolectadas (las barras muestran el tiempo promedio expresado en milisegundos) 67

6

Objetivo

Existen diversos enfoques para desarrollar aplicaciones moacuteviles multiplataforma

A partir de ello el objetivo de este trabajo final consiste en elaborar un anaacutelisis

comparativo sobre los enfoques predominantes y realizar experimentos con el desarrollo

de aplicaciones moacuteviles especiacuteficas para cada elemento analizado

Los objetivos especiacuteficos de este trabajo son

a) Realizar un anaacutelisis comparativo entre los enfoques de desarrollo de aplicaciones

moacuteviles multiplataforma

b) Llevar a cabo el desarrollo de una aplicacioacuten moacutevil concreta en cada enfoque de

desarrollo multiplataforma Analizar ventajas y desventajas de los enfoques seguacuten

el experimento

c) Analizar la performance de las aplicaciones que se generan con cada enfoque de

desarrollo multiplataforma

d) Estudiar los impactos que se producen en el proceso de desarrollo de software

seguacuten el enfoque a utilizar

Prefacio

7

Prefacio

La computacioacuten moacutevil se puede definir como un entorno de coacutemputo con movilidad

fiacutesica El usuario de un entorno de computacioacuten moacutevil seraacute capaz de acceder a datos

informacioacuten u otros objetos loacutegicos desde cualquier dispositivo en cualquier red mientras

estaacute en movimiento [1]

Estos dispositivos tienen caracteriacutesticas fiacutesicas distintivas entre las cuales se

destacan su tamantildeo peso tamantildeo de pantalla su mecanismo de ingreso de datos y su

capacidad de expansioacuten Ademaacutes tienen un rol esencial los aspectos teacutecnicos incluyendo

el poder de procesamiento espacio de memoria autonomiacutea de bateriacutea sistema operativo

entre otros

El desarrollo de software para dispositivos moacuteviles plantea nuevos desafiacuteos

originados en las caracteriacutesticas uacutenicas de esta actividad La necesidad de tratar con

diversas plataformas estaacutendares protocolos y tecnologiacuteas de red las capacidades

limitadas aunque en continua evolucioacuten de los dispositivos y las exigencias de tiempo

del mercado son soacutelo algunos de los problemas a tratar [2]

Las aplicaciones moacuteviles son generadas en un entorno dinaacutemico e incierto

Generalmente son pequentildeas no criacuteticas aunque no menos importantes Estaacuten destinadas

a un gran nuacutemero de usuarios finales y son liberadas en versiones raacutepidas para poder

satisfacer las demandas del mercado [3]

Por todo lo expuesto el desarrollo de software para dispositivos moacuteviles difiere

considerablemente del tradicional [4] y acompantildea el crecimiento y evolucioacuten de la

Ingenieriacutea de Software como disciplina

Para maximizar su presencia en el mercado un producto de software debe

ejecutarse en la mayor cantidad de dispositivos posible Una solucioacuten consiste en el

desarrollo nativo de la aplicacioacuten en cada una de las plataformas existentes utilizando el

entorno de desarrollo integrado (IDE por sus siglas en ingleacutes) el lenguaje y las

herramientas propias de cada plataforma [5] Sin embargo al no ser posible la

reutilizacioacuten de coacutedigo fuente entre diferentes plataformas el esfuerzo se multiplica y se

elevan los costos de desarrollo actualizacioacuten y distribucioacuten de nuevas versiones [6]

Prefacio

8

El desarrollo multiplataforma a diferencia del desarrollo nativo se centra en el

reuacuteso de coacutedigo La construccioacuten de aplicaciones web moacuteviles constituye un ejemplo que

representa este enfoque Sin embargo las limitaciones derivadas de su ejecucioacuten dentro

de un navegador ha motivado a los ingenieros de software a dirigir su atencioacuten hacia otro

tipo de aplicaciones multiplataforma con el que se obtienen resultados maacutes cercanos a las

soluciones nativas En este contexto existen diversas sub-clasificaciones [5] [7] [8] y es

de intereacutes analizar las caracteriacutesticas inherentes a cada una de ellas a traveacutes de la

construccioacuten de un prototipo experimental

Trabajos publicados

Los resultados parciales del presente trabajo dieron lugar al siguiente capiacutetulo de

libro

ldquoAn Experimental Analysis of Application Types for Mobile Devicesrdquo [9]

Lisandro Deliacutea Nicolaacutes Galdaacutemez Pablo Thomas Patricia Pesado

Computer Science amp Technology Series - XIX Argentine Congress of Computer

Science - Selected Papers Editorial de la Universidad de La Plata 2014 p173 -

183 ISBN 978-987-1985-49-4

Asiacute mismo se realizaron publicaciones en los siguientes eventos cientiacuteficos

ldquoMulti-Platform Mobile Application Development Analysisrdquo [10]

Lisandro Deliacutea Nicolaacutes Galdamez Pablo Thomas Leonardo Corbalaacuten Patricia

Pesado

IEEE Ninth International Conference on Research Challenges in Information

Science - IEEE RCIS

Atenas Grecia 13 al 15 de mayo de 2015

Forma de Publicacioacuten Proceedings - CD ROM

ISBN 978-1-4673-6630-4

Organizacioacuten del trabajo

Este trabajo se organiza de la siguiente manera

El capiacutetulo 1 resentildea la evolucioacuten de los dispositivos moacuteviles

Prefacio

9

En el capiacutetulo 2 se describen conceptos esenciales del desarrollo de aplicaciones

para dispositivos moacuteviles

En el capiacutetulo 3 se profundizan conceptos relacionados al desarrollo de

aplicaciones moacuteviles multiplataforma y se estudian diferentes metodologiacuteas y

herramientas

El capiacutetulo 4 contiene un conjunto de experimentos sobre desarrollos de

aplicaciones moacuteviles multiplataforma y el anaacutelisis de los resultados obtenidos

El capiacutetulo 5 presenta las conclusiones obtenidas y el capiacutetulo 6 los trabajos

futuros propuestos en relacioacuten al tema

Finalmente se detalla la bibliografiacutea utilizada en el presente trabajo

Capiacutetulo 1 Tecnologiacutea Moacutevil

10

Capiacutetulo 1 Tecnologiacutea Moacutevil

Hubo una eacutepoca en el que los teleacutefonos moacuteviles no teniacutean pantalla taacutectil ni

permitiacutean grabar viacutedeo ni siquiera podiacutean conectarse a Internet Tampoco podiacutean enviar

y recibir mensajes Simplemente permitiacutean la funcioacuten baacutesica de hablar por teleacutefono

Dos deacutecadas atraacutes los dispositivos moacuteviles eran aparatos de gran tamantildeo y pesados

Soacutelo algunas pocas personas podiacutean acceder a estos dispositivos ya que se consideraban

artiacuteculos de lujo Pero este escenario fue cambiando paulatinamente llevando a que el

celular se transforme en un elemento imprescindible en nuestras vidas En Argentina en

el antildeo 2003 habiacutea 4 millones de liacuteneas activas En la actualidad la cifra llega a 37 millones

de liacuteneas activas y 62 millones de liacuteneas declaradas [11]

11 Los inicios

La Segunda Guerra Mundial originoacute la necesidad de comunicarse a distancia por

lo que Motorola creoacute un equipo militar llamado Handie Talkie H12-16 para

comunicaciones viacutea ondas de radio

Su salto a los sistemas civiles sucedioacute a finales de la deacutecada de los 40 con sistemas

de radio analoacutegicos en frecuencias FM principalmente y con servicios en las bandas HF

y VHF ofrecidos por la americana Bell

En 1955 Ericsson comercializoacute el Mobile Telephone System A (MTA) Phone

(Figura 1) un teleacutefono que pesaba 40 kilogramos y que se instalaba en automoacuteviles

Como curiosidad tuvo un total de 125 usuarios hasta 1967

Capiacutetulo 1 Tecnologiacutea Moacutevil

11

Figura 1 Mobile Telephone System A (MTA)

La primera llamada moacutevil data del 3 de abril de 1973 cuando Martin Cooper

(Figura 2) en aquel entonces ingeniero electroacutenico de Motorola realizoacute una llamada

desde la calle en Nueva York La llamada fue realizada mediante un prototipo del

Motorola DynaTAC 8000x Considerado el primer moacutevil del mundo pesaba cerca de un

kilo y mediacutea 33x45x89 centiacutemetros su bateriacutea teniacutea uacutenicamente la autonomiacutea de una

hora en conversacioacuten necesitando diez horas para cargarse Su costo era de USD 4000

Capiacutetulo 1 Tecnologiacutea Moacutevil

12

Figura 2 Martin Cooper el autor de la primer llamada moacutevil

El verdadero conocimiento popular del teleacutefono moacutevil no llegoacute hasta la deacutecada de

los 90 con la segunda generacioacuten de estos dispositivos

La comunicacioacuten digital permitioacute mejorar la calidad de la escucha de voz la

reduccioacuten del tamantildeo y peso de los dispositivos utilizados y sobre todo el incremento de

compantildeiacuteas operadoras que dieron paso a un mercado maacutes competitivo y accesible

Los usuarios fueron testigos de avances sorprendentes como la identificacioacuten de

llamada o los mensajes de texto que constituyeron a una nueva forma de comunicacioacuten

Vertiginosamente el celular pasoacute de ser considerado una herramienta de trabajo a

generalizarse en todos los estratos de la sociedad

Seguacuten avanzaba la deacutecada del 90 los teleacutefonos moacuteviles iban adaptaacutendose a esas

novedades incorporando pantallas cada vez de mayor tamantildeo y en los maacutes avanzados

haciendo desaparecer la antena que era necesario desplegar para poder realizar una

comunicacioacuten en condiciones adecuadas

Poco a poco los dispositivos empezaron a integrar cada vez maacutes funciones aviso

por vibracioacuten juegos bluetooth infrarrojos politonos y ya con el cambio de siglo

pantallas a color y caacutemaras fotograacuteficas Maacutes adelante llegariacutea la grabacioacuten de viacutedeo el

acceso a Internet las pantallas taacutectiles entre otras [12]

Capiacutetulo 1 Tecnologiacutea Moacutevil

13

12 Evolucioacuten de los protocolos para redes de comunicaciones

Hubiera sido imposible el auge de los teleacutefonos moacuteviles sin la estandarizacioacuten

mejora y evolucioacuten de los protocolos para redes de comunicaciones y su soporte por las

operadoras Asiacute tras las primeras comunicaciones viacutea ondas de radio con banda de

frecuencias por debajo de los 600 kHz las posteriores en AM y FM los servicios de Bell

y Ericsson en los antildeos 50 y 60 llegoacute esa primera llamada de 1973 que popularizoacute todo el

sector

La primera generacioacuten 1G fue responsabilidad de Ericsson con el sistema Telefoniacutea

Moacutevil Noacuterdica (NMT) y seguiacutea utilizando canales analoacutegicos En 1986 la compantildeiacutea

modernizoacute el sistema funcionando a frecuencias superiores de 900 MHz posibilitando

servicio para un mayor nuacutemero de usuarios Ademaacutes del NMT en los 80 se desarrollaron

otros sistemas de telefoniacutea moacutevil como el Sistema Telefoacutenico Moacutevil Avanzado (AMP)

desarrollado por los laboratorios Bell

La segunda generacioacuten 2G llegoacute en la deacutecada de los 90 con sistemas como Global

System for Mobile Communications (GSM) Estaacutendar Interno 136 (IS-136) Red

Mejorada Digital Integrada (iDEN) y el Estaacutendar Interno 95 (IS-95) GSM fue el

desarrollo maacutes relevante ya que fue el estaacutendar europeo de telefoniacutea moacutevil digital En el

proyecto participaron 26 compantildeiacuteas europeas de telecomunicaciones y en 1992 se

pusieron en marcha las primeras redes europeas de GSM-900 y los primeros teleacutefonos

moacuteviles GSM Ademaacutes de Europa GSM ha terminado imponieacutendose tambieacuten en Asia

Ameacuterica Latina Oceaniacutea y una parte de Ameacuterica del Norte

La necesidad de mayores velocidades de transmisioacuten de datos y mayores

capacidades que permitieran nuevos servicios dieron paso a la Tercera Generacioacuten (3G)

no sin antes pasar por el 25G que proporcionoacute el General Packet Radio Service (GPRS)

El estaacutendar europeo es el Universal Mobile Telecommunications System (UMTS) basado

en la tecnologiacutea W-CDMA y estaacute gestionado por la organizacioacuten 3GPP tambieacuten

responsable de GSM GPRS y Enhanced Data Rates for GSM Evolution (EDGE)

La Cuarta Generacioacuten (4G) sucede a las tecnologiacuteas 2G y 3G y ofrece entre otras

mejoras mayor seguridad y Calidad de Servicio (QoS) junto a velocidades de acceso

muy superiores a las anteriores (mayores a 100 Mbits en movimiento y a 1 Gbits en

Capiacutetulo 1 Tecnologiacutea Moacutevil

14

reposo) Estaacute basada completamente en el protocolo IP siendo un sistema de sistemas y

una red de redes que se alcanza gracias a la convergencia entre las redes de cables e

inalaacutembricas Seguacuten Vodafone ldquoel 4G tiene finalmente una razoacuten y es el entretenimientordquo

[13] La norma Long Term Evolution (LTE) es la maacutes extendida aunque no la uacutenica

existente

5G seraacute la nueva revisioacuten del sistema de conexioacuten de red sin cables y se espera que

esteacute disponible en el antildeo 2020 (Figura 3) en paiacuteses como Corea del Sur como asiacute tambieacuten

en Europa Como 4G la mayor velocidad de transferencia seraacute su mayor avance con

velocidades de descarga de hasta 10 Gbps (125 GBs) [14]

Figura 3 Evolucioacuten de los protocolos para redes de comunicacioacuten moacuteviles

13 La actualidad

Muchas de las actividades que un tiempo atraacutes soliacutean hacerse desde una

computadora tales como revisar el correo electroacutenico escuchar muacutesica agendar una

nueva cita en el calendario compartir fotos en alguna red social entre muchiacutesimas otras

en nuestros diacuteas se llevan a cabo de forma natural desde los dispositivos moacuteviles La

Figura 4 muestra coacutemo los dispositivos moacuteviles les han ganado terreno a los equipos

Capiacutetulo 1 Tecnologiacutea Moacutevil

15

tradicionales denominados lsquode escritoriorsquo

Figura 4 Comparacioacuten entre plataformas [15]

En la actualidad existen cientos de modelos diferentes de dispositivos moacuteviles y

los fabricantes siguen innovando intentando destacarse sobre la competencia Hoy en diacutea

no nos sorprende encontrar dispositivos moacuteviles con procesadores quad-core de 22 Ghz

Incluso ya se comienzan a conocer prototipos de dispositivos con ocho o diez nuacutecleos

De la mano de los procesadores la memoria RAM de los dispositivos moacuteviles

tambieacuten ha crecido considerablemente llegando a comercializarse dispositivos con 3 GB

de memoria

La caacutemara de los dispositivos es otra de las capacidades que maacutes ha progresado

llegando a encontrarse sensores de 20 MP y la posibilidad de grabar videos en formato

UHD 4K (3840 x 2160)

El tamantildeo de las pantallas y sus resoluciones fueron otra de las caracteriacutesticas que

maacutes han evolucionado Es posible encontrar dispositivos con pantallas de 5 pulgadas con

posibilidad de visualizar 16 millones de colores y con resoluciones Quad HD (2560 x

1440)

La tecnologiacutea de las bateriacuteas es un aspecto en que no se ha logrado grandes avances

en el sector ni se pronostican grandes progresos a corto plazo Incluso la llegada de chips

Capiacutetulo 1 Tecnologiacutea Moacutevil

16

maacutes potentes mayores pantallas o el 4G disminuiraacuten auacuten maacutes la autonomiacutea de las bateriacuteas

El uacuteltimo aspecto a mencionar es el de las capacidades del dispositivo Ademaacutes de

los ya claacutesicos sensores Global Positioning System (GPS) la capacidad de conectividad

viacutea bluetooth infrarrojo y WIFI hoy surge una diversidad de opciones que pueden

disponer los teleacutefonos inteligentes

Por el lado de la conectividad cada vez es maacutes comuacuten encontrar terminales con

mecanismos de comunicacioacuten Near Field Communication (NFC) o WIFI Direct

Con respecto a los sensores actualmente existen dispositivos que cuentan con

aceleroacutemetros giroscopios y magnetoacutemetros los cuales brindan a los desarrolladores de

aplicaciones la posibilidad de controlar la posicioacuten del aparato la aceleracioacuten que sufre

el dispositivo con respecto a la fuerza de la gravedad etc Tambieacuten es comuacuten el uso de

sensores de proximidad por ejemplo para apagar la pantalla mientras se atiende una

llamada El sensor de luminosidad permite medir el brillo de la luz ambiental Asiacute el

software del teleacutefono utiliza estos datos para ajustar el brillo de la pantalla

automaacuteticamente hacieacutendola maacutes clara o maacutes oscura

Los uacuteltimos smartphones de gama alta tambieacuten son capaces de medir la presioacuten

atmosfeacuterica a traveacutes de un baroacutemetro Los datos que mide el dispositivo sirven para

determinar en queacute nivel por encima del mar se encuentra el teleacutefono lo que se traduce en

la mejora de la precisioacuten del GPS

Incluso ya existen dispositivos que cuentan con un sensor de humedad del aire el

cual permite controlar los niveles de humedad para por ejemplo ayudar a las personas

con problemas respiratorios

Como si todo esto fuese poco existen modelos con podoacutemetro -para medir con

precisioacuten los pasos que da el usuario- pulsoacutemetro -para medir las pulsaciones a traveacutes de

los vasos sanguiacuteneos de los dedos- y hasta sensor de huellas digitales para cuestiones

relativas a la seguridad

Por lo anteriormente dicho los desarrolladores de aplicaciones para dispositivos

moacuteviles de la actualidad tienen el desafiacuteo de poder manipular desde sus aplicaciones

todas las posibilidades descriptas

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

17

Capiacutetulo 2 Desarrollo de

Aplicaciones Moacuteviles Nativas

Si bien el desarrollo de aplicaciones para dispositivos moacuteviles se remonta por lo

menos a 10 antildeos atraacutes ha habido un crecimiento exponencial desde que se abrioacute la tienda

de aplicaciones de iPhone en julio de 2008 Desde entonces los fabricantes de

dispositivos han creado tiendas de aplicaciones para otros dispositivos moacuteviles

incluyendo Android BlackBerry Nokia Ovi Windows Phone entre otros [16]

Actualmente el desarrollo de aplicaciones para dispositivos moacuteviles es un campo

en evolucioacuten con gran intereacutes econoacutemico y cientiacutefico Una prueba de esto es que para

Julio del 2014 se disponiacutean de maacutes de 3 millones de aplicaciones entre las principales

tiendas virtuales de aplicaciones Y solamente en el antildeo 2013 se contabilizaron 101

billones de descargas de aplicaciones moacuteviles en todo el mundo de las cuales 9 billones

fueron descargas pagas y 92 billones descargas gratuitas [17]

Con el actual creciente nuacutemero de plataformas moacuteviles desarrollar aplicaciones

moacuteviles se hizo muy difiacutecil para las empresas ya que necesitan desarrollar las mismas

aplicaciones para cada plataforma de destino

El desarrollo de aplicaciones nativas es la forma natural de implementar

aplicaciones moacuteviles Las aplicaciones nativas son concebidas para ejecutarse en una

plataforma especiacutefica es decir se debe considerar el tipo de dispositivo el sistema

operativo a utilizar y su versioacuten

Las aplicaciones nativas se desarrollan utilizando un entorno de desarrollo

integrado (IDE) que proporciona las herramientas de desarrollo necesarias para la

construccioacuten y depuracioacuten de aplicaciones El coacutedigo fuente se compila para obtener

coacutedigo ejecutable proceso similar que el utilizado para las tradicionales aplicaciones de

escritorio

Cuando la aplicacioacuten estaacute lista para ser distribuida debe ser transferida a las App

stores (tiendas de aplicaciones) especiacuteficas de cada sistema operativo Estas tiendas tienen

un proceso de auditoriacutea para evaluar si la aplicacioacuten se adecuacutea a los requerimientos de la

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

18

plataforma a operar Cumplido este paso la aplicacioacuten se pone a disposicioacuten de los

usuarios

La principal ventaja de este tipo de aplicaciones es la posibilidad de interactuar con

todas las capacidades del dispositivo (caacutemara GPS aceleroacutemetro agenda entre otras)

Ademaacutes no es estrictamente necesario poseer acceso a internet Su ejecucioacuten es raacutepida

puede ejecutarse en modo background y notificar al usuario cuando ocurra un evento que

necesite su atencioacuten

Claramente estas ventajas tienen como contrapartida un mayor costo de desarrollo

pues se debe utilizar un lenguaje de programacioacuten diferente seguacuten la plataforma Por ende

si se desea cubrir varias plataformas se deberaacute generar una aplicacioacuten para cada una de

ellas Esto conlleva a mayores costos de desarrollo actualizacioacuten y distribucioacuten de nuevas

versiones [9] [18] [19]

En la actualidad hay una gran cantidad de sistemas operativos para dispositivos

moacuteviles La Figura 5 muestra la utilizacioacuten de los sistemas operativos en los uacuteltimos antildeos

en todo el mundo mientras que la Figura 6 muestra la misma comparativa en Argentina

En ambos casos el ranking es liderado por Android seguido por iOS y en tercer lugar

Windows Phone [20]

Figura 5- Utilizacioacuten de Sistemas Operativos Moacuteviles en el mundo

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

19

Figura 6- Utilizacioacuten de Sistemas Operativos Moacuteviles en Argentina

A continuacioacuten se analizaraacute coacutemo es el proceso de desarrollo de aplicaciones

moacuteviles nativas en los sistemas operativos maacutes relevantes de la actualidad y luego en la

Tabla 1 se compararaacuten aspectos teacutecnicos de estas plataformas

21 Desarrollo de Aplicaciones Nativas en Android

Android es el sistema operativo maacutes utilizado en la actualidad Puede ser utilizado

en teleacutefonos inteligentes tablets relojes inteligentes televisores y automoacuteviles

Estaacute basado en Linux y es respaldado por Google

211 Evolucioacuten Inicialmente el desarrollo de Android era llevado a cabo por la empresa Android

Inc la cual fue fundada en el antildeo 2003 y recibiacutea respaldo econoacutemico por parte de Google

Antildeos maacutes tarde maacutes precisamente en Julio del 2005 Google adquiere Android y da lugar

a la primer versioacuten del sistema operativo en el antildeo 2007 Android 10 Apple Pie1

desarrollado sobre el kernel de Linux 26 En su presentacioacuten se hizo hincapieacute en que era

un sistema operativo para dispositivos moacuteviles totalmente gratuito y open source a

1 Desde la salida de la primera versioacuten del sistema operativo hasta el presente Google ha seguido la tradicioacuten de ponerle un nombre de postre a cada una de sus versiones siguiendo un orden alfabeacutetico

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

20

diferencia de iOS

La primera versioacuten comercial teniacutea mucho margen de mejora y apenas inquietoacute a la

competencia pero ya introduciacutea algunos conceptos que antildeos despueacutes son un estaacutendar de

los sistemas operativos moacuteviles

Menuacute desplegable de notificaciones

Widgets de escritorio

Android Market la tienda de apps (no contaba con ninguacuten sistema de pago para

usuarios Todo el cataacutelogo era gratuito)

Integracioacuten con Google Mail Contacts y Calendar

Navegador Maps Google Talk reproductor de YouTube y soporte para caacutemaras

En febrero del 2009 apenas 3 meses despueacutes del lanzamiento de Android 10 Apple

Pie llega la primera actualizacioacuten Android 11 Banana Bread No antildeadiacutea grandes

novedades pero siacute corregiacutea numerosos fallos detectados en la primera versioacuten e introduciacutea

un concepto por entonces poco usado por los rivales que buscaba facilitar la vida al

usuario las actualizaciones automaacuteticas con las que resultaba muy simple mantener todo

el software al diacutea

El 30 de abril del 2009 lanzan una nueva actualizacioacuten de gran importancia con

muchas novedades en cuanto a usabilidad Android 15 Cupcake Esta nueva versioacuten

introdujo las siguientes caracteriacutesticas

Teclado taacutectil QWERTY en pantalla con prediccioacuten de texto y diccionario de

usuarios para palabras personalizadas

Grabacioacuten y reproduccioacuten en formatos MPEG-4 y 3GP

Widget de escritorio de Google para realizar buacutesquedas directamente

SDK para el desarrollo de widgets de escritorio por parte de terceros

Funciones del portapapeles ampliadas

Interfaz para grabar y reproducir viacutedeos mejorada

Posibilidad de auto-rotacioacuten

Android 16 Donut apareciacutea en septiembre del 2009 con algunas novedades

adicionales

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

21

Soporte para CDMAEVDO 8021x VPN que ampliaba los mercados al alcance

de Android

Compatibilidad con distintas resoluciones de pantalla Soporte WVGA

Actualizacioacuten y nuevo disentildeo del Android Market

Utilidad de buacutesqueda universal en Internet y en el mismo dispositivo

Galeriacutea caacutemara y videocaacutemara con mejor integracioacuten con raacutepido acceso a la

caacutemara

Motor multi-lenguaje de Siacutentesis de habla para permitir a cualquier aplicacioacuten de

Android hablar una cadena de texto

Mejoras en las buacutesquedas por texto y voz

Apenas dos meses despueacutes en noviembre del 2009 lanzan Android 20 Eclair

uno de los cambios maacutes sustanciales sufridos por Android tanto a nivel de disentildeo como

de arquitectura interna Era una versioacuten dirigida a dispositivos de mayor tamantildeo en un

tiempo en el que los fabricantes empezaban a diversificar su oferta La versioacuten 21

mantuvo la misma nomenclatura y soacutelo corrigioacute algunos fallos pero su uso fue mayor

entre los fabricantes que la versioacuten anterior A continuacioacuten se mencionan algunas de las

nuevas caracteriacutesticas

Sincronizacioacuten de cuenta expandida permitiendo a los usuarios agregar muacuteltiples

cuentas al dispositivo para sincronizacioacuten de correo y contactos

Google Maps Navigation sistema de navegacioacuten GPS gratuito

Compatibilidad con Microsoft Exchange

Optimizacioacuten en velocidad de hardware y GUI renovada

Soporte para maacutes tamantildeos de pantalla y resoluciones con una mejor tasa de

contraste

Navegador actualizado soporte para HTML5 y barra de direccioacuten y buacutesqueda

unificada

Funcioacuten Speech to Text para escribir textos mediante el uso de la voz

Nueva pantalla de desbloqueo

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

22

Nuevas caracteriacutesticas para la caacutemara incluyendo soporte de flash zoom digital

modo escena balance de blancos efecto de colores y enfoque macro

Adicioacuten de fondos de pantalla animados permitiendo la animacioacuten de imaacutegenes

de fondo de la pantalla inicio para mostrar movimiento

El 20 de mayo del 2010 apareciacutea una nueva actualizacioacuten del sistema operativo

Android 22 Froyo Traiacutea numerosos cambios algunos copiados de otras ROMs y otros

con el uso empresarial en mente

Pantalla Home totalmente redisentildeada con 5 paneles en lugar de 3

Nueva galeriacutea de imaacutegenes

Soporte para actuar como hotspot2 para otros dispositivos tethering3 de datos

Soporte para Flash 101

Funcioacuten copiar y pegar mejorada en Google Mail

Nueva pantalla alternativa de desbloqueo mediante coacutedigo PIN

Grabacioacuten de viacutedeo en 720p

Optimizaciones en velocidad memoria y rendimiento Compilador JIT

Integracioacuten del motor de JavaScript V8 de Chrome en el navegador

Soporte para el servicio Android Cloud to Device Messaging (C2DM)

habilitando notificaciones push

El antildeo 2010 iba a concluir con el lanzamiento de una versioacuten sumamente popular

que prevalecioacute gran tiempo Android 23 Gingerbread Esta versioacuten contoacute con las

siguientes caracteriacutesticas

Disentildeo de la interfaz de usuario actualizado con incremento en velocidad y

simpleza

Nuevo disentildeo para el teclado numeacuterico en pantalla

Soporte para tamantildeos y resoluciones de pantalla extra-grandes (WXGA y

mayores)

Funcioacuten para copiar y pegar mejorada con soporte para caracteres individuales en

lugar de cajas de texto

2 lugar que ofrece acceso a Internet a traveacutes de una red inalaacutembrica y un enrutador conectado a un proveedor de servicios de Internet 3 proceso por el cual un dispositivo moacutevil con conexioacuten a Internet actuacutea como pasarela para ofrecer acceso a la red a otros dispositivos

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

23

Soporte para NFC

Herramientas de visualizacioacuten de consumo y uso de la bateriacutea mejoradas

Soporte para caacutemaras frontales

Acceso de bajo nivel para los desarrolladores de juegos

Recolector basura concurrente para incrementar el rendimiento

Sustitucioacuten del sistema de archivos YAFFS por ext4

Soporte nativo para maacutes sensores (tales como giroscopio y baroacutemetro)

Soporte de chat de video o voz usando Google Talk

En febrero del 2011 Google lanza Android 30 Honeycomb Se trata de una

actualizacioacuten especiacutefica para tablets no compatible con teleacutefonos que introduciacutea las

liacuteneas maestras de la interfaz en el futuro Las versiones 31 y 32 mantuvieron el mismo

nombre y fueron baacutesicamente un conjunto de correcciones A continuacioacuten se listan los

cambios significativos que tuvieron lugar en estas versiones

Pantalla de Inicio redisentildeada

Inclusioacuten de tonos azules en la interfaz en detrimento del verde tradicional

Nuevas funcionalidades para el emplazamiento y uso de widgets

Fin de los botones fiacutesicos Adaptacioacuten automaacutetica del SO seguacuten el dispositivo

Agregado de barra de sistema con caracteriacutesticas de acceso raacutepido a

notificaciones estados y botones de navegacioacuten suavizados disponible en la parte

inferior de la pantalla

Antildeadida la barra de accioacuten (Action Bar en ingleacutes) entregando acceso a opciones

contextuales navegacioacuten widgets u otros tipos de contenido en la parte superior

de la pantalla

Multitarea simplificada ndash tocando Aplicaciones recientes en la barra del sistema

permite a los usuarios ver instantaacuteneas de las tareas en curso y saltar raacutepidamente

de una aplicacioacuten a otra

Aceleracioacuten graacutefica mediante hardware

Optimizacioacuten del renderizado de graacuteficos 3D

Soporte para perifeacutericos USB

Octubre del 2011 fue el mes del lanzamiento de Android 40 Ice Cream Sandwich

basado en el nuacutecleo de Linux 301 Esta nueva versioacuten introdujo las siguientes mejoras

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

24

Nueva Interfaz Holo y fuente tipograacutefica Roboto

Sistema de gestioacuten de notificaciones mejorado

Multitarea mejorada

Android Beam funcionalidad para transferir datos entre dos dispositivos viacutea NFC

Funcioacuten de desbloqueo mediante el rostro

Nuevas funciones para la visualizacioacuten y gestioacuten del consumo de datos

Nuevas aplicaciones de correo y calendario

Habilidad de acceder a aplicaciones directamente desde la pantalla de bloqueo

Herramienta integrada de captura de pantalla

Soporte MKV

Aceleracioacuten por hardware de la interfaz de usuario

Soporte Stylus (laacutepiz taacutectil)

En Julio del 2012 se presenta Android 41 Jelly Bean que incluye las siguientes

novedades

Sistema de deteccioacuten de entrada de datos taacutectiles optimizado

Estreno de Google Now el servicio-asistente de voz inteligente de Google

Navegador Google Chrome

Buacutesqueda mediante voz mejorada

Nuevas posibilidades para las notificaciones interactivas de escritorio

Dictado de voz offline

Se deja de dar soporte al Flash Player

Meses despueacutes en noviembre del 2012 se lanza la versioacuten Android 42 Jelly Bean

la cual incluye habituales correcciones rendimiento mejorado y cambios puntuales en

ciertas aplicaciones

Android 43 Jelly Bean es anunciado el 24 de julio del 2013 Uno de los objetivos

de esta versioacuten fue tratar de consolidar a Android como un sistema operativo capaz de

ejecutar juegos Esta nueva versioacuten cuenta con las siguientes novedades

Soporte multiusuario y de perfiles mejorado

Soporte OpenGL ES 30

Bluetooth Smart

Plataforma Google Games

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

25

Servicios de localizacioacuten Wi-Fi mejorados

Ya no es necesario pulsar el icono del microacutefono para realizar una buacutesqueda de

voz Solo hay que decir OK Google y en seguida ordenar al equipo lo que se

necesite

Android 44 KitKat es anunciado en octubre del 2013 Esta nueva versioacuten intenta

corregir el problema de fragmentacioacuten se cuenta con muchas versiones y los fabricantes

tienen dificultades para adaptar sus productos a los requerimientos de cada nueva versioacuten

Se destaca de esta versioacuten

Menores requisitos de hardware para corregir la fragmentacioacuten de versiones

Compatible con terminales con 512 MB de memoria RAM

Reduccioacuten del consumo de bateriacutea mediante la optimizacioacuten de los sensores

Inclusioacuten de la suite ofimaacutetica QuickOffice

Servicios de almacenamiento online integrados Google Drive Box

Soporte para infrarrojos Usar el moacutevil como mando de TV

Aplicaciones a pantalla completa

Captura de pantalla en viacutedeo

En octubre del 2014 se lanza Android 5 Lollipop daacutendole soporte a otros

dispositivos como Android TV relojes inteligentes autos etc Esta nueva versioacuten

incluye

Nuevo disentildeo basado en Material Design que logra un flujo de trabajo maacutes fluido

Interfaz que se adapta a cualquier tamantildeo de dispositivo

Renovado sistema de notificaciones inteligente

Interesante vista multitarea que muestra capas con las diferentes aplicaciones

abiertas

Funcioacuten Android Smart Lock que permite emparejar un dispositivo Android con

otro ya sea un reloj inteligente o un automoacutevil

Modo Invitado para que puedas prestar el dispositivo sin que otros usuarios

tengan acceso a la informacioacuten privada

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

26

Soporte para sistemas de 64 bits

En octubre del 2015 se anuncia Android 6 Marshmallow que incluye las

siguientes novedades

Soporte para autenticacioacuten viacutea huella digital

Desinstalacioacuten raacutepida de las aplicaciones desde la pantalla de inicio

Nuevo esquema de gestioacuten de energiacutea llamado Doze

Mayor duracioacuten de la bateriacutea cuando el dispositivo estaacute en reposo

Inclusioacuten de Android Pay que emplearaacute el chip NFC

Mejoras en Google Now

Mayor control sobre los permisos requeridos por las aplicaciones

212 Proceso de Desarrollo Las aplicaciones nativas para esta plataforma se implementan utilizando el lenguaje

de programacioacuten Java

El estaacutendar sugiere utilizar el IDE oficial Android Studio (Figura 7) aunque es

posible utilizar otros entornos Independientemente del IDE utilizado se necesita

disponer del Software Development Kit (SDK) de la versioacuten de Android en la que se

desea trabajar El SDK provee todas las herramientas necesarias para desarrollar

compilar depurar y simular aplicaciones

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

27

Figura 7 Entorno de desarrollo Android Studio

Uno de los interrogantes que surgen en el momento de crear una aplicacioacuten es con

cual versioacuten de la Application Programming Interface (API) de Android trabajar Se debe

tener en cuenta que al trabajar con una versioacuten especiacutefica se estaacute limitando cuales son los

dispositivos que soportaraacuten la aplicacioacuten a crear No se recomienda utilizar una API

antigua -ya que no se estariacutea utilizando muchos de los avances de la plataforma- ni

tampoco la uacuteltima en el mercado ndashdebido a que pocos seriacutean los usuarios que podriacutean

utilizarla- En la Figura 8 se visualiza la distribucioacuten de versiones seguacuten los dispositivos

activos a la fecha de Diciembre 2016 [21] De esa informacioacuten se desprende que si se

optara por trabajar con la API 16 (Jelly Bean) el 966 de los celulares activos podraacuten

utilizar la aplicacioacuten a crear

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

28

Figura 8 Distribucioacuten de versiones de Android - Diciembre 2016

22 Desarrollo de Aplicaciones Nativas en iOS

iOS es un sistema operativo para dispositivos moacuteviles de la empresa multinacional

Apple Si bien fue originalmente desarrollado para el dispositivo iPhone luego el sistema

operativo alcanzoacute otros dispositivos como iPod Touch iPad A diferencias de otros

sistemas operativos para dispositivos moacuteviles iOS solo funciona en dispositivos creados

por la empresa Apple pero no asiacute en otro hardware de terceros

221 Evolucioacuten El sistema operativo moacutevil iOS se deriva del sistema operativo OS X el cual estaacute

basado en UNIX

La primera versioacuten del sistema operativo se presentoacute en enero del 2007 A

diferencia de sus sucesores la primera versioacuten no se llamoacute iOS sino iPhone OS Se

trataba de una plataforma bastante cerrada ya que las uacutenicas aplicaciones disponibles

eran las que estaban integradas al sistema operativo y fueron creadas por Apple como los

Mapas Mail Fotos Calendario entre otras

El desarrollo de aplicaciones nativas por parte de terceros no tuvo lugar hasta marzo

del 2008 momento en el cual Apple liberoacute el primer kit de desarrollo

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

29

Meses despueacutes se lanza la segunda versioacuten del sistema operativo iPhone OS 2 En

esta oportunidad introducen la App Store la cual permitioacute la descarga de aplicaciones de

terceros Ademaacutes la aplicacioacuten de Mapas recibioacute compatibilidad con el GPS y el Mail

notificaciones push

En 2009 Apple lanzoacute iPhone OS 3 y en su versioacuten 32 se le cambioacute el nombre a

iOS 32 iOS 3 incorporoacute grandes novedades buacutesqueda Spotlight botones Copiar y

Pegar grabacioacuten de viacutedeo edicioacuten de viacutedeo mensajes MMS comandos de voz modo

landscape y otras muchas apps Ademaacutes se siguioacute explotando las ventajas de las

notificaciones push y se continuoacute evolucionando su SDK daacutendole mayor poder a los

desarrolladores de aplicaciones

iOS 4 llegoacute a mediados del 2010 y trajo consigo nuevos cambios a la plataforma

Los maacutes destacables fueron la inclusioacuten de fondos de pantalla y la posibilidad de poder

abrir varias aplicaciones en simultaacuteneo Adicionalmente las aplicaciones podiacutean ser

agrupadas mediante carpetas algo simple pero uacutetil

En Junio del 2011 se libera iOS 5 Esta nueva versioacuten ofreciacutea grandes novedades

un Centro de Notificaciones Siri ndashel asistente virtual que marcoacute tendencia en los uacuteltimos

antildeos- iMessage iCloud Game Center Quiosco Recordatorios integracioacuten social para

Twitter y se mejoroacute notablemente la app de navegacioacuten web nativa Safari

iOS 6 fue presentado en Junio del 2012 y trajo como novedades la inclusioacuten de

Apple Maps (en reemplazo de Google Maps) mejoras en Siri con informacioacuten mucho

maacutes precisa la integracioacuten de Facebook y Twitter en el sistema el modo no molestar el

soporte para LTE entre otras

Los usuarios de este sistema operativo recibieron una de las mayores

actualizaciones en Junio del 2013 cuando se presenta iOS 7 Esta nueva versioacuten contoacute

con un redisentildeo total de la interfaz de usuario basaacutendose en transparencias y degradados

Ademaacutes se introdujo el Centro de Control AirDrop una renovada app de fotos iTunes

Radio y CarPlay mejoras en el App Switcher videos a caacutemara lenta entre otras cosas

Junio del 2014 fue el mes donde quedoacute disponible iOS 8 una nueva versioacuten del

sistema operativo que intenta resolver algunos errores de iOS 7 y antildeadir ciertas mejoras

Las extensiones y la posibilidad de conectar apps entre siacute mediante el menuacute compartir

hicieron que iOS 8 fuese mucho maacutes productivo Ademaacutes incorporoacute widgets para el

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

30

Centro de Notificaciones o las notificaciones interactivas Ademaacutes se implementaron los

contactos favoritos los teclados de terceros la funcioacuten Reachability y la utilidad

Continuity y las aplicaciones Apple Pay Salud HandOff QuickType Compartir en

Familia iCloud Drive y Apple Music

En el 2015 se presenta iOS 9 que introdujo todo un cambio en el uso del sistema

gracias a la compatibilidad con el 3D Touch del iPhone 6s y el iPhone 6s Plus Se

actualizoacute Notas con nuevas funciones se sustituyoacute Newsstand por News se incorporaron

mejoras en Passbook que pasoacute a llamarse Wallet y se mejoroacute Mapas con direcciones y

traacutefico Se antildeadioacute Split View Picture-in-Picture y atajos en teclados de terceros Ademaacutes

el sistema ahora podiacutea aprovechar mejor la autonomiacutea del dispositivo gracias al Modo

ahorro de bateriacutea que limita las conexiones y caracteriacutesticas del sistema para no consumir

tanta energiacutea

Por uacuteltimo en Junio del 2016 quedoacute disponible iOS 10 versioacuten que se caracteriza

por abrirse a los desarrolladores Con esta nueva versioacuten se puede tener acceso a Siri al

3D Touch y a apps directas del sistema operativo Ademaacutes el centro de widgets ahora es

maacutes intuitivo y la pantalla de bloqueo maacutes uacutetil Como es habitual se aprecian mejoras en

distintas aplicaciones del sistema operativo y se permite borrar apps de Apple que no sean

utilizadas por los usuarios

222 Proceso de desarrollo Las aplicaciones moacuteviles para la plataforma iOS se desarrollan utilizando el

lenguaje de programacioacuten Objetive C El entorno de desarrollo oficial es la plataforma

Xcode [22] la cual opera en conjunto con Interface Builder una herramienta graacutefica para

la creacioacuten de interfaces de usuario

Actualmente hay dos grandes versiones del sistema operativo moacutevil en curso como

se puede apreciar en la Figura 10 Es algo a destacar que la uacuteltima versioacuten del sistema

operativo es soportada por el 63 de los dispositivos activos Claramente la

fragmentacioacuten interna es mucho menor que la encontrada en Android

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

31

Figura 9 Entorno de desarrollo Xcode

Figura 10 Distribucioacuten de versiones de iOS - Noviembre 2016

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

32

23 Desarrollo de Aplicaciones Nativas en Windows Phone

El sistema operativo moacutevil Windows Phone fue desarrollado por Microsoft y

sucede a Windows Mobile A diferencia de su predecesor estaacute enfocado en el mercado de

consumo en lugar del mercado empresarial

231 Evolucioacuten Su primera versioacuten lanzada en septiembre del 2010 fue denominada Windows

Phone 7 Fue presentado como un nuevo sistema operativo que incluye funciones de

integracioacuten con los servicios Xbox Live y Zune La interfaz conocida como Metro ha

sido revisada en su totalidad y comparte caracteriacutesticas visuales similares a la interfaz del

dispositivo Zune HD

Windows Phone 75 es una actualizacioacuten para Windows Phone lanzada en

septiembre de 2011 Esta nueva versioacuten incorporoacute numerosas caracteriacutesticas como por

ejemplo la inclusioacuten de Internet Explorer 9 con soporte para CSS3 Media Queries y

soporte para usar GPS cuando se trabaje con aplicaciones de ubicacioacuten geograacutefica entre

otros

En enero del 2013 se presenta Windows Phone 78 una actualizacioacuten que trae

mejoras como la nueva interfaz de usuario y fondos personalizados para la pantalla de

bloqueo Fue la uacuteltima gran actualizacioacuten de Windows Phone 7 ya que Microsoft se

centroacute en Windows Phone 8

Windows Phone 8 es la siguiente versioacuten del sistema operativo la cual fue

presentada a finales de 2012 Entre las nuevas caracteriacutesticas se incluyen

Nuevas pantallas de inicio y de bloqueo maacutes personalizables

Rincoacuten infantil un espacio exclusivo y controlado para los nintildeos

Cartera para almacenar tarjetas de fidelizacioacuten y de creacutedito

NFC

Internet Explorer 10

Integracioacuten con Skype

Nuevo nuacutecleo Windows NT con soporte para procesadores de varios

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

33

nuacutecleos

Captura de pantalla

Su proacutexima versioacuten es Windows Phone 81 y fue presentada en abril del 2014

Entre sus caracteriacutesticas maacutes relevantes se encuentran

Centro de notificaciones

Asistente de voz conocido con el nombre de Cortana

Sensores (de Wi-Fi de datos y de bateriacutea)

Aplicaciones que vienen en el paquete de instalacioacuten como Salud y

ejercicios Comida y bebida Viajes y Mapas (esta uacuteltima compite con Here

Maps la cual es la aplicacioacuten de mapas de Nokia)

Mejoras en la pantalla de inicio posibilidad de agregar fondos de pantalla y

una tercera columna de mosaicos personalizables (Tiles)

A mediados del 2014 Microsoft decide cambiar de estrategia tratando de unificar

todas las plataformas como PC tablets smartphones Xbox One entre otros Windows

10 (moacutevil) se dio a conocer puacuteblicamente durante un evento el 21 de enero para 2015 Al

igual que su homoacutelogo Windows 10 Mobile utiliza como navegador predeterminado

Microsoft Edge reemplazando Internet Explorer de Windows Phone 81 ya que este no

se adecuaba a las nuevas liacuteneas de disentildeo del sistema operativo

232 Proceso de desarrollo El entorno de desarrollo maacutes popular para el desarrollo de aplicaciones para

Windows Phone es Visual Studio (Figura 11) En la actualidad es posible utilizar diversos

lenguajes de programacioacuten VBNET y CNET C++ y JavaScript

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

34

Figura 11 Entorno de desarrollo Visual Studio

24 Diferencias teacutecnicas entre Android iOS y Windows Phone

Desarrollar aplicaciones moacuteviles para los tres sistemas operativos maacutes populares

implica conocer ciertos aspectos teacutecnicos de cada plataforma Algunos de estos aspectos

teacutecnicos difieren sustancialmente entre cada sistema operativo

Una de las caracteriacutesticas a tener en cuenta es si las aplicaciones moacuteviles se ejecutan

dentro de una maacutequina virtual especiacuteficamente disentildeada o si se ejecutan directamente

sobre el sistema operativo

Otro aspecto que los desarrolladores deben tener en cuenta es el lenguaje de

programacioacuten a utilizar para crear aplicaciones nativas Este aspecto es importante porque

incide en otros aspectos como por ejemplo la gestioacuten de memoria

Ademaacutes del lenguaje de programacioacuten a utilizar es importante conocer la

tecnologiacutea requerida para disentildear interfaces de usuario

Asimismo los desarrolladores deben familiarizarse con diferentes IDEs seguacuten la

plataforma en la que se desea desarrollar como asiacute tambieacuten con diferentes tiendas de

aplicaciones donde alojar los productos finales

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

35

Por uacuteltimo la tecnologiacutea de hardware requerida para soportar el sistema operativo

tambieacuten difiere seguacuten cada plataforma

La Tabla 1 compara cada uno de estos aspectos en los sistemas operativos moacuteviles

Android iOS y Windows Phone

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

36

Sistema

Operativo

Maacutequina

Virtual

Lenguaje de

Programacioacuten

Interfaces

de usuario

Gestioacuten de

memoria

IDE Plataforma de

desarrollo

Dispositivos Tienda de

Aplicaciones

Android Dalvik VM Java XML files Garbage

collector

Android

Studio

Multiplatforma Heterogeneos Google Play

Store

iOS No Objective-C Cocoa

Touch

Reference

counting

XCode Mac OS X Homogeneos iTunes Apps

Store

Windows

Phone

CLR C and Net XAML files Garbage

collector

Visual

Studio

Windows Vista7 Homogeneos Windows

Phone Store

Tabla 1 Diferencias teacutecnicas entre las plataformas Android iOS y Windows Phone

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

37

Capiacutetulo 3 Desarrollo de

Aplicaciones Moacuteviles

Multiplataforma

En los uacuteltimos antildeos el mercado de los dispositivos moacuteviles en especial

smartphones ha mostrado un crecimiento notable tanto en Argentina como en todo el

mundo En particular en nuestro paiacutes las plataformas que maacutes han crecido son Android

e iOS [1520]

Actualmente gran parte de la industria del software se concentra en desarrollar

soluciones para dispositivos moacuteviles proveyendo especialmente aplicaciones nativas

Las aplicaciones nativas tal como se mencionoacute en el capiacutetulo anterior ofrecen la

posibilidad de acceder a todas las capacidades del dispositivo (caacutemara GPS aceleroacutemetro

y agenda entre otras) su rendimiento es alto el acceso a Internet no es estrictamente

necesario y pueden ejecutarse en segundo plano notificando al usuario cuando se requiera

su atencioacuten Estas aplicaciones pueden distribuirsecomercializarse a traveacutes de las tiendas

en liacutenea correspondientes

El principal reto para los proveedores de aplicaciones es proporcionar soluciones

para todas las plataformas pero esto conlleva un alto costo [6] no es posible reusar el

coacutedigo fuente entre plataformas diferentes multiplicando esfuerzos y elevando los costos

de desarrollo actualizacioacuten y distribucioacuten de nuevas versiones

El desarrollo multiplataforma procura optimizar la relacioacuten costobeneficio

compartiendo la misma codificacioacuten entre las versiones para las distintas plataformas

Entre otras ventajas sobresalen menor tiempo y costo de desarrollo prestaciones

similares a las nativas con acceso al hardware del dispositivo y disponibilidad de

entornos potentes de desarrollo (Delphi Visual Studio etc) o en su lugar utilizacioacuten de

tecnologiacuteas (HTML5 Javascript y CSS) bien conocidas por los desarrolladores web

quienes pueden trasladar sus conocimientos y experiencias al paradigma moacutevil Sin

embargo el rendimiento de las aplicaciones y sus interfaces de usuario pueden afectar la

experiencia de usuario

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

38

Las aplicaciones multiplataforma pueden clasificarse en aplicaciones web moacuteviles

hiacutebridas interpretadas y generadas por compilacioacuten cruzada [5] En las secciones

siguientes se analizaran cada una de estas clasifcaciones

31 Aplicaciones Web Moacuteviles

Las Aplicaciones Web Moacuteviles disentildeadas para ejecutarse dentro de un navegador

se desarrollan con tecnologiacutea web estaacutendar (HTML CSS y JavaScript) y cuentan con

una serie de caracteriacutesticas favorables no necesitan adecuarse a ninguacuten entorno operativo

son independientes de la plataforma y su puesta en marcha es raacutepida y sencilla

Por contrapartida sus tiempos de respuesta decaen debido a la interaccioacuten cliente-

servidor Al mismo tiempo resultan ser menos atractivas que las aplicaciones nativas ya

que no se encuentran instaladas en el dispositivo lo que implica acceder previamente a

un navegador Ademaacutes las restricciones de seguridad impuestas a la ejecucioacuten de coacutedigo

por medio de un navegador limitan el acceso a todas las capacidades del dispositivo [23]

Asimismo no es posible desarrollar aplicaciones web que corran en segundo plano ni

tampoco aplicaciones offline ya que es requisito disponer de una conexioacuten a internet para

su funcionamiento

El proceso de desarrollo de una aplicacioacuten web moacutevil debe contemplar una serie de

caracteriacutesticas inherentes al entorno de ejecucioacuten Como ya ha sido mencionado las

aplicaciones web moacuteviles pueden ser accesibles desde cualquier dispositivo moacutevil que

cuente con un navegador y acceso a internet pero esto no significa que la navegacioacuten en

la aplicacioacuten resulte ser coacutemoda u oacuteptima Por ejemplo una aplicacioacuten web con un menuacute

compuesto de 20 iacutetems puede implicar una usabilidad correcta desde una PC Por lo

contrario para un dispositivo moacutevil con una pantalla limitada no resulta praacutectico que se

le presente al usuario tantas opciones en el menuacute Con este ejemplo lo que se pretende

mostrar es que para que una aplicacioacuten sea accesible desde diferentes dispositivos

moacuteviles posiblemente se tengan que realizar al menos dos disentildeos de presentacioacuten

diferentes un disentildeo para PC y otro disentildeo para dispositivos moacuteviles con una estructura

organizativa de la aplicacioacuten maacutes simplificada con respecto al disentildeo tradicional Por

ejemplo algunas de las funcionalidades de la aplicacioacuten para PC pueden ser eliminadas

para la versioacuten para dispositivos moacuteviles o presentadas de forma diferente

Para desarrollar diferentes presentaciones de una misma aplicacioacuten web

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

39

actualmente existen dos estrategias distintas ambas vaacutelidas seguacuten el contexto En los

siguientes apartados se analizaraacuten cada una de ellas

311 Aplicacioacuten Web dedicada y exclusiva para dispositivos moacuteviles Esta metodologiacutea ha sido el estaacutendar hasta el antildeo 2012 En ella la direccioacuten URL

y el coacutedigo HTML de la versioacuten moacutevil son distintos de la versioacuten de escritorio Por lo

general las direcciones URL tienen el formato mnombresitiocom

Algunas de las ventajas de este meacutetodo

- En general la carga es maacutes raacutepida y la navegacioacuten maacutes coacutemoda

- Es posible adaptar de manera maacutes faacutecil el contenido de las secciones

Desventajas de este meacutetodo

- Mantenimiento maacutes costoso Se debe mantener dos versiones distintas del mismo

sitio

- Dificulta el posicionamiento del sitio en los buscadores

- Estos desarrollos al final tienden a ser versiones muy reducidas de la web para

PC llevando al usuario a frustrarse y a preferir ver la versioacuten original de la web

312 Aplicacioacuten Web con Disentildeo Adaptable Con esta metodologiacutea la aplicacioacuten web se adapta al dispositivo desde el cual se la

estaacute accediendo El coacutedigo HTML y la direccioacuten URL de la aplicacioacuten son uacutenicos El

Disentildeo Adaptable o Responsive Design (Figura 12) tiene sus oriacutegenes en el antildeo 2008

cuando la W3C discutioacute y describioacute sus propoacutesitos Desde el antildeo 2012 -momento en el

cual Google recomendoacute fuertemente su implicancia [24]- viene en ascenso y

posiblemente llegue a convertirse en un standard en un corto plazo

Mediante un Disentildeo Adaptable todos los elementos de la web se reajustan en ancho

y altura adaptaacutendose al tamantildeo de tu pantalla Incluso es posible ocultar secciones cuando

se accede desde un dispositivo moacutevil

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

40

Figura 12 Disentildeo Adaptable

Las principales ventajas del desarrollo de aplicaciones web con Disentildeo Adaptable

son

- El mantenimiento es menos costoso ya que solo hay que mantener una uacutenica

versioacuten de la aplicacioacuten

- Se simplifica el proceso de posicionar la aplicacioacuten en los buscadores

Como contrapartida el Disentildeo Adaptable presenta una serie de desventajas

- Requiere de mayores niveles teacutecnicos para su desarrollo

- El contenido de las aplicaciones con Disentildeo Adaptable puede ser mayor que el

contenido de las aplicaciones web especiacuteficas para dispositivos moacuteviles

perjudicando el tiempo de carga cuando se utiliza un tipo de conexioacuten no muy

potente y generando un mayor consumo de datos

En la actualidad existe una gran cantidad de frameworks que simplifican el

desarrollo de aplicaciones web con disentildeo adaptable destacaacutendose por su popularidad y

extensa documentacioacuten los frameworks Bootstrap [25] y Foundation [26]

32 Aplicaciones Hiacutebridas

Las aplicaciones hiacutebridas utilizan tecnologiacuteas web (HTML Javascript y CSS) pero

no son ejecutadas por un navegador En su lugar se ejecutan en un contenedor web

(webview) como parte de una aplicacioacuten nativa la cual estaacute instalada en el dispositivo

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

41

moacutevil Desde una aplicacioacuten hiacutebrida es posible acceder a las capacidades del dispositivo

a traveacutes de diversas API

Las aplicaciones hiacutebridas ofrecen grandes ventajas permitiendo la reutilizacioacuten de

coacutedigo en las distintas plataformas el acceso al hardware del dispositivo y la distribucioacuten

a traveacutes de las tiendas de aplicaciones En contrapartida se observan dos desventajas de

las aplicaciones hiacutebridas respecto del caso nativo i) la experiencia de usuario se ve

perjudicada al no utilizar componentes nativos en la interfaz y ii) la ejecucioacuten se ve

ralentizada por la carga asociada al contenedor web

Afortunadamente existe una diversidad de frameworks que permiten desarrollar

aplicaciones hiacutebridas A continuacioacuten se haraacute un breve resumen de los maacutes populares

321 PhoneGap PhoneGap [27] es un framework gratuito y open source creado en el antildeo 2008 por

la empresa Nitobi Software que permite crear aplicaciones moacuteviles usando tecnologiacutea

web estaacutendar HTML JavaScript y CSS En octubre del 2011 Adobe adquiere la empresa

Nitobi y aporta el coacutedigo de PhoneGap a Apache Software Foundation para iniciar un

nuevo proyecto por encima de PhoneGap llamado Apache Cordova [28] PhoneGap pasoacute

a ser una de las varias distribuciones de Apache Cordova (Figura 13) brindando servicios

extras como por ejemplo Adobe PhoneGap Build [29] un servicio de compilacioacuten en la

nube proporcionado por Adobe Creative Cloud PhoneGap Desktop y PhoneGap

Developer

PhoneGap permite compilar aplicaciones para las siguientes plataformas Android

IOS Amazon Fire OS Windows Phone Windows 8 Ubuntu Tizen Firefox OS

Blackberry 10

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

42

Figura 13 Funcionamiento de Apache Cordova

322 CocoonJS CocoonJS [30] es un framework para el desarrollo de aplicaciones moacuteviles

producido por Ludei [31] Actualmente cuenta con una licencia propietaria y ofrece

diferente tipos de planes pagos y gratuitos El mencionado framework estaacute basado en

Apache Cordova al igual que PhoneGap pero se diferencia de este uacuteltimo en que hace

un mayor hincapieacute en la performance de las aplicaciones resultantes CocoonJS ofrece

dos tipos de webview

Canvas+ un webview liviano optimizado para video juegos Provee solo un

subconjunto de las funcionalidades del HTML5 (canvas audio motion

geolocalizacioacuten etc) necesarias para desarrollar video juegos con el objetivo de

brindar la mejor performance posible

Webview+ un potente y completo webview basado en el webview del proyecto

Chromium el cual cuenta de una mejor performance en comparacioacuten con el

webview por defecto de Apache Cordova

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

43

CocoonJs permite crear aplicaciones tanto para iOS como para Android

323 Ionic Ionic [32] es un completo SDK gratuito y open source para el desarrollo de

aplicaciones hiacutebridas producido por Max Lynch Ben Sperry y Adam Bradley de la

compantildeia Drifty Co en el antildeo 2013 En un tiempo relativamente corto alcanzoacute una

popularidad a destacar Estaacute basado en Apache Cordova permitiendo desarrollar

aplicaciones con tecnologiacutea web A diferencia de otros frameworks para el desarrollo de

aplicaciones hibridas Ionic provee un framework para la interfaz de usuario y

herramientas visuales para disentildear interfaces

Mediante Ionic es posible crear aplicaciones para Android IOS Windows Phone y

Firefox OS

324 Sencha Touch Sencha Touch [33] es un framework gratuito Model-View-Controller (MVC)

JavaScript construido sobre el sistema de clases de Ext JS disentildeado especialmente para

el desarrollo de aplicaciones web moacuteviles para dispositivos taacutectiles [34]

Al igual que PhoneGap Sencha Touch permite a los desarrolladores crear

aplicaciones moacuteviles a partir de un desarrollo web con HTML5 CSS y Javascript A

diferencia de PhoneGap Sencha no necesita de ninguna libreriacutea de terceros para construir

interfaces similares a las nativas ya que el framework provee consigo una gran cantidad

de componentes visuales listos para utilizar

Sencha empaqueta el coacutedigo del proyecto mediante PhoneGap para luego poder

construir aplicaciones en todas las plataformas soportadas por PhoneGap

33 Aplicaciones Interpretadas

Las aplicaciones interpretadas son implementadas utilizando un lenguaje base el

cual se traduce en su mayor parte a coacutedigo nativo mientras el resto es interpretado en

tiempo de ejecucioacuten Estas aplicaciones son implementadas de manera independiente de

las plataformas utilizando diversas tecnologiacuteas y lenguajes tales como Javascript Java

Ruby y XML entre otros

Una de las principales ventajas de este tipo de aplicaciones es que se obtienen

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

44

interfaces de usuario totalmente nativas Sin embargo los desarrolladores experimentan

una dependencia total con el entorno de desarrollo elegido

Seguidamente se presentaran algunos de frameworks maacutes reconocidos para el

desarrollo de aplicaciones interpretadas

331 Appcelerator Titanium Desarrollado por Appcelerator Inc Appcelerator Titanium [35] es un framework

de coacutedigo abierto que permite la creacioacuten de aplicaciones moacuteviles para las plataformas

iOS y Android Dicho framework estaacute formado por Titanium Studio un entorno de

desarrollo de coacutedigo libre para la codificacioacuten de aplicaciones moacuteviles multiplataforma

y el SDK Titanium una serie de herramientas para el desarrollo testeo anaacutelisis

depuracioacuten y compilacioacuten de aplicaciones

Las aplicaciones desarrolladas con Appcelerator Titanium se codifican utilizando

el lenguaje Javascript el cual es evaluado en tiempo de ejecucioacuten mediante un inteacuterprete

de Javascript que se ejecuta en el sistema operativo del dispositivo Al iniciar la

aplicacioacuten desde el coacutedigo nativo se ejecuta el coacutedigo Javascript y mediante la API de

Titanium se mapea uno-a-uno cada elemento del coacutedigo Javascript con los elementos

nativos De esta manera la API de Titanium actuacutea como puente logrando interfaces de

usuario compuestas de controles nativos Este entorno de desarrollo utiliza el framework

Alloy disentildeado para el desarrollo aacutegil de aplicaciones moacuteviles Alloy estaacute basado en la

arquitectura MVC y soporta el uso de tecnologiacuteas populares como Backbonejs [36] y

Underscorejs [37]

Los creadores de Titanium destacan que mediante este framework es posible

reutilizar entre el 60 y 90 del coacutedigo entre distintas plataformas

332 NativeScript El 5 de marzo del 2015 la empresa Telerik lanzoacute NativeScript [38] un proyecto de

coacutedigo abierto el cual permite generar aplicaciones nativas utilizando JavaScript

Asimismo es posible desarrollar la aplicacioacuten utilizando el lenguaje TypeScript [39]

lenguaje libre y de coacutedigo abierto desarrollado por Microsoft que extiende a JavaScript

esencialmente antildeadiendo tipado estaacutetico y objetos basados en clases En este sentido

cuando se compila la aplicacioacuten se realiza la traduccioacuten del coacutedigo TypeScript a coacutedigo

JavaScript

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

45

NativeScript provee un moacutedulo multiplataforma que permite obtener aplicaciones

nativas desde coacutedigo JavaScript Este moacutedulo expone las capacidades del dispositivo y

de la plataforma subyacente de una manera consistente y permite accederlas desde el

coacutedigo JavaScript De igual manera las interfaces de usuario pueden ser definidas

mediante coacutedigo JavaScript documentos HTML y archivos CSS abstrayeacutendose de los

componentes nativos reales

Cuando la aplicacioacuten es compilada parte del coacutedigo multiplataforma es traducido

a coacutedigo nativo mientras que el resto es interpretado en tiempo de ejecucioacuten (Figura 14)

Por el momento NativeScript permite generar aplicaciones para Android e iOS y

se preveacute dar soporte a Windows Phone NativeScript renderiza controles nativos sin

utilizar WebViews logrando una performance y experiencia de usuario similar al de las

aplicaciones nativas

Figura 14 Proceso de interpretacioacuten mediante NativeScript

34 Aplicaciones Generadas por Compilacioacuten Cruzada

Estas aplicaciones se compilan de manera nativa creando una versioacuten especiacutefica de

alto rendimiento para cada plataforma destino Ejemplos de entornos de desarrollo para

generar aplicaciones por compilacioacuten cruzada son Applause [40] Xamarin [41]

Embarcadero Delphi 10 Seattle [42] y RubyMotion [43]

El entorno de desarrollo abierto Applause utiliza como entrada un lenguaje

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

46

especiacutefico del dominio basado en el framework Xtext [44] disentildeado expliacutecitamente para

aplicaciones moacuteviles orientadas a datos y genera coacutedigo fuente en Objective C Java C

o Python Las caracteriacutesticas de Xamarin Embarcadero Delphi 10 Seattle y RubyMotion

se presentan en secciones posteriores

341 Xamarin Xamarin es una plataforma de desarrollo de aplicaciones moacuteviles para generar

aplicaciones 100 nativas para iOS Android y Windows a partir de una base de coacutedigo

CNET comuacuten para conseguir entre un 75 y hasta casi un 100 de reutilizacioacuten de

coacutedigo entre plataformas Las aplicaciones escritas con Xamarin y C disponen de acceso

completo a las API de la plataforma subyacente asiacute como de la capacidad de crear

interfaces de usuario nativas y de realizar la compilacioacuten en coacutedigo nativo por lo que el

impacto en el rendimiento en tiempo de ejecucioacuten es escaso

Xamarin es una compantildeiacutea que se establecioacute en mayo de 2011 por los mismos

ingenieros que crearon el proyecto Mono [45] consistente en una implementacioacuten libre

de la plataforma de desarrollo NET para dispositivos Android iOS y GNULinux

Anteriormente este proyecto se llamaba MonoTouch y MonoDroid

Si bien Xamarin cuenta con su propio IDE denominado Xamarin Studio (Figura

15) es posible integrarlo con Microsoft Visual Studio y de esta manera generar tambieacuten

aplicaciones para Windows incluido Windows RT para tablets y Windows Phone para

celulares

En febrero del 2016 Xamarin es comprada por Microsoft y desde ese momento la

plataforma Xamarin y el IDE Xamarin Studio pasaron a ser gratuitas

Xamarin propone un enfoque de desarrollo multiplataforma en el que se comparte

la codificacioacuten completa de la loacutegica del negocio Sin embargo las interfaces deben ser

programadas de manera independiente para cada una de las plataformas destino Asiacute la

reutilizacioacuten de coacutedigo seguacuten estudios estadiacutesticos de la compantildeiacutea Xamarin es cercana

al 85

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

47

Figura 15 Entorno de Desarrollo Xamarin Studio

342 Embarcadero Delphi 10 Seattle Embarcadero Delphi 10 Seattle [42] es una plataforma de desarrollo propietaria y

no gratuita que permite a los desarrolladores crear aplicaciones raacutepidamente a traveacutes de

un entorno visual coacutemodo e intuitivo (Figura 16) La aplicacioacuten desarrollada puede ser

compilada para muacuteltiples plataformas incluyendo Windows Mac Android e iOS

Delphi 10 Seattle al igual que Xamarin aventaja a otros tipos de aplicaciones

multiplataformas con resultados 100 nativos con acceso total a los sensores y

capacidades del dispositivo (caacutemara notificaciones GPS aceleroacutemetro entre otras)

Un punto a destacar es que Delphi 10 Seattle a traveacutes del framework de interfaces

de usuario FireUI Multi-Device Designer permite crear interfaces de usuario totalmente

nativas sin la necesidad de tener que disentildear interfaces especiacuteficas para cada plataforma

en particular

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

48

Figura 16 Entorno de Desarrollo Delphi 10 Seattle

343 RubyMotion En Mayo de 2012 la empresa HipByte lanza RubyMontion un proyecto que

permite generar aplicaciones para iOS Android y OS X utilizando el lenguaje de

programacioacuten Ruby

Para poder generar las aplicaciones multiplataforma RubyMotion posee

implementaciones de Ruby sobre los sistemas operativos destinos (Android e iOS) que

permiten acceder a todas las caracteriacutesticas provistas por cada plataforma Las

herramientas de compilacioacuten provistas por RubyMotion se encargan de embeber la

correspondiente implementacioacuten de Ruby al momento de compilar para cada plataforma

La principal desventaja de RubyMotion es que soacutelo funciona bajo el sistema

operativo OS X Otro factor a tener en cuenta es que no posee un entorno de desarrollo

integrado que facilite todo el proceso al desarrollador esto se ve solventado gracias a que

ofrece complementos para los IDE y editores de coacutedigo maacutes utilizados

Finalmente si bien el producto es un servicio pago ofrece una posibilidad de

probarlo gratuitamente aunque con soporte uacutenicamente para compilar a la uacuteltima versioacuten

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

49

de cada plataforma destino

Capiacutetulo 4 Experimentacioacuten

50

Capiacutetulo 4 Experimentacioacuten

Con el objetivo de profundizar la investigacioacuten de las diferentes metodologiacuteas de

desarrollo de aplicaciones moacuteviles multiplataforma es que se llevaron a cabo diferentes

experimentos en simultaacuteneo El primer experimento consiste en el desarrollo de una

aplicacioacuten moacutevil utilizando cada una de las metodologiacuteas estudiadas en el capiacutetulo

anterior con el objetivo de analizar el proceso de desarrollo El segundo experimento

tiene como objetivo analizar el rendimiento de las aplicaciones moacuteviles generadas

mediante las metodologiacuteas estudiadas a traveacutes de un caacutelculo matemaacutetico Por uacuteltimo se

presenta un informe comparativo que pueda ayudar en la toma de decisiones sobre queacute

metodologiacutea utilizar en futuros desarrollos

41 Aplicacioacuten Moacutevil para la plataforma de E-Learning WebUNLP

411 Descripcioacuten del problema WebUNLP es un entorno virtual de ensentildeanza y aprendizaje que permite a los

docentes mediar sus propuestas educativas Alumnos y docentes pueden encontrarse en

ese espacio para compartir materiales de estudio comunicarse y generar una experiencia

educativa en forma virtual [46]

Actualmente WebUNLP cuenta con una versioacuten web enfocada a computadoras de

escritorio o portaacutetiles pero no estaacute adaptada para ser utilizada desde dispositivos moacuteviles

El desarrollo planteado consiste en extender WebUNLP con la construccioacuten de una

aplicacioacuten moacutevil que permita acceder a determinadas funcionalidades del sistema a

traveacutes de un dispositivo moacutevil El enfoque propuesto incluye un anaacutelisis de la misma

solucioacuten comparando el desarrollo nativo web hiacutebrido interpretado y de compilacioacuten

cruzada a fin de establecer cuaacutel de ellos es conveniente

Como ocurre con cualquier desarrollo de software la construccioacuten de una

aplicacioacuten moacutevil implica tener claramente definido su propoacutesito y cuaacuteles requerimientos

debe cumplir En particular para el caso de software para dispositivos moacuteviles resulta

esencial tener objetivos maacutes acotados que en su versioacuten de escritorio [47]

Capiacutetulo 4 Experimentacioacuten

51

Para el caso especiacutefico de WebUNLP se realizoacute el desarrollo incremental de una

aplicacioacuten moacutevil y esta primera versioacuten se enfocoacute en una de sus herramientas de

comunicacioacuten la cartelera Esta herramienta permite comunicar las novedades de un

curso como por ejemplo el cambio de horario de una cursada recordar las fechas de

entrega de un trabajo praacutectico entre otras [46]

412 Anaacutelisis Uno de los primeros interrogantes planteados fue la eleccioacuten de la plataforma En

teacuterminos de mercado los sistemas operativos que predominan en Argentina son Android

e iOS [4815] con lo cual se decidioacute dar soporte a estos dos sistemas operativos

Se analizaron los requerimientos funcionales y no funcionales de forma aislada a la

plataforma y luego de forma especiacutefica para cada una de ellas

A continuacioacuten se presentan algunos requerimientos a cumplir por la aplicacioacuten

El usuario debe poder ingresar a la aplicacioacuten con las mismas credenciales que las

utilizadas para acceder a la versioacuten web de escritorio

El usuario debe poder acceder a la cartelera de todos los cursos en los que

participa ya sea como docente o alumno

El usuario debe recibir una notificacioacuten en su dispositivo cuando una novedad es

publicada en la cartelera Este requerimiento no se puede cumplir en la versioacuten

web accesible desde computadoras de escritorio yo portables

El usuario debe tener la misma experiencia de uso en todas las plataformas

operativas

La aplicacioacuten web existente debe estar sincronizada con la aplicacioacuten moacutevil a

desarrollar esto significa que cualquier cambio realizado desde la aplicacioacuten

moacutevil debe verse reflejado en la versioacuten web y viceversa

413 Disentildeo Para satisfacer los requerimientos planteados en el punto anterior a excepcioacuten de

la notificacioacuten el disentildeo de la aplicacioacuten moacutevil web consiste en una reacuteplica de lo ofrecido

por WEBUNLP adaptaacutendose solamente la interfaz al tamantildeo de pantalla del dispositivo

moacutevil

Capiacutetulo 4 Experimentacioacuten

52

Para el disentildeo de las aplicaciones moacuteviles nativa hiacutebrida interpretada y de

compilacioacuten cruzada la situacioacuten es maacutes compleja En la Figura 17 se presenta la

arquitectura geneacuterica de todos los componentes que participan en este escenario de

desarrollo En ella se observa el acceso desde una PC a WebUNLP y el acceso desde

dispositivos moacuteviles a la informacioacuten de WebUNLP mediante servicios web Para el

desarrollo de los servicios web se disentildeoacute una API Restful dada su simpleza escalabilidad

e interoperabilidad [49]

Figura 17 Arquitectura geneacuterica para aplicacioacuten nativa e hiacutebrida

Asimismo existe una tarea programada (Cron) de ejecucioacuten intermitente a

intervalos regulares de tiempo la cual notifica a los dispositivos moacuteviles correspondientes

cuando se crea una novedad en la cartelera de WebUNLP El Cron identifica el sistema

operativo del dispositivo a notificar y genera dicha notificacioacuten

En cuanto a la interfaz graacutefica se planteoacute un disentildeo independiente de la plataforma

para analizar los aspectos de usabilidad de la aplicacioacuten y luego se realizaron los ajustes

necesarios para cada tipo de aplicacioacuten

En las interfaces disentildeadas la navegacioacuten es en serie en el orden en que se presentan

en el mockup [50] de la Figura 18

Capiacutetulo 4 Experimentacioacuten

53

Figura 18 Mockup independiente del tipo de aplicacioacuten

414 Desarrollo

4141 Aplicacioacuten Nativa para Android

El desarrollo de aplicaciones para la plataforma Android requiere disponer del Java

Development Kit (JDK) y su entorno de programacioacuten conocido como Android SDK

Este uacuteltimo provee libreriacuteas y herramientas necesarias para construir testear y depurar

aplicaciones para Android

El desarrollo de la aplicacioacuten de WebUNLP para Android se realizoacute seguacuten las

convenciones adoptadas por su comunidad porque aplica buenas praacutecticas en la

construccioacuten de interfaces y de la loacutegica detraacutes de ellas el acceso a datos y a servicios

web Para cumplir el requerimiento de las notificaciones en el dispositivo

correspondiente el Cron genera la notificacioacuten mediante el uso del servicio Google Cloud

Messaging (GCM) [51] En la Figura 19 se presentan las interfaces de la aplicacioacuten

desarrollada

Figura 19 Aplicacioacuten nativa para Android

Capiacutetulo 4 Experimentacioacuten

54

4142 Aplicacioacuten Nativa para iOS

La plataforma Apple iOS estaacute basada en un modelo propietario es por ello que el

desarrollo de una aplicacioacuten nativa iOS implica contar con una Apple Mac ejecutando OS

X con Xcode instalado El lenguaje de programacioacuten principal es Objective C Xcode es

el entorno de desarrollo de Apple para todos sus dispositivos y es el encargado de

proporcionar el iOS SDK con las herramientas compiladores y frameworks necesarios

Ademaacutes Xcode viene integrado con simuladores para dispositivos iOS (iPhones y iPads)

que facilitan las etapas de prueba del sistema desarrollado

Para los aspectos referentes a la interfaz graacutefica y la interaccioacuten con el usuario se

siguieron las convenciones propuestas por Apple [52] para lograr una mejor integracioacuten

de la aplicacioacuten con el sistema operativo y mejorar la experiencia del usuario

Por uacuteltimo para satisfacer el requerimiento de notificaciones el Cron notifica al

dispositivo iOS correspondiente mediante el uso del servicio Apple Push Notification

Service (APNs) [53] En la Figura 20 se presentan las interfaces de la aplicacioacuten

desarrollada

Figura 20 Aplicacioacuten nativa para iOS

4143 Aplicacioacuten Web Moacutevil

Se desarrolloacute una aplicacioacuten web capaz de acceder a la cartelera de WebUNLP

disponible para cualquier dispositivo moacutevil que cuente con un navegador que soporte las

caracteriacutesticas utilizadas para el desarrollo HTML5 CSS3 y Javascript

Como la velocidad de transmisioacutenrecepcioacuten de datos de un dispositivo moacutevil a

traveacutes de WiFi y en particular 3G es inferior a la velocidad de una computadora de

Capiacutetulo 4 Experimentacioacuten

55

escritorio la versioacuten web de la cartelera de WebUNLP es liviana y gran parte de los

requerimientos son implementados a traveacutes de Ajax [54] para evitar ante alguacuten cambio

la recarga de la paacutegina completa

Debido a las limitaciones que tienen las aplicaciones que se ejecutan sobre un

navegador no es posible implementar la recepcioacuten de una notificacioacuten en el dispositivo

cuando una novedad es publicada en la cartelera

4144 Aplicacioacuten Hiacutebrida desarrollada con PhoneGap y Jquery Mobile

Para la construccioacuten de la aplicacioacuten WebUNLP hiacutebrida se utilizoacute el framework

PhoneGap [27] el cual permite desarrollar aplicaciones moacuteviles que utiliza tecnologiacuteas

comunes a todos los dispositivos HTML5 CSS y Javascript

Asimismo se utilizoacute el framework Javascript Jquery Mobile [55] para lograr

interfaces con apariencia y comportamiento consistente a traveacutes de las diferentes

plataformas moacuteviles

Con el objetivo de implementar el patroacuten de disentildeo MVC se utilizoacute la libreriacutea

Backbonejs [36]

Por uacuteltimo para satisfacer el requerimiento de notificaciones se utilizoacute el plugin

Pushwoosh [56]

En la figura 5 se presentan las interfaces de la aplicacioacuten desarrollada

Figura 21 Aplicacioacuten hiacutebrida desarrollada con PhoneGap

Capiacutetulo 4 Experimentacioacuten

56

4145 Aplicacioacuten Hiacutebrida desarrollada con Sencha Touch

El desarrollo de WebUNLP utilizando Sencha Touch se vio favorecido por el uso

del patroacuten de disentildeo MVC Esto permitioacute mayor flexibilidad y legibilidad en el coacutedigo

[57] [34]

Sencha ofrece Sencha Command una herramienta multiplataforma de liacutenea de

comandos que provee tareas automatizadas para todo el ciclo completo de una aplicacioacuten

En el caso de WebUNLP se utilizoacute tanto para la generacioacuten del proyecto como para el

empaquetado de la aplicacioacuten

En la Figura 22 se presentan las interfaces de la aplicacioacuten desarrollada

Figura 22 Aplicacioacuten desarrollada con Sencha Touch

4146 Aplicacioacuten Interpretada de WebUNLP con Appcelerator Titanium 3

Para desarrollar una aplicacioacuten moacutevil experimental seguacuten el enfoque interpretado

se utilizoacute el entorno de desarrollo gratuito y open source Appcelerator Titanium 3 [35]

Se destaca la simplicidad y legibilidad de los controladores y modelos de la

aplicacioacuten desarrollada luego de utilizar Alloy el framework de Titanium que permite

disentildear aplicaciones seguacuten el patroacuten de disentildeo MVC Para la construccioacuten de las vistas se

puede optar por la programacioacuten mediante Javascript y la API de Titanium o bien por

una especificacioacuten XML con estilos TSS (Titanium Style Sheets) Esta uacuteltima opcioacuten

simplifica el proceso de creacioacuten de las vistas aunque falta todaviacutea un buen editor visual

de interfaces que lo potencie

Capiacutetulo 4 Experimentacioacuten

57

Para cubrir requerimientos de notificaciones en el dispositivo Titanium provee el

moacutedulo PushNotifications para plataformas Android e iOS

La Figura 24 (a) muestra la experimentacioacuten con Titanium

4147 Aplicacioacuten Generada por Compilacioacuten Cruzada de WebUNLP utilizando XamarinVisual Studio

Tal como se mencionoacute en la seccioacuten 341 Xamarin propone un enfoque de

desarrollo multiplataforma en el que se comparte la codificacioacuten completa de la loacutegica

del negocio Sin embargo las interfaces deben ser programadas de manera independiente

para cada una de las plataformas destino (ver Figura 23) Asiacute la reutilizacioacuten de coacutedigo

seguacuten estudios estadiacutesticos de la compantildeiacutea Xamarin es cercana al 85

Figura 23 Enfoque uacutenico de desarrollo Xamarin

Para el estudio de las aplicaciones generadas por compilacioacuten cruzada se desarrolloacute

la aplicacioacuten moacutevil de WebUNLP utilizando Xamarin integrado con Microsoft Visual

Studio Siguiendo la estrategia maacutes eficiente para trabajar en este entorno se ha creado

una solucioacuten uacutenica conteniendo tres proyectos distintos Uno de ellos se utilizoacute para

generar la aplicacioacuten Android otro para la aplicacioacuten Windwos Phone 8 y el tercero para

la implementacioacuten de una biblioteca de clases portable (PCL por sus siglas en ingleacutes) con

todo el coacutedigo compartido Los tres proyectos fueron desarrollaacutendose de manera conjunta

y concurrente

Aunque una de las ventajas maacutes importantes de Xamarin es la reutilizacioacuten de

coacutedigo eacutesta se ve fuertemente afectada por el tipo de aplicacioacuten que se desarrolla La

relacioacuten existente entre la complejidad de la interfaz y la loacutegica del negocio impacta

directamente sobre la posibilidad de mantener la mayor cantidad de coacutedigo compartido

Capiacutetulo 4 Experimentacioacuten

58

en la PCL En el desarrollo de WebUNLP la reutilizacioacuten de coacutedigo ha sido cercana al

50 Sin embargo no debe despreciarse la ventaja de utilizar el mismo lenguaje entorno

y conjunto de herramientas comunes en el desarrollo de aplicaciones para distintas

plataformas moacuteviles

La Figura 24 (b) presenta la interfaz desarrollada para Windows Phone 8

4148 Aplicacioacuten Generada por Compilacioacuten Cruzada de WebUNLP utilizando Delphi 10 Seattle

Para el profundizar el estudio de las aplicaciones generadas por compilacioacuten

cruzada ademaacutes se desarrolloacute la aplicacioacuten moacutevil de WebUNLP utilizando Delphi 10

Seattle En particular fueron de gran utilidad tanto los componentes provistos por Delphi

para acceder a servicios RESTful como el entorno visual de desarrollo de Delphi 10

Seattle

Para la recepcioacuten de notificaciones en el dispositivo de las novedades de WebUNLP

se utilizoacute el componente TPushEvent conectado al servicio Kinvey [58]

La Figura 24 (c) presenta la interfaz de la aplicacioacuten desarrollada

(a) (b) (c)

Figura 24 Aplicacioacuten desarrollada con a) Titanium b) XamarinVisual Studio y c) Delphi XE

415 Conclusiones del experimento WebUNLP Seleccionar un dominio para desarrollar un caso experimental tiene sus

particularidades La novedad de disponer una aplicacioacuten moacutevil no es motivo suficiente

que justifique tal desarrollo Es necesario satisfacer un conjunto de requerimientos

claramente planteados

Capiacutetulo 4 Experimentacioacuten

59

WebUNLP es un entorno virtual de ensentildeanza y aprendizaje utilizado por diversos

cursos de grado y postgrado de la Universidad Nacional de La Plata Por ende la cantidad

de usuarios beneficiados por acceder desde cualquier lugar a este entorno es importante

De esta manera se optoacute por elegir dicho espacio virtual para ser replicado en una

versioacuten moacutevil que no soacutelo permita acercarlo a sus usuarios sino que ademaacutes ampliacutee sus

funciones en este caso puntualmente para la cartelera

Para el desarrollo de esta experimentacioacuten se desarrolloacute la misma aplicacioacuten para

los cinco tipos de enfoques de desarrollo moacutevil (web nativa hiacutebrida interpretada y

generada por compilacioacuten cruzada)

Se destaca la gran simpleza de generar la versioacuten web dado que se utilizan las

mismas herramientas tecnoloacutegicas que las usadas para el desarrollo de cualquier

aplicacioacuten web tradicional La principal diferencia en este sentido radica en la limitacioacuten

de espacio en la pantalla del dispositivo No obstante el mayor contraste estaacute dado en que

no es posible acceder a todas las capacidades de hardware del dispositivo lo que impidioacute

implementar uno de los requerimientos probablemente el maacutes interesante la notificacioacuten

de novedades de la cartelera de WebUNLP al usuario

Por otra parte las versiones nativas han cumplido todos los requerimientos Aunque

la mayor desventaja consiste en la no portabilidad lo que implicoacute un desarrollo especiacutefico

para la plataforma que se desee cubrir En este trabajo se han presentado los desarrollos

para Android e iOS sistemas operativos maacutes usados en Argentina con un costo de

desarrollo y mantenimiento inherente mayor

Para el caso del enfoque hiacutebrido tanto la versioacuten de WebUNLP desarrollada con

PhoneGap y Jquery Mobile como la versioacuten desarrollada con Sencha Touch han logrado

conjugar la simpleza del desarrollo web con el uso de todas las capacidades del

dispositivo Este tipo de enfoque pretende suplir las desventajas de los dos enfoques

previos hecho que lo posiciona como una eleccioacuten realmente interesante siempre

condicionada por los requerimientos especiacuteficos a cumplir

Por el lado del modo de desarrollo interpretado la versioacuten de WebUNLP

desarrollada con Titanium logroacute resolver todos los requerimientos previamente

planteados Al igual que en el enfoque hiacutebrido es un punto a destacar que el desarrollo

de la aplicacioacuten con Titanium es relativamente simple y es posible reutilizar todo el

Capiacutetulo 4 Experimentacioacuten

60

coacutedigo entre plataformas Lo que lo hace la eleccioacuten prima facie es el hecho de obtener

interfaces totalmente nativas algo que no se lograba mediante el enfoque hiacutebrido

Por uacuteltimo las versiones de WebUNLP generadas con el enfoque de compilacioacuten

cruzada con Xamarin y Delphi lograron cumplir los requerimientos planteados Se

destaca el hecho de que se genera interfaces totalmente nativas pero considero que el

costo es muy alto se debe disentildear las interfaces para cada plataforma de manera

independiente lo que hace que no se pueda reutilizar todo el coacutedigo fuente de la

aplicacioacuten

42 Enfoques de desarrollo Anaacutelisis comparativo de rendimiento 421 Descripcioacuten del Problema

Hace apenas unas deacutecadas atraacutes el uso de los sistemas de software estaba

restringido a un grupo reducido de usuarios especializados Aquella eacutepoca contrasta

fuertemente con la actualidad en la que los smartphones pequentildeas computadoras moacuteviles

de propoacutesito general se han vuelto cotidianos y omnipresentes Estos dispositivos pueden

utilizarse para llevar a cabo tareas complejas y criacuteticas requiriendo la mejora continua de

las capacidades de coacutemputo la disponibilidad el rendimiento eficiente entre otras

necesidades La evolucioacuten vertiginosa de esta tecnologiacutea ejerce presioacuten en la adaptacioacuten

de la Ingenieriacutea de Software

Respecto del desarrollo para dispositivos moacuteviles se debe considerar una serie de

caracteriacutesticas propias de esta actividad que no estaban presentes en el desarrollo

tradicional de software [59] Es necesario tener en cuenta sobre queacute tipo de dispositivos

se debe ejecutar la aplicacioacuten a construir La diversidad de plataformas lenguajes de

programacioacuten herramientas de desarrollo estaacutendares protocolos y tecnologiacuteas de red

algunas limitaciones de ciertos dispositivos y las exigencias de tiempo del mercado entre

otros constituyen algunos de los problemas a tratar

En la mayoriacutea de los casos el eacutexito de un producto de software para dispositivos

moacuteviles estaraacute condicionado por el nivel de popularidad que logre alcanzar Para

maximizar su presencia en el mercado es necesario que la aplicacioacuten pueda ejecutarse

sobre la mayor cantidad de plataformas moacuteviles existentes especialmente sobre las dos

maacutes populares Android e iOS [60] Para lograr este objetivo existen dos alternativas

Capiacutetulo 4 Experimentacioacuten

61

i) Desarrollar aplicaciones especiacuteficas para cada plataforma impulsando en

paralelo varios proyectos de desarrollo con las herramientas y lenguajes propios de cada

una de ellas Estas aplicaciones analizadas previamente en este trabajo se denominan

aplicaciones nativas

ii) Generar aplicaciones que puedan ejecutarse en forma directa sobre maacutes de una

plataforma de sistema operativo a partir de un uacutenico proyecto de desarrollo Estas

aplicaciones como ya se ha presentado en este trabajo se denominan aplicaciones

multiplataforma

En los uacuteltimos antildeos se ha incrementado el intereacutes de la comunidad de Ingenieriacutea de

Software por el estudio del desarrollo de aplicaciones multiplataforma para dispositivos

moacuteviles

En [5] se presenta un anaacutelisis comparativo de enfoques de desarrollo de aplicaciones

multiplataforma para dispositivos moacuteviles proponiendo la siguiente taxonomiacutea

aplicaciones web moacuteviles aplicaciones hiacutebridas aplicaciones interpretadas y

aplicaciones generadas por compilacioacuten cruzada

En [7] y [8] se analizan aspectos generales de frameworks de desarrollo

multiplataforma para dispositivos moacuteviles

En [61] se comparan aspectos no funcionales para los diferentes enfoques de

desarrollo de aplicaciones multiplataforma para dispositivos moacuteviles

En [9] se analizaron ventajas y desventajas de los enfoques de desarrollo

multiplataforma mencionados desde el punto de vista del Ingeniero de Software

La eleccioacuten del modo de desarrollo de aplicaciones para dispositivos moacuteviles

depende de varios factores Uno de ellos en muchos casos esencial es el tiempo de

ejecucioacuten El intereacutes por optimizar el tiempo de ejecucioacuten de una aplicacioacuten de software

es intriacutenseco a la disciplina informaacutetica Esto se evidencia entre otras cosas por la

evolucioacuten del poder de coacutemputo de los procesadores Ademaacutes el rendimiento eficiente

es uno de los atributos que las aplicaciones de software deben satisfacer seguacuten diversos

estaacutendares de calidad entre otros ISOIEC 9126 e ISOIEC 25010 [62]

En lo que respecta al desarrollo de aplicaciones para dispositivos moacuteviles es

oportuno considerar el tiempo de ejecucioacuten de las aplicaciones por diversos motivos

El tiempo de ejecucioacuten de una aplicacioacuten estaacute fuertemente ligado al consumo de

Capiacutetulo 4 Experimentacioacuten

62

energiacutea [63] el cual estaacute limitado por la capacidad de la bateriacutea de los dispositivos

Asimismo el rendimiento de las aplicaciones se ve reflejado principalmente

mediante las calificaciones de los usuarios en las tiendas de aplicaciones en liacutenea

Aplicaciones con bajo rendimiento pueden implicar usuarios disconformes produciendo

publicidad negativa [60] Andre Charland y Brian Leroux identifican al tiempo de

ejecucioacuten como uno de los problemas principales a resolver en el desarrollo de

aplicaciones multiplataforma y afirman que a los usuarios finales les preocupa la calidad

del software y la experiencia de uso [64]

Corral Sillitti y Succi realizaron un anaacutelisis de rendimiento comparativo entre

aplicaciones nativas y aplicaciones hiacutebridas utilizando el framework Phonegap para una

versioacuten del sistema operativo Android [65]

Es importante destacar que no se han encontrado estudios que evaluacuteen y comparen

el rendimiento entre los diversos modos de desarrollo multiplataforma de acuerdo a la

taxonomiacutea propuesta en [5] aplicaciones web moacuteviles aplicaciones hiacutebridas

aplicaciones interpretadas y aplicaciones generadas por compilacioacuten cruzada Esta

taxonomiacutea es la que se utiliza de referencia en este trabajo

El presente apartado realiza un anaacutelisis comparativo de rendimiento de aplicaciones

para dispositivos moacuteviles generadas por el enfoque de desarrollo nativo y los distintos

enfoques de desarrollo multiplataforma seguacuten [5]

En la seccioacuten siguiente se describe el experimento utilizado para evaluar tiempos

de ejecucioacuten en aplicaciones nativas y en los diversos modos de desarrollo de aplicaciones

moacuteviles multiplataforma y en las secciones posteriores se muestran y analizan los

resultados obtenidos se presentan las conclusiones y el trabajo futuro

422 Desarrollo

4221 Disentildeo de las pruebas

Todas las pruebas cuyos resultados se presentan en este trabajo fueron realizadas

sobre dispositivos moacuteviles con sistemas operativos Android e iOS dado que en la

actualidad abarcan gran parte del mercado mundial de acuerdo a lo indicado en [60]

Para llevar a cabo la experimentacioacuten se seleccionaron los frameworks de desarrollo

multiplataforma seguacuten las alternativas presentadas en [10] Se disentildearon pruebas para

evaluar el rendimiento de Apache Cordova [28] Appcelerator Titanium [35] y Xamarin

Capiacutetulo 4 Experimentacioacuten

63

[41] que se corresponden con los modos de desarrollo hiacutebrido interpretado y compilacioacuten

cruzada respectivamente Tambieacuten se experimentoacute con otros dos frameworks de

desarrollo multiplataforma que recientemente han ganado popularidad NativeScript

(desarrollo interpretado) y Corona (compilacioacuten cruzada) Finalmente se incluyeron al

conjunto de pruebas las aplicaciones web y el enfoque nativo de desarrollo para Android

e iOS De este modo se logroacute una muestra razonablemente representativa de las diversas

opciones existentes en la actualidad

Para la realizacioacuten de las pruebas se utilizaron seis dispositivos moacuteviles distintos

(ver Tabla 2) tres de ellos con sistema operativo Android identificados como DA1 DA2 y

DA3 (dos smartphone y una tablet) y tres con sistema operativo iOS identificados como

DI1 DI2 y DI3 (dos smartphone y una tablet)

ID Sistema Operativo Caracteriacutesticas

DA1 Android 44

Tipo Smartphone Marca Motorola

Modelo Moto-G2 Procesador Quad-core 12 GHz Cortex-A7

RAM 1GB Snapdragon 400

DA2 Android 502

Tipo Smartphone Marca Samsung

Modelo S6 Procesador Octa-core (4x21 GHz Cortex-A57 amp 4x15

GHz Cortex-A53) RAM 3GB Exynos 7420 Octa

DA3 Android 422

Tipo Tablet Marca Samsung Modelo Tab 2

Procesador Dual-core 10 GHz RAM 1GB TI OMAP 4430

DI1 iOS 92

Tipo Smartphone Marca Apple Modelo 5S

Procesador Dual-core 13 GHz Cyclone (ARM v8-based)

RAM 1GB Apple A7

DI2 iOS 91

Tipo Smartphone Marca Apple

Modelo 6 plus Procesador Dual-core 14 GHz Typhoon (ARM v8-

based) RAM 1GB Apple A8

DI3 iOS 91 Tipo Tablet

Marca Apple Modelo Ipad Air

Capiacutetulo 4 Experimentacioacuten

64

Procesador Dual-core 13 GHz Cyclone (ARM v8-based)

RAM 1GB Apple A7 Tabla 2 Dispositivos moacuteviles utilizados en el experimento

Se definieron siete escenarios de anaacutelisis distintos uno por cada estrategia de

desarrollo utilizada

1 Nativo para Android y nativo para iOS 2 Aplicaciones web (multiplataforma) 3 Apache Cordova (multiplataforma hibrido) 4 Appcelerator Titanium (multiplataforma interpretado) 5 NativeScript (multiplataforma interpretado) 6 Xamarin (multiplataforma compilacioacuten cruzada) 7 Corona (multiplataforma compilacioacuten cruzada)

En los seis dispositivos se llevaron a cabo pruebas para cada uno de los siete

escenarios mencionados definiendo asiacute un total de 42 casos de prueba

Con el fin de evaluar la velocidad de procesamiento se planteoacute un caacutelculo simple

que incluyoacute varias iteraciones funciones matemaacuteticas y aritmeacutetica de punto flotante que

se resume en la siguiente serie

119904119890119903119894119890 =sum sum (log2(119896) +3119896

2119895+ radic119896

100000

119896=1

+ 119896119895minus1)

5

119895=1

A modo de ejemplo en la Figura 25 se muestra el coacutedigo multiplataforma

desarrollado en Apache Cordova para el caacutelculo de la serie definida

El experimento planteado permite medir con precisioacuten la variable analizada en este

caso el tiempo de ejecucioacuten requerido para realizar un caacutelculo matemaacutetico intensivo

Este tipo de caacutelculo matemaacutetico es frecuente en diversas aplicaciones que se

ejecutan en dispositivos moacuteviles por ejemplo juegos aplicaciones con realidad

aumentada aplicaciones para tratamiento de imaacutegenes entre otras en las cuales no

siempre es posible utilizar el poder de la Unidad de Procesamiento Grafico (GPU) para

el caacutelculo

El coacutedigo fuente de los experimentos llevados a cabo se encuentra disponible en

[66]

En las siguientes secciones se describe la experimentacioacuten y se analizan los

resultados obtenidos

Capiacutetulo 4 Experimentacioacuten

65

4222 Recoleccioacuten de datos

Para cada uno de los 42 casos de prueba definidos se realizaron 30 ejecuciones

independientes del experimento disentildeado obteniendo en cada caso una muestra T = T1

T2 hellip T30 con Ti = tiempo requerido para el caacutelculo de la serie en la i-eacutesima ejecucioacuten

del experimento planteado El tiempo Ti se expresa en milisegundos

Para caracterizar cada una de las muestras obtenidas se han calculado los

estadiacutesticos y S que se corresponden con la media (o promedio muestral) y la

desviacioacuten estaacutendar muestral (ver Tabla 3)

var startTime = new Date()getTime()

var serie = 0

for ( var j=1 j lt= 5 j++ )

for ( var k=1 k lt= 100000 k++ )

series = series + (Mathlog(k)MathLN2) + (3k2j) +

Mathsqrt(k) + Mathpow(k j-1)

var finalTime = new Date()getTime()

var duration = finalTime - startTime

documentgetElementById(result)innerHTML = duration + -gt + series

Figura 25 Caacutelculo de serie coacutedigo multiplataforma desarrollado en Apache Cordova

Capiacutetulo 4 Experimentacioacuten

66

Dada la muestra T=T1 T2 hellip Tn

Media o promedio muestral = (

1

119899)sum119879119894

119899

119894=1

Desviacioacuten estaacutendar muestral 119878 = radic

1

119899 minus 1sum(119879119894 minus )2119899

119894=1

Tabla 3 Estadiacutesticos utilizados en el anaacutelisis de los datos

423 Resultados Obtenidos En la Tabla 4 se presenta una siacutentesis de los resultados obtenidos conformada por

los valores y S calculados para cada caso de prueba planteado Estos valores permiten

comparar el rendimiento de las aplicaciones generadas a partir de los distintos enfoques

de desarrollo evaluadas sobre cada uno de los seis dispositivos utilizados

Los valores presentados en la Tabla 4 y graficados con diagramas de barras en la

Figura 26 sugieren un anaacutelisis por separado de los casos con sistema operativo Android

y los casos con sistema operativo iOS Claramente las siluetas delineadas en los

diagramas de barras de la Figura 26 se repiten de forma similar en los escenarios con el

mismo sistema operativo pero se diferencian notablemente entre distintos sistemas

operativos

Nativo WebApp Apache Cordova Titanium NativeScript Xamarin Corona

DA1 53293 18627 23033 21167 18730 39517 140173

S 1614 632 1422 2495 939 895 1260

DA2 21180 9067 8577 9563 8967 21100 60053

S 1997 1248 883 764 916 669 595

DA3 76380 17273 19060 19270 18350 37933 134430

S 2898 1551 936 1680 304 831 2339

DI1 413 5710 32373 29977 25203 12543 3963

S 078 1655 1662 401 728 1103 085

DI2 413 4190 26397 24113 22343 10303 9863

S 073 538 1544 495 861 491 613

DI3 253 4167 29223 27267 22597 11053 10967

S 057 444 1082 550 277 390 275

Tabla 4 Siacutentesis de resultados obtenidos

Capiacutetulo 4 Experimentacioacuten

67

Figura 26 Diagrama de barras con las muestras recolectadas (las barras muestran el tiempo promedio expresado en milisegundos)

Capiacutetulo 4 Experimentacioacuten

68

424 Anaacutelisis de Resultados Debido a las diferencias de hardware de los dispositivos utilizados no es prudente

comparar el rendimiento de las aplicaciones nativas en Android con respecto a las de

iOS No obstante de los resultados obtenidos es posible inferir que el enfoque nativo en

iOS resulta mucho maacutes eficiente que el enfoque nativo en Android Existen diversos

factores que presumen justificar este hecho entre ellos la diferencia inherente de ejecutar

coacutedigo Objective C en iOS comparado con ejecutar coacutedigo Java en Android el cual

necesita del Android Runtime (ART) para su funcionamiento ralentizaacutendolo

Respecto de las aplicaciones web multiplataforma los resultados de rendimiento

resaltaron positivamente en relacioacuten al resto tanto en Android como en iOS Asiacute el

enfoque de desarrollo multiplataforma web seriacutea una opcioacuten conveniente para alcanzar

un buen rendimiento en todos los dispositivos moacuteviles independientemente de su sistema

operativo Sin embargo esta eleccioacuten podriacutea verse afectada por las limitaciones de estas

aplicaciones para acceder en forma completa a las capacidades especiacuteficas del dispositivo

Respecto de los enfoques hiacutebrido e interpretado -analizados a traveacutes de las

tecnologiacuteas Coacuterdova Titanium y NativeScript- es importante destacar que si bien estos

enfoques trabajan de modo distinto entre siacute tienen algo en comuacuten la ejecucioacuten de coacutedigo

JavaScript En este sentido el motor de JavaScript -encargado de convertir el coacutedigo

JavaScript en coacutedigo optimizado para que luego lo interprete un WebView- cumple un

rol determinante Las pruebas de estos enfoques en Android -que utiliza el motor de

JavaScript V8- tuvieron un comportamiento similar al enfoque web y comportamiento

superior que el enfoque nativo y el enfoque de compilacioacuten cruzada Por el contrario en

los dispositivos moacuteviles con iOS -que utiliza el motor JavaScriptCore- los resultados de

estas pruebas fueron peores que en los enfoques nativos web y de compilacioacuten cruzada

En los dispositivos moacuteviles con iOS los casos de compilacioacuten cruzada -analizados

a traveacutes de las tecnologiacuteas Xamarin y Corona- obtuvieron mejores resultados que los

casos hiacutebridos e interpretados pero mostraron peor rendimiento que el enfoque nativo y

que el enfoque web En cambio en los dispositivos moacuteviles con Android los resultados

de las pruebas con las aplicaciones construidas mediante el enfoque de compilacioacuten

cruzada fueron los peores La necesidad de ejecucioacuten de coacutedigo Java a traveacutes del Android

Runtime entre otros factores justifican este resultado

Capiacutetulo 4 Experimentacioacuten

69

425 Conclusiones Se ha presentado un estudio comparativo sobre el tiempo de procesamiento de

aplicaciones de software para dispositivos moacuteviles generadas con distintos enfoques de

desarrollo

Los escenarios de prueba disentildeados incluyeron los dos sistemas operativos para

dispositivos moacuteviles con mayor presencia en el mercado Android e iOS ejecutaacutendose

cada uno de ellos sobre dos smartphones (considerados de gama media y gama alta al

momento en que este trabajo fue escrito) y una Tablet

Sobre estos seis dispositivos se realizoacute un estudio de rendimiento para las

aplicaciones construidas seguacuten los enfoques de desarrollo nativos y multiplataforma

mediante un conjunto de aplicaciones que fueron desarrolladas para tal fin

1 Aplicacioacuten nativa para Android 2 Aplicacioacuten nativa para iOS 3 Aplicacioacuten web (multiplataforma) 4 Aplicacioacuten Apache Cordova (multiplataforma hibrido) 5 Aplicacioacuten Appcelerator Titanium 6 (multiplataforma interpretado) 7 Aplicacioacuten NativeScript (multiplataforma interpretada) 8 Aplicacioacuten Xamarin (multiplataforma compilacioacuten cruzada) 9 Aplicacioacuten Corona (multiplataforma compilacioacuten cruzada)

En todos los dispositivos con sistema operativo Android el peor rendimiento fue

evidenciado por Corona seguido por el enfoque nativo y Xamarin Esta situacioacuten es

totalmente opuesta a los resultados obtenidos sobre el sistema operativo iOS en doacutende las

tecnologiacuteas de desarrollo mencionadas se mostraron siempre entre las cuatro mejores En

particular es destacable la supremaciacutea del enfoque nativo frente a todos los demaacutes para el

caso de los dispositivos con iOS

Respecto al mejor rendimiento en los dispositivos Android no es posible identificar

claramente cuaacutel es el enfoque maacutes conveniente Tanto las aplicaciones web como

Coacuterdova NativeScript y Titanium alcanzaron buenos resultados en relacioacuten al resto

Nuevamente esta situacioacuten se contrapone con los datos obtenidos sobre los dispositivos

iOS en los que Coacuterdova Titanium y NativeScript obtuvieron las peores mediciones entre

las tecnologiacuteas utilizadas No ocurrioacute lo mismo con las aplicaciones web en iOS que

tambieacuten produjeron buenos resultados en relacioacuten al resto

Capiacutetulo 4 Experimentacioacuten

70

En liacuteneas generales independientemente del sistema operativo las aplicaciones

web han mostrado un buen rendimiento si se consideran todos los casos analizados

Actualmente al desarrollar un sistema de software existe la posibilidad de generar

su versioacuten para dispositivos moacuteviles Esta tarea muchas veces no es simple y una de las

decisiones maacutes importantes a tomar es elegir el enfoque de desarrollo

A partir de este trabajo se dispone de un indicador de rendimiento que puede ser

uacutetil para el Ingeniero de Software que debe seleccionar un enfoque de desarrollo de

software para dispositivos moacuteviles

Por otra parte no se han encontrado trabajos de otros autores donde se haya

analizado el rendimiento en todos los enfoques de desarrollo de software para dispositivos

moacuteviles Este tema tal como se indicoacute en la introduccioacuten es importante para la

comunidad de Ingenieriacutea de Software y los trabajos analizados hasta el momento se han

concentrado solo en los enfoques nativos yo hiacutebridos

43 Anaacutelisis comparativo de enfoques de Desarrollo de Aplicaciones Moacuteviles

Como se estudioacute en las secciones anteriores existen diferentes enfoques de

desarrollo de aplicaciones moacuteviles

Una opcioacuten es desarrollar aplicaciones moacuteviles nativas las cuales hacen uso de

todas las capacidades del dispositivo moacutevil y permiten una alta experiencia de usuario

debido a que las interfaces de usuario se componen por componentes nativos resultando

semejantes al resto de las interfaces del sistema operativo No obstante el desarrollo no

puede ser reutilizado para dar soporte a otras familias de sistemas operativos implicando

mayores costos de desarrollo y mantenimiento

En contraposicioacuten al desarrollo nativo surgioacute el desarrollo multiplataforma dando

la posibilidad de desarrollar un uacutenico producto y ejecutarlo en diferentes plataformas En

este sentido se estudiaron diferentes enfoques desarrollo web moacutevil hiacutebrido

interpretado y generado por compilacioacuten cruzada Cada uno de estos enfoques cuenta con

ciertas caracteriacutesticas que naturalmente los hacen diferenciar con ventajas y

desventajas

Se identificaron diversos factores que pueden ser utilizados para analizar las

Capiacutetulo 4 Experimentacioacuten

71

aplicaciones que se generan mediante los enfoques de desarrollo nativo y

multiplataforma los cuales se detallan a continuacioacuten

Experiencia de usuario conjunto de factores y elementos que hacen referencia

al nivel de satisfaccioacuten total de los usuarios cuando utilizan un producto o sistema

El resultado es la generacioacuten de una percepcioacuten positiva o negativa de dicho

servicio producto o dispositivo

Plataformas alcanzadas se ha visto en capiacutetulos anteriores que existen distintas

familias de sistemas operativos Seguacuten el modo de desarrollo elegido se puede

desarrollar aplicaciones para una plataforma especiacutefica o por varias

Costo del desarrollo el desarrollo puede ser maacutes o menos costoso seguacuten si

requiere codificar las soluciones de forma especiacutefica para cada sistema operativo

o si es posible la reutilizacioacuten de coacutedigo

Costo del mantenimiento la correccioacuten de errores o agregados de nuevas

funcionalidades puede requerir codificar de forma especiacutefica para cada sistema

operativo Ademaacutes se debe tener en cuenta si deben convivir diferentes versiones

del mismo producto

Entorno de desarrollo integrado Software que asiste al programador en la

construccioacuten de aplicaciones

Interfaces de usuario factor que analiza los tipos de componentes utilizados para

construir las interfaces de usuario Como se mencionoacute al analizar los distintos

enfoques de desarrollo la eleccioacuten de la herramienta a utilizar incide en si las

interfaces estaraacuten compuestas mediante componentes nativos o componentes web

los cuales pueden ser decorados para simular componentes nativos

Acceso total al dispositivo posibilidad de acceder mediante las herramientas de

desarrollo a todas las capacidades del dispositivo como la caacutemara sensores entre

otros

Modo de instalacioacuten se refiere a si la aplicacioacuten puede ser instalada desde las

tiendas de aplicaciones o es accesible sin instalacioacuten desde un navegador de

Internet

Rendimiento factor que analiza la ejecucioacuten de tareas y los tiempos asociados

Capiacutetulo 4 Experimentacioacuten

72

en su resolucioacuten

Uso offline capacidad que tiene la aplicacioacuten de funcionar sin estar conectada a

internet

Distribucioacuten a traveacutes de las tiendas posibilidad de descargar la aplicacioacuten desde

las tiendas de aplicaciones

Categoriacuteas de aplicaciones a desarrollar tipo de aplicacioacuten que se desea

desarrollar

Porcentaje de coacutedigo a reutilizar Cantidad de liacuteneas de coacutedigo con respecto al

total que pueden ser reutilizadas para en la generacioacuten de aplicaciones

multiplataforma

Con el objetivo de estudiar coacutemo se comportan e inciden estos factores en los

distintos enfoques de desarrollo se realizoacute un estudio comparativo de los diferentes

criterios a tener en cuenta Dicho estudio se sintetiza en la Tabla 5

Capiacutetulo 4 Experimentacioacuten

73

Factor a analizar Desarrollo Nativo Desarrollo Web Desarrollo Hiacutebrido Desarrollo

Interpretado

Desarrollo Generado

por Compilacioacuten

Cruzada

Experiencia de Usuario

Alta Muy Baja Baja Alta Alta

Plataformas alcanzadas

Se desarrolla

exclusivamente

para una

plataforma destino

Cualquier

plataforma Se

necesita solo un

navegador y acceso a

internet

Es posible compilar

para Android iOS

Windows Phone

Es posible compilar

para Android iOS

Windows Phone

Es posible compilar

para Android iOS

Windows Phone

Costo del desarrollo

Muy Alto Muy Bajo Bajo Medio Medio a Alto

Costo del mantenimiento

Muy Alto Muy Bajo Medio Alto Alto a Muy Alto

Entorno de desarrollo integrado

IDE uacutenico por SO Muacuteltiples opciones Plugins para IDE

geneacutericos

Algunos frameworks

disponen de IDE

especiacutefico

IDE uacutenico por

framework

Interfaces de usuario

Nativas Web Web Nativas Nativas

Acceso total al dispositivo

Si No Si Si Si

Modo de instalacioacuten

Descargar desde la Sin instalaciones Descargar desde la Descargar desde la Descargar desde la

Capiacutetulo 4 Experimentacioacuten

74

Factor a analizar Desarrollo Nativo Desarrollo Web Desarrollo Hiacutebrido Desarrollo

Interpretado

Desarrollo Generado

por Compilacioacuten

Cruzada

tienda de

aplicaciones e

instalar

tienda de aplicaciones

e instalar

tienda de aplicaciones e

instalar

tienda de aplicaciones e

instalar

Rendimiento Muy Alto Muy Bajo Bajo a Medio Alto Medio a Alto

Uso offline Si No Si Si Si

Distribucioacuten a traveacutes de las tiendas

Si No Si Si Si

Categoriacutea de aplicaciones a desarrollar

Aplicaciones que

demandan muchos

recursos o que

requiere una alta

experiencia de

usuario

Sitios web existentes Sitios web

encapsulados como

aplicacioacuten para ser

distribuidas a traveacutes

de tiendas

Aplicaciones simples a

complejas

Aplicaciones simples a

complejas

Porcentaje de Coacutedigo a reutilizar

0 100 Cerca del 100 Cerca del 90 Entre el 60 y 85

Tabla 5 Anaacutelisis comparativo de enfoques de desarrollo de aplicaciones moacuteviles

Capiacutetulo 5 Conclusiones

75

Capiacutetulo 5 Conclusiones

Inicialmente los dispositivos moacuteviles fueron pensados y disentildeados con un propoacutesito

particular A traveacutes de los antildeos el crecimiento tecnoloacutegico ha permitido incorporar

funcionalidades adicionales lo que ha posibilitado expandir el marco de uso

Actualmente el poder de coacutemputo subyacente en una gran variedad de dispositivos

moacuteviles ha generado nuevas posibilidades lo que constituye un reto para los ingenieros

de software

Asimismo y tal como se mencionoacute en capiacutetulos anteriores existen diversos

sistemas operativos para dispositivos moacuteviles siendo los maacutes populares Android iOS y

Windows Phone Debido a que el eacutexito de un producto de software estaacute vinculado en

gran parte a su uso masivo surge la necesidad de desarrollar aplicaciones moacuteviles

teniendo en cuenta cada una de estas plataformas

El desarrollo de software para dispositivos moacuteviles tiene caracteriacutesticas propias que

difieren del desarrollo tradicional Esta actividad reciente impensada deacutecadas atraacutes

marca un antes y un despueacutes en la evolucioacuten de la Ingenieriacutea de Software Es de esperar

que dicha evolucioacuten continuacutee y por consiguiente que los enfoques de desarrollo para

dispositivos moacuteviles cambien o sean reemplazados por otros Es claro que por el

momento existen cinco posibilidades de desarrollo de una misma aplicacioacuten moacutevil

Aplicaciones nativas

Aplicaciones web

Aplicaciones hiacutebridas

Aplicaciones interpretadas

Aplicaciones generadas por compilacioacuten cruzada

Para un completo anaacutelisis de cada enfoque de desarrollo es que se disentildearon una

serie de casos de estudio El primero de ellos consistioacute en desarrollar una aplicacioacuten moacutevil

para cada enfoque de desarrollo presentado Teniendo este primer objetivo definido se

decidioacute extender el entorno virtual de ensentildeanza y aprendizaje WebUNLP a traveacutes de

una aplicacioacuten moacutevil enfocada en la cartelera de novedades de los cursos La aplicacioacuten

Capiacutetulo 5 Conclusiones

76

moacutevil debiacutea permitir el ingreso de alumnos y docentes con las mismas credenciales que

las utilizadas en la versioacuten web y debiacutea mostrar informacioacuten sincronizada con la web

sobre las novedades publicadas en las carteleras de los cursos Asimismo cuando los

docentes publiquen novedades aquellos alumnos pertenecientes al curso deben recibir

una notificacioacuten en su dispositivo moacutevil

Luego de desarrollar las aplicaciones moacuteviles para cada enfoque de desarrollo se

pueden elaborar algunas conclusiones

Se destaca la simpleza a la hora de generar la versioacuten web moacutevil pero se observan

limitaciones al no poder acceder a todas las capacidades de hardware del dispositivo

El desarrollo de las aplicaciones nativas resultoacute oacuteptimo si se lo compara con los

requerimientos oportunamente planteados con la desventaja de que las aplicaciones no

son portables implicando desarrollos especiacuteficos para cada plataforma que se desee

cubrir Por otro lado el desarrollo de las aplicaciones hibridas ndashutilizando PhoneGap y

Sencha- lograron conjugar la simpleza del desarrollo web con el uso de todas las

capacidades del dispositivo posicionaacutendolo como una eleccioacuten realmente interesante De

igual manera la aplicacioacuten interpretada desarrollada mediante Titanium logroacute resolver

todos los requerimientos previamente planteados se destaca que el desarrollo fue

relativamente simple y es posible reutilizar todo el coacutedigo entre plataformas El hecho de

obtener interfaces totalmente nativas la posiciona como la alternativa ideal Por uacuteltimo

las aplicaciones generadas con el enfoque de compilacioacuten cruzada (Delphi y Xamarin)

lograron cumplir los requerimientos planteados la obtencioacuten de interfaces totalmente

nativas es algo a destacar pero conlleva un alto costo ya que se debe disentildear las interfaces

para cada plataforma de manera independiente

El segundo experimento del presente trabajo consistioacute en analizar el rendimiento

de las aplicaciones generadas mediante cada enfoque de desarrollo En total se

desarrollaron mediante distintas tecnologiacuteas nueve aplicaciones Las pruebas se

realizaron en los dos sistemas operativos de mayor relevancia Android e iOS a traveacutes de

seis dispositivos (cuatro smartphones y dos tablets)

En todos los dispositivos con sistema operativo Android el peor rendimiento se

encontroacute en la aplicacioacuten generada por Corona seguido por el enfoque nativo y Xamarin

En cambio estas tecnologiacuteas se mostraron siempre entre las cuatro mejores sobre el

sistema operativo iOS

Capiacutetulo 5 Conclusiones

77

Respecto al mejor rendimiento en los dispositivos Android no es posible identificar

claramente cuaacutel es el enfoque maacutes conveniente Tanto las aplicaciones web como

Coacuterdova NativeScript y Titanium obtuvieron buenos resultados de rendimiento en

relacioacuten al resto Nuevamente esta situacioacuten se contrapone con los datos obtenidos sobre

los dispositivos iOS en los que Coacuterdova Titanium y NativeScript obtuvieron las peores

mediciones entre las tecnologiacuteas utilizadas No ocurrioacute lo mismo con las aplicaciones web

en iOS que tambieacuten produjeron buenos resultados en relacioacuten al resto

En liacuteneas generales independientemente del sistema operativo las aplicaciones

web han mostrado un buen rendimiento si se consideran todos los casos analizados

Por uacuteltimo se elaboroacute un anaacutelisis comparativo de las caracteriacutesticas inherentes a

cada enfoque de desarrollo Se identificaron ciertos factores de intereacutes que la comunidad

de ingenieriacutea de software considera al elegir queacute tecnologiacutea utilizar y se analizoacute su

impacto en cada enfoque de desarrollo

Capiacutetulo 6 Trabajo Futuro

78

Capiacutetulo 6 Trabajo Futuro

Si bien se estudiaron en el presente trabajo diversas tecnologiacuteas para el desarrollo

de aplicaciones moacuteviles se planea profundizar el estudio analizando otras herramientas

multiplataforma disponibles en el mercado como Ionic [32] NativeScript [38] Applause

[40] React Native [67] entre otras

Ademaacutes se plantea como liacutenea de trabajo futuro ampliar el anaacutelisis comparativo de

rendimiento incluyendo otros aspectos del desarrollo para dispositivos moacuteviles como

por ejemplo el acceso a disco el consumo de bateriacutea y el tiempo de renderizacioacuten de

imaacutegenes

Por uacuteltimo es deseable estudiar la experiencia de usuario en las aplicaciones

generadas por cada enfoque de desarrollo de aplicaciones para dispositivos moacuteviles

Capiacutetulo 6 Trabajo Futuro

79

Bibliografiacutea

80

Bibliografiacutea

[1] A Talukder H Ahmed and R Yavagal Mobile Computing Technology Applications and Service Creation Tata McGraw-Hill Ed 2010

[2] Abrahamsson P et al Mobile-D An Agile Approach for Mobile Application Development in In Companion To the 19th Annual ACM SIGPLAN Conference on Object-Oriented Programming Systems Languages and Applications (OOPSLA 04 ) Vancouver Canada 2004 pp 174-175

[3] P Abrahamsson Mobile software development - the business opportunity of today in Proceedings of the International Conference on Software Development Reykjavik 2005

[4] I S Hayes Just Enough Wireless Computing Prentice Hall Professional Technical 2002

[5] Stelios Xinogalos Spyros Xanthopoulos A Comparative Analysis of Cross-platform Development Approaches for Mobile Applications in Proceedings of the 6th Balkan Conference in Informatics Thessaloniki Greece 2013 pp 213-220

[6] Tolety SB Raj R A study on approaches to build cross-platform mobile applications and criteria to select appropriate approach in India Conference (INDICON) 2012 Annual IEEE India 2012

[7] Yonathan Aklilu Redda Cross platform Mobile Applications Development in Master in Information Systems Norwegian University of Science and Technology Norway 2012

[8] Datta SK Bonnet C Nikaein N Dalmasso I Survey comparison and evaluation of cross platform mobile application development tools in Wireless Communications and Mobile Computing Conference (IWCMC) Cagliari Sardinia Italia 2013

[9] Lisandro Deliacutea Nicolaacutes Galdaacutemez Pablo Thomas and Patricia Pesado An Experimental Analysis of Application Types for Mobile Devices in Computer Science amp Technology Series - XIX Argentine Congress of Computer Science - Selected Papers Editorial de la Universidad de La Plata 2014 pp 173 -183

[10] Lisandro Deliacutea Nicolaacutes Galdamez Pablo Thomas Leonardo Corbalaacuten and Patricia Pesado Multi-Platform Mobile Application Development Analysis in IEEE Ninth International Conference on Research Challenges in Information Science - IEEE RCIS Atenas Grecia May 2015

[11] Telam [Online] httpwwwtelamcomarnotas201504102073-telefonia-movil-lineas-activashtml

Bibliografiacutea

81

[12] RTVE [Online] httpwwwrtveesnoticias20110212evolucion-del-telefono-movil-del-zapatofono-smartphones404523shtml

[13] Vodafone [Online] httpblogvodafonecouk20130829vodafone-uks-ceo-guy-laurence-4g-finally-has-a-purpose

[14] Muy Canal [Online] httpwwwmuycanalcom20140131futuro-del-telefono-movil

[15] Statcounter [Online] httpgsstatcountercom

[16] Anthony I Wasserman Software Engineering Issues for Mobile Application Development 2010

[17] Statista [Online] httpwwwstatistacom

[18] Lisandro Deliacutea Nicolaacutes Galdamez Pablo Thomas Leonardo Corbalaacuten and Patricia Pesado Anaacutelisis Experimental de desarrollo de Aplicaciones Moacuteviles Multiplataforma in XX Congreso Argentino de Ciencias de la Computacioacuten CACIC 2014 San Justo Argentina octubre 2014

[19] Lisandro Deliacutea Nicolaacutes Galdamez Pablo Thomas and Patricia Pesado Un Anaacutelisis Experimental de Tipo de Aplicaciones para Dispositivos Moacuteviles in XIX Congreso Argentino de Ciencias de la Computacioacuten CACIC 2013 Mar del Plata Argentina 2013

[20] Abhinay Puvvala Amitava Dutta Rahul Roy and Priya Seetharaman Mobile Application Developersrsquo Platform Choice Model in 2016 49th Hawaii International Conference on System Sciences (HICSS) Koloa Hawaii 2016

[21] Android Dashboard [Online] httpsdeveloperandroidcomaboutdashboardsindexhtml

[22] Xcode [Online] httpsdeveloperapplecomxcode

[23] KW Tracy Mobile Application Development Experiences on Applersquos iOS and

Android OS Potentials IEEE vol 31 no 4 July-Aug 2012

[24] Google Recommendations for building smartphone-optimized websites [Online] httpgooglewebmastercentralblogspotcomar

[25] Bootstrap [Online] httpgetbootstrapcom

[26] Foundation [Online] httpfoundationzurbcom

[27] PhoneGap [Online] httpphonegapcom

[28] Apache Cordova [Online] httpscordovaapacheorg

Bibliografiacutea

82

[29] Adobe PhoneGap Build [Online] httpsbuildphonegapcom

[30] CocoonJS [Online] httpscocoonio

[31] Ludei [Online] httpswwwludeicom

[32] Ionic [Online] httpionicframeworkcom

[33] Sencha [Online] httpswwwsenchacomproductstouchoverview

[34] A Kosmaczewski Sencha Touch 2 Up and Running OrsquoReilly 2013

[35] Appcelerator Titanium [Online] httpwwwappceleratorcomproduct

[36] Backbone [Online] httpbackbonejsorg

[37] Underscorejs [Online] httpunderscorejsorg

[38] NativeScript [Online] httpswwwnativescriptorg

[39] TypeScript [Online] httpswwwtypescriptlangorg

[40] applause [Online] httpwwwapplausecom

[41] Xamarin [Online] wwwxamarincom

[42] Delphi [Online] httpswwwembarcaderocomproductsdelphi

[43] RubyMotion [Online] httpwwwrubymotioncom

[44] Xtext [Online] httpwwweclipseorgXtext

[45] Mono [Online] httpwwwmono-projectcom

[46] [Online] httpswebunlpeadunlpeduar

[47] I Salmre Writing Mobile Code Essential Software Engineering for Building Mobile Applications Addison Wesley Professional 2005

[48] Mapbox [Online] httpswwwmapboxcomlabstwitter-gnipbrands

[49] Ruby S Richardson L RESTful Web Services OrsquoReilly Media 2007

[50] Matthew J Hamm Wireframing Essentials Packt Publishing 2014

[51] GCM [Online] httpsdevelopersgooglecomcloud-messaging

[52] iOS Human Interface Guidelines [Online] httpsdeveloperapplecomioshuman-interface-guidelinesoverviewdesign-principles

[53] APN [Online] httpdeveloperapplecomlibrarymacdocumentationNetworkingInternetConceptual

Bibliografiacutea

83

RemoteNotificationsPGChaptersApplePushServicehtmlapple_refdocuidTP40008194-CH100-SW9

[54] Mark Norm Norman Francis Christian Heilmann Web Development Solutions Ajax APIs Libraries and Hosted Services Made Easy Apress 2007

[55] JqueryMobile [Online] httpsjquerymobilecom

[56] Pushwoosh [Online] httpsgithubcomPushwooshpushwoosh-phonegap-plugin

[57] J Clark Creating Mobile Apps with Sencha Touch 2 Packt Publishing 2013

[58] Kinvey [Online] httpwwwkinveycom

[59] Ali Mesbah Philippe Kruchten Mona Erfani Joorabchi Real Challenges in Mobile App Development in ACM IEEE International Symposium on Empirical Software Engineering and Measurement Baltimore Maryland US 2013

[60] Andreacute Nitze Andreas Schmietendorf Florian Roumlsler Towards a Mobile Application Performance Benchmark in ICIW 2014 The Ninth International Conference on Internet and Web Applications and Services Paris France 2014

[61] Sebastian Hanschke and Tim A Majchrzak Henning Heitkoumltter Comparing Cross Platform Development approaches For Mobile Applications in 8th International Conference on Web Information Systems and Technologies (WEBIST) Porto Portugal 2012

[62] HW Kim SG Chung CS Jung Measuring Software Quality A Survey of ISOIEC 9126 IEEE Software vol 21 no 5 pp 88 ndash 92 SeptemberOctober 2004

[63] Luis Corral Anton B Georgiev Alberto Sillitti and Giancarlo Succi Can execution time describe accurately the energy consumption of mobile apps An experiment in Android GREENS 2014 Proceedings of the 3rd International Workshop on Green and Sustainable Software pp 31-37 June 2014

[64] Brian Leroux Andre Charland Mobile application development web vs native Magazine Communications of the ACM vol 54 no 5 pp 49-53 May 2011

[65] Luis Corral Alberto Sillitti and Giancarlo Succi Mobile multiplatform development An experiment for performance analysis in The 9th International Conference on Mobile Web Information Systems (MobiWIS) Ontario Canada 2012

[66] Repositorio Git III-LIDI [Online] httpsgitlabcomiii-lidiperformance-assessment-multiplatform-mobile-applicationstreemaster

[67] React Native [Online] httpsfacebookgithubioreact-native

[68] Lisandro Galdaacutemez Nicolaacutes Corbalaacuten Leonardo Thomas Pablo Pesado Patricia Deliacutea Un anaacutelisis comparativo de rendimiento en aplicaciones moacuteviles

Bibliografiacutea

84

multiplataforma in XXI Congreso Argentino de Ciencias de la Computacioacuten Juniacuten 2015

Page 5: Desarrollo de Aplicaciones Móviles Multiplataforma

5

Iacutendice de Figuras

Figura 1 Mobile Telephone System A (MTA) 11 Figura 2 Martin Cooper el autor de la primer llamada moacutevil 12 Figura 3 Evolucioacuten de los protocolos para redes de comunicacioacuten moacuteviles 14 Figura 4 Comparacioacuten entre plataformas [15] 15 Figura 5- Utilizacioacuten de Sistemas Operativos Moacuteviles en el mundo 18 Figura 6- Utilizacioacuten de Sistemas Operativos Moacuteviles en Argentina 19 Figura 7 Entorno de desarrollo Android Studio 27 Figura 8 Distribucioacuten de versiones de Android - Diciembre 2016 28 Figura 9 Entorno de desarrollo Xcode 31 Figura 10 Distribucioacuten de versiones de iOS - Noviembre 2016 31 Figura 11 Entorno de desarrollo Visual Studio 34 Figura 12 Disentildeo Adaptable 40 Figura 13 Funcionamiento de Apache Cordova 42 Figura 14 Proceso de interpretacioacuten mediante NativeScript 45 Figura 15 Entorno de Desarrollo Xamarin Studio 47 Figura 16 Entorno de Desarrollo Delphi 10 Seattle 48 Figura 17 Arquitectura geneacuterica para aplicacioacuten nativa e hiacutebrida 52 Figura 18 Mockup independiente del tipo de aplicacioacuten 53 Figura 19 Aplicacioacuten nativa para Android 53 Figura 20 Aplicacioacuten nativa para iOS 54 Figura 21 Aplicacioacuten hiacutebrida desarrollada con PhoneGap 55 Figura 22 Aplicacioacuten desarrollada con Sencha Touch 56 Figura 23 Enfoque uacutenico de desarrollo Xamarin 57 Figura 24 Aplicacioacuten desarrollada con a) Titanium b) XamarinVisual Studio y c) Delphi XE 58 Figura 25 Caacutelculo de serie coacutedigo multiplataforma desarrollado en Apache Cordova 65 Figura 26 Diagrama de barras con las muestras recolectadas (las barras muestran el tiempo promedio expresado en milisegundos) 67

6

Objetivo

Existen diversos enfoques para desarrollar aplicaciones moacuteviles multiplataforma

A partir de ello el objetivo de este trabajo final consiste en elaborar un anaacutelisis

comparativo sobre los enfoques predominantes y realizar experimentos con el desarrollo

de aplicaciones moacuteviles especiacuteficas para cada elemento analizado

Los objetivos especiacuteficos de este trabajo son

a) Realizar un anaacutelisis comparativo entre los enfoques de desarrollo de aplicaciones

moacuteviles multiplataforma

b) Llevar a cabo el desarrollo de una aplicacioacuten moacutevil concreta en cada enfoque de

desarrollo multiplataforma Analizar ventajas y desventajas de los enfoques seguacuten

el experimento

c) Analizar la performance de las aplicaciones que se generan con cada enfoque de

desarrollo multiplataforma

d) Estudiar los impactos que se producen en el proceso de desarrollo de software

seguacuten el enfoque a utilizar

Prefacio

7

Prefacio

La computacioacuten moacutevil se puede definir como un entorno de coacutemputo con movilidad

fiacutesica El usuario de un entorno de computacioacuten moacutevil seraacute capaz de acceder a datos

informacioacuten u otros objetos loacutegicos desde cualquier dispositivo en cualquier red mientras

estaacute en movimiento [1]

Estos dispositivos tienen caracteriacutesticas fiacutesicas distintivas entre las cuales se

destacan su tamantildeo peso tamantildeo de pantalla su mecanismo de ingreso de datos y su

capacidad de expansioacuten Ademaacutes tienen un rol esencial los aspectos teacutecnicos incluyendo

el poder de procesamiento espacio de memoria autonomiacutea de bateriacutea sistema operativo

entre otros

El desarrollo de software para dispositivos moacuteviles plantea nuevos desafiacuteos

originados en las caracteriacutesticas uacutenicas de esta actividad La necesidad de tratar con

diversas plataformas estaacutendares protocolos y tecnologiacuteas de red las capacidades

limitadas aunque en continua evolucioacuten de los dispositivos y las exigencias de tiempo

del mercado son soacutelo algunos de los problemas a tratar [2]

Las aplicaciones moacuteviles son generadas en un entorno dinaacutemico e incierto

Generalmente son pequentildeas no criacuteticas aunque no menos importantes Estaacuten destinadas

a un gran nuacutemero de usuarios finales y son liberadas en versiones raacutepidas para poder

satisfacer las demandas del mercado [3]

Por todo lo expuesto el desarrollo de software para dispositivos moacuteviles difiere

considerablemente del tradicional [4] y acompantildea el crecimiento y evolucioacuten de la

Ingenieriacutea de Software como disciplina

Para maximizar su presencia en el mercado un producto de software debe

ejecutarse en la mayor cantidad de dispositivos posible Una solucioacuten consiste en el

desarrollo nativo de la aplicacioacuten en cada una de las plataformas existentes utilizando el

entorno de desarrollo integrado (IDE por sus siglas en ingleacutes) el lenguaje y las

herramientas propias de cada plataforma [5] Sin embargo al no ser posible la

reutilizacioacuten de coacutedigo fuente entre diferentes plataformas el esfuerzo se multiplica y se

elevan los costos de desarrollo actualizacioacuten y distribucioacuten de nuevas versiones [6]

Prefacio

8

El desarrollo multiplataforma a diferencia del desarrollo nativo se centra en el

reuacuteso de coacutedigo La construccioacuten de aplicaciones web moacuteviles constituye un ejemplo que

representa este enfoque Sin embargo las limitaciones derivadas de su ejecucioacuten dentro

de un navegador ha motivado a los ingenieros de software a dirigir su atencioacuten hacia otro

tipo de aplicaciones multiplataforma con el que se obtienen resultados maacutes cercanos a las

soluciones nativas En este contexto existen diversas sub-clasificaciones [5] [7] [8] y es

de intereacutes analizar las caracteriacutesticas inherentes a cada una de ellas a traveacutes de la

construccioacuten de un prototipo experimental

Trabajos publicados

Los resultados parciales del presente trabajo dieron lugar al siguiente capiacutetulo de

libro

ldquoAn Experimental Analysis of Application Types for Mobile Devicesrdquo [9]

Lisandro Deliacutea Nicolaacutes Galdaacutemez Pablo Thomas Patricia Pesado

Computer Science amp Technology Series - XIX Argentine Congress of Computer

Science - Selected Papers Editorial de la Universidad de La Plata 2014 p173 -

183 ISBN 978-987-1985-49-4

Asiacute mismo se realizaron publicaciones en los siguientes eventos cientiacuteficos

ldquoMulti-Platform Mobile Application Development Analysisrdquo [10]

Lisandro Deliacutea Nicolaacutes Galdamez Pablo Thomas Leonardo Corbalaacuten Patricia

Pesado

IEEE Ninth International Conference on Research Challenges in Information

Science - IEEE RCIS

Atenas Grecia 13 al 15 de mayo de 2015

Forma de Publicacioacuten Proceedings - CD ROM

ISBN 978-1-4673-6630-4

Organizacioacuten del trabajo

Este trabajo se organiza de la siguiente manera

El capiacutetulo 1 resentildea la evolucioacuten de los dispositivos moacuteviles

Prefacio

9

En el capiacutetulo 2 se describen conceptos esenciales del desarrollo de aplicaciones

para dispositivos moacuteviles

En el capiacutetulo 3 se profundizan conceptos relacionados al desarrollo de

aplicaciones moacuteviles multiplataforma y se estudian diferentes metodologiacuteas y

herramientas

El capiacutetulo 4 contiene un conjunto de experimentos sobre desarrollos de

aplicaciones moacuteviles multiplataforma y el anaacutelisis de los resultados obtenidos

El capiacutetulo 5 presenta las conclusiones obtenidas y el capiacutetulo 6 los trabajos

futuros propuestos en relacioacuten al tema

Finalmente se detalla la bibliografiacutea utilizada en el presente trabajo

Capiacutetulo 1 Tecnologiacutea Moacutevil

10

Capiacutetulo 1 Tecnologiacutea Moacutevil

Hubo una eacutepoca en el que los teleacutefonos moacuteviles no teniacutean pantalla taacutectil ni

permitiacutean grabar viacutedeo ni siquiera podiacutean conectarse a Internet Tampoco podiacutean enviar

y recibir mensajes Simplemente permitiacutean la funcioacuten baacutesica de hablar por teleacutefono

Dos deacutecadas atraacutes los dispositivos moacuteviles eran aparatos de gran tamantildeo y pesados

Soacutelo algunas pocas personas podiacutean acceder a estos dispositivos ya que se consideraban

artiacuteculos de lujo Pero este escenario fue cambiando paulatinamente llevando a que el

celular se transforme en un elemento imprescindible en nuestras vidas En Argentina en

el antildeo 2003 habiacutea 4 millones de liacuteneas activas En la actualidad la cifra llega a 37 millones

de liacuteneas activas y 62 millones de liacuteneas declaradas [11]

11 Los inicios

La Segunda Guerra Mundial originoacute la necesidad de comunicarse a distancia por

lo que Motorola creoacute un equipo militar llamado Handie Talkie H12-16 para

comunicaciones viacutea ondas de radio

Su salto a los sistemas civiles sucedioacute a finales de la deacutecada de los 40 con sistemas

de radio analoacutegicos en frecuencias FM principalmente y con servicios en las bandas HF

y VHF ofrecidos por la americana Bell

En 1955 Ericsson comercializoacute el Mobile Telephone System A (MTA) Phone

(Figura 1) un teleacutefono que pesaba 40 kilogramos y que se instalaba en automoacuteviles

Como curiosidad tuvo un total de 125 usuarios hasta 1967

Capiacutetulo 1 Tecnologiacutea Moacutevil

11

Figura 1 Mobile Telephone System A (MTA)

La primera llamada moacutevil data del 3 de abril de 1973 cuando Martin Cooper

(Figura 2) en aquel entonces ingeniero electroacutenico de Motorola realizoacute una llamada

desde la calle en Nueva York La llamada fue realizada mediante un prototipo del

Motorola DynaTAC 8000x Considerado el primer moacutevil del mundo pesaba cerca de un

kilo y mediacutea 33x45x89 centiacutemetros su bateriacutea teniacutea uacutenicamente la autonomiacutea de una

hora en conversacioacuten necesitando diez horas para cargarse Su costo era de USD 4000

Capiacutetulo 1 Tecnologiacutea Moacutevil

12

Figura 2 Martin Cooper el autor de la primer llamada moacutevil

El verdadero conocimiento popular del teleacutefono moacutevil no llegoacute hasta la deacutecada de

los 90 con la segunda generacioacuten de estos dispositivos

La comunicacioacuten digital permitioacute mejorar la calidad de la escucha de voz la

reduccioacuten del tamantildeo y peso de los dispositivos utilizados y sobre todo el incremento de

compantildeiacuteas operadoras que dieron paso a un mercado maacutes competitivo y accesible

Los usuarios fueron testigos de avances sorprendentes como la identificacioacuten de

llamada o los mensajes de texto que constituyeron a una nueva forma de comunicacioacuten

Vertiginosamente el celular pasoacute de ser considerado una herramienta de trabajo a

generalizarse en todos los estratos de la sociedad

Seguacuten avanzaba la deacutecada del 90 los teleacutefonos moacuteviles iban adaptaacutendose a esas

novedades incorporando pantallas cada vez de mayor tamantildeo y en los maacutes avanzados

haciendo desaparecer la antena que era necesario desplegar para poder realizar una

comunicacioacuten en condiciones adecuadas

Poco a poco los dispositivos empezaron a integrar cada vez maacutes funciones aviso

por vibracioacuten juegos bluetooth infrarrojos politonos y ya con el cambio de siglo

pantallas a color y caacutemaras fotograacuteficas Maacutes adelante llegariacutea la grabacioacuten de viacutedeo el

acceso a Internet las pantallas taacutectiles entre otras [12]

Capiacutetulo 1 Tecnologiacutea Moacutevil

13

12 Evolucioacuten de los protocolos para redes de comunicaciones

Hubiera sido imposible el auge de los teleacutefonos moacuteviles sin la estandarizacioacuten

mejora y evolucioacuten de los protocolos para redes de comunicaciones y su soporte por las

operadoras Asiacute tras las primeras comunicaciones viacutea ondas de radio con banda de

frecuencias por debajo de los 600 kHz las posteriores en AM y FM los servicios de Bell

y Ericsson en los antildeos 50 y 60 llegoacute esa primera llamada de 1973 que popularizoacute todo el

sector

La primera generacioacuten 1G fue responsabilidad de Ericsson con el sistema Telefoniacutea

Moacutevil Noacuterdica (NMT) y seguiacutea utilizando canales analoacutegicos En 1986 la compantildeiacutea

modernizoacute el sistema funcionando a frecuencias superiores de 900 MHz posibilitando

servicio para un mayor nuacutemero de usuarios Ademaacutes del NMT en los 80 se desarrollaron

otros sistemas de telefoniacutea moacutevil como el Sistema Telefoacutenico Moacutevil Avanzado (AMP)

desarrollado por los laboratorios Bell

La segunda generacioacuten 2G llegoacute en la deacutecada de los 90 con sistemas como Global

System for Mobile Communications (GSM) Estaacutendar Interno 136 (IS-136) Red

Mejorada Digital Integrada (iDEN) y el Estaacutendar Interno 95 (IS-95) GSM fue el

desarrollo maacutes relevante ya que fue el estaacutendar europeo de telefoniacutea moacutevil digital En el

proyecto participaron 26 compantildeiacuteas europeas de telecomunicaciones y en 1992 se

pusieron en marcha las primeras redes europeas de GSM-900 y los primeros teleacutefonos

moacuteviles GSM Ademaacutes de Europa GSM ha terminado imponieacutendose tambieacuten en Asia

Ameacuterica Latina Oceaniacutea y una parte de Ameacuterica del Norte

La necesidad de mayores velocidades de transmisioacuten de datos y mayores

capacidades que permitieran nuevos servicios dieron paso a la Tercera Generacioacuten (3G)

no sin antes pasar por el 25G que proporcionoacute el General Packet Radio Service (GPRS)

El estaacutendar europeo es el Universal Mobile Telecommunications System (UMTS) basado

en la tecnologiacutea W-CDMA y estaacute gestionado por la organizacioacuten 3GPP tambieacuten

responsable de GSM GPRS y Enhanced Data Rates for GSM Evolution (EDGE)

La Cuarta Generacioacuten (4G) sucede a las tecnologiacuteas 2G y 3G y ofrece entre otras

mejoras mayor seguridad y Calidad de Servicio (QoS) junto a velocidades de acceso

muy superiores a las anteriores (mayores a 100 Mbits en movimiento y a 1 Gbits en

Capiacutetulo 1 Tecnologiacutea Moacutevil

14

reposo) Estaacute basada completamente en el protocolo IP siendo un sistema de sistemas y

una red de redes que se alcanza gracias a la convergencia entre las redes de cables e

inalaacutembricas Seguacuten Vodafone ldquoel 4G tiene finalmente una razoacuten y es el entretenimientordquo

[13] La norma Long Term Evolution (LTE) es la maacutes extendida aunque no la uacutenica

existente

5G seraacute la nueva revisioacuten del sistema de conexioacuten de red sin cables y se espera que

esteacute disponible en el antildeo 2020 (Figura 3) en paiacuteses como Corea del Sur como asiacute tambieacuten

en Europa Como 4G la mayor velocidad de transferencia seraacute su mayor avance con

velocidades de descarga de hasta 10 Gbps (125 GBs) [14]

Figura 3 Evolucioacuten de los protocolos para redes de comunicacioacuten moacuteviles

13 La actualidad

Muchas de las actividades que un tiempo atraacutes soliacutean hacerse desde una

computadora tales como revisar el correo electroacutenico escuchar muacutesica agendar una

nueva cita en el calendario compartir fotos en alguna red social entre muchiacutesimas otras

en nuestros diacuteas se llevan a cabo de forma natural desde los dispositivos moacuteviles La

Figura 4 muestra coacutemo los dispositivos moacuteviles les han ganado terreno a los equipos

Capiacutetulo 1 Tecnologiacutea Moacutevil

15

tradicionales denominados lsquode escritoriorsquo

Figura 4 Comparacioacuten entre plataformas [15]

En la actualidad existen cientos de modelos diferentes de dispositivos moacuteviles y

los fabricantes siguen innovando intentando destacarse sobre la competencia Hoy en diacutea

no nos sorprende encontrar dispositivos moacuteviles con procesadores quad-core de 22 Ghz

Incluso ya se comienzan a conocer prototipos de dispositivos con ocho o diez nuacutecleos

De la mano de los procesadores la memoria RAM de los dispositivos moacuteviles

tambieacuten ha crecido considerablemente llegando a comercializarse dispositivos con 3 GB

de memoria

La caacutemara de los dispositivos es otra de las capacidades que maacutes ha progresado

llegando a encontrarse sensores de 20 MP y la posibilidad de grabar videos en formato

UHD 4K (3840 x 2160)

El tamantildeo de las pantallas y sus resoluciones fueron otra de las caracteriacutesticas que

maacutes han evolucionado Es posible encontrar dispositivos con pantallas de 5 pulgadas con

posibilidad de visualizar 16 millones de colores y con resoluciones Quad HD (2560 x

1440)

La tecnologiacutea de las bateriacuteas es un aspecto en que no se ha logrado grandes avances

en el sector ni se pronostican grandes progresos a corto plazo Incluso la llegada de chips

Capiacutetulo 1 Tecnologiacutea Moacutevil

16

maacutes potentes mayores pantallas o el 4G disminuiraacuten auacuten maacutes la autonomiacutea de las bateriacuteas

El uacuteltimo aspecto a mencionar es el de las capacidades del dispositivo Ademaacutes de

los ya claacutesicos sensores Global Positioning System (GPS) la capacidad de conectividad

viacutea bluetooth infrarrojo y WIFI hoy surge una diversidad de opciones que pueden

disponer los teleacutefonos inteligentes

Por el lado de la conectividad cada vez es maacutes comuacuten encontrar terminales con

mecanismos de comunicacioacuten Near Field Communication (NFC) o WIFI Direct

Con respecto a los sensores actualmente existen dispositivos que cuentan con

aceleroacutemetros giroscopios y magnetoacutemetros los cuales brindan a los desarrolladores de

aplicaciones la posibilidad de controlar la posicioacuten del aparato la aceleracioacuten que sufre

el dispositivo con respecto a la fuerza de la gravedad etc Tambieacuten es comuacuten el uso de

sensores de proximidad por ejemplo para apagar la pantalla mientras se atiende una

llamada El sensor de luminosidad permite medir el brillo de la luz ambiental Asiacute el

software del teleacutefono utiliza estos datos para ajustar el brillo de la pantalla

automaacuteticamente hacieacutendola maacutes clara o maacutes oscura

Los uacuteltimos smartphones de gama alta tambieacuten son capaces de medir la presioacuten

atmosfeacuterica a traveacutes de un baroacutemetro Los datos que mide el dispositivo sirven para

determinar en queacute nivel por encima del mar se encuentra el teleacutefono lo que se traduce en

la mejora de la precisioacuten del GPS

Incluso ya existen dispositivos que cuentan con un sensor de humedad del aire el

cual permite controlar los niveles de humedad para por ejemplo ayudar a las personas

con problemas respiratorios

Como si todo esto fuese poco existen modelos con podoacutemetro -para medir con

precisioacuten los pasos que da el usuario- pulsoacutemetro -para medir las pulsaciones a traveacutes de

los vasos sanguiacuteneos de los dedos- y hasta sensor de huellas digitales para cuestiones

relativas a la seguridad

Por lo anteriormente dicho los desarrolladores de aplicaciones para dispositivos

moacuteviles de la actualidad tienen el desafiacuteo de poder manipular desde sus aplicaciones

todas las posibilidades descriptas

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

17

Capiacutetulo 2 Desarrollo de

Aplicaciones Moacuteviles Nativas

Si bien el desarrollo de aplicaciones para dispositivos moacuteviles se remonta por lo

menos a 10 antildeos atraacutes ha habido un crecimiento exponencial desde que se abrioacute la tienda

de aplicaciones de iPhone en julio de 2008 Desde entonces los fabricantes de

dispositivos han creado tiendas de aplicaciones para otros dispositivos moacuteviles

incluyendo Android BlackBerry Nokia Ovi Windows Phone entre otros [16]

Actualmente el desarrollo de aplicaciones para dispositivos moacuteviles es un campo

en evolucioacuten con gran intereacutes econoacutemico y cientiacutefico Una prueba de esto es que para

Julio del 2014 se disponiacutean de maacutes de 3 millones de aplicaciones entre las principales

tiendas virtuales de aplicaciones Y solamente en el antildeo 2013 se contabilizaron 101

billones de descargas de aplicaciones moacuteviles en todo el mundo de las cuales 9 billones

fueron descargas pagas y 92 billones descargas gratuitas [17]

Con el actual creciente nuacutemero de plataformas moacuteviles desarrollar aplicaciones

moacuteviles se hizo muy difiacutecil para las empresas ya que necesitan desarrollar las mismas

aplicaciones para cada plataforma de destino

El desarrollo de aplicaciones nativas es la forma natural de implementar

aplicaciones moacuteviles Las aplicaciones nativas son concebidas para ejecutarse en una

plataforma especiacutefica es decir se debe considerar el tipo de dispositivo el sistema

operativo a utilizar y su versioacuten

Las aplicaciones nativas se desarrollan utilizando un entorno de desarrollo

integrado (IDE) que proporciona las herramientas de desarrollo necesarias para la

construccioacuten y depuracioacuten de aplicaciones El coacutedigo fuente se compila para obtener

coacutedigo ejecutable proceso similar que el utilizado para las tradicionales aplicaciones de

escritorio

Cuando la aplicacioacuten estaacute lista para ser distribuida debe ser transferida a las App

stores (tiendas de aplicaciones) especiacuteficas de cada sistema operativo Estas tiendas tienen

un proceso de auditoriacutea para evaluar si la aplicacioacuten se adecuacutea a los requerimientos de la

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

18

plataforma a operar Cumplido este paso la aplicacioacuten se pone a disposicioacuten de los

usuarios

La principal ventaja de este tipo de aplicaciones es la posibilidad de interactuar con

todas las capacidades del dispositivo (caacutemara GPS aceleroacutemetro agenda entre otras)

Ademaacutes no es estrictamente necesario poseer acceso a internet Su ejecucioacuten es raacutepida

puede ejecutarse en modo background y notificar al usuario cuando ocurra un evento que

necesite su atencioacuten

Claramente estas ventajas tienen como contrapartida un mayor costo de desarrollo

pues se debe utilizar un lenguaje de programacioacuten diferente seguacuten la plataforma Por ende

si se desea cubrir varias plataformas se deberaacute generar una aplicacioacuten para cada una de

ellas Esto conlleva a mayores costos de desarrollo actualizacioacuten y distribucioacuten de nuevas

versiones [9] [18] [19]

En la actualidad hay una gran cantidad de sistemas operativos para dispositivos

moacuteviles La Figura 5 muestra la utilizacioacuten de los sistemas operativos en los uacuteltimos antildeos

en todo el mundo mientras que la Figura 6 muestra la misma comparativa en Argentina

En ambos casos el ranking es liderado por Android seguido por iOS y en tercer lugar

Windows Phone [20]

Figura 5- Utilizacioacuten de Sistemas Operativos Moacuteviles en el mundo

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

19

Figura 6- Utilizacioacuten de Sistemas Operativos Moacuteviles en Argentina

A continuacioacuten se analizaraacute coacutemo es el proceso de desarrollo de aplicaciones

moacuteviles nativas en los sistemas operativos maacutes relevantes de la actualidad y luego en la

Tabla 1 se compararaacuten aspectos teacutecnicos de estas plataformas

21 Desarrollo de Aplicaciones Nativas en Android

Android es el sistema operativo maacutes utilizado en la actualidad Puede ser utilizado

en teleacutefonos inteligentes tablets relojes inteligentes televisores y automoacuteviles

Estaacute basado en Linux y es respaldado por Google

211 Evolucioacuten Inicialmente el desarrollo de Android era llevado a cabo por la empresa Android

Inc la cual fue fundada en el antildeo 2003 y recibiacutea respaldo econoacutemico por parte de Google

Antildeos maacutes tarde maacutes precisamente en Julio del 2005 Google adquiere Android y da lugar

a la primer versioacuten del sistema operativo en el antildeo 2007 Android 10 Apple Pie1

desarrollado sobre el kernel de Linux 26 En su presentacioacuten se hizo hincapieacute en que era

un sistema operativo para dispositivos moacuteviles totalmente gratuito y open source a

1 Desde la salida de la primera versioacuten del sistema operativo hasta el presente Google ha seguido la tradicioacuten de ponerle un nombre de postre a cada una de sus versiones siguiendo un orden alfabeacutetico

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

20

diferencia de iOS

La primera versioacuten comercial teniacutea mucho margen de mejora y apenas inquietoacute a la

competencia pero ya introduciacutea algunos conceptos que antildeos despueacutes son un estaacutendar de

los sistemas operativos moacuteviles

Menuacute desplegable de notificaciones

Widgets de escritorio

Android Market la tienda de apps (no contaba con ninguacuten sistema de pago para

usuarios Todo el cataacutelogo era gratuito)

Integracioacuten con Google Mail Contacts y Calendar

Navegador Maps Google Talk reproductor de YouTube y soporte para caacutemaras

En febrero del 2009 apenas 3 meses despueacutes del lanzamiento de Android 10 Apple

Pie llega la primera actualizacioacuten Android 11 Banana Bread No antildeadiacutea grandes

novedades pero siacute corregiacutea numerosos fallos detectados en la primera versioacuten e introduciacutea

un concepto por entonces poco usado por los rivales que buscaba facilitar la vida al

usuario las actualizaciones automaacuteticas con las que resultaba muy simple mantener todo

el software al diacutea

El 30 de abril del 2009 lanzan una nueva actualizacioacuten de gran importancia con

muchas novedades en cuanto a usabilidad Android 15 Cupcake Esta nueva versioacuten

introdujo las siguientes caracteriacutesticas

Teclado taacutectil QWERTY en pantalla con prediccioacuten de texto y diccionario de

usuarios para palabras personalizadas

Grabacioacuten y reproduccioacuten en formatos MPEG-4 y 3GP

Widget de escritorio de Google para realizar buacutesquedas directamente

SDK para el desarrollo de widgets de escritorio por parte de terceros

Funciones del portapapeles ampliadas

Interfaz para grabar y reproducir viacutedeos mejorada

Posibilidad de auto-rotacioacuten

Android 16 Donut apareciacutea en septiembre del 2009 con algunas novedades

adicionales

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

21

Soporte para CDMAEVDO 8021x VPN que ampliaba los mercados al alcance

de Android

Compatibilidad con distintas resoluciones de pantalla Soporte WVGA

Actualizacioacuten y nuevo disentildeo del Android Market

Utilidad de buacutesqueda universal en Internet y en el mismo dispositivo

Galeriacutea caacutemara y videocaacutemara con mejor integracioacuten con raacutepido acceso a la

caacutemara

Motor multi-lenguaje de Siacutentesis de habla para permitir a cualquier aplicacioacuten de

Android hablar una cadena de texto

Mejoras en las buacutesquedas por texto y voz

Apenas dos meses despueacutes en noviembre del 2009 lanzan Android 20 Eclair

uno de los cambios maacutes sustanciales sufridos por Android tanto a nivel de disentildeo como

de arquitectura interna Era una versioacuten dirigida a dispositivos de mayor tamantildeo en un

tiempo en el que los fabricantes empezaban a diversificar su oferta La versioacuten 21

mantuvo la misma nomenclatura y soacutelo corrigioacute algunos fallos pero su uso fue mayor

entre los fabricantes que la versioacuten anterior A continuacioacuten se mencionan algunas de las

nuevas caracteriacutesticas

Sincronizacioacuten de cuenta expandida permitiendo a los usuarios agregar muacuteltiples

cuentas al dispositivo para sincronizacioacuten de correo y contactos

Google Maps Navigation sistema de navegacioacuten GPS gratuito

Compatibilidad con Microsoft Exchange

Optimizacioacuten en velocidad de hardware y GUI renovada

Soporte para maacutes tamantildeos de pantalla y resoluciones con una mejor tasa de

contraste

Navegador actualizado soporte para HTML5 y barra de direccioacuten y buacutesqueda

unificada

Funcioacuten Speech to Text para escribir textos mediante el uso de la voz

Nueva pantalla de desbloqueo

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

22

Nuevas caracteriacutesticas para la caacutemara incluyendo soporte de flash zoom digital

modo escena balance de blancos efecto de colores y enfoque macro

Adicioacuten de fondos de pantalla animados permitiendo la animacioacuten de imaacutegenes

de fondo de la pantalla inicio para mostrar movimiento

El 20 de mayo del 2010 apareciacutea una nueva actualizacioacuten del sistema operativo

Android 22 Froyo Traiacutea numerosos cambios algunos copiados de otras ROMs y otros

con el uso empresarial en mente

Pantalla Home totalmente redisentildeada con 5 paneles en lugar de 3

Nueva galeriacutea de imaacutegenes

Soporte para actuar como hotspot2 para otros dispositivos tethering3 de datos

Soporte para Flash 101

Funcioacuten copiar y pegar mejorada en Google Mail

Nueva pantalla alternativa de desbloqueo mediante coacutedigo PIN

Grabacioacuten de viacutedeo en 720p

Optimizaciones en velocidad memoria y rendimiento Compilador JIT

Integracioacuten del motor de JavaScript V8 de Chrome en el navegador

Soporte para el servicio Android Cloud to Device Messaging (C2DM)

habilitando notificaciones push

El antildeo 2010 iba a concluir con el lanzamiento de una versioacuten sumamente popular

que prevalecioacute gran tiempo Android 23 Gingerbread Esta versioacuten contoacute con las

siguientes caracteriacutesticas

Disentildeo de la interfaz de usuario actualizado con incremento en velocidad y

simpleza

Nuevo disentildeo para el teclado numeacuterico en pantalla

Soporte para tamantildeos y resoluciones de pantalla extra-grandes (WXGA y

mayores)

Funcioacuten para copiar y pegar mejorada con soporte para caracteres individuales en

lugar de cajas de texto

2 lugar que ofrece acceso a Internet a traveacutes de una red inalaacutembrica y un enrutador conectado a un proveedor de servicios de Internet 3 proceso por el cual un dispositivo moacutevil con conexioacuten a Internet actuacutea como pasarela para ofrecer acceso a la red a otros dispositivos

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

23

Soporte para NFC

Herramientas de visualizacioacuten de consumo y uso de la bateriacutea mejoradas

Soporte para caacutemaras frontales

Acceso de bajo nivel para los desarrolladores de juegos

Recolector basura concurrente para incrementar el rendimiento

Sustitucioacuten del sistema de archivos YAFFS por ext4

Soporte nativo para maacutes sensores (tales como giroscopio y baroacutemetro)

Soporte de chat de video o voz usando Google Talk

En febrero del 2011 Google lanza Android 30 Honeycomb Se trata de una

actualizacioacuten especiacutefica para tablets no compatible con teleacutefonos que introduciacutea las

liacuteneas maestras de la interfaz en el futuro Las versiones 31 y 32 mantuvieron el mismo

nombre y fueron baacutesicamente un conjunto de correcciones A continuacioacuten se listan los

cambios significativos que tuvieron lugar en estas versiones

Pantalla de Inicio redisentildeada

Inclusioacuten de tonos azules en la interfaz en detrimento del verde tradicional

Nuevas funcionalidades para el emplazamiento y uso de widgets

Fin de los botones fiacutesicos Adaptacioacuten automaacutetica del SO seguacuten el dispositivo

Agregado de barra de sistema con caracteriacutesticas de acceso raacutepido a

notificaciones estados y botones de navegacioacuten suavizados disponible en la parte

inferior de la pantalla

Antildeadida la barra de accioacuten (Action Bar en ingleacutes) entregando acceso a opciones

contextuales navegacioacuten widgets u otros tipos de contenido en la parte superior

de la pantalla

Multitarea simplificada ndash tocando Aplicaciones recientes en la barra del sistema

permite a los usuarios ver instantaacuteneas de las tareas en curso y saltar raacutepidamente

de una aplicacioacuten a otra

Aceleracioacuten graacutefica mediante hardware

Optimizacioacuten del renderizado de graacuteficos 3D

Soporte para perifeacutericos USB

Octubre del 2011 fue el mes del lanzamiento de Android 40 Ice Cream Sandwich

basado en el nuacutecleo de Linux 301 Esta nueva versioacuten introdujo las siguientes mejoras

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

24

Nueva Interfaz Holo y fuente tipograacutefica Roboto

Sistema de gestioacuten de notificaciones mejorado

Multitarea mejorada

Android Beam funcionalidad para transferir datos entre dos dispositivos viacutea NFC

Funcioacuten de desbloqueo mediante el rostro

Nuevas funciones para la visualizacioacuten y gestioacuten del consumo de datos

Nuevas aplicaciones de correo y calendario

Habilidad de acceder a aplicaciones directamente desde la pantalla de bloqueo

Herramienta integrada de captura de pantalla

Soporte MKV

Aceleracioacuten por hardware de la interfaz de usuario

Soporte Stylus (laacutepiz taacutectil)

En Julio del 2012 se presenta Android 41 Jelly Bean que incluye las siguientes

novedades

Sistema de deteccioacuten de entrada de datos taacutectiles optimizado

Estreno de Google Now el servicio-asistente de voz inteligente de Google

Navegador Google Chrome

Buacutesqueda mediante voz mejorada

Nuevas posibilidades para las notificaciones interactivas de escritorio

Dictado de voz offline

Se deja de dar soporte al Flash Player

Meses despueacutes en noviembre del 2012 se lanza la versioacuten Android 42 Jelly Bean

la cual incluye habituales correcciones rendimiento mejorado y cambios puntuales en

ciertas aplicaciones

Android 43 Jelly Bean es anunciado el 24 de julio del 2013 Uno de los objetivos

de esta versioacuten fue tratar de consolidar a Android como un sistema operativo capaz de

ejecutar juegos Esta nueva versioacuten cuenta con las siguientes novedades

Soporte multiusuario y de perfiles mejorado

Soporte OpenGL ES 30

Bluetooth Smart

Plataforma Google Games

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

25

Servicios de localizacioacuten Wi-Fi mejorados

Ya no es necesario pulsar el icono del microacutefono para realizar una buacutesqueda de

voz Solo hay que decir OK Google y en seguida ordenar al equipo lo que se

necesite

Android 44 KitKat es anunciado en octubre del 2013 Esta nueva versioacuten intenta

corregir el problema de fragmentacioacuten se cuenta con muchas versiones y los fabricantes

tienen dificultades para adaptar sus productos a los requerimientos de cada nueva versioacuten

Se destaca de esta versioacuten

Menores requisitos de hardware para corregir la fragmentacioacuten de versiones

Compatible con terminales con 512 MB de memoria RAM

Reduccioacuten del consumo de bateriacutea mediante la optimizacioacuten de los sensores

Inclusioacuten de la suite ofimaacutetica QuickOffice

Servicios de almacenamiento online integrados Google Drive Box

Soporte para infrarrojos Usar el moacutevil como mando de TV

Aplicaciones a pantalla completa

Captura de pantalla en viacutedeo

En octubre del 2014 se lanza Android 5 Lollipop daacutendole soporte a otros

dispositivos como Android TV relojes inteligentes autos etc Esta nueva versioacuten

incluye

Nuevo disentildeo basado en Material Design que logra un flujo de trabajo maacutes fluido

Interfaz que se adapta a cualquier tamantildeo de dispositivo

Renovado sistema de notificaciones inteligente

Interesante vista multitarea que muestra capas con las diferentes aplicaciones

abiertas

Funcioacuten Android Smart Lock que permite emparejar un dispositivo Android con

otro ya sea un reloj inteligente o un automoacutevil

Modo Invitado para que puedas prestar el dispositivo sin que otros usuarios

tengan acceso a la informacioacuten privada

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

26

Soporte para sistemas de 64 bits

En octubre del 2015 se anuncia Android 6 Marshmallow que incluye las

siguientes novedades

Soporte para autenticacioacuten viacutea huella digital

Desinstalacioacuten raacutepida de las aplicaciones desde la pantalla de inicio

Nuevo esquema de gestioacuten de energiacutea llamado Doze

Mayor duracioacuten de la bateriacutea cuando el dispositivo estaacute en reposo

Inclusioacuten de Android Pay que emplearaacute el chip NFC

Mejoras en Google Now

Mayor control sobre los permisos requeridos por las aplicaciones

212 Proceso de Desarrollo Las aplicaciones nativas para esta plataforma se implementan utilizando el lenguaje

de programacioacuten Java

El estaacutendar sugiere utilizar el IDE oficial Android Studio (Figura 7) aunque es

posible utilizar otros entornos Independientemente del IDE utilizado se necesita

disponer del Software Development Kit (SDK) de la versioacuten de Android en la que se

desea trabajar El SDK provee todas las herramientas necesarias para desarrollar

compilar depurar y simular aplicaciones

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

27

Figura 7 Entorno de desarrollo Android Studio

Uno de los interrogantes que surgen en el momento de crear una aplicacioacuten es con

cual versioacuten de la Application Programming Interface (API) de Android trabajar Se debe

tener en cuenta que al trabajar con una versioacuten especiacutefica se estaacute limitando cuales son los

dispositivos que soportaraacuten la aplicacioacuten a crear No se recomienda utilizar una API

antigua -ya que no se estariacutea utilizando muchos de los avances de la plataforma- ni

tampoco la uacuteltima en el mercado ndashdebido a que pocos seriacutean los usuarios que podriacutean

utilizarla- En la Figura 8 se visualiza la distribucioacuten de versiones seguacuten los dispositivos

activos a la fecha de Diciembre 2016 [21] De esa informacioacuten se desprende que si se

optara por trabajar con la API 16 (Jelly Bean) el 966 de los celulares activos podraacuten

utilizar la aplicacioacuten a crear

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

28

Figura 8 Distribucioacuten de versiones de Android - Diciembre 2016

22 Desarrollo de Aplicaciones Nativas en iOS

iOS es un sistema operativo para dispositivos moacuteviles de la empresa multinacional

Apple Si bien fue originalmente desarrollado para el dispositivo iPhone luego el sistema

operativo alcanzoacute otros dispositivos como iPod Touch iPad A diferencias de otros

sistemas operativos para dispositivos moacuteviles iOS solo funciona en dispositivos creados

por la empresa Apple pero no asiacute en otro hardware de terceros

221 Evolucioacuten El sistema operativo moacutevil iOS se deriva del sistema operativo OS X el cual estaacute

basado en UNIX

La primera versioacuten del sistema operativo se presentoacute en enero del 2007 A

diferencia de sus sucesores la primera versioacuten no se llamoacute iOS sino iPhone OS Se

trataba de una plataforma bastante cerrada ya que las uacutenicas aplicaciones disponibles

eran las que estaban integradas al sistema operativo y fueron creadas por Apple como los

Mapas Mail Fotos Calendario entre otras

El desarrollo de aplicaciones nativas por parte de terceros no tuvo lugar hasta marzo

del 2008 momento en el cual Apple liberoacute el primer kit de desarrollo

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

29

Meses despueacutes se lanza la segunda versioacuten del sistema operativo iPhone OS 2 En

esta oportunidad introducen la App Store la cual permitioacute la descarga de aplicaciones de

terceros Ademaacutes la aplicacioacuten de Mapas recibioacute compatibilidad con el GPS y el Mail

notificaciones push

En 2009 Apple lanzoacute iPhone OS 3 y en su versioacuten 32 se le cambioacute el nombre a

iOS 32 iOS 3 incorporoacute grandes novedades buacutesqueda Spotlight botones Copiar y

Pegar grabacioacuten de viacutedeo edicioacuten de viacutedeo mensajes MMS comandos de voz modo

landscape y otras muchas apps Ademaacutes se siguioacute explotando las ventajas de las

notificaciones push y se continuoacute evolucionando su SDK daacutendole mayor poder a los

desarrolladores de aplicaciones

iOS 4 llegoacute a mediados del 2010 y trajo consigo nuevos cambios a la plataforma

Los maacutes destacables fueron la inclusioacuten de fondos de pantalla y la posibilidad de poder

abrir varias aplicaciones en simultaacuteneo Adicionalmente las aplicaciones podiacutean ser

agrupadas mediante carpetas algo simple pero uacutetil

En Junio del 2011 se libera iOS 5 Esta nueva versioacuten ofreciacutea grandes novedades

un Centro de Notificaciones Siri ndashel asistente virtual que marcoacute tendencia en los uacuteltimos

antildeos- iMessage iCloud Game Center Quiosco Recordatorios integracioacuten social para

Twitter y se mejoroacute notablemente la app de navegacioacuten web nativa Safari

iOS 6 fue presentado en Junio del 2012 y trajo como novedades la inclusioacuten de

Apple Maps (en reemplazo de Google Maps) mejoras en Siri con informacioacuten mucho

maacutes precisa la integracioacuten de Facebook y Twitter en el sistema el modo no molestar el

soporte para LTE entre otras

Los usuarios de este sistema operativo recibieron una de las mayores

actualizaciones en Junio del 2013 cuando se presenta iOS 7 Esta nueva versioacuten contoacute

con un redisentildeo total de la interfaz de usuario basaacutendose en transparencias y degradados

Ademaacutes se introdujo el Centro de Control AirDrop una renovada app de fotos iTunes

Radio y CarPlay mejoras en el App Switcher videos a caacutemara lenta entre otras cosas

Junio del 2014 fue el mes donde quedoacute disponible iOS 8 una nueva versioacuten del

sistema operativo que intenta resolver algunos errores de iOS 7 y antildeadir ciertas mejoras

Las extensiones y la posibilidad de conectar apps entre siacute mediante el menuacute compartir

hicieron que iOS 8 fuese mucho maacutes productivo Ademaacutes incorporoacute widgets para el

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

30

Centro de Notificaciones o las notificaciones interactivas Ademaacutes se implementaron los

contactos favoritos los teclados de terceros la funcioacuten Reachability y la utilidad

Continuity y las aplicaciones Apple Pay Salud HandOff QuickType Compartir en

Familia iCloud Drive y Apple Music

En el 2015 se presenta iOS 9 que introdujo todo un cambio en el uso del sistema

gracias a la compatibilidad con el 3D Touch del iPhone 6s y el iPhone 6s Plus Se

actualizoacute Notas con nuevas funciones se sustituyoacute Newsstand por News se incorporaron

mejoras en Passbook que pasoacute a llamarse Wallet y se mejoroacute Mapas con direcciones y

traacutefico Se antildeadioacute Split View Picture-in-Picture y atajos en teclados de terceros Ademaacutes

el sistema ahora podiacutea aprovechar mejor la autonomiacutea del dispositivo gracias al Modo

ahorro de bateriacutea que limita las conexiones y caracteriacutesticas del sistema para no consumir

tanta energiacutea

Por uacuteltimo en Junio del 2016 quedoacute disponible iOS 10 versioacuten que se caracteriza

por abrirse a los desarrolladores Con esta nueva versioacuten se puede tener acceso a Siri al

3D Touch y a apps directas del sistema operativo Ademaacutes el centro de widgets ahora es

maacutes intuitivo y la pantalla de bloqueo maacutes uacutetil Como es habitual se aprecian mejoras en

distintas aplicaciones del sistema operativo y se permite borrar apps de Apple que no sean

utilizadas por los usuarios

222 Proceso de desarrollo Las aplicaciones moacuteviles para la plataforma iOS se desarrollan utilizando el

lenguaje de programacioacuten Objetive C El entorno de desarrollo oficial es la plataforma

Xcode [22] la cual opera en conjunto con Interface Builder una herramienta graacutefica para

la creacioacuten de interfaces de usuario

Actualmente hay dos grandes versiones del sistema operativo moacutevil en curso como

se puede apreciar en la Figura 10 Es algo a destacar que la uacuteltima versioacuten del sistema

operativo es soportada por el 63 de los dispositivos activos Claramente la

fragmentacioacuten interna es mucho menor que la encontrada en Android

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

31

Figura 9 Entorno de desarrollo Xcode

Figura 10 Distribucioacuten de versiones de iOS - Noviembre 2016

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

32

23 Desarrollo de Aplicaciones Nativas en Windows Phone

El sistema operativo moacutevil Windows Phone fue desarrollado por Microsoft y

sucede a Windows Mobile A diferencia de su predecesor estaacute enfocado en el mercado de

consumo en lugar del mercado empresarial

231 Evolucioacuten Su primera versioacuten lanzada en septiembre del 2010 fue denominada Windows

Phone 7 Fue presentado como un nuevo sistema operativo que incluye funciones de

integracioacuten con los servicios Xbox Live y Zune La interfaz conocida como Metro ha

sido revisada en su totalidad y comparte caracteriacutesticas visuales similares a la interfaz del

dispositivo Zune HD

Windows Phone 75 es una actualizacioacuten para Windows Phone lanzada en

septiembre de 2011 Esta nueva versioacuten incorporoacute numerosas caracteriacutesticas como por

ejemplo la inclusioacuten de Internet Explorer 9 con soporte para CSS3 Media Queries y

soporte para usar GPS cuando se trabaje con aplicaciones de ubicacioacuten geograacutefica entre

otros

En enero del 2013 se presenta Windows Phone 78 una actualizacioacuten que trae

mejoras como la nueva interfaz de usuario y fondos personalizados para la pantalla de

bloqueo Fue la uacuteltima gran actualizacioacuten de Windows Phone 7 ya que Microsoft se

centroacute en Windows Phone 8

Windows Phone 8 es la siguiente versioacuten del sistema operativo la cual fue

presentada a finales de 2012 Entre las nuevas caracteriacutesticas se incluyen

Nuevas pantallas de inicio y de bloqueo maacutes personalizables

Rincoacuten infantil un espacio exclusivo y controlado para los nintildeos

Cartera para almacenar tarjetas de fidelizacioacuten y de creacutedito

NFC

Internet Explorer 10

Integracioacuten con Skype

Nuevo nuacutecleo Windows NT con soporte para procesadores de varios

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

33

nuacutecleos

Captura de pantalla

Su proacutexima versioacuten es Windows Phone 81 y fue presentada en abril del 2014

Entre sus caracteriacutesticas maacutes relevantes se encuentran

Centro de notificaciones

Asistente de voz conocido con el nombre de Cortana

Sensores (de Wi-Fi de datos y de bateriacutea)

Aplicaciones que vienen en el paquete de instalacioacuten como Salud y

ejercicios Comida y bebida Viajes y Mapas (esta uacuteltima compite con Here

Maps la cual es la aplicacioacuten de mapas de Nokia)

Mejoras en la pantalla de inicio posibilidad de agregar fondos de pantalla y

una tercera columna de mosaicos personalizables (Tiles)

A mediados del 2014 Microsoft decide cambiar de estrategia tratando de unificar

todas las plataformas como PC tablets smartphones Xbox One entre otros Windows

10 (moacutevil) se dio a conocer puacuteblicamente durante un evento el 21 de enero para 2015 Al

igual que su homoacutelogo Windows 10 Mobile utiliza como navegador predeterminado

Microsoft Edge reemplazando Internet Explorer de Windows Phone 81 ya que este no

se adecuaba a las nuevas liacuteneas de disentildeo del sistema operativo

232 Proceso de desarrollo El entorno de desarrollo maacutes popular para el desarrollo de aplicaciones para

Windows Phone es Visual Studio (Figura 11) En la actualidad es posible utilizar diversos

lenguajes de programacioacuten VBNET y CNET C++ y JavaScript

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

34

Figura 11 Entorno de desarrollo Visual Studio

24 Diferencias teacutecnicas entre Android iOS y Windows Phone

Desarrollar aplicaciones moacuteviles para los tres sistemas operativos maacutes populares

implica conocer ciertos aspectos teacutecnicos de cada plataforma Algunos de estos aspectos

teacutecnicos difieren sustancialmente entre cada sistema operativo

Una de las caracteriacutesticas a tener en cuenta es si las aplicaciones moacuteviles se ejecutan

dentro de una maacutequina virtual especiacuteficamente disentildeada o si se ejecutan directamente

sobre el sistema operativo

Otro aspecto que los desarrolladores deben tener en cuenta es el lenguaje de

programacioacuten a utilizar para crear aplicaciones nativas Este aspecto es importante porque

incide en otros aspectos como por ejemplo la gestioacuten de memoria

Ademaacutes del lenguaje de programacioacuten a utilizar es importante conocer la

tecnologiacutea requerida para disentildear interfaces de usuario

Asimismo los desarrolladores deben familiarizarse con diferentes IDEs seguacuten la

plataforma en la que se desea desarrollar como asiacute tambieacuten con diferentes tiendas de

aplicaciones donde alojar los productos finales

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

35

Por uacuteltimo la tecnologiacutea de hardware requerida para soportar el sistema operativo

tambieacuten difiere seguacuten cada plataforma

La Tabla 1 compara cada uno de estos aspectos en los sistemas operativos moacuteviles

Android iOS y Windows Phone

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

36

Sistema

Operativo

Maacutequina

Virtual

Lenguaje de

Programacioacuten

Interfaces

de usuario

Gestioacuten de

memoria

IDE Plataforma de

desarrollo

Dispositivos Tienda de

Aplicaciones

Android Dalvik VM Java XML files Garbage

collector

Android

Studio

Multiplatforma Heterogeneos Google Play

Store

iOS No Objective-C Cocoa

Touch

Reference

counting

XCode Mac OS X Homogeneos iTunes Apps

Store

Windows

Phone

CLR C and Net XAML files Garbage

collector

Visual

Studio

Windows Vista7 Homogeneos Windows

Phone Store

Tabla 1 Diferencias teacutecnicas entre las plataformas Android iOS y Windows Phone

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

37

Capiacutetulo 3 Desarrollo de

Aplicaciones Moacuteviles

Multiplataforma

En los uacuteltimos antildeos el mercado de los dispositivos moacuteviles en especial

smartphones ha mostrado un crecimiento notable tanto en Argentina como en todo el

mundo En particular en nuestro paiacutes las plataformas que maacutes han crecido son Android

e iOS [1520]

Actualmente gran parte de la industria del software se concentra en desarrollar

soluciones para dispositivos moacuteviles proveyendo especialmente aplicaciones nativas

Las aplicaciones nativas tal como se mencionoacute en el capiacutetulo anterior ofrecen la

posibilidad de acceder a todas las capacidades del dispositivo (caacutemara GPS aceleroacutemetro

y agenda entre otras) su rendimiento es alto el acceso a Internet no es estrictamente

necesario y pueden ejecutarse en segundo plano notificando al usuario cuando se requiera

su atencioacuten Estas aplicaciones pueden distribuirsecomercializarse a traveacutes de las tiendas

en liacutenea correspondientes

El principal reto para los proveedores de aplicaciones es proporcionar soluciones

para todas las plataformas pero esto conlleva un alto costo [6] no es posible reusar el

coacutedigo fuente entre plataformas diferentes multiplicando esfuerzos y elevando los costos

de desarrollo actualizacioacuten y distribucioacuten de nuevas versiones

El desarrollo multiplataforma procura optimizar la relacioacuten costobeneficio

compartiendo la misma codificacioacuten entre las versiones para las distintas plataformas

Entre otras ventajas sobresalen menor tiempo y costo de desarrollo prestaciones

similares a las nativas con acceso al hardware del dispositivo y disponibilidad de

entornos potentes de desarrollo (Delphi Visual Studio etc) o en su lugar utilizacioacuten de

tecnologiacuteas (HTML5 Javascript y CSS) bien conocidas por los desarrolladores web

quienes pueden trasladar sus conocimientos y experiencias al paradigma moacutevil Sin

embargo el rendimiento de las aplicaciones y sus interfaces de usuario pueden afectar la

experiencia de usuario

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

38

Las aplicaciones multiplataforma pueden clasificarse en aplicaciones web moacuteviles

hiacutebridas interpretadas y generadas por compilacioacuten cruzada [5] En las secciones

siguientes se analizaran cada una de estas clasifcaciones

31 Aplicaciones Web Moacuteviles

Las Aplicaciones Web Moacuteviles disentildeadas para ejecutarse dentro de un navegador

se desarrollan con tecnologiacutea web estaacutendar (HTML CSS y JavaScript) y cuentan con

una serie de caracteriacutesticas favorables no necesitan adecuarse a ninguacuten entorno operativo

son independientes de la plataforma y su puesta en marcha es raacutepida y sencilla

Por contrapartida sus tiempos de respuesta decaen debido a la interaccioacuten cliente-

servidor Al mismo tiempo resultan ser menos atractivas que las aplicaciones nativas ya

que no se encuentran instaladas en el dispositivo lo que implica acceder previamente a

un navegador Ademaacutes las restricciones de seguridad impuestas a la ejecucioacuten de coacutedigo

por medio de un navegador limitan el acceso a todas las capacidades del dispositivo [23]

Asimismo no es posible desarrollar aplicaciones web que corran en segundo plano ni

tampoco aplicaciones offline ya que es requisito disponer de una conexioacuten a internet para

su funcionamiento

El proceso de desarrollo de una aplicacioacuten web moacutevil debe contemplar una serie de

caracteriacutesticas inherentes al entorno de ejecucioacuten Como ya ha sido mencionado las

aplicaciones web moacuteviles pueden ser accesibles desde cualquier dispositivo moacutevil que

cuente con un navegador y acceso a internet pero esto no significa que la navegacioacuten en

la aplicacioacuten resulte ser coacutemoda u oacuteptima Por ejemplo una aplicacioacuten web con un menuacute

compuesto de 20 iacutetems puede implicar una usabilidad correcta desde una PC Por lo

contrario para un dispositivo moacutevil con una pantalla limitada no resulta praacutectico que se

le presente al usuario tantas opciones en el menuacute Con este ejemplo lo que se pretende

mostrar es que para que una aplicacioacuten sea accesible desde diferentes dispositivos

moacuteviles posiblemente se tengan que realizar al menos dos disentildeos de presentacioacuten

diferentes un disentildeo para PC y otro disentildeo para dispositivos moacuteviles con una estructura

organizativa de la aplicacioacuten maacutes simplificada con respecto al disentildeo tradicional Por

ejemplo algunas de las funcionalidades de la aplicacioacuten para PC pueden ser eliminadas

para la versioacuten para dispositivos moacuteviles o presentadas de forma diferente

Para desarrollar diferentes presentaciones de una misma aplicacioacuten web

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

39

actualmente existen dos estrategias distintas ambas vaacutelidas seguacuten el contexto En los

siguientes apartados se analizaraacuten cada una de ellas

311 Aplicacioacuten Web dedicada y exclusiva para dispositivos moacuteviles Esta metodologiacutea ha sido el estaacutendar hasta el antildeo 2012 En ella la direccioacuten URL

y el coacutedigo HTML de la versioacuten moacutevil son distintos de la versioacuten de escritorio Por lo

general las direcciones URL tienen el formato mnombresitiocom

Algunas de las ventajas de este meacutetodo

- En general la carga es maacutes raacutepida y la navegacioacuten maacutes coacutemoda

- Es posible adaptar de manera maacutes faacutecil el contenido de las secciones

Desventajas de este meacutetodo

- Mantenimiento maacutes costoso Se debe mantener dos versiones distintas del mismo

sitio

- Dificulta el posicionamiento del sitio en los buscadores

- Estos desarrollos al final tienden a ser versiones muy reducidas de la web para

PC llevando al usuario a frustrarse y a preferir ver la versioacuten original de la web

312 Aplicacioacuten Web con Disentildeo Adaptable Con esta metodologiacutea la aplicacioacuten web se adapta al dispositivo desde el cual se la

estaacute accediendo El coacutedigo HTML y la direccioacuten URL de la aplicacioacuten son uacutenicos El

Disentildeo Adaptable o Responsive Design (Figura 12) tiene sus oriacutegenes en el antildeo 2008

cuando la W3C discutioacute y describioacute sus propoacutesitos Desde el antildeo 2012 -momento en el

cual Google recomendoacute fuertemente su implicancia [24]- viene en ascenso y

posiblemente llegue a convertirse en un standard en un corto plazo

Mediante un Disentildeo Adaptable todos los elementos de la web se reajustan en ancho

y altura adaptaacutendose al tamantildeo de tu pantalla Incluso es posible ocultar secciones cuando

se accede desde un dispositivo moacutevil

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

40

Figura 12 Disentildeo Adaptable

Las principales ventajas del desarrollo de aplicaciones web con Disentildeo Adaptable

son

- El mantenimiento es menos costoso ya que solo hay que mantener una uacutenica

versioacuten de la aplicacioacuten

- Se simplifica el proceso de posicionar la aplicacioacuten en los buscadores

Como contrapartida el Disentildeo Adaptable presenta una serie de desventajas

- Requiere de mayores niveles teacutecnicos para su desarrollo

- El contenido de las aplicaciones con Disentildeo Adaptable puede ser mayor que el

contenido de las aplicaciones web especiacuteficas para dispositivos moacuteviles

perjudicando el tiempo de carga cuando se utiliza un tipo de conexioacuten no muy

potente y generando un mayor consumo de datos

En la actualidad existe una gran cantidad de frameworks que simplifican el

desarrollo de aplicaciones web con disentildeo adaptable destacaacutendose por su popularidad y

extensa documentacioacuten los frameworks Bootstrap [25] y Foundation [26]

32 Aplicaciones Hiacutebridas

Las aplicaciones hiacutebridas utilizan tecnologiacuteas web (HTML Javascript y CSS) pero

no son ejecutadas por un navegador En su lugar se ejecutan en un contenedor web

(webview) como parte de una aplicacioacuten nativa la cual estaacute instalada en el dispositivo

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

41

moacutevil Desde una aplicacioacuten hiacutebrida es posible acceder a las capacidades del dispositivo

a traveacutes de diversas API

Las aplicaciones hiacutebridas ofrecen grandes ventajas permitiendo la reutilizacioacuten de

coacutedigo en las distintas plataformas el acceso al hardware del dispositivo y la distribucioacuten

a traveacutes de las tiendas de aplicaciones En contrapartida se observan dos desventajas de

las aplicaciones hiacutebridas respecto del caso nativo i) la experiencia de usuario se ve

perjudicada al no utilizar componentes nativos en la interfaz y ii) la ejecucioacuten se ve

ralentizada por la carga asociada al contenedor web

Afortunadamente existe una diversidad de frameworks que permiten desarrollar

aplicaciones hiacutebridas A continuacioacuten se haraacute un breve resumen de los maacutes populares

321 PhoneGap PhoneGap [27] es un framework gratuito y open source creado en el antildeo 2008 por

la empresa Nitobi Software que permite crear aplicaciones moacuteviles usando tecnologiacutea

web estaacutendar HTML JavaScript y CSS En octubre del 2011 Adobe adquiere la empresa

Nitobi y aporta el coacutedigo de PhoneGap a Apache Software Foundation para iniciar un

nuevo proyecto por encima de PhoneGap llamado Apache Cordova [28] PhoneGap pasoacute

a ser una de las varias distribuciones de Apache Cordova (Figura 13) brindando servicios

extras como por ejemplo Adobe PhoneGap Build [29] un servicio de compilacioacuten en la

nube proporcionado por Adobe Creative Cloud PhoneGap Desktop y PhoneGap

Developer

PhoneGap permite compilar aplicaciones para las siguientes plataformas Android

IOS Amazon Fire OS Windows Phone Windows 8 Ubuntu Tizen Firefox OS

Blackberry 10

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

42

Figura 13 Funcionamiento de Apache Cordova

322 CocoonJS CocoonJS [30] es un framework para el desarrollo de aplicaciones moacuteviles

producido por Ludei [31] Actualmente cuenta con una licencia propietaria y ofrece

diferente tipos de planes pagos y gratuitos El mencionado framework estaacute basado en

Apache Cordova al igual que PhoneGap pero se diferencia de este uacuteltimo en que hace

un mayor hincapieacute en la performance de las aplicaciones resultantes CocoonJS ofrece

dos tipos de webview

Canvas+ un webview liviano optimizado para video juegos Provee solo un

subconjunto de las funcionalidades del HTML5 (canvas audio motion

geolocalizacioacuten etc) necesarias para desarrollar video juegos con el objetivo de

brindar la mejor performance posible

Webview+ un potente y completo webview basado en el webview del proyecto

Chromium el cual cuenta de una mejor performance en comparacioacuten con el

webview por defecto de Apache Cordova

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

43

CocoonJs permite crear aplicaciones tanto para iOS como para Android

323 Ionic Ionic [32] es un completo SDK gratuito y open source para el desarrollo de

aplicaciones hiacutebridas producido por Max Lynch Ben Sperry y Adam Bradley de la

compantildeia Drifty Co en el antildeo 2013 En un tiempo relativamente corto alcanzoacute una

popularidad a destacar Estaacute basado en Apache Cordova permitiendo desarrollar

aplicaciones con tecnologiacutea web A diferencia de otros frameworks para el desarrollo de

aplicaciones hibridas Ionic provee un framework para la interfaz de usuario y

herramientas visuales para disentildear interfaces

Mediante Ionic es posible crear aplicaciones para Android IOS Windows Phone y

Firefox OS

324 Sencha Touch Sencha Touch [33] es un framework gratuito Model-View-Controller (MVC)

JavaScript construido sobre el sistema de clases de Ext JS disentildeado especialmente para

el desarrollo de aplicaciones web moacuteviles para dispositivos taacutectiles [34]

Al igual que PhoneGap Sencha Touch permite a los desarrolladores crear

aplicaciones moacuteviles a partir de un desarrollo web con HTML5 CSS y Javascript A

diferencia de PhoneGap Sencha no necesita de ninguna libreriacutea de terceros para construir

interfaces similares a las nativas ya que el framework provee consigo una gran cantidad

de componentes visuales listos para utilizar

Sencha empaqueta el coacutedigo del proyecto mediante PhoneGap para luego poder

construir aplicaciones en todas las plataformas soportadas por PhoneGap

33 Aplicaciones Interpretadas

Las aplicaciones interpretadas son implementadas utilizando un lenguaje base el

cual se traduce en su mayor parte a coacutedigo nativo mientras el resto es interpretado en

tiempo de ejecucioacuten Estas aplicaciones son implementadas de manera independiente de

las plataformas utilizando diversas tecnologiacuteas y lenguajes tales como Javascript Java

Ruby y XML entre otros

Una de las principales ventajas de este tipo de aplicaciones es que se obtienen

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

44

interfaces de usuario totalmente nativas Sin embargo los desarrolladores experimentan

una dependencia total con el entorno de desarrollo elegido

Seguidamente se presentaran algunos de frameworks maacutes reconocidos para el

desarrollo de aplicaciones interpretadas

331 Appcelerator Titanium Desarrollado por Appcelerator Inc Appcelerator Titanium [35] es un framework

de coacutedigo abierto que permite la creacioacuten de aplicaciones moacuteviles para las plataformas

iOS y Android Dicho framework estaacute formado por Titanium Studio un entorno de

desarrollo de coacutedigo libre para la codificacioacuten de aplicaciones moacuteviles multiplataforma

y el SDK Titanium una serie de herramientas para el desarrollo testeo anaacutelisis

depuracioacuten y compilacioacuten de aplicaciones

Las aplicaciones desarrolladas con Appcelerator Titanium se codifican utilizando

el lenguaje Javascript el cual es evaluado en tiempo de ejecucioacuten mediante un inteacuterprete

de Javascript que se ejecuta en el sistema operativo del dispositivo Al iniciar la

aplicacioacuten desde el coacutedigo nativo se ejecuta el coacutedigo Javascript y mediante la API de

Titanium se mapea uno-a-uno cada elemento del coacutedigo Javascript con los elementos

nativos De esta manera la API de Titanium actuacutea como puente logrando interfaces de

usuario compuestas de controles nativos Este entorno de desarrollo utiliza el framework

Alloy disentildeado para el desarrollo aacutegil de aplicaciones moacuteviles Alloy estaacute basado en la

arquitectura MVC y soporta el uso de tecnologiacuteas populares como Backbonejs [36] y

Underscorejs [37]

Los creadores de Titanium destacan que mediante este framework es posible

reutilizar entre el 60 y 90 del coacutedigo entre distintas plataformas

332 NativeScript El 5 de marzo del 2015 la empresa Telerik lanzoacute NativeScript [38] un proyecto de

coacutedigo abierto el cual permite generar aplicaciones nativas utilizando JavaScript

Asimismo es posible desarrollar la aplicacioacuten utilizando el lenguaje TypeScript [39]

lenguaje libre y de coacutedigo abierto desarrollado por Microsoft que extiende a JavaScript

esencialmente antildeadiendo tipado estaacutetico y objetos basados en clases En este sentido

cuando se compila la aplicacioacuten se realiza la traduccioacuten del coacutedigo TypeScript a coacutedigo

JavaScript

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

45

NativeScript provee un moacutedulo multiplataforma que permite obtener aplicaciones

nativas desde coacutedigo JavaScript Este moacutedulo expone las capacidades del dispositivo y

de la plataforma subyacente de una manera consistente y permite accederlas desde el

coacutedigo JavaScript De igual manera las interfaces de usuario pueden ser definidas

mediante coacutedigo JavaScript documentos HTML y archivos CSS abstrayeacutendose de los

componentes nativos reales

Cuando la aplicacioacuten es compilada parte del coacutedigo multiplataforma es traducido

a coacutedigo nativo mientras que el resto es interpretado en tiempo de ejecucioacuten (Figura 14)

Por el momento NativeScript permite generar aplicaciones para Android e iOS y

se preveacute dar soporte a Windows Phone NativeScript renderiza controles nativos sin

utilizar WebViews logrando una performance y experiencia de usuario similar al de las

aplicaciones nativas

Figura 14 Proceso de interpretacioacuten mediante NativeScript

34 Aplicaciones Generadas por Compilacioacuten Cruzada

Estas aplicaciones se compilan de manera nativa creando una versioacuten especiacutefica de

alto rendimiento para cada plataforma destino Ejemplos de entornos de desarrollo para

generar aplicaciones por compilacioacuten cruzada son Applause [40] Xamarin [41]

Embarcadero Delphi 10 Seattle [42] y RubyMotion [43]

El entorno de desarrollo abierto Applause utiliza como entrada un lenguaje

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

46

especiacutefico del dominio basado en el framework Xtext [44] disentildeado expliacutecitamente para

aplicaciones moacuteviles orientadas a datos y genera coacutedigo fuente en Objective C Java C

o Python Las caracteriacutesticas de Xamarin Embarcadero Delphi 10 Seattle y RubyMotion

se presentan en secciones posteriores

341 Xamarin Xamarin es una plataforma de desarrollo de aplicaciones moacuteviles para generar

aplicaciones 100 nativas para iOS Android y Windows a partir de una base de coacutedigo

CNET comuacuten para conseguir entre un 75 y hasta casi un 100 de reutilizacioacuten de

coacutedigo entre plataformas Las aplicaciones escritas con Xamarin y C disponen de acceso

completo a las API de la plataforma subyacente asiacute como de la capacidad de crear

interfaces de usuario nativas y de realizar la compilacioacuten en coacutedigo nativo por lo que el

impacto en el rendimiento en tiempo de ejecucioacuten es escaso

Xamarin es una compantildeiacutea que se establecioacute en mayo de 2011 por los mismos

ingenieros que crearon el proyecto Mono [45] consistente en una implementacioacuten libre

de la plataforma de desarrollo NET para dispositivos Android iOS y GNULinux

Anteriormente este proyecto se llamaba MonoTouch y MonoDroid

Si bien Xamarin cuenta con su propio IDE denominado Xamarin Studio (Figura

15) es posible integrarlo con Microsoft Visual Studio y de esta manera generar tambieacuten

aplicaciones para Windows incluido Windows RT para tablets y Windows Phone para

celulares

En febrero del 2016 Xamarin es comprada por Microsoft y desde ese momento la

plataforma Xamarin y el IDE Xamarin Studio pasaron a ser gratuitas

Xamarin propone un enfoque de desarrollo multiplataforma en el que se comparte

la codificacioacuten completa de la loacutegica del negocio Sin embargo las interfaces deben ser

programadas de manera independiente para cada una de las plataformas destino Asiacute la

reutilizacioacuten de coacutedigo seguacuten estudios estadiacutesticos de la compantildeiacutea Xamarin es cercana

al 85

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

47

Figura 15 Entorno de Desarrollo Xamarin Studio

342 Embarcadero Delphi 10 Seattle Embarcadero Delphi 10 Seattle [42] es una plataforma de desarrollo propietaria y

no gratuita que permite a los desarrolladores crear aplicaciones raacutepidamente a traveacutes de

un entorno visual coacutemodo e intuitivo (Figura 16) La aplicacioacuten desarrollada puede ser

compilada para muacuteltiples plataformas incluyendo Windows Mac Android e iOS

Delphi 10 Seattle al igual que Xamarin aventaja a otros tipos de aplicaciones

multiplataformas con resultados 100 nativos con acceso total a los sensores y

capacidades del dispositivo (caacutemara notificaciones GPS aceleroacutemetro entre otras)

Un punto a destacar es que Delphi 10 Seattle a traveacutes del framework de interfaces

de usuario FireUI Multi-Device Designer permite crear interfaces de usuario totalmente

nativas sin la necesidad de tener que disentildear interfaces especiacuteficas para cada plataforma

en particular

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

48

Figura 16 Entorno de Desarrollo Delphi 10 Seattle

343 RubyMotion En Mayo de 2012 la empresa HipByte lanza RubyMontion un proyecto que

permite generar aplicaciones para iOS Android y OS X utilizando el lenguaje de

programacioacuten Ruby

Para poder generar las aplicaciones multiplataforma RubyMotion posee

implementaciones de Ruby sobre los sistemas operativos destinos (Android e iOS) que

permiten acceder a todas las caracteriacutesticas provistas por cada plataforma Las

herramientas de compilacioacuten provistas por RubyMotion se encargan de embeber la

correspondiente implementacioacuten de Ruby al momento de compilar para cada plataforma

La principal desventaja de RubyMotion es que soacutelo funciona bajo el sistema

operativo OS X Otro factor a tener en cuenta es que no posee un entorno de desarrollo

integrado que facilite todo el proceso al desarrollador esto se ve solventado gracias a que

ofrece complementos para los IDE y editores de coacutedigo maacutes utilizados

Finalmente si bien el producto es un servicio pago ofrece una posibilidad de

probarlo gratuitamente aunque con soporte uacutenicamente para compilar a la uacuteltima versioacuten

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

49

de cada plataforma destino

Capiacutetulo 4 Experimentacioacuten

50

Capiacutetulo 4 Experimentacioacuten

Con el objetivo de profundizar la investigacioacuten de las diferentes metodologiacuteas de

desarrollo de aplicaciones moacuteviles multiplataforma es que se llevaron a cabo diferentes

experimentos en simultaacuteneo El primer experimento consiste en el desarrollo de una

aplicacioacuten moacutevil utilizando cada una de las metodologiacuteas estudiadas en el capiacutetulo

anterior con el objetivo de analizar el proceso de desarrollo El segundo experimento

tiene como objetivo analizar el rendimiento de las aplicaciones moacuteviles generadas

mediante las metodologiacuteas estudiadas a traveacutes de un caacutelculo matemaacutetico Por uacuteltimo se

presenta un informe comparativo que pueda ayudar en la toma de decisiones sobre queacute

metodologiacutea utilizar en futuros desarrollos

41 Aplicacioacuten Moacutevil para la plataforma de E-Learning WebUNLP

411 Descripcioacuten del problema WebUNLP es un entorno virtual de ensentildeanza y aprendizaje que permite a los

docentes mediar sus propuestas educativas Alumnos y docentes pueden encontrarse en

ese espacio para compartir materiales de estudio comunicarse y generar una experiencia

educativa en forma virtual [46]

Actualmente WebUNLP cuenta con una versioacuten web enfocada a computadoras de

escritorio o portaacutetiles pero no estaacute adaptada para ser utilizada desde dispositivos moacuteviles

El desarrollo planteado consiste en extender WebUNLP con la construccioacuten de una

aplicacioacuten moacutevil que permita acceder a determinadas funcionalidades del sistema a

traveacutes de un dispositivo moacutevil El enfoque propuesto incluye un anaacutelisis de la misma

solucioacuten comparando el desarrollo nativo web hiacutebrido interpretado y de compilacioacuten

cruzada a fin de establecer cuaacutel de ellos es conveniente

Como ocurre con cualquier desarrollo de software la construccioacuten de una

aplicacioacuten moacutevil implica tener claramente definido su propoacutesito y cuaacuteles requerimientos

debe cumplir En particular para el caso de software para dispositivos moacuteviles resulta

esencial tener objetivos maacutes acotados que en su versioacuten de escritorio [47]

Capiacutetulo 4 Experimentacioacuten

51

Para el caso especiacutefico de WebUNLP se realizoacute el desarrollo incremental de una

aplicacioacuten moacutevil y esta primera versioacuten se enfocoacute en una de sus herramientas de

comunicacioacuten la cartelera Esta herramienta permite comunicar las novedades de un

curso como por ejemplo el cambio de horario de una cursada recordar las fechas de

entrega de un trabajo praacutectico entre otras [46]

412 Anaacutelisis Uno de los primeros interrogantes planteados fue la eleccioacuten de la plataforma En

teacuterminos de mercado los sistemas operativos que predominan en Argentina son Android

e iOS [4815] con lo cual se decidioacute dar soporte a estos dos sistemas operativos

Se analizaron los requerimientos funcionales y no funcionales de forma aislada a la

plataforma y luego de forma especiacutefica para cada una de ellas

A continuacioacuten se presentan algunos requerimientos a cumplir por la aplicacioacuten

El usuario debe poder ingresar a la aplicacioacuten con las mismas credenciales que las

utilizadas para acceder a la versioacuten web de escritorio

El usuario debe poder acceder a la cartelera de todos los cursos en los que

participa ya sea como docente o alumno

El usuario debe recibir una notificacioacuten en su dispositivo cuando una novedad es

publicada en la cartelera Este requerimiento no se puede cumplir en la versioacuten

web accesible desde computadoras de escritorio yo portables

El usuario debe tener la misma experiencia de uso en todas las plataformas

operativas

La aplicacioacuten web existente debe estar sincronizada con la aplicacioacuten moacutevil a

desarrollar esto significa que cualquier cambio realizado desde la aplicacioacuten

moacutevil debe verse reflejado en la versioacuten web y viceversa

413 Disentildeo Para satisfacer los requerimientos planteados en el punto anterior a excepcioacuten de

la notificacioacuten el disentildeo de la aplicacioacuten moacutevil web consiste en una reacuteplica de lo ofrecido

por WEBUNLP adaptaacutendose solamente la interfaz al tamantildeo de pantalla del dispositivo

moacutevil

Capiacutetulo 4 Experimentacioacuten

52

Para el disentildeo de las aplicaciones moacuteviles nativa hiacutebrida interpretada y de

compilacioacuten cruzada la situacioacuten es maacutes compleja En la Figura 17 se presenta la

arquitectura geneacuterica de todos los componentes que participan en este escenario de

desarrollo En ella se observa el acceso desde una PC a WebUNLP y el acceso desde

dispositivos moacuteviles a la informacioacuten de WebUNLP mediante servicios web Para el

desarrollo de los servicios web se disentildeoacute una API Restful dada su simpleza escalabilidad

e interoperabilidad [49]

Figura 17 Arquitectura geneacuterica para aplicacioacuten nativa e hiacutebrida

Asimismo existe una tarea programada (Cron) de ejecucioacuten intermitente a

intervalos regulares de tiempo la cual notifica a los dispositivos moacuteviles correspondientes

cuando se crea una novedad en la cartelera de WebUNLP El Cron identifica el sistema

operativo del dispositivo a notificar y genera dicha notificacioacuten

En cuanto a la interfaz graacutefica se planteoacute un disentildeo independiente de la plataforma

para analizar los aspectos de usabilidad de la aplicacioacuten y luego se realizaron los ajustes

necesarios para cada tipo de aplicacioacuten

En las interfaces disentildeadas la navegacioacuten es en serie en el orden en que se presentan

en el mockup [50] de la Figura 18

Capiacutetulo 4 Experimentacioacuten

53

Figura 18 Mockup independiente del tipo de aplicacioacuten

414 Desarrollo

4141 Aplicacioacuten Nativa para Android

El desarrollo de aplicaciones para la plataforma Android requiere disponer del Java

Development Kit (JDK) y su entorno de programacioacuten conocido como Android SDK

Este uacuteltimo provee libreriacuteas y herramientas necesarias para construir testear y depurar

aplicaciones para Android

El desarrollo de la aplicacioacuten de WebUNLP para Android se realizoacute seguacuten las

convenciones adoptadas por su comunidad porque aplica buenas praacutecticas en la

construccioacuten de interfaces y de la loacutegica detraacutes de ellas el acceso a datos y a servicios

web Para cumplir el requerimiento de las notificaciones en el dispositivo

correspondiente el Cron genera la notificacioacuten mediante el uso del servicio Google Cloud

Messaging (GCM) [51] En la Figura 19 se presentan las interfaces de la aplicacioacuten

desarrollada

Figura 19 Aplicacioacuten nativa para Android

Capiacutetulo 4 Experimentacioacuten

54

4142 Aplicacioacuten Nativa para iOS

La plataforma Apple iOS estaacute basada en un modelo propietario es por ello que el

desarrollo de una aplicacioacuten nativa iOS implica contar con una Apple Mac ejecutando OS

X con Xcode instalado El lenguaje de programacioacuten principal es Objective C Xcode es

el entorno de desarrollo de Apple para todos sus dispositivos y es el encargado de

proporcionar el iOS SDK con las herramientas compiladores y frameworks necesarios

Ademaacutes Xcode viene integrado con simuladores para dispositivos iOS (iPhones y iPads)

que facilitan las etapas de prueba del sistema desarrollado

Para los aspectos referentes a la interfaz graacutefica y la interaccioacuten con el usuario se

siguieron las convenciones propuestas por Apple [52] para lograr una mejor integracioacuten

de la aplicacioacuten con el sistema operativo y mejorar la experiencia del usuario

Por uacuteltimo para satisfacer el requerimiento de notificaciones el Cron notifica al

dispositivo iOS correspondiente mediante el uso del servicio Apple Push Notification

Service (APNs) [53] En la Figura 20 se presentan las interfaces de la aplicacioacuten

desarrollada

Figura 20 Aplicacioacuten nativa para iOS

4143 Aplicacioacuten Web Moacutevil

Se desarrolloacute una aplicacioacuten web capaz de acceder a la cartelera de WebUNLP

disponible para cualquier dispositivo moacutevil que cuente con un navegador que soporte las

caracteriacutesticas utilizadas para el desarrollo HTML5 CSS3 y Javascript

Como la velocidad de transmisioacutenrecepcioacuten de datos de un dispositivo moacutevil a

traveacutes de WiFi y en particular 3G es inferior a la velocidad de una computadora de

Capiacutetulo 4 Experimentacioacuten

55

escritorio la versioacuten web de la cartelera de WebUNLP es liviana y gran parte de los

requerimientos son implementados a traveacutes de Ajax [54] para evitar ante alguacuten cambio

la recarga de la paacutegina completa

Debido a las limitaciones que tienen las aplicaciones que se ejecutan sobre un

navegador no es posible implementar la recepcioacuten de una notificacioacuten en el dispositivo

cuando una novedad es publicada en la cartelera

4144 Aplicacioacuten Hiacutebrida desarrollada con PhoneGap y Jquery Mobile

Para la construccioacuten de la aplicacioacuten WebUNLP hiacutebrida se utilizoacute el framework

PhoneGap [27] el cual permite desarrollar aplicaciones moacuteviles que utiliza tecnologiacuteas

comunes a todos los dispositivos HTML5 CSS y Javascript

Asimismo se utilizoacute el framework Javascript Jquery Mobile [55] para lograr

interfaces con apariencia y comportamiento consistente a traveacutes de las diferentes

plataformas moacuteviles

Con el objetivo de implementar el patroacuten de disentildeo MVC se utilizoacute la libreriacutea

Backbonejs [36]

Por uacuteltimo para satisfacer el requerimiento de notificaciones se utilizoacute el plugin

Pushwoosh [56]

En la figura 5 se presentan las interfaces de la aplicacioacuten desarrollada

Figura 21 Aplicacioacuten hiacutebrida desarrollada con PhoneGap

Capiacutetulo 4 Experimentacioacuten

56

4145 Aplicacioacuten Hiacutebrida desarrollada con Sencha Touch

El desarrollo de WebUNLP utilizando Sencha Touch se vio favorecido por el uso

del patroacuten de disentildeo MVC Esto permitioacute mayor flexibilidad y legibilidad en el coacutedigo

[57] [34]

Sencha ofrece Sencha Command una herramienta multiplataforma de liacutenea de

comandos que provee tareas automatizadas para todo el ciclo completo de una aplicacioacuten

En el caso de WebUNLP se utilizoacute tanto para la generacioacuten del proyecto como para el

empaquetado de la aplicacioacuten

En la Figura 22 se presentan las interfaces de la aplicacioacuten desarrollada

Figura 22 Aplicacioacuten desarrollada con Sencha Touch

4146 Aplicacioacuten Interpretada de WebUNLP con Appcelerator Titanium 3

Para desarrollar una aplicacioacuten moacutevil experimental seguacuten el enfoque interpretado

se utilizoacute el entorno de desarrollo gratuito y open source Appcelerator Titanium 3 [35]

Se destaca la simplicidad y legibilidad de los controladores y modelos de la

aplicacioacuten desarrollada luego de utilizar Alloy el framework de Titanium que permite

disentildear aplicaciones seguacuten el patroacuten de disentildeo MVC Para la construccioacuten de las vistas se

puede optar por la programacioacuten mediante Javascript y la API de Titanium o bien por

una especificacioacuten XML con estilos TSS (Titanium Style Sheets) Esta uacuteltima opcioacuten

simplifica el proceso de creacioacuten de las vistas aunque falta todaviacutea un buen editor visual

de interfaces que lo potencie

Capiacutetulo 4 Experimentacioacuten

57

Para cubrir requerimientos de notificaciones en el dispositivo Titanium provee el

moacutedulo PushNotifications para plataformas Android e iOS

La Figura 24 (a) muestra la experimentacioacuten con Titanium

4147 Aplicacioacuten Generada por Compilacioacuten Cruzada de WebUNLP utilizando XamarinVisual Studio

Tal como se mencionoacute en la seccioacuten 341 Xamarin propone un enfoque de

desarrollo multiplataforma en el que se comparte la codificacioacuten completa de la loacutegica

del negocio Sin embargo las interfaces deben ser programadas de manera independiente

para cada una de las plataformas destino (ver Figura 23) Asiacute la reutilizacioacuten de coacutedigo

seguacuten estudios estadiacutesticos de la compantildeiacutea Xamarin es cercana al 85

Figura 23 Enfoque uacutenico de desarrollo Xamarin

Para el estudio de las aplicaciones generadas por compilacioacuten cruzada se desarrolloacute

la aplicacioacuten moacutevil de WebUNLP utilizando Xamarin integrado con Microsoft Visual

Studio Siguiendo la estrategia maacutes eficiente para trabajar en este entorno se ha creado

una solucioacuten uacutenica conteniendo tres proyectos distintos Uno de ellos se utilizoacute para

generar la aplicacioacuten Android otro para la aplicacioacuten Windwos Phone 8 y el tercero para

la implementacioacuten de una biblioteca de clases portable (PCL por sus siglas en ingleacutes) con

todo el coacutedigo compartido Los tres proyectos fueron desarrollaacutendose de manera conjunta

y concurrente

Aunque una de las ventajas maacutes importantes de Xamarin es la reutilizacioacuten de

coacutedigo eacutesta se ve fuertemente afectada por el tipo de aplicacioacuten que se desarrolla La

relacioacuten existente entre la complejidad de la interfaz y la loacutegica del negocio impacta

directamente sobre la posibilidad de mantener la mayor cantidad de coacutedigo compartido

Capiacutetulo 4 Experimentacioacuten

58

en la PCL En el desarrollo de WebUNLP la reutilizacioacuten de coacutedigo ha sido cercana al

50 Sin embargo no debe despreciarse la ventaja de utilizar el mismo lenguaje entorno

y conjunto de herramientas comunes en el desarrollo de aplicaciones para distintas

plataformas moacuteviles

La Figura 24 (b) presenta la interfaz desarrollada para Windows Phone 8

4148 Aplicacioacuten Generada por Compilacioacuten Cruzada de WebUNLP utilizando Delphi 10 Seattle

Para el profundizar el estudio de las aplicaciones generadas por compilacioacuten

cruzada ademaacutes se desarrolloacute la aplicacioacuten moacutevil de WebUNLP utilizando Delphi 10

Seattle En particular fueron de gran utilidad tanto los componentes provistos por Delphi

para acceder a servicios RESTful como el entorno visual de desarrollo de Delphi 10

Seattle

Para la recepcioacuten de notificaciones en el dispositivo de las novedades de WebUNLP

se utilizoacute el componente TPushEvent conectado al servicio Kinvey [58]

La Figura 24 (c) presenta la interfaz de la aplicacioacuten desarrollada

(a) (b) (c)

Figura 24 Aplicacioacuten desarrollada con a) Titanium b) XamarinVisual Studio y c) Delphi XE

415 Conclusiones del experimento WebUNLP Seleccionar un dominio para desarrollar un caso experimental tiene sus

particularidades La novedad de disponer una aplicacioacuten moacutevil no es motivo suficiente

que justifique tal desarrollo Es necesario satisfacer un conjunto de requerimientos

claramente planteados

Capiacutetulo 4 Experimentacioacuten

59

WebUNLP es un entorno virtual de ensentildeanza y aprendizaje utilizado por diversos

cursos de grado y postgrado de la Universidad Nacional de La Plata Por ende la cantidad

de usuarios beneficiados por acceder desde cualquier lugar a este entorno es importante

De esta manera se optoacute por elegir dicho espacio virtual para ser replicado en una

versioacuten moacutevil que no soacutelo permita acercarlo a sus usuarios sino que ademaacutes ampliacutee sus

funciones en este caso puntualmente para la cartelera

Para el desarrollo de esta experimentacioacuten se desarrolloacute la misma aplicacioacuten para

los cinco tipos de enfoques de desarrollo moacutevil (web nativa hiacutebrida interpretada y

generada por compilacioacuten cruzada)

Se destaca la gran simpleza de generar la versioacuten web dado que se utilizan las

mismas herramientas tecnoloacutegicas que las usadas para el desarrollo de cualquier

aplicacioacuten web tradicional La principal diferencia en este sentido radica en la limitacioacuten

de espacio en la pantalla del dispositivo No obstante el mayor contraste estaacute dado en que

no es posible acceder a todas las capacidades de hardware del dispositivo lo que impidioacute

implementar uno de los requerimientos probablemente el maacutes interesante la notificacioacuten

de novedades de la cartelera de WebUNLP al usuario

Por otra parte las versiones nativas han cumplido todos los requerimientos Aunque

la mayor desventaja consiste en la no portabilidad lo que implicoacute un desarrollo especiacutefico

para la plataforma que se desee cubrir En este trabajo se han presentado los desarrollos

para Android e iOS sistemas operativos maacutes usados en Argentina con un costo de

desarrollo y mantenimiento inherente mayor

Para el caso del enfoque hiacutebrido tanto la versioacuten de WebUNLP desarrollada con

PhoneGap y Jquery Mobile como la versioacuten desarrollada con Sencha Touch han logrado

conjugar la simpleza del desarrollo web con el uso de todas las capacidades del

dispositivo Este tipo de enfoque pretende suplir las desventajas de los dos enfoques

previos hecho que lo posiciona como una eleccioacuten realmente interesante siempre

condicionada por los requerimientos especiacuteficos a cumplir

Por el lado del modo de desarrollo interpretado la versioacuten de WebUNLP

desarrollada con Titanium logroacute resolver todos los requerimientos previamente

planteados Al igual que en el enfoque hiacutebrido es un punto a destacar que el desarrollo

de la aplicacioacuten con Titanium es relativamente simple y es posible reutilizar todo el

Capiacutetulo 4 Experimentacioacuten

60

coacutedigo entre plataformas Lo que lo hace la eleccioacuten prima facie es el hecho de obtener

interfaces totalmente nativas algo que no se lograba mediante el enfoque hiacutebrido

Por uacuteltimo las versiones de WebUNLP generadas con el enfoque de compilacioacuten

cruzada con Xamarin y Delphi lograron cumplir los requerimientos planteados Se

destaca el hecho de que se genera interfaces totalmente nativas pero considero que el

costo es muy alto se debe disentildear las interfaces para cada plataforma de manera

independiente lo que hace que no se pueda reutilizar todo el coacutedigo fuente de la

aplicacioacuten

42 Enfoques de desarrollo Anaacutelisis comparativo de rendimiento 421 Descripcioacuten del Problema

Hace apenas unas deacutecadas atraacutes el uso de los sistemas de software estaba

restringido a un grupo reducido de usuarios especializados Aquella eacutepoca contrasta

fuertemente con la actualidad en la que los smartphones pequentildeas computadoras moacuteviles

de propoacutesito general se han vuelto cotidianos y omnipresentes Estos dispositivos pueden

utilizarse para llevar a cabo tareas complejas y criacuteticas requiriendo la mejora continua de

las capacidades de coacutemputo la disponibilidad el rendimiento eficiente entre otras

necesidades La evolucioacuten vertiginosa de esta tecnologiacutea ejerce presioacuten en la adaptacioacuten

de la Ingenieriacutea de Software

Respecto del desarrollo para dispositivos moacuteviles se debe considerar una serie de

caracteriacutesticas propias de esta actividad que no estaban presentes en el desarrollo

tradicional de software [59] Es necesario tener en cuenta sobre queacute tipo de dispositivos

se debe ejecutar la aplicacioacuten a construir La diversidad de plataformas lenguajes de

programacioacuten herramientas de desarrollo estaacutendares protocolos y tecnologiacuteas de red

algunas limitaciones de ciertos dispositivos y las exigencias de tiempo del mercado entre

otros constituyen algunos de los problemas a tratar

En la mayoriacutea de los casos el eacutexito de un producto de software para dispositivos

moacuteviles estaraacute condicionado por el nivel de popularidad que logre alcanzar Para

maximizar su presencia en el mercado es necesario que la aplicacioacuten pueda ejecutarse

sobre la mayor cantidad de plataformas moacuteviles existentes especialmente sobre las dos

maacutes populares Android e iOS [60] Para lograr este objetivo existen dos alternativas

Capiacutetulo 4 Experimentacioacuten

61

i) Desarrollar aplicaciones especiacuteficas para cada plataforma impulsando en

paralelo varios proyectos de desarrollo con las herramientas y lenguajes propios de cada

una de ellas Estas aplicaciones analizadas previamente en este trabajo se denominan

aplicaciones nativas

ii) Generar aplicaciones que puedan ejecutarse en forma directa sobre maacutes de una

plataforma de sistema operativo a partir de un uacutenico proyecto de desarrollo Estas

aplicaciones como ya se ha presentado en este trabajo se denominan aplicaciones

multiplataforma

En los uacuteltimos antildeos se ha incrementado el intereacutes de la comunidad de Ingenieriacutea de

Software por el estudio del desarrollo de aplicaciones multiplataforma para dispositivos

moacuteviles

En [5] se presenta un anaacutelisis comparativo de enfoques de desarrollo de aplicaciones

multiplataforma para dispositivos moacuteviles proponiendo la siguiente taxonomiacutea

aplicaciones web moacuteviles aplicaciones hiacutebridas aplicaciones interpretadas y

aplicaciones generadas por compilacioacuten cruzada

En [7] y [8] se analizan aspectos generales de frameworks de desarrollo

multiplataforma para dispositivos moacuteviles

En [61] se comparan aspectos no funcionales para los diferentes enfoques de

desarrollo de aplicaciones multiplataforma para dispositivos moacuteviles

En [9] se analizaron ventajas y desventajas de los enfoques de desarrollo

multiplataforma mencionados desde el punto de vista del Ingeniero de Software

La eleccioacuten del modo de desarrollo de aplicaciones para dispositivos moacuteviles

depende de varios factores Uno de ellos en muchos casos esencial es el tiempo de

ejecucioacuten El intereacutes por optimizar el tiempo de ejecucioacuten de una aplicacioacuten de software

es intriacutenseco a la disciplina informaacutetica Esto se evidencia entre otras cosas por la

evolucioacuten del poder de coacutemputo de los procesadores Ademaacutes el rendimiento eficiente

es uno de los atributos que las aplicaciones de software deben satisfacer seguacuten diversos

estaacutendares de calidad entre otros ISOIEC 9126 e ISOIEC 25010 [62]

En lo que respecta al desarrollo de aplicaciones para dispositivos moacuteviles es

oportuno considerar el tiempo de ejecucioacuten de las aplicaciones por diversos motivos

El tiempo de ejecucioacuten de una aplicacioacuten estaacute fuertemente ligado al consumo de

Capiacutetulo 4 Experimentacioacuten

62

energiacutea [63] el cual estaacute limitado por la capacidad de la bateriacutea de los dispositivos

Asimismo el rendimiento de las aplicaciones se ve reflejado principalmente

mediante las calificaciones de los usuarios en las tiendas de aplicaciones en liacutenea

Aplicaciones con bajo rendimiento pueden implicar usuarios disconformes produciendo

publicidad negativa [60] Andre Charland y Brian Leroux identifican al tiempo de

ejecucioacuten como uno de los problemas principales a resolver en el desarrollo de

aplicaciones multiplataforma y afirman que a los usuarios finales les preocupa la calidad

del software y la experiencia de uso [64]

Corral Sillitti y Succi realizaron un anaacutelisis de rendimiento comparativo entre

aplicaciones nativas y aplicaciones hiacutebridas utilizando el framework Phonegap para una

versioacuten del sistema operativo Android [65]

Es importante destacar que no se han encontrado estudios que evaluacuteen y comparen

el rendimiento entre los diversos modos de desarrollo multiplataforma de acuerdo a la

taxonomiacutea propuesta en [5] aplicaciones web moacuteviles aplicaciones hiacutebridas

aplicaciones interpretadas y aplicaciones generadas por compilacioacuten cruzada Esta

taxonomiacutea es la que se utiliza de referencia en este trabajo

El presente apartado realiza un anaacutelisis comparativo de rendimiento de aplicaciones

para dispositivos moacuteviles generadas por el enfoque de desarrollo nativo y los distintos

enfoques de desarrollo multiplataforma seguacuten [5]

En la seccioacuten siguiente se describe el experimento utilizado para evaluar tiempos

de ejecucioacuten en aplicaciones nativas y en los diversos modos de desarrollo de aplicaciones

moacuteviles multiplataforma y en las secciones posteriores se muestran y analizan los

resultados obtenidos se presentan las conclusiones y el trabajo futuro

422 Desarrollo

4221 Disentildeo de las pruebas

Todas las pruebas cuyos resultados se presentan en este trabajo fueron realizadas

sobre dispositivos moacuteviles con sistemas operativos Android e iOS dado que en la

actualidad abarcan gran parte del mercado mundial de acuerdo a lo indicado en [60]

Para llevar a cabo la experimentacioacuten se seleccionaron los frameworks de desarrollo

multiplataforma seguacuten las alternativas presentadas en [10] Se disentildearon pruebas para

evaluar el rendimiento de Apache Cordova [28] Appcelerator Titanium [35] y Xamarin

Capiacutetulo 4 Experimentacioacuten

63

[41] que se corresponden con los modos de desarrollo hiacutebrido interpretado y compilacioacuten

cruzada respectivamente Tambieacuten se experimentoacute con otros dos frameworks de

desarrollo multiplataforma que recientemente han ganado popularidad NativeScript

(desarrollo interpretado) y Corona (compilacioacuten cruzada) Finalmente se incluyeron al

conjunto de pruebas las aplicaciones web y el enfoque nativo de desarrollo para Android

e iOS De este modo se logroacute una muestra razonablemente representativa de las diversas

opciones existentes en la actualidad

Para la realizacioacuten de las pruebas se utilizaron seis dispositivos moacuteviles distintos

(ver Tabla 2) tres de ellos con sistema operativo Android identificados como DA1 DA2 y

DA3 (dos smartphone y una tablet) y tres con sistema operativo iOS identificados como

DI1 DI2 y DI3 (dos smartphone y una tablet)

ID Sistema Operativo Caracteriacutesticas

DA1 Android 44

Tipo Smartphone Marca Motorola

Modelo Moto-G2 Procesador Quad-core 12 GHz Cortex-A7

RAM 1GB Snapdragon 400

DA2 Android 502

Tipo Smartphone Marca Samsung

Modelo S6 Procesador Octa-core (4x21 GHz Cortex-A57 amp 4x15

GHz Cortex-A53) RAM 3GB Exynos 7420 Octa

DA3 Android 422

Tipo Tablet Marca Samsung Modelo Tab 2

Procesador Dual-core 10 GHz RAM 1GB TI OMAP 4430

DI1 iOS 92

Tipo Smartphone Marca Apple Modelo 5S

Procesador Dual-core 13 GHz Cyclone (ARM v8-based)

RAM 1GB Apple A7

DI2 iOS 91

Tipo Smartphone Marca Apple

Modelo 6 plus Procesador Dual-core 14 GHz Typhoon (ARM v8-

based) RAM 1GB Apple A8

DI3 iOS 91 Tipo Tablet

Marca Apple Modelo Ipad Air

Capiacutetulo 4 Experimentacioacuten

64

Procesador Dual-core 13 GHz Cyclone (ARM v8-based)

RAM 1GB Apple A7 Tabla 2 Dispositivos moacuteviles utilizados en el experimento

Se definieron siete escenarios de anaacutelisis distintos uno por cada estrategia de

desarrollo utilizada

1 Nativo para Android y nativo para iOS 2 Aplicaciones web (multiplataforma) 3 Apache Cordova (multiplataforma hibrido) 4 Appcelerator Titanium (multiplataforma interpretado) 5 NativeScript (multiplataforma interpretado) 6 Xamarin (multiplataforma compilacioacuten cruzada) 7 Corona (multiplataforma compilacioacuten cruzada)

En los seis dispositivos se llevaron a cabo pruebas para cada uno de los siete

escenarios mencionados definiendo asiacute un total de 42 casos de prueba

Con el fin de evaluar la velocidad de procesamiento se planteoacute un caacutelculo simple

que incluyoacute varias iteraciones funciones matemaacuteticas y aritmeacutetica de punto flotante que

se resume en la siguiente serie

119904119890119903119894119890 =sum sum (log2(119896) +3119896

2119895+ radic119896

100000

119896=1

+ 119896119895minus1)

5

119895=1

A modo de ejemplo en la Figura 25 se muestra el coacutedigo multiplataforma

desarrollado en Apache Cordova para el caacutelculo de la serie definida

El experimento planteado permite medir con precisioacuten la variable analizada en este

caso el tiempo de ejecucioacuten requerido para realizar un caacutelculo matemaacutetico intensivo

Este tipo de caacutelculo matemaacutetico es frecuente en diversas aplicaciones que se

ejecutan en dispositivos moacuteviles por ejemplo juegos aplicaciones con realidad

aumentada aplicaciones para tratamiento de imaacutegenes entre otras en las cuales no

siempre es posible utilizar el poder de la Unidad de Procesamiento Grafico (GPU) para

el caacutelculo

El coacutedigo fuente de los experimentos llevados a cabo se encuentra disponible en

[66]

En las siguientes secciones se describe la experimentacioacuten y se analizan los

resultados obtenidos

Capiacutetulo 4 Experimentacioacuten

65

4222 Recoleccioacuten de datos

Para cada uno de los 42 casos de prueba definidos se realizaron 30 ejecuciones

independientes del experimento disentildeado obteniendo en cada caso una muestra T = T1

T2 hellip T30 con Ti = tiempo requerido para el caacutelculo de la serie en la i-eacutesima ejecucioacuten

del experimento planteado El tiempo Ti se expresa en milisegundos

Para caracterizar cada una de las muestras obtenidas se han calculado los

estadiacutesticos y S que se corresponden con la media (o promedio muestral) y la

desviacioacuten estaacutendar muestral (ver Tabla 3)

var startTime = new Date()getTime()

var serie = 0

for ( var j=1 j lt= 5 j++ )

for ( var k=1 k lt= 100000 k++ )

series = series + (Mathlog(k)MathLN2) + (3k2j) +

Mathsqrt(k) + Mathpow(k j-1)

var finalTime = new Date()getTime()

var duration = finalTime - startTime

documentgetElementById(result)innerHTML = duration + -gt + series

Figura 25 Caacutelculo de serie coacutedigo multiplataforma desarrollado en Apache Cordova

Capiacutetulo 4 Experimentacioacuten

66

Dada la muestra T=T1 T2 hellip Tn

Media o promedio muestral = (

1

119899)sum119879119894

119899

119894=1

Desviacioacuten estaacutendar muestral 119878 = radic

1

119899 minus 1sum(119879119894 minus )2119899

119894=1

Tabla 3 Estadiacutesticos utilizados en el anaacutelisis de los datos

423 Resultados Obtenidos En la Tabla 4 se presenta una siacutentesis de los resultados obtenidos conformada por

los valores y S calculados para cada caso de prueba planteado Estos valores permiten

comparar el rendimiento de las aplicaciones generadas a partir de los distintos enfoques

de desarrollo evaluadas sobre cada uno de los seis dispositivos utilizados

Los valores presentados en la Tabla 4 y graficados con diagramas de barras en la

Figura 26 sugieren un anaacutelisis por separado de los casos con sistema operativo Android

y los casos con sistema operativo iOS Claramente las siluetas delineadas en los

diagramas de barras de la Figura 26 se repiten de forma similar en los escenarios con el

mismo sistema operativo pero se diferencian notablemente entre distintos sistemas

operativos

Nativo WebApp Apache Cordova Titanium NativeScript Xamarin Corona

DA1 53293 18627 23033 21167 18730 39517 140173

S 1614 632 1422 2495 939 895 1260

DA2 21180 9067 8577 9563 8967 21100 60053

S 1997 1248 883 764 916 669 595

DA3 76380 17273 19060 19270 18350 37933 134430

S 2898 1551 936 1680 304 831 2339

DI1 413 5710 32373 29977 25203 12543 3963

S 078 1655 1662 401 728 1103 085

DI2 413 4190 26397 24113 22343 10303 9863

S 073 538 1544 495 861 491 613

DI3 253 4167 29223 27267 22597 11053 10967

S 057 444 1082 550 277 390 275

Tabla 4 Siacutentesis de resultados obtenidos

Capiacutetulo 4 Experimentacioacuten

67

Figura 26 Diagrama de barras con las muestras recolectadas (las barras muestran el tiempo promedio expresado en milisegundos)

Capiacutetulo 4 Experimentacioacuten

68

424 Anaacutelisis de Resultados Debido a las diferencias de hardware de los dispositivos utilizados no es prudente

comparar el rendimiento de las aplicaciones nativas en Android con respecto a las de

iOS No obstante de los resultados obtenidos es posible inferir que el enfoque nativo en

iOS resulta mucho maacutes eficiente que el enfoque nativo en Android Existen diversos

factores que presumen justificar este hecho entre ellos la diferencia inherente de ejecutar

coacutedigo Objective C en iOS comparado con ejecutar coacutedigo Java en Android el cual

necesita del Android Runtime (ART) para su funcionamiento ralentizaacutendolo

Respecto de las aplicaciones web multiplataforma los resultados de rendimiento

resaltaron positivamente en relacioacuten al resto tanto en Android como en iOS Asiacute el

enfoque de desarrollo multiplataforma web seriacutea una opcioacuten conveniente para alcanzar

un buen rendimiento en todos los dispositivos moacuteviles independientemente de su sistema

operativo Sin embargo esta eleccioacuten podriacutea verse afectada por las limitaciones de estas

aplicaciones para acceder en forma completa a las capacidades especiacuteficas del dispositivo

Respecto de los enfoques hiacutebrido e interpretado -analizados a traveacutes de las

tecnologiacuteas Coacuterdova Titanium y NativeScript- es importante destacar que si bien estos

enfoques trabajan de modo distinto entre siacute tienen algo en comuacuten la ejecucioacuten de coacutedigo

JavaScript En este sentido el motor de JavaScript -encargado de convertir el coacutedigo

JavaScript en coacutedigo optimizado para que luego lo interprete un WebView- cumple un

rol determinante Las pruebas de estos enfoques en Android -que utiliza el motor de

JavaScript V8- tuvieron un comportamiento similar al enfoque web y comportamiento

superior que el enfoque nativo y el enfoque de compilacioacuten cruzada Por el contrario en

los dispositivos moacuteviles con iOS -que utiliza el motor JavaScriptCore- los resultados de

estas pruebas fueron peores que en los enfoques nativos web y de compilacioacuten cruzada

En los dispositivos moacuteviles con iOS los casos de compilacioacuten cruzada -analizados

a traveacutes de las tecnologiacuteas Xamarin y Corona- obtuvieron mejores resultados que los

casos hiacutebridos e interpretados pero mostraron peor rendimiento que el enfoque nativo y

que el enfoque web En cambio en los dispositivos moacuteviles con Android los resultados

de las pruebas con las aplicaciones construidas mediante el enfoque de compilacioacuten

cruzada fueron los peores La necesidad de ejecucioacuten de coacutedigo Java a traveacutes del Android

Runtime entre otros factores justifican este resultado

Capiacutetulo 4 Experimentacioacuten

69

425 Conclusiones Se ha presentado un estudio comparativo sobre el tiempo de procesamiento de

aplicaciones de software para dispositivos moacuteviles generadas con distintos enfoques de

desarrollo

Los escenarios de prueba disentildeados incluyeron los dos sistemas operativos para

dispositivos moacuteviles con mayor presencia en el mercado Android e iOS ejecutaacutendose

cada uno de ellos sobre dos smartphones (considerados de gama media y gama alta al

momento en que este trabajo fue escrito) y una Tablet

Sobre estos seis dispositivos se realizoacute un estudio de rendimiento para las

aplicaciones construidas seguacuten los enfoques de desarrollo nativos y multiplataforma

mediante un conjunto de aplicaciones que fueron desarrolladas para tal fin

1 Aplicacioacuten nativa para Android 2 Aplicacioacuten nativa para iOS 3 Aplicacioacuten web (multiplataforma) 4 Aplicacioacuten Apache Cordova (multiplataforma hibrido) 5 Aplicacioacuten Appcelerator Titanium 6 (multiplataforma interpretado) 7 Aplicacioacuten NativeScript (multiplataforma interpretada) 8 Aplicacioacuten Xamarin (multiplataforma compilacioacuten cruzada) 9 Aplicacioacuten Corona (multiplataforma compilacioacuten cruzada)

En todos los dispositivos con sistema operativo Android el peor rendimiento fue

evidenciado por Corona seguido por el enfoque nativo y Xamarin Esta situacioacuten es

totalmente opuesta a los resultados obtenidos sobre el sistema operativo iOS en doacutende las

tecnologiacuteas de desarrollo mencionadas se mostraron siempre entre las cuatro mejores En

particular es destacable la supremaciacutea del enfoque nativo frente a todos los demaacutes para el

caso de los dispositivos con iOS

Respecto al mejor rendimiento en los dispositivos Android no es posible identificar

claramente cuaacutel es el enfoque maacutes conveniente Tanto las aplicaciones web como

Coacuterdova NativeScript y Titanium alcanzaron buenos resultados en relacioacuten al resto

Nuevamente esta situacioacuten se contrapone con los datos obtenidos sobre los dispositivos

iOS en los que Coacuterdova Titanium y NativeScript obtuvieron las peores mediciones entre

las tecnologiacuteas utilizadas No ocurrioacute lo mismo con las aplicaciones web en iOS que

tambieacuten produjeron buenos resultados en relacioacuten al resto

Capiacutetulo 4 Experimentacioacuten

70

En liacuteneas generales independientemente del sistema operativo las aplicaciones

web han mostrado un buen rendimiento si se consideran todos los casos analizados

Actualmente al desarrollar un sistema de software existe la posibilidad de generar

su versioacuten para dispositivos moacuteviles Esta tarea muchas veces no es simple y una de las

decisiones maacutes importantes a tomar es elegir el enfoque de desarrollo

A partir de este trabajo se dispone de un indicador de rendimiento que puede ser

uacutetil para el Ingeniero de Software que debe seleccionar un enfoque de desarrollo de

software para dispositivos moacuteviles

Por otra parte no se han encontrado trabajos de otros autores donde se haya

analizado el rendimiento en todos los enfoques de desarrollo de software para dispositivos

moacuteviles Este tema tal como se indicoacute en la introduccioacuten es importante para la

comunidad de Ingenieriacutea de Software y los trabajos analizados hasta el momento se han

concentrado solo en los enfoques nativos yo hiacutebridos

43 Anaacutelisis comparativo de enfoques de Desarrollo de Aplicaciones Moacuteviles

Como se estudioacute en las secciones anteriores existen diferentes enfoques de

desarrollo de aplicaciones moacuteviles

Una opcioacuten es desarrollar aplicaciones moacuteviles nativas las cuales hacen uso de

todas las capacidades del dispositivo moacutevil y permiten una alta experiencia de usuario

debido a que las interfaces de usuario se componen por componentes nativos resultando

semejantes al resto de las interfaces del sistema operativo No obstante el desarrollo no

puede ser reutilizado para dar soporte a otras familias de sistemas operativos implicando

mayores costos de desarrollo y mantenimiento

En contraposicioacuten al desarrollo nativo surgioacute el desarrollo multiplataforma dando

la posibilidad de desarrollar un uacutenico producto y ejecutarlo en diferentes plataformas En

este sentido se estudiaron diferentes enfoques desarrollo web moacutevil hiacutebrido

interpretado y generado por compilacioacuten cruzada Cada uno de estos enfoques cuenta con

ciertas caracteriacutesticas que naturalmente los hacen diferenciar con ventajas y

desventajas

Se identificaron diversos factores que pueden ser utilizados para analizar las

Capiacutetulo 4 Experimentacioacuten

71

aplicaciones que se generan mediante los enfoques de desarrollo nativo y

multiplataforma los cuales se detallan a continuacioacuten

Experiencia de usuario conjunto de factores y elementos que hacen referencia

al nivel de satisfaccioacuten total de los usuarios cuando utilizan un producto o sistema

El resultado es la generacioacuten de una percepcioacuten positiva o negativa de dicho

servicio producto o dispositivo

Plataformas alcanzadas se ha visto en capiacutetulos anteriores que existen distintas

familias de sistemas operativos Seguacuten el modo de desarrollo elegido se puede

desarrollar aplicaciones para una plataforma especiacutefica o por varias

Costo del desarrollo el desarrollo puede ser maacutes o menos costoso seguacuten si

requiere codificar las soluciones de forma especiacutefica para cada sistema operativo

o si es posible la reutilizacioacuten de coacutedigo

Costo del mantenimiento la correccioacuten de errores o agregados de nuevas

funcionalidades puede requerir codificar de forma especiacutefica para cada sistema

operativo Ademaacutes se debe tener en cuenta si deben convivir diferentes versiones

del mismo producto

Entorno de desarrollo integrado Software que asiste al programador en la

construccioacuten de aplicaciones

Interfaces de usuario factor que analiza los tipos de componentes utilizados para

construir las interfaces de usuario Como se mencionoacute al analizar los distintos

enfoques de desarrollo la eleccioacuten de la herramienta a utilizar incide en si las

interfaces estaraacuten compuestas mediante componentes nativos o componentes web

los cuales pueden ser decorados para simular componentes nativos

Acceso total al dispositivo posibilidad de acceder mediante las herramientas de

desarrollo a todas las capacidades del dispositivo como la caacutemara sensores entre

otros

Modo de instalacioacuten se refiere a si la aplicacioacuten puede ser instalada desde las

tiendas de aplicaciones o es accesible sin instalacioacuten desde un navegador de

Internet

Rendimiento factor que analiza la ejecucioacuten de tareas y los tiempos asociados

Capiacutetulo 4 Experimentacioacuten

72

en su resolucioacuten

Uso offline capacidad que tiene la aplicacioacuten de funcionar sin estar conectada a

internet

Distribucioacuten a traveacutes de las tiendas posibilidad de descargar la aplicacioacuten desde

las tiendas de aplicaciones

Categoriacuteas de aplicaciones a desarrollar tipo de aplicacioacuten que se desea

desarrollar

Porcentaje de coacutedigo a reutilizar Cantidad de liacuteneas de coacutedigo con respecto al

total que pueden ser reutilizadas para en la generacioacuten de aplicaciones

multiplataforma

Con el objetivo de estudiar coacutemo se comportan e inciden estos factores en los

distintos enfoques de desarrollo se realizoacute un estudio comparativo de los diferentes

criterios a tener en cuenta Dicho estudio se sintetiza en la Tabla 5

Capiacutetulo 4 Experimentacioacuten

73

Factor a analizar Desarrollo Nativo Desarrollo Web Desarrollo Hiacutebrido Desarrollo

Interpretado

Desarrollo Generado

por Compilacioacuten

Cruzada

Experiencia de Usuario

Alta Muy Baja Baja Alta Alta

Plataformas alcanzadas

Se desarrolla

exclusivamente

para una

plataforma destino

Cualquier

plataforma Se

necesita solo un

navegador y acceso a

internet

Es posible compilar

para Android iOS

Windows Phone

Es posible compilar

para Android iOS

Windows Phone

Es posible compilar

para Android iOS

Windows Phone

Costo del desarrollo

Muy Alto Muy Bajo Bajo Medio Medio a Alto

Costo del mantenimiento

Muy Alto Muy Bajo Medio Alto Alto a Muy Alto

Entorno de desarrollo integrado

IDE uacutenico por SO Muacuteltiples opciones Plugins para IDE

geneacutericos

Algunos frameworks

disponen de IDE

especiacutefico

IDE uacutenico por

framework

Interfaces de usuario

Nativas Web Web Nativas Nativas

Acceso total al dispositivo

Si No Si Si Si

Modo de instalacioacuten

Descargar desde la Sin instalaciones Descargar desde la Descargar desde la Descargar desde la

Capiacutetulo 4 Experimentacioacuten

74

Factor a analizar Desarrollo Nativo Desarrollo Web Desarrollo Hiacutebrido Desarrollo

Interpretado

Desarrollo Generado

por Compilacioacuten

Cruzada

tienda de

aplicaciones e

instalar

tienda de aplicaciones

e instalar

tienda de aplicaciones e

instalar

tienda de aplicaciones e

instalar

Rendimiento Muy Alto Muy Bajo Bajo a Medio Alto Medio a Alto

Uso offline Si No Si Si Si

Distribucioacuten a traveacutes de las tiendas

Si No Si Si Si

Categoriacutea de aplicaciones a desarrollar

Aplicaciones que

demandan muchos

recursos o que

requiere una alta

experiencia de

usuario

Sitios web existentes Sitios web

encapsulados como

aplicacioacuten para ser

distribuidas a traveacutes

de tiendas

Aplicaciones simples a

complejas

Aplicaciones simples a

complejas

Porcentaje de Coacutedigo a reutilizar

0 100 Cerca del 100 Cerca del 90 Entre el 60 y 85

Tabla 5 Anaacutelisis comparativo de enfoques de desarrollo de aplicaciones moacuteviles

Capiacutetulo 5 Conclusiones

75

Capiacutetulo 5 Conclusiones

Inicialmente los dispositivos moacuteviles fueron pensados y disentildeados con un propoacutesito

particular A traveacutes de los antildeos el crecimiento tecnoloacutegico ha permitido incorporar

funcionalidades adicionales lo que ha posibilitado expandir el marco de uso

Actualmente el poder de coacutemputo subyacente en una gran variedad de dispositivos

moacuteviles ha generado nuevas posibilidades lo que constituye un reto para los ingenieros

de software

Asimismo y tal como se mencionoacute en capiacutetulos anteriores existen diversos

sistemas operativos para dispositivos moacuteviles siendo los maacutes populares Android iOS y

Windows Phone Debido a que el eacutexito de un producto de software estaacute vinculado en

gran parte a su uso masivo surge la necesidad de desarrollar aplicaciones moacuteviles

teniendo en cuenta cada una de estas plataformas

El desarrollo de software para dispositivos moacuteviles tiene caracteriacutesticas propias que

difieren del desarrollo tradicional Esta actividad reciente impensada deacutecadas atraacutes

marca un antes y un despueacutes en la evolucioacuten de la Ingenieriacutea de Software Es de esperar

que dicha evolucioacuten continuacutee y por consiguiente que los enfoques de desarrollo para

dispositivos moacuteviles cambien o sean reemplazados por otros Es claro que por el

momento existen cinco posibilidades de desarrollo de una misma aplicacioacuten moacutevil

Aplicaciones nativas

Aplicaciones web

Aplicaciones hiacutebridas

Aplicaciones interpretadas

Aplicaciones generadas por compilacioacuten cruzada

Para un completo anaacutelisis de cada enfoque de desarrollo es que se disentildearon una

serie de casos de estudio El primero de ellos consistioacute en desarrollar una aplicacioacuten moacutevil

para cada enfoque de desarrollo presentado Teniendo este primer objetivo definido se

decidioacute extender el entorno virtual de ensentildeanza y aprendizaje WebUNLP a traveacutes de

una aplicacioacuten moacutevil enfocada en la cartelera de novedades de los cursos La aplicacioacuten

Capiacutetulo 5 Conclusiones

76

moacutevil debiacutea permitir el ingreso de alumnos y docentes con las mismas credenciales que

las utilizadas en la versioacuten web y debiacutea mostrar informacioacuten sincronizada con la web

sobre las novedades publicadas en las carteleras de los cursos Asimismo cuando los

docentes publiquen novedades aquellos alumnos pertenecientes al curso deben recibir

una notificacioacuten en su dispositivo moacutevil

Luego de desarrollar las aplicaciones moacuteviles para cada enfoque de desarrollo se

pueden elaborar algunas conclusiones

Se destaca la simpleza a la hora de generar la versioacuten web moacutevil pero se observan

limitaciones al no poder acceder a todas las capacidades de hardware del dispositivo

El desarrollo de las aplicaciones nativas resultoacute oacuteptimo si se lo compara con los

requerimientos oportunamente planteados con la desventaja de que las aplicaciones no

son portables implicando desarrollos especiacuteficos para cada plataforma que se desee

cubrir Por otro lado el desarrollo de las aplicaciones hibridas ndashutilizando PhoneGap y

Sencha- lograron conjugar la simpleza del desarrollo web con el uso de todas las

capacidades del dispositivo posicionaacutendolo como una eleccioacuten realmente interesante De

igual manera la aplicacioacuten interpretada desarrollada mediante Titanium logroacute resolver

todos los requerimientos previamente planteados se destaca que el desarrollo fue

relativamente simple y es posible reutilizar todo el coacutedigo entre plataformas El hecho de

obtener interfaces totalmente nativas la posiciona como la alternativa ideal Por uacuteltimo

las aplicaciones generadas con el enfoque de compilacioacuten cruzada (Delphi y Xamarin)

lograron cumplir los requerimientos planteados la obtencioacuten de interfaces totalmente

nativas es algo a destacar pero conlleva un alto costo ya que se debe disentildear las interfaces

para cada plataforma de manera independiente

El segundo experimento del presente trabajo consistioacute en analizar el rendimiento

de las aplicaciones generadas mediante cada enfoque de desarrollo En total se

desarrollaron mediante distintas tecnologiacuteas nueve aplicaciones Las pruebas se

realizaron en los dos sistemas operativos de mayor relevancia Android e iOS a traveacutes de

seis dispositivos (cuatro smartphones y dos tablets)

En todos los dispositivos con sistema operativo Android el peor rendimiento se

encontroacute en la aplicacioacuten generada por Corona seguido por el enfoque nativo y Xamarin

En cambio estas tecnologiacuteas se mostraron siempre entre las cuatro mejores sobre el

sistema operativo iOS

Capiacutetulo 5 Conclusiones

77

Respecto al mejor rendimiento en los dispositivos Android no es posible identificar

claramente cuaacutel es el enfoque maacutes conveniente Tanto las aplicaciones web como

Coacuterdova NativeScript y Titanium obtuvieron buenos resultados de rendimiento en

relacioacuten al resto Nuevamente esta situacioacuten se contrapone con los datos obtenidos sobre

los dispositivos iOS en los que Coacuterdova Titanium y NativeScript obtuvieron las peores

mediciones entre las tecnologiacuteas utilizadas No ocurrioacute lo mismo con las aplicaciones web

en iOS que tambieacuten produjeron buenos resultados en relacioacuten al resto

En liacuteneas generales independientemente del sistema operativo las aplicaciones

web han mostrado un buen rendimiento si se consideran todos los casos analizados

Por uacuteltimo se elaboroacute un anaacutelisis comparativo de las caracteriacutesticas inherentes a

cada enfoque de desarrollo Se identificaron ciertos factores de intereacutes que la comunidad

de ingenieriacutea de software considera al elegir queacute tecnologiacutea utilizar y se analizoacute su

impacto en cada enfoque de desarrollo

Capiacutetulo 6 Trabajo Futuro

78

Capiacutetulo 6 Trabajo Futuro

Si bien se estudiaron en el presente trabajo diversas tecnologiacuteas para el desarrollo

de aplicaciones moacuteviles se planea profundizar el estudio analizando otras herramientas

multiplataforma disponibles en el mercado como Ionic [32] NativeScript [38] Applause

[40] React Native [67] entre otras

Ademaacutes se plantea como liacutenea de trabajo futuro ampliar el anaacutelisis comparativo de

rendimiento incluyendo otros aspectos del desarrollo para dispositivos moacuteviles como

por ejemplo el acceso a disco el consumo de bateriacutea y el tiempo de renderizacioacuten de

imaacutegenes

Por uacuteltimo es deseable estudiar la experiencia de usuario en las aplicaciones

generadas por cada enfoque de desarrollo de aplicaciones para dispositivos moacuteviles

Capiacutetulo 6 Trabajo Futuro

79

Bibliografiacutea

80

Bibliografiacutea

[1] A Talukder H Ahmed and R Yavagal Mobile Computing Technology Applications and Service Creation Tata McGraw-Hill Ed 2010

[2] Abrahamsson P et al Mobile-D An Agile Approach for Mobile Application Development in In Companion To the 19th Annual ACM SIGPLAN Conference on Object-Oriented Programming Systems Languages and Applications (OOPSLA 04 ) Vancouver Canada 2004 pp 174-175

[3] P Abrahamsson Mobile software development - the business opportunity of today in Proceedings of the International Conference on Software Development Reykjavik 2005

[4] I S Hayes Just Enough Wireless Computing Prentice Hall Professional Technical 2002

[5] Stelios Xinogalos Spyros Xanthopoulos A Comparative Analysis of Cross-platform Development Approaches for Mobile Applications in Proceedings of the 6th Balkan Conference in Informatics Thessaloniki Greece 2013 pp 213-220

[6] Tolety SB Raj R A study on approaches to build cross-platform mobile applications and criteria to select appropriate approach in India Conference (INDICON) 2012 Annual IEEE India 2012

[7] Yonathan Aklilu Redda Cross platform Mobile Applications Development in Master in Information Systems Norwegian University of Science and Technology Norway 2012

[8] Datta SK Bonnet C Nikaein N Dalmasso I Survey comparison and evaluation of cross platform mobile application development tools in Wireless Communications and Mobile Computing Conference (IWCMC) Cagliari Sardinia Italia 2013

[9] Lisandro Deliacutea Nicolaacutes Galdaacutemez Pablo Thomas and Patricia Pesado An Experimental Analysis of Application Types for Mobile Devices in Computer Science amp Technology Series - XIX Argentine Congress of Computer Science - Selected Papers Editorial de la Universidad de La Plata 2014 pp 173 -183

[10] Lisandro Deliacutea Nicolaacutes Galdamez Pablo Thomas Leonardo Corbalaacuten and Patricia Pesado Multi-Platform Mobile Application Development Analysis in IEEE Ninth International Conference on Research Challenges in Information Science - IEEE RCIS Atenas Grecia May 2015

[11] Telam [Online] httpwwwtelamcomarnotas201504102073-telefonia-movil-lineas-activashtml

Bibliografiacutea

81

[12] RTVE [Online] httpwwwrtveesnoticias20110212evolucion-del-telefono-movil-del-zapatofono-smartphones404523shtml

[13] Vodafone [Online] httpblogvodafonecouk20130829vodafone-uks-ceo-guy-laurence-4g-finally-has-a-purpose

[14] Muy Canal [Online] httpwwwmuycanalcom20140131futuro-del-telefono-movil

[15] Statcounter [Online] httpgsstatcountercom

[16] Anthony I Wasserman Software Engineering Issues for Mobile Application Development 2010

[17] Statista [Online] httpwwwstatistacom

[18] Lisandro Deliacutea Nicolaacutes Galdamez Pablo Thomas Leonardo Corbalaacuten and Patricia Pesado Anaacutelisis Experimental de desarrollo de Aplicaciones Moacuteviles Multiplataforma in XX Congreso Argentino de Ciencias de la Computacioacuten CACIC 2014 San Justo Argentina octubre 2014

[19] Lisandro Deliacutea Nicolaacutes Galdamez Pablo Thomas and Patricia Pesado Un Anaacutelisis Experimental de Tipo de Aplicaciones para Dispositivos Moacuteviles in XIX Congreso Argentino de Ciencias de la Computacioacuten CACIC 2013 Mar del Plata Argentina 2013

[20] Abhinay Puvvala Amitava Dutta Rahul Roy and Priya Seetharaman Mobile Application Developersrsquo Platform Choice Model in 2016 49th Hawaii International Conference on System Sciences (HICSS) Koloa Hawaii 2016

[21] Android Dashboard [Online] httpsdeveloperandroidcomaboutdashboardsindexhtml

[22] Xcode [Online] httpsdeveloperapplecomxcode

[23] KW Tracy Mobile Application Development Experiences on Applersquos iOS and

Android OS Potentials IEEE vol 31 no 4 July-Aug 2012

[24] Google Recommendations for building smartphone-optimized websites [Online] httpgooglewebmastercentralblogspotcomar

[25] Bootstrap [Online] httpgetbootstrapcom

[26] Foundation [Online] httpfoundationzurbcom

[27] PhoneGap [Online] httpphonegapcom

[28] Apache Cordova [Online] httpscordovaapacheorg

Bibliografiacutea

82

[29] Adobe PhoneGap Build [Online] httpsbuildphonegapcom

[30] CocoonJS [Online] httpscocoonio

[31] Ludei [Online] httpswwwludeicom

[32] Ionic [Online] httpionicframeworkcom

[33] Sencha [Online] httpswwwsenchacomproductstouchoverview

[34] A Kosmaczewski Sencha Touch 2 Up and Running OrsquoReilly 2013

[35] Appcelerator Titanium [Online] httpwwwappceleratorcomproduct

[36] Backbone [Online] httpbackbonejsorg

[37] Underscorejs [Online] httpunderscorejsorg

[38] NativeScript [Online] httpswwwnativescriptorg

[39] TypeScript [Online] httpswwwtypescriptlangorg

[40] applause [Online] httpwwwapplausecom

[41] Xamarin [Online] wwwxamarincom

[42] Delphi [Online] httpswwwembarcaderocomproductsdelphi

[43] RubyMotion [Online] httpwwwrubymotioncom

[44] Xtext [Online] httpwwweclipseorgXtext

[45] Mono [Online] httpwwwmono-projectcom

[46] [Online] httpswebunlpeadunlpeduar

[47] I Salmre Writing Mobile Code Essential Software Engineering for Building Mobile Applications Addison Wesley Professional 2005

[48] Mapbox [Online] httpswwwmapboxcomlabstwitter-gnipbrands

[49] Ruby S Richardson L RESTful Web Services OrsquoReilly Media 2007

[50] Matthew J Hamm Wireframing Essentials Packt Publishing 2014

[51] GCM [Online] httpsdevelopersgooglecomcloud-messaging

[52] iOS Human Interface Guidelines [Online] httpsdeveloperapplecomioshuman-interface-guidelinesoverviewdesign-principles

[53] APN [Online] httpdeveloperapplecomlibrarymacdocumentationNetworkingInternetConceptual

Bibliografiacutea

83

RemoteNotificationsPGChaptersApplePushServicehtmlapple_refdocuidTP40008194-CH100-SW9

[54] Mark Norm Norman Francis Christian Heilmann Web Development Solutions Ajax APIs Libraries and Hosted Services Made Easy Apress 2007

[55] JqueryMobile [Online] httpsjquerymobilecom

[56] Pushwoosh [Online] httpsgithubcomPushwooshpushwoosh-phonegap-plugin

[57] J Clark Creating Mobile Apps with Sencha Touch 2 Packt Publishing 2013

[58] Kinvey [Online] httpwwwkinveycom

[59] Ali Mesbah Philippe Kruchten Mona Erfani Joorabchi Real Challenges in Mobile App Development in ACM IEEE International Symposium on Empirical Software Engineering and Measurement Baltimore Maryland US 2013

[60] Andreacute Nitze Andreas Schmietendorf Florian Roumlsler Towards a Mobile Application Performance Benchmark in ICIW 2014 The Ninth International Conference on Internet and Web Applications and Services Paris France 2014

[61] Sebastian Hanschke and Tim A Majchrzak Henning Heitkoumltter Comparing Cross Platform Development approaches For Mobile Applications in 8th International Conference on Web Information Systems and Technologies (WEBIST) Porto Portugal 2012

[62] HW Kim SG Chung CS Jung Measuring Software Quality A Survey of ISOIEC 9126 IEEE Software vol 21 no 5 pp 88 ndash 92 SeptemberOctober 2004

[63] Luis Corral Anton B Georgiev Alberto Sillitti and Giancarlo Succi Can execution time describe accurately the energy consumption of mobile apps An experiment in Android GREENS 2014 Proceedings of the 3rd International Workshop on Green and Sustainable Software pp 31-37 June 2014

[64] Brian Leroux Andre Charland Mobile application development web vs native Magazine Communications of the ACM vol 54 no 5 pp 49-53 May 2011

[65] Luis Corral Alberto Sillitti and Giancarlo Succi Mobile multiplatform development An experiment for performance analysis in The 9th International Conference on Mobile Web Information Systems (MobiWIS) Ontario Canada 2012

[66] Repositorio Git III-LIDI [Online] httpsgitlabcomiii-lidiperformance-assessment-multiplatform-mobile-applicationstreemaster

[67] React Native [Online] httpsfacebookgithubioreact-native

[68] Lisandro Galdaacutemez Nicolaacutes Corbalaacuten Leonardo Thomas Pablo Pesado Patricia Deliacutea Un anaacutelisis comparativo de rendimiento en aplicaciones moacuteviles

Bibliografiacutea

84

multiplataforma in XXI Congreso Argentino de Ciencias de la Computacioacuten Juniacuten 2015

Page 6: Desarrollo de Aplicaciones Móviles Multiplataforma

6

Objetivo

Existen diversos enfoques para desarrollar aplicaciones moacuteviles multiplataforma

A partir de ello el objetivo de este trabajo final consiste en elaborar un anaacutelisis

comparativo sobre los enfoques predominantes y realizar experimentos con el desarrollo

de aplicaciones moacuteviles especiacuteficas para cada elemento analizado

Los objetivos especiacuteficos de este trabajo son

a) Realizar un anaacutelisis comparativo entre los enfoques de desarrollo de aplicaciones

moacuteviles multiplataforma

b) Llevar a cabo el desarrollo de una aplicacioacuten moacutevil concreta en cada enfoque de

desarrollo multiplataforma Analizar ventajas y desventajas de los enfoques seguacuten

el experimento

c) Analizar la performance de las aplicaciones que se generan con cada enfoque de

desarrollo multiplataforma

d) Estudiar los impactos que se producen en el proceso de desarrollo de software

seguacuten el enfoque a utilizar

Prefacio

7

Prefacio

La computacioacuten moacutevil se puede definir como un entorno de coacutemputo con movilidad

fiacutesica El usuario de un entorno de computacioacuten moacutevil seraacute capaz de acceder a datos

informacioacuten u otros objetos loacutegicos desde cualquier dispositivo en cualquier red mientras

estaacute en movimiento [1]

Estos dispositivos tienen caracteriacutesticas fiacutesicas distintivas entre las cuales se

destacan su tamantildeo peso tamantildeo de pantalla su mecanismo de ingreso de datos y su

capacidad de expansioacuten Ademaacutes tienen un rol esencial los aspectos teacutecnicos incluyendo

el poder de procesamiento espacio de memoria autonomiacutea de bateriacutea sistema operativo

entre otros

El desarrollo de software para dispositivos moacuteviles plantea nuevos desafiacuteos

originados en las caracteriacutesticas uacutenicas de esta actividad La necesidad de tratar con

diversas plataformas estaacutendares protocolos y tecnologiacuteas de red las capacidades

limitadas aunque en continua evolucioacuten de los dispositivos y las exigencias de tiempo

del mercado son soacutelo algunos de los problemas a tratar [2]

Las aplicaciones moacuteviles son generadas en un entorno dinaacutemico e incierto

Generalmente son pequentildeas no criacuteticas aunque no menos importantes Estaacuten destinadas

a un gran nuacutemero de usuarios finales y son liberadas en versiones raacutepidas para poder

satisfacer las demandas del mercado [3]

Por todo lo expuesto el desarrollo de software para dispositivos moacuteviles difiere

considerablemente del tradicional [4] y acompantildea el crecimiento y evolucioacuten de la

Ingenieriacutea de Software como disciplina

Para maximizar su presencia en el mercado un producto de software debe

ejecutarse en la mayor cantidad de dispositivos posible Una solucioacuten consiste en el

desarrollo nativo de la aplicacioacuten en cada una de las plataformas existentes utilizando el

entorno de desarrollo integrado (IDE por sus siglas en ingleacutes) el lenguaje y las

herramientas propias de cada plataforma [5] Sin embargo al no ser posible la

reutilizacioacuten de coacutedigo fuente entre diferentes plataformas el esfuerzo se multiplica y se

elevan los costos de desarrollo actualizacioacuten y distribucioacuten de nuevas versiones [6]

Prefacio

8

El desarrollo multiplataforma a diferencia del desarrollo nativo se centra en el

reuacuteso de coacutedigo La construccioacuten de aplicaciones web moacuteviles constituye un ejemplo que

representa este enfoque Sin embargo las limitaciones derivadas de su ejecucioacuten dentro

de un navegador ha motivado a los ingenieros de software a dirigir su atencioacuten hacia otro

tipo de aplicaciones multiplataforma con el que se obtienen resultados maacutes cercanos a las

soluciones nativas En este contexto existen diversas sub-clasificaciones [5] [7] [8] y es

de intereacutes analizar las caracteriacutesticas inherentes a cada una de ellas a traveacutes de la

construccioacuten de un prototipo experimental

Trabajos publicados

Los resultados parciales del presente trabajo dieron lugar al siguiente capiacutetulo de

libro

ldquoAn Experimental Analysis of Application Types for Mobile Devicesrdquo [9]

Lisandro Deliacutea Nicolaacutes Galdaacutemez Pablo Thomas Patricia Pesado

Computer Science amp Technology Series - XIX Argentine Congress of Computer

Science - Selected Papers Editorial de la Universidad de La Plata 2014 p173 -

183 ISBN 978-987-1985-49-4

Asiacute mismo se realizaron publicaciones en los siguientes eventos cientiacuteficos

ldquoMulti-Platform Mobile Application Development Analysisrdquo [10]

Lisandro Deliacutea Nicolaacutes Galdamez Pablo Thomas Leonardo Corbalaacuten Patricia

Pesado

IEEE Ninth International Conference on Research Challenges in Information

Science - IEEE RCIS

Atenas Grecia 13 al 15 de mayo de 2015

Forma de Publicacioacuten Proceedings - CD ROM

ISBN 978-1-4673-6630-4

Organizacioacuten del trabajo

Este trabajo se organiza de la siguiente manera

El capiacutetulo 1 resentildea la evolucioacuten de los dispositivos moacuteviles

Prefacio

9

En el capiacutetulo 2 se describen conceptos esenciales del desarrollo de aplicaciones

para dispositivos moacuteviles

En el capiacutetulo 3 se profundizan conceptos relacionados al desarrollo de

aplicaciones moacuteviles multiplataforma y se estudian diferentes metodologiacuteas y

herramientas

El capiacutetulo 4 contiene un conjunto de experimentos sobre desarrollos de

aplicaciones moacuteviles multiplataforma y el anaacutelisis de los resultados obtenidos

El capiacutetulo 5 presenta las conclusiones obtenidas y el capiacutetulo 6 los trabajos

futuros propuestos en relacioacuten al tema

Finalmente se detalla la bibliografiacutea utilizada en el presente trabajo

Capiacutetulo 1 Tecnologiacutea Moacutevil

10

Capiacutetulo 1 Tecnologiacutea Moacutevil

Hubo una eacutepoca en el que los teleacutefonos moacuteviles no teniacutean pantalla taacutectil ni

permitiacutean grabar viacutedeo ni siquiera podiacutean conectarse a Internet Tampoco podiacutean enviar

y recibir mensajes Simplemente permitiacutean la funcioacuten baacutesica de hablar por teleacutefono

Dos deacutecadas atraacutes los dispositivos moacuteviles eran aparatos de gran tamantildeo y pesados

Soacutelo algunas pocas personas podiacutean acceder a estos dispositivos ya que se consideraban

artiacuteculos de lujo Pero este escenario fue cambiando paulatinamente llevando a que el

celular se transforme en un elemento imprescindible en nuestras vidas En Argentina en

el antildeo 2003 habiacutea 4 millones de liacuteneas activas En la actualidad la cifra llega a 37 millones

de liacuteneas activas y 62 millones de liacuteneas declaradas [11]

11 Los inicios

La Segunda Guerra Mundial originoacute la necesidad de comunicarse a distancia por

lo que Motorola creoacute un equipo militar llamado Handie Talkie H12-16 para

comunicaciones viacutea ondas de radio

Su salto a los sistemas civiles sucedioacute a finales de la deacutecada de los 40 con sistemas

de radio analoacutegicos en frecuencias FM principalmente y con servicios en las bandas HF

y VHF ofrecidos por la americana Bell

En 1955 Ericsson comercializoacute el Mobile Telephone System A (MTA) Phone

(Figura 1) un teleacutefono que pesaba 40 kilogramos y que se instalaba en automoacuteviles

Como curiosidad tuvo un total de 125 usuarios hasta 1967

Capiacutetulo 1 Tecnologiacutea Moacutevil

11

Figura 1 Mobile Telephone System A (MTA)

La primera llamada moacutevil data del 3 de abril de 1973 cuando Martin Cooper

(Figura 2) en aquel entonces ingeniero electroacutenico de Motorola realizoacute una llamada

desde la calle en Nueva York La llamada fue realizada mediante un prototipo del

Motorola DynaTAC 8000x Considerado el primer moacutevil del mundo pesaba cerca de un

kilo y mediacutea 33x45x89 centiacutemetros su bateriacutea teniacutea uacutenicamente la autonomiacutea de una

hora en conversacioacuten necesitando diez horas para cargarse Su costo era de USD 4000

Capiacutetulo 1 Tecnologiacutea Moacutevil

12

Figura 2 Martin Cooper el autor de la primer llamada moacutevil

El verdadero conocimiento popular del teleacutefono moacutevil no llegoacute hasta la deacutecada de

los 90 con la segunda generacioacuten de estos dispositivos

La comunicacioacuten digital permitioacute mejorar la calidad de la escucha de voz la

reduccioacuten del tamantildeo y peso de los dispositivos utilizados y sobre todo el incremento de

compantildeiacuteas operadoras que dieron paso a un mercado maacutes competitivo y accesible

Los usuarios fueron testigos de avances sorprendentes como la identificacioacuten de

llamada o los mensajes de texto que constituyeron a una nueva forma de comunicacioacuten

Vertiginosamente el celular pasoacute de ser considerado una herramienta de trabajo a

generalizarse en todos los estratos de la sociedad

Seguacuten avanzaba la deacutecada del 90 los teleacutefonos moacuteviles iban adaptaacutendose a esas

novedades incorporando pantallas cada vez de mayor tamantildeo y en los maacutes avanzados

haciendo desaparecer la antena que era necesario desplegar para poder realizar una

comunicacioacuten en condiciones adecuadas

Poco a poco los dispositivos empezaron a integrar cada vez maacutes funciones aviso

por vibracioacuten juegos bluetooth infrarrojos politonos y ya con el cambio de siglo

pantallas a color y caacutemaras fotograacuteficas Maacutes adelante llegariacutea la grabacioacuten de viacutedeo el

acceso a Internet las pantallas taacutectiles entre otras [12]

Capiacutetulo 1 Tecnologiacutea Moacutevil

13

12 Evolucioacuten de los protocolos para redes de comunicaciones

Hubiera sido imposible el auge de los teleacutefonos moacuteviles sin la estandarizacioacuten

mejora y evolucioacuten de los protocolos para redes de comunicaciones y su soporte por las

operadoras Asiacute tras las primeras comunicaciones viacutea ondas de radio con banda de

frecuencias por debajo de los 600 kHz las posteriores en AM y FM los servicios de Bell

y Ericsson en los antildeos 50 y 60 llegoacute esa primera llamada de 1973 que popularizoacute todo el

sector

La primera generacioacuten 1G fue responsabilidad de Ericsson con el sistema Telefoniacutea

Moacutevil Noacuterdica (NMT) y seguiacutea utilizando canales analoacutegicos En 1986 la compantildeiacutea

modernizoacute el sistema funcionando a frecuencias superiores de 900 MHz posibilitando

servicio para un mayor nuacutemero de usuarios Ademaacutes del NMT en los 80 se desarrollaron

otros sistemas de telefoniacutea moacutevil como el Sistema Telefoacutenico Moacutevil Avanzado (AMP)

desarrollado por los laboratorios Bell

La segunda generacioacuten 2G llegoacute en la deacutecada de los 90 con sistemas como Global

System for Mobile Communications (GSM) Estaacutendar Interno 136 (IS-136) Red

Mejorada Digital Integrada (iDEN) y el Estaacutendar Interno 95 (IS-95) GSM fue el

desarrollo maacutes relevante ya que fue el estaacutendar europeo de telefoniacutea moacutevil digital En el

proyecto participaron 26 compantildeiacuteas europeas de telecomunicaciones y en 1992 se

pusieron en marcha las primeras redes europeas de GSM-900 y los primeros teleacutefonos

moacuteviles GSM Ademaacutes de Europa GSM ha terminado imponieacutendose tambieacuten en Asia

Ameacuterica Latina Oceaniacutea y una parte de Ameacuterica del Norte

La necesidad de mayores velocidades de transmisioacuten de datos y mayores

capacidades que permitieran nuevos servicios dieron paso a la Tercera Generacioacuten (3G)

no sin antes pasar por el 25G que proporcionoacute el General Packet Radio Service (GPRS)

El estaacutendar europeo es el Universal Mobile Telecommunications System (UMTS) basado

en la tecnologiacutea W-CDMA y estaacute gestionado por la organizacioacuten 3GPP tambieacuten

responsable de GSM GPRS y Enhanced Data Rates for GSM Evolution (EDGE)

La Cuarta Generacioacuten (4G) sucede a las tecnologiacuteas 2G y 3G y ofrece entre otras

mejoras mayor seguridad y Calidad de Servicio (QoS) junto a velocidades de acceso

muy superiores a las anteriores (mayores a 100 Mbits en movimiento y a 1 Gbits en

Capiacutetulo 1 Tecnologiacutea Moacutevil

14

reposo) Estaacute basada completamente en el protocolo IP siendo un sistema de sistemas y

una red de redes que se alcanza gracias a la convergencia entre las redes de cables e

inalaacutembricas Seguacuten Vodafone ldquoel 4G tiene finalmente una razoacuten y es el entretenimientordquo

[13] La norma Long Term Evolution (LTE) es la maacutes extendida aunque no la uacutenica

existente

5G seraacute la nueva revisioacuten del sistema de conexioacuten de red sin cables y se espera que

esteacute disponible en el antildeo 2020 (Figura 3) en paiacuteses como Corea del Sur como asiacute tambieacuten

en Europa Como 4G la mayor velocidad de transferencia seraacute su mayor avance con

velocidades de descarga de hasta 10 Gbps (125 GBs) [14]

Figura 3 Evolucioacuten de los protocolos para redes de comunicacioacuten moacuteviles

13 La actualidad

Muchas de las actividades que un tiempo atraacutes soliacutean hacerse desde una

computadora tales como revisar el correo electroacutenico escuchar muacutesica agendar una

nueva cita en el calendario compartir fotos en alguna red social entre muchiacutesimas otras

en nuestros diacuteas se llevan a cabo de forma natural desde los dispositivos moacuteviles La

Figura 4 muestra coacutemo los dispositivos moacuteviles les han ganado terreno a los equipos

Capiacutetulo 1 Tecnologiacutea Moacutevil

15

tradicionales denominados lsquode escritoriorsquo

Figura 4 Comparacioacuten entre plataformas [15]

En la actualidad existen cientos de modelos diferentes de dispositivos moacuteviles y

los fabricantes siguen innovando intentando destacarse sobre la competencia Hoy en diacutea

no nos sorprende encontrar dispositivos moacuteviles con procesadores quad-core de 22 Ghz

Incluso ya se comienzan a conocer prototipos de dispositivos con ocho o diez nuacutecleos

De la mano de los procesadores la memoria RAM de los dispositivos moacuteviles

tambieacuten ha crecido considerablemente llegando a comercializarse dispositivos con 3 GB

de memoria

La caacutemara de los dispositivos es otra de las capacidades que maacutes ha progresado

llegando a encontrarse sensores de 20 MP y la posibilidad de grabar videos en formato

UHD 4K (3840 x 2160)

El tamantildeo de las pantallas y sus resoluciones fueron otra de las caracteriacutesticas que

maacutes han evolucionado Es posible encontrar dispositivos con pantallas de 5 pulgadas con

posibilidad de visualizar 16 millones de colores y con resoluciones Quad HD (2560 x

1440)

La tecnologiacutea de las bateriacuteas es un aspecto en que no se ha logrado grandes avances

en el sector ni se pronostican grandes progresos a corto plazo Incluso la llegada de chips

Capiacutetulo 1 Tecnologiacutea Moacutevil

16

maacutes potentes mayores pantallas o el 4G disminuiraacuten auacuten maacutes la autonomiacutea de las bateriacuteas

El uacuteltimo aspecto a mencionar es el de las capacidades del dispositivo Ademaacutes de

los ya claacutesicos sensores Global Positioning System (GPS) la capacidad de conectividad

viacutea bluetooth infrarrojo y WIFI hoy surge una diversidad de opciones que pueden

disponer los teleacutefonos inteligentes

Por el lado de la conectividad cada vez es maacutes comuacuten encontrar terminales con

mecanismos de comunicacioacuten Near Field Communication (NFC) o WIFI Direct

Con respecto a los sensores actualmente existen dispositivos que cuentan con

aceleroacutemetros giroscopios y magnetoacutemetros los cuales brindan a los desarrolladores de

aplicaciones la posibilidad de controlar la posicioacuten del aparato la aceleracioacuten que sufre

el dispositivo con respecto a la fuerza de la gravedad etc Tambieacuten es comuacuten el uso de

sensores de proximidad por ejemplo para apagar la pantalla mientras se atiende una

llamada El sensor de luminosidad permite medir el brillo de la luz ambiental Asiacute el

software del teleacutefono utiliza estos datos para ajustar el brillo de la pantalla

automaacuteticamente hacieacutendola maacutes clara o maacutes oscura

Los uacuteltimos smartphones de gama alta tambieacuten son capaces de medir la presioacuten

atmosfeacuterica a traveacutes de un baroacutemetro Los datos que mide el dispositivo sirven para

determinar en queacute nivel por encima del mar se encuentra el teleacutefono lo que se traduce en

la mejora de la precisioacuten del GPS

Incluso ya existen dispositivos que cuentan con un sensor de humedad del aire el

cual permite controlar los niveles de humedad para por ejemplo ayudar a las personas

con problemas respiratorios

Como si todo esto fuese poco existen modelos con podoacutemetro -para medir con

precisioacuten los pasos que da el usuario- pulsoacutemetro -para medir las pulsaciones a traveacutes de

los vasos sanguiacuteneos de los dedos- y hasta sensor de huellas digitales para cuestiones

relativas a la seguridad

Por lo anteriormente dicho los desarrolladores de aplicaciones para dispositivos

moacuteviles de la actualidad tienen el desafiacuteo de poder manipular desde sus aplicaciones

todas las posibilidades descriptas

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

17

Capiacutetulo 2 Desarrollo de

Aplicaciones Moacuteviles Nativas

Si bien el desarrollo de aplicaciones para dispositivos moacuteviles se remonta por lo

menos a 10 antildeos atraacutes ha habido un crecimiento exponencial desde que se abrioacute la tienda

de aplicaciones de iPhone en julio de 2008 Desde entonces los fabricantes de

dispositivos han creado tiendas de aplicaciones para otros dispositivos moacuteviles

incluyendo Android BlackBerry Nokia Ovi Windows Phone entre otros [16]

Actualmente el desarrollo de aplicaciones para dispositivos moacuteviles es un campo

en evolucioacuten con gran intereacutes econoacutemico y cientiacutefico Una prueba de esto es que para

Julio del 2014 se disponiacutean de maacutes de 3 millones de aplicaciones entre las principales

tiendas virtuales de aplicaciones Y solamente en el antildeo 2013 se contabilizaron 101

billones de descargas de aplicaciones moacuteviles en todo el mundo de las cuales 9 billones

fueron descargas pagas y 92 billones descargas gratuitas [17]

Con el actual creciente nuacutemero de plataformas moacuteviles desarrollar aplicaciones

moacuteviles se hizo muy difiacutecil para las empresas ya que necesitan desarrollar las mismas

aplicaciones para cada plataforma de destino

El desarrollo de aplicaciones nativas es la forma natural de implementar

aplicaciones moacuteviles Las aplicaciones nativas son concebidas para ejecutarse en una

plataforma especiacutefica es decir se debe considerar el tipo de dispositivo el sistema

operativo a utilizar y su versioacuten

Las aplicaciones nativas se desarrollan utilizando un entorno de desarrollo

integrado (IDE) que proporciona las herramientas de desarrollo necesarias para la

construccioacuten y depuracioacuten de aplicaciones El coacutedigo fuente se compila para obtener

coacutedigo ejecutable proceso similar que el utilizado para las tradicionales aplicaciones de

escritorio

Cuando la aplicacioacuten estaacute lista para ser distribuida debe ser transferida a las App

stores (tiendas de aplicaciones) especiacuteficas de cada sistema operativo Estas tiendas tienen

un proceso de auditoriacutea para evaluar si la aplicacioacuten se adecuacutea a los requerimientos de la

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

18

plataforma a operar Cumplido este paso la aplicacioacuten se pone a disposicioacuten de los

usuarios

La principal ventaja de este tipo de aplicaciones es la posibilidad de interactuar con

todas las capacidades del dispositivo (caacutemara GPS aceleroacutemetro agenda entre otras)

Ademaacutes no es estrictamente necesario poseer acceso a internet Su ejecucioacuten es raacutepida

puede ejecutarse en modo background y notificar al usuario cuando ocurra un evento que

necesite su atencioacuten

Claramente estas ventajas tienen como contrapartida un mayor costo de desarrollo

pues se debe utilizar un lenguaje de programacioacuten diferente seguacuten la plataforma Por ende

si se desea cubrir varias plataformas se deberaacute generar una aplicacioacuten para cada una de

ellas Esto conlleva a mayores costos de desarrollo actualizacioacuten y distribucioacuten de nuevas

versiones [9] [18] [19]

En la actualidad hay una gran cantidad de sistemas operativos para dispositivos

moacuteviles La Figura 5 muestra la utilizacioacuten de los sistemas operativos en los uacuteltimos antildeos

en todo el mundo mientras que la Figura 6 muestra la misma comparativa en Argentina

En ambos casos el ranking es liderado por Android seguido por iOS y en tercer lugar

Windows Phone [20]

Figura 5- Utilizacioacuten de Sistemas Operativos Moacuteviles en el mundo

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

19

Figura 6- Utilizacioacuten de Sistemas Operativos Moacuteviles en Argentina

A continuacioacuten se analizaraacute coacutemo es el proceso de desarrollo de aplicaciones

moacuteviles nativas en los sistemas operativos maacutes relevantes de la actualidad y luego en la

Tabla 1 se compararaacuten aspectos teacutecnicos de estas plataformas

21 Desarrollo de Aplicaciones Nativas en Android

Android es el sistema operativo maacutes utilizado en la actualidad Puede ser utilizado

en teleacutefonos inteligentes tablets relojes inteligentes televisores y automoacuteviles

Estaacute basado en Linux y es respaldado por Google

211 Evolucioacuten Inicialmente el desarrollo de Android era llevado a cabo por la empresa Android

Inc la cual fue fundada en el antildeo 2003 y recibiacutea respaldo econoacutemico por parte de Google

Antildeos maacutes tarde maacutes precisamente en Julio del 2005 Google adquiere Android y da lugar

a la primer versioacuten del sistema operativo en el antildeo 2007 Android 10 Apple Pie1

desarrollado sobre el kernel de Linux 26 En su presentacioacuten se hizo hincapieacute en que era

un sistema operativo para dispositivos moacuteviles totalmente gratuito y open source a

1 Desde la salida de la primera versioacuten del sistema operativo hasta el presente Google ha seguido la tradicioacuten de ponerle un nombre de postre a cada una de sus versiones siguiendo un orden alfabeacutetico

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

20

diferencia de iOS

La primera versioacuten comercial teniacutea mucho margen de mejora y apenas inquietoacute a la

competencia pero ya introduciacutea algunos conceptos que antildeos despueacutes son un estaacutendar de

los sistemas operativos moacuteviles

Menuacute desplegable de notificaciones

Widgets de escritorio

Android Market la tienda de apps (no contaba con ninguacuten sistema de pago para

usuarios Todo el cataacutelogo era gratuito)

Integracioacuten con Google Mail Contacts y Calendar

Navegador Maps Google Talk reproductor de YouTube y soporte para caacutemaras

En febrero del 2009 apenas 3 meses despueacutes del lanzamiento de Android 10 Apple

Pie llega la primera actualizacioacuten Android 11 Banana Bread No antildeadiacutea grandes

novedades pero siacute corregiacutea numerosos fallos detectados en la primera versioacuten e introduciacutea

un concepto por entonces poco usado por los rivales que buscaba facilitar la vida al

usuario las actualizaciones automaacuteticas con las que resultaba muy simple mantener todo

el software al diacutea

El 30 de abril del 2009 lanzan una nueva actualizacioacuten de gran importancia con

muchas novedades en cuanto a usabilidad Android 15 Cupcake Esta nueva versioacuten

introdujo las siguientes caracteriacutesticas

Teclado taacutectil QWERTY en pantalla con prediccioacuten de texto y diccionario de

usuarios para palabras personalizadas

Grabacioacuten y reproduccioacuten en formatos MPEG-4 y 3GP

Widget de escritorio de Google para realizar buacutesquedas directamente

SDK para el desarrollo de widgets de escritorio por parte de terceros

Funciones del portapapeles ampliadas

Interfaz para grabar y reproducir viacutedeos mejorada

Posibilidad de auto-rotacioacuten

Android 16 Donut apareciacutea en septiembre del 2009 con algunas novedades

adicionales

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

21

Soporte para CDMAEVDO 8021x VPN que ampliaba los mercados al alcance

de Android

Compatibilidad con distintas resoluciones de pantalla Soporte WVGA

Actualizacioacuten y nuevo disentildeo del Android Market

Utilidad de buacutesqueda universal en Internet y en el mismo dispositivo

Galeriacutea caacutemara y videocaacutemara con mejor integracioacuten con raacutepido acceso a la

caacutemara

Motor multi-lenguaje de Siacutentesis de habla para permitir a cualquier aplicacioacuten de

Android hablar una cadena de texto

Mejoras en las buacutesquedas por texto y voz

Apenas dos meses despueacutes en noviembre del 2009 lanzan Android 20 Eclair

uno de los cambios maacutes sustanciales sufridos por Android tanto a nivel de disentildeo como

de arquitectura interna Era una versioacuten dirigida a dispositivos de mayor tamantildeo en un

tiempo en el que los fabricantes empezaban a diversificar su oferta La versioacuten 21

mantuvo la misma nomenclatura y soacutelo corrigioacute algunos fallos pero su uso fue mayor

entre los fabricantes que la versioacuten anterior A continuacioacuten se mencionan algunas de las

nuevas caracteriacutesticas

Sincronizacioacuten de cuenta expandida permitiendo a los usuarios agregar muacuteltiples

cuentas al dispositivo para sincronizacioacuten de correo y contactos

Google Maps Navigation sistema de navegacioacuten GPS gratuito

Compatibilidad con Microsoft Exchange

Optimizacioacuten en velocidad de hardware y GUI renovada

Soporte para maacutes tamantildeos de pantalla y resoluciones con una mejor tasa de

contraste

Navegador actualizado soporte para HTML5 y barra de direccioacuten y buacutesqueda

unificada

Funcioacuten Speech to Text para escribir textos mediante el uso de la voz

Nueva pantalla de desbloqueo

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

22

Nuevas caracteriacutesticas para la caacutemara incluyendo soporte de flash zoom digital

modo escena balance de blancos efecto de colores y enfoque macro

Adicioacuten de fondos de pantalla animados permitiendo la animacioacuten de imaacutegenes

de fondo de la pantalla inicio para mostrar movimiento

El 20 de mayo del 2010 apareciacutea una nueva actualizacioacuten del sistema operativo

Android 22 Froyo Traiacutea numerosos cambios algunos copiados de otras ROMs y otros

con el uso empresarial en mente

Pantalla Home totalmente redisentildeada con 5 paneles en lugar de 3

Nueva galeriacutea de imaacutegenes

Soporte para actuar como hotspot2 para otros dispositivos tethering3 de datos

Soporte para Flash 101

Funcioacuten copiar y pegar mejorada en Google Mail

Nueva pantalla alternativa de desbloqueo mediante coacutedigo PIN

Grabacioacuten de viacutedeo en 720p

Optimizaciones en velocidad memoria y rendimiento Compilador JIT

Integracioacuten del motor de JavaScript V8 de Chrome en el navegador

Soporte para el servicio Android Cloud to Device Messaging (C2DM)

habilitando notificaciones push

El antildeo 2010 iba a concluir con el lanzamiento de una versioacuten sumamente popular

que prevalecioacute gran tiempo Android 23 Gingerbread Esta versioacuten contoacute con las

siguientes caracteriacutesticas

Disentildeo de la interfaz de usuario actualizado con incremento en velocidad y

simpleza

Nuevo disentildeo para el teclado numeacuterico en pantalla

Soporte para tamantildeos y resoluciones de pantalla extra-grandes (WXGA y

mayores)

Funcioacuten para copiar y pegar mejorada con soporte para caracteres individuales en

lugar de cajas de texto

2 lugar que ofrece acceso a Internet a traveacutes de una red inalaacutembrica y un enrutador conectado a un proveedor de servicios de Internet 3 proceso por el cual un dispositivo moacutevil con conexioacuten a Internet actuacutea como pasarela para ofrecer acceso a la red a otros dispositivos

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

23

Soporte para NFC

Herramientas de visualizacioacuten de consumo y uso de la bateriacutea mejoradas

Soporte para caacutemaras frontales

Acceso de bajo nivel para los desarrolladores de juegos

Recolector basura concurrente para incrementar el rendimiento

Sustitucioacuten del sistema de archivos YAFFS por ext4

Soporte nativo para maacutes sensores (tales como giroscopio y baroacutemetro)

Soporte de chat de video o voz usando Google Talk

En febrero del 2011 Google lanza Android 30 Honeycomb Se trata de una

actualizacioacuten especiacutefica para tablets no compatible con teleacutefonos que introduciacutea las

liacuteneas maestras de la interfaz en el futuro Las versiones 31 y 32 mantuvieron el mismo

nombre y fueron baacutesicamente un conjunto de correcciones A continuacioacuten se listan los

cambios significativos que tuvieron lugar en estas versiones

Pantalla de Inicio redisentildeada

Inclusioacuten de tonos azules en la interfaz en detrimento del verde tradicional

Nuevas funcionalidades para el emplazamiento y uso de widgets

Fin de los botones fiacutesicos Adaptacioacuten automaacutetica del SO seguacuten el dispositivo

Agregado de barra de sistema con caracteriacutesticas de acceso raacutepido a

notificaciones estados y botones de navegacioacuten suavizados disponible en la parte

inferior de la pantalla

Antildeadida la barra de accioacuten (Action Bar en ingleacutes) entregando acceso a opciones

contextuales navegacioacuten widgets u otros tipos de contenido en la parte superior

de la pantalla

Multitarea simplificada ndash tocando Aplicaciones recientes en la barra del sistema

permite a los usuarios ver instantaacuteneas de las tareas en curso y saltar raacutepidamente

de una aplicacioacuten a otra

Aceleracioacuten graacutefica mediante hardware

Optimizacioacuten del renderizado de graacuteficos 3D

Soporte para perifeacutericos USB

Octubre del 2011 fue el mes del lanzamiento de Android 40 Ice Cream Sandwich

basado en el nuacutecleo de Linux 301 Esta nueva versioacuten introdujo las siguientes mejoras

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

24

Nueva Interfaz Holo y fuente tipograacutefica Roboto

Sistema de gestioacuten de notificaciones mejorado

Multitarea mejorada

Android Beam funcionalidad para transferir datos entre dos dispositivos viacutea NFC

Funcioacuten de desbloqueo mediante el rostro

Nuevas funciones para la visualizacioacuten y gestioacuten del consumo de datos

Nuevas aplicaciones de correo y calendario

Habilidad de acceder a aplicaciones directamente desde la pantalla de bloqueo

Herramienta integrada de captura de pantalla

Soporte MKV

Aceleracioacuten por hardware de la interfaz de usuario

Soporte Stylus (laacutepiz taacutectil)

En Julio del 2012 se presenta Android 41 Jelly Bean que incluye las siguientes

novedades

Sistema de deteccioacuten de entrada de datos taacutectiles optimizado

Estreno de Google Now el servicio-asistente de voz inteligente de Google

Navegador Google Chrome

Buacutesqueda mediante voz mejorada

Nuevas posibilidades para las notificaciones interactivas de escritorio

Dictado de voz offline

Se deja de dar soporte al Flash Player

Meses despueacutes en noviembre del 2012 se lanza la versioacuten Android 42 Jelly Bean

la cual incluye habituales correcciones rendimiento mejorado y cambios puntuales en

ciertas aplicaciones

Android 43 Jelly Bean es anunciado el 24 de julio del 2013 Uno de los objetivos

de esta versioacuten fue tratar de consolidar a Android como un sistema operativo capaz de

ejecutar juegos Esta nueva versioacuten cuenta con las siguientes novedades

Soporte multiusuario y de perfiles mejorado

Soporte OpenGL ES 30

Bluetooth Smart

Plataforma Google Games

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

25

Servicios de localizacioacuten Wi-Fi mejorados

Ya no es necesario pulsar el icono del microacutefono para realizar una buacutesqueda de

voz Solo hay que decir OK Google y en seguida ordenar al equipo lo que se

necesite

Android 44 KitKat es anunciado en octubre del 2013 Esta nueva versioacuten intenta

corregir el problema de fragmentacioacuten se cuenta con muchas versiones y los fabricantes

tienen dificultades para adaptar sus productos a los requerimientos de cada nueva versioacuten

Se destaca de esta versioacuten

Menores requisitos de hardware para corregir la fragmentacioacuten de versiones

Compatible con terminales con 512 MB de memoria RAM

Reduccioacuten del consumo de bateriacutea mediante la optimizacioacuten de los sensores

Inclusioacuten de la suite ofimaacutetica QuickOffice

Servicios de almacenamiento online integrados Google Drive Box

Soporte para infrarrojos Usar el moacutevil como mando de TV

Aplicaciones a pantalla completa

Captura de pantalla en viacutedeo

En octubre del 2014 se lanza Android 5 Lollipop daacutendole soporte a otros

dispositivos como Android TV relojes inteligentes autos etc Esta nueva versioacuten

incluye

Nuevo disentildeo basado en Material Design que logra un flujo de trabajo maacutes fluido

Interfaz que se adapta a cualquier tamantildeo de dispositivo

Renovado sistema de notificaciones inteligente

Interesante vista multitarea que muestra capas con las diferentes aplicaciones

abiertas

Funcioacuten Android Smart Lock que permite emparejar un dispositivo Android con

otro ya sea un reloj inteligente o un automoacutevil

Modo Invitado para que puedas prestar el dispositivo sin que otros usuarios

tengan acceso a la informacioacuten privada

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

26

Soporte para sistemas de 64 bits

En octubre del 2015 se anuncia Android 6 Marshmallow que incluye las

siguientes novedades

Soporte para autenticacioacuten viacutea huella digital

Desinstalacioacuten raacutepida de las aplicaciones desde la pantalla de inicio

Nuevo esquema de gestioacuten de energiacutea llamado Doze

Mayor duracioacuten de la bateriacutea cuando el dispositivo estaacute en reposo

Inclusioacuten de Android Pay que emplearaacute el chip NFC

Mejoras en Google Now

Mayor control sobre los permisos requeridos por las aplicaciones

212 Proceso de Desarrollo Las aplicaciones nativas para esta plataforma se implementan utilizando el lenguaje

de programacioacuten Java

El estaacutendar sugiere utilizar el IDE oficial Android Studio (Figura 7) aunque es

posible utilizar otros entornos Independientemente del IDE utilizado se necesita

disponer del Software Development Kit (SDK) de la versioacuten de Android en la que se

desea trabajar El SDK provee todas las herramientas necesarias para desarrollar

compilar depurar y simular aplicaciones

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

27

Figura 7 Entorno de desarrollo Android Studio

Uno de los interrogantes que surgen en el momento de crear una aplicacioacuten es con

cual versioacuten de la Application Programming Interface (API) de Android trabajar Se debe

tener en cuenta que al trabajar con una versioacuten especiacutefica se estaacute limitando cuales son los

dispositivos que soportaraacuten la aplicacioacuten a crear No se recomienda utilizar una API

antigua -ya que no se estariacutea utilizando muchos de los avances de la plataforma- ni

tampoco la uacuteltima en el mercado ndashdebido a que pocos seriacutean los usuarios que podriacutean

utilizarla- En la Figura 8 se visualiza la distribucioacuten de versiones seguacuten los dispositivos

activos a la fecha de Diciembre 2016 [21] De esa informacioacuten se desprende que si se

optara por trabajar con la API 16 (Jelly Bean) el 966 de los celulares activos podraacuten

utilizar la aplicacioacuten a crear

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

28

Figura 8 Distribucioacuten de versiones de Android - Diciembre 2016

22 Desarrollo de Aplicaciones Nativas en iOS

iOS es un sistema operativo para dispositivos moacuteviles de la empresa multinacional

Apple Si bien fue originalmente desarrollado para el dispositivo iPhone luego el sistema

operativo alcanzoacute otros dispositivos como iPod Touch iPad A diferencias de otros

sistemas operativos para dispositivos moacuteviles iOS solo funciona en dispositivos creados

por la empresa Apple pero no asiacute en otro hardware de terceros

221 Evolucioacuten El sistema operativo moacutevil iOS se deriva del sistema operativo OS X el cual estaacute

basado en UNIX

La primera versioacuten del sistema operativo se presentoacute en enero del 2007 A

diferencia de sus sucesores la primera versioacuten no se llamoacute iOS sino iPhone OS Se

trataba de una plataforma bastante cerrada ya que las uacutenicas aplicaciones disponibles

eran las que estaban integradas al sistema operativo y fueron creadas por Apple como los

Mapas Mail Fotos Calendario entre otras

El desarrollo de aplicaciones nativas por parte de terceros no tuvo lugar hasta marzo

del 2008 momento en el cual Apple liberoacute el primer kit de desarrollo

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

29

Meses despueacutes se lanza la segunda versioacuten del sistema operativo iPhone OS 2 En

esta oportunidad introducen la App Store la cual permitioacute la descarga de aplicaciones de

terceros Ademaacutes la aplicacioacuten de Mapas recibioacute compatibilidad con el GPS y el Mail

notificaciones push

En 2009 Apple lanzoacute iPhone OS 3 y en su versioacuten 32 se le cambioacute el nombre a

iOS 32 iOS 3 incorporoacute grandes novedades buacutesqueda Spotlight botones Copiar y

Pegar grabacioacuten de viacutedeo edicioacuten de viacutedeo mensajes MMS comandos de voz modo

landscape y otras muchas apps Ademaacutes se siguioacute explotando las ventajas de las

notificaciones push y se continuoacute evolucionando su SDK daacutendole mayor poder a los

desarrolladores de aplicaciones

iOS 4 llegoacute a mediados del 2010 y trajo consigo nuevos cambios a la plataforma

Los maacutes destacables fueron la inclusioacuten de fondos de pantalla y la posibilidad de poder

abrir varias aplicaciones en simultaacuteneo Adicionalmente las aplicaciones podiacutean ser

agrupadas mediante carpetas algo simple pero uacutetil

En Junio del 2011 se libera iOS 5 Esta nueva versioacuten ofreciacutea grandes novedades

un Centro de Notificaciones Siri ndashel asistente virtual que marcoacute tendencia en los uacuteltimos

antildeos- iMessage iCloud Game Center Quiosco Recordatorios integracioacuten social para

Twitter y se mejoroacute notablemente la app de navegacioacuten web nativa Safari

iOS 6 fue presentado en Junio del 2012 y trajo como novedades la inclusioacuten de

Apple Maps (en reemplazo de Google Maps) mejoras en Siri con informacioacuten mucho

maacutes precisa la integracioacuten de Facebook y Twitter en el sistema el modo no molestar el

soporte para LTE entre otras

Los usuarios de este sistema operativo recibieron una de las mayores

actualizaciones en Junio del 2013 cuando se presenta iOS 7 Esta nueva versioacuten contoacute

con un redisentildeo total de la interfaz de usuario basaacutendose en transparencias y degradados

Ademaacutes se introdujo el Centro de Control AirDrop una renovada app de fotos iTunes

Radio y CarPlay mejoras en el App Switcher videos a caacutemara lenta entre otras cosas

Junio del 2014 fue el mes donde quedoacute disponible iOS 8 una nueva versioacuten del

sistema operativo que intenta resolver algunos errores de iOS 7 y antildeadir ciertas mejoras

Las extensiones y la posibilidad de conectar apps entre siacute mediante el menuacute compartir

hicieron que iOS 8 fuese mucho maacutes productivo Ademaacutes incorporoacute widgets para el

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

30

Centro de Notificaciones o las notificaciones interactivas Ademaacutes se implementaron los

contactos favoritos los teclados de terceros la funcioacuten Reachability y la utilidad

Continuity y las aplicaciones Apple Pay Salud HandOff QuickType Compartir en

Familia iCloud Drive y Apple Music

En el 2015 se presenta iOS 9 que introdujo todo un cambio en el uso del sistema

gracias a la compatibilidad con el 3D Touch del iPhone 6s y el iPhone 6s Plus Se

actualizoacute Notas con nuevas funciones se sustituyoacute Newsstand por News se incorporaron

mejoras en Passbook que pasoacute a llamarse Wallet y se mejoroacute Mapas con direcciones y

traacutefico Se antildeadioacute Split View Picture-in-Picture y atajos en teclados de terceros Ademaacutes

el sistema ahora podiacutea aprovechar mejor la autonomiacutea del dispositivo gracias al Modo

ahorro de bateriacutea que limita las conexiones y caracteriacutesticas del sistema para no consumir

tanta energiacutea

Por uacuteltimo en Junio del 2016 quedoacute disponible iOS 10 versioacuten que se caracteriza

por abrirse a los desarrolladores Con esta nueva versioacuten se puede tener acceso a Siri al

3D Touch y a apps directas del sistema operativo Ademaacutes el centro de widgets ahora es

maacutes intuitivo y la pantalla de bloqueo maacutes uacutetil Como es habitual se aprecian mejoras en

distintas aplicaciones del sistema operativo y se permite borrar apps de Apple que no sean

utilizadas por los usuarios

222 Proceso de desarrollo Las aplicaciones moacuteviles para la plataforma iOS se desarrollan utilizando el

lenguaje de programacioacuten Objetive C El entorno de desarrollo oficial es la plataforma

Xcode [22] la cual opera en conjunto con Interface Builder una herramienta graacutefica para

la creacioacuten de interfaces de usuario

Actualmente hay dos grandes versiones del sistema operativo moacutevil en curso como

se puede apreciar en la Figura 10 Es algo a destacar que la uacuteltima versioacuten del sistema

operativo es soportada por el 63 de los dispositivos activos Claramente la

fragmentacioacuten interna es mucho menor que la encontrada en Android

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

31

Figura 9 Entorno de desarrollo Xcode

Figura 10 Distribucioacuten de versiones de iOS - Noviembre 2016

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

32

23 Desarrollo de Aplicaciones Nativas en Windows Phone

El sistema operativo moacutevil Windows Phone fue desarrollado por Microsoft y

sucede a Windows Mobile A diferencia de su predecesor estaacute enfocado en el mercado de

consumo en lugar del mercado empresarial

231 Evolucioacuten Su primera versioacuten lanzada en septiembre del 2010 fue denominada Windows

Phone 7 Fue presentado como un nuevo sistema operativo que incluye funciones de

integracioacuten con los servicios Xbox Live y Zune La interfaz conocida como Metro ha

sido revisada en su totalidad y comparte caracteriacutesticas visuales similares a la interfaz del

dispositivo Zune HD

Windows Phone 75 es una actualizacioacuten para Windows Phone lanzada en

septiembre de 2011 Esta nueva versioacuten incorporoacute numerosas caracteriacutesticas como por

ejemplo la inclusioacuten de Internet Explorer 9 con soporte para CSS3 Media Queries y

soporte para usar GPS cuando se trabaje con aplicaciones de ubicacioacuten geograacutefica entre

otros

En enero del 2013 se presenta Windows Phone 78 una actualizacioacuten que trae

mejoras como la nueva interfaz de usuario y fondos personalizados para la pantalla de

bloqueo Fue la uacuteltima gran actualizacioacuten de Windows Phone 7 ya que Microsoft se

centroacute en Windows Phone 8

Windows Phone 8 es la siguiente versioacuten del sistema operativo la cual fue

presentada a finales de 2012 Entre las nuevas caracteriacutesticas se incluyen

Nuevas pantallas de inicio y de bloqueo maacutes personalizables

Rincoacuten infantil un espacio exclusivo y controlado para los nintildeos

Cartera para almacenar tarjetas de fidelizacioacuten y de creacutedito

NFC

Internet Explorer 10

Integracioacuten con Skype

Nuevo nuacutecleo Windows NT con soporte para procesadores de varios

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

33

nuacutecleos

Captura de pantalla

Su proacutexima versioacuten es Windows Phone 81 y fue presentada en abril del 2014

Entre sus caracteriacutesticas maacutes relevantes se encuentran

Centro de notificaciones

Asistente de voz conocido con el nombre de Cortana

Sensores (de Wi-Fi de datos y de bateriacutea)

Aplicaciones que vienen en el paquete de instalacioacuten como Salud y

ejercicios Comida y bebida Viajes y Mapas (esta uacuteltima compite con Here

Maps la cual es la aplicacioacuten de mapas de Nokia)

Mejoras en la pantalla de inicio posibilidad de agregar fondos de pantalla y

una tercera columna de mosaicos personalizables (Tiles)

A mediados del 2014 Microsoft decide cambiar de estrategia tratando de unificar

todas las plataformas como PC tablets smartphones Xbox One entre otros Windows

10 (moacutevil) se dio a conocer puacuteblicamente durante un evento el 21 de enero para 2015 Al

igual que su homoacutelogo Windows 10 Mobile utiliza como navegador predeterminado

Microsoft Edge reemplazando Internet Explorer de Windows Phone 81 ya que este no

se adecuaba a las nuevas liacuteneas de disentildeo del sistema operativo

232 Proceso de desarrollo El entorno de desarrollo maacutes popular para el desarrollo de aplicaciones para

Windows Phone es Visual Studio (Figura 11) En la actualidad es posible utilizar diversos

lenguajes de programacioacuten VBNET y CNET C++ y JavaScript

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

34

Figura 11 Entorno de desarrollo Visual Studio

24 Diferencias teacutecnicas entre Android iOS y Windows Phone

Desarrollar aplicaciones moacuteviles para los tres sistemas operativos maacutes populares

implica conocer ciertos aspectos teacutecnicos de cada plataforma Algunos de estos aspectos

teacutecnicos difieren sustancialmente entre cada sistema operativo

Una de las caracteriacutesticas a tener en cuenta es si las aplicaciones moacuteviles se ejecutan

dentro de una maacutequina virtual especiacuteficamente disentildeada o si se ejecutan directamente

sobre el sistema operativo

Otro aspecto que los desarrolladores deben tener en cuenta es el lenguaje de

programacioacuten a utilizar para crear aplicaciones nativas Este aspecto es importante porque

incide en otros aspectos como por ejemplo la gestioacuten de memoria

Ademaacutes del lenguaje de programacioacuten a utilizar es importante conocer la

tecnologiacutea requerida para disentildear interfaces de usuario

Asimismo los desarrolladores deben familiarizarse con diferentes IDEs seguacuten la

plataforma en la que se desea desarrollar como asiacute tambieacuten con diferentes tiendas de

aplicaciones donde alojar los productos finales

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

35

Por uacuteltimo la tecnologiacutea de hardware requerida para soportar el sistema operativo

tambieacuten difiere seguacuten cada plataforma

La Tabla 1 compara cada uno de estos aspectos en los sistemas operativos moacuteviles

Android iOS y Windows Phone

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

36

Sistema

Operativo

Maacutequina

Virtual

Lenguaje de

Programacioacuten

Interfaces

de usuario

Gestioacuten de

memoria

IDE Plataforma de

desarrollo

Dispositivos Tienda de

Aplicaciones

Android Dalvik VM Java XML files Garbage

collector

Android

Studio

Multiplatforma Heterogeneos Google Play

Store

iOS No Objective-C Cocoa

Touch

Reference

counting

XCode Mac OS X Homogeneos iTunes Apps

Store

Windows

Phone

CLR C and Net XAML files Garbage

collector

Visual

Studio

Windows Vista7 Homogeneos Windows

Phone Store

Tabla 1 Diferencias teacutecnicas entre las plataformas Android iOS y Windows Phone

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

37

Capiacutetulo 3 Desarrollo de

Aplicaciones Moacuteviles

Multiplataforma

En los uacuteltimos antildeos el mercado de los dispositivos moacuteviles en especial

smartphones ha mostrado un crecimiento notable tanto en Argentina como en todo el

mundo En particular en nuestro paiacutes las plataformas que maacutes han crecido son Android

e iOS [1520]

Actualmente gran parte de la industria del software se concentra en desarrollar

soluciones para dispositivos moacuteviles proveyendo especialmente aplicaciones nativas

Las aplicaciones nativas tal como se mencionoacute en el capiacutetulo anterior ofrecen la

posibilidad de acceder a todas las capacidades del dispositivo (caacutemara GPS aceleroacutemetro

y agenda entre otras) su rendimiento es alto el acceso a Internet no es estrictamente

necesario y pueden ejecutarse en segundo plano notificando al usuario cuando se requiera

su atencioacuten Estas aplicaciones pueden distribuirsecomercializarse a traveacutes de las tiendas

en liacutenea correspondientes

El principal reto para los proveedores de aplicaciones es proporcionar soluciones

para todas las plataformas pero esto conlleva un alto costo [6] no es posible reusar el

coacutedigo fuente entre plataformas diferentes multiplicando esfuerzos y elevando los costos

de desarrollo actualizacioacuten y distribucioacuten de nuevas versiones

El desarrollo multiplataforma procura optimizar la relacioacuten costobeneficio

compartiendo la misma codificacioacuten entre las versiones para las distintas plataformas

Entre otras ventajas sobresalen menor tiempo y costo de desarrollo prestaciones

similares a las nativas con acceso al hardware del dispositivo y disponibilidad de

entornos potentes de desarrollo (Delphi Visual Studio etc) o en su lugar utilizacioacuten de

tecnologiacuteas (HTML5 Javascript y CSS) bien conocidas por los desarrolladores web

quienes pueden trasladar sus conocimientos y experiencias al paradigma moacutevil Sin

embargo el rendimiento de las aplicaciones y sus interfaces de usuario pueden afectar la

experiencia de usuario

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

38

Las aplicaciones multiplataforma pueden clasificarse en aplicaciones web moacuteviles

hiacutebridas interpretadas y generadas por compilacioacuten cruzada [5] En las secciones

siguientes se analizaran cada una de estas clasifcaciones

31 Aplicaciones Web Moacuteviles

Las Aplicaciones Web Moacuteviles disentildeadas para ejecutarse dentro de un navegador

se desarrollan con tecnologiacutea web estaacutendar (HTML CSS y JavaScript) y cuentan con

una serie de caracteriacutesticas favorables no necesitan adecuarse a ninguacuten entorno operativo

son independientes de la plataforma y su puesta en marcha es raacutepida y sencilla

Por contrapartida sus tiempos de respuesta decaen debido a la interaccioacuten cliente-

servidor Al mismo tiempo resultan ser menos atractivas que las aplicaciones nativas ya

que no se encuentran instaladas en el dispositivo lo que implica acceder previamente a

un navegador Ademaacutes las restricciones de seguridad impuestas a la ejecucioacuten de coacutedigo

por medio de un navegador limitan el acceso a todas las capacidades del dispositivo [23]

Asimismo no es posible desarrollar aplicaciones web que corran en segundo plano ni

tampoco aplicaciones offline ya que es requisito disponer de una conexioacuten a internet para

su funcionamiento

El proceso de desarrollo de una aplicacioacuten web moacutevil debe contemplar una serie de

caracteriacutesticas inherentes al entorno de ejecucioacuten Como ya ha sido mencionado las

aplicaciones web moacuteviles pueden ser accesibles desde cualquier dispositivo moacutevil que

cuente con un navegador y acceso a internet pero esto no significa que la navegacioacuten en

la aplicacioacuten resulte ser coacutemoda u oacuteptima Por ejemplo una aplicacioacuten web con un menuacute

compuesto de 20 iacutetems puede implicar una usabilidad correcta desde una PC Por lo

contrario para un dispositivo moacutevil con una pantalla limitada no resulta praacutectico que se

le presente al usuario tantas opciones en el menuacute Con este ejemplo lo que se pretende

mostrar es que para que una aplicacioacuten sea accesible desde diferentes dispositivos

moacuteviles posiblemente se tengan que realizar al menos dos disentildeos de presentacioacuten

diferentes un disentildeo para PC y otro disentildeo para dispositivos moacuteviles con una estructura

organizativa de la aplicacioacuten maacutes simplificada con respecto al disentildeo tradicional Por

ejemplo algunas de las funcionalidades de la aplicacioacuten para PC pueden ser eliminadas

para la versioacuten para dispositivos moacuteviles o presentadas de forma diferente

Para desarrollar diferentes presentaciones de una misma aplicacioacuten web

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

39

actualmente existen dos estrategias distintas ambas vaacutelidas seguacuten el contexto En los

siguientes apartados se analizaraacuten cada una de ellas

311 Aplicacioacuten Web dedicada y exclusiva para dispositivos moacuteviles Esta metodologiacutea ha sido el estaacutendar hasta el antildeo 2012 En ella la direccioacuten URL

y el coacutedigo HTML de la versioacuten moacutevil son distintos de la versioacuten de escritorio Por lo

general las direcciones URL tienen el formato mnombresitiocom

Algunas de las ventajas de este meacutetodo

- En general la carga es maacutes raacutepida y la navegacioacuten maacutes coacutemoda

- Es posible adaptar de manera maacutes faacutecil el contenido de las secciones

Desventajas de este meacutetodo

- Mantenimiento maacutes costoso Se debe mantener dos versiones distintas del mismo

sitio

- Dificulta el posicionamiento del sitio en los buscadores

- Estos desarrollos al final tienden a ser versiones muy reducidas de la web para

PC llevando al usuario a frustrarse y a preferir ver la versioacuten original de la web

312 Aplicacioacuten Web con Disentildeo Adaptable Con esta metodologiacutea la aplicacioacuten web se adapta al dispositivo desde el cual se la

estaacute accediendo El coacutedigo HTML y la direccioacuten URL de la aplicacioacuten son uacutenicos El

Disentildeo Adaptable o Responsive Design (Figura 12) tiene sus oriacutegenes en el antildeo 2008

cuando la W3C discutioacute y describioacute sus propoacutesitos Desde el antildeo 2012 -momento en el

cual Google recomendoacute fuertemente su implicancia [24]- viene en ascenso y

posiblemente llegue a convertirse en un standard en un corto plazo

Mediante un Disentildeo Adaptable todos los elementos de la web se reajustan en ancho

y altura adaptaacutendose al tamantildeo de tu pantalla Incluso es posible ocultar secciones cuando

se accede desde un dispositivo moacutevil

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

40

Figura 12 Disentildeo Adaptable

Las principales ventajas del desarrollo de aplicaciones web con Disentildeo Adaptable

son

- El mantenimiento es menos costoso ya que solo hay que mantener una uacutenica

versioacuten de la aplicacioacuten

- Se simplifica el proceso de posicionar la aplicacioacuten en los buscadores

Como contrapartida el Disentildeo Adaptable presenta una serie de desventajas

- Requiere de mayores niveles teacutecnicos para su desarrollo

- El contenido de las aplicaciones con Disentildeo Adaptable puede ser mayor que el

contenido de las aplicaciones web especiacuteficas para dispositivos moacuteviles

perjudicando el tiempo de carga cuando se utiliza un tipo de conexioacuten no muy

potente y generando un mayor consumo de datos

En la actualidad existe una gran cantidad de frameworks que simplifican el

desarrollo de aplicaciones web con disentildeo adaptable destacaacutendose por su popularidad y

extensa documentacioacuten los frameworks Bootstrap [25] y Foundation [26]

32 Aplicaciones Hiacutebridas

Las aplicaciones hiacutebridas utilizan tecnologiacuteas web (HTML Javascript y CSS) pero

no son ejecutadas por un navegador En su lugar se ejecutan en un contenedor web

(webview) como parte de una aplicacioacuten nativa la cual estaacute instalada en el dispositivo

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

41

moacutevil Desde una aplicacioacuten hiacutebrida es posible acceder a las capacidades del dispositivo

a traveacutes de diversas API

Las aplicaciones hiacutebridas ofrecen grandes ventajas permitiendo la reutilizacioacuten de

coacutedigo en las distintas plataformas el acceso al hardware del dispositivo y la distribucioacuten

a traveacutes de las tiendas de aplicaciones En contrapartida se observan dos desventajas de

las aplicaciones hiacutebridas respecto del caso nativo i) la experiencia de usuario se ve

perjudicada al no utilizar componentes nativos en la interfaz y ii) la ejecucioacuten se ve

ralentizada por la carga asociada al contenedor web

Afortunadamente existe una diversidad de frameworks que permiten desarrollar

aplicaciones hiacutebridas A continuacioacuten se haraacute un breve resumen de los maacutes populares

321 PhoneGap PhoneGap [27] es un framework gratuito y open source creado en el antildeo 2008 por

la empresa Nitobi Software que permite crear aplicaciones moacuteviles usando tecnologiacutea

web estaacutendar HTML JavaScript y CSS En octubre del 2011 Adobe adquiere la empresa

Nitobi y aporta el coacutedigo de PhoneGap a Apache Software Foundation para iniciar un

nuevo proyecto por encima de PhoneGap llamado Apache Cordova [28] PhoneGap pasoacute

a ser una de las varias distribuciones de Apache Cordova (Figura 13) brindando servicios

extras como por ejemplo Adobe PhoneGap Build [29] un servicio de compilacioacuten en la

nube proporcionado por Adobe Creative Cloud PhoneGap Desktop y PhoneGap

Developer

PhoneGap permite compilar aplicaciones para las siguientes plataformas Android

IOS Amazon Fire OS Windows Phone Windows 8 Ubuntu Tizen Firefox OS

Blackberry 10

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

42

Figura 13 Funcionamiento de Apache Cordova

322 CocoonJS CocoonJS [30] es un framework para el desarrollo de aplicaciones moacuteviles

producido por Ludei [31] Actualmente cuenta con una licencia propietaria y ofrece

diferente tipos de planes pagos y gratuitos El mencionado framework estaacute basado en

Apache Cordova al igual que PhoneGap pero se diferencia de este uacuteltimo en que hace

un mayor hincapieacute en la performance de las aplicaciones resultantes CocoonJS ofrece

dos tipos de webview

Canvas+ un webview liviano optimizado para video juegos Provee solo un

subconjunto de las funcionalidades del HTML5 (canvas audio motion

geolocalizacioacuten etc) necesarias para desarrollar video juegos con el objetivo de

brindar la mejor performance posible

Webview+ un potente y completo webview basado en el webview del proyecto

Chromium el cual cuenta de una mejor performance en comparacioacuten con el

webview por defecto de Apache Cordova

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

43

CocoonJs permite crear aplicaciones tanto para iOS como para Android

323 Ionic Ionic [32] es un completo SDK gratuito y open source para el desarrollo de

aplicaciones hiacutebridas producido por Max Lynch Ben Sperry y Adam Bradley de la

compantildeia Drifty Co en el antildeo 2013 En un tiempo relativamente corto alcanzoacute una

popularidad a destacar Estaacute basado en Apache Cordova permitiendo desarrollar

aplicaciones con tecnologiacutea web A diferencia de otros frameworks para el desarrollo de

aplicaciones hibridas Ionic provee un framework para la interfaz de usuario y

herramientas visuales para disentildear interfaces

Mediante Ionic es posible crear aplicaciones para Android IOS Windows Phone y

Firefox OS

324 Sencha Touch Sencha Touch [33] es un framework gratuito Model-View-Controller (MVC)

JavaScript construido sobre el sistema de clases de Ext JS disentildeado especialmente para

el desarrollo de aplicaciones web moacuteviles para dispositivos taacutectiles [34]

Al igual que PhoneGap Sencha Touch permite a los desarrolladores crear

aplicaciones moacuteviles a partir de un desarrollo web con HTML5 CSS y Javascript A

diferencia de PhoneGap Sencha no necesita de ninguna libreriacutea de terceros para construir

interfaces similares a las nativas ya que el framework provee consigo una gran cantidad

de componentes visuales listos para utilizar

Sencha empaqueta el coacutedigo del proyecto mediante PhoneGap para luego poder

construir aplicaciones en todas las plataformas soportadas por PhoneGap

33 Aplicaciones Interpretadas

Las aplicaciones interpretadas son implementadas utilizando un lenguaje base el

cual se traduce en su mayor parte a coacutedigo nativo mientras el resto es interpretado en

tiempo de ejecucioacuten Estas aplicaciones son implementadas de manera independiente de

las plataformas utilizando diversas tecnologiacuteas y lenguajes tales como Javascript Java

Ruby y XML entre otros

Una de las principales ventajas de este tipo de aplicaciones es que se obtienen

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

44

interfaces de usuario totalmente nativas Sin embargo los desarrolladores experimentan

una dependencia total con el entorno de desarrollo elegido

Seguidamente se presentaran algunos de frameworks maacutes reconocidos para el

desarrollo de aplicaciones interpretadas

331 Appcelerator Titanium Desarrollado por Appcelerator Inc Appcelerator Titanium [35] es un framework

de coacutedigo abierto que permite la creacioacuten de aplicaciones moacuteviles para las plataformas

iOS y Android Dicho framework estaacute formado por Titanium Studio un entorno de

desarrollo de coacutedigo libre para la codificacioacuten de aplicaciones moacuteviles multiplataforma

y el SDK Titanium una serie de herramientas para el desarrollo testeo anaacutelisis

depuracioacuten y compilacioacuten de aplicaciones

Las aplicaciones desarrolladas con Appcelerator Titanium se codifican utilizando

el lenguaje Javascript el cual es evaluado en tiempo de ejecucioacuten mediante un inteacuterprete

de Javascript que se ejecuta en el sistema operativo del dispositivo Al iniciar la

aplicacioacuten desde el coacutedigo nativo se ejecuta el coacutedigo Javascript y mediante la API de

Titanium se mapea uno-a-uno cada elemento del coacutedigo Javascript con los elementos

nativos De esta manera la API de Titanium actuacutea como puente logrando interfaces de

usuario compuestas de controles nativos Este entorno de desarrollo utiliza el framework

Alloy disentildeado para el desarrollo aacutegil de aplicaciones moacuteviles Alloy estaacute basado en la

arquitectura MVC y soporta el uso de tecnologiacuteas populares como Backbonejs [36] y

Underscorejs [37]

Los creadores de Titanium destacan que mediante este framework es posible

reutilizar entre el 60 y 90 del coacutedigo entre distintas plataformas

332 NativeScript El 5 de marzo del 2015 la empresa Telerik lanzoacute NativeScript [38] un proyecto de

coacutedigo abierto el cual permite generar aplicaciones nativas utilizando JavaScript

Asimismo es posible desarrollar la aplicacioacuten utilizando el lenguaje TypeScript [39]

lenguaje libre y de coacutedigo abierto desarrollado por Microsoft que extiende a JavaScript

esencialmente antildeadiendo tipado estaacutetico y objetos basados en clases En este sentido

cuando se compila la aplicacioacuten se realiza la traduccioacuten del coacutedigo TypeScript a coacutedigo

JavaScript

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

45

NativeScript provee un moacutedulo multiplataforma que permite obtener aplicaciones

nativas desde coacutedigo JavaScript Este moacutedulo expone las capacidades del dispositivo y

de la plataforma subyacente de una manera consistente y permite accederlas desde el

coacutedigo JavaScript De igual manera las interfaces de usuario pueden ser definidas

mediante coacutedigo JavaScript documentos HTML y archivos CSS abstrayeacutendose de los

componentes nativos reales

Cuando la aplicacioacuten es compilada parte del coacutedigo multiplataforma es traducido

a coacutedigo nativo mientras que el resto es interpretado en tiempo de ejecucioacuten (Figura 14)

Por el momento NativeScript permite generar aplicaciones para Android e iOS y

se preveacute dar soporte a Windows Phone NativeScript renderiza controles nativos sin

utilizar WebViews logrando una performance y experiencia de usuario similar al de las

aplicaciones nativas

Figura 14 Proceso de interpretacioacuten mediante NativeScript

34 Aplicaciones Generadas por Compilacioacuten Cruzada

Estas aplicaciones se compilan de manera nativa creando una versioacuten especiacutefica de

alto rendimiento para cada plataforma destino Ejemplos de entornos de desarrollo para

generar aplicaciones por compilacioacuten cruzada son Applause [40] Xamarin [41]

Embarcadero Delphi 10 Seattle [42] y RubyMotion [43]

El entorno de desarrollo abierto Applause utiliza como entrada un lenguaje

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

46

especiacutefico del dominio basado en el framework Xtext [44] disentildeado expliacutecitamente para

aplicaciones moacuteviles orientadas a datos y genera coacutedigo fuente en Objective C Java C

o Python Las caracteriacutesticas de Xamarin Embarcadero Delphi 10 Seattle y RubyMotion

se presentan en secciones posteriores

341 Xamarin Xamarin es una plataforma de desarrollo de aplicaciones moacuteviles para generar

aplicaciones 100 nativas para iOS Android y Windows a partir de una base de coacutedigo

CNET comuacuten para conseguir entre un 75 y hasta casi un 100 de reutilizacioacuten de

coacutedigo entre plataformas Las aplicaciones escritas con Xamarin y C disponen de acceso

completo a las API de la plataforma subyacente asiacute como de la capacidad de crear

interfaces de usuario nativas y de realizar la compilacioacuten en coacutedigo nativo por lo que el

impacto en el rendimiento en tiempo de ejecucioacuten es escaso

Xamarin es una compantildeiacutea que se establecioacute en mayo de 2011 por los mismos

ingenieros que crearon el proyecto Mono [45] consistente en una implementacioacuten libre

de la plataforma de desarrollo NET para dispositivos Android iOS y GNULinux

Anteriormente este proyecto se llamaba MonoTouch y MonoDroid

Si bien Xamarin cuenta con su propio IDE denominado Xamarin Studio (Figura

15) es posible integrarlo con Microsoft Visual Studio y de esta manera generar tambieacuten

aplicaciones para Windows incluido Windows RT para tablets y Windows Phone para

celulares

En febrero del 2016 Xamarin es comprada por Microsoft y desde ese momento la

plataforma Xamarin y el IDE Xamarin Studio pasaron a ser gratuitas

Xamarin propone un enfoque de desarrollo multiplataforma en el que se comparte

la codificacioacuten completa de la loacutegica del negocio Sin embargo las interfaces deben ser

programadas de manera independiente para cada una de las plataformas destino Asiacute la

reutilizacioacuten de coacutedigo seguacuten estudios estadiacutesticos de la compantildeiacutea Xamarin es cercana

al 85

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

47

Figura 15 Entorno de Desarrollo Xamarin Studio

342 Embarcadero Delphi 10 Seattle Embarcadero Delphi 10 Seattle [42] es una plataforma de desarrollo propietaria y

no gratuita que permite a los desarrolladores crear aplicaciones raacutepidamente a traveacutes de

un entorno visual coacutemodo e intuitivo (Figura 16) La aplicacioacuten desarrollada puede ser

compilada para muacuteltiples plataformas incluyendo Windows Mac Android e iOS

Delphi 10 Seattle al igual que Xamarin aventaja a otros tipos de aplicaciones

multiplataformas con resultados 100 nativos con acceso total a los sensores y

capacidades del dispositivo (caacutemara notificaciones GPS aceleroacutemetro entre otras)

Un punto a destacar es que Delphi 10 Seattle a traveacutes del framework de interfaces

de usuario FireUI Multi-Device Designer permite crear interfaces de usuario totalmente

nativas sin la necesidad de tener que disentildear interfaces especiacuteficas para cada plataforma

en particular

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

48

Figura 16 Entorno de Desarrollo Delphi 10 Seattle

343 RubyMotion En Mayo de 2012 la empresa HipByte lanza RubyMontion un proyecto que

permite generar aplicaciones para iOS Android y OS X utilizando el lenguaje de

programacioacuten Ruby

Para poder generar las aplicaciones multiplataforma RubyMotion posee

implementaciones de Ruby sobre los sistemas operativos destinos (Android e iOS) que

permiten acceder a todas las caracteriacutesticas provistas por cada plataforma Las

herramientas de compilacioacuten provistas por RubyMotion se encargan de embeber la

correspondiente implementacioacuten de Ruby al momento de compilar para cada plataforma

La principal desventaja de RubyMotion es que soacutelo funciona bajo el sistema

operativo OS X Otro factor a tener en cuenta es que no posee un entorno de desarrollo

integrado que facilite todo el proceso al desarrollador esto se ve solventado gracias a que

ofrece complementos para los IDE y editores de coacutedigo maacutes utilizados

Finalmente si bien el producto es un servicio pago ofrece una posibilidad de

probarlo gratuitamente aunque con soporte uacutenicamente para compilar a la uacuteltima versioacuten

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

49

de cada plataforma destino

Capiacutetulo 4 Experimentacioacuten

50

Capiacutetulo 4 Experimentacioacuten

Con el objetivo de profundizar la investigacioacuten de las diferentes metodologiacuteas de

desarrollo de aplicaciones moacuteviles multiplataforma es que se llevaron a cabo diferentes

experimentos en simultaacuteneo El primer experimento consiste en el desarrollo de una

aplicacioacuten moacutevil utilizando cada una de las metodologiacuteas estudiadas en el capiacutetulo

anterior con el objetivo de analizar el proceso de desarrollo El segundo experimento

tiene como objetivo analizar el rendimiento de las aplicaciones moacuteviles generadas

mediante las metodologiacuteas estudiadas a traveacutes de un caacutelculo matemaacutetico Por uacuteltimo se

presenta un informe comparativo que pueda ayudar en la toma de decisiones sobre queacute

metodologiacutea utilizar en futuros desarrollos

41 Aplicacioacuten Moacutevil para la plataforma de E-Learning WebUNLP

411 Descripcioacuten del problema WebUNLP es un entorno virtual de ensentildeanza y aprendizaje que permite a los

docentes mediar sus propuestas educativas Alumnos y docentes pueden encontrarse en

ese espacio para compartir materiales de estudio comunicarse y generar una experiencia

educativa en forma virtual [46]

Actualmente WebUNLP cuenta con una versioacuten web enfocada a computadoras de

escritorio o portaacutetiles pero no estaacute adaptada para ser utilizada desde dispositivos moacuteviles

El desarrollo planteado consiste en extender WebUNLP con la construccioacuten de una

aplicacioacuten moacutevil que permita acceder a determinadas funcionalidades del sistema a

traveacutes de un dispositivo moacutevil El enfoque propuesto incluye un anaacutelisis de la misma

solucioacuten comparando el desarrollo nativo web hiacutebrido interpretado y de compilacioacuten

cruzada a fin de establecer cuaacutel de ellos es conveniente

Como ocurre con cualquier desarrollo de software la construccioacuten de una

aplicacioacuten moacutevil implica tener claramente definido su propoacutesito y cuaacuteles requerimientos

debe cumplir En particular para el caso de software para dispositivos moacuteviles resulta

esencial tener objetivos maacutes acotados que en su versioacuten de escritorio [47]

Capiacutetulo 4 Experimentacioacuten

51

Para el caso especiacutefico de WebUNLP se realizoacute el desarrollo incremental de una

aplicacioacuten moacutevil y esta primera versioacuten se enfocoacute en una de sus herramientas de

comunicacioacuten la cartelera Esta herramienta permite comunicar las novedades de un

curso como por ejemplo el cambio de horario de una cursada recordar las fechas de

entrega de un trabajo praacutectico entre otras [46]

412 Anaacutelisis Uno de los primeros interrogantes planteados fue la eleccioacuten de la plataforma En

teacuterminos de mercado los sistemas operativos que predominan en Argentina son Android

e iOS [4815] con lo cual se decidioacute dar soporte a estos dos sistemas operativos

Se analizaron los requerimientos funcionales y no funcionales de forma aislada a la

plataforma y luego de forma especiacutefica para cada una de ellas

A continuacioacuten se presentan algunos requerimientos a cumplir por la aplicacioacuten

El usuario debe poder ingresar a la aplicacioacuten con las mismas credenciales que las

utilizadas para acceder a la versioacuten web de escritorio

El usuario debe poder acceder a la cartelera de todos los cursos en los que

participa ya sea como docente o alumno

El usuario debe recibir una notificacioacuten en su dispositivo cuando una novedad es

publicada en la cartelera Este requerimiento no se puede cumplir en la versioacuten

web accesible desde computadoras de escritorio yo portables

El usuario debe tener la misma experiencia de uso en todas las plataformas

operativas

La aplicacioacuten web existente debe estar sincronizada con la aplicacioacuten moacutevil a

desarrollar esto significa que cualquier cambio realizado desde la aplicacioacuten

moacutevil debe verse reflejado en la versioacuten web y viceversa

413 Disentildeo Para satisfacer los requerimientos planteados en el punto anterior a excepcioacuten de

la notificacioacuten el disentildeo de la aplicacioacuten moacutevil web consiste en una reacuteplica de lo ofrecido

por WEBUNLP adaptaacutendose solamente la interfaz al tamantildeo de pantalla del dispositivo

moacutevil

Capiacutetulo 4 Experimentacioacuten

52

Para el disentildeo de las aplicaciones moacuteviles nativa hiacutebrida interpretada y de

compilacioacuten cruzada la situacioacuten es maacutes compleja En la Figura 17 se presenta la

arquitectura geneacuterica de todos los componentes que participan en este escenario de

desarrollo En ella se observa el acceso desde una PC a WebUNLP y el acceso desde

dispositivos moacuteviles a la informacioacuten de WebUNLP mediante servicios web Para el

desarrollo de los servicios web se disentildeoacute una API Restful dada su simpleza escalabilidad

e interoperabilidad [49]

Figura 17 Arquitectura geneacuterica para aplicacioacuten nativa e hiacutebrida

Asimismo existe una tarea programada (Cron) de ejecucioacuten intermitente a

intervalos regulares de tiempo la cual notifica a los dispositivos moacuteviles correspondientes

cuando se crea una novedad en la cartelera de WebUNLP El Cron identifica el sistema

operativo del dispositivo a notificar y genera dicha notificacioacuten

En cuanto a la interfaz graacutefica se planteoacute un disentildeo independiente de la plataforma

para analizar los aspectos de usabilidad de la aplicacioacuten y luego se realizaron los ajustes

necesarios para cada tipo de aplicacioacuten

En las interfaces disentildeadas la navegacioacuten es en serie en el orden en que se presentan

en el mockup [50] de la Figura 18

Capiacutetulo 4 Experimentacioacuten

53

Figura 18 Mockup independiente del tipo de aplicacioacuten

414 Desarrollo

4141 Aplicacioacuten Nativa para Android

El desarrollo de aplicaciones para la plataforma Android requiere disponer del Java

Development Kit (JDK) y su entorno de programacioacuten conocido como Android SDK

Este uacuteltimo provee libreriacuteas y herramientas necesarias para construir testear y depurar

aplicaciones para Android

El desarrollo de la aplicacioacuten de WebUNLP para Android se realizoacute seguacuten las

convenciones adoptadas por su comunidad porque aplica buenas praacutecticas en la

construccioacuten de interfaces y de la loacutegica detraacutes de ellas el acceso a datos y a servicios

web Para cumplir el requerimiento de las notificaciones en el dispositivo

correspondiente el Cron genera la notificacioacuten mediante el uso del servicio Google Cloud

Messaging (GCM) [51] En la Figura 19 se presentan las interfaces de la aplicacioacuten

desarrollada

Figura 19 Aplicacioacuten nativa para Android

Capiacutetulo 4 Experimentacioacuten

54

4142 Aplicacioacuten Nativa para iOS

La plataforma Apple iOS estaacute basada en un modelo propietario es por ello que el

desarrollo de una aplicacioacuten nativa iOS implica contar con una Apple Mac ejecutando OS

X con Xcode instalado El lenguaje de programacioacuten principal es Objective C Xcode es

el entorno de desarrollo de Apple para todos sus dispositivos y es el encargado de

proporcionar el iOS SDK con las herramientas compiladores y frameworks necesarios

Ademaacutes Xcode viene integrado con simuladores para dispositivos iOS (iPhones y iPads)

que facilitan las etapas de prueba del sistema desarrollado

Para los aspectos referentes a la interfaz graacutefica y la interaccioacuten con el usuario se

siguieron las convenciones propuestas por Apple [52] para lograr una mejor integracioacuten

de la aplicacioacuten con el sistema operativo y mejorar la experiencia del usuario

Por uacuteltimo para satisfacer el requerimiento de notificaciones el Cron notifica al

dispositivo iOS correspondiente mediante el uso del servicio Apple Push Notification

Service (APNs) [53] En la Figura 20 se presentan las interfaces de la aplicacioacuten

desarrollada

Figura 20 Aplicacioacuten nativa para iOS

4143 Aplicacioacuten Web Moacutevil

Se desarrolloacute una aplicacioacuten web capaz de acceder a la cartelera de WebUNLP

disponible para cualquier dispositivo moacutevil que cuente con un navegador que soporte las

caracteriacutesticas utilizadas para el desarrollo HTML5 CSS3 y Javascript

Como la velocidad de transmisioacutenrecepcioacuten de datos de un dispositivo moacutevil a

traveacutes de WiFi y en particular 3G es inferior a la velocidad de una computadora de

Capiacutetulo 4 Experimentacioacuten

55

escritorio la versioacuten web de la cartelera de WebUNLP es liviana y gran parte de los

requerimientos son implementados a traveacutes de Ajax [54] para evitar ante alguacuten cambio

la recarga de la paacutegina completa

Debido a las limitaciones que tienen las aplicaciones que se ejecutan sobre un

navegador no es posible implementar la recepcioacuten de una notificacioacuten en el dispositivo

cuando una novedad es publicada en la cartelera

4144 Aplicacioacuten Hiacutebrida desarrollada con PhoneGap y Jquery Mobile

Para la construccioacuten de la aplicacioacuten WebUNLP hiacutebrida se utilizoacute el framework

PhoneGap [27] el cual permite desarrollar aplicaciones moacuteviles que utiliza tecnologiacuteas

comunes a todos los dispositivos HTML5 CSS y Javascript

Asimismo se utilizoacute el framework Javascript Jquery Mobile [55] para lograr

interfaces con apariencia y comportamiento consistente a traveacutes de las diferentes

plataformas moacuteviles

Con el objetivo de implementar el patroacuten de disentildeo MVC se utilizoacute la libreriacutea

Backbonejs [36]

Por uacuteltimo para satisfacer el requerimiento de notificaciones se utilizoacute el plugin

Pushwoosh [56]

En la figura 5 se presentan las interfaces de la aplicacioacuten desarrollada

Figura 21 Aplicacioacuten hiacutebrida desarrollada con PhoneGap

Capiacutetulo 4 Experimentacioacuten

56

4145 Aplicacioacuten Hiacutebrida desarrollada con Sencha Touch

El desarrollo de WebUNLP utilizando Sencha Touch se vio favorecido por el uso

del patroacuten de disentildeo MVC Esto permitioacute mayor flexibilidad y legibilidad en el coacutedigo

[57] [34]

Sencha ofrece Sencha Command una herramienta multiplataforma de liacutenea de

comandos que provee tareas automatizadas para todo el ciclo completo de una aplicacioacuten

En el caso de WebUNLP se utilizoacute tanto para la generacioacuten del proyecto como para el

empaquetado de la aplicacioacuten

En la Figura 22 se presentan las interfaces de la aplicacioacuten desarrollada

Figura 22 Aplicacioacuten desarrollada con Sencha Touch

4146 Aplicacioacuten Interpretada de WebUNLP con Appcelerator Titanium 3

Para desarrollar una aplicacioacuten moacutevil experimental seguacuten el enfoque interpretado

se utilizoacute el entorno de desarrollo gratuito y open source Appcelerator Titanium 3 [35]

Se destaca la simplicidad y legibilidad de los controladores y modelos de la

aplicacioacuten desarrollada luego de utilizar Alloy el framework de Titanium que permite

disentildear aplicaciones seguacuten el patroacuten de disentildeo MVC Para la construccioacuten de las vistas se

puede optar por la programacioacuten mediante Javascript y la API de Titanium o bien por

una especificacioacuten XML con estilos TSS (Titanium Style Sheets) Esta uacuteltima opcioacuten

simplifica el proceso de creacioacuten de las vistas aunque falta todaviacutea un buen editor visual

de interfaces que lo potencie

Capiacutetulo 4 Experimentacioacuten

57

Para cubrir requerimientos de notificaciones en el dispositivo Titanium provee el

moacutedulo PushNotifications para plataformas Android e iOS

La Figura 24 (a) muestra la experimentacioacuten con Titanium

4147 Aplicacioacuten Generada por Compilacioacuten Cruzada de WebUNLP utilizando XamarinVisual Studio

Tal como se mencionoacute en la seccioacuten 341 Xamarin propone un enfoque de

desarrollo multiplataforma en el que se comparte la codificacioacuten completa de la loacutegica

del negocio Sin embargo las interfaces deben ser programadas de manera independiente

para cada una de las plataformas destino (ver Figura 23) Asiacute la reutilizacioacuten de coacutedigo

seguacuten estudios estadiacutesticos de la compantildeiacutea Xamarin es cercana al 85

Figura 23 Enfoque uacutenico de desarrollo Xamarin

Para el estudio de las aplicaciones generadas por compilacioacuten cruzada se desarrolloacute

la aplicacioacuten moacutevil de WebUNLP utilizando Xamarin integrado con Microsoft Visual

Studio Siguiendo la estrategia maacutes eficiente para trabajar en este entorno se ha creado

una solucioacuten uacutenica conteniendo tres proyectos distintos Uno de ellos se utilizoacute para

generar la aplicacioacuten Android otro para la aplicacioacuten Windwos Phone 8 y el tercero para

la implementacioacuten de una biblioteca de clases portable (PCL por sus siglas en ingleacutes) con

todo el coacutedigo compartido Los tres proyectos fueron desarrollaacutendose de manera conjunta

y concurrente

Aunque una de las ventajas maacutes importantes de Xamarin es la reutilizacioacuten de

coacutedigo eacutesta se ve fuertemente afectada por el tipo de aplicacioacuten que se desarrolla La

relacioacuten existente entre la complejidad de la interfaz y la loacutegica del negocio impacta

directamente sobre la posibilidad de mantener la mayor cantidad de coacutedigo compartido

Capiacutetulo 4 Experimentacioacuten

58

en la PCL En el desarrollo de WebUNLP la reutilizacioacuten de coacutedigo ha sido cercana al

50 Sin embargo no debe despreciarse la ventaja de utilizar el mismo lenguaje entorno

y conjunto de herramientas comunes en el desarrollo de aplicaciones para distintas

plataformas moacuteviles

La Figura 24 (b) presenta la interfaz desarrollada para Windows Phone 8

4148 Aplicacioacuten Generada por Compilacioacuten Cruzada de WebUNLP utilizando Delphi 10 Seattle

Para el profundizar el estudio de las aplicaciones generadas por compilacioacuten

cruzada ademaacutes se desarrolloacute la aplicacioacuten moacutevil de WebUNLP utilizando Delphi 10

Seattle En particular fueron de gran utilidad tanto los componentes provistos por Delphi

para acceder a servicios RESTful como el entorno visual de desarrollo de Delphi 10

Seattle

Para la recepcioacuten de notificaciones en el dispositivo de las novedades de WebUNLP

se utilizoacute el componente TPushEvent conectado al servicio Kinvey [58]

La Figura 24 (c) presenta la interfaz de la aplicacioacuten desarrollada

(a) (b) (c)

Figura 24 Aplicacioacuten desarrollada con a) Titanium b) XamarinVisual Studio y c) Delphi XE

415 Conclusiones del experimento WebUNLP Seleccionar un dominio para desarrollar un caso experimental tiene sus

particularidades La novedad de disponer una aplicacioacuten moacutevil no es motivo suficiente

que justifique tal desarrollo Es necesario satisfacer un conjunto de requerimientos

claramente planteados

Capiacutetulo 4 Experimentacioacuten

59

WebUNLP es un entorno virtual de ensentildeanza y aprendizaje utilizado por diversos

cursos de grado y postgrado de la Universidad Nacional de La Plata Por ende la cantidad

de usuarios beneficiados por acceder desde cualquier lugar a este entorno es importante

De esta manera se optoacute por elegir dicho espacio virtual para ser replicado en una

versioacuten moacutevil que no soacutelo permita acercarlo a sus usuarios sino que ademaacutes ampliacutee sus

funciones en este caso puntualmente para la cartelera

Para el desarrollo de esta experimentacioacuten se desarrolloacute la misma aplicacioacuten para

los cinco tipos de enfoques de desarrollo moacutevil (web nativa hiacutebrida interpretada y

generada por compilacioacuten cruzada)

Se destaca la gran simpleza de generar la versioacuten web dado que se utilizan las

mismas herramientas tecnoloacutegicas que las usadas para el desarrollo de cualquier

aplicacioacuten web tradicional La principal diferencia en este sentido radica en la limitacioacuten

de espacio en la pantalla del dispositivo No obstante el mayor contraste estaacute dado en que

no es posible acceder a todas las capacidades de hardware del dispositivo lo que impidioacute

implementar uno de los requerimientos probablemente el maacutes interesante la notificacioacuten

de novedades de la cartelera de WebUNLP al usuario

Por otra parte las versiones nativas han cumplido todos los requerimientos Aunque

la mayor desventaja consiste en la no portabilidad lo que implicoacute un desarrollo especiacutefico

para la plataforma que se desee cubrir En este trabajo se han presentado los desarrollos

para Android e iOS sistemas operativos maacutes usados en Argentina con un costo de

desarrollo y mantenimiento inherente mayor

Para el caso del enfoque hiacutebrido tanto la versioacuten de WebUNLP desarrollada con

PhoneGap y Jquery Mobile como la versioacuten desarrollada con Sencha Touch han logrado

conjugar la simpleza del desarrollo web con el uso de todas las capacidades del

dispositivo Este tipo de enfoque pretende suplir las desventajas de los dos enfoques

previos hecho que lo posiciona como una eleccioacuten realmente interesante siempre

condicionada por los requerimientos especiacuteficos a cumplir

Por el lado del modo de desarrollo interpretado la versioacuten de WebUNLP

desarrollada con Titanium logroacute resolver todos los requerimientos previamente

planteados Al igual que en el enfoque hiacutebrido es un punto a destacar que el desarrollo

de la aplicacioacuten con Titanium es relativamente simple y es posible reutilizar todo el

Capiacutetulo 4 Experimentacioacuten

60

coacutedigo entre plataformas Lo que lo hace la eleccioacuten prima facie es el hecho de obtener

interfaces totalmente nativas algo que no se lograba mediante el enfoque hiacutebrido

Por uacuteltimo las versiones de WebUNLP generadas con el enfoque de compilacioacuten

cruzada con Xamarin y Delphi lograron cumplir los requerimientos planteados Se

destaca el hecho de que se genera interfaces totalmente nativas pero considero que el

costo es muy alto se debe disentildear las interfaces para cada plataforma de manera

independiente lo que hace que no se pueda reutilizar todo el coacutedigo fuente de la

aplicacioacuten

42 Enfoques de desarrollo Anaacutelisis comparativo de rendimiento 421 Descripcioacuten del Problema

Hace apenas unas deacutecadas atraacutes el uso de los sistemas de software estaba

restringido a un grupo reducido de usuarios especializados Aquella eacutepoca contrasta

fuertemente con la actualidad en la que los smartphones pequentildeas computadoras moacuteviles

de propoacutesito general se han vuelto cotidianos y omnipresentes Estos dispositivos pueden

utilizarse para llevar a cabo tareas complejas y criacuteticas requiriendo la mejora continua de

las capacidades de coacutemputo la disponibilidad el rendimiento eficiente entre otras

necesidades La evolucioacuten vertiginosa de esta tecnologiacutea ejerce presioacuten en la adaptacioacuten

de la Ingenieriacutea de Software

Respecto del desarrollo para dispositivos moacuteviles se debe considerar una serie de

caracteriacutesticas propias de esta actividad que no estaban presentes en el desarrollo

tradicional de software [59] Es necesario tener en cuenta sobre queacute tipo de dispositivos

se debe ejecutar la aplicacioacuten a construir La diversidad de plataformas lenguajes de

programacioacuten herramientas de desarrollo estaacutendares protocolos y tecnologiacuteas de red

algunas limitaciones de ciertos dispositivos y las exigencias de tiempo del mercado entre

otros constituyen algunos de los problemas a tratar

En la mayoriacutea de los casos el eacutexito de un producto de software para dispositivos

moacuteviles estaraacute condicionado por el nivel de popularidad que logre alcanzar Para

maximizar su presencia en el mercado es necesario que la aplicacioacuten pueda ejecutarse

sobre la mayor cantidad de plataformas moacuteviles existentes especialmente sobre las dos

maacutes populares Android e iOS [60] Para lograr este objetivo existen dos alternativas

Capiacutetulo 4 Experimentacioacuten

61

i) Desarrollar aplicaciones especiacuteficas para cada plataforma impulsando en

paralelo varios proyectos de desarrollo con las herramientas y lenguajes propios de cada

una de ellas Estas aplicaciones analizadas previamente en este trabajo se denominan

aplicaciones nativas

ii) Generar aplicaciones que puedan ejecutarse en forma directa sobre maacutes de una

plataforma de sistema operativo a partir de un uacutenico proyecto de desarrollo Estas

aplicaciones como ya se ha presentado en este trabajo se denominan aplicaciones

multiplataforma

En los uacuteltimos antildeos se ha incrementado el intereacutes de la comunidad de Ingenieriacutea de

Software por el estudio del desarrollo de aplicaciones multiplataforma para dispositivos

moacuteviles

En [5] se presenta un anaacutelisis comparativo de enfoques de desarrollo de aplicaciones

multiplataforma para dispositivos moacuteviles proponiendo la siguiente taxonomiacutea

aplicaciones web moacuteviles aplicaciones hiacutebridas aplicaciones interpretadas y

aplicaciones generadas por compilacioacuten cruzada

En [7] y [8] se analizan aspectos generales de frameworks de desarrollo

multiplataforma para dispositivos moacuteviles

En [61] se comparan aspectos no funcionales para los diferentes enfoques de

desarrollo de aplicaciones multiplataforma para dispositivos moacuteviles

En [9] se analizaron ventajas y desventajas de los enfoques de desarrollo

multiplataforma mencionados desde el punto de vista del Ingeniero de Software

La eleccioacuten del modo de desarrollo de aplicaciones para dispositivos moacuteviles

depende de varios factores Uno de ellos en muchos casos esencial es el tiempo de

ejecucioacuten El intereacutes por optimizar el tiempo de ejecucioacuten de una aplicacioacuten de software

es intriacutenseco a la disciplina informaacutetica Esto se evidencia entre otras cosas por la

evolucioacuten del poder de coacutemputo de los procesadores Ademaacutes el rendimiento eficiente

es uno de los atributos que las aplicaciones de software deben satisfacer seguacuten diversos

estaacutendares de calidad entre otros ISOIEC 9126 e ISOIEC 25010 [62]

En lo que respecta al desarrollo de aplicaciones para dispositivos moacuteviles es

oportuno considerar el tiempo de ejecucioacuten de las aplicaciones por diversos motivos

El tiempo de ejecucioacuten de una aplicacioacuten estaacute fuertemente ligado al consumo de

Capiacutetulo 4 Experimentacioacuten

62

energiacutea [63] el cual estaacute limitado por la capacidad de la bateriacutea de los dispositivos

Asimismo el rendimiento de las aplicaciones se ve reflejado principalmente

mediante las calificaciones de los usuarios en las tiendas de aplicaciones en liacutenea

Aplicaciones con bajo rendimiento pueden implicar usuarios disconformes produciendo

publicidad negativa [60] Andre Charland y Brian Leroux identifican al tiempo de

ejecucioacuten como uno de los problemas principales a resolver en el desarrollo de

aplicaciones multiplataforma y afirman que a los usuarios finales les preocupa la calidad

del software y la experiencia de uso [64]

Corral Sillitti y Succi realizaron un anaacutelisis de rendimiento comparativo entre

aplicaciones nativas y aplicaciones hiacutebridas utilizando el framework Phonegap para una

versioacuten del sistema operativo Android [65]

Es importante destacar que no se han encontrado estudios que evaluacuteen y comparen

el rendimiento entre los diversos modos de desarrollo multiplataforma de acuerdo a la

taxonomiacutea propuesta en [5] aplicaciones web moacuteviles aplicaciones hiacutebridas

aplicaciones interpretadas y aplicaciones generadas por compilacioacuten cruzada Esta

taxonomiacutea es la que se utiliza de referencia en este trabajo

El presente apartado realiza un anaacutelisis comparativo de rendimiento de aplicaciones

para dispositivos moacuteviles generadas por el enfoque de desarrollo nativo y los distintos

enfoques de desarrollo multiplataforma seguacuten [5]

En la seccioacuten siguiente se describe el experimento utilizado para evaluar tiempos

de ejecucioacuten en aplicaciones nativas y en los diversos modos de desarrollo de aplicaciones

moacuteviles multiplataforma y en las secciones posteriores se muestran y analizan los

resultados obtenidos se presentan las conclusiones y el trabajo futuro

422 Desarrollo

4221 Disentildeo de las pruebas

Todas las pruebas cuyos resultados se presentan en este trabajo fueron realizadas

sobre dispositivos moacuteviles con sistemas operativos Android e iOS dado que en la

actualidad abarcan gran parte del mercado mundial de acuerdo a lo indicado en [60]

Para llevar a cabo la experimentacioacuten se seleccionaron los frameworks de desarrollo

multiplataforma seguacuten las alternativas presentadas en [10] Se disentildearon pruebas para

evaluar el rendimiento de Apache Cordova [28] Appcelerator Titanium [35] y Xamarin

Capiacutetulo 4 Experimentacioacuten

63

[41] que se corresponden con los modos de desarrollo hiacutebrido interpretado y compilacioacuten

cruzada respectivamente Tambieacuten se experimentoacute con otros dos frameworks de

desarrollo multiplataforma que recientemente han ganado popularidad NativeScript

(desarrollo interpretado) y Corona (compilacioacuten cruzada) Finalmente se incluyeron al

conjunto de pruebas las aplicaciones web y el enfoque nativo de desarrollo para Android

e iOS De este modo se logroacute una muestra razonablemente representativa de las diversas

opciones existentes en la actualidad

Para la realizacioacuten de las pruebas se utilizaron seis dispositivos moacuteviles distintos

(ver Tabla 2) tres de ellos con sistema operativo Android identificados como DA1 DA2 y

DA3 (dos smartphone y una tablet) y tres con sistema operativo iOS identificados como

DI1 DI2 y DI3 (dos smartphone y una tablet)

ID Sistema Operativo Caracteriacutesticas

DA1 Android 44

Tipo Smartphone Marca Motorola

Modelo Moto-G2 Procesador Quad-core 12 GHz Cortex-A7

RAM 1GB Snapdragon 400

DA2 Android 502

Tipo Smartphone Marca Samsung

Modelo S6 Procesador Octa-core (4x21 GHz Cortex-A57 amp 4x15

GHz Cortex-A53) RAM 3GB Exynos 7420 Octa

DA3 Android 422

Tipo Tablet Marca Samsung Modelo Tab 2

Procesador Dual-core 10 GHz RAM 1GB TI OMAP 4430

DI1 iOS 92

Tipo Smartphone Marca Apple Modelo 5S

Procesador Dual-core 13 GHz Cyclone (ARM v8-based)

RAM 1GB Apple A7

DI2 iOS 91

Tipo Smartphone Marca Apple

Modelo 6 plus Procesador Dual-core 14 GHz Typhoon (ARM v8-

based) RAM 1GB Apple A8

DI3 iOS 91 Tipo Tablet

Marca Apple Modelo Ipad Air

Capiacutetulo 4 Experimentacioacuten

64

Procesador Dual-core 13 GHz Cyclone (ARM v8-based)

RAM 1GB Apple A7 Tabla 2 Dispositivos moacuteviles utilizados en el experimento

Se definieron siete escenarios de anaacutelisis distintos uno por cada estrategia de

desarrollo utilizada

1 Nativo para Android y nativo para iOS 2 Aplicaciones web (multiplataforma) 3 Apache Cordova (multiplataforma hibrido) 4 Appcelerator Titanium (multiplataforma interpretado) 5 NativeScript (multiplataforma interpretado) 6 Xamarin (multiplataforma compilacioacuten cruzada) 7 Corona (multiplataforma compilacioacuten cruzada)

En los seis dispositivos se llevaron a cabo pruebas para cada uno de los siete

escenarios mencionados definiendo asiacute un total de 42 casos de prueba

Con el fin de evaluar la velocidad de procesamiento se planteoacute un caacutelculo simple

que incluyoacute varias iteraciones funciones matemaacuteticas y aritmeacutetica de punto flotante que

se resume en la siguiente serie

119904119890119903119894119890 =sum sum (log2(119896) +3119896

2119895+ radic119896

100000

119896=1

+ 119896119895minus1)

5

119895=1

A modo de ejemplo en la Figura 25 se muestra el coacutedigo multiplataforma

desarrollado en Apache Cordova para el caacutelculo de la serie definida

El experimento planteado permite medir con precisioacuten la variable analizada en este

caso el tiempo de ejecucioacuten requerido para realizar un caacutelculo matemaacutetico intensivo

Este tipo de caacutelculo matemaacutetico es frecuente en diversas aplicaciones que se

ejecutan en dispositivos moacuteviles por ejemplo juegos aplicaciones con realidad

aumentada aplicaciones para tratamiento de imaacutegenes entre otras en las cuales no

siempre es posible utilizar el poder de la Unidad de Procesamiento Grafico (GPU) para

el caacutelculo

El coacutedigo fuente de los experimentos llevados a cabo se encuentra disponible en

[66]

En las siguientes secciones se describe la experimentacioacuten y se analizan los

resultados obtenidos

Capiacutetulo 4 Experimentacioacuten

65

4222 Recoleccioacuten de datos

Para cada uno de los 42 casos de prueba definidos se realizaron 30 ejecuciones

independientes del experimento disentildeado obteniendo en cada caso una muestra T = T1

T2 hellip T30 con Ti = tiempo requerido para el caacutelculo de la serie en la i-eacutesima ejecucioacuten

del experimento planteado El tiempo Ti se expresa en milisegundos

Para caracterizar cada una de las muestras obtenidas se han calculado los

estadiacutesticos y S que se corresponden con la media (o promedio muestral) y la

desviacioacuten estaacutendar muestral (ver Tabla 3)

var startTime = new Date()getTime()

var serie = 0

for ( var j=1 j lt= 5 j++ )

for ( var k=1 k lt= 100000 k++ )

series = series + (Mathlog(k)MathLN2) + (3k2j) +

Mathsqrt(k) + Mathpow(k j-1)

var finalTime = new Date()getTime()

var duration = finalTime - startTime

documentgetElementById(result)innerHTML = duration + -gt + series

Figura 25 Caacutelculo de serie coacutedigo multiplataforma desarrollado en Apache Cordova

Capiacutetulo 4 Experimentacioacuten

66

Dada la muestra T=T1 T2 hellip Tn

Media o promedio muestral = (

1

119899)sum119879119894

119899

119894=1

Desviacioacuten estaacutendar muestral 119878 = radic

1

119899 minus 1sum(119879119894 minus )2119899

119894=1

Tabla 3 Estadiacutesticos utilizados en el anaacutelisis de los datos

423 Resultados Obtenidos En la Tabla 4 se presenta una siacutentesis de los resultados obtenidos conformada por

los valores y S calculados para cada caso de prueba planteado Estos valores permiten

comparar el rendimiento de las aplicaciones generadas a partir de los distintos enfoques

de desarrollo evaluadas sobre cada uno de los seis dispositivos utilizados

Los valores presentados en la Tabla 4 y graficados con diagramas de barras en la

Figura 26 sugieren un anaacutelisis por separado de los casos con sistema operativo Android

y los casos con sistema operativo iOS Claramente las siluetas delineadas en los

diagramas de barras de la Figura 26 se repiten de forma similar en los escenarios con el

mismo sistema operativo pero se diferencian notablemente entre distintos sistemas

operativos

Nativo WebApp Apache Cordova Titanium NativeScript Xamarin Corona

DA1 53293 18627 23033 21167 18730 39517 140173

S 1614 632 1422 2495 939 895 1260

DA2 21180 9067 8577 9563 8967 21100 60053

S 1997 1248 883 764 916 669 595

DA3 76380 17273 19060 19270 18350 37933 134430

S 2898 1551 936 1680 304 831 2339

DI1 413 5710 32373 29977 25203 12543 3963

S 078 1655 1662 401 728 1103 085

DI2 413 4190 26397 24113 22343 10303 9863

S 073 538 1544 495 861 491 613

DI3 253 4167 29223 27267 22597 11053 10967

S 057 444 1082 550 277 390 275

Tabla 4 Siacutentesis de resultados obtenidos

Capiacutetulo 4 Experimentacioacuten

67

Figura 26 Diagrama de barras con las muestras recolectadas (las barras muestran el tiempo promedio expresado en milisegundos)

Capiacutetulo 4 Experimentacioacuten

68

424 Anaacutelisis de Resultados Debido a las diferencias de hardware de los dispositivos utilizados no es prudente

comparar el rendimiento de las aplicaciones nativas en Android con respecto a las de

iOS No obstante de los resultados obtenidos es posible inferir que el enfoque nativo en

iOS resulta mucho maacutes eficiente que el enfoque nativo en Android Existen diversos

factores que presumen justificar este hecho entre ellos la diferencia inherente de ejecutar

coacutedigo Objective C en iOS comparado con ejecutar coacutedigo Java en Android el cual

necesita del Android Runtime (ART) para su funcionamiento ralentizaacutendolo

Respecto de las aplicaciones web multiplataforma los resultados de rendimiento

resaltaron positivamente en relacioacuten al resto tanto en Android como en iOS Asiacute el

enfoque de desarrollo multiplataforma web seriacutea una opcioacuten conveniente para alcanzar

un buen rendimiento en todos los dispositivos moacuteviles independientemente de su sistema

operativo Sin embargo esta eleccioacuten podriacutea verse afectada por las limitaciones de estas

aplicaciones para acceder en forma completa a las capacidades especiacuteficas del dispositivo

Respecto de los enfoques hiacutebrido e interpretado -analizados a traveacutes de las

tecnologiacuteas Coacuterdova Titanium y NativeScript- es importante destacar que si bien estos

enfoques trabajan de modo distinto entre siacute tienen algo en comuacuten la ejecucioacuten de coacutedigo

JavaScript En este sentido el motor de JavaScript -encargado de convertir el coacutedigo

JavaScript en coacutedigo optimizado para que luego lo interprete un WebView- cumple un

rol determinante Las pruebas de estos enfoques en Android -que utiliza el motor de

JavaScript V8- tuvieron un comportamiento similar al enfoque web y comportamiento

superior que el enfoque nativo y el enfoque de compilacioacuten cruzada Por el contrario en

los dispositivos moacuteviles con iOS -que utiliza el motor JavaScriptCore- los resultados de

estas pruebas fueron peores que en los enfoques nativos web y de compilacioacuten cruzada

En los dispositivos moacuteviles con iOS los casos de compilacioacuten cruzada -analizados

a traveacutes de las tecnologiacuteas Xamarin y Corona- obtuvieron mejores resultados que los

casos hiacutebridos e interpretados pero mostraron peor rendimiento que el enfoque nativo y

que el enfoque web En cambio en los dispositivos moacuteviles con Android los resultados

de las pruebas con las aplicaciones construidas mediante el enfoque de compilacioacuten

cruzada fueron los peores La necesidad de ejecucioacuten de coacutedigo Java a traveacutes del Android

Runtime entre otros factores justifican este resultado

Capiacutetulo 4 Experimentacioacuten

69

425 Conclusiones Se ha presentado un estudio comparativo sobre el tiempo de procesamiento de

aplicaciones de software para dispositivos moacuteviles generadas con distintos enfoques de

desarrollo

Los escenarios de prueba disentildeados incluyeron los dos sistemas operativos para

dispositivos moacuteviles con mayor presencia en el mercado Android e iOS ejecutaacutendose

cada uno de ellos sobre dos smartphones (considerados de gama media y gama alta al

momento en que este trabajo fue escrito) y una Tablet

Sobre estos seis dispositivos se realizoacute un estudio de rendimiento para las

aplicaciones construidas seguacuten los enfoques de desarrollo nativos y multiplataforma

mediante un conjunto de aplicaciones que fueron desarrolladas para tal fin

1 Aplicacioacuten nativa para Android 2 Aplicacioacuten nativa para iOS 3 Aplicacioacuten web (multiplataforma) 4 Aplicacioacuten Apache Cordova (multiplataforma hibrido) 5 Aplicacioacuten Appcelerator Titanium 6 (multiplataforma interpretado) 7 Aplicacioacuten NativeScript (multiplataforma interpretada) 8 Aplicacioacuten Xamarin (multiplataforma compilacioacuten cruzada) 9 Aplicacioacuten Corona (multiplataforma compilacioacuten cruzada)

En todos los dispositivos con sistema operativo Android el peor rendimiento fue

evidenciado por Corona seguido por el enfoque nativo y Xamarin Esta situacioacuten es

totalmente opuesta a los resultados obtenidos sobre el sistema operativo iOS en doacutende las

tecnologiacuteas de desarrollo mencionadas se mostraron siempre entre las cuatro mejores En

particular es destacable la supremaciacutea del enfoque nativo frente a todos los demaacutes para el

caso de los dispositivos con iOS

Respecto al mejor rendimiento en los dispositivos Android no es posible identificar

claramente cuaacutel es el enfoque maacutes conveniente Tanto las aplicaciones web como

Coacuterdova NativeScript y Titanium alcanzaron buenos resultados en relacioacuten al resto

Nuevamente esta situacioacuten se contrapone con los datos obtenidos sobre los dispositivos

iOS en los que Coacuterdova Titanium y NativeScript obtuvieron las peores mediciones entre

las tecnologiacuteas utilizadas No ocurrioacute lo mismo con las aplicaciones web en iOS que

tambieacuten produjeron buenos resultados en relacioacuten al resto

Capiacutetulo 4 Experimentacioacuten

70

En liacuteneas generales independientemente del sistema operativo las aplicaciones

web han mostrado un buen rendimiento si se consideran todos los casos analizados

Actualmente al desarrollar un sistema de software existe la posibilidad de generar

su versioacuten para dispositivos moacuteviles Esta tarea muchas veces no es simple y una de las

decisiones maacutes importantes a tomar es elegir el enfoque de desarrollo

A partir de este trabajo se dispone de un indicador de rendimiento que puede ser

uacutetil para el Ingeniero de Software que debe seleccionar un enfoque de desarrollo de

software para dispositivos moacuteviles

Por otra parte no se han encontrado trabajos de otros autores donde se haya

analizado el rendimiento en todos los enfoques de desarrollo de software para dispositivos

moacuteviles Este tema tal como se indicoacute en la introduccioacuten es importante para la

comunidad de Ingenieriacutea de Software y los trabajos analizados hasta el momento se han

concentrado solo en los enfoques nativos yo hiacutebridos

43 Anaacutelisis comparativo de enfoques de Desarrollo de Aplicaciones Moacuteviles

Como se estudioacute en las secciones anteriores existen diferentes enfoques de

desarrollo de aplicaciones moacuteviles

Una opcioacuten es desarrollar aplicaciones moacuteviles nativas las cuales hacen uso de

todas las capacidades del dispositivo moacutevil y permiten una alta experiencia de usuario

debido a que las interfaces de usuario se componen por componentes nativos resultando

semejantes al resto de las interfaces del sistema operativo No obstante el desarrollo no

puede ser reutilizado para dar soporte a otras familias de sistemas operativos implicando

mayores costos de desarrollo y mantenimiento

En contraposicioacuten al desarrollo nativo surgioacute el desarrollo multiplataforma dando

la posibilidad de desarrollar un uacutenico producto y ejecutarlo en diferentes plataformas En

este sentido se estudiaron diferentes enfoques desarrollo web moacutevil hiacutebrido

interpretado y generado por compilacioacuten cruzada Cada uno de estos enfoques cuenta con

ciertas caracteriacutesticas que naturalmente los hacen diferenciar con ventajas y

desventajas

Se identificaron diversos factores que pueden ser utilizados para analizar las

Capiacutetulo 4 Experimentacioacuten

71

aplicaciones que se generan mediante los enfoques de desarrollo nativo y

multiplataforma los cuales se detallan a continuacioacuten

Experiencia de usuario conjunto de factores y elementos que hacen referencia

al nivel de satisfaccioacuten total de los usuarios cuando utilizan un producto o sistema

El resultado es la generacioacuten de una percepcioacuten positiva o negativa de dicho

servicio producto o dispositivo

Plataformas alcanzadas se ha visto en capiacutetulos anteriores que existen distintas

familias de sistemas operativos Seguacuten el modo de desarrollo elegido se puede

desarrollar aplicaciones para una plataforma especiacutefica o por varias

Costo del desarrollo el desarrollo puede ser maacutes o menos costoso seguacuten si

requiere codificar las soluciones de forma especiacutefica para cada sistema operativo

o si es posible la reutilizacioacuten de coacutedigo

Costo del mantenimiento la correccioacuten de errores o agregados de nuevas

funcionalidades puede requerir codificar de forma especiacutefica para cada sistema

operativo Ademaacutes se debe tener en cuenta si deben convivir diferentes versiones

del mismo producto

Entorno de desarrollo integrado Software que asiste al programador en la

construccioacuten de aplicaciones

Interfaces de usuario factor que analiza los tipos de componentes utilizados para

construir las interfaces de usuario Como se mencionoacute al analizar los distintos

enfoques de desarrollo la eleccioacuten de la herramienta a utilizar incide en si las

interfaces estaraacuten compuestas mediante componentes nativos o componentes web

los cuales pueden ser decorados para simular componentes nativos

Acceso total al dispositivo posibilidad de acceder mediante las herramientas de

desarrollo a todas las capacidades del dispositivo como la caacutemara sensores entre

otros

Modo de instalacioacuten se refiere a si la aplicacioacuten puede ser instalada desde las

tiendas de aplicaciones o es accesible sin instalacioacuten desde un navegador de

Internet

Rendimiento factor que analiza la ejecucioacuten de tareas y los tiempos asociados

Capiacutetulo 4 Experimentacioacuten

72

en su resolucioacuten

Uso offline capacidad que tiene la aplicacioacuten de funcionar sin estar conectada a

internet

Distribucioacuten a traveacutes de las tiendas posibilidad de descargar la aplicacioacuten desde

las tiendas de aplicaciones

Categoriacuteas de aplicaciones a desarrollar tipo de aplicacioacuten que se desea

desarrollar

Porcentaje de coacutedigo a reutilizar Cantidad de liacuteneas de coacutedigo con respecto al

total que pueden ser reutilizadas para en la generacioacuten de aplicaciones

multiplataforma

Con el objetivo de estudiar coacutemo se comportan e inciden estos factores en los

distintos enfoques de desarrollo se realizoacute un estudio comparativo de los diferentes

criterios a tener en cuenta Dicho estudio se sintetiza en la Tabla 5

Capiacutetulo 4 Experimentacioacuten

73

Factor a analizar Desarrollo Nativo Desarrollo Web Desarrollo Hiacutebrido Desarrollo

Interpretado

Desarrollo Generado

por Compilacioacuten

Cruzada

Experiencia de Usuario

Alta Muy Baja Baja Alta Alta

Plataformas alcanzadas

Se desarrolla

exclusivamente

para una

plataforma destino

Cualquier

plataforma Se

necesita solo un

navegador y acceso a

internet

Es posible compilar

para Android iOS

Windows Phone

Es posible compilar

para Android iOS

Windows Phone

Es posible compilar

para Android iOS

Windows Phone

Costo del desarrollo

Muy Alto Muy Bajo Bajo Medio Medio a Alto

Costo del mantenimiento

Muy Alto Muy Bajo Medio Alto Alto a Muy Alto

Entorno de desarrollo integrado

IDE uacutenico por SO Muacuteltiples opciones Plugins para IDE

geneacutericos

Algunos frameworks

disponen de IDE

especiacutefico

IDE uacutenico por

framework

Interfaces de usuario

Nativas Web Web Nativas Nativas

Acceso total al dispositivo

Si No Si Si Si

Modo de instalacioacuten

Descargar desde la Sin instalaciones Descargar desde la Descargar desde la Descargar desde la

Capiacutetulo 4 Experimentacioacuten

74

Factor a analizar Desarrollo Nativo Desarrollo Web Desarrollo Hiacutebrido Desarrollo

Interpretado

Desarrollo Generado

por Compilacioacuten

Cruzada

tienda de

aplicaciones e

instalar

tienda de aplicaciones

e instalar

tienda de aplicaciones e

instalar

tienda de aplicaciones e

instalar

Rendimiento Muy Alto Muy Bajo Bajo a Medio Alto Medio a Alto

Uso offline Si No Si Si Si

Distribucioacuten a traveacutes de las tiendas

Si No Si Si Si

Categoriacutea de aplicaciones a desarrollar

Aplicaciones que

demandan muchos

recursos o que

requiere una alta

experiencia de

usuario

Sitios web existentes Sitios web

encapsulados como

aplicacioacuten para ser

distribuidas a traveacutes

de tiendas

Aplicaciones simples a

complejas

Aplicaciones simples a

complejas

Porcentaje de Coacutedigo a reutilizar

0 100 Cerca del 100 Cerca del 90 Entre el 60 y 85

Tabla 5 Anaacutelisis comparativo de enfoques de desarrollo de aplicaciones moacuteviles

Capiacutetulo 5 Conclusiones

75

Capiacutetulo 5 Conclusiones

Inicialmente los dispositivos moacuteviles fueron pensados y disentildeados con un propoacutesito

particular A traveacutes de los antildeos el crecimiento tecnoloacutegico ha permitido incorporar

funcionalidades adicionales lo que ha posibilitado expandir el marco de uso

Actualmente el poder de coacutemputo subyacente en una gran variedad de dispositivos

moacuteviles ha generado nuevas posibilidades lo que constituye un reto para los ingenieros

de software

Asimismo y tal como se mencionoacute en capiacutetulos anteriores existen diversos

sistemas operativos para dispositivos moacuteviles siendo los maacutes populares Android iOS y

Windows Phone Debido a que el eacutexito de un producto de software estaacute vinculado en

gran parte a su uso masivo surge la necesidad de desarrollar aplicaciones moacuteviles

teniendo en cuenta cada una de estas plataformas

El desarrollo de software para dispositivos moacuteviles tiene caracteriacutesticas propias que

difieren del desarrollo tradicional Esta actividad reciente impensada deacutecadas atraacutes

marca un antes y un despueacutes en la evolucioacuten de la Ingenieriacutea de Software Es de esperar

que dicha evolucioacuten continuacutee y por consiguiente que los enfoques de desarrollo para

dispositivos moacuteviles cambien o sean reemplazados por otros Es claro que por el

momento existen cinco posibilidades de desarrollo de una misma aplicacioacuten moacutevil

Aplicaciones nativas

Aplicaciones web

Aplicaciones hiacutebridas

Aplicaciones interpretadas

Aplicaciones generadas por compilacioacuten cruzada

Para un completo anaacutelisis de cada enfoque de desarrollo es que se disentildearon una

serie de casos de estudio El primero de ellos consistioacute en desarrollar una aplicacioacuten moacutevil

para cada enfoque de desarrollo presentado Teniendo este primer objetivo definido se

decidioacute extender el entorno virtual de ensentildeanza y aprendizaje WebUNLP a traveacutes de

una aplicacioacuten moacutevil enfocada en la cartelera de novedades de los cursos La aplicacioacuten

Capiacutetulo 5 Conclusiones

76

moacutevil debiacutea permitir el ingreso de alumnos y docentes con las mismas credenciales que

las utilizadas en la versioacuten web y debiacutea mostrar informacioacuten sincronizada con la web

sobre las novedades publicadas en las carteleras de los cursos Asimismo cuando los

docentes publiquen novedades aquellos alumnos pertenecientes al curso deben recibir

una notificacioacuten en su dispositivo moacutevil

Luego de desarrollar las aplicaciones moacuteviles para cada enfoque de desarrollo se

pueden elaborar algunas conclusiones

Se destaca la simpleza a la hora de generar la versioacuten web moacutevil pero se observan

limitaciones al no poder acceder a todas las capacidades de hardware del dispositivo

El desarrollo de las aplicaciones nativas resultoacute oacuteptimo si se lo compara con los

requerimientos oportunamente planteados con la desventaja de que las aplicaciones no

son portables implicando desarrollos especiacuteficos para cada plataforma que se desee

cubrir Por otro lado el desarrollo de las aplicaciones hibridas ndashutilizando PhoneGap y

Sencha- lograron conjugar la simpleza del desarrollo web con el uso de todas las

capacidades del dispositivo posicionaacutendolo como una eleccioacuten realmente interesante De

igual manera la aplicacioacuten interpretada desarrollada mediante Titanium logroacute resolver

todos los requerimientos previamente planteados se destaca que el desarrollo fue

relativamente simple y es posible reutilizar todo el coacutedigo entre plataformas El hecho de

obtener interfaces totalmente nativas la posiciona como la alternativa ideal Por uacuteltimo

las aplicaciones generadas con el enfoque de compilacioacuten cruzada (Delphi y Xamarin)

lograron cumplir los requerimientos planteados la obtencioacuten de interfaces totalmente

nativas es algo a destacar pero conlleva un alto costo ya que se debe disentildear las interfaces

para cada plataforma de manera independiente

El segundo experimento del presente trabajo consistioacute en analizar el rendimiento

de las aplicaciones generadas mediante cada enfoque de desarrollo En total se

desarrollaron mediante distintas tecnologiacuteas nueve aplicaciones Las pruebas se

realizaron en los dos sistemas operativos de mayor relevancia Android e iOS a traveacutes de

seis dispositivos (cuatro smartphones y dos tablets)

En todos los dispositivos con sistema operativo Android el peor rendimiento se

encontroacute en la aplicacioacuten generada por Corona seguido por el enfoque nativo y Xamarin

En cambio estas tecnologiacuteas se mostraron siempre entre las cuatro mejores sobre el

sistema operativo iOS

Capiacutetulo 5 Conclusiones

77

Respecto al mejor rendimiento en los dispositivos Android no es posible identificar

claramente cuaacutel es el enfoque maacutes conveniente Tanto las aplicaciones web como

Coacuterdova NativeScript y Titanium obtuvieron buenos resultados de rendimiento en

relacioacuten al resto Nuevamente esta situacioacuten se contrapone con los datos obtenidos sobre

los dispositivos iOS en los que Coacuterdova Titanium y NativeScript obtuvieron las peores

mediciones entre las tecnologiacuteas utilizadas No ocurrioacute lo mismo con las aplicaciones web

en iOS que tambieacuten produjeron buenos resultados en relacioacuten al resto

En liacuteneas generales independientemente del sistema operativo las aplicaciones

web han mostrado un buen rendimiento si se consideran todos los casos analizados

Por uacuteltimo se elaboroacute un anaacutelisis comparativo de las caracteriacutesticas inherentes a

cada enfoque de desarrollo Se identificaron ciertos factores de intereacutes que la comunidad

de ingenieriacutea de software considera al elegir queacute tecnologiacutea utilizar y se analizoacute su

impacto en cada enfoque de desarrollo

Capiacutetulo 6 Trabajo Futuro

78

Capiacutetulo 6 Trabajo Futuro

Si bien se estudiaron en el presente trabajo diversas tecnologiacuteas para el desarrollo

de aplicaciones moacuteviles se planea profundizar el estudio analizando otras herramientas

multiplataforma disponibles en el mercado como Ionic [32] NativeScript [38] Applause

[40] React Native [67] entre otras

Ademaacutes se plantea como liacutenea de trabajo futuro ampliar el anaacutelisis comparativo de

rendimiento incluyendo otros aspectos del desarrollo para dispositivos moacuteviles como

por ejemplo el acceso a disco el consumo de bateriacutea y el tiempo de renderizacioacuten de

imaacutegenes

Por uacuteltimo es deseable estudiar la experiencia de usuario en las aplicaciones

generadas por cada enfoque de desarrollo de aplicaciones para dispositivos moacuteviles

Capiacutetulo 6 Trabajo Futuro

79

Bibliografiacutea

80

Bibliografiacutea

[1] A Talukder H Ahmed and R Yavagal Mobile Computing Technology Applications and Service Creation Tata McGraw-Hill Ed 2010

[2] Abrahamsson P et al Mobile-D An Agile Approach for Mobile Application Development in In Companion To the 19th Annual ACM SIGPLAN Conference on Object-Oriented Programming Systems Languages and Applications (OOPSLA 04 ) Vancouver Canada 2004 pp 174-175

[3] P Abrahamsson Mobile software development - the business opportunity of today in Proceedings of the International Conference on Software Development Reykjavik 2005

[4] I S Hayes Just Enough Wireless Computing Prentice Hall Professional Technical 2002

[5] Stelios Xinogalos Spyros Xanthopoulos A Comparative Analysis of Cross-platform Development Approaches for Mobile Applications in Proceedings of the 6th Balkan Conference in Informatics Thessaloniki Greece 2013 pp 213-220

[6] Tolety SB Raj R A study on approaches to build cross-platform mobile applications and criteria to select appropriate approach in India Conference (INDICON) 2012 Annual IEEE India 2012

[7] Yonathan Aklilu Redda Cross platform Mobile Applications Development in Master in Information Systems Norwegian University of Science and Technology Norway 2012

[8] Datta SK Bonnet C Nikaein N Dalmasso I Survey comparison and evaluation of cross platform mobile application development tools in Wireless Communications and Mobile Computing Conference (IWCMC) Cagliari Sardinia Italia 2013

[9] Lisandro Deliacutea Nicolaacutes Galdaacutemez Pablo Thomas and Patricia Pesado An Experimental Analysis of Application Types for Mobile Devices in Computer Science amp Technology Series - XIX Argentine Congress of Computer Science - Selected Papers Editorial de la Universidad de La Plata 2014 pp 173 -183

[10] Lisandro Deliacutea Nicolaacutes Galdamez Pablo Thomas Leonardo Corbalaacuten and Patricia Pesado Multi-Platform Mobile Application Development Analysis in IEEE Ninth International Conference on Research Challenges in Information Science - IEEE RCIS Atenas Grecia May 2015

[11] Telam [Online] httpwwwtelamcomarnotas201504102073-telefonia-movil-lineas-activashtml

Bibliografiacutea

81

[12] RTVE [Online] httpwwwrtveesnoticias20110212evolucion-del-telefono-movil-del-zapatofono-smartphones404523shtml

[13] Vodafone [Online] httpblogvodafonecouk20130829vodafone-uks-ceo-guy-laurence-4g-finally-has-a-purpose

[14] Muy Canal [Online] httpwwwmuycanalcom20140131futuro-del-telefono-movil

[15] Statcounter [Online] httpgsstatcountercom

[16] Anthony I Wasserman Software Engineering Issues for Mobile Application Development 2010

[17] Statista [Online] httpwwwstatistacom

[18] Lisandro Deliacutea Nicolaacutes Galdamez Pablo Thomas Leonardo Corbalaacuten and Patricia Pesado Anaacutelisis Experimental de desarrollo de Aplicaciones Moacuteviles Multiplataforma in XX Congreso Argentino de Ciencias de la Computacioacuten CACIC 2014 San Justo Argentina octubre 2014

[19] Lisandro Deliacutea Nicolaacutes Galdamez Pablo Thomas and Patricia Pesado Un Anaacutelisis Experimental de Tipo de Aplicaciones para Dispositivos Moacuteviles in XIX Congreso Argentino de Ciencias de la Computacioacuten CACIC 2013 Mar del Plata Argentina 2013

[20] Abhinay Puvvala Amitava Dutta Rahul Roy and Priya Seetharaman Mobile Application Developersrsquo Platform Choice Model in 2016 49th Hawaii International Conference on System Sciences (HICSS) Koloa Hawaii 2016

[21] Android Dashboard [Online] httpsdeveloperandroidcomaboutdashboardsindexhtml

[22] Xcode [Online] httpsdeveloperapplecomxcode

[23] KW Tracy Mobile Application Development Experiences on Applersquos iOS and

Android OS Potentials IEEE vol 31 no 4 July-Aug 2012

[24] Google Recommendations for building smartphone-optimized websites [Online] httpgooglewebmastercentralblogspotcomar

[25] Bootstrap [Online] httpgetbootstrapcom

[26] Foundation [Online] httpfoundationzurbcom

[27] PhoneGap [Online] httpphonegapcom

[28] Apache Cordova [Online] httpscordovaapacheorg

Bibliografiacutea

82

[29] Adobe PhoneGap Build [Online] httpsbuildphonegapcom

[30] CocoonJS [Online] httpscocoonio

[31] Ludei [Online] httpswwwludeicom

[32] Ionic [Online] httpionicframeworkcom

[33] Sencha [Online] httpswwwsenchacomproductstouchoverview

[34] A Kosmaczewski Sencha Touch 2 Up and Running OrsquoReilly 2013

[35] Appcelerator Titanium [Online] httpwwwappceleratorcomproduct

[36] Backbone [Online] httpbackbonejsorg

[37] Underscorejs [Online] httpunderscorejsorg

[38] NativeScript [Online] httpswwwnativescriptorg

[39] TypeScript [Online] httpswwwtypescriptlangorg

[40] applause [Online] httpwwwapplausecom

[41] Xamarin [Online] wwwxamarincom

[42] Delphi [Online] httpswwwembarcaderocomproductsdelphi

[43] RubyMotion [Online] httpwwwrubymotioncom

[44] Xtext [Online] httpwwweclipseorgXtext

[45] Mono [Online] httpwwwmono-projectcom

[46] [Online] httpswebunlpeadunlpeduar

[47] I Salmre Writing Mobile Code Essential Software Engineering for Building Mobile Applications Addison Wesley Professional 2005

[48] Mapbox [Online] httpswwwmapboxcomlabstwitter-gnipbrands

[49] Ruby S Richardson L RESTful Web Services OrsquoReilly Media 2007

[50] Matthew J Hamm Wireframing Essentials Packt Publishing 2014

[51] GCM [Online] httpsdevelopersgooglecomcloud-messaging

[52] iOS Human Interface Guidelines [Online] httpsdeveloperapplecomioshuman-interface-guidelinesoverviewdesign-principles

[53] APN [Online] httpdeveloperapplecomlibrarymacdocumentationNetworkingInternetConceptual

Bibliografiacutea

83

RemoteNotificationsPGChaptersApplePushServicehtmlapple_refdocuidTP40008194-CH100-SW9

[54] Mark Norm Norman Francis Christian Heilmann Web Development Solutions Ajax APIs Libraries and Hosted Services Made Easy Apress 2007

[55] JqueryMobile [Online] httpsjquerymobilecom

[56] Pushwoosh [Online] httpsgithubcomPushwooshpushwoosh-phonegap-plugin

[57] J Clark Creating Mobile Apps with Sencha Touch 2 Packt Publishing 2013

[58] Kinvey [Online] httpwwwkinveycom

[59] Ali Mesbah Philippe Kruchten Mona Erfani Joorabchi Real Challenges in Mobile App Development in ACM IEEE International Symposium on Empirical Software Engineering and Measurement Baltimore Maryland US 2013

[60] Andreacute Nitze Andreas Schmietendorf Florian Roumlsler Towards a Mobile Application Performance Benchmark in ICIW 2014 The Ninth International Conference on Internet and Web Applications and Services Paris France 2014

[61] Sebastian Hanschke and Tim A Majchrzak Henning Heitkoumltter Comparing Cross Platform Development approaches For Mobile Applications in 8th International Conference on Web Information Systems and Technologies (WEBIST) Porto Portugal 2012

[62] HW Kim SG Chung CS Jung Measuring Software Quality A Survey of ISOIEC 9126 IEEE Software vol 21 no 5 pp 88 ndash 92 SeptemberOctober 2004

[63] Luis Corral Anton B Georgiev Alberto Sillitti and Giancarlo Succi Can execution time describe accurately the energy consumption of mobile apps An experiment in Android GREENS 2014 Proceedings of the 3rd International Workshop on Green and Sustainable Software pp 31-37 June 2014

[64] Brian Leroux Andre Charland Mobile application development web vs native Magazine Communications of the ACM vol 54 no 5 pp 49-53 May 2011

[65] Luis Corral Alberto Sillitti and Giancarlo Succi Mobile multiplatform development An experiment for performance analysis in The 9th International Conference on Mobile Web Information Systems (MobiWIS) Ontario Canada 2012

[66] Repositorio Git III-LIDI [Online] httpsgitlabcomiii-lidiperformance-assessment-multiplatform-mobile-applicationstreemaster

[67] React Native [Online] httpsfacebookgithubioreact-native

[68] Lisandro Galdaacutemez Nicolaacutes Corbalaacuten Leonardo Thomas Pablo Pesado Patricia Deliacutea Un anaacutelisis comparativo de rendimiento en aplicaciones moacuteviles

Bibliografiacutea

84

multiplataforma in XXI Congreso Argentino de Ciencias de la Computacioacuten Juniacuten 2015

Page 7: Desarrollo de Aplicaciones Móviles Multiplataforma

Prefacio

7

Prefacio

La computacioacuten moacutevil se puede definir como un entorno de coacutemputo con movilidad

fiacutesica El usuario de un entorno de computacioacuten moacutevil seraacute capaz de acceder a datos

informacioacuten u otros objetos loacutegicos desde cualquier dispositivo en cualquier red mientras

estaacute en movimiento [1]

Estos dispositivos tienen caracteriacutesticas fiacutesicas distintivas entre las cuales se

destacan su tamantildeo peso tamantildeo de pantalla su mecanismo de ingreso de datos y su

capacidad de expansioacuten Ademaacutes tienen un rol esencial los aspectos teacutecnicos incluyendo

el poder de procesamiento espacio de memoria autonomiacutea de bateriacutea sistema operativo

entre otros

El desarrollo de software para dispositivos moacuteviles plantea nuevos desafiacuteos

originados en las caracteriacutesticas uacutenicas de esta actividad La necesidad de tratar con

diversas plataformas estaacutendares protocolos y tecnologiacuteas de red las capacidades

limitadas aunque en continua evolucioacuten de los dispositivos y las exigencias de tiempo

del mercado son soacutelo algunos de los problemas a tratar [2]

Las aplicaciones moacuteviles son generadas en un entorno dinaacutemico e incierto

Generalmente son pequentildeas no criacuteticas aunque no menos importantes Estaacuten destinadas

a un gran nuacutemero de usuarios finales y son liberadas en versiones raacutepidas para poder

satisfacer las demandas del mercado [3]

Por todo lo expuesto el desarrollo de software para dispositivos moacuteviles difiere

considerablemente del tradicional [4] y acompantildea el crecimiento y evolucioacuten de la

Ingenieriacutea de Software como disciplina

Para maximizar su presencia en el mercado un producto de software debe

ejecutarse en la mayor cantidad de dispositivos posible Una solucioacuten consiste en el

desarrollo nativo de la aplicacioacuten en cada una de las plataformas existentes utilizando el

entorno de desarrollo integrado (IDE por sus siglas en ingleacutes) el lenguaje y las

herramientas propias de cada plataforma [5] Sin embargo al no ser posible la

reutilizacioacuten de coacutedigo fuente entre diferentes plataformas el esfuerzo se multiplica y se

elevan los costos de desarrollo actualizacioacuten y distribucioacuten de nuevas versiones [6]

Prefacio

8

El desarrollo multiplataforma a diferencia del desarrollo nativo se centra en el

reuacuteso de coacutedigo La construccioacuten de aplicaciones web moacuteviles constituye un ejemplo que

representa este enfoque Sin embargo las limitaciones derivadas de su ejecucioacuten dentro

de un navegador ha motivado a los ingenieros de software a dirigir su atencioacuten hacia otro

tipo de aplicaciones multiplataforma con el que se obtienen resultados maacutes cercanos a las

soluciones nativas En este contexto existen diversas sub-clasificaciones [5] [7] [8] y es

de intereacutes analizar las caracteriacutesticas inherentes a cada una de ellas a traveacutes de la

construccioacuten de un prototipo experimental

Trabajos publicados

Los resultados parciales del presente trabajo dieron lugar al siguiente capiacutetulo de

libro

ldquoAn Experimental Analysis of Application Types for Mobile Devicesrdquo [9]

Lisandro Deliacutea Nicolaacutes Galdaacutemez Pablo Thomas Patricia Pesado

Computer Science amp Technology Series - XIX Argentine Congress of Computer

Science - Selected Papers Editorial de la Universidad de La Plata 2014 p173 -

183 ISBN 978-987-1985-49-4

Asiacute mismo se realizaron publicaciones en los siguientes eventos cientiacuteficos

ldquoMulti-Platform Mobile Application Development Analysisrdquo [10]

Lisandro Deliacutea Nicolaacutes Galdamez Pablo Thomas Leonardo Corbalaacuten Patricia

Pesado

IEEE Ninth International Conference on Research Challenges in Information

Science - IEEE RCIS

Atenas Grecia 13 al 15 de mayo de 2015

Forma de Publicacioacuten Proceedings - CD ROM

ISBN 978-1-4673-6630-4

Organizacioacuten del trabajo

Este trabajo se organiza de la siguiente manera

El capiacutetulo 1 resentildea la evolucioacuten de los dispositivos moacuteviles

Prefacio

9

En el capiacutetulo 2 se describen conceptos esenciales del desarrollo de aplicaciones

para dispositivos moacuteviles

En el capiacutetulo 3 se profundizan conceptos relacionados al desarrollo de

aplicaciones moacuteviles multiplataforma y se estudian diferentes metodologiacuteas y

herramientas

El capiacutetulo 4 contiene un conjunto de experimentos sobre desarrollos de

aplicaciones moacuteviles multiplataforma y el anaacutelisis de los resultados obtenidos

El capiacutetulo 5 presenta las conclusiones obtenidas y el capiacutetulo 6 los trabajos

futuros propuestos en relacioacuten al tema

Finalmente se detalla la bibliografiacutea utilizada en el presente trabajo

Capiacutetulo 1 Tecnologiacutea Moacutevil

10

Capiacutetulo 1 Tecnologiacutea Moacutevil

Hubo una eacutepoca en el que los teleacutefonos moacuteviles no teniacutean pantalla taacutectil ni

permitiacutean grabar viacutedeo ni siquiera podiacutean conectarse a Internet Tampoco podiacutean enviar

y recibir mensajes Simplemente permitiacutean la funcioacuten baacutesica de hablar por teleacutefono

Dos deacutecadas atraacutes los dispositivos moacuteviles eran aparatos de gran tamantildeo y pesados

Soacutelo algunas pocas personas podiacutean acceder a estos dispositivos ya que se consideraban

artiacuteculos de lujo Pero este escenario fue cambiando paulatinamente llevando a que el

celular se transforme en un elemento imprescindible en nuestras vidas En Argentina en

el antildeo 2003 habiacutea 4 millones de liacuteneas activas En la actualidad la cifra llega a 37 millones

de liacuteneas activas y 62 millones de liacuteneas declaradas [11]

11 Los inicios

La Segunda Guerra Mundial originoacute la necesidad de comunicarse a distancia por

lo que Motorola creoacute un equipo militar llamado Handie Talkie H12-16 para

comunicaciones viacutea ondas de radio

Su salto a los sistemas civiles sucedioacute a finales de la deacutecada de los 40 con sistemas

de radio analoacutegicos en frecuencias FM principalmente y con servicios en las bandas HF

y VHF ofrecidos por la americana Bell

En 1955 Ericsson comercializoacute el Mobile Telephone System A (MTA) Phone

(Figura 1) un teleacutefono que pesaba 40 kilogramos y que se instalaba en automoacuteviles

Como curiosidad tuvo un total de 125 usuarios hasta 1967

Capiacutetulo 1 Tecnologiacutea Moacutevil

11

Figura 1 Mobile Telephone System A (MTA)

La primera llamada moacutevil data del 3 de abril de 1973 cuando Martin Cooper

(Figura 2) en aquel entonces ingeniero electroacutenico de Motorola realizoacute una llamada

desde la calle en Nueva York La llamada fue realizada mediante un prototipo del

Motorola DynaTAC 8000x Considerado el primer moacutevil del mundo pesaba cerca de un

kilo y mediacutea 33x45x89 centiacutemetros su bateriacutea teniacutea uacutenicamente la autonomiacutea de una

hora en conversacioacuten necesitando diez horas para cargarse Su costo era de USD 4000

Capiacutetulo 1 Tecnologiacutea Moacutevil

12

Figura 2 Martin Cooper el autor de la primer llamada moacutevil

El verdadero conocimiento popular del teleacutefono moacutevil no llegoacute hasta la deacutecada de

los 90 con la segunda generacioacuten de estos dispositivos

La comunicacioacuten digital permitioacute mejorar la calidad de la escucha de voz la

reduccioacuten del tamantildeo y peso de los dispositivos utilizados y sobre todo el incremento de

compantildeiacuteas operadoras que dieron paso a un mercado maacutes competitivo y accesible

Los usuarios fueron testigos de avances sorprendentes como la identificacioacuten de

llamada o los mensajes de texto que constituyeron a una nueva forma de comunicacioacuten

Vertiginosamente el celular pasoacute de ser considerado una herramienta de trabajo a

generalizarse en todos los estratos de la sociedad

Seguacuten avanzaba la deacutecada del 90 los teleacutefonos moacuteviles iban adaptaacutendose a esas

novedades incorporando pantallas cada vez de mayor tamantildeo y en los maacutes avanzados

haciendo desaparecer la antena que era necesario desplegar para poder realizar una

comunicacioacuten en condiciones adecuadas

Poco a poco los dispositivos empezaron a integrar cada vez maacutes funciones aviso

por vibracioacuten juegos bluetooth infrarrojos politonos y ya con el cambio de siglo

pantallas a color y caacutemaras fotograacuteficas Maacutes adelante llegariacutea la grabacioacuten de viacutedeo el

acceso a Internet las pantallas taacutectiles entre otras [12]

Capiacutetulo 1 Tecnologiacutea Moacutevil

13

12 Evolucioacuten de los protocolos para redes de comunicaciones

Hubiera sido imposible el auge de los teleacutefonos moacuteviles sin la estandarizacioacuten

mejora y evolucioacuten de los protocolos para redes de comunicaciones y su soporte por las

operadoras Asiacute tras las primeras comunicaciones viacutea ondas de radio con banda de

frecuencias por debajo de los 600 kHz las posteriores en AM y FM los servicios de Bell

y Ericsson en los antildeos 50 y 60 llegoacute esa primera llamada de 1973 que popularizoacute todo el

sector

La primera generacioacuten 1G fue responsabilidad de Ericsson con el sistema Telefoniacutea

Moacutevil Noacuterdica (NMT) y seguiacutea utilizando canales analoacutegicos En 1986 la compantildeiacutea

modernizoacute el sistema funcionando a frecuencias superiores de 900 MHz posibilitando

servicio para un mayor nuacutemero de usuarios Ademaacutes del NMT en los 80 se desarrollaron

otros sistemas de telefoniacutea moacutevil como el Sistema Telefoacutenico Moacutevil Avanzado (AMP)

desarrollado por los laboratorios Bell

La segunda generacioacuten 2G llegoacute en la deacutecada de los 90 con sistemas como Global

System for Mobile Communications (GSM) Estaacutendar Interno 136 (IS-136) Red

Mejorada Digital Integrada (iDEN) y el Estaacutendar Interno 95 (IS-95) GSM fue el

desarrollo maacutes relevante ya que fue el estaacutendar europeo de telefoniacutea moacutevil digital En el

proyecto participaron 26 compantildeiacuteas europeas de telecomunicaciones y en 1992 se

pusieron en marcha las primeras redes europeas de GSM-900 y los primeros teleacutefonos

moacuteviles GSM Ademaacutes de Europa GSM ha terminado imponieacutendose tambieacuten en Asia

Ameacuterica Latina Oceaniacutea y una parte de Ameacuterica del Norte

La necesidad de mayores velocidades de transmisioacuten de datos y mayores

capacidades que permitieran nuevos servicios dieron paso a la Tercera Generacioacuten (3G)

no sin antes pasar por el 25G que proporcionoacute el General Packet Radio Service (GPRS)

El estaacutendar europeo es el Universal Mobile Telecommunications System (UMTS) basado

en la tecnologiacutea W-CDMA y estaacute gestionado por la organizacioacuten 3GPP tambieacuten

responsable de GSM GPRS y Enhanced Data Rates for GSM Evolution (EDGE)

La Cuarta Generacioacuten (4G) sucede a las tecnologiacuteas 2G y 3G y ofrece entre otras

mejoras mayor seguridad y Calidad de Servicio (QoS) junto a velocidades de acceso

muy superiores a las anteriores (mayores a 100 Mbits en movimiento y a 1 Gbits en

Capiacutetulo 1 Tecnologiacutea Moacutevil

14

reposo) Estaacute basada completamente en el protocolo IP siendo un sistema de sistemas y

una red de redes que se alcanza gracias a la convergencia entre las redes de cables e

inalaacutembricas Seguacuten Vodafone ldquoel 4G tiene finalmente una razoacuten y es el entretenimientordquo

[13] La norma Long Term Evolution (LTE) es la maacutes extendida aunque no la uacutenica

existente

5G seraacute la nueva revisioacuten del sistema de conexioacuten de red sin cables y se espera que

esteacute disponible en el antildeo 2020 (Figura 3) en paiacuteses como Corea del Sur como asiacute tambieacuten

en Europa Como 4G la mayor velocidad de transferencia seraacute su mayor avance con

velocidades de descarga de hasta 10 Gbps (125 GBs) [14]

Figura 3 Evolucioacuten de los protocolos para redes de comunicacioacuten moacuteviles

13 La actualidad

Muchas de las actividades que un tiempo atraacutes soliacutean hacerse desde una

computadora tales como revisar el correo electroacutenico escuchar muacutesica agendar una

nueva cita en el calendario compartir fotos en alguna red social entre muchiacutesimas otras

en nuestros diacuteas se llevan a cabo de forma natural desde los dispositivos moacuteviles La

Figura 4 muestra coacutemo los dispositivos moacuteviles les han ganado terreno a los equipos

Capiacutetulo 1 Tecnologiacutea Moacutevil

15

tradicionales denominados lsquode escritoriorsquo

Figura 4 Comparacioacuten entre plataformas [15]

En la actualidad existen cientos de modelos diferentes de dispositivos moacuteviles y

los fabricantes siguen innovando intentando destacarse sobre la competencia Hoy en diacutea

no nos sorprende encontrar dispositivos moacuteviles con procesadores quad-core de 22 Ghz

Incluso ya se comienzan a conocer prototipos de dispositivos con ocho o diez nuacutecleos

De la mano de los procesadores la memoria RAM de los dispositivos moacuteviles

tambieacuten ha crecido considerablemente llegando a comercializarse dispositivos con 3 GB

de memoria

La caacutemara de los dispositivos es otra de las capacidades que maacutes ha progresado

llegando a encontrarse sensores de 20 MP y la posibilidad de grabar videos en formato

UHD 4K (3840 x 2160)

El tamantildeo de las pantallas y sus resoluciones fueron otra de las caracteriacutesticas que

maacutes han evolucionado Es posible encontrar dispositivos con pantallas de 5 pulgadas con

posibilidad de visualizar 16 millones de colores y con resoluciones Quad HD (2560 x

1440)

La tecnologiacutea de las bateriacuteas es un aspecto en que no se ha logrado grandes avances

en el sector ni se pronostican grandes progresos a corto plazo Incluso la llegada de chips

Capiacutetulo 1 Tecnologiacutea Moacutevil

16

maacutes potentes mayores pantallas o el 4G disminuiraacuten auacuten maacutes la autonomiacutea de las bateriacuteas

El uacuteltimo aspecto a mencionar es el de las capacidades del dispositivo Ademaacutes de

los ya claacutesicos sensores Global Positioning System (GPS) la capacidad de conectividad

viacutea bluetooth infrarrojo y WIFI hoy surge una diversidad de opciones que pueden

disponer los teleacutefonos inteligentes

Por el lado de la conectividad cada vez es maacutes comuacuten encontrar terminales con

mecanismos de comunicacioacuten Near Field Communication (NFC) o WIFI Direct

Con respecto a los sensores actualmente existen dispositivos que cuentan con

aceleroacutemetros giroscopios y magnetoacutemetros los cuales brindan a los desarrolladores de

aplicaciones la posibilidad de controlar la posicioacuten del aparato la aceleracioacuten que sufre

el dispositivo con respecto a la fuerza de la gravedad etc Tambieacuten es comuacuten el uso de

sensores de proximidad por ejemplo para apagar la pantalla mientras se atiende una

llamada El sensor de luminosidad permite medir el brillo de la luz ambiental Asiacute el

software del teleacutefono utiliza estos datos para ajustar el brillo de la pantalla

automaacuteticamente hacieacutendola maacutes clara o maacutes oscura

Los uacuteltimos smartphones de gama alta tambieacuten son capaces de medir la presioacuten

atmosfeacuterica a traveacutes de un baroacutemetro Los datos que mide el dispositivo sirven para

determinar en queacute nivel por encima del mar se encuentra el teleacutefono lo que se traduce en

la mejora de la precisioacuten del GPS

Incluso ya existen dispositivos que cuentan con un sensor de humedad del aire el

cual permite controlar los niveles de humedad para por ejemplo ayudar a las personas

con problemas respiratorios

Como si todo esto fuese poco existen modelos con podoacutemetro -para medir con

precisioacuten los pasos que da el usuario- pulsoacutemetro -para medir las pulsaciones a traveacutes de

los vasos sanguiacuteneos de los dedos- y hasta sensor de huellas digitales para cuestiones

relativas a la seguridad

Por lo anteriormente dicho los desarrolladores de aplicaciones para dispositivos

moacuteviles de la actualidad tienen el desafiacuteo de poder manipular desde sus aplicaciones

todas las posibilidades descriptas

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

17

Capiacutetulo 2 Desarrollo de

Aplicaciones Moacuteviles Nativas

Si bien el desarrollo de aplicaciones para dispositivos moacuteviles se remonta por lo

menos a 10 antildeos atraacutes ha habido un crecimiento exponencial desde que se abrioacute la tienda

de aplicaciones de iPhone en julio de 2008 Desde entonces los fabricantes de

dispositivos han creado tiendas de aplicaciones para otros dispositivos moacuteviles

incluyendo Android BlackBerry Nokia Ovi Windows Phone entre otros [16]

Actualmente el desarrollo de aplicaciones para dispositivos moacuteviles es un campo

en evolucioacuten con gran intereacutes econoacutemico y cientiacutefico Una prueba de esto es que para

Julio del 2014 se disponiacutean de maacutes de 3 millones de aplicaciones entre las principales

tiendas virtuales de aplicaciones Y solamente en el antildeo 2013 se contabilizaron 101

billones de descargas de aplicaciones moacuteviles en todo el mundo de las cuales 9 billones

fueron descargas pagas y 92 billones descargas gratuitas [17]

Con el actual creciente nuacutemero de plataformas moacuteviles desarrollar aplicaciones

moacuteviles se hizo muy difiacutecil para las empresas ya que necesitan desarrollar las mismas

aplicaciones para cada plataforma de destino

El desarrollo de aplicaciones nativas es la forma natural de implementar

aplicaciones moacuteviles Las aplicaciones nativas son concebidas para ejecutarse en una

plataforma especiacutefica es decir se debe considerar el tipo de dispositivo el sistema

operativo a utilizar y su versioacuten

Las aplicaciones nativas se desarrollan utilizando un entorno de desarrollo

integrado (IDE) que proporciona las herramientas de desarrollo necesarias para la

construccioacuten y depuracioacuten de aplicaciones El coacutedigo fuente se compila para obtener

coacutedigo ejecutable proceso similar que el utilizado para las tradicionales aplicaciones de

escritorio

Cuando la aplicacioacuten estaacute lista para ser distribuida debe ser transferida a las App

stores (tiendas de aplicaciones) especiacuteficas de cada sistema operativo Estas tiendas tienen

un proceso de auditoriacutea para evaluar si la aplicacioacuten se adecuacutea a los requerimientos de la

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

18

plataforma a operar Cumplido este paso la aplicacioacuten se pone a disposicioacuten de los

usuarios

La principal ventaja de este tipo de aplicaciones es la posibilidad de interactuar con

todas las capacidades del dispositivo (caacutemara GPS aceleroacutemetro agenda entre otras)

Ademaacutes no es estrictamente necesario poseer acceso a internet Su ejecucioacuten es raacutepida

puede ejecutarse en modo background y notificar al usuario cuando ocurra un evento que

necesite su atencioacuten

Claramente estas ventajas tienen como contrapartida un mayor costo de desarrollo

pues se debe utilizar un lenguaje de programacioacuten diferente seguacuten la plataforma Por ende

si se desea cubrir varias plataformas se deberaacute generar una aplicacioacuten para cada una de

ellas Esto conlleva a mayores costos de desarrollo actualizacioacuten y distribucioacuten de nuevas

versiones [9] [18] [19]

En la actualidad hay una gran cantidad de sistemas operativos para dispositivos

moacuteviles La Figura 5 muestra la utilizacioacuten de los sistemas operativos en los uacuteltimos antildeos

en todo el mundo mientras que la Figura 6 muestra la misma comparativa en Argentina

En ambos casos el ranking es liderado por Android seguido por iOS y en tercer lugar

Windows Phone [20]

Figura 5- Utilizacioacuten de Sistemas Operativos Moacuteviles en el mundo

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

19

Figura 6- Utilizacioacuten de Sistemas Operativos Moacuteviles en Argentina

A continuacioacuten se analizaraacute coacutemo es el proceso de desarrollo de aplicaciones

moacuteviles nativas en los sistemas operativos maacutes relevantes de la actualidad y luego en la

Tabla 1 se compararaacuten aspectos teacutecnicos de estas plataformas

21 Desarrollo de Aplicaciones Nativas en Android

Android es el sistema operativo maacutes utilizado en la actualidad Puede ser utilizado

en teleacutefonos inteligentes tablets relojes inteligentes televisores y automoacuteviles

Estaacute basado en Linux y es respaldado por Google

211 Evolucioacuten Inicialmente el desarrollo de Android era llevado a cabo por la empresa Android

Inc la cual fue fundada en el antildeo 2003 y recibiacutea respaldo econoacutemico por parte de Google

Antildeos maacutes tarde maacutes precisamente en Julio del 2005 Google adquiere Android y da lugar

a la primer versioacuten del sistema operativo en el antildeo 2007 Android 10 Apple Pie1

desarrollado sobre el kernel de Linux 26 En su presentacioacuten se hizo hincapieacute en que era

un sistema operativo para dispositivos moacuteviles totalmente gratuito y open source a

1 Desde la salida de la primera versioacuten del sistema operativo hasta el presente Google ha seguido la tradicioacuten de ponerle un nombre de postre a cada una de sus versiones siguiendo un orden alfabeacutetico

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

20

diferencia de iOS

La primera versioacuten comercial teniacutea mucho margen de mejora y apenas inquietoacute a la

competencia pero ya introduciacutea algunos conceptos que antildeos despueacutes son un estaacutendar de

los sistemas operativos moacuteviles

Menuacute desplegable de notificaciones

Widgets de escritorio

Android Market la tienda de apps (no contaba con ninguacuten sistema de pago para

usuarios Todo el cataacutelogo era gratuito)

Integracioacuten con Google Mail Contacts y Calendar

Navegador Maps Google Talk reproductor de YouTube y soporte para caacutemaras

En febrero del 2009 apenas 3 meses despueacutes del lanzamiento de Android 10 Apple

Pie llega la primera actualizacioacuten Android 11 Banana Bread No antildeadiacutea grandes

novedades pero siacute corregiacutea numerosos fallos detectados en la primera versioacuten e introduciacutea

un concepto por entonces poco usado por los rivales que buscaba facilitar la vida al

usuario las actualizaciones automaacuteticas con las que resultaba muy simple mantener todo

el software al diacutea

El 30 de abril del 2009 lanzan una nueva actualizacioacuten de gran importancia con

muchas novedades en cuanto a usabilidad Android 15 Cupcake Esta nueva versioacuten

introdujo las siguientes caracteriacutesticas

Teclado taacutectil QWERTY en pantalla con prediccioacuten de texto y diccionario de

usuarios para palabras personalizadas

Grabacioacuten y reproduccioacuten en formatos MPEG-4 y 3GP

Widget de escritorio de Google para realizar buacutesquedas directamente

SDK para el desarrollo de widgets de escritorio por parte de terceros

Funciones del portapapeles ampliadas

Interfaz para grabar y reproducir viacutedeos mejorada

Posibilidad de auto-rotacioacuten

Android 16 Donut apareciacutea en septiembre del 2009 con algunas novedades

adicionales

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

21

Soporte para CDMAEVDO 8021x VPN que ampliaba los mercados al alcance

de Android

Compatibilidad con distintas resoluciones de pantalla Soporte WVGA

Actualizacioacuten y nuevo disentildeo del Android Market

Utilidad de buacutesqueda universal en Internet y en el mismo dispositivo

Galeriacutea caacutemara y videocaacutemara con mejor integracioacuten con raacutepido acceso a la

caacutemara

Motor multi-lenguaje de Siacutentesis de habla para permitir a cualquier aplicacioacuten de

Android hablar una cadena de texto

Mejoras en las buacutesquedas por texto y voz

Apenas dos meses despueacutes en noviembre del 2009 lanzan Android 20 Eclair

uno de los cambios maacutes sustanciales sufridos por Android tanto a nivel de disentildeo como

de arquitectura interna Era una versioacuten dirigida a dispositivos de mayor tamantildeo en un

tiempo en el que los fabricantes empezaban a diversificar su oferta La versioacuten 21

mantuvo la misma nomenclatura y soacutelo corrigioacute algunos fallos pero su uso fue mayor

entre los fabricantes que la versioacuten anterior A continuacioacuten se mencionan algunas de las

nuevas caracteriacutesticas

Sincronizacioacuten de cuenta expandida permitiendo a los usuarios agregar muacuteltiples

cuentas al dispositivo para sincronizacioacuten de correo y contactos

Google Maps Navigation sistema de navegacioacuten GPS gratuito

Compatibilidad con Microsoft Exchange

Optimizacioacuten en velocidad de hardware y GUI renovada

Soporte para maacutes tamantildeos de pantalla y resoluciones con una mejor tasa de

contraste

Navegador actualizado soporte para HTML5 y barra de direccioacuten y buacutesqueda

unificada

Funcioacuten Speech to Text para escribir textos mediante el uso de la voz

Nueva pantalla de desbloqueo

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

22

Nuevas caracteriacutesticas para la caacutemara incluyendo soporte de flash zoom digital

modo escena balance de blancos efecto de colores y enfoque macro

Adicioacuten de fondos de pantalla animados permitiendo la animacioacuten de imaacutegenes

de fondo de la pantalla inicio para mostrar movimiento

El 20 de mayo del 2010 apareciacutea una nueva actualizacioacuten del sistema operativo

Android 22 Froyo Traiacutea numerosos cambios algunos copiados de otras ROMs y otros

con el uso empresarial en mente

Pantalla Home totalmente redisentildeada con 5 paneles en lugar de 3

Nueva galeriacutea de imaacutegenes

Soporte para actuar como hotspot2 para otros dispositivos tethering3 de datos

Soporte para Flash 101

Funcioacuten copiar y pegar mejorada en Google Mail

Nueva pantalla alternativa de desbloqueo mediante coacutedigo PIN

Grabacioacuten de viacutedeo en 720p

Optimizaciones en velocidad memoria y rendimiento Compilador JIT

Integracioacuten del motor de JavaScript V8 de Chrome en el navegador

Soporte para el servicio Android Cloud to Device Messaging (C2DM)

habilitando notificaciones push

El antildeo 2010 iba a concluir con el lanzamiento de una versioacuten sumamente popular

que prevalecioacute gran tiempo Android 23 Gingerbread Esta versioacuten contoacute con las

siguientes caracteriacutesticas

Disentildeo de la interfaz de usuario actualizado con incremento en velocidad y

simpleza

Nuevo disentildeo para el teclado numeacuterico en pantalla

Soporte para tamantildeos y resoluciones de pantalla extra-grandes (WXGA y

mayores)

Funcioacuten para copiar y pegar mejorada con soporte para caracteres individuales en

lugar de cajas de texto

2 lugar que ofrece acceso a Internet a traveacutes de una red inalaacutembrica y un enrutador conectado a un proveedor de servicios de Internet 3 proceso por el cual un dispositivo moacutevil con conexioacuten a Internet actuacutea como pasarela para ofrecer acceso a la red a otros dispositivos

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

23

Soporte para NFC

Herramientas de visualizacioacuten de consumo y uso de la bateriacutea mejoradas

Soporte para caacutemaras frontales

Acceso de bajo nivel para los desarrolladores de juegos

Recolector basura concurrente para incrementar el rendimiento

Sustitucioacuten del sistema de archivos YAFFS por ext4

Soporte nativo para maacutes sensores (tales como giroscopio y baroacutemetro)

Soporte de chat de video o voz usando Google Talk

En febrero del 2011 Google lanza Android 30 Honeycomb Se trata de una

actualizacioacuten especiacutefica para tablets no compatible con teleacutefonos que introduciacutea las

liacuteneas maestras de la interfaz en el futuro Las versiones 31 y 32 mantuvieron el mismo

nombre y fueron baacutesicamente un conjunto de correcciones A continuacioacuten se listan los

cambios significativos que tuvieron lugar en estas versiones

Pantalla de Inicio redisentildeada

Inclusioacuten de tonos azules en la interfaz en detrimento del verde tradicional

Nuevas funcionalidades para el emplazamiento y uso de widgets

Fin de los botones fiacutesicos Adaptacioacuten automaacutetica del SO seguacuten el dispositivo

Agregado de barra de sistema con caracteriacutesticas de acceso raacutepido a

notificaciones estados y botones de navegacioacuten suavizados disponible en la parte

inferior de la pantalla

Antildeadida la barra de accioacuten (Action Bar en ingleacutes) entregando acceso a opciones

contextuales navegacioacuten widgets u otros tipos de contenido en la parte superior

de la pantalla

Multitarea simplificada ndash tocando Aplicaciones recientes en la barra del sistema

permite a los usuarios ver instantaacuteneas de las tareas en curso y saltar raacutepidamente

de una aplicacioacuten a otra

Aceleracioacuten graacutefica mediante hardware

Optimizacioacuten del renderizado de graacuteficos 3D

Soporte para perifeacutericos USB

Octubre del 2011 fue el mes del lanzamiento de Android 40 Ice Cream Sandwich

basado en el nuacutecleo de Linux 301 Esta nueva versioacuten introdujo las siguientes mejoras

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

24

Nueva Interfaz Holo y fuente tipograacutefica Roboto

Sistema de gestioacuten de notificaciones mejorado

Multitarea mejorada

Android Beam funcionalidad para transferir datos entre dos dispositivos viacutea NFC

Funcioacuten de desbloqueo mediante el rostro

Nuevas funciones para la visualizacioacuten y gestioacuten del consumo de datos

Nuevas aplicaciones de correo y calendario

Habilidad de acceder a aplicaciones directamente desde la pantalla de bloqueo

Herramienta integrada de captura de pantalla

Soporte MKV

Aceleracioacuten por hardware de la interfaz de usuario

Soporte Stylus (laacutepiz taacutectil)

En Julio del 2012 se presenta Android 41 Jelly Bean que incluye las siguientes

novedades

Sistema de deteccioacuten de entrada de datos taacutectiles optimizado

Estreno de Google Now el servicio-asistente de voz inteligente de Google

Navegador Google Chrome

Buacutesqueda mediante voz mejorada

Nuevas posibilidades para las notificaciones interactivas de escritorio

Dictado de voz offline

Se deja de dar soporte al Flash Player

Meses despueacutes en noviembre del 2012 se lanza la versioacuten Android 42 Jelly Bean

la cual incluye habituales correcciones rendimiento mejorado y cambios puntuales en

ciertas aplicaciones

Android 43 Jelly Bean es anunciado el 24 de julio del 2013 Uno de los objetivos

de esta versioacuten fue tratar de consolidar a Android como un sistema operativo capaz de

ejecutar juegos Esta nueva versioacuten cuenta con las siguientes novedades

Soporte multiusuario y de perfiles mejorado

Soporte OpenGL ES 30

Bluetooth Smart

Plataforma Google Games

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

25

Servicios de localizacioacuten Wi-Fi mejorados

Ya no es necesario pulsar el icono del microacutefono para realizar una buacutesqueda de

voz Solo hay que decir OK Google y en seguida ordenar al equipo lo que se

necesite

Android 44 KitKat es anunciado en octubre del 2013 Esta nueva versioacuten intenta

corregir el problema de fragmentacioacuten se cuenta con muchas versiones y los fabricantes

tienen dificultades para adaptar sus productos a los requerimientos de cada nueva versioacuten

Se destaca de esta versioacuten

Menores requisitos de hardware para corregir la fragmentacioacuten de versiones

Compatible con terminales con 512 MB de memoria RAM

Reduccioacuten del consumo de bateriacutea mediante la optimizacioacuten de los sensores

Inclusioacuten de la suite ofimaacutetica QuickOffice

Servicios de almacenamiento online integrados Google Drive Box

Soporte para infrarrojos Usar el moacutevil como mando de TV

Aplicaciones a pantalla completa

Captura de pantalla en viacutedeo

En octubre del 2014 se lanza Android 5 Lollipop daacutendole soporte a otros

dispositivos como Android TV relojes inteligentes autos etc Esta nueva versioacuten

incluye

Nuevo disentildeo basado en Material Design que logra un flujo de trabajo maacutes fluido

Interfaz que se adapta a cualquier tamantildeo de dispositivo

Renovado sistema de notificaciones inteligente

Interesante vista multitarea que muestra capas con las diferentes aplicaciones

abiertas

Funcioacuten Android Smart Lock que permite emparejar un dispositivo Android con

otro ya sea un reloj inteligente o un automoacutevil

Modo Invitado para que puedas prestar el dispositivo sin que otros usuarios

tengan acceso a la informacioacuten privada

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

26

Soporte para sistemas de 64 bits

En octubre del 2015 se anuncia Android 6 Marshmallow que incluye las

siguientes novedades

Soporte para autenticacioacuten viacutea huella digital

Desinstalacioacuten raacutepida de las aplicaciones desde la pantalla de inicio

Nuevo esquema de gestioacuten de energiacutea llamado Doze

Mayor duracioacuten de la bateriacutea cuando el dispositivo estaacute en reposo

Inclusioacuten de Android Pay que emplearaacute el chip NFC

Mejoras en Google Now

Mayor control sobre los permisos requeridos por las aplicaciones

212 Proceso de Desarrollo Las aplicaciones nativas para esta plataforma se implementan utilizando el lenguaje

de programacioacuten Java

El estaacutendar sugiere utilizar el IDE oficial Android Studio (Figura 7) aunque es

posible utilizar otros entornos Independientemente del IDE utilizado se necesita

disponer del Software Development Kit (SDK) de la versioacuten de Android en la que se

desea trabajar El SDK provee todas las herramientas necesarias para desarrollar

compilar depurar y simular aplicaciones

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

27

Figura 7 Entorno de desarrollo Android Studio

Uno de los interrogantes que surgen en el momento de crear una aplicacioacuten es con

cual versioacuten de la Application Programming Interface (API) de Android trabajar Se debe

tener en cuenta que al trabajar con una versioacuten especiacutefica se estaacute limitando cuales son los

dispositivos que soportaraacuten la aplicacioacuten a crear No se recomienda utilizar una API

antigua -ya que no se estariacutea utilizando muchos de los avances de la plataforma- ni

tampoco la uacuteltima en el mercado ndashdebido a que pocos seriacutean los usuarios que podriacutean

utilizarla- En la Figura 8 se visualiza la distribucioacuten de versiones seguacuten los dispositivos

activos a la fecha de Diciembre 2016 [21] De esa informacioacuten se desprende que si se

optara por trabajar con la API 16 (Jelly Bean) el 966 de los celulares activos podraacuten

utilizar la aplicacioacuten a crear

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

28

Figura 8 Distribucioacuten de versiones de Android - Diciembre 2016

22 Desarrollo de Aplicaciones Nativas en iOS

iOS es un sistema operativo para dispositivos moacuteviles de la empresa multinacional

Apple Si bien fue originalmente desarrollado para el dispositivo iPhone luego el sistema

operativo alcanzoacute otros dispositivos como iPod Touch iPad A diferencias de otros

sistemas operativos para dispositivos moacuteviles iOS solo funciona en dispositivos creados

por la empresa Apple pero no asiacute en otro hardware de terceros

221 Evolucioacuten El sistema operativo moacutevil iOS se deriva del sistema operativo OS X el cual estaacute

basado en UNIX

La primera versioacuten del sistema operativo se presentoacute en enero del 2007 A

diferencia de sus sucesores la primera versioacuten no se llamoacute iOS sino iPhone OS Se

trataba de una plataforma bastante cerrada ya que las uacutenicas aplicaciones disponibles

eran las que estaban integradas al sistema operativo y fueron creadas por Apple como los

Mapas Mail Fotos Calendario entre otras

El desarrollo de aplicaciones nativas por parte de terceros no tuvo lugar hasta marzo

del 2008 momento en el cual Apple liberoacute el primer kit de desarrollo

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

29

Meses despueacutes se lanza la segunda versioacuten del sistema operativo iPhone OS 2 En

esta oportunidad introducen la App Store la cual permitioacute la descarga de aplicaciones de

terceros Ademaacutes la aplicacioacuten de Mapas recibioacute compatibilidad con el GPS y el Mail

notificaciones push

En 2009 Apple lanzoacute iPhone OS 3 y en su versioacuten 32 se le cambioacute el nombre a

iOS 32 iOS 3 incorporoacute grandes novedades buacutesqueda Spotlight botones Copiar y

Pegar grabacioacuten de viacutedeo edicioacuten de viacutedeo mensajes MMS comandos de voz modo

landscape y otras muchas apps Ademaacutes se siguioacute explotando las ventajas de las

notificaciones push y se continuoacute evolucionando su SDK daacutendole mayor poder a los

desarrolladores de aplicaciones

iOS 4 llegoacute a mediados del 2010 y trajo consigo nuevos cambios a la plataforma

Los maacutes destacables fueron la inclusioacuten de fondos de pantalla y la posibilidad de poder

abrir varias aplicaciones en simultaacuteneo Adicionalmente las aplicaciones podiacutean ser

agrupadas mediante carpetas algo simple pero uacutetil

En Junio del 2011 se libera iOS 5 Esta nueva versioacuten ofreciacutea grandes novedades

un Centro de Notificaciones Siri ndashel asistente virtual que marcoacute tendencia en los uacuteltimos

antildeos- iMessage iCloud Game Center Quiosco Recordatorios integracioacuten social para

Twitter y se mejoroacute notablemente la app de navegacioacuten web nativa Safari

iOS 6 fue presentado en Junio del 2012 y trajo como novedades la inclusioacuten de

Apple Maps (en reemplazo de Google Maps) mejoras en Siri con informacioacuten mucho

maacutes precisa la integracioacuten de Facebook y Twitter en el sistema el modo no molestar el

soporte para LTE entre otras

Los usuarios de este sistema operativo recibieron una de las mayores

actualizaciones en Junio del 2013 cuando se presenta iOS 7 Esta nueva versioacuten contoacute

con un redisentildeo total de la interfaz de usuario basaacutendose en transparencias y degradados

Ademaacutes se introdujo el Centro de Control AirDrop una renovada app de fotos iTunes

Radio y CarPlay mejoras en el App Switcher videos a caacutemara lenta entre otras cosas

Junio del 2014 fue el mes donde quedoacute disponible iOS 8 una nueva versioacuten del

sistema operativo que intenta resolver algunos errores de iOS 7 y antildeadir ciertas mejoras

Las extensiones y la posibilidad de conectar apps entre siacute mediante el menuacute compartir

hicieron que iOS 8 fuese mucho maacutes productivo Ademaacutes incorporoacute widgets para el

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

30

Centro de Notificaciones o las notificaciones interactivas Ademaacutes se implementaron los

contactos favoritos los teclados de terceros la funcioacuten Reachability y la utilidad

Continuity y las aplicaciones Apple Pay Salud HandOff QuickType Compartir en

Familia iCloud Drive y Apple Music

En el 2015 se presenta iOS 9 que introdujo todo un cambio en el uso del sistema

gracias a la compatibilidad con el 3D Touch del iPhone 6s y el iPhone 6s Plus Se

actualizoacute Notas con nuevas funciones se sustituyoacute Newsstand por News se incorporaron

mejoras en Passbook que pasoacute a llamarse Wallet y se mejoroacute Mapas con direcciones y

traacutefico Se antildeadioacute Split View Picture-in-Picture y atajos en teclados de terceros Ademaacutes

el sistema ahora podiacutea aprovechar mejor la autonomiacutea del dispositivo gracias al Modo

ahorro de bateriacutea que limita las conexiones y caracteriacutesticas del sistema para no consumir

tanta energiacutea

Por uacuteltimo en Junio del 2016 quedoacute disponible iOS 10 versioacuten que se caracteriza

por abrirse a los desarrolladores Con esta nueva versioacuten se puede tener acceso a Siri al

3D Touch y a apps directas del sistema operativo Ademaacutes el centro de widgets ahora es

maacutes intuitivo y la pantalla de bloqueo maacutes uacutetil Como es habitual se aprecian mejoras en

distintas aplicaciones del sistema operativo y se permite borrar apps de Apple que no sean

utilizadas por los usuarios

222 Proceso de desarrollo Las aplicaciones moacuteviles para la plataforma iOS se desarrollan utilizando el

lenguaje de programacioacuten Objetive C El entorno de desarrollo oficial es la plataforma

Xcode [22] la cual opera en conjunto con Interface Builder una herramienta graacutefica para

la creacioacuten de interfaces de usuario

Actualmente hay dos grandes versiones del sistema operativo moacutevil en curso como

se puede apreciar en la Figura 10 Es algo a destacar que la uacuteltima versioacuten del sistema

operativo es soportada por el 63 de los dispositivos activos Claramente la

fragmentacioacuten interna es mucho menor que la encontrada en Android

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

31

Figura 9 Entorno de desarrollo Xcode

Figura 10 Distribucioacuten de versiones de iOS - Noviembre 2016

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

32

23 Desarrollo de Aplicaciones Nativas en Windows Phone

El sistema operativo moacutevil Windows Phone fue desarrollado por Microsoft y

sucede a Windows Mobile A diferencia de su predecesor estaacute enfocado en el mercado de

consumo en lugar del mercado empresarial

231 Evolucioacuten Su primera versioacuten lanzada en septiembre del 2010 fue denominada Windows

Phone 7 Fue presentado como un nuevo sistema operativo que incluye funciones de

integracioacuten con los servicios Xbox Live y Zune La interfaz conocida como Metro ha

sido revisada en su totalidad y comparte caracteriacutesticas visuales similares a la interfaz del

dispositivo Zune HD

Windows Phone 75 es una actualizacioacuten para Windows Phone lanzada en

septiembre de 2011 Esta nueva versioacuten incorporoacute numerosas caracteriacutesticas como por

ejemplo la inclusioacuten de Internet Explorer 9 con soporte para CSS3 Media Queries y

soporte para usar GPS cuando se trabaje con aplicaciones de ubicacioacuten geograacutefica entre

otros

En enero del 2013 se presenta Windows Phone 78 una actualizacioacuten que trae

mejoras como la nueva interfaz de usuario y fondos personalizados para la pantalla de

bloqueo Fue la uacuteltima gran actualizacioacuten de Windows Phone 7 ya que Microsoft se

centroacute en Windows Phone 8

Windows Phone 8 es la siguiente versioacuten del sistema operativo la cual fue

presentada a finales de 2012 Entre las nuevas caracteriacutesticas se incluyen

Nuevas pantallas de inicio y de bloqueo maacutes personalizables

Rincoacuten infantil un espacio exclusivo y controlado para los nintildeos

Cartera para almacenar tarjetas de fidelizacioacuten y de creacutedito

NFC

Internet Explorer 10

Integracioacuten con Skype

Nuevo nuacutecleo Windows NT con soporte para procesadores de varios

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

33

nuacutecleos

Captura de pantalla

Su proacutexima versioacuten es Windows Phone 81 y fue presentada en abril del 2014

Entre sus caracteriacutesticas maacutes relevantes se encuentran

Centro de notificaciones

Asistente de voz conocido con el nombre de Cortana

Sensores (de Wi-Fi de datos y de bateriacutea)

Aplicaciones que vienen en el paquete de instalacioacuten como Salud y

ejercicios Comida y bebida Viajes y Mapas (esta uacuteltima compite con Here

Maps la cual es la aplicacioacuten de mapas de Nokia)

Mejoras en la pantalla de inicio posibilidad de agregar fondos de pantalla y

una tercera columna de mosaicos personalizables (Tiles)

A mediados del 2014 Microsoft decide cambiar de estrategia tratando de unificar

todas las plataformas como PC tablets smartphones Xbox One entre otros Windows

10 (moacutevil) se dio a conocer puacuteblicamente durante un evento el 21 de enero para 2015 Al

igual que su homoacutelogo Windows 10 Mobile utiliza como navegador predeterminado

Microsoft Edge reemplazando Internet Explorer de Windows Phone 81 ya que este no

se adecuaba a las nuevas liacuteneas de disentildeo del sistema operativo

232 Proceso de desarrollo El entorno de desarrollo maacutes popular para el desarrollo de aplicaciones para

Windows Phone es Visual Studio (Figura 11) En la actualidad es posible utilizar diversos

lenguajes de programacioacuten VBNET y CNET C++ y JavaScript

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

34

Figura 11 Entorno de desarrollo Visual Studio

24 Diferencias teacutecnicas entre Android iOS y Windows Phone

Desarrollar aplicaciones moacuteviles para los tres sistemas operativos maacutes populares

implica conocer ciertos aspectos teacutecnicos de cada plataforma Algunos de estos aspectos

teacutecnicos difieren sustancialmente entre cada sistema operativo

Una de las caracteriacutesticas a tener en cuenta es si las aplicaciones moacuteviles se ejecutan

dentro de una maacutequina virtual especiacuteficamente disentildeada o si se ejecutan directamente

sobre el sistema operativo

Otro aspecto que los desarrolladores deben tener en cuenta es el lenguaje de

programacioacuten a utilizar para crear aplicaciones nativas Este aspecto es importante porque

incide en otros aspectos como por ejemplo la gestioacuten de memoria

Ademaacutes del lenguaje de programacioacuten a utilizar es importante conocer la

tecnologiacutea requerida para disentildear interfaces de usuario

Asimismo los desarrolladores deben familiarizarse con diferentes IDEs seguacuten la

plataforma en la que se desea desarrollar como asiacute tambieacuten con diferentes tiendas de

aplicaciones donde alojar los productos finales

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

35

Por uacuteltimo la tecnologiacutea de hardware requerida para soportar el sistema operativo

tambieacuten difiere seguacuten cada plataforma

La Tabla 1 compara cada uno de estos aspectos en los sistemas operativos moacuteviles

Android iOS y Windows Phone

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

36

Sistema

Operativo

Maacutequina

Virtual

Lenguaje de

Programacioacuten

Interfaces

de usuario

Gestioacuten de

memoria

IDE Plataforma de

desarrollo

Dispositivos Tienda de

Aplicaciones

Android Dalvik VM Java XML files Garbage

collector

Android

Studio

Multiplatforma Heterogeneos Google Play

Store

iOS No Objective-C Cocoa

Touch

Reference

counting

XCode Mac OS X Homogeneos iTunes Apps

Store

Windows

Phone

CLR C and Net XAML files Garbage

collector

Visual

Studio

Windows Vista7 Homogeneos Windows

Phone Store

Tabla 1 Diferencias teacutecnicas entre las plataformas Android iOS y Windows Phone

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

37

Capiacutetulo 3 Desarrollo de

Aplicaciones Moacuteviles

Multiplataforma

En los uacuteltimos antildeos el mercado de los dispositivos moacuteviles en especial

smartphones ha mostrado un crecimiento notable tanto en Argentina como en todo el

mundo En particular en nuestro paiacutes las plataformas que maacutes han crecido son Android

e iOS [1520]

Actualmente gran parte de la industria del software se concentra en desarrollar

soluciones para dispositivos moacuteviles proveyendo especialmente aplicaciones nativas

Las aplicaciones nativas tal como se mencionoacute en el capiacutetulo anterior ofrecen la

posibilidad de acceder a todas las capacidades del dispositivo (caacutemara GPS aceleroacutemetro

y agenda entre otras) su rendimiento es alto el acceso a Internet no es estrictamente

necesario y pueden ejecutarse en segundo plano notificando al usuario cuando se requiera

su atencioacuten Estas aplicaciones pueden distribuirsecomercializarse a traveacutes de las tiendas

en liacutenea correspondientes

El principal reto para los proveedores de aplicaciones es proporcionar soluciones

para todas las plataformas pero esto conlleva un alto costo [6] no es posible reusar el

coacutedigo fuente entre plataformas diferentes multiplicando esfuerzos y elevando los costos

de desarrollo actualizacioacuten y distribucioacuten de nuevas versiones

El desarrollo multiplataforma procura optimizar la relacioacuten costobeneficio

compartiendo la misma codificacioacuten entre las versiones para las distintas plataformas

Entre otras ventajas sobresalen menor tiempo y costo de desarrollo prestaciones

similares a las nativas con acceso al hardware del dispositivo y disponibilidad de

entornos potentes de desarrollo (Delphi Visual Studio etc) o en su lugar utilizacioacuten de

tecnologiacuteas (HTML5 Javascript y CSS) bien conocidas por los desarrolladores web

quienes pueden trasladar sus conocimientos y experiencias al paradigma moacutevil Sin

embargo el rendimiento de las aplicaciones y sus interfaces de usuario pueden afectar la

experiencia de usuario

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

38

Las aplicaciones multiplataforma pueden clasificarse en aplicaciones web moacuteviles

hiacutebridas interpretadas y generadas por compilacioacuten cruzada [5] En las secciones

siguientes se analizaran cada una de estas clasifcaciones

31 Aplicaciones Web Moacuteviles

Las Aplicaciones Web Moacuteviles disentildeadas para ejecutarse dentro de un navegador

se desarrollan con tecnologiacutea web estaacutendar (HTML CSS y JavaScript) y cuentan con

una serie de caracteriacutesticas favorables no necesitan adecuarse a ninguacuten entorno operativo

son independientes de la plataforma y su puesta en marcha es raacutepida y sencilla

Por contrapartida sus tiempos de respuesta decaen debido a la interaccioacuten cliente-

servidor Al mismo tiempo resultan ser menos atractivas que las aplicaciones nativas ya

que no se encuentran instaladas en el dispositivo lo que implica acceder previamente a

un navegador Ademaacutes las restricciones de seguridad impuestas a la ejecucioacuten de coacutedigo

por medio de un navegador limitan el acceso a todas las capacidades del dispositivo [23]

Asimismo no es posible desarrollar aplicaciones web que corran en segundo plano ni

tampoco aplicaciones offline ya que es requisito disponer de una conexioacuten a internet para

su funcionamiento

El proceso de desarrollo de una aplicacioacuten web moacutevil debe contemplar una serie de

caracteriacutesticas inherentes al entorno de ejecucioacuten Como ya ha sido mencionado las

aplicaciones web moacuteviles pueden ser accesibles desde cualquier dispositivo moacutevil que

cuente con un navegador y acceso a internet pero esto no significa que la navegacioacuten en

la aplicacioacuten resulte ser coacutemoda u oacuteptima Por ejemplo una aplicacioacuten web con un menuacute

compuesto de 20 iacutetems puede implicar una usabilidad correcta desde una PC Por lo

contrario para un dispositivo moacutevil con una pantalla limitada no resulta praacutectico que se

le presente al usuario tantas opciones en el menuacute Con este ejemplo lo que se pretende

mostrar es que para que una aplicacioacuten sea accesible desde diferentes dispositivos

moacuteviles posiblemente se tengan que realizar al menos dos disentildeos de presentacioacuten

diferentes un disentildeo para PC y otro disentildeo para dispositivos moacuteviles con una estructura

organizativa de la aplicacioacuten maacutes simplificada con respecto al disentildeo tradicional Por

ejemplo algunas de las funcionalidades de la aplicacioacuten para PC pueden ser eliminadas

para la versioacuten para dispositivos moacuteviles o presentadas de forma diferente

Para desarrollar diferentes presentaciones de una misma aplicacioacuten web

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

39

actualmente existen dos estrategias distintas ambas vaacutelidas seguacuten el contexto En los

siguientes apartados se analizaraacuten cada una de ellas

311 Aplicacioacuten Web dedicada y exclusiva para dispositivos moacuteviles Esta metodologiacutea ha sido el estaacutendar hasta el antildeo 2012 En ella la direccioacuten URL

y el coacutedigo HTML de la versioacuten moacutevil son distintos de la versioacuten de escritorio Por lo

general las direcciones URL tienen el formato mnombresitiocom

Algunas de las ventajas de este meacutetodo

- En general la carga es maacutes raacutepida y la navegacioacuten maacutes coacutemoda

- Es posible adaptar de manera maacutes faacutecil el contenido de las secciones

Desventajas de este meacutetodo

- Mantenimiento maacutes costoso Se debe mantener dos versiones distintas del mismo

sitio

- Dificulta el posicionamiento del sitio en los buscadores

- Estos desarrollos al final tienden a ser versiones muy reducidas de la web para

PC llevando al usuario a frustrarse y a preferir ver la versioacuten original de la web

312 Aplicacioacuten Web con Disentildeo Adaptable Con esta metodologiacutea la aplicacioacuten web se adapta al dispositivo desde el cual se la

estaacute accediendo El coacutedigo HTML y la direccioacuten URL de la aplicacioacuten son uacutenicos El

Disentildeo Adaptable o Responsive Design (Figura 12) tiene sus oriacutegenes en el antildeo 2008

cuando la W3C discutioacute y describioacute sus propoacutesitos Desde el antildeo 2012 -momento en el

cual Google recomendoacute fuertemente su implicancia [24]- viene en ascenso y

posiblemente llegue a convertirse en un standard en un corto plazo

Mediante un Disentildeo Adaptable todos los elementos de la web se reajustan en ancho

y altura adaptaacutendose al tamantildeo de tu pantalla Incluso es posible ocultar secciones cuando

se accede desde un dispositivo moacutevil

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

40

Figura 12 Disentildeo Adaptable

Las principales ventajas del desarrollo de aplicaciones web con Disentildeo Adaptable

son

- El mantenimiento es menos costoso ya que solo hay que mantener una uacutenica

versioacuten de la aplicacioacuten

- Se simplifica el proceso de posicionar la aplicacioacuten en los buscadores

Como contrapartida el Disentildeo Adaptable presenta una serie de desventajas

- Requiere de mayores niveles teacutecnicos para su desarrollo

- El contenido de las aplicaciones con Disentildeo Adaptable puede ser mayor que el

contenido de las aplicaciones web especiacuteficas para dispositivos moacuteviles

perjudicando el tiempo de carga cuando se utiliza un tipo de conexioacuten no muy

potente y generando un mayor consumo de datos

En la actualidad existe una gran cantidad de frameworks que simplifican el

desarrollo de aplicaciones web con disentildeo adaptable destacaacutendose por su popularidad y

extensa documentacioacuten los frameworks Bootstrap [25] y Foundation [26]

32 Aplicaciones Hiacutebridas

Las aplicaciones hiacutebridas utilizan tecnologiacuteas web (HTML Javascript y CSS) pero

no son ejecutadas por un navegador En su lugar se ejecutan en un contenedor web

(webview) como parte de una aplicacioacuten nativa la cual estaacute instalada en el dispositivo

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

41

moacutevil Desde una aplicacioacuten hiacutebrida es posible acceder a las capacidades del dispositivo

a traveacutes de diversas API

Las aplicaciones hiacutebridas ofrecen grandes ventajas permitiendo la reutilizacioacuten de

coacutedigo en las distintas plataformas el acceso al hardware del dispositivo y la distribucioacuten

a traveacutes de las tiendas de aplicaciones En contrapartida se observan dos desventajas de

las aplicaciones hiacutebridas respecto del caso nativo i) la experiencia de usuario se ve

perjudicada al no utilizar componentes nativos en la interfaz y ii) la ejecucioacuten se ve

ralentizada por la carga asociada al contenedor web

Afortunadamente existe una diversidad de frameworks que permiten desarrollar

aplicaciones hiacutebridas A continuacioacuten se haraacute un breve resumen de los maacutes populares

321 PhoneGap PhoneGap [27] es un framework gratuito y open source creado en el antildeo 2008 por

la empresa Nitobi Software que permite crear aplicaciones moacuteviles usando tecnologiacutea

web estaacutendar HTML JavaScript y CSS En octubre del 2011 Adobe adquiere la empresa

Nitobi y aporta el coacutedigo de PhoneGap a Apache Software Foundation para iniciar un

nuevo proyecto por encima de PhoneGap llamado Apache Cordova [28] PhoneGap pasoacute

a ser una de las varias distribuciones de Apache Cordova (Figura 13) brindando servicios

extras como por ejemplo Adobe PhoneGap Build [29] un servicio de compilacioacuten en la

nube proporcionado por Adobe Creative Cloud PhoneGap Desktop y PhoneGap

Developer

PhoneGap permite compilar aplicaciones para las siguientes plataformas Android

IOS Amazon Fire OS Windows Phone Windows 8 Ubuntu Tizen Firefox OS

Blackberry 10

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

42

Figura 13 Funcionamiento de Apache Cordova

322 CocoonJS CocoonJS [30] es un framework para el desarrollo de aplicaciones moacuteviles

producido por Ludei [31] Actualmente cuenta con una licencia propietaria y ofrece

diferente tipos de planes pagos y gratuitos El mencionado framework estaacute basado en

Apache Cordova al igual que PhoneGap pero se diferencia de este uacuteltimo en que hace

un mayor hincapieacute en la performance de las aplicaciones resultantes CocoonJS ofrece

dos tipos de webview

Canvas+ un webview liviano optimizado para video juegos Provee solo un

subconjunto de las funcionalidades del HTML5 (canvas audio motion

geolocalizacioacuten etc) necesarias para desarrollar video juegos con el objetivo de

brindar la mejor performance posible

Webview+ un potente y completo webview basado en el webview del proyecto

Chromium el cual cuenta de una mejor performance en comparacioacuten con el

webview por defecto de Apache Cordova

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

43

CocoonJs permite crear aplicaciones tanto para iOS como para Android

323 Ionic Ionic [32] es un completo SDK gratuito y open source para el desarrollo de

aplicaciones hiacutebridas producido por Max Lynch Ben Sperry y Adam Bradley de la

compantildeia Drifty Co en el antildeo 2013 En un tiempo relativamente corto alcanzoacute una

popularidad a destacar Estaacute basado en Apache Cordova permitiendo desarrollar

aplicaciones con tecnologiacutea web A diferencia de otros frameworks para el desarrollo de

aplicaciones hibridas Ionic provee un framework para la interfaz de usuario y

herramientas visuales para disentildear interfaces

Mediante Ionic es posible crear aplicaciones para Android IOS Windows Phone y

Firefox OS

324 Sencha Touch Sencha Touch [33] es un framework gratuito Model-View-Controller (MVC)

JavaScript construido sobre el sistema de clases de Ext JS disentildeado especialmente para

el desarrollo de aplicaciones web moacuteviles para dispositivos taacutectiles [34]

Al igual que PhoneGap Sencha Touch permite a los desarrolladores crear

aplicaciones moacuteviles a partir de un desarrollo web con HTML5 CSS y Javascript A

diferencia de PhoneGap Sencha no necesita de ninguna libreriacutea de terceros para construir

interfaces similares a las nativas ya que el framework provee consigo una gran cantidad

de componentes visuales listos para utilizar

Sencha empaqueta el coacutedigo del proyecto mediante PhoneGap para luego poder

construir aplicaciones en todas las plataformas soportadas por PhoneGap

33 Aplicaciones Interpretadas

Las aplicaciones interpretadas son implementadas utilizando un lenguaje base el

cual se traduce en su mayor parte a coacutedigo nativo mientras el resto es interpretado en

tiempo de ejecucioacuten Estas aplicaciones son implementadas de manera independiente de

las plataformas utilizando diversas tecnologiacuteas y lenguajes tales como Javascript Java

Ruby y XML entre otros

Una de las principales ventajas de este tipo de aplicaciones es que se obtienen

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

44

interfaces de usuario totalmente nativas Sin embargo los desarrolladores experimentan

una dependencia total con el entorno de desarrollo elegido

Seguidamente se presentaran algunos de frameworks maacutes reconocidos para el

desarrollo de aplicaciones interpretadas

331 Appcelerator Titanium Desarrollado por Appcelerator Inc Appcelerator Titanium [35] es un framework

de coacutedigo abierto que permite la creacioacuten de aplicaciones moacuteviles para las plataformas

iOS y Android Dicho framework estaacute formado por Titanium Studio un entorno de

desarrollo de coacutedigo libre para la codificacioacuten de aplicaciones moacuteviles multiplataforma

y el SDK Titanium una serie de herramientas para el desarrollo testeo anaacutelisis

depuracioacuten y compilacioacuten de aplicaciones

Las aplicaciones desarrolladas con Appcelerator Titanium se codifican utilizando

el lenguaje Javascript el cual es evaluado en tiempo de ejecucioacuten mediante un inteacuterprete

de Javascript que se ejecuta en el sistema operativo del dispositivo Al iniciar la

aplicacioacuten desde el coacutedigo nativo se ejecuta el coacutedigo Javascript y mediante la API de

Titanium se mapea uno-a-uno cada elemento del coacutedigo Javascript con los elementos

nativos De esta manera la API de Titanium actuacutea como puente logrando interfaces de

usuario compuestas de controles nativos Este entorno de desarrollo utiliza el framework

Alloy disentildeado para el desarrollo aacutegil de aplicaciones moacuteviles Alloy estaacute basado en la

arquitectura MVC y soporta el uso de tecnologiacuteas populares como Backbonejs [36] y

Underscorejs [37]

Los creadores de Titanium destacan que mediante este framework es posible

reutilizar entre el 60 y 90 del coacutedigo entre distintas plataformas

332 NativeScript El 5 de marzo del 2015 la empresa Telerik lanzoacute NativeScript [38] un proyecto de

coacutedigo abierto el cual permite generar aplicaciones nativas utilizando JavaScript

Asimismo es posible desarrollar la aplicacioacuten utilizando el lenguaje TypeScript [39]

lenguaje libre y de coacutedigo abierto desarrollado por Microsoft que extiende a JavaScript

esencialmente antildeadiendo tipado estaacutetico y objetos basados en clases En este sentido

cuando se compila la aplicacioacuten se realiza la traduccioacuten del coacutedigo TypeScript a coacutedigo

JavaScript

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

45

NativeScript provee un moacutedulo multiplataforma que permite obtener aplicaciones

nativas desde coacutedigo JavaScript Este moacutedulo expone las capacidades del dispositivo y

de la plataforma subyacente de una manera consistente y permite accederlas desde el

coacutedigo JavaScript De igual manera las interfaces de usuario pueden ser definidas

mediante coacutedigo JavaScript documentos HTML y archivos CSS abstrayeacutendose de los

componentes nativos reales

Cuando la aplicacioacuten es compilada parte del coacutedigo multiplataforma es traducido

a coacutedigo nativo mientras que el resto es interpretado en tiempo de ejecucioacuten (Figura 14)

Por el momento NativeScript permite generar aplicaciones para Android e iOS y

se preveacute dar soporte a Windows Phone NativeScript renderiza controles nativos sin

utilizar WebViews logrando una performance y experiencia de usuario similar al de las

aplicaciones nativas

Figura 14 Proceso de interpretacioacuten mediante NativeScript

34 Aplicaciones Generadas por Compilacioacuten Cruzada

Estas aplicaciones se compilan de manera nativa creando una versioacuten especiacutefica de

alto rendimiento para cada plataforma destino Ejemplos de entornos de desarrollo para

generar aplicaciones por compilacioacuten cruzada son Applause [40] Xamarin [41]

Embarcadero Delphi 10 Seattle [42] y RubyMotion [43]

El entorno de desarrollo abierto Applause utiliza como entrada un lenguaje

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

46

especiacutefico del dominio basado en el framework Xtext [44] disentildeado expliacutecitamente para

aplicaciones moacuteviles orientadas a datos y genera coacutedigo fuente en Objective C Java C

o Python Las caracteriacutesticas de Xamarin Embarcadero Delphi 10 Seattle y RubyMotion

se presentan en secciones posteriores

341 Xamarin Xamarin es una plataforma de desarrollo de aplicaciones moacuteviles para generar

aplicaciones 100 nativas para iOS Android y Windows a partir de una base de coacutedigo

CNET comuacuten para conseguir entre un 75 y hasta casi un 100 de reutilizacioacuten de

coacutedigo entre plataformas Las aplicaciones escritas con Xamarin y C disponen de acceso

completo a las API de la plataforma subyacente asiacute como de la capacidad de crear

interfaces de usuario nativas y de realizar la compilacioacuten en coacutedigo nativo por lo que el

impacto en el rendimiento en tiempo de ejecucioacuten es escaso

Xamarin es una compantildeiacutea que se establecioacute en mayo de 2011 por los mismos

ingenieros que crearon el proyecto Mono [45] consistente en una implementacioacuten libre

de la plataforma de desarrollo NET para dispositivos Android iOS y GNULinux

Anteriormente este proyecto se llamaba MonoTouch y MonoDroid

Si bien Xamarin cuenta con su propio IDE denominado Xamarin Studio (Figura

15) es posible integrarlo con Microsoft Visual Studio y de esta manera generar tambieacuten

aplicaciones para Windows incluido Windows RT para tablets y Windows Phone para

celulares

En febrero del 2016 Xamarin es comprada por Microsoft y desde ese momento la

plataforma Xamarin y el IDE Xamarin Studio pasaron a ser gratuitas

Xamarin propone un enfoque de desarrollo multiplataforma en el que se comparte

la codificacioacuten completa de la loacutegica del negocio Sin embargo las interfaces deben ser

programadas de manera independiente para cada una de las plataformas destino Asiacute la

reutilizacioacuten de coacutedigo seguacuten estudios estadiacutesticos de la compantildeiacutea Xamarin es cercana

al 85

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

47

Figura 15 Entorno de Desarrollo Xamarin Studio

342 Embarcadero Delphi 10 Seattle Embarcadero Delphi 10 Seattle [42] es una plataforma de desarrollo propietaria y

no gratuita que permite a los desarrolladores crear aplicaciones raacutepidamente a traveacutes de

un entorno visual coacutemodo e intuitivo (Figura 16) La aplicacioacuten desarrollada puede ser

compilada para muacuteltiples plataformas incluyendo Windows Mac Android e iOS

Delphi 10 Seattle al igual que Xamarin aventaja a otros tipos de aplicaciones

multiplataformas con resultados 100 nativos con acceso total a los sensores y

capacidades del dispositivo (caacutemara notificaciones GPS aceleroacutemetro entre otras)

Un punto a destacar es que Delphi 10 Seattle a traveacutes del framework de interfaces

de usuario FireUI Multi-Device Designer permite crear interfaces de usuario totalmente

nativas sin la necesidad de tener que disentildear interfaces especiacuteficas para cada plataforma

en particular

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

48

Figura 16 Entorno de Desarrollo Delphi 10 Seattle

343 RubyMotion En Mayo de 2012 la empresa HipByte lanza RubyMontion un proyecto que

permite generar aplicaciones para iOS Android y OS X utilizando el lenguaje de

programacioacuten Ruby

Para poder generar las aplicaciones multiplataforma RubyMotion posee

implementaciones de Ruby sobre los sistemas operativos destinos (Android e iOS) que

permiten acceder a todas las caracteriacutesticas provistas por cada plataforma Las

herramientas de compilacioacuten provistas por RubyMotion se encargan de embeber la

correspondiente implementacioacuten de Ruby al momento de compilar para cada plataforma

La principal desventaja de RubyMotion es que soacutelo funciona bajo el sistema

operativo OS X Otro factor a tener en cuenta es que no posee un entorno de desarrollo

integrado que facilite todo el proceso al desarrollador esto se ve solventado gracias a que

ofrece complementos para los IDE y editores de coacutedigo maacutes utilizados

Finalmente si bien el producto es un servicio pago ofrece una posibilidad de

probarlo gratuitamente aunque con soporte uacutenicamente para compilar a la uacuteltima versioacuten

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

49

de cada plataforma destino

Capiacutetulo 4 Experimentacioacuten

50

Capiacutetulo 4 Experimentacioacuten

Con el objetivo de profundizar la investigacioacuten de las diferentes metodologiacuteas de

desarrollo de aplicaciones moacuteviles multiplataforma es que se llevaron a cabo diferentes

experimentos en simultaacuteneo El primer experimento consiste en el desarrollo de una

aplicacioacuten moacutevil utilizando cada una de las metodologiacuteas estudiadas en el capiacutetulo

anterior con el objetivo de analizar el proceso de desarrollo El segundo experimento

tiene como objetivo analizar el rendimiento de las aplicaciones moacuteviles generadas

mediante las metodologiacuteas estudiadas a traveacutes de un caacutelculo matemaacutetico Por uacuteltimo se

presenta un informe comparativo que pueda ayudar en la toma de decisiones sobre queacute

metodologiacutea utilizar en futuros desarrollos

41 Aplicacioacuten Moacutevil para la plataforma de E-Learning WebUNLP

411 Descripcioacuten del problema WebUNLP es un entorno virtual de ensentildeanza y aprendizaje que permite a los

docentes mediar sus propuestas educativas Alumnos y docentes pueden encontrarse en

ese espacio para compartir materiales de estudio comunicarse y generar una experiencia

educativa en forma virtual [46]

Actualmente WebUNLP cuenta con una versioacuten web enfocada a computadoras de

escritorio o portaacutetiles pero no estaacute adaptada para ser utilizada desde dispositivos moacuteviles

El desarrollo planteado consiste en extender WebUNLP con la construccioacuten de una

aplicacioacuten moacutevil que permita acceder a determinadas funcionalidades del sistema a

traveacutes de un dispositivo moacutevil El enfoque propuesto incluye un anaacutelisis de la misma

solucioacuten comparando el desarrollo nativo web hiacutebrido interpretado y de compilacioacuten

cruzada a fin de establecer cuaacutel de ellos es conveniente

Como ocurre con cualquier desarrollo de software la construccioacuten de una

aplicacioacuten moacutevil implica tener claramente definido su propoacutesito y cuaacuteles requerimientos

debe cumplir En particular para el caso de software para dispositivos moacuteviles resulta

esencial tener objetivos maacutes acotados que en su versioacuten de escritorio [47]

Capiacutetulo 4 Experimentacioacuten

51

Para el caso especiacutefico de WebUNLP se realizoacute el desarrollo incremental de una

aplicacioacuten moacutevil y esta primera versioacuten se enfocoacute en una de sus herramientas de

comunicacioacuten la cartelera Esta herramienta permite comunicar las novedades de un

curso como por ejemplo el cambio de horario de una cursada recordar las fechas de

entrega de un trabajo praacutectico entre otras [46]

412 Anaacutelisis Uno de los primeros interrogantes planteados fue la eleccioacuten de la plataforma En

teacuterminos de mercado los sistemas operativos que predominan en Argentina son Android

e iOS [4815] con lo cual se decidioacute dar soporte a estos dos sistemas operativos

Se analizaron los requerimientos funcionales y no funcionales de forma aislada a la

plataforma y luego de forma especiacutefica para cada una de ellas

A continuacioacuten se presentan algunos requerimientos a cumplir por la aplicacioacuten

El usuario debe poder ingresar a la aplicacioacuten con las mismas credenciales que las

utilizadas para acceder a la versioacuten web de escritorio

El usuario debe poder acceder a la cartelera de todos los cursos en los que

participa ya sea como docente o alumno

El usuario debe recibir una notificacioacuten en su dispositivo cuando una novedad es

publicada en la cartelera Este requerimiento no se puede cumplir en la versioacuten

web accesible desde computadoras de escritorio yo portables

El usuario debe tener la misma experiencia de uso en todas las plataformas

operativas

La aplicacioacuten web existente debe estar sincronizada con la aplicacioacuten moacutevil a

desarrollar esto significa que cualquier cambio realizado desde la aplicacioacuten

moacutevil debe verse reflejado en la versioacuten web y viceversa

413 Disentildeo Para satisfacer los requerimientos planteados en el punto anterior a excepcioacuten de

la notificacioacuten el disentildeo de la aplicacioacuten moacutevil web consiste en una reacuteplica de lo ofrecido

por WEBUNLP adaptaacutendose solamente la interfaz al tamantildeo de pantalla del dispositivo

moacutevil

Capiacutetulo 4 Experimentacioacuten

52

Para el disentildeo de las aplicaciones moacuteviles nativa hiacutebrida interpretada y de

compilacioacuten cruzada la situacioacuten es maacutes compleja En la Figura 17 se presenta la

arquitectura geneacuterica de todos los componentes que participan en este escenario de

desarrollo En ella se observa el acceso desde una PC a WebUNLP y el acceso desde

dispositivos moacuteviles a la informacioacuten de WebUNLP mediante servicios web Para el

desarrollo de los servicios web se disentildeoacute una API Restful dada su simpleza escalabilidad

e interoperabilidad [49]

Figura 17 Arquitectura geneacuterica para aplicacioacuten nativa e hiacutebrida

Asimismo existe una tarea programada (Cron) de ejecucioacuten intermitente a

intervalos regulares de tiempo la cual notifica a los dispositivos moacuteviles correspondientes

cuando se crea una novedad en la cartelera de WebUNLP El Cron identifica el sistema

operativo del dispositivo a notificar y genera dicha notificacioacuten

En cuanto a la interfaz graacutefica se planteoacute un disentildeo independiente de la plataforma

para analizar los aspectos de usabilidad de la aplicacioacuten y luego se realizaron los ajustes

necesarios para cada tipo de aplicacioacuten

En las interfaces disentildeadas la navegacioacuten es en serie en el orden en que se presentan

en el mockup [50] de la Figura 18

Capiacutetulo 4 Experimentacioacuten

53

Figura 18 Mockup independiente del tipo de aplicacioacuten

414 Desarrollo

4141 Aplicacioacuten Nativa para Android

El desarrollo de aplicaciones para la plataforma Android requiere disponer del Java

Development Kit (JDK) y su entorno de programacioacuten conocido como Android SDK

Este uacuteltimo provee libreriacuteas y herramientas necesarias para construir testear y depurar

aplicaciones para Android

El desarrollo de la aplicacioacuten de WebUNLP para Android se realizoacute seguacuten las

convenciones adoptadas por su comunidad porque aplica buenas praacutecticas en la

construccioacuten de interfaces y de la loacutegica detraacutes de ellas el acceso a datos y a servicios

web Para cumplir el requerimiento de las notificaciones en el dispositivo

correspondiente el Cron genera la notificacioacuten mediante el uso del servicio Google Cloud

Messaging (GCM) [51] En la Figura 19 se presentan las interfaces de la aplicacioacuten

desarrollada

Figura 19 Aplicacioacuten nativa para Android

Capiacutetulo 4 Experimentacioacuten

54

4142 Aplicacioacuten Nativa para iOS

La plataforma Apple iOS estaacute basada en un modelo propietario es por ello que el

desarrollo de una aplicacioacuten nativa iOS implica contar con una Apple Mac ejecutando OS

X con Xcode instalado El lenguaje de programacioacuten principal es Objective C Xcode es

el entorno de desarrollo de Apple para todos sus dispositivos y es el encargado de

proporcionar el iOS SDK con las herramientas compiladores y frameworks necesarios

Ademaacutes Xcode viene integrado con simuladores para dispositivos iOS (iPhones y iPads)

que facilitan las etapas de prueba del sistema desarrollado

Para los aspectos referentes a la interfaz graacutefica y la interaccioacuten con el usuario se

siguieron las convenciones propuestas por Apple [52] para lograr una mejor integracioacuten

de la aplicacioacuten con el sistema operativo y mejorar la experiencia del usuario

Por uacuteltimo para satisfacer el requerimiento de notificaciones el Cron notifica al

dispositivo iOS correspondiente mediante el uso del servicio Apple Push Notification

Service (APNs) [53] En la Figura 20 se presentan las interfaces de la aplicacioacuten

desarrollada

Figura 20 Aplicacioacuten nativa para iOS

4143 Aplicacioacuten Web Moacutevil

Se desarrolloacute una aplicacioacuten web capaz de acceder a la cartelera de WebUNLP

disponible para cualquier dispositivo moacutevil que cuente con un navegador que soporte las

caracteriacutesticas utilizadas para el desarrollo HTML5 CSS3 y Javascript

Como la velocidad de transmisioacutenrecepcioacuten de datos de un dispositivo moacutevil a

traveacutes de WiFi y en particular 3G es inferior a la velocidad de una computadora de

Capiacutetulo 4 Experimentacioacuten

55

escritorio la versioacuten web de la cartelera de WebUNLP es liviana y gran parte de los

requerimientos son implementados a traveacutes de Ajax [54] para evitar ante alguacuten cambio

la recarga de la paacutegina completa

Debido a las limitaciones que tienen las aplicaciones que se ejecutan sobre un

navegador no es posible implementar la recepcioacuten de una notificacioacuten en el dispositivo

cuando una novedad es publicada en la cartelera

4144 Aplicacioacuten Hiacutebrida desarrollada con PhoneGap y Jquery Mobile

Para la construccioacuten de la aplicacioacuten WebUNLP hiacutebrida se utilizoacute el framework

PhoneGap [27] el cual permite desarrollar aplicaciones moacuteviles que utiliza tecnologiacuteas

comunes a todos los dispositivos HTML5 CSS y Javascript

Asimismo se utilizoacute el framework Javascript Jquery Mobile [55] para lograr

interfaces con apariencia y comportamiento consistente a traveacutes de las diferentes

plataformas moacuteviles

Con el objetivo de implementar el patroacuten de disentildeo MVC se utilizoacute la libreriacutea

Backbonejs [36]

Por uacuteltimo para satisfacer el requerimiento de notificaciones se utilizoacute el plugin

Pushwoosh [56]

En la figura 5 se presentan las interfaces de la aplicacioacuten desarrollada

Figura 21 Aplicacioacuten hiacutebrida desarrollada con PhoneGap

Capiacutetulo 4 Experimentacioacuten

56

4145 Aplicacioacuten Hiacutebrida desarrollada con Sencha Touch

El desarrollo de WebUNLP utilizando Sencha Touch se vio favorecido por el uso

del patroacuten de disentildeo MVC Esto permitioacute mayor flexibilidad y legibilidad en el coacutedigo

[57] [34]

Sencha ofrece Sencha Command una herramienta multiplataforma de liacutenea de

comandos que provee tareas automatizadas para todo el ciclo completo de una aplicacioacuten

En el caso de WebUNLP se utilizoacute tanto para la generacioacuten del proyecto como para el

empaquetado de la aplicacioacuten

En la Figura 22 se presentan las interfaces de la aplicacioacuten desarrollada

Figura 22 Aplicacioacuten desarrollada con Sencha Touch

4146 Aplicacioacuten Interpretada de WebUNLP con Appcelerator Titanium 3

Para desarrollar una aplicacioacuten moacutevil experimental seguacuten el enfoque interpretado

se utilizoacute el entorno de desarrollo gratuito y open source Appcelerator Titanium 3 [35]

Se destaca la simplicidad y legibilidad de los controladores y modelos de la

aplicacioacuten desarrollada luego de utilizar Alloy el framework de Titanium que permite

disentildear aplicaciones seguacuten el patroacuten de disentildeo MVC Para la construccioacuten de las vistas se

puede optar por la programacioacuten mediante Javascript y la API de Titanium o bien por

una especificacioacuten XML con estilos TSS (Titanium Style Sheets) Esta uacuteltima opcioacuten

simplifica el proceso de creacioacuten de las vistas aunque falta todaviacutea un buen editor visual

de interfaces que lo potencie

Capiacutetulo 4 Experimentacioacuten

57

Para cubrir requerimientos de notificaciones en el dispositivo Titanium provee el

moacutedulo PushNotifications para plataformas Android e iOS

La Figura 24 (a) muestra la experimentacioacuten con Titanium

4147 Aplicacioacuten Generada por Compilacioacuten Cruzada de WebUNLP utilizando XamarinVisual Studio

Tal como se mencionoacute en la seccioacuten 341 Xamarin propone un enfoque de

desarrollo multiplataforma en el que se comparte la codificacioacuten completa de la loacutegica

del negocio Sin embargo las interfaces deben ser programadas de manera independiente

para cada una de las plataformas destino (ver Figura 23) Asiacute la reutilizacioacuten de coacutedigo

seguacuten estudios estadiacutesticos de la compantildeiacutea Xamarin es cercana al 85

Figura 23 Enfoque uacutenico de desarrollo Xamarin

Para el estudio de las aplicaciones generadas por compilacioacuten cruzada se desarrolloacute

la aplicacioacuten moacutevil de WebUNLP utilizando Xamarin integrado con Microsoft Visual

Studio Siguiendo la estrategia maacutes eficiente para trabajar en este entorno se ha creado

una solucioacuten uacutenica conteniendo tres proyectos distintos Uno de ellos se utilizoacute para

generar la aplicacioacuten Android otro para la aplicacioacuten Windwos Phone 8 y el tercero para

la implementacioacuten de una biblioteca de clases portable (PCL por sus siglas en ingleacutes) con

todo el coacutedigo compartido Los tres proyectos fueron desarrollaacutendose de manera conjunta

y concurrente

Aunque una de las ventajas maacutes importantes de Xamarin es la reutilizacioacuten de

coacutedigo eacutesta se ve fuertemente afectada por el tipo de aplicacioacuten que se desarrolla La

relacioacuten existente entre la complejidad de la interfaz y la loacutegica del negocio impacta

directamente sobre la posibilidad de mantener la mayor cantidad de coacutedigo compartido

Capiacutetulo 4 Experimentacioacuten

58

en la PCL En el desarrollo de WebUNLP la reutilizacioacuten de coacutedigo ha sido cercana al

50 Sin embargo no debe despreciarse la ventaja de utilizar el mismo lenguaje entorno

y conjunto de herramientas comunes en el desarrollo de aplicaciones para distintas

plataformas moacuteviles

La Figura 24 (b) presenta la interfaz desarrollada para Windows Phone 8

4148 Aplicacioacuten Generada por Compilacioacuten Cruzada de WebUNLP utilizando Delphi 10 Seattle

Para el profundizar el estudio de las aplicaciones generadas por compilacioacuten

cruzada ademaacutes se desarrolloacute la aplicacioacuten moacutevil de WebUNLP utilizando Delphi 10

Seattle En particular fueron de gran utilidad tanto los componentes provistos por Delphi

para acceder a servicios RESTful como el entorno visual de desarrollo de Delphi 10

Seattle

Para la recepcioacuten de notificaciones en el dispositivo de las novedades de WebUNLP

se utilizoacute el componente TPushEvent conectado al servicio Kinvey [58]

La Figura 24 (c) presenta la interfaz de la aplicacioacuten desarrollada

(a) (b) (c)

Figura 24 Aplicacioacuten desarrollada con a) Titanium b) XamarinVisual Studio y c) Delphi XE

415 Conclusiones del experimento WebUNLP Seleccionar un dominio para desarrollar un caso experimental tiene sus

particularidades La novedad de disponer una aplicacioacuten moacutevil no es motivo suficiente

que justifique tal desarrollo Es necesario satisfacer un conjunto de requerimientos

claramente planteados

Capiacutetulo 4 Experimentacioacuten

59

WebUNLP es un entorno virtual de ensentildeanza y aprendizaje utilizado por diversos

cursos de grado y postgrado de la Universidad Nacional de La Plata Por ende la cantidad

de usuarios beneficiados por acceder desde cualquier lugar a este entorno es importante

De esta manera se optoacute por elegir dicho espacio virtual para ser replicado en una

versioacuten moacutevil que no soacutelo permita acercarlo a sus usuarios sino que ademaacutes ampliacutee sus

funciones en este caso puntualmente para la cartelera

Para el desarrollo de esta experimentacioacuten se desarrolloacute la misma aplicacioacuten para

los cinco tipos de enfoques de desarrollo moacutevil (web nativa hiacutebrida interpretada y

generada por compilacioacuten cruzada)

Se destaca la gran simpleza de generar la versioacuten web dado que se utilizan las

mismas herramientas tecnoloacutegicas que las usadas para el desarrollo de cualquier

aplicacioacuten web tradicional La principal diferencia en este sentido radica en la limitacioacuten

de espacio en la pantalla del dispositivo No obstante el mayor contraste estaacute dado en que

no es posible acceder a todas las capacidades de hardware del dispositivo lo que impidioacute

implementar uno de los requerimientos probablemente el maacutes interesante la notificacioacuten

de novedades de la cartelera de WebUNLP al usuario

Por otra parte las versiones nativas han cumplido todos los requerimientos Aunque

la mayor desventaja consiste en la no portabilidad lo que implicoacute un desarrollo especiacutefico

para la plataforma que se desee cubrir En este trabajo se han presentado los desarrollos

para Android e iOS sistemas operativos maacutes usados en Argentina con un costo de

desarrollo y mantenimiento inherente mayor

Para el caso del enfoque hiacutebrido tanto la versioacuten de WebUNLP desarrollada con

PhoneGap y Jquery Mobile como la versioacuten desarrollada con Sencha Touch han logrado

conjugar la simpleza del desarrollo web con el uso de todas las capacidades del

dispositivo Este tipo de enfoque pretende suplir las desventajas de los dos enfoques

previos hecho que lo posiciona como una eleccioacuten realmente interesante siempre

condicionada por los requerimientos especiacuteficos a cumplir

Por el lado del modo de desarrollo interpretado la versioacuten de WebUNLP

desarrollada con Titanium logroacute resolver todos los requerimientos previamente

planteados Al igual que en el enfoque hiacutebrido es un punto a destacar que el desarrollo

de la aplicacioacuten con Titanium es relativamente simple y es posible reutilizar todo el

Capiacutetulo 4 Experimentacioacuten

60

coacutedigo entre plataformas Lo que lo hace la eleccioacuten prima facie es el hecho de obtener

interfaces totalmente nativas algo que no se lograba mediante el enfoque hiacutebrido

Por uacuteltimo las versiones de WebUNLP generadas con el enfoque de compilacioacuten

cruzada con Xamarin y Delphi lograron cumplir los requerimientos planteados Se

destaca el hecho de que se genera interfaces totalmente nativas pero considero que el

costo es muy alto se debe disentildear las interfaces para cada plataforma de manera

independiente lo que hace que no se pueda reutilizar todo el coacutedigo fuente de la

aplicacioacuten

42 Enfoques de desarrollo Anaacutelisis comparativo de rendimiento 421 Descripcioacuten del Problema

Hace apenas unas deacutecadas atraacutes el uso de los sistemas de software estaba

restringido a un grupo reducido de usuarios especializados Aquella eacutepoca contrasta

fuertemente con la actualidad en la que los smartphones pequentildeas computadoras moacuteviles

de propoacutesito general se han vuelto cotidianos y omnipresentes Estos dispositivos pueden

utilizarse para llevar a cabo tareas complejas y criacuteticas requiriendo la mejora continua de

las capacidades de coacutemputo la disponibilidad el rendimiento eficiente entre otras

necesidades La evolucioacuten vertiginosa de esta tecnologiacutea ejerce presioacuten en la adaptacioacuten

de la Ingenieriacutea de Software

Respecto del desarrollo para dispositivos moacuteviles se debe considerar una serie de

caracteriacutesticas propias de esta actividad que no estaban presentes en el desarrollo

tradicional de software [59] Es necesario tener en cuenta sobre queacute tipo de dispositivos

se debe ejecutar la aplicacioacuten a construir La diversidad de plataformas lenguajes de

programacioacuten herramientas de desarrollo estaacutendares protocolos y tecnologiacuteas de red

algunas limitaciones de ciertos dispositivos y las exigencias de tiempo del mercado entre

otros constituyen algunos de los problemas a tratar

En la mayoriacutea de los casos el eacutexito de un producto de software para dispositivos

moacuteviles estaraacute condicionado por el nivel de popularidad que logre alcanzar Para

maximizar su presencia en el mercado es necesario que la aplicacioacuten pueda ejecutarse

sobre la mayor cantidad de plataformas moacuteviles existentes especialmente sobre las dos

maacutes populares Android e iOS [60] Para lograr este objetivo existen dos alternativas

Capiacutetulo 4 Experimentacioacuten

61

i) Desarrollar aplicaciones especiacuteficas para cada plataforma impulsando en

paralelo varios proyectos de desarrollo con las herramientas y lenguajes propios de cada

una de ellas Estas aplicaciones analizadas previamente en este trabajo se denominan

aplicaciones nativas

ii) Generar aplicaciones que puedan ejecutarse en forma directa sobre maacutes de una

plataforma de sistema operativo a partir de un uacutenico proyecto de desarrollo Estas

aplicaciones como ya se ha presentado en este trabajo se denominan aplicaciones

multiplataforma

En los uacuteltimos antildeos se ha incrementado el intereacutes de la comunidad de Ingenieriacutea de

Software por el estudio del desarrollo de aplicaciones multiplataforma para dispositivos

moacuteviles

En [5] se presenta un anaacutelisis comparativo de enfoques de desarrollo de aplicaciones

multiplataforma para dispositivos moacuteviles proponiendo la siguiente taxonomiacutea

aplicaciones web moacuteviles aplicaciones hiacutebridas aplicaciones interpretadas y

aplicaciones generadas por compilacioacuten cruzada

En [7] y [8] se analizan aspectos generales de frameworks de desarrollo

multiplataforma para dispositivos moacuteviles

En [61] se comparan aspectos no funcionales para los diferentes enfoques de

desarrollo de aplicaciones multiplataforma para dispositivos moacuteviles

En [9] se analizaron ventajas y desventajas de los enfoques de desarrollo

multiplataforma mencionados desde el punto de vista del Ingeniero de Software

La eleccioacuten del modo de desarrollo de aplicaciones para dispositivos moacuteviles

depende de varios factores Uno de ellos en muchos casos esencial es el tiempo de

ejecucioacuten El intereacutes por optimizar el tiempo de ejecucioacuten de una aplicacioacuten de software

es intriacutenseco a la disciplina informaacutetica Esto se evidencia entre otras cosas por la

evolucioacuten del poder de coacutemputo de los procesadores Ademaacutes el rendimiento eficiente

es uno de los atributos que las aplicaciones de software deben satisfacer seguacuten diversos

estaacutendares de calidad entre otros ISOIEC 9126 e ISOIEC 25010 [62]

En lo que respecta al desarrollo de aplicaciones para dispositivos moacuteviles es

oportuno considerar el tiempo de ejecucioacuten de las aplicaciones por diversos motivos

El tiempo de ejecucioacuten de una aplicacioacuten estaacute fuertemente ligado al consumo de

Capiacutetulo 4 Experimentacioacuten

62

energiacutea [63] el cual estaacute limitado por la capacidad de la bateriacutea de los dispositivos

Asimismo el rendimiento de las aplicaciones se ve reflejado principalmente

mediante las calificaciones de los usuarios en las tiendas de aplicaciones en liacutenea

Aplicaciones con bajo rendimiento pueden implicar usuarios disconformes produciendo

publicidad negativa [60] Andre Charland y Brian Leroux identifican al tiempo de

ejecucioacuten como uno de los problemas principales a resolver en el desarrollo de

aplicaciones multiplataforma y afirman que a los usuarios finales les preocupa la calidad

del software y la experiencia de uso [64]

Corral Sillitti y Succi realizaron un anaacutelisis de rendimiento comparativo entre

aplicaciones nativas y aplicaciones hiacutebridas utilizando el framework Phonegap para una

versioacuten del sistema operativo Android [65]

Es importante destacar que no se han encontrado estudios que evaluacuteen y comparen

el rendimiento entre los diversos modos de desarrollo multiplataforma de acuerdo a la

taxonomiacutea propuesta en [5] aplicaciones web moacuteviles aplicaciones hiacutebridas

aplicaciones interpretadas y aplicaciones generadas por compilacioacuten cruzada Esta

taxonomiacutea es la que se utiliza de referencia en este trabajo

El presente apartado realiza un anaacutelisis comparativo de rendimiento de aplicaciones

para dispositivos moacuteviles generadas por el enfoque de desarrollo nativo y los distintos

enfoques de desarrollo multiplataforma seguacuten [5]

En la seccioacuten siguiente se describe el experimento utilizado para evaluar tiempos

de ejecucioacuten en aplicaciones nativas y en los diversos modos de desarrollo de aplicaciones

moacuteviles multiplataforma y en las secciones posteriores se muestran y analizan los

resultados obtenidos se presentan las conclusiones y el trabajo futuro

422 Desarrollo

4221 Disentildeo de las pruebas

Todas las pruebas cuyos resultados se presentan en este trabajo fueron realizadas

sobre dispositivos moacuteviles con sistemas operativos Android e iOS dado que en la

actualidad abarcan gran parte del mercado mundial de acuerdo a lo indicado en [60]

Para llevar a cabo la experimentacioacuten se seleccionaron los frameworks de desarrollo

multiplataforma seguacuten las alternativas presentadas en [10] Se disentildearon pruebas para

evaluar el rendimiento de Apache Cordova [28] Appcelerator Titanium [35] y Xamarin

Capiacutetulo 4 Experimentacioacuten

63

[41] que se corresponden con los modos de desarrollo hiacutebrido interpretado y compilacioacuten

cruzada respectivamente Tambieacuten se experimentoacute con otros dos frameworks de

desarrollo multiplataforma que recientemente han ganado popularidad NativeScript

(desarrollo interpretado) y Corona (compilacioacuten cruzada) Finalmente se incluyeron al

conjunto de pruebas las aplicaciones web y el enfoque nativo de desarrollo para Android

e iOS De este modo se logroacute una muestra razonablemente representativa de las diversas

opciones existentes en la actualidad

Para la realizacioacuten de las pruebas se utilizaron seis dispositivos moacuteviles distintos

(ver Tabla 2) tres de ellos con sistema operativo Android identificados como DA1 DA2 y

DA3 (dos smartphone y una tablet) y tres con sistema operativo iOS identificados como

DI1 DI2 y DI3 (dos smartphone y una tablet)

ID Sistema Operativo Caracteriacutesticas

DA1 Android 44

Tipo Smartphone Marca Motorola

Modelo Moto-G2 Procesador Quad-core 12 GHz Cortex-A7

RAM 1GB Snapdragon 400

DA2 Android 502

Tipo Smartphone Marca Samsung

Modelo S6 Procesador Octa-core (4x21 GHz Cortex-A57 amp 4x15

GHz Cortex-A53) RAM 3GB Exynos 7420 Octa

DA3 Android 422

Tipo Tablet Marca Samsung Modelo Tab 2

Procesador Dual-core 10 GHz RAM 1GB TI OMAP 4430

DI1 iOS 92

Tipo Smartphone Marca Apple Modelo 5S

Procesador Dual-core 13 GHz Cyclone (ARM v8-based)

RAM 1GB Apple A7

DI2 iOS 91

Tipo Smartphone Marca Apple

Modelo 6 plus Procesador Dual-core 14 GHz Typhoon (ARM v8-

based) RAM 1GB Apple A8

DI3 iOS 91 Tipo Tablet

Marca Apple Modelo Ipad Air

Capiacutetulo 4 Experimentacioacuten

64

Procesador Dual-core 13 GHz Cyclone (ARM v8-based)

RAM 1GB Apple A7 Tabla 2 Dispositivos moacuteviles utilizados en el experimento

Se definieron siete escenarios de anaacutelisis distintos uno por cada estrategia de

desarrollo utilizada

1 Nativo para Android y nativo para iOS 2 Aplicaciones web (multiplataforma) 3 Apache Cordova (multiplataforma hibrido) 4 Appcelerator Titanium (multiplataforma interpretado) 5 NativeScript (multiplataforma interpretado) 6 Xamarin (multiplataforma compilacioacuten cruzada) 7 Corona (multiplataforma compilacioacuten cruzada)

En los seis dispositivos se llevaron a cabo pruebas para cada uno de los siete

escenarios mencionados definiendo asiacute un total de 42 casos de prueba

Con el fin de evaluar la velocidad de procesamiento se planteoacute un caacutelculo simple

que incluyoacute varias iteraciones funciones matemaacuteticas y aritmeacutetica de punto flotante que

se resume en la siguiente serie

119904119890119903119894119890 =sum sum (log2(119896) +3119896

2119895+ radic119896

100000

119896=1

+ 119896119895minus1)

5

119895=1

A modo de ejemplo en la Figura 25 se muestra el coacutedigo multiplataforma

desarrollado en Apache Cordova para el caacutelculo de la serie definida

El experimento planteado permite medir con precisioacuten la variable analizada en este

caso el tiempo de ejecucioacuten requerido para realizar un caacutelculo matemaacutetico intensivo

Este tipo de caacutelculo matemaacutetico es frecuente en diversas aplicaciones que se

ejecutan en dispositivos moacuteviles por ejemplo juegos aplicaciones con realidad

aumentada aplicaciones para tratamiento de imaacutegenes entre otras en las cuales no

siempre es posible utilizar el poder de la Unidad de Procesamiento Grafico (GPU) para

el caacutelculo

El coacutedigo fuente de los experimentos llevados a cabo se encuentra disponible en

[66]

En las siguientes secciones se describe la experimentacioacuten y se analizan los

resultados obtenidos

Capiacutetulo 4 Experimentacioacuten

65

4222 Recoleccioacuten de datos

Para cada uno de los 42 casos de prueba definidos se realizaron 30 ejecuciones

independientes del experimento disentildeado obteniendo en cada caso una muestra T = T1

T2 hellip T30 con Ti = tiempo requerido para el caacutelculo de la serie en la i-eacutesima ejecucioacuten

del experimento planteado El tiempo Ti se expresa en milisegundos

Para caracterizar cada una de las muestras obtenidas se han calculado los

estadiacutesticos y S que se corresponden con la media (o promedio muestral) y la

desviacioacuten estaacutendar muestral (ver Tabla 3)

var startTime = new Date()getTime()

var serie = 0

for ( var j=1 j lt= 5 j++ )

for ( var k=1 k lt= 100000 k++ )

series = series + (Mathlog(k)MathLN2) + (3k2j) +

Mathsqrt(k) + Mathpow(k j-1)

var finalTime = new Date()getTime()

var duration = finalTime - startTime

documentgetElementById(result)innerHTML = duration + -gt + series

Figura 25 Caacutelculo de serie coacutedigo multiplataforma desarrollado en Apache Cordova

Capiacutetulo 4 Experimentacioacuten

66

Dada la muestra T=T1 T2 hellip Tn

Media o promedio muestral = (

1

119899)sum119879119894

119899

119894=1

Desviacioacuten estaacutendar muestral 119878 = radic

1

119899 minus 1sum(119879119894 minus )2119899

119894=1

Tabla 3 Estadiacutesticos utilizados en el anaacutelisis de los datos

423 Resultados Obtenidos En la Tabla 4 se presenta una siacutentesis de los resultados obtenidos conformada por

los valores y S calculados para cada caso de prueba planteado Estos valores permiten

comparar el rendimiento de las aplicaciones generadas a partir de los distintos enfoques

de desarrollo evaluadas sobre cada uno de los seis dispositivos utilizados

Los valores presentados en la Tabla 4 y graficados con diagramas de barras en la

Figura 26 sugieren un anaacutelisis por separado de los casos con sistema operativo Android

y los casos con sistema operativo iOS Claramente las siluetas delineadas en los

diagramas de barras de la Figura 26 se repiten de forma similar en los escenarios con el

mismo sistema operativo pero se diferencian notablemente entre distintos sistemas

operativos

Nativo WebApp Apache Cordova Titanium NativeScript Xamarin Corona

DA1 53293 18627 23033 21167 18730 39517 140173

S 1614 632 1422 2495 939 895 1260

DA2 21180 9067 8577 9563 8967 21100 60053

S 1997 1248 883 764 916 669 595

DA3 76380 17273 19060 19270 18350 37933 134430

S 2898 1551 936 1680 304 831 2339

DI1 413 5710 32373 29977 25203 12543 3963

S 078 1655 1662 401 728 1103 085

DI2 413 4190 26397 24113 22343 10303 9863

S 073 538 1544 495 861 491 613

DI3 253 4167 29223 27267 22597 11053 10967

S 057 444 1082 550 277 390 275

Tabla 4 Siacutentesis de resultados obtenidos

Capiacutetulo 4 Experimentacioacuten

67

Figura 26 Diagrama de barras con las muestras recolectadas (las barras muestran el tiempo promedio expresado en milisegundos)

Capiacutetulo 4 Experimentacioacuten

68

424 Anaacutelisis de Resultados Debido a las diferencias de hardware de los dispositivos utilizados no es prudente

comparar el rendimiento de las aplicaciones nativas en Android con respecto a las de

iOS No obstante de los resultados obtenidos es posible inferir que el enfoque nativo en

iOS resulta mucho maacutes eficiente que el enfoque nativo en Android Existen diversos

factores que presumen justificar este hecho entre ellos la diferencia inherente de ejecutar

coacutedigo Objective C en iOS comparado con ejecutar coacutedigo Java en Android el cual

necesita del Android Runtime (ART) para su funcionamiento ralentizaacutendolo

Respecto de las aplicaciones web multiplataforma los resultados de rendimiento

resaltaron positivamente en relacioacuten al resto tanto en Android como en iOS Asiacute el

enfoque de desarrollo multiplataforma web seriacutea una opcioacuten conveniente para alcanzar

un buen rendimiento en todos los dispositivos moacuteviles independientemente de su sistema

operativo Sin embargo esta eleccioacuten podriacutea verse afectada por las limitaciones de estas

aplicaciones para acceder en forma completa a las capacidades especiacuteficas del dispositivo

Respecto de los enfoques hiacutebrido e interpretado -analizados a traveacutes de las

tecnologiacuteas Coacuterdova Titanium y NativeScript- es importante destacar que si bien estos

enfoques trabajan de modo distinto entre siacute tienen algo en comuacuten la ejecucioacuten de coacutedigo

JavaScript En este sentido el motor de JavaScript -encargado de convertir el coacutedigo

JavaScript en coacutedigo optimizado para que luego lo interprete un WebView- cumple un

rol determinante Las pruebas de estos enfoques en Android -que utiliza el motor de

JavaScript V8- tuvieron un comportamiento similar al enfoque web y comportamiento

superior que el enfoque nativo y el enfoque de compilacioacuten cruzada Por el contrario en

los dispositivos moacuteviles con iOS -que utiliza el motor JavaScriptCore- los resultados de

estas pruebas fueron peores que en los enfoques nativos web y de compilacioacuten cruzada

En los dispositivos moacuteviles con iOS los casos de compilacioacuten cruzada -analizados

a traveacutes de las tecnologiacuteas Xamarin y Corona- obtuvieron mejores resultados que los

casos hiacutebridos e interpretados pero mostraron peor rendimiento que el enfoque nativo y

que el enfoque web En cambio en los dispositivos moacuteviles con Android los resultados

de las pruebas con las aplicaciones construidas mediante el enfoque de compilacioacuten

cruzada fueron los peores La necesidad de ejecucioacuten de coacutedigo Java a traveacutes del Android

Runtime entre otros factores justifican este resultado

Capiacutetulo 4 Experimentacioacuten

69

425 Conclusiones Se ha presentado un estudio comparativo sobre el tiempo de procesamiento de

aplicaciones de software para dispositivos moacuteviles generadas con distintos enfoques de

desarrollo

Los escenarios de prueba disentildeados incluyeron los dos sistemas operativos para

dispositivos moacuteviles con mayor presencia en el mercado Android e iOS ejecutaacutendose

cada uno de ellos sobre dos smartphones (considerados de gama media y gama alta al

momento en que este trabajo fue escrito) y una Tablet

Sobre estos seis dispositivos se realizoacute un estudio de rendimiento para las

aplicaciones construidas seguacuten los enfoques de desarrollo nativos y multiplataforma

mediante un conjunto de aplicaciones que fueron desarrolladas para tal fin

1 Aplicacioacuten nativa para Android 2 Aplicacioacuten nativa para iOS 3 Aplicacioacuten web (multiplataforma) 4 Aplicacioacuten Apache Cordova (multiplataforma hibrido) 5 Aplicacioacuten Appcelerator Titanium 6 (multiplataforma interpretado) 7 Aplicacioacuten NativeScript (multiplataforma interpretada) 8 Aplicacioacuten Xamarin (multiplataforma compilacioacuten cruzada) 9 Aplicacioacuten Corona (multiplataforma compilacioacuten cruzada)

En todos los dispositivos con sistema operativo Android el peor rendimiento fue

evidenciado por Corona seguido por el enfoque nativo y Xamarin Esta situacioacuten es

totalmente opuesta a los resultados obtenidos sobre el sistema operativo iOS en doacutende las

tecnologiacuteas de desarrollo mencionadas se mostraron siempre entre las cuatro mejores En

particular es destacable la supremaciacutea del enfoque nativo frente a todos los demaacutes para el

caso de los dispositivos con iOS

Respecto al mejor rendimiento en los dispositivos Android no es posible identificar

claramente cuaacutel es el enfoque maacutes conveniente Tanto las aplicaciones web como

Coacuterdova NativeScript y Titanium alcanzaron buenos resultados en relacioacuten al resto

Nuevamente esta situacioacuten se contrapone con los datos obtenidos sobre los dispositivos

iOS en los que Coacuterdova Titanium y NativeScript obtuvieron las peores mediciones entre

las tecnologiacuteas utilizadas No ocurrioacute lo mismo con las aplicaciones web en iOS que

tambieacuten produjeron buenos resultados en relacioacuten al resto

Capiacutetulo 4 Experimentacioacuten

70

En liacuteneas generales independientemente del sistema operativo las aplicaciones

web han mostrado un buen rendimiento si se consideran todos los casos analizados

Actualmente al desarrollar un sistema de software existe la posibilidad de generar

su versioacuten para dispositivos moacuteviles Esta tarea muchas veces no es simple y una de las

decisiones maacutes importantes a tomar es elegir el enfoque de desarrollo

A partir de este trabajo se dispone de un indicador de rendimiento que puede ser

uacutetil para el Ingeniero de Software que debe seleccionar un enfoque de desarrollo de

software para dispositivos moacuteviles

Por otra parte no se han encontrado trabajos de otros autores donde se haya

analizado el rendimiento en todos los enfoques de desarrollo de software para dispositivos

moacuteviles Este tema tal como se indicoacute en la introduccioacuten es importante para la

comunidad de Ingenieriacutea de Software y los trabajos analizados hasta el momento se han

concentrado solo en los enfoques nativos yo hiacutebridos

43 Anaacutelisis comparativo de enfoques de Desarrollo de Aplicaciones Moacuteviles

Como se estudioacute en las secciones anteriores existen diferentes enfoques de

desarrollo de aplicaciones moacuteviles

Una opcioacuten es desarrollar aplicaciones moacuteviles nativas las cuales hacen uso de

todas las capacidades del dispositivo moacutevil y permiten una alta experiencia de usuario

debido a que las interfaces de usuario se componen por componentes nativos resultando

semejantes al resto de las interfaces del sistema operativo No obstante el desarrollo no

puede ser reutilizado para dar soporte a otras familias de sistemas operativos implicando

mayores costos de desarrollo y mantenimiento

En contraposicioacuten al desarrollo nativo surgioacute el desarrollo multiplataforma dando

la posibilidad de desarrollar un uacutenico producto y ejecutarlo en diferentes plataformas En

este sentido se estudiaron diferentes enfoques desarrollo web moacutevil hiacutebrido

interpretado y generado por compilacioacuten cruzada Cada uno de estos enfoques cuenta con

ciertas caracteriacutesticas que naturalmente los hacen diferenciar con ventajas y

desventajas

Se identificaron diversos factores que pueden ser utilizados para analizar las

Capiacutetulo 4 Experimentacioacuten

71

aplicaciones que se generan mediante los enfoques de desarrollo nativo y

multiplataforma los cuales se detallan a continuacioacuten

Experiencia de usuario conjunto de factores y elementos que hacen referencia

al nivel de satisfaccioacuten total de los usuarios cuando utilizan un producto o sistema

El resultado es la generacioacuten de una percepcioacuten positiva o negativa de dicho

servicio producto o dispositivo

Plataformas alcanzadas se ha visto en capiacutetulos anteriores que existen distintas

familias de sistemas operativos Seguacuten el modo de desarrollo elegido se puede

desarrollar aplicaciones para una plataforma especiacutefica o por varias

Costo del desarrollo el desarrollo puede ser maacutes o menos costoso seguacuten si

requiere codificar las soluciones de forma especiacutefica para cada sistema operativo

o si es posible la reutilizacioacuten de coacutedigo

Costo del mantenimiento la correccioacuten de errores o agregados de nuevas

funcionalidades puede requerir codificar de forma especiacutefica para cada sistema

operativo Ademaacutes se debe tener en cuenta si deben convivir diferentes versiones

del mismo producto

Entorno de desarrollo integrado Software que asiste al programador en la

construccioacuten de aplicaciones

Interfaces de usuario factor que analiza los tipos de componentes utilizados para

construir las interfaces de usuario Como se mencionoacute al analizar los distintos

enfoques de desarrollo la eleccioacuten de la herramienta a utilizar incide en si las

interfaces estaraacuten compuestas mediante componentes nativos o componentes web

los cuales pueden ser decorados para simular componentes nativos

Acceso total al dispositivo posibilidad de acceder mediante las herramientas de

desarrollo a todas las capacidades del dispositivo como la caacutemara sensores entre

otros

Modo de instalacioacuten se refiere a si la aplicacioacuten puede ser instalada desde las

tiendas de aplicaciones o es accesible sin instalacioacuten desde un navegador de

Internet

Rendimiento factor que analiza la ejecucioacuten de tareas y los tiempos asociados

Capiacutetulo 4 Experimentacioacuten

72

en su resolucioacuten

Uso offline capacidad que tiene la aplicacioacuten de funcionar sin estar conectada a

internet

Distribucioacuten a traveacutes de las tiendas posibilidad de descargar la aplicacioacuten desde

las tiendas de aplicaciones

Categoriacuteas de aplicaciones a desarrollar tipo de aplicacioacuten que se desea

desarrollar

Porcentaje de coacutedigo a reutilizar Cantidad de liacuteneas de coacutedigo con respecto al

total que pueden ser reutilizadas para en la generacioacuten de aplicaciones

multiplataforma

Con el objetivo de estudiar coacutemo se comportan e inciden estos factores en los

distintos enfoques de desarrollo se realizoacute un estudio comparativo de los diferentes

criterios a tener en cuenta Dicho estudio se sintetiza en la Tabla 5

Capiacutetulo 4 Experimentacioacuten

73

Factor a analizar Desarrollo Nativo Desarrollo Web Desarrollo Hiacutebrido Desarrollo

Interpretado

Desarrollo Generado

por Compilacioacuten

Cruzada

Experiencia de Usuario

Alta Muy Baja Baja Alta Alta

Plataformas alcanzadas

Se desarrolla

exclusivamente

para una

plataforma destino

Cualquier

plataforma Se

necesita solo un

navegador y acceso a

internet

Es posible compilar

para Android iOS

Windows Phone

Es posible compilar

para Android iOS

Windows Phone

Es posible compilar

para Android iOS

Windows Phone

Costo del desarrollo

Muy Alto Muy Bajo Bajo Medio Medio a Alto

Costo del mantenimiento

Muy Alto Muy Bajo Medio Alto Alto a Muy Alto

Entorno de desarrollo integrado

IDE uacutenico por SO Muacuteltiples opciones Plugins para IDE

geneacutericos

Algunos frameworks

disponen de IDE

especiacutefico

IDE uacutenico por

framework

Interfaces de usuario

Nativas Web Web Nativas Nativas

Acceso total al dispositivo

Si No Si Si Si

Modo de instalacioacuten

Descargar desde la Sin instalaciones Descargar desde la Descargar desde la Descargar desde la

Capiacutetulo 4 Experimentacioacuten

74

Factor a analizar Desarrollo Nativo Desarrollo Web Desarrollo Hiacutebrido Desarrollo

Interpretado

Desarrollo Generado

por Compilacioacuten

Cruzada

tienda de

aplicaciones e

instalar

tienda de aplicaciones

e instalar

tienda de aplicaciones e

instalar

tienda de aplicaciones e

instalar

Rendimiento Muy Alto Muy Bajo Bajo a Medio Alto Medio a Alto

Uso offline Si No Si Si Si

Distribucioacuten a traveacutes de las tiendas

Si No Si Si Si

Categoriacutea de aplicaciones a desarrollar

Aplicaciones que

demandan muchos

recursos o que

requiere una alta

experiencia de

usuario

Sitios web existentes Sitios web

encapsulados como

aplicacioacuten para ser

distribuidas a traveacutes

de tiendas

Aplicaciones simples a

complejas

Aplicaciones simples a

complejas

Porcentaje de Coacutedigo a reutilizar

0 100 Cerca del 100 Cerca del 90 Entre el 60 y 85

Tabla 5 Anaacutelisis comparativo de enfoques de desarrollo de aplicaciones moacuteviles

Capiacutetulo 5 Conclusiones

75

Capiacutetulo 5 Conclusiones

Inicialmente los dispositivos moacuteviles fueron pensados y disentildeados con un propoacutesito

particular A traveacutes de los antildeos el crecimiento tecnoloacutegico ha permitido incorporar

funcionalidades adicionales lo que ha posibilitado expandir el marco de uso

Actualmente el poder de coacutemputo subyacente en una gran variedad de dispositivos

moacuteviles ha generado nuevas posibilidades lo que constituye un reto para los ingenieros

de software

Asimismo y tal como se mencionoacute en capiacutetulos anteriores existen diversos

sistemas operativos para dispositivos moacuteviles siendo los maacutes populares Android iOS y

Windows Phone Debido a que el eacutexito de un producto de software estaacute vinculado en

gran parte a su uso masivo surge la necesidad de desarrollar aplicaciones moacuteviles

teniendo en cuenta cada una de estas plataformas

El desarrollo de software para dispositivos moacuteviles tiene caracteriacutesticas propias que

difieren del desarrollo tradicional Esta actividad reciente impensada deacutecadas atraacutes

marca un antes y un despueacutes en la evolucioacuten de la Ingenieriacutea de Software Es de esperar

que dicha evolucioacuten continuacutee y por consiguiente que los enfoques de desarrollo para

dispositivos moacuteviles cambien o sean reemplazados por otros Es claro que por el

momento existen cinco posibilidades de desarrollo de una misma aplicacioacuten moacutevil

Aplicaciones nativas

Aplicaciones web

Aplicaciones hiacutebridas

Aplicaciones interpretadas

Aplicaciones generadas por compilacioacuten cruzada

Para un completo anaacutelisis de cada enfoque de desarrollo es que se disentildearon una

serie de casos de estudio El primero de ellos consistioacute en desarrollar una aplicacioacuten moacutevil

para cada enfoque de desarrollo presentado Teniendo este primer objetivo definido se

decidioacute extender el entorno virtual de ensentildeanza y aprendizaje WebUNLP a traveacutes de

una aplicacioacuten moacutevil enfocada en la cartelera de novedades de los cursos La aplicacioacuten

Capiacutetulo 5 Conclusiones

76

moacutevil debiacutea permitir el ingreso de alumnos y docentes con las mismas credenciales que

las utilizadas en la versioacuten web y debiacutea mostrar informacioacuten sincronizada con la web

sobre las novedades publicadas en las carteleras de los cursos Asimismo cuando los

docentes publiquen novedades aquellos alumnos pertenecientes al curso deben recibir

una notificacioacuten en su dispositivo moacutevil

Luego de desarrollar las aplicaciones moacuteviles para cada enfoque de desarrollo se

pueden elaborar algunas conclusiones

Se destaca la simpleza a la hora de generar la versioacuten web moacutevil pero se observan

limitaciones al no poder acceder a todas las capacidades de hardware del dispositivo

El desarrollo de las aplicaciones nativas resultoacute oacuteptimo si se lo compara con los

requerimientos oportunamente planteados con la desventaja de que las aplicaciones no

son portables implicando desarrollos especiacuteficos para cada plataforma que se desee

cubrir Por otro lado el desarrollo de las aplicaciones hibridas ndashutilizando PhoneGap y

Sencha- lograron conjugar la simpleza del desarrollo web con el uso de todas las

capacidades del dispositivo posicionaacutendolo como una eleccioacuten realmente interesante De

igual manera la aplicacioacuten interpretada desarrollada mediante Titanium logroacute resolver

todos los requerimientos previamente planteados se destaca que el desarrollo fue

relativamente simple y es posible reutilizar todo el coacutedigo entre plataformas El hecho de

obtener interfaces totalmente nativas la posiciona como la alternativa ideal Por uacuteltimo

las aplicaciones generadas con el enfoque de compilacioacuten cruzada (Delphi y Xamarin)

lograron cumplir los requerimientos planteados la obtencioacuten de interfaces totalmente

nativas es algo a destacar pero conlleva un alto costo ya que se debe disentildear las interfaces

para cada plataforma de manera independiente

El segundo experimento del presente trabajo consistioacute en analizar el rendimiento

de las aplicaciones generadas mediante cada enfoque de desarrollo En total se

desarrollaron mediante distintas tecnologiacuteas nueve aplicaciones Las pruebas se

realizaron en los dos sistemas operativos de mayor relevancia Android e iOS a traveacutes de

seis dispositivos (cuatro smartphones y dos tablets)

En todos los dispositivos con sistema operativo Android el peor rendimiento se

encontroacute en la aplicacioacuten generada por Corona seguido por el enfoque nativo y Xamarin

En cambio estas tecnologiacuteas se mostraron siempre entre las cuatro mejores sobre el

sistema operativo iOS

Capiacutetulo 5 Conclusiones

77

Respecto al mejor rendimiento en los dispositivos Android no es posible identificar

claramente cuaacutel es el enfoque maacutes conveniente Tanto las aplicaciones web como

Coacuterdova NativeScript y Titanium obtuvieron buenos resultados de rendimiento en

relacioacuten al resto Nuevamente esta situacioacuten se contrapone con los datos obtenidos sobre

los dispositivos iOS en los que Coacuterdova Titanium y NativeScript obtuvieron las peores

mediciones entre las tecnologiacuteas utilizadas No ocurrioacute lo mismo con las aplicaciones web

en iOS que tambieacuten produjeron buenos resultados en relacioacuten al resto

En liacuteneas generales independientemente del sistema operativo las aplicaciones

web han mostrado un buen rendimiento si se consideran todos los casos analizados

Por uacuteltimo se elaboroacute un anaacutelisis comparativo de las caracteriacutesticas inherentes a

cada enfoque de desarrollo Se identificaron ciertos factores de intereacutes que la comunidad

de ingenieriacutea de software considera al elegir queacute tecnologiacutea utilizar y se analizoacute su

impacto en cada enfoque de desarrollo

Capiacutetulo 6 Trabajo Futuro

78

Capiacutetulo 6 Trabajo Futuro

Si bien se estudiaron en el presente trabajo diversas tecnologiacuteas para el desarrollo

de aplicaciones moacuteviles se planea profundizar el estudio analizando otras herramientas

multiplataforma disponibles en el mercado como Ionic [32] NativeScript [38] Applause

[40] React Native [67] entre otras

Ademaacutes se plantea como liacutenea de trabajo futuro ampliar el anaacutelisis comparativo de

rendimiento incluyendo otros aspectos del desarrollo para dispositivos moacuteviles como

por ejemplo el acceso a disco el consumo de bateriacutea y el tiempo de renderizacioacuten de

imaacutegenes

Por uacuteltimo es deseable estudiar la experiencia de usuario en las aplicaciones

generadas por cada enfoque de desarrollo de aplicaciones para dispositivos moacuteviles

Capiacutetulo 6 Trabajo Futuro

79

Bibliografiacutea

80

Bibliografiacutea

[1] A Talukder H Ahmed and R Yavagal Mobile Computing Technology Applications and Service Creation Tata McGraw-Hill Ed 2010

[2] Abrahamsson P et al Mobile-D An Agile Approach for Mobile Application Development in In Companion To the 19th Annual ACM SIGPLAN Conference on Object-Oriented Programming Systems Languages and Applications (OOPSLA 04 ) Vancouver Canada 2004 pp 174-175

[3] P Abrahamsson Mobile software development - the business opportunity of today in Proceedings of the International Conference on Software Development Reykjavik 2005

[4] I S Hayes Just Enough Wireless Computing Prentice Hall Professional Technical 2002

[5] Stelios Xinogalos Spyros Xanthopoulos A Comparative Analysis of Cross-platform Development Approaches for Mobile Applications in Proceedings of the 6th Balkan Conference in Informatics Thessaloniki Greece 2013 pp 213-220

[6] Tolety SB Raj R A study on approaches to build cross-platform mobile applications and criteria to select appropriate approach in India Conference (INDICON) 2012 Annual IEEE India 2012

[7] Yonathan Aklilu Redda Cross platform Mobile Applications Development in Master in Information Systems Norwegian University of Science and Technology Norway 2012

[8] Datta SK Bonnet C Nikaein N Dalmasso I Survey comparison and evaluation of cross platform mobile application development tools in Wireless Communications and Mobile Computing Conference (IWCMC) Cagliari Sardinia Italia 2013

[9] Lisandro Deliacutea Nicolaacutes Galdaacutemez Pablo Thomas and Patricia Pesado An Experimental Analysis of Application Types for Mobile Devices in Computer Science amp Technology Series - XIX Argentine Congress of Computer Science - Selected Papers Editorial de la Universidad de La Plata 2014 pp 173 -183

[10] Lisandro Deliacutea Nicolaacutes Galdamez Pablo Thomas Leonardo Corbalaacuten and Patricia Pesado Multi-Platform Mobile Application Development Analysis in IEEE Ninth International Conference on Research Challenges in Information Science - IEEE RCIS Atenas Grecia May 2015

[11] Telam [Online] httpwwwtelamcomarnotas201504102073-telefonia-movil-lineas-activashtml

Bibliografiacutea

81

[12] RTVE [Online] httpwwwrtveesnoticias20110212evolucion-del-telefono-movil-del-zapatofono-smartphones404523shtml

[13] Vodafone [Online] httpblogvodafonecouk20130829vodafone-uks-ceo-guy-laurence-4g-finally-has-a-purpose

[14] Muy Canal [Online] httpwwwmuycanalcom20140131futuro-del-telefono-movil

[15] Statcounter [Online] httpgsstatcountercom

[16] Anthony I Wasserman Software Engineering Issues for Mobile Application Development 2010

[17] Statista [Online] httpwwwstatistacom

[18] Lisandro Deliacutea Nicolaacutes Galdamez Pablo Thomas Leonardo Corbalaacuten and Patricia Pesado Anaacutelisis Experimental de desarrollo de Aplicaciones Moacuteviles Multiplataforma in XX Congreso Argentino de Ciencias de la Computacioacuten CACIC 2014 San Justo Argentina octubre 2014

[19] Lisandro Deliacutea Nicolaacutes Galdamez Pablo Thomas and Patricia Pesado Un Anaacutelisis Experimental de Tipo de Aplicaciones para Dispositivos Moacuteviles in XIX Congreso Argentino de Ciencias de la Computacioacuten CACIC 2013 Mar del Plata Argentina 2013

[20] Abhinay Puvvala Amitava Dutta Rahul Roy and Priya Seetharaman Mobile Application Developersrsquo Platform Choice Model in 2016 49th Hawaii International Conference on System Sciences (HICSS) Koloa Hawaii 2016

[21] Android Dashboard [Online] httpsdeveloperandroidcomaboutdashboardsindexhtml

[22] Xcode [Online] httpsdeveloperapplecomxcode

[23] KW Tracy Mobile Application Development Experiences on Applersquos iOS and

Android OS Potentials IEEE vol 31 no 4 July-Aug 2012

[24] Google Recommendations for building smartphone-optimized websites [Online] httpgooglewebmastercentralblogspotcomar

[25] Bootstrap [Online] httpgetbootstrapcom

[26] Foundation [Online] httpfoundationzurbcom

[27] PhoneGap [Online] httpphonegapcom

[28] Apache Cordova [Online] httpscordovaapacheorg

Bibliografiacutea

82

[29] Adobe PhoneGap Build [Online] httpsbuildphonegapcom

[30] CocoonJS [Online] httpscocoonio

[31] Ludei [Online] httpswwwludeicom

[32] Ionic [Online] httpionicframeworkcom

[33] Sencha [Online] httpswwwsenchacomproductstouchoverview

[34] A Kosmaczewski Sencha Touch 2 Up and Running OrsquoReilly 2013

[35] Appcelerator Titanium [Online] httpwwwappceleratorcomproduct

[36] Backbone [Online] httpbackbonejsorg

[37] Underscorejs [Online] httpunderscorejsorg

[38] NativeScript [Online] httpswwwnativescriptorg

[39] TypeScript [Online] httpswwwtypescriptlangorg

[40] applause [Online] httpwwwapplausecom

[41] Xamarin [Online] wwwxamarincom

[42] Delphi [Online] httpswwwembarcaderocomproductsdelphi

[43] RubyMotion [Online] httpwwwrubymotioncom

[44] Xtext [Online] httpwwweclipseorgXtext

[45] Mono [Online] httpwwwmono-projectcom

[46] [Online] httpswebunlpeadunlpeduar

[47] I Salmre Writing Mobile Code Essential Software Engineering for Building Mobile Applications Addison Wesley Professional 2005

[48] Mapbox [Online] httpswwwmapboxcomlabstwitter-gnipbrands

[49] Ruby S Richardson L RESTful Web Services OrsquoReilly Media 2007

[50] Matthew J Hamm Wireframing Essentials Packt Publishing 2014

[51] GCM [Online] httpsdevelopersgooglecomcloud-messaging

[52] iOS Human Interface Guidelines [Online] httpsdeveloperapplecomioshuman-interface-guidelinesoverviewdesign-principles

[53] APN [Online] httpdeveloperapplecomlibrarymacdocumentationNetworkingInternetConceptual

Bibliografiacutea

83

RemoteNotificationsPGChaptersApplePushServicehtmlapple_refdocuidTP40008194-CH100-SW9

[54] Mark Norm Norman Francis Christian Heilmann Web Development Solutions Ajax APIs Libraries and Hosted Services Made Easy Apress 2007

[55] JqueryMobile [Online] httpsjquerymobilecom

[56] Pushwoosh [Online] httpsgithubcomPushwooshpushwoosh-phonegap-plugin

[57] J Clark Creating Mobile Apps with Sencha Touch 2 Packt Publishing 2013

[58] Kinvey [Online] httpwwwkinveycom

[59] Ali Mesbah Philippe Kruchten Mona Erfani Joorabchi Real Challenges in Mobile App Development in ACM IEEE International Symposium on Empirical Software Engineering and Measurement Baltimore Maryland US 2013

[60] Andreacute Nitze Andreas Schmietendorf Florian Roumlsler Towards a Mobile Application Performance Benchmark in ICIW 2014 The Ninth International Conference on Internet and Web Applications and Services Paris France 2014

[61] Sebastian Hanschke and Tim A Majchrzak Henning Heitkoumltter Comparing Cross Platform Development approaches For Mobile Applications in 8th International Conference on Web Information Systems and Technologies (WEBIST) Porto Portugal 2012

[62] HW Kim SG Chung CS Jung Measuring Software Quality A Survey of ISOIEC 9126 IEEE Software vol 21 no 5 pp 88 ndash 92 SeptemberOctober 2004

[63] Luis Corral Anton B Georgiev Alberto Sillitti and Giancarlo Succi Can execution time describe accurately the energy consumption of mobile apps An experiment in Android GREENS 2014 Proceedings of the 3rd International Workshop on Green and Sustainable Software pp 31-37 June 2014

[64] Brian Leroux Andre Charland Mobile application development web vs native Magazine Communications of the ACM vol 54 no 5 pp 49-53 May 2011

[65] Luis Corral Alberto Sillitti and Giancarlo Succi Mobile multiplatform development An experiment for performance analysis in The 9th International Conference on Mobile Web Information Systems (MobiWIS) Ontario Canada 2012

[66] Repositorio Git III-LIDI [Online] httpsgitlabcomiii-lidiperformance-assessment-multiplatform-mobile-applicationstreemaster

[67] React Native [Online] httpsfacebookgithubioreact-native

[68] Lisandro Galdaacutemez Nicolaacutes Corbalaacuten Leonardo Thomas Pablo Pesado Patricia Deliacutea Un anaacutelisis comparativo de rendimiento en aplicaciones moacuteviles

Bibliografiacutea

84

multiplataforma in XXI Congreso Argentino de Ciencias de la Computacioacuten Juniacuten 2015

Page 8: Desarrollo de Aplicaciones Móviles Multiplataforma

Prefacio

8

El desarrollo multiplataforma a diferencia del desarrollo nativo se centra en el

reuacuteso de coacutedigo La construccioacuten de aplicaciones web moacuteviles constituye un ejemplo que

representa este enfoque Sin embargo las limitaciones derivadas de su ejecucioacuten dentro

de un navegador ha motivado a los ingenieros de software a dirigir su atencioacuten hacia otro

tipo de aplicaciones multiplataforma con el que se obtienen resultados maacutes cercanos a las

soluciones nativas En este contexto existen diversas sub-clasificaciones [5] [7] [8] y es

de intereacutes analizar las caracteriacutesticas inherentes a cada una de ellas a traveacutes de la

construccioacuten de un prototipo experimental

Trabajos publicados

Los resultados parciales del presente trabajo dieron lugar al siguiente capiacutetulo de

libro

ldquoAn Experimental Analysis of Application Types for Mobile Devicesrdquo [9]

Lisandro Deliacutea Nicolaacutes Galdaacutemez Pablo Thomas Patricia Pesado

Computer Science amp Technology Series - XIX Argentine Congress of Computer

Science - Selected Papers Editorial de la Universidad de La Plata 2014 p173 -

183 ISBN 978-987-1985-49-4

Asiacute mismo se realizaron publicaciones en los siguientes eventos cientiacuteficos

ldquoMulti-Platform Mobile Application Development Analysisrdquo [10]

Lisandro Deliacutea Nicolaacutes Galdamez Pablo Thomas Leonardo Corbalaacuten Patricia

Pesado

IEEE Ninth International Conference on Research Challenges in Information

Science - IEEE RCIS

Atenas Grecia 13 al 15 de mayo de 2015

Forma de Publicacioacuten Proceedings - CD ROM

ISBN 978-1-4673-6630-4

Organizacioacuten del trabajo

Este trabajo se organiza de la siguiente manera

El capiacutetulo 1 resentildea la evolucioacuten de los dispositivos moacuteviles

Prefacio

9

En el capiacutetulo 2 se describen conceptos esenciales del desarrollo de aplicaciones

para dispositivos moacuteviles

En el capiacutetulo 3 se profundizan conceptos relacionados al desarrollo de

aplicaciones moacuteviles multiplataforma y se estudian diferentes metodologiacuteas y

herramientas

El capiacutetulo 4 contiene un conjunto de experimentos sobre desarrollos de

aplicaciones moacuteviles multiplataforma y el anaacutelisis de los resultados obtenidos

El capiacutetulo 5 presenta las conclusiones obtenidas y el capiacutetulo 6 los trabajos

futuros propuestos en relacioacuten al tema

Finalmente se detalla la bibliografiacutea utilizada en el presente trabajo

Capiacutetulo 1 Tecnologiacutea Moacutevil

10

Capiacutetulo 1 Tecnologiacutea Moacutevil

Hubo una eacutepoca en el que los teleacutefonos moacuteviles no teniacutean pantalla taacutectil ni

permitiacutean grabar viacutedeo ni siquiera podiacutean conectarse a Internet Tampoco podiacutean enviar

y recibir mensajes Simplemente permitiacutean la funcioacuten baacutesica de hablar por teleacutefono

Dos deacutecadas atraacutes los dispositivos moacuteviles eran aparatos de gran tamantildeo y pesados

Soacutelo algunas pocas personas podiacutean acceder a estos dispositivos ya que se consideraban

artiacuteculos de lujo Pero este escenario fue cambiando paulatinamente llevando a que el

celular se transforme en un elemento imprescindible en nuestras vidas En Argentina en

el antildeo 2003 habiacutea 4 millones de liacuteneas activas En la actualidad la cifra llega a 37 millones

de liacuteneas activas y 62 millones de liacuteneas declaradas [11]

11 Los inicios

La Segunda Guerra Mundial originoacute la necesidad de comunicarse a distancia por

lo que Motorola creoacute un equipo militar llamado Handie Talkie H12-16 para

comunicaciones viacutea ondas de radio

Su salto a los sistemas civiles sucedioacute a finales de la deacutecada de los 40 con sistemas

de radio analoacutegicos en frecuencias FM principalmente y con servicios en las bandas HF

y VHF ofrecidos por la americana Bell

En 1955 Ericsson comercializoacute el Mobile Telephone System A (MTA) Phone

(Figura 1) un teleacutefono que pesaba 40 kilogramos y que se instalaba en automoacuteviles

Como curiosidad tuvo un total de 125 usuarios hasta 1967

Capiacutetulo 1 Tecnologiacutea Moacutevil

11

Figura 1 Mobile Telephone System A (MTA)

La primera llamada moacutevil data del 3 de abril de 1973 cuando Martin Cooper

(Figura 2) en aquel entonces ingeniero electroacutenico de Motorola realizoacute una llamada

desde la calle en Nueva York La llamada fue realizada mediante un prototipo del

Motorola DynaTAC 8000x Considerado el primer moacutevil del mundo pesaba cerca de un

kilo y mediacutea 33x45x89 centiacutemetros su bateriacutea teniacutea uacutenicamente la autonomiacutea de una

hora en conversacioacuten necesitando diez horas para cargarse Su costo era de USD 4000

Capiacutetulo 1 Tecnologiacutea Moacutevil

12

Figura 2 Martin Cooper el autor de la primer llamada moacutevil

El verdadero conocimiento popular del teleacutefono moacutevil no llegoacute hasta la deacutecada de

los 90 con la segunda generacioacuten de estos dispositivos

La comunicacioacuten digital permitioacute mejorar la calidad de la escucha de voz la

reduccioacuten del tamantildeo y peso de los dispositivos utilizados y sobre todo el incremento de

compantildeiacuteas operadoras que dieron paso a un mercado maacutes competitivo y accesible

Los usuarios fueron testigos de avances sorprendentes como la identificacioacuten de

llamada o los mensajes de texto que constituyeron a una nueva forma de comunicacioacuten

Vertiginosamente el celular pasoacute de ser considerado una herramienta de trabajo a

generalizarse en todos los estratos de la sociedad

Seguacuten avanzaba la deacutecada del 90 los teleacutefonos moacuteviles iban adaptaacutendose a esas

novedades incorporando pantallas cada vez de mayor tamantildeo y en los maacutes avanzados

haciendo desaparecer la antena que era necesario desplegar para poder realizar una

comunicacioacuten en condiciones adecuadas

Poco a poco los dispositivos empezaron a integrar cada vez maacutes funciones aviso

por vibracioacuten juegos bluetooth infrarrojos politonos y ya con el cambio de siglo

pantallas a color y caacutemaras fotograacuteficas Maacutes adelante llegariacutea la grabacioacuten de viacutedeo el

acceso a Internet las pantallas taacutectiles entre otras [12]

Capiacutetulo 1 Tecnologiacutea Moacutevil

13

12 Evolucioacuten de los protocolos para redes de comunicaciones

Hubiera sido imposible el auge de los teleacutefonos moacuteviles sin la estandarizacioacuten

mejora y evolucioacuten de los protocolos para redes de comunicaciones y su soporte por las

operadoras Asiacute tras las primeras comunicaciones viacutea ondas de radio con banda de

frecuencias por debajo de los 600 kHz las posteriores en AM y FM los servicios de Bell

y Ericsson en los antildeos 50 y 60 llegoacute esa primera llamada de 1973 que popularizoacute todo el

sector

La primera generacioacuten 1G fue responsabilidad de Ericsson con el sistema Telefoniacutea

Moacutevil Noacuterdica (NMT) y seguiacutea utilizando canales analoacutegicos En 1986 la compantildeiacutea

modernizoacute el sistema funcionando a frecuencias superiores de 900 MHz posibilitando

servicio para un mayor nuacutemero de usuarios Ademaacutes del NMT en los 80 se desarrollaron

otros sistemas de telefoniacutea moacutevil como el Sistema Telefoacutenico Moacutevil Avanzado (AMP)

desarrollado por los laboratorios Bell

La segunda generacioacuten 2G llegoacute en la deacutecada de los 90 con sistemas como Global

System for Mobile Communications (GSM) Estaacutendar Interno 136 (IS-136) Red

Mejorada Digital Integrada (iDEN) y el Estaacutendar Interno 95 (IS-95) GSM fue el

desarrollo maacutes relevante ya que fue el estaacutendar europeo de telefoniacutea moacutevil digital En el

proyecto participaron 26 compantildeiacuteas europeas de telecomunicaciones y en 1992 se

pusieron en marcha las primeras redes europeas de GSM-900 y los primeros teleacutefonos

moacuteviles GSM Ademaacutes de Europa GSM ha terminado imponieacutendose tambieacuten en Asia

Ameacuterica Latina Oceaniacutea y una parte de Ameacuterica del Norte

La necesidad de mayores velocidades de transmisioacuten de datos y mayores

capacidades que permitieran nuevos servicios dieron paso a la Tercera Generacioacuten (3G)

no sin antes pasar por el 25G que proporcionoacute el General Packet Radio Service (GPRS)

El estaacutendar europeo es el Universal Mobile Telecommunications System (UMTS) basado

en la tecnologiacutea W-CDMA y estaacute gestionado por la organizacioacuten 3GPP tambieacuten

responsable de GSM GPRS y Enhanced Data Rates for GSM Evolution (EDGE)

La Cuarta Generacioacuten (4G) sucede a las tecnologiacuteas 2G y 3G y ofrece entre otras

mejoras mayor seguridad y Calidad de Servicio (QoS) junto a velocidades de acceso

muy superiores a las anteriores (mayores a 100 Mbits en movimiento y a 1 Gbits en

Capiacutetulo 1 Tecnologiacutea Moacutevil

14

reposo) Estaacute basada completamente en el protocolo IP siendo un sistema de sistemas y

una red de redes que se alcanza gracias a la convergencia entre las redes de cables e

inalaacutembricas Seguacuten Vodafone ldquoel 4G tiene finalmente una razoacuten y es el entretenimientordquo

[13] La norma Long Term Evolution (LTE) es la maacutes extendida aunque no la uacutenica

existente

5G seraacute la nueva revisioacuten del sistema de conexioacuten de red sin cables y se espera que

esteacute disponible en el antildeo 2020 (Figura 3) en paiacuteses como Corea del Sur como asiacute tambieacuten

en Europa Como 4G la mayor velocidad de transferencia seraacute su mayor avance con

velocidades de descarga de hasta 10 Gbps (125 GBs) [14]

Figura 3 Evolucioacuten de los protocolos para redes de comunicacioacuten moacuteviles

13 La actualidad

Muchas de las actividades que un tiempo atraacutes soliacutean hacerse desde una

computadora tales como revisar el correo electroacutenico escuchar muacutesica agendar una

nueva cita en el calendario compartir fotos en alguna red social entre muchiacutesimas otras

en nuestros diacuteas se llevan a cabo de forma natural desde los dispositivos moacuteviles La

Figura 4 muestra coacutemo los dispositivos moacuteviles les han ganado terreno a los equipos

Capiacutetulo 1 Tecnologiacutea Moacutevil

15

tradicionales denominados lsquode escritoriorsquo

Figura 4 Comparacioacuten entre plataformas [15]

En la actualidad existen cientos de modelos diferentes de dispositivos moacuteviles y

los fabricantes siguen innovando intentando destacarse sobre la competencia Hoy en diacutea

no nos sorprende encontrar dispositivos moacuteviles con procesadores quad-core de 22 Ghz

Incluso ya se comienzan a conocer prototipos de dispositivos con ocho o diez nuacutecleos

De la mano de los procesadores la memoria RAM de los dispositivos moacuteviles

tambieacuten ha crecido considerablemente llegando a comercializarse dispositivos con 3 GB

de memoria

La caacutemara de los dispositivos es otra de las capacidades que maacutes ha progresado

llegando a encontrarse sensores de 20 MP y la posibilidad de grabar videos en formato

UHD 4K (3840 x 2160)

El tamantildeo de las pantallas y sus resoluciones fueron otra de las caracteriacutesticas que

maacutes han evolucionado Es posible encontrar dispositivos con pantallas de 5 pulgadas con

posibilidad de visualizar 16 millones de colores y con resoluciones Quad HD (2560 x

1440)

La tecnologiacutea de las bateriacuteas es un aspecto en que no se ha logrado grandes avances

en el sector ni se pronostican grandes progresos a corto plazo Incluso la llegada de chips

Capiacutetulo 1 Tecnologiacutea Moacutevil

16

maacutes potentes mayores pantallas o el 4G disminuiraacuten auacuten maacutes la autonomiacutea de las bateriacuteas

El uacuteltimo aspecto a mencionar es el de las capacidades del dispositivo Ademaacutes de

los ya claacutesicos sensores Global Positioning System (GPS) la capacidad de conectividad

viacutea bluetooth infrarrojo y WIFI hoy surge una diversidad de opciones que pueden

disponer los teleacutefonos inteligentes

Por el lado de la conectividad cada vez es maacutes comuacuten encontrar terminales con

mecanismos de comunicacioacuten Near Field Communication (NFC) o WIFI Direct

Con respecto a los sensores actualmente existen dispositivos que cuentan con

aceleroacutemetros giroscopios y magnetoacutemetros los cuales brindan a los desarrolladores de

aplicaciones la posibilidad de controlar la posicioacuten del aparato la aceleracioacuten que sufre

el dispositivo con respecto a la fuerza de la gravedad etc Tambieacuten es comuacuten el uso de

sensores de proximidad por ejemplo para apagar la pantalla mientras se atiende una

llamada El sensor de luminosidad permite medir el brillo de la luz ambiental Asiacute el

software del teleacutefono utiliza estos datos para ajustar el brillo de la pantalla

automaacuteticamente hacieacutendola maacutes clara o maacutes oscura

Los uacuteltimos smartphones de gama alta tambieacuten son capaces de medir la presioacuten

atmosfeacuterica a traveacutes de un baroacutemetro Los datos que mide el dispositivo sirven para

determinar en queacute nivel por encima del mar se encuentra el teleacutefono lo que se traduce en

la mejora de la precisioacuten del GPS

Incluso ya existen dispositivos que cuentan con un sensor de humedad del aire el

cual permite controlar los niveles de humedad para por ejemplo ayudar a las personas

con problemas respiratorios

Como si todo esto fuese poco existen modelos con podoacutemetro -para medir con

precisioacuten los pasos que da el usuario- pulsoacutemetro -para medir las pulsaciones a traveacutes de

los vasos sanguiacuteneos de los dedos- y hasta sensor de huellas digitales para cuestiones

relativas a la seguridad

Por lo anteriormente dicho los desarrolladores de aplicaciones para dispositivos

moacuteviles de la actualidad tienen el desafiacuteo de poder manipular desde sus aplicaciones

todas las posibilidades descriptas

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

17

Capiacutetulo 2 Desarrollo de

Aplicaciones Moacuteviles Nativas

Si bien el desarrollo de aplicaciones para dispositivos moacuteviles se remonta por lo

menos a 10 antildeos atraacutes ha habido un crecimiento exponencial desde que se abrioacute la tienda

de aplicaciones de iPhone en julio de 2008 Desde entonces los fabricantes de

dispositivos han creado tiendas de aplicaciones para otros dispositivos moacuteviles

incluyendo Android BlackBerry Nokia Ovi Windows Phone entre otros [16]

Actualmente el desarrollo de aplicaciones para dispositivos moacuteviles es un campo

en evolucioacuten con gran intereacutes econoacutemico y cientiacutefico Una prueba de esto es que para

Julio del 2014 se disponiacutean de maacutes de 3 millones de aplicaciones entre las principales

tiendas virtuales de aplicaciones Y solamente en el antildeo 2013 se contabilizaron 101

billones de descargas de aplicaciones moacuteviles en todo el mundo de las cuales 9 billones

fueron descargas pagas y 92 billones descargas gratuitas [17]

Con el actual creciente nuacutemero de plataformas moacuteviles desarrollar aplicaciones

moacuteviles se hizo muy difiacutecil para las empresas ya que necesitan desarrollar las mismas

aplicaciones para cada plataforma de destino

El desarrollo de aplicaciones nativas es la forma natural de implementar

aplicaciones moacuteviles Las aplicaciones nativas son concebidas para ejecutarse en una

plataforma especiacutefica es decir se debe considerar el tipo de dispositivo el sistema

operativo a utilizar y su versioacuten

Las aplicaciones nativas se desarrollan utilizando un entorno de desarrollo

integrado (IDE) que proporciona las herramientas de desarrollo necesarias para la

construccioacuten y depuracioacuten de aplicaciones El coacutedigo fuente se compila para obtener

coacutedigo ejecutable proceso similar que el utilizado para las tradicionales aplicaciones de

escritorio

Cuando la aplicacioacuten estaacute lista para ser distribuida debe ser transferida a las App

stores (tiendas de aplicaciones) especiacuteficas de cada sistema operativo Estas tiendas tienen

un proceso de auditoriacutea para evaluar si la aplicacioacuten se adecuacutea a los requerimientos de la

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

18

plataforma a operar Cumplido este paso la aplicacioacuten se pone a disposicioacuten de los

usuarios

La principal ventaja de este tipo de aplicaciones es la posibilidad de interactuar con

todas las capacidades del dispositivo (caacutemara GPS aceleroacutemetro agenda entre otras)

Ademaacutes no es estrictamente necesario poseer acceso a internet Su ejecucioacuten es raacutepida

puede ejecutarse en modo background y notificar al usuario cuando ocurra un evento que

necesite su atencioacuten

Claramente estas ventajas tienen como contrapartida un mayor costo de desarrollo

pues se debe utilizar un lenguaje de programacioacuten diferente seguacuten la plataforma Por ende

si se desea cubrir varias plataformas se deberaacute generar una aplicacioacuten para cada una de

ellas Esto conlleva a mayores costos de desarrollo actualizacioacuten y distribucioacuten de nuevas

versiones [9] [18] [19]

En la actualidad hay una gran cantidad de sistemas operativos para dispositivos

moacuteviles La Figura 5 muestra la utilizacioacuten de los sistemas operativos en los uacuteltimos antildeos

en todo el mundo mientras que la Figura 6 muestra la misma comparativa en Argentina

En ambos casos el ranking es liderado por Android seguido por iOS y en tercer lugar

Windows Phone [20]

Figura 5- Utilizacioacuten de Sistemas Operativos Moacuteviles en el mundo

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

19

Figura 6- Utilizacioacuten de Sistemas Operativos Moacuteviles en Argentina

A continuacioacuten se analizaraacute coacutemo es el proceso de desarrollo de aplicaciones

moacuteviles nativas en los sistemas operativos maacutes relevantes de la actualidad y luego en la

Tabla 1 se compararaacuten aspectos teacutecnicos de estas plataformas

21 Desarrollo de Aplicaciones Nativas en Android

Android es el sistema operativo maacutes utilizado en la actualidad Puede ser utilizado

en teleacutefonos inteligentes tablets relojes inteligentes televisores y automoacuteviles

Estaacute basado en Linux y es respaldado por Google

211 Evolucioacuten Inicialmente el desarrollo de Android era llevado a cabo por la empresa Android

Inc la cual fue fundada en el antildeo 2003 y recibiacutea respaldo econoacutemico por parte de Google

Antildeos maacutes tarde maacutes precisamente en Julio del 2005 Google adquiere Android y da lugar

a la primer versioacuten del sistema operativo en el antildeo 2007 Android 10 Apple Pie1

desarrollado sobre el kernel de Linux 26 En su presentacioacuten se hizo hincapieacute en que era

un sistema operativo para dispositivos moacuteviles totalmente gratuito y open source a

1 Desde la salida de la primera versioacuten del sistema operativo hasta el presente Google ha seguido la tradicioacuten de ponerle un nombre de postre a cada una de sus versiones siguiendo un orden alfabeacutetico

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

20

diferencia de iOS

La primera versioacuten comercial teniacutea mucho margen de mejora y apenas inquietoacute a la

competencia pero ya introduciacutea algunos conceptos que antildeos despueacutes son un estaacutendar de

los sistemas operativos moacuteviles

Menuacute desplegable de notificaciones

Widgets de escritorio

Android Market la tienda de apps (no contaba con ninguacuten sistema de pago para

usuarios Todo el cataacutelogo era gratuito)

Integracioacuten con Google Mail Contacts y Calendar

Navegador Maps Google Talk reproductor de YouTube y soporte para caacutemaras

En febrero del 2009 apenas 3 meses despueacutes del lanzamiento de Android 10 Apple

Pie llega la primera actualizacioacuten Android 11 Banana Bread No antildeadiacutea grandes

novedades pero siacute corregiacutea numerosos fallos detectados en la primera versioacuten e introduciacutea

un concepto por entonces poco usado por los rivales que buscaba facilitar la vida al

usuario las actualizaciones automaacuteticas con las que resultaba muy simple mantener todo

el software al diacutea

El 30 de abril del 2009 lanzan una nueva actualizacioacuten de gran importancia con

muchas novedades en cuanto a usabilidad Android 15 Cupcake Esta nueva versioacuten

introdujo las siguientes caracteriacutesticas

Teclado taacutectil QWERTY en pantalla con prediccioacuten de texto y diccionario de

usuarios para palabras personalizadas

Grabacioacuten y reproduccioacuten en formatos MPEG-4 y 3GP

Widget de escritorio de Google para realizar buacutesquedas directamente

SDK para el desarrollo de widgets de escritorio por parte de terceros

Funciones del portapapeles ampliadas

Interfaz para grabar y reproducir viacutedeos mejorada

Posibilidad de auto-rotacioacuten

Android 16 Donut apareciacutea en septiembre del 2009 con algunas novedades

adicionales

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

21

Soporte para CDMAEVDO 8021x VPN que ampliaba los mercados al alcance

de Android

Compatibilidad con distintas resoluciones de pantalla Soporte WVGA

Actualizacioacuten y nuevo disentildeo del Android Market

Utilidad de buacutesqueda universal en Internet y en el mismo dispositivo

Galeriacutea caacutemara y videocaacutemara con mejor integracioacuten con raacutepido acceso a la

caacutemara

Motor multi-lenguaje de Siacutentesis de habla para permitir a cualquier aplicacioacuten de

Android hablar una cadena de texto

Mejoras en las buacutesquedas por texto y voz

Apenas dos meses despueacutes en noviembre del 2009 lanzan Android 20 Eclair

uno de los cambios maacutes sustanciales sufridos por Android tanto a nivel de disentildeo como

de arquitectura interna Era una versioacuten dirigida a dispositivos de mayor tamantildeo en un

tiempo en el que los fabricantes empezaban a diversificar su oferta La versioacuten 21

mantuvo la misma nomenclatura y soacutelo corrigioacute algunos fallos pero su uso fue mayor

entre los fabricantes que la versioacuten anterior A continuacioacuten se mencionan algunas de las

nuevas caracteriacutesticas

Sincronizacioacuten de cuenta expandida permitiendo a los usuarios agregar muacuteltiples

cuentas al dispositivo para sincronizacioacuten de correo y contactos

Google Maps Navigation sistema de navegacioacuten GPS gratuito

Compatibilidad con Microsoft Exchange

Optimizacioacuten en velocidad de hardware y GUI renovada

Soporte para maacutes tamantildeos de pantalla y resoluciones con una mejor tasa de

contraste

Navegador actualizado soporte para HTML5 y barra de direccioacuten y buacutesqueda

unificada

Funcioacuten Speech to Text para escribir textos mediante el uso de la voz

Nueva pantalla de desbloqueo

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

22

Nuevas caracteriacutesticas para la caacutemara incluyendo soporte de flash zoom digital

modo escena balance de blancos efecto de colores y enfoque macro

Adicioacuten de fondos de pantalla animados permitiendo la animacioacuten de imaacutegenes

de fondo de la pantalla inicio para mostrar movimiento

El 20 de mayo del 2010 apareciacutea una nueva actualizacioacuten del sistema operativo

Android 22 Froyo Traiacutea numerosos cambios algunos copiados de otras ROMs y otros

con el uso empresarial en mente

Pantalla Home totalmente redisentildeada con 5 paneles en lugar de 3

Nueva galeriacutea de imaacutegenes

Soporte para actuar como hotspot2 para otros dispositivos tethering3 de datos

Soporte para Flash 101

Funcioacuten copiar y pegar mejorada en Google Mail

Nueva pantalla alternativa de desbloqueo mediante coacutedigo PIN

Grabacioacuten de viacutedeo en 720p

Optimizaciones en velocidad memoria y rendimiento Compilador JIT

Integracioacuten del motor de JavaScript V8 de Chrome en el navegador

Soporte para el servicio Android Cloud to Device Messaging (C2DM)

habilitando notificaciones push

El antildeo 2010 iba a concluir con el lanzamiento de una versioacuten sumamente popular

que prevalecioacute gran tiempo Android 23 Gingerbread Esta versioacuten contoacute con las

siguientes caracteriacutesticas

Disentildeo de la interfaz de usuario actualizado con incremento en velocidad y

simpleza

Nuevo disentildeo para el teclado numeacuterico en pantalla

Soporte para tamantildeos y resoluciones de pantalla extra-grandes (WXGA y

mayores)

Funcioacuten para copiar y pegar mejorada con soporte para caracteres individuales en

lugar de cajas de texto

2 lugar que ofrece acceso a Internet a traveacutes de una red inalaacutembrica y un enrutador conectado a un proveedor de servicios de Internet 3 proceso por el cual un dispositivo moacutevil con conexioacuten a Internet actuacutea como pasarela para ofrecer acceso a la red a otros dispositivos

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

23

Soporte para NFC

Herramientas de visualizacioacuten de consumo y uso de la bateriacutea mejoradas

Soporte para caacutemaras frontales

Acceso de bajo nivel para los desarrolladores de juegos

Recolector basura concurrente para incrementar el rendimiento

Sustitucioacuten del sistema de archivos YAFFS por ext4

Soporte nativo para maacutes sensores (tales como giroscopio y baroacutemetro)

Soporte de chat de video o voz usando Google Talk

En febrero del 2011 Google lanza Android 30 Honeycomb Se trata de una

actualizacioacuten especiacutefica para tablets no compatible con teleacutefonos que introduciacutea las

liacuteneas maestras de la interfaz en el futuro Las versiones 31 y 32 mantuvieron el mismo

nombre y fueron baacutesicamente un conjunto de correcciones A continuacioacuten se listan los

cambios significativos que tuvieron lugar en estas versiones

Pantalla de Inicio redisentildeada

Inclusioacuten de tonos azules en la interfaz en detrimento del verde tradicional

Nuevas funcionalidades para el emplazamiento y uso de widgets

Fin de los botones fiacutesicos Adaptacioacuten automaacutetica del SO seguacuten el dispositivo

Agregado de barra de sistema con caracteriacutesticas de acceso raacutepido a

notificaciones estados y botones de navegacioacuten suavizados disponible en la parte

inferior de la pantalla

Antildeadida la barra de accioacuten (Action Bar en ingleacutes) entregando acceso a opciones

contextuales navegacioacuten widgets u otros tipos de contenido en la parte superior

de la pantalla

Multitarea simplificada ndash tocando Aplicaciones recientes en la barra del sistema

permite a los usuarios ver instantaacuteneas de las tareas en curso y saltar raacutepidamente

de una aplicacioacuten a otra

Aceleracioacuten graacutefica mediante hardware

Optimizacioacuten del renderizado de graacuteficos 3D

Soporte para perifeacutericos USB

Octubre del 2011 fue el mes del lanzamiento de Android 40 Ice Cream Sandwich

basado en el nuacutecleo de Linux 301 Esta nueva versioacuten introdujo las siguientes mejoras

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

24

Nueva Interfaz Holo y fuente tipograacutefica Roboto

Sistema de gestioacuten de notificaciones mejorado

Multitarea mejorada

Android Beam funcionalidad para transferir datos entre dos dispositivos viacutea NFC

Funcioacuten de desbloqueo mediante el rostro

Nuevas funciones para la visualizacioacuten y gestioacuten del consumo de datos

Nuevas aplicaciones de correo y calendario

Habilidad de acceder a aplicaciones directamente desde la pantalla de bloqueo

Herramienta integrada de captura de pantalla

Soporte MKV

Aceleracioacuten por hardware de la interfaz de usuario

Soporte Stylus (laacutepiz taacutectil)

En Julio del 2012 se presenta Android 41 Jelly Bean que incluye las siguientes

novedades

Sistema de deteccioacuten de entrada de datos taacutectiles optimizado

Estreno de Google Now el servicio-asistente de voz inteligente de Google

Navegador Google Chrome

Buacutesqueda mediante voz mejorada

Nuevas posibilidades para las notificaciones interactivas de escritorio

Dictado de voz offline

Se deja de dar soporte al Flash Player

Meses despueacutes en noviembre del 2012 se lanza la versioacuten Android 42 Jelly Bean

la cual incluye habituales correcciones rendimiento mejorado y cambios puntuales en

ciertas aplicaciones

Android 43 Jelly Bean es anunciado el 24 de julio del 2013 Uno de los objetivos

de esta versioacuten fue tratar de consolidar a Android como un sistema operativo capaz de

ejecutar juegos Esta nueva versioacuten cuenta con las siguientes novedades

Soporte multiusuario y de perfiles mejorado

Soporte OpenGL ES 30

Bluetooth Smart

Plataforma Google Games

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

25

Servicios de localizacioacuten Wi-Fi mejorados

Ya no es necesario pulsar el icono del microacutefono para realizar una buacutesqueda de

voz Solo hay que decir OK Google y en seguida ordenar al equipo lo que se

necesite

Android 44 KitKat es anunciado en octubre del 2013 Esta nueva versioacuten intenta

corregir el problema de fragmentacioacuten se cuenta con muchas versiones y los fabricantes

tienen dificultades para adaptar sus productos a los requerimientos de cada nueva versioacuten

Se destaca de esta versioacuten

Menores requisitos de hardware para corregir la fragmentacioacuten de versiones

Compatible con terminales con 512 MB de memoria RAM

Reduccioacuten del consumo de bateriacutea mediante la optimizacioacuten de los sensores

Inclusioacuten de la suite ofimaacutetica QuickOffice

Servicios de almacenamiento online integrados Google Drive Box

Soporte para infrarrojos Usar el moacutevil como mando de TV

Aplicaciones a pantalla completa

Captura de pantalla en viacutedeo

En octubre del 2014 se lanza Android 5 Lollipop daacutendole soporte a otros

dispositivos como Android TV relojes inteligentes autos etc Esta nueva versioacuten

incluye

Nuevo disentildeo basado en Material Design que logra un flujo de trabajo maacutes fluido

Interfaz que se adapta a cualquier tamantildeo de dispositivo

Renovado sistema de notificaciones inteligente

Interesante vista multitarea que muestra capas con las diferentes aplicaciones

abiertas

Funcioacuten Android Smart Lock que permite emparejar un dispositivo Android con

otro ya sea un reloj inteligente o un automoacutevil

Modo Invitado para que puedas prestar el dispositivo sin que otros usuarios

tengan acceso a la informacioacuten privada

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

26

Soporte para sistemas de 64 bits

En octubre del 2015 se anuncia Android 6 Marshmallow que incluye las

siguientes novedades

Soporte para autenticacioacuten viacutea huella digital

Desinstalacioacuten raacutepida de las aplicaciones desde la pantalla de inicio

Nuevo esquema de gestioacuten de energiacutea llamado Doze

Mayor duracioacuten de la bateriacutea cuando el dispositivo estaacute en reposo

Inclusioacuten de Android Pay que emplearaacute el chip NFC

Mejoras en Google Now

Mayor control sobre los permisos requeridos por las aplicaciones

212 Proceso de Desarrollo Las aplicaciones nativas para esta plataforma se implementan utilizando el lenguaje

de programacioacuten Java

El estaacutendar sugiere utilizar el IDE oficial Android Studio (Figura 7) aunque es

posible utilizar otros entornos Independientemente del IDE utilizado se necesita

disponer del Software Development Kit (SDK) de la versioacuten de Android en la que se

desea trabajar El SDK provee todas las herramientas necesarias para desarrollar

compilar depurar y simular aplicaciones

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

27

Figura 7 Entorno de desarrollo Android Studio

Uno de los interrogantes que surgen en el momento de crear una aplicacioacuten es con

cual versioacuten de la Application Programming Interface (API) de Android trabajar Se debe

tener en cuenta que al trabajar con una versioacuten especiacutefica se estaacute limitando cuales son los

dispositivos que soportaraacuten la aplicacioacuten a crear No se recomienda utilizar una API

antigua -ya que no se estariacutea utilizando muchos de los avances de la plataforma- ni

tampoco la uacuteltima en el mercado ndashdebido a que pocos seriacutean los usuarios que podriacutean

utilizarla- En la Figura 8 se visualiza la distribucioacuten de versiones seguacuten los dispositivos

activos a la fecha de Diciembre 2016 [21] De esa informacioacuten se desprende que si se

optara por trabajar con la API 16 (Jelly Bean) el 966 de los celulares activos podraacuten

utilizar la aplicacioacuten a crear

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

28

Figura 8 Distribucioacuten de versiones de Android - Diciembre 2016

22 Desarrollo de Aplicaciones Nativas en iOS

iOS es un sistema operativo para dispositivos moacuteviles de la empresa multinacional

Apple Si bien fue originalmente desarrollado para el dispositivo iPhone luego el sistema

operativo alcanzoacute otros dispositivos como iPod Touch iPad A diferencias de otros

sistemas operativos para dispositivos moacuteviles iOS solo funciona en dispositivos creados

por la empresa Apple pero no asiacute en otro hardware de terceros

221 Evolucioacuten El sistema operativo moacutevil iOS se deriva del sistema operativo OS X el cual estaacute

basado en UNIX

La primera versioacuten del sistema operativo se presentoacute en enero del 2007 A

diferencia de sus sucesores la primera versioacuten no se llamoacute iOS sino iPhone OS Se

trataba de una plataforma bastante cerrada ya que las uacutenicas aplicaciones disponibles

eran las que estaban integradas al sistema operativo y fueron creadas por Apple como los

Mapas Mail Fotos Calendario entre otras

El desarrollo de aplicaciones nativas por parte de terceros no tuvo lugar hasta marzo

del 2008 momento en el cual Apple liberoacute el primer kit de desarrollo

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

29

Meses despueacutes se lanza la segunda versioacuten del sistema operativo iPhone OS 2 En

esta oportunidad introducen la App Store la cual permitioacute la descarga de aplicaciones de

terceros Ademaacutes la aplicacioacuten de Mapas recibioacute compatibilidad con el GPS y el Mail

notificaciones push

En 2009 Apple lanzoacute iPhone OS 3 y en su versioacuten 32 se le cambioacute el nombre a

iOS 32 iOS 3 incorporoacute grandes novedades buacutesqueda Spotlight botones Copiar y

Pegar grabacioacuten de viacutedeo edicioacuten de viacutedeo mensajes MMS comandos de voz modo

landscape y otras muchas apps Ademaacutes se siguioacute explotando las ventajas de las

notificaciones push y se continuoacute evolucionando su SDK daacutendole mayor poder a los

desarrolladores de aplicaciones

iOS 4 llegoacute a mediados del 2010 y trajo consigo nuevos cambios a la plataforma

Los maacutes destacables fueron la inclusioacuten de fondos de pantalla y la posibilidad de poder

abrir varias aplicaciones en simultaacuteneo Adicionalmente las aplicaciones podiacutean ser

agrupadas mediante carpetas algo simple pero uacutetil

En Junio del 2011 se libera iOS 5 Esta nueva versioacuten ofreciacutea grandes novedades

un Centro de Notificaciones Siri ndashel asistente virtual que marcoacute tendencia en los uacuteltimos

antildeos- iMessage iCloud Game Center Quiosco Recordatorios integracioacuten social para

Twitter y se mejoroacute notablemente la app de navegacioacuten web nativa Safari

iOS 6 fue presentado en Junio del 2012 y trajo como novedades la inclusioacuten de

Apple Maps (en reemplazo de Google Maps) mejoras en Siri con informacioacuten mucho

maacutes precisa la integracioacuten de Facebook y Twitter en el sistema el modo no molestar el

soporte para LTE entre otras

Los usuarios de este sistema operativo recibieron una de las mayores

actualizaciones en Junio del 2013 cuando se presenta iOS 7 Esta nueva versioacuten contoacute

con un redisentildeo total de la interfaz de usuario basaacutendose en transparencias y degradados

Ademaacutes se introdujo el Centro de Control AirDrop una renovada app de fotos iTunes

Radio y CarPlay mejoras en el App Switcher videos a caacutemara lenta entre otras cosas

Junio del 2014 fue el mes donde quedoacute disponible iOS 8 una nueva versioacuten del

sistema operativo que intenta resolver algunos errores de iOS 7 y antildeadir ciertas mejoras

Las extensiones y la posibilidad de conectar apps entre siacute mediante el menuacute compartir

hicieron que iOS 8 fuese mucho maacutes productivo Ademaacutes incorporoacute widgets para el

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

30

Centro de Notificaciones o las notificaciones interactivas Ademaacutes se implementaron los

contactos favoritos los teclados de terceros la funcioacuten Reachability y la utilidad

Continuity y las aplicaciones Apple Pay Salud HandOff QuickType Compartir en

Familia iCloud Drive y Apple Music

En el 2015 se presenta iOS 9 que introdujo todo un cambio en el uso del sistema

gracias a la compatibilidad con el 3D Touch del iPhone 6s y el iPhone 6s Plus Se

actualizoacute Notas con nuevas funciones se sustituyoacute Newsstand por News se incorporaron

mejoras en Passbook que pasoacute a llamarse Wallet y se mejoroacute Mapas con direcciones y

traacutefico Se antildeadioacute Split View Picture-in-Picture y atajos en teclados de terceros Ademaacutes

el sistema ahora podiacutea aprovechar mejor la autonomiacutea del dispositivo gracias al Modo

ahorro de bateriacutea que limita las conexiones y caracteriacutesticas del sistema para no consumir

tanta energiacutea

Por uacuteltimo en Junio del 2016 quedoacute disponible iOS 10 versioacuten que se caracteriza

por abrirse a los desarrolladores Con esta nueva versioacuten se puede tener acceso a Siri al

3D Touch y a apps directas del sistema operativo Ademaacutes el centro de widgets ahora es

maacutes intuitivo y la pantalla de bloqueo maacutes uacutetil Como es habitual se aprecian mejoras en

distintas aplicaciones del sistema operativo y se permite borrar apps de Apple que no sean

utilizadas por los usuarios

222 Proceso de desarrollo Las aplicaciones moacuteviles para la plataforma iOS se desarrollan utilizando el

lenguaje de programacioacuten Objetive C El entorno de desarrollo oficial es la plataforma

Xcode [22] la cual opera en conjunto con Interface Builder una herramienta graacutefica para

la creacioacuten de interfaces de usuario

Actualmente hay dos grandes versiones del sistema operativo moacutevil en curso como

se puede apreciar en la Figura 10 Es algo a destacar que la uacuteltima versioacuten del sistema

operativo es soportada por el 63 de los dispositivos activos Claramente la

fragmentacioacuten interna es mucho menor que la encontrada en Android

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

31

Figura 9 Entorno de desarrollo Xcode

Figura 10 Distribucioacuten de versiones de iOS - Noviembre 2016

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

32

23 Desarrollo de Aplicaciones Nativas en Windows Phone

El sistema operativo moacutevil Windows Phone fue desarrollado por Microsoft y

sucede a Windows Mobile A diferencia de su predecesor estaacute enfocado en el mercado de

consumo en lugar del mercado empresarial

231 Evolucioacuten Su primera versioacuten lanzada en septiembre del 2010 fue denominada Windows

Phone 7 Fue presentado como un nuevo sistema operativo que incluye funciones de

integracioacuten con los servicios Xbox Live y Zune La interfaz conocida como Metro ha

sido revisada en su totalidad y comparte caracteriacutesticas visuales similares a la interfaz del

dispositivo Zune HD

Windows Phone 75 es una actualizacioacuten para Windows Phone lanzada en

septiembre de 2011 Esta nueva versioacuten incorporoacute numerosas caracteriacutesticas como por

ejemplo la inclusioacuten de Internet Explorer 9 con soporte para CSS3 Media Queries y

soporte para usar GPS cuando se trabaje con aplicaciones de ubicacioacuten geograacutefica entre

otros

En enero del 2013 se presenta Windows Phone 78 una actualizacioacuten que trae

mejoras como la nueva interfaz de usuario y fondos personalizados para la pantalla de

bloqueo Fue la uacuteltima gran actualizacioacuten de Windows Phone 7 ya que Microsoft se

centroacute en Windows Phone 8

Windows Phone 8 es la siguiente versioacuten del sistema operativo la cual fue

presentada a finales de 2012 Entre las nuevas caracteriacutesticas se incluyen

Nuevas pantallas de inicio y de bloqueo maacutes personalizables

Rincoacuten infantil un espacio exclusivo y controlado para los nintildeos

Cartera para almacenar tarjetas de fidelizacioacuten y de creacutedito

NFC

Internet Explorer 10

Integracioacuten con Skype

Nuevo nuacutecleo Windows NT con soporte para procesadores de varios

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

33

nuacutecleos

Captura de pantalla

Su proacutexima versioacuten es Windows Phone 81 y fue presentada en abril del 2014

Entre sus caracteriacutesticas maacutes relevantes se encuentran

Centro de notificaciones

Asistente de voz conocido con el nombre de Cortana

Sensores (de Wi-Fi de datos y de bateriacutea)

Aplicaciones que vienen en el paquete de instalacioacuten como Salud y

ejercicios Comida y bebida Viajes y Mapas (esta uacuteltima compite con Here

Maps la cual es la aplicacioacuten de mapas de Nokia)

Mejoras en la pantalla de inicio posibilidad de agregar fondos de pantalla y

una tercera columna de mosaicos personalizables (Tiles)

A mediados del 2014 Microsoft decide cambiar de estrategia tratando de unificar

todas las plataformas como PC tablets smartphones Xbox One entre otros Windows

10 (moacutevil) se dio a conocer puacuteblicamente durante un evento el 21 de enero para 2015 Al

igual que su homoacutelogo Windows 10 Mobile utiliza como navegador predeterminado

Microsoft Edge reemplazando Internet Explorer de Windows Phone 81 ya que este no

se adecuaba a las nuevas liacuteneas de disentildeo del sistema operativo

232 Proceso de desarrollo El entorno de desarrollo maacutes popular para el desarrollo de aplicaciones para

Windows Phone es Visual Studio (Figura 11) En la actualidad es posible utilizar diversos

lenguajes de programacioacuten VBNET y CNET C++ y JavaScript

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

34

Figura 11 Entorno de desarrollo Visual Studio

24 Diferencias teacutecnicas entre Android iOS y Windows Phone

Desarrollar aplicaciones moacuteviles para los tres sistemas operativos maacutes populares

implica conocer ciertos aspectos teacutecnicos de cada plataforma Algunos de estos aspectos

teacutecnicos difieren sustancialmente entre cada sistema operativo

Una de las caracteriacutesticas a tener en cuenta es si las aplicaciones moacuteviles se ejecutan

dentro de una maacutequina virtual especiacuteficamente disentildeada o si se ejecutan directamente

sobre el sistema operativo

Otro aspecto que los desarrolladores deben tener en cuenta es el lenguaje de

programacioacuten a utilizar para crear aplicaciones nativas Este aspecto es importante porque

incide en otros aspectos como por ejemplo la gestioacuten de memoria

Ademaacutes del lenguaje de programacioacuten a utilizar es importante conocer la

tecnologiacutea requerida para disentildear interfaces de usuario

Asimismo los desarrolladores deben familiarizarse con diferentes IDEs seguacuten la

plataforma en la que se desea desarrollar como asiacute tambieacuten con diferentes tiendas de

aplicaciones donde alojar los productos finales

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

35

Por uacuteltimo la tecnologiacutea de hardware requerida para soportar el sistema operativo

tambieacuten difiere seguacuten cada plataforma

La Tabla 1 compara cada uno de estos aspectos en los sistemas operativos moacuteviles

Android iOS y Windows Phone

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

36

Sistema

Operativo

Maacutequina

Virtual

Lenguaje de

Programacioacuten

Interfaces

de usuario

Gestioacuten de

memoria

IDE Plataforma de

desarrollo

Dispositivos Tienda de

Aplicaciones

Android Dalvik VM Java XML files Garbage

collector

Android

Studio

Multiplatforma Heterogeneos Google Play

Store

iOS No Objective-C Cocoa

Touch

Reference

counting

XCode Mac OS X Homogeneos iTunes Apps

Store

Windows

Phone

CLR C and Net XAML files Garbage

collector

Visual

Studio

Windows Vista7 Homogeneos Windows

Phone Store

Tabla 1 Diferencias teacutecnicas entre las plataformas Android iOS y Windows Phone

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

37

Capiacutetulo 3 Desarrollo de

Aplicaciones Moacuteviles

Multiplataforma

En los uacuteltimos antildeos el mercado de los dispositivos moacuteviles en especial

smartphones ha mostrado un crecimiento notable tanto en Argentina como en todo el

mundo En particular en nuestro paiacutes las plataformas que maacutes han crecido son Android

e iOS [1520]

Actualmente gran parte de la industria del software se concentra en desarrollar

soluciones para dispositivos moacuteviles proveyendo especialmente aplicaciones nativas

Las aplicaciones nativas tal como se mencionoacute en el capiacutetulo anterior ofrecen la

posibilidad de acceder a todas las capacidades del dispositivo (caacutemara GPS aceleroacutemetro

y agenda entre otras) su rendimiento es alto el acceso a Internet no es estrictamente

necesario y pueden ejecutarse en segundo plano notificando al usuario cuando se requiera

su atencioacuten Estas aplicaciones pueden distribuirsecomercializarse a traveacutes de las tiendas

en liacutenea correspondientes

El principal reto para los proveedores de aplicaciones es proporcionar soluciones

para todas las plataformas pero esto conlleva un alto costo [6] no es posible reusar el

coacutedigo fuente entre plataformas diferentes multiplicando esfuerzos y elevando los costos

de desarrollo actualizacioacuten y distribucioacuten de nuevas versiones

El desarrollo multiplataforma procura optimizar la relacioacuten costobeneficio

compartiendo la misma codificacioacuten entre las versiones para las distintas plataformas

Entre otras ventajas sobresalen menor tiempo y costo de desarrollo prestaciones

similares a las nativas con acceso al hardware del dispositivo y disponibilidad de

entornos potentes de desarrollo (Delphi Visual Studio etc) o en su lugar utilizacioacuten de

tecnologiacuteas (HTML5 Javascript y CSS) bien conocidas por los desarrolladores web

quienes pueden trasladar sus conocimientos y experiencias al paradigma moacutevil Sin

embargo el rendimiento de las aplicaciones y sus interfaces de usuario pueden afectar la

experiencia de usuario

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

38

Las aplicaciones multiplataforma pueden clasificarse en aplicaciones web moacuteviles

hiacutebridas interpretadas y generadas por compilacioacuten cruzada [5] En las secciones

siguientes se analizaran cada una de estas clasifcaciones

31 Aplicaciones Web Moacuteviles

Las Aplicaciones Web Moacuteviles disentildeadas para ejecutarse dentro de un navegador

se desarrollan con tecnologiacutea web estaacutendar (HTML CSS y JavaScript) y cuentan con

una serie de caracteriacutesticas favorables no necesitan adecuarse a ninguacuten entorno operativo

son independientes de la plataforma y su puesta en marcha es raacutepida y sencilla

Por contrapartida sus tiempos de respuesta decaen debido a la interaccioacuten cliente-

servidor Al mismo tiempo resultan ser menos atractivas que las aplicaciones nativas ya

que no se encuentran instaladas en el dispositivo lo que implica acceder previamente a

un navegador Ademaacutes las restricciones de seguridad impuestas a la ejecucioacuten de coacutedigo

por medio de un navegador limitan el acceso a todas las capacidades del dispositivo [23]

Asimismo no es posible desarrollar aplicaciones web que corran en segundo plano ni

tampoco aplicaciones offline ya que es requisito disponer de una conexioacuten a internet para

su funcionamiento

El proceso de desarrollo de una aplicacioacuten web moacutevil debe contemplar una serie de

caracteriacutesticas inherentes al entorno de ejecucioacuten Como ya ha sido mencionado las

aplicaciones web moacuteviles pueden ser accesibles desde cualquier dispositivo moacutevil que

cuente con un navegador y acceso a internet pero esto no significa que la navegacioacuten en

la aplicacioacuten resulte ser coacutemoda u oacuteptima Por ejemplo una aplicacioacuten web con un menuacute

compuesto de 20 iacutetems puede implicar una usabilidad correcta desde una PC Por lo

contrario para un dispositivo moacutevil con una pantalla limitada no resulta praacutectico que se

le presente al usuario tantas opciones en el menuacute Con este ejemplo lo que se pretende

mostrar es que para que una aplicacioacuten sea accesible desde diferentes dispositivos

moacuteviles posiblemente se tengan que realizar al menos dos disentildeos de presentacioacuten

diferentes un disentildeo para PC y otro disentildeo para dispositivos moacuteviles con una estructura

organizativa de la aplicacioacuten maacutes simplificada con respecto al disentildeo tradicional Por

ejemplo algunas de las funcionalidades de la aplicacioacuten para PC pueden ser eliminadas

para la versioacuten para dispositivos moacuteviles o presentadas de forma diferente

Para desarrollar diferentes presentaciones de una misma aplicacioacuten web

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

39

actualmente existen dos estrategias distintas ambas vaacutelidas seguacuten el contexto En los

siguientes apartados se analizaraacuten cada una de ellas

311 Aplicacioacuten Web dedicada y exclusiva para dispositivos moacuteviles Esta metodologiacutea ha sido el estaacutendar hasta el antildeo 2012 En ella la direccioacuten URL

y el coacutedigo HTML de la versioacuten moacutevil son distintos de la versioacuten de escritorio Por lo

general las direcciones URL tienen el formato mnombresitiocom

Algunas de las ventajas de este meacutetodo

- En general la carga es maacutes raacutepida y la navegacioacuten maacutes coacutemoda

- Es posible adaptar de manera maacutes faacutecil el contenido de las secciones

Desventajas de este meacutetodo

- Mantenimiento maacutes costoso Se debe mantener dos versiones distintas del mismo

sitio

- Dificulta el posicionamiento del sitio en los buscadores

- Estos desarrollos al final tienden a ser versiones muy reducidas de la web para

PC llevando al usuario a frustrarse y a preferir ver la versioacuten original de la web

312 Aplicacioacuten Web con Disentildeo Adaptable Con esta metodologiacutea la aplicacioacuten web se adapta al dispositivo desde el cual se la

estaacute accediendo El coacutedigo HTML y la direccioacuten URL de la aplicacioacuten son uacutenicos El

Disentildeo Adaptable o Responsive Design (Figura 12) tiene sus oriacutegenes en el antildeo 2008

cuando la W3C discutioacute y describioacute sus propoacutesitos Desde el antildeo 2012 -momento en el

cual Google recomendoacute fuertemente su implicancia [24]- viene en ascenso y

posiblemente llegue a convertirse en un standard en un corto plazo

Mediante un Disentildeo Adaptable todos los elementos de la web se reajustan en ancho

y altura adaptaacutendose al tamantildeo de tu pantalla Incluso es posible ocultar secciones cuando

se accede desde un dispositivo moacutevil

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

40

Figura 12 Disentildeo Adaptable

Las principales ventajas del desarrollo de aplicaciones web con Disentildeo Adaptable

son

- El mantenimiento es menos costoso ya que solo hay que mantener una uacutenica

versioacuten de la aplicacioacuten

- Se simplifica el proceso de posicionar la aplicacioacuten en los buscadores

Como contrapartida el Disentildeo Adaptable presenta una serie de desventajas

- Requiere de mayores niveles teacutecnicos para su desarrollo

- El contenido de las aplicaciones con Disentildeo Adaptable puede ser mayor que el

contenido de las aplicaciones web especiacuteficas para dispositivos moacuteviles

perjudicando el tiempo de carga cuando se utiliza un tipo de conexioacuten no muy

potente y generando un mayor consumo de datos

En la actualidad existe una gran cantidad de frameworks que simplifican el

desarrollo de aplicaciones web con disentildeo adaptable destacaacutendose por su popularidad y

extensa documentacioacuten los frameworks Bootstrap [25] y Foundation [26]

32 Aplicaciones Hiacutebridas

Las aplicaciones hiacutebridas utilizan tecnologiacuteas web (HTML Javascript y CSS) pero

no son ejecutadas por un navegador En su lugar se ejecutan en un contenedor web

(webview) como parte de una aplicacioacuten nativa la cual estaacute instalada en el dispositivo

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

41

moacutevil Desde una aplicacioacuten hiacutebrida es posible acceder a las capacidades del dispositivo

a traveacutes de diversas API

Las aplicaciones hiacutebridas ofrecen grandes ventajas permitiendo la reutilizacioacuten de

coacutedigo en las distintas plataformas el acceso al hardware del dispositivo y la distribucioacuten

a traveacutes de las tiendas de aplicaciones En contrapartida se observan dos desventajas de

las aplicaciones hiacutebridas respecto del caso nativo i) la experiencia de usuario se ve

perjudicada al no utilizar componentes nativos en la interfaz y ii) la ejecucioacuten se ve

ralentizada por la carga asociada al contenedor web

Afortunadamente existe una diversidad de frameworks que permiten desarrollar

aplicaciones hiacutebridas A continuacioacuten se haraacute un breve resumen de los maacutes populares

321 PhoneGap PhoneGap [27] es un framework gratuito y open source creado en el antildeo 2008 por

la empresa Nitobi Software que permite crear aplicaciones moacuteviles usando tecnologiacutea

web estaacutendar HTML JavaScript y CSS En octubre del 2011 Adobe adquiere la empresa

Nitobi y aporta el coacutedigo de PhoneGap a Apache Software Foundation para iniciar un

nuevo proyecto por encima de PhoneGap llamado Apache Cordova [28] PhoneGap pasoacute

a ser una de las varias distribuciones de Apache Cordova (Figura 13) brindando servicios

extras como por ejemplo Adobe PhoneGap Build [29] un servicio de compilacioacuten en la

nube proporcionado por Adobe Creative Cloud PhoneGap Desktop y PhoneGap

Developer

PhoneGap permite compilar aplicaciones para las siguientes plataformas Android

IOS Amazon Fire OS Windows Phone Windows 8 Ubuntu Tizen Firefox OS

Blackberry 10

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

42

Figura 13 Funcionamiento de Apache Cordova

322 CocoonJS CocoonJS [30] es un framework para el desarrollo de aplicaciones moacuteviles

producido por Ludei [31] Actualmente cuenta con una licencia propietaria y ofrece

diferente tipos de planes pagos y gratuitos El mencionado framework estaacute basado en

Apache Cordova al igual que PhoneGap pero se diferencia de este uacuteltimo en que hace

un mayor hincapieacute en la performance de las aplicaciones resultantes CocoonJS ofrece

dos tipos de webview

Canvas+ un webview liviano optimizado para video juegos Provee solo un

subconjunto de las funcionalidades del HTML5 (canvas audio motion

geolocalizacioacuten etc) necesarias para desarrollar video juegos con el objetivo de

brindar la mejor performance posible

Webview+ un potente y completo webview basado en el webview del proyecto

Chromium el cual cuenta de una mejor performance en comparacioacuten con el

webview por defecto de Apache Cordova

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

43

CocoonJs permite crear aplicaciones tanto para iOS como para Android

323 Ionic Ionic [32] es un completo SDK gratuito y open source para el desarrollo de

aplicaciones hiacutebridas producido por Max Lynch Ben Sperry y Adam Bradley de la

compantildeia Drifty Co en el antildeo 2013 En un tiempo relativamente corto alcanzoacute una

popularidad a destacar Estaacute basado en Apache Cordova permitiendo desarrollar

aplicaciones con tecnologiacutea web A diferencia de otros frameworks para el desarrollo de

aplicaciones hibridas Ionic provee un framework para la interfaz de usuario y

herramientas visuales para disentildear interfaces

Mediante Ionic es posible crear aplicaciones para Android IOS Windows Phone y

Firefox OS

324 Sencha Touch Sencha Touch [33] es un framework gratuito Model-View-Controller (MVC)

JavaScript construido sobre el sistema de clases de Ext JS disentildeado especialmente para

el desarrollo de aplicaciones web moacuteviles para dispositivos taacutectiles [34]

Al igual que PhoneGap Sencha Touch permite a los desarrolladores crear

aplicaciones moacuteviles a partir de un desarrollo web con HTML5 CSS y Javascript A

diferencia de PhoneGap Sencha no necesita de ninguna libreriacutea de terceros para construir

interfaces similares a las nativas ya que el framework provee consigo una gran cantidad

de componentes visuales listos para utilizar

Sencha empaqueta el coacutedigo del proyecto mediante PhoneGap para luego poder

construir aplicaciones en todas las plataformas soportadas por PhoneGap

33 Aplicaciones Interpretadas

Las aplicaciones interpretadas son implementadas utilizando un lenguaje base el

cual se traduce en su mayor parte a coacutedigo nativo mientras el resto es interpretado en

tiempo de ejecucioacuten Estas aplicaciones son implementadas de manera independiente de

las plataformas utilizando diversas tecnologiacuteas y lenguajes tales como Javascript Java

Ruby y XML entre otros

Una de las principales ventajas de este tipo de aplicaciones es que se obtienen

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

44

interfaces de usuario totalmente nativas Sin embargo los desarrolladores experimentan

una dependencia total con el entorno de desarrollo elegido

Seguidamente se presentaran algunos de frameworks maacutes reconocidos para el

desarrollo de aplicaciones interpretadas

331 Appcelerator Titanium Desarrollado por Appcelerator Inc Appcelerator Titanium [35] es un framework

de coacutedigo abierto que permite la creacioacuten de aplicaciones moacuteviles para las plataformas

iOS y Android Dicho framework estaacute formado por Titanium Studio un entorno de

desarrollo de coacutedigo libre para la codificacioacuten de aplicaciones moacuteviles multiplataforma

y el SDK Titanium una serie de herramientas para el desarrollo testeo anaacutelisis

depuracioacuten y compilacioacuten de aplicaciones

Las aplicaciones desarrolladas con Appcelerator Titanium se codifican utilizando

el lenguaje Javascript el cual es evaluado en tiempo de ejecucioacuten mediante un inteacuterprete

de Javascript que se ejecuta en el sistema operativo del dispositivo Al iniciar la

aplicacioacuten desde el coacutedigo nativo se ejecuta el coacutedigo Javascript y mediante la API de

Titanium se mapea uno-a-uno cada elemento del coacutedigo Javascript con los elementos

nativos De esta manera la API de Titanium actuacutea como puente logrando interfaces de

usuario compuestas de controles nativos Este entorno de desarrollo utiliza el framework

Alloy disentildeado para el desarrollo aacutegil de aplicaciones moacuteviles Alloy estaacute basado en la

arquitectura MVC y soporta el uso de tecnologiacuteas populares como Backbonejs [36] y

Underscorejs [37]

Los creadores de Titanium destacan que mediante este framework es posible

reutilizar entre el 60 y 90 del coacutedigo entre distintas plataformas

332 NativeScript El 5 de marzo del 2015 la empresa Telerik lanzoacute NativeScript [38] un proyecto de

coacutedigo abierto el cual permite generar aplicaciones nativas utilizando JavaScript

Asimismo es posible desarrollar la aplicacioacuten utilizando el lenguaje TypeScript [39]

lenguaje libre y de coacutedigo abierto desarrollado por Microsoft que extiende a JavaScript

esencialmente antildeadiendo tipado estaacutetico y objetos basados en clases En este sentido

cuando se compila la aplicacioacuten se realiza la traduccioacuten del coacutedigo TypeScript a coacutedigo

JavaScript

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

45

NativeScript provee un moacutedulo multiplataforma que permite obtener aplicaciones

nativas desde coacutedigo JavaScript Este moacutedulo expone las capacidades del dispositivo y

de la plataforma subyacente de una manera consistente y permite accederlas desde el

coacutedigo JavaScript De igual manera las interfaces de usuario pueden ser definidas

mediante coacutedigo JavaScript documentos HTML y archivos CSS abstrayeacutendose de los

componentes nativos reales

Cuando la aplicacioacuten es compilada parte del coacutedigo multiplataforma es traducido

a coacutedigo nativo mientras que el resto es interpretado en tiempo de ejecucioacuten (Figura 14)

Por el momento NativeScript permite generar aplicaciones para Android e iOS y

se preveacute dar soporte a Windows Phone NativeScript renderiza controles nativos sin

utilizar WebViews logrando una performance y experiencia de usuario similar al de las

aplicaciones nativas

Figura 14 Proceso de interpretacioacuten mediante NativeScript

34 Aplicaciones Generadas por Compilacioacuten Cruzada

Estas aplicaciones se compilan de manera nativa creando una versioacuten especiacutefica de

alto rendimiento para cada plataforma destino Ejemplos de entornos de desarrollo para

generar aplicaciones por compilacioacuten cruzada son Applause [40] Xamarin [41]

Embarcadero Delphi 10 Seattle [42] y RubyMotion [43]

El entorno de desarrollo abierto Applause utiliza como entrada un lenguaje

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

46

especiacutefico del dominio basado en el framework Xtext [44] disentildeado expliacutecitamente para

aplicaciones moacuteviles orientadas a datos y genera coacutedigo fuente en Objective C Java C

o Python Las caracteriacutesticas de Xamarin Embarcadero Delphi 10 Seattle y RubyMotion

se presentan en secciones posteriores

341 Xamarin Xamarin es una plataforma de desarrollo de aplicaciones moacuteviles para generar

aplicaciones 100 nativas para iOS Android y Windows a partir de una base de coacutedigo

CNET comuacuten para conseguir entre un 75 y hasta casi un 100 de reutilizacioacuten de

coacutedigo entre plataformas Las aplicaciones escritas con Xamarin y C disponen de acceso

completo a las API de la plataforma subyacente asiacute como de la capacidad de crear

interfaces de usuario nativas y de realizar la compilacioacuten en coacutedigo nativo por lo que el

impacto en el rendimiento en tiempo de ejecucioacuten es escaso

Xamarin es una compantildeiacutea que se establecioacute en mayo de 2011 por los mismos

ingenieros que crearon el proyecto Mono [45] consistente en una implementacioacuten libre

de la plataforma de desarrollo NET para dispositivos Android iOS y GNULinux

Anteriormente este proyecto se llamaba MonoTouch y MonoDroid

Si bien Xamarin cuenta con su propio IDE denominado Xamarin Studio (Figura

15) es posible integrarlo con Microsoft Visual Studio y de esta manera generar tambieacuten

aplicaciones para Windows incluido Windows RT para tablets y Windows Phone para

celulares

En febrero del 2016 Xamarin es comprada por Microsoft y desde ese momento la

plataforma Xamarin y el IDE Xamarin Studio pasaron a ser gratuitas

Xamarin propone un enfoque de desarrollo multiplataforma en el que se comparte

la codificacioacuten completa de la loacutegica del negocio Sin embargo las interfaces deben ser

programadas de manera independiente para cada una de las plataformas destino Asiacute la

reutilizacioacuten de coacutedigo seguacuten estudios estadiacutesticos de la compantildeiacutea Xamarin es cercana

al 85

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

47

Figura 15 Entorno de Desarrollo Xamarin Studio

342 Embarcadero Delphi 10 Seattle Embarcadero Delphi 10 Seattle [42] es una plataforma de desarrollo propietaria y

no gratuita que permite a los desarrolladores crear aplicaciones raacutepidamente a traveacutes de

un entorno visual coacutemodo e intuitivo (Figura 16) La aplicacioacuten desarrollada puede ser

compilada para muacuteltiples plataformas incluyendo Windows Mac Android e iOS

Delphi 10 Seattle al igual que Xamarin aventaja a otros tipos de aplicaciones

multiplataformas con resultados 100 nativos con acceso total a los sensores y

capacidades del dispositivo (caacutemara notificaciones GPS aceleroacutemetro entre otras)

Un punto a destacar es que Delphi 10 Seattle a traveacutes del framework de interfaces

de usuario FireUI Multi-Device Designer permite crear interfaces de usuario totalmente

nativas sin la necesidad de tener que disentildear interfaces especiacuteficas para cada plataforma

en particular

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

48

Figura 16 Entorno de Desarrollo Delphi 10 Seattle

343 RubyMotion En Mayo de 2012 la empresa HipByte lanza RubyMontion un proyecto que

permite generar aplicaciones para iOS Android y OS X utilizando el lenguaje de

programacioacuten Ruby

Para poder generar las aplicaciones multiplataforma RubyMotion posee

implementaciones de Ruby sobre los sistemas operativos destinos (Android e iOS) que

permiten acceder a todas las caracteriacutesticas provistas por cada plataforma Las

herramientas de compilacioacuten provistas por RubyMotion se encargan de embeber la

correspondiente implementacioacuten de Ruby al momento de compilar para cada plataforma

La principal desventaja de RubyMotion es que soacutelo funciona bajo el sistema

operativo OS X Otro factor a tener en cuenta es que no posee un entorno de desarrollo

integrado que facilite todo el proceso al desarrollador esto se ve solventado gracias a que

ofrece complementos para los IDE y editores de coacutedigo maacutes utilizados

Finalmente si bien el producto es un servicio pago ofrece una posibilidad de

probarlo gratuitamente aunque con soporte uacutenicamente para compilar a la uacuteltima versioacuten

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

49

de cada plataforma destino

Capiacutetulo 4 Experimentacioacuten

50

Capiacutetulo 4 Experimentacioacuten

Con el objetivo de profundizar la investigacioacuten de las diferentes metodologiacuteas de

desarrollo de aplicaciones moacuteviles multiplataforma es que se llevaron a cabo diferentes

experimentos en simultaacuteneo El primer experimento consiste en el desarrollo de una

aplicacioacuten moacutevil utilizando cada una de las metodologiacuteas estudiadas en el capiacutetulo

anterior con el objetivo de analizar el proceso de desarrollo El segundo experimento

tiene como objetivo analizar el rendimiento de las aplicaciones moacuteviles generadas

mediante las metodologiacuteas estudiadas a traveacutes de un caacutelculo matemaacutetico Por uacuteltimo se

presenta un informe comparativo que pueda ayudar en la toma de decisiones sobre queacute

metodologiacutea utilizar en futuros desarrollos

41 Aplicacioacuten Moacutevil para la plataforma de E-Learning WebUNLP

411 Descripcioacuten del problema WebUNLP es un entorno virtual de ensentildeanza y aprendizaje que permite a los

docentes mediar sus propuestas educativas Alumnos y docentes pueden encontrarse en

ese espacio para compartir materiales de estudio comunicarse y generar una experiencia

educativa en forma virtual [46]

Actualmente WebUNLP cuenta con una versioacuten web enfocada a computadoras de

escritorio o portaacutetiles pero no estaacute adaptada para ser utilizada desde dispositivos moacuteviles

El desarrollo planteado consiste en extender WebUNLP con la construccioacuten de una

aplicacioacuten moacutevil que permita acceder a determinadas funcionalidades del sistema a

traveacutes de un dispositivo moacutevil El enfoque propuesto incluye un anaacutelisis de la misma

solucioacuten comparando el desarrollo nativo web hiacutebrido interpretado y de compilacioacuten

cruzada a fin de establecer cuaacutel de ellos es conveniente

Como ocurre con cualquier desarrollo de software la construccioacuten de una

aplicacioacuten moacutevil implica tener claramente definido su propoacutesito y cuaacuteles requerimientos

debe cumplir En particular para el caso de software para dispositivos moacuteviles resulta

esencial tener objetivos maacutes acotados que en su versioacuten de escritorio [47]

Capiacutetulo 4 Experimentacioacuten

51

Para el caso especiacutefico de WebUNLP se realizoacute el desarrollo incremental de una

aplicacioacuten moacutevil y esta primera versioacuten se enfocoacute en una de sus herramientas de

comunicacioacuten la cartelera Esta herramienta permite comunicar las novedades de un

curso como por ejemplo el cambio de horario de una cursada recordar las fechas de

entrega de un trabajo praacutectico entre otras [46]

412 Anaacutelisis Uno de los primeros interrogantes planteados fue la eleccioacuten de la plataforma En

teacuterminos de mercado los sistemas operativos que predominan en Argentina son Android

e iOS [4815] con lo cual se decidioacute dar soporte a estos dos sistemas operativos

Se analizaron los requerimientos funcionales y no funcionales de forma aislada a la

plataforma y luego de forma especiacutefica para cada una de ellas

A continuacioacuten se presentan algunos requerimientos a cumplir por la aplicacioacuten

El usuario debe poder ingresar a la aplicacioacuten con las mismas credenciales que las

utilizadas para acceder a la versioacuten web de escritorio

El usuario debe poder acceder a la cartelera de todos los cursos en los que

participa ya sea como docente o alumno

El usuario debe recibir una notificacioacuten en su dispositivo cuando una novedad es

publicada en la cartelera Este requerimiento no se puede cumplir en la versioacuten

web accesible desde computadoras de escritorio yo portables

El usuario debe tener la misma experiencia de uso en todas las plataformas

operativas

La aplicacioacuten web existente debe estar sincronizada con la aplicacioacuten moacutevil a

desarrollar esto significa que cualquier cambio realizado desde la aplicacioacuten

moacutevil debe verse reflejado en la versioacuten web y viceversa

413 Disentildeo Para satisfacer los requerimientos planteados en el punto anterior a excepcioacuten de

la notificacioacuten el disentildeo de la aplicacioacuten moacutevil web consiste en una reacuteplica de lo ofrecido

por WEBUNLP adaptaacutendose solamente la interfaz al tamantildeo de pantalla del dispositivo

moacutevil

Capiacutetulo 4 Experimentacioacuten

52

Para el disentildeo de las aplicaciones moacuteviles nativa hiacutebrida interpretada y de

compilacioacuten cruzada la situacioacuten es maacutes compleja En la Figura 17 se presenta la

arquitectura geneacuterica de todos los componentes que participan en este escenario de

desarrollo En ella se observa el acceso desde una PC a WebUNLP y el acceso desde

dispositivos moacuteviles a la informacioacuten de WebUNLP mediante servicios web Para el

desarrollo de los servicios web se disentildeoacute una API Restful dada su simpleza escalabilidad

e interoperabilidad [49]

Figura 17 Arquitectura geneacuterica para aplicacioacuten nativa e hiacutebrida

Asimismo existe una tarea programada (Cron) de ejecucioacuten intermitente a

intervalos regulares de tiempo la cual notifica a los dispositivos moacuteviles correspondientes

cuando se crea una novedad en la cartelera de WebUNLP El Cron identifica el sistema

operativo del dispositivo a notificar y genera dicha notificacioacuten

En cuanto a la interfaz graacutefica se planteoacute un disentildeo independiente de la plataforma

para analizar los aspectos de usabilidad de la aplicacioacuten y luego se realizaron los ajustes

necesarios para cada tipo de aplicacioacuten

En las interfaces disentildeadas la navegacioacuten es en serie en el orden en que se presentan

en el mockup [50] de la Figura 18

Capiacutetulo 4 Experimentacioacuten

53

Figura 18 Mockup independiente del tipo de aplicacioacuten

414 Desarrollo

4141 Aplicacioacuten Nativa para Android

El desarrollo de aplicaciones para la plataforma Android requiere disponer del Java

Development Kit (JDK) y su entorno de programacioacuten conocido como Android SDK

Este uacuteltimo provee libreriacuteas y herramientas necesarias para construir testear y depurar

aplicaciones para Android

El desarrollo de la aplicacioacuten de WebUNLP para Android se realizoacute seguacuten las

convenciones adoptadas por su comunidad porque aplica buenas praacutecticas en la

construccioacuten de interfaces y de la loacutegica detraacutes de ellas el acceso a datos y a servicios

web Para cumplir el requerimiento de las notificaciones en el dispositivo

correspondiente el Cron genera la notificacioacuten mediante el uso del servicio Google Cloud

Messaging (GCM) [51] En la Figura 19 se presentan las interfaces de la aplicacioacuten

desarrollada

Figura 19 Aplicacioacuten nativa para Android

Capiacutetulo 4 Experimentacioacuten

54

4142 Aplicacioacuten Nativa para iOS

La plataforma Apple iOS estaacute basada en un modelo propietario es por ello que el

desarrollo de una aplicacioacuten nativa iOS implica contar con una Apple Mac ejecutando OS

X con Xcode instalado El lenguaje de programacioacuten principal es Objective C Xcode es

el entorno de desarrollo de Apple para todos sus dispositivos y es el encargado de

proporcionar el iOS SDK con las herramientas compiladores y frameworks necesarios

Ademaacutes Xcode viene integrado con simuladores para dispositivos iOS (iPhones y iPads)

que facilitan las etapas de prueba del sistema desarrollado

Para los aspectos referentes a la interfaz graacutefica y la interaccioacuten con el usuario se

siguieron las convenciones propuestas por Apple [52] para lograr una mejor integracioacuten

de la aplicacioacuten con el sistema operativo y mejorar la experiencia del usuario

Por uacuteltimo para satisfacer el requerimiento de notificaciones el Cron notifica al

dispositivo iOS correspondiente mediante el uso del servicio Apple Push Notification

Service (APNs) [53] En la Figura 20 se presentan las interfaces de la aplicacioacuten

desarrollada

Figura 20 Aplicacioacuten nativa para iOS

4143 Aplicacioacuten Web Moacutevil

Se desarrolloacute una aplicacioacuten web capaz de acceder a la cartelera de WebUNLP

disponible para cualquier dispositivo moacutevil que cuente con un navegador que soporte las

caracteriacutesticas utilizadas para el desarrollo HTML5 CSS3 y Javascript

Como la velocidad de transmisioacutenrecepcioacuten de datos de un dispositivo moacutevil a

traveacutes de WiFi y en particular 3G es inferior a la velocidad de una computadora de

Capiacutetulo 4 Experimentacioacuten

55

escritorio la versioacuten web de la cartelera de WebUNLP es liviana y gran parte de los

requerimientos son implementados a traveacutes de Ajax [54] para evitar ante alguacuten cambio

la recarga de la paacutegina completa

Debido a las limitaciones que tienen las aplicaciones que se ejecutan sobre un

navegador no es posible implementar la recepcioacuten de una notificacioacuten en el dispositivo

cuando una novedad es publicada en la cartelera

4144 Aplicacioacuten Hiacutebrida desarrollada con PhoneGap y Jquery Mobile

Para la construccioacuten de la aplicacioacuten WebUNLP hiacutebrida se utilizoacute el framework

PhoneGap [27] el cual permite desarrollar aplicaciones moacuteviles que utiliza tecnologiacuteas

comunes a todos los dispositivos HTML5 CSS y Javascript

Asimismo se utilizoacute el framework Javascript Jquery Mobile [55] para lograr

interfaces con apariencia y comportamiento consistente a traveacutes de las diferentes

plataformas moacuteviles

Con el objetivo de implementar el patroacuten de disentildeo MVC se utilizoacute la libreriacutea

Backbonejs [36]

Por uacuteltimo para satisfacer el requerimiento de notificaciones se utilizoacute el plugin

Pushwoosh [56]

En la figura 5 se presentan las interfaces de la aplicacioacuten desarrollada

Figura 21 Aplicacioacuten hiacutebrida desarrollada con PhoneGap

Capiacutetulo 4 Experimentacioacuten

56

4145 Aplicacioacuten Hiacutebrida desarrollada con Sencha Touch

El desarrollo de WebUNLP utilizando Sencha Touch se vio favorecido por el uso

del patroacuten de disentildeo MVC Esto permitioacute mayor flexibilidad y legibilidad en el coacutedigo

[57] [34]

Sencha ofrece Sencha Command una herramienta multiplataforma de liacutenea de

comandos que provee tareas automatizadas para todo el ciclo completo de una aplicacioacuten

En el caso de WebUNLP se utilizoacute tanto para la generacioacuten del proyecto como para el

empaquetado de la aplicacioacuten

En la Figura 22 se presentan las interfaces de la aplicacioacuten desarrollada

Figura 22 Aplicacioacuten desarrollada con Sencha Touch

4146 Aplicacioacuten Interpretada de WebUNLP con Appcelerator Titanium 3

Para desarrollar una aplicacioacuten moacutevil experimental seguacuten el enfoque interpretado

se utilizoacute el entorno de desarrollo gratuito y open source Appcelerator Titanium 3 [35]

Se destaca la simplicidad y legibilidad de los controladores y modelos de la

aplicacioacuten desarrollada luego de utilizar Alloy el framework de Titanium que permite

disentildear aplicaciones seguacuten el patroacuten de disentildeo MVC Para la construccioacuten de las vistas se

puede optar por la programacioacuten mediante Javascript y la API de Titanium o bien por

una especificacioacuten XML con estilos TSS (Titanium Style Sheets) Esta uacuteltima opcioacuten

simplifica el proceso de creacioacuten de las vistas aunque falta todaviacutea un buen editor visual

de interfaces que lo potencie

Capiacutetulo 4 Experimentacioacuten

57

Para cubrir requerimientos de notificaciones en el dispositivo Titanium provee el

moacutedulo PushNotifications para plataformas Android e iOS

La Figura 24 (a) muestra la experimentacioacuten con Titanium

4147 Aplicacioacuten Generada por Compilacioacuten Cruzada de WebUNLP utilizando XamarinVisual Studio

Tal como se mencionoacute en la seccioacuten 341 Xamarin propone un enfoque de

desarrollo multiplataforma en el que se comparte la codificacioacuten completa de la loacutegica

del negocio Sin embargo las interfaces deben ser programadas de manera independiente

para cada una de las plataformas destino (ver Figura 23) Asiacute la reutilizacioacuten de coacutedigo

seguacuten estudios estadiacutesticos de la compantildeiacutea Xamarin es cercana al 85

Figura 23 Enfoque uacutenico de desarrollo Xamarin

Para el estudio de las aplicaciones generadas por compilacioacuten cruzada se desarrolloacute

la aplicacioacuten moacutevil de WebUNLP utilizando Xamarin integrado con Microsoft Visual

Studio Siguiendo la estrategia maacutes eficiente para trabajar en este entorno se ha creado

una solucioacuten uacutenica conteniendo tres proyectos distintos Uno de ellos se utilizoacute para

generar la aplicacioacuten Android otro para la aplicacioacuten Windwos Phone 8 y el tercero para

la implementacioacuten de una biblioteca de clases portable (PCL por sus siglas en ingleacutes) con

todo el coacutedigo compartido Los tres proyectos fueron desarrollaacutendose de manera conjunta

y concurrente

Aunque una de las ventajas maacutes importantes de Xamarin es la reutilizacioacuten de

coacutedigo eacutesta se ve fuertemente afectada por el tipo de aplicacioacuten que se desarrolla La

relacioacuten existente entre la complejidad de la interfaz y la loacutegica del negocio impacta

directamente sobre la posibilidad de mantener la mayor cantidad de coacutedigo compartido

Capiacutetulo 4 Experimentacioacuten

58

en la PCL En el desarrollo de WebUNLP la reutilizacioacuten de coacutedigo ha sido cercana al

50 Sin embargo no debe despreciarse la ventaja de utilizar el mismo lenguaje entorno

y conjunto de herramientas comunes en el desarrollo de aplicaciones para distintas

plataformas moacuteviles

La Figura 24 (b) presenta la interfaz desarrollada para Windows Phone 8

4148 Aplicacioacuten Generada por Compilacioacuten Cruzada de WebUNLP utilizando Delphi 10 Seattle

Para el profundizar el estudio de las aplicaciones generadas por compilacioacuten

cruzada ademaacutes se desarrolloacute la aplicacioacuten moacutevil de WebUNLP utilizando Delphi 10

Seattle En particular fueron de gran utilidad tanto los componentes provistos por Delphi

para acceder a servicios RESTful como el entorno visual de desarrollo de Delphi 10

Seattle

Para la recepcioacuten de notificaciones en el dispositivo de las novedades de WebUNLP

se utilizoacute el componente TPushEvent conectado al servicio Kinvey [58]

La Figura 24 (c) presenta la interfaz de la aplicacioacuten desarrollada

(a) (b) (c)

Figura 24 Aplicacioacuten desarrollada con a) Titanium b) XamarinVisual Studio y c) Delphi XE

415 Conclusiones del experimento WebUNLP Seleccionar un dominio para desarrollar un caso experimental tiene sus

particularidades La novedad de disponer una aplicacioacuten moacutevil no es motivo suficiente

que justifique tal desarrollo Es necesario satisfacer un conjunto de requerimientos

claramente planteados

Capiacutetulo 4 Experimentacioacuten

59

WebUNLP es un entorno virtual de ensentildeanza y aprendizaje utilizado por diversos

cursos de grado y postgrado de la Universidad Nacional de La Plata Por ende la cantidad

de usuarios beneficiados por acceder desde cualquier lugar a este entorno es importante

De esta manera se optoacute por elegir dicho espacio virtual para ser replicado en una

versioacuten moacutevil que no soacutelo permita acercarlo a sus usuarios sino que ademaacutes ampliacutee sus

funciones en este caso puntualmente para la cartelera

Para el desarrollo de esta experimentacioacuten se desarrolloacute la misma aplicacioacuten para

los cinco tipos de enfoques de desarrollo moacutevil (web nativa hiacutebrida interpretada y

generada por compilacioacuten cruzada)

Se destaca la gran simpleza de generar la versioacuten web dado que se utilizan las

mismas herramientas tecnoloacutegicas que las usadas para el desarrollo de cualquier

aplicacioacuten web tradicional La principal diferencia en este sentido radica en la limitacioacuten

de espacio en la pantalla del dispositivo No obstante el mayor contraste estaacute dado en que

no es posible acceder a todas las capacidades de hardware del dispositivo lo que impidioacute

implementar uno de los requerimientos probablemente el maacutes interesante la notificacioacuten

de novedades de la cartelera de WebUNLP al usuario

Por otra parte las versiones nativas han cumplido todos los requerimientos Aunque

la mayor desventaja consiste en la no portabilidad lo que implicoacute un desarrollo especiacutefico

para la plataforma que se desee cubrir En este trabajo se han presentado los desarrollos

para Android e iOS sistemas operativos maacutes usados en Argentina con un costo de

desarrollo y mantenimiento inherente mayor

Para el caso del enfoque hiacutebrido tanto la versioacuten de WebUNLP desarrollada con

PhoneGap y Jquery Mobile como la versioacuten desarrollada con Sencha Touch han logrado

conjugar la simpleza del desarrollo web con el uso de todas las capacidades del

dispositivo Este tipo de enfoque pretende suplir las desventajas de los dos enfoques

previos hecho que lo posiciona como una eleccioacuten realmente interesante siempre

condicionada por los requerimientos especiacuteficos a cumplir

Por el lado del modo de desarrollo interpretado la versioacuten de WebUNLP

desarrollada con Titanium logroacute resolver todos los requerimientos previamente

planteados Al igual que en el enfoque hiacutebrido es un punto a destacar que el desarrollo

de la aplicacioacuten con Titanium es relativamente simple y es posible reutilizar todo el

Capiacutetulo 4 Experimentacioacuten

60

coacutedigo entre plataformas Lo que lo hace la eleccioacuten prima facie es el hecho de obtener

interfaces totalmente nativas algo que no se lograba mediante el enfoque hiacutebrido

Por uacuteltimo las versiones de WebUNLP generadas con el enfoque de compilacioacuten

cruzada con Xamarin y Delphi lograron cumplir los requerimientos planteados Se

destaca el hecho de que se genera interfaces totalmente nativas pero considero que el

costo es muy alto se debe disentildear las interfaces para cada plataforma de manera

independiente lo que hace que no se pueda reutilizar todo el coacutedigo fuente de la

aplicacioacuten

42 Enfoques de desarrollo Anaacutelisis comparativo de rendimiento 421 Descripcioacuten del Problema

Hace apenas unas deacutecadas atraacutes el uso de los sistemas de software estaba

restringido a un grupo reducido de usuarios especializados Aquella eacutepoca contrasta

fuertemente con la actualidad en la que los smartphones pequentildeas computadoras moacuteviles

de propoacutesito general se han vuelto cotidianos y omnipresentes Estos dispositivos pueden

utilizarse para llevar a cabo tareas complejas y criacuteticas requiriendo la mejora continua de

las capacidades de coacutemputo la disponibilidad el rendimiento eficiente entre otras

necesidades La evolucioacuten vertiginosa de esta tecnologiacutea ejerce presioacuten en la adaptacioacuten

de la Ingenieriacutea de Software

Respecto del desarrollo para dispositivos moacuteviles se debe considerar una serie de

caracteriacutesticas propias de esta actividad que no estaban presentes en el desarrollo

tradicional de software [59] Es necesario tener en cuenta sobre queacute tipo de dispositivos

se debe ejecutar la aplicacioacuten a construir La diversidad de plataformas lenguajes de

programacioacuten herramientas de desarrollo estaacutendares protocolos y tecnologiacuteas de red

algunas limitaciones de ciertos dispositivos y las exigencias de tiempo del mercado entre

otros constituyen algunos de los problemas a tratar

En la mayoriacutea de los casos el eacutexito de un producto de software para dispositivos

moacuteviles estaraacute condicionado por el nivel de popularidad que logre alcanzar Para

maximizar su presencia en el mercado es necesario que la aplicacioacuten pueda ejecutarse

sobre la mayor cantidad de plataformas moacuteviles existentes especialmente sobre las dos

maacutes populares Android e iOS [60] Para lograr este objetivo existen dos alternativas

Capiacutetulo 4 Experimentacioacuten

61

i) Desarrollar aplicaciones especiacuteficas para cada plataforma impulsando en

paralelo varios proyectos de desarrollo con las herramientas y lenguajes propios de cada

una de ellas Estas aplicaciones analizadas previamente en este trabajo se denominan

aplicaciones nativas

ii) Generar aplicaciones que puedan ejecutarse en forma directa sobre maacutes de una

plataforma de sistema operativo a partir de un uacutenico proyecto de desarrollo Estas

aplicaciones como ya se ha presentado en este trabajo se denominan aplicaciones

multiplataforma

En los uacuteltimos antildeos se ha incrementado el intereacutes de la comunidad de Ingenieriacutea de

Software por el estudio del desarrollo de aplicaciones multiplataforma para dispositivos

moacuteviles

En [5] se presenta un anaacutelisis comparativo de enfoques de desarrollo de aplicaciones

multiplataforma para dispositivos moacuteviles proponiendo la siguiente taxonomiacutea

aplicaciones web moacuteviles aplicaciones hiacutebridas aplicaciones interpretadas y

aplicaciones generadas por compilacioacuten cruzada

En [7] y [8] se analizan aspectos generales de frameworks de desarrollo

multiplataforma para dispositivos moacuteviles

En [61] se comparan aspectos no funcionales para los diferentes enfoques de

desarrollo de aplicaciones multiplataforma para dispositivos moacuteviles

En [9] se analizaron ventajas y desventajas de los enfoques de desarrollo

multiplataforma mencionados desde el punto de vista del Ingeniero de Software

La eleccioacuten del modo de desarrollo de aplicaciones para dispositivos moacuteviles

depende de varios factores Uno de ellos en muchos casos esencial es el tiempo de

ejecucioacuten El intereacutes por optimizar el tiempo de ejecucioacuten de una aplicacioacuten de software

es intriacutenseco a la disciplina informaacutetica Esto se evidencia entre otras cosas por la

evolucioacuten del poder de coacutemputo de los procesadores Ademaacutes el rendimiento eficiente

es uno de los atributos que las aplicaciones de software deben satisfacer seguacuten diversos

estaacutendares de calidad entre otros ISOIEC 9126 e ISOIEC 25010 [62]

En lo que respecta al desarrollo de aplicaciones para dispositivos moacuteviles es

oportuno considerar el tiempo de ejecucioacuten de las aplicaciones por diversos motivos

El tiempo de ejecucioacuten de una aplicacioacuten estaacute fuertemente ligado al consumo de

Capiacutetulo 4 Experimentacioacuten

62

energiacutea [63] el cual estaacute limitado por la capacidad de la bateriacutea de los dispositivos

Asimismo el rendimiento de las aplicaciones se ve reflejado principalmente

mediante las calificaciones de los usuarios en las tiendas de aplicaciones en liacutenea

Aplicaciones con bajo rendimiento pueden implicar usuarios disconformes produciendo

publicidad negativa [60] Andre Charland y Brian Leroux identifican al tiempo de

ejecucioacuten como uno de los problemas principales a resolver en el desarrollo de

aplicaciones multiplataforma y afirman que a los usuarios finales les preocupa la calidad

del software y la experiencia de uso [64]

Corral Sillitti y Succi realizaron un anaacutelisis de rendimiento comparativo entre

aplicaciones nativas y aplicaciones hiacutebridas utilizando el framework Phonegap para una

versioacuten del sistema operativo Android [65]

Es importante destacar que no se han encontrado estudios que evaluacuteen y comparen

el rendimiento entre los diversos modos de desarrollo multiplataforma de acuerdo a la

taxonomiacutea propuesta en [5] aplicaciones web moacuteviles aplicaciones hiacutebridas

aplicaciones interpretadas y aplicaciones generadas por compilacioacuten cruzada Esta

taxonomiacutea es la que se utiliza de referencia en este trabajo

El presente apartado realiza un anaacutelisis comparativo de rendimiento de aplicaciones

para dispositivos moacuteviles generadas por el enfoque de desarrollo nativo y los distintos

enfoques de desarrollo multiplataforma seguacuten [5]

En la seccioacuten siguiente se describe el experimento utilizado para evaluar tiempos

de ejecucioacuten en aplicaciones nativas y en los diversos modos de desarrollo de aplicaciones

moacuteviles multiplataforma y en las secciones posteriores se muestran y analizan los

resultados obtenidos se presentan las conclusiones y el trabajo futuro

422 Desarrollo

4221 Disentildeo de las pruebas

Todas las pruebas cuyos resultados se presentan en este trabajo fueron realizadas

sobre dispositivos moacuteviles con sistemas operativos Android e iOS dado que en la

actualidad abarcan gran parte del mercado mundial de acuerdo a lo indicado en [60]

Para llevar a cabo la experimentacioacuten se seleccionaron los frameworks de desarrollo

multiplataforma seguacuten las alternativas presentadas en [10] Se disentildearon pruebas para

evaluar el rendimiento de Apache Cordova [28] Appcelerator Titanium [35] y Xamarin

Capiacutetulo 4 Experimentacioacuten

63

[41] que se corresponden con los modos de desarrollo hiacutebrido interpretado y compilacioacuten

cruzada respectivamente Tambieacuten se experimentoacute con otros dos frameworks de

desarrollo multiplataforma que recientemente han ganado popularidad NativeScript

(desarrollo interpretado) y Corona (compilacioacuten cruzada) Finalmente se incluyeron al

conjunto de pruebas las aplicaciones web y el enfoque nativo de desarrollo para Android

e iOS De este modo se logroacute una muestra razonablemente representativa de las diversas

opciones existentes en la actualidad

Para la realizacioacuten de las pruebas se utilizaron seis dispositivos moacuteviles distintos

(ver Tabla 2) tres de ellos con sistema operativo Android identificados como DA1 DA2 y

DA3 (dos smartphone y una tablet) y tres con sistema operativo iOS identificados como

DI1 DI2 y DI3 (dos smartphone y una tablet)

ID Sistema Operativo Caracteriacutesticas

DA1 Android 44

Tipo Smartphone Marca Motorola

Modelo Moto-G2 Procesador Quad-core 12 GHz Cortex-A7

RAM 1GB Snapdragon 400

DA2 Android 502

Tipo Smartphone Marca Samsung

Modelo S6 Procesador Octa-core (4x21 GHz Cortex-A57 amp 4x15

GHz Cortex-A53) RAM 3GB Exynos 7420 Octa

DA3 Android 422

Tipo Tablet Marca Samsung Modelo Tab 2

Procesador Dual-core 10 GHz RAM 1GB TI OMAP 4430

DI1 iOS 92

Tipo Smartphone Marca Apple Modelo 5S

Procesador Dual-core 13 GHz Cyclone (ARM v8-based)

RAM 1GB Apple A7

DI2 iOS 91

Tipo Smartphone Marca Apple

Modelo 6 plus Procesador Dual-core 14 GHz Typhoon (ARM v8-

based) RAM 1GB Apple A8

DI3 iOS 91 Tipo Tablet

Marca Apple Modelo Ipad Air

Capiacutetulo 4 Experimentacioacuten

64

Procesador Dual-core 13 GHz Cyclone (ARM v8-based)

RAM 1GB Apple A7 Tabla 2 Dispositivos moacuteviles utilizados en el experimento

Se definieron siete escenarios de anaacutelisis distintos uno por cada estrategia de

desarrollo utilizada

1 Nativo para Android y nativo para iOS 2 Aplicaciones web (multiplataforma) 3 Apache Cordova (multiplataforma hibrido) 4 Appcelerator Titanium (multiplataforma interpretado) 5 NativeScript (multiplataforma interpretado) 6 Xamarin (multiplataforma compilacioacuten cruzada) 7 Corona (multiplataforma compilacioacuten cruzada)

En los seis dispositivos se llevaron a cabo pruebas para cada uno de los siete

escenarios mencionados definiendo asiacute un total de 42 casos de prueba

Con el fin de evaluar la velocidad de procesamiento se planteoacute un caacutelculo simple

que incluyoacute varias iteraciones funciones matemaacuteticas y aritmeacutetica de punto flotante que

se resume en la siguiente serie

119904119890119903119894119890 =sum sum (log2(119896) +3119896

2119895+ radic119896

100000

119896=1

+ 119896119895minus1)

5

119895=1

A modo de ejemplo en la Figura 25 se muestra el coacutedigo multiplataforma

desarrollado en Apache Cordova para el caacutelculo de la serie definida

El experimento planteado permite medir con precisioacuten la variable analizada en este

caso el tiempo de ejecucioacuten requerido para realizar un caacutelculo matemaacutetico intensivo

Este tipo de caacutelculo matemaacutetico es frecuente en diversas aplicaciones que se

ejecutan en dispositivos moacuteviles por ejemplo juegos aplicaciones con realidad

aumentada aplicaciones para tratamiento de imaacutegenes entre otras en las cuales no

siempre es posible utilizar el poder de la Unidad de Procesamiento Grafico (GPU) para

el caacutelculo

El coacutedigo fuente de los experimentos llevados a cabo se encuentra disponible en

[66]

En las siguientes secciones se describe la experimentacioacuten y se analizan los

resultados obtenidos

Capiacutetulo 4 Experimentacioacuten

65

4222 Recoleccioacuten de datos

Para cada uno de los 42 casos de prueba definidos se realizaron 30 ejecuciones

independientes del experimento disentildeado obteniendo en cada caso una muestra T = T1

T2 hellip T30 con Ti = tiempo requerido para el caacutelculo de la serie en la i-eacutesima ejecucioacuten

del experimento planteado El tiempo Ti se expresa en milisegundos

Para caracterizar cada una de las muestras obtenidas se han calculado los

estadiacutesticos y S que se corresponden con la media (o promedio muestral) y la

desviacioacuten estaacutendar muestral (ver Tabla 3)

var startTime = new Date()getTime()

var serie = 0

for ( var j=1 j lt= 5 j++ )

for ( var k=1 k lt= 100000 k++ )

series = series + (Mathlog(k)MathLN2) + (3k2j) +

Mathsqrt(k) + Mathpow(k j-1)

var finalTime = new Date()getTime()

var duration = finalTime - startTime

documentgetElementById(result)innerHTML = duration + -gt + series

Figura 25 Caacutelculo de serie coacutedigo multiplataforma desarrollado en Apache Cordova

Capiacutetulo 4 Experimentacioacuten

66

Dada la muestra T=T1 T2 hellip Tn

Media o promedio muestral = (

1

119899)sum119879119894

119899

119894=1

Desviacioacuten estaacutendar muestral 119878 = radic

1

119899 minus 1sum(119879119894 minus )2119899

119894=1

Tabla 3 Estadiacutesticos utilizados en el anaacutelisis de los datos

423 Resultados Obtenidos En la Tabla 4 se presenta una siacutentesis de los resultados obtenidos conformada por

los valores y S calculados para cada caso de prueba planteado Estos valores permiten

comparar el rendimiento de las aplicaciones generadas a partir de los distintos enfoques

de desarrollo evaluadas sobre cada uno de los seis dispositivos utilizados

Los valores presentados en la Tabla 4 y graficados con diagramas de barras en la

Figura 26 sugieren un anaacutelisis por separado de los casos con sistema operativo Android

y los casos con sistema operativo iOS Claramente las siluetas delineadas en los

diagramas de barras de la Figura 26 se repiten de forma similar en los escenarios con el

mismo sistema operativo pero se diferencian notablemente entre distintos sistemas

operativos

Nativo WebApp Apache Cordova Titanium NativeScript Xamarin Corona

DA1 53293 18627 23033 21167 18730 39517 140173

S 1614 632 1422 2495 939 895 1260

DA2 21180 9067 8577 9563 8967 21100 60053

S 1997 1248 883 764 916 669 595

DA3 76380 17273 19060 19270 18350 37933 134430

S 2898 1551 936 1680 304 831 2339

DI1 413 5710 32373 29977 25203 12543 3963

S 078 1655 1662 401 728 1103 085

DI2 413 4190 26397 24113 22343 10303 9863

S 073 538 1544 495 861 491 613

DI3 253 4167 29223 27267 22597 11053 10967

S 057 444 1082 550 277 390 275

Tabla 4 Siacutentesis de resultados obtenidos

Capiacutetulo 4 Experimentacioacuten

67

Figura 26 Diagrama de barras con las muestras recolectadas (las barras muestran el tiempo promedio expresado en milisegundos)

Capiacutetulo 4 Experimentacioacuten

68

424 Anaacutelisis de Resultados Debido a las diferencias de hardware de los dispositivos utilizados no es prudente

comparar el rendimiento de las aplicaciones nativas en Android con respecto a las de

iOS No obstante de los resultados obtenidos es posible inferir que el enfoque nativo en

iOS resulta mucho maacutes eficiente que el enfoque nativo en Android Existen diversos

factores que presumen justificar este hecho entre ellos la diferencia inherente de ejecutar

coacutedigo Objective C en iOS comparado con ejecutar coacutedigo Java en Android el cual

necesita del Android Runtime (ART) para su funcionamiento ralentizaacutendolo

Respecto de las aplicaciones web multiplataforma los resultados de rendimiento

resaltaron positivamente en relacioacuten al resto tanto en Android como en iOS Asiacute el

enfoque de desarrollo multiplataforma web seriacutea una opcioacuten conveniente para alcanzar

un buen rendimiento en todos los dispositivos moacuteviles independientemente de su sistema

operativo Sin embargo esta eleccioacuten podriacutea verse afectada por las limitaciones de estas

aplicaciones para acceder en forma completa a las capacidades especiacuteficas del dispositivo

Respecto de los enfoques hiacutebrido e interpretado -analizados a traveacutes de las

tecnologiacuteas Coacuterdova Titanium y NativeScript- es importante destacar que si bien estos

enfoques trabajan de modo distinto entre siacute tienen algo en comuacuten la ejecucioacuten de coacutedigo

JavaScript En este sentido el motor de JavaScript -encargado de convertir el coacutedigo

JavaScript en coacutedigo optimizado para que luego lo interprete un WebView- cumple un

rol determinante Las pruebas de estos enfoques en Android -que utiliza el motor de

JavaScript V8- tuvieron un comportamiento similar al enfoque web y comportamiento

superior que el enfoque nativo y el enfoque de compilacioacuten cruzada Por el contrario en

los dispositivos moacuteviles con iOS -que utiliza el motor JavaScriptCore- los resultados de

estas pruebas fueron peores que en los enfoques nativos web y de compilacioacuten cruzada

En los dispositivos moacuteviles con iOS los casos de compilacioacuten cruzada -analizados

a traveacutes de las tecnologiacuteas Xamarin y Corona- obtuvieron mejores resultados que los

casos hiacutebridos e interpretados pero mostraron peor rendimiento que el enfoque nativo y

que el enfoque web En cambio en los dispositivos moacuteviles con Android los resultados

de las pruebas con las aplicaciones construidas mediante el enfoque de compilacioacuten

cruzada fueron los peores La necesidad de ejecucioacuten de coacutedigo Java a traveacutes del Android

Runtime entre otros factores justifican este resultado

Capiacutetulo 4 Experimentacioacuten

69

425 Conclusiones Se ha presentado un estudio comparativo sobre el tiempo de procesamiento de

aplicaciones de software para dispositivos moacuteviles generadas con distintos enfoques de

desarrollo

Los escenarios de prueba disentildeados incluyeron los dos sistemas operativos para

dispositivos moacuteviles con mayor presencia en el mercado Android e iOS ejecutaacutendose

cada uno de ellos sobre dos smartphones (considerados de gama media y gama alta al

momento en que este trabajo fue escrito) y una Tablet

Sobre estos seis dispositivos se realizoacute un estudio de rendimiento para las

aplicaciones construidas seguacuten los enfoques de desarrollo nativos y multiplataforma

mediante un conjunto de aplicaciones que fueron desarrolladas para tal fin

1 Aplicacioacuten nativa para Android 2 Aplicacioacuten nativa para iOS 3 Aplicacioacuten web (multiplataforma) 4 Aplicacioacuten Apache Cordova (multiplataforma hibrido) 5 Aplicacioacuten Appcelerator Titanium 6 (multiplataforma interpretado) 7 Aplicacioacuten NativeScript (multiplataforma interpretada) 8 Aplicacioacuten Xamarin (multiplataforma compilacioacuten cruzada) 9 Aplicacioacuten Corona (multiplataforma compilacioacuten cruzada)

En todos los dispositivos con sistema operativo Android el peor rendimiento fue

evidenciado por Corona seguido por el enfoque nativo y Xamarin Esta situacioacuten es

totalmente opuesta a los resultados obtenidos sobre el sistema operativo iOS en doacutende las

tecnologiacuteas de desarrollo mencionadas se mostraron siempre entre las cuatro mejores En

particular es destacable la supremaciacutea del enfoque nativo frente a todos los demaacutes para el

caso de los dispositivos con iOS

Respecto al mejor rendimiento en los dispositivos Android no es posible identificar

claramente cuaacutel es el enfoque maacutes conveniente Tanto las aplicaciones web como

Coacuterdova NativeScript y Titanium alcanzaron buenos resultados en relacioacuten al resto

Nuevamente esta situacioacuten se contrapone con los datos obtenidos sobre los dispositivos

iOS en los que Coacuterdova Titanium y NativeScript obtuvieron las peores mediciones entre

las tecnologiacuteas utilizadas No ocurrioacute lo mismo con las aplicaciones web en iOS que

tambieacuten produjeron buenos resultados en relacioacuten al resto

Capiacutetulo 4 Experimentacioacuten

70

En liacuteneas generales independientemente del sistema operativo las aplicaciones

web han mostrado un buen rendimiento si se consideran todos los casos analizados

Actualmente al desarrollar un sistema de software existe la posibilidad de generar

su versioacuten para dispositivos moacuteviles Esta tarea muchas veces no es simple y una de las

decisiones maacutes importantes a tomar es elegir el enfoque de desarrollo

A partir de este trabajo se dispone de un indicador de rendimiento que puede ser

uacutetil para el Ingeniero de Software que debe seleccionar un enfoque de desarrollo de

software para dispositivos moacuteviles

Por otra parte no se han encontrado trabajos de otros autores donde se haya

analizado el rendimiento en todos los enfoques de desarrollo de software para dispositivos

moacuteviles Este tema tal como se indicoacute en la introduccioacuten es importante para la

comunidad de Ingenieriacutea de Software y los trabajos analizados hasta el momento se han

concentrado solo en los enfoques nativos yo hiacutebridos

43 Anaacutelisis comparativo de enfoques de Desarrollo de Aplicaciones Moacuteviles

Como se estudioacute en las secciones anteriores existen diferentes enfoques de

desarrollo de aplicaciones moacuteviles

Una opcioacuten es desarrollar aplicaciones moacuteviles nativas las cuales hacen uso de

todas las capacidades del dispositivo moacutevil y permiten una alta experiencia de usuario

debido a que las interfaces de usuario se componen por componentes nativos resultando

semejantes al resto de las interfaces del sistema operativo No obstante el desarrollo no

puede ser reutilizado para dar soporte a otras familias de sistemas operativos implicando

mayores costos de desarrollo y mantenimiento

En contraposicioacuten al desarrollo nativo surgioacute el desarrollo multiplataforma dando

la posibilidad de desarrollar un uacutenico producto y ejecutarlo en diferentes plataformas En

este sentido se estudiaron diferentes enfoques desarrollo web moacutevil hiacutebrido

interpretado y generado por compilacioacuten cruzada Cada uno de estos enfoques cuenta con

ciertas caracteriacutesticas que naturalmente los hacen diferenciar con ventajas y

desventajas

Se identificaron diversos factores que pueden ser utilizados para analizar las

Capiacutetulo 4 Experimentacioacuten

71

aplicaciones que se generan mediante los enfoques de desarrollo nativo y

multiplataforma los cuales se detallan a continuacioacuten

Experiencia de usuario conjunto de factores y elementos que hacen referencia

al nivel de satisfaccioacuten total de los usuarios cuando utilizan un producto o sistema

El resultado es la generacioacuten de una percepcioacuten positiva o negativa de dicho

servicio producto o dispositivo

Plataformas alcanzadas se ha visto en capiacutetulos anteriores que existen distintas

familias de sistemas operativos Seguacuten el modo de desarrollo elegido se puede

desarrollar aplicaciones para una plataforma especiacutefica o por varias

Costo del desarrollo el desarrollo puede ser maacutes o menos costoso seguacuten si

requiere codificar las soluciones de forma especiacutefica para cada sistema operativo

o si es posible la reutilizacioacuten de coacutedigo

Costo del mantenimiento la correccioacuten de errores o agregados de nuevas

funcionalidades puede requerir codificar de forma especiacutefica para cada sistema

operativo Ademaacutes se debe tener en cuenta si deben convivir diferentes versiones

del mismo producto

Entorno de desarrollo integrado Software que asiste al programador en la

construccioacuten de aplicaciones

Interfaces de usuario factor que analiza los tipos de componentes utilizados para

construir las interfaces de usuario Como se mencionoacute al analizar los distintos

enfoques de desarrollo la eleccioacuten de la herramienta a utilizar incide en si las

interfaces estaraacuten compuestas mediante componentes nativos o componentes web

los cuales pueden ser decorados para simular componentes nativos

Acceso total al dispositivo posibilidad de acceder mediante las herramientas de

desarrollo a todas las capacidades del dispositivo como la caacutemara sensores entre

otros

Modo de instalacioacuten se refiere a si la aplicacioacuten puede ser instalada desde las

tiendas de aplicaciones o es accesible sin instalacioacuten desde un navegador de

Internet

Rendimiento factor que analiza la ejecucioacuten de tareas y los tiempos asociados

Capiacutetulo 4 Experimentacioacuten

72

en su resolucioacuten

Uso offline capacidad que tiene la aplicacioacuten de funcionar sin estar conectada a

internet

Distribucioacuten a traveacutes de las tiendas posibilidad de descargar la aplicacioacuten desde

las tiendas de aplicaciones

Categoriacuteas de aplicaciones a desarrollar tipo de aplicacioacuten que se desea

desarrollar

Porcentaje de coacutedigo a reutilizar Cantidad de liacuteneas de coacutedigo con respecto al

total que pueden ser reutilizadas para en la generacioacuten de aplicaciones

multiplataforma

Con el objetivo de estudiar coacutemo se comportan e inciden estos factores en los

distintos enfoques de desarrollo se realizoacute un estudio comparativo de los diferentes

criterios a tener en cuenta Dicho estudio se sintetiza en la Tabla 5

Capiacutetulo 4 Experimentacioacuten

73

Factor a analizar Desarrollo Nativo Desarrollo Web Desarrollo Hiacutebrido Desarrollo

Interpretado

Desarrollo Generado

por Compilacioacuten

Cruzada

Experiencia de Usuario

Alta Muy Baja Baja Alta Alta

Plataformas alcanzadas

Se desarrolla

exclusivamente

para una

plataforma destino

Cualquier

plataforma Se

necesita solo un

navegador y acceso a

internet

Es posible compilar

para Android iOS

Windows Phone

Es posible compilar

para Android iOS

Windows Phone

Es posible compilar

para Android iOS

Windows Phone

Costo del desarrollo

Muy Alto Muy Bajo Bajo Medio Medio a Alto

Costo del mantenimiento

Muy Alto Muy Bajo Medio Alto Alto a Muy Alto

Entorno de desarrollo integrado

IDE uacutenico por SO Muacuteltiples opciones Plugins para IDE

geneacutericos

Algunos frameworks

disponen de IDE

especiacutefico

IDE uacutenico por

framework

Interfaces de usuario

Nativas Web Web Nativas Nativas

Acceso total al dispositivo

Si No Si Si Si

Modo de instalacioacuten

Descargar desde la Sin instalaciones Descargar desde la Descargar desde la Descargar desde la

Capiacutetulo 4 Experimentacioacuten

74

Factor a analizar Desarrollo Nativo Desarrollo Web Desarrollo Hiacutebrido Desarrollo

Interpretado

Desarrollo Generado

por Compilacioacuten

Cruzada

tienda de

aplicaciones e

instalar

tienda de aplicaciones

e instalar

tienda de aplicaciones e

instalar

tienda de aplicaciones e

instalar

Rendimiento Muy Alto Muy Bajo Bajo a Medio Alto Medio a Alto

Uso offline Si No Si Si Si

Distribucioacuten a traveacutes de las tiendas

Si No Si Si Si

Categoriacutea de aplicaciones a desarrollar

Aplicaciones que

demandan muchos

recursos o que

requiere una alta

experiencia de

usuario

Sitios web existentes Sitios web

encapsulados como

aplicacioacuten para ser

distribuidas a traveacutes

de tiendas

Aplicaciones simples a

complejas

Aplicaciones simples a

complejas

Porcentaje de Coacutedigo a reutilizar

0 100 Cerca del 100 Cerca del 90 Entre el 60 y 85

Tabla 5 Anaacutelisis comparativo de enfoques de desarrollo de aplicaciones moacuteviles

Capiacutetulo 5 Conclusiones

75

Capiacutetulo 5 Conclusiones

Inicialmente los dispositivos moacuteviles fueron pensados y disentildeados con un propoacutesito

particular A traveacutes de los antildeos el crecimiento tecnoloacutegico ha permitido incorporar

funcionalidades adicionales lo que ha posibilitado expandir el marco de uso

Actualmente el poder de coacutemputo subyacente en una gran variedad de dispositivos

moacuteviles ha generado nuevas posibilidades lo que constituye un reto para los ingenieros

de software

Asimismo y tal como se mencionoacute en capiacutetulos anteriores existen diversos

sistemas operativos para dispositivos moacuteviles siendo los maacutes populares Android iOS y

Windows Phone Debido a que el eacutexito de un producto de software estaacute vinculado en

gran parte a su uso masivo surge la necesidad de desarrollar aplicaciones moacuteviles

teniendo en cuenta cada una de estas plataformas

El desarrollo de software para dispositivos moacuteviles tiene caracteriacutesticas propias que

difieren del desarrollo tradicional Esta actividad reciente impensada deacutecadas atraacutes

marca un antes y un despueacutes en la evolucioacuten de la Ingenieriacutea de Software Es de esperar

que dicha evolucioacuten continuacutee y por consiguiente que los enfoques de desarrollo para

dispositivos moacuteviles cambien o sean reemplazados por otros Es claro que por el

momento existen cinco posibilidades de desarrollo de una misma aplicacioacuten moacutevil

Aplicaciones nativas

Aplicaciones web

Aplicaciones hiacutebridas

Aplicaciones interpretadas

Aplicaciones generadas por compilacioacuten cruzada

Para un completo anaacutelisis de cada enfoque de desarrollo es que se disentildearon una

serie de casos de estudio El primero de ellos consistioacute en desarrollar una aplicacioacuten moacutevil

para cada enfoque de desarrollo presentado Teniendo este primer objetivo definido se

decidioacute extender el entorno virtual de ensentildeanza y aprendizaje WebUNLP a traveacutes de

una aplicacioacuten moacutevil enfocada en la cartelera de novedades de los cursos La aplicacioacuten

Capiacutetulo 5 Conclusiones

76

moacutevil debiacutea permitir el ingreso de alumnos y docentes con las mismas credenciales que

las utilizadas en la versioacuten web y debiacutea mostrar informacioacuten sincronizada con la web

sobre las novedades publicadas en las carteleras de los cursos Asimismo cuando los

docentes publiquen novedades aquellos alumnos pertenecientes al curso deben recibir

una notificacioacuten en su dispositivo moacutevil

Luego de desarrollar las aplicaciones moacuteviles para cada enfoque de desarrollo se

pueden elaborar algunas conclusiones

Se destaca la simpleza a la hora de generar la versioacuten web moacutevil pero se observan

limitaciones al no poder acceder a todas las capacidades de hardware del dispositivo

El desarrollo de las aplicaciones nativas resultoacute oacuteptimo si se lo compara con los

requerimientos oportunamente planteados con la desventaja de que las aplicaciones no

son portables implicando desarrollos especiacuteficos para cada plataforma que se desee

cubrir Por otro lado el desarrollo de las aplicaciones hibridas ndashutilizando PhoneGap y

Sencha- lograron conjugar la simpleza del desarrollo web con el uso de todas las

capacidades del dispositivo posicionaacutendolo como una eleccioacuten realmente interesante De

igual manera la aplicacioacuten interpretada desarrollada mediante Titanium logroacute resolver

todos los requerimientos previamente planteados se destaca que el desarrollo fue

relativamente simple y es posible reutilizar todo el coacutedigo entre plataformas El hecho de

obtener interfaces totalmente nativas la posiciona como la alternativa ideal Por uacuteltimo

las aplicaciones generadas con el enfoque de compilacioacuten cruzada (Delphi y Xamarin)

lograron cumplir los requerimientos planteados la obtencioacuten de interfaces totalmente

nativas es algo a destacar pero conlleva un alto costo ya que se debe disentildear las interfaces

para cada plataforma de manera independiente

El segundo experimento del presente trabajo consistioacute en analizar el rendimiento

de las aplicaciones generadas mediante cada enfoque de desarrollo En total se

desarrollaron mediante distintas tecnologiacuteas nueve aplicaciones Las pruebas se

realizaron en los dos sistemas operativos de mayor relevancia Android e iOS a traveacutes de

seis dispositivos (cuatro smartphones y dos tablets)

En todos los dispositivos con sistema operativo Android el peor rendimiento se

encontroacute en la aplicacioacuten generada por Corona seguido por el enfoque nativo y Xamarin

En cambio estas tecnologiacuteas se mostraron siempre entre las cuatro mejores sobre el

sistema operativo iOS

Capiacutetulo 5 Conclusiones

77

Respecto al mejor rendimiento en los dispositivos Android no es posible identificar

claramente cuaacutel es el enfoque maacutes conveniente Tanto las aplicaciones web como

Coacuterdova NativeScript y Titanium obtuvieron buenos resultados de rendimiento en

relacioacuten al resto Nuevamente esta situacioacuten se contrapone con los datos obtenidos sobre

los dispositivos iOS en los que Coacuterdova Titanium y NativeScript obtuvieron las peores

mediciones entre las tecnologiacuteas utilizadas No ocurrioacute lo mismo con las aplicaciones web

en iOS que tambieacuten produjeron buenos resultados en relacioacuten al resto

En liacuteneas generales independientemente del sistema operativo las aplicaciones

web han mostrado un buen rendimiento si se consideran todos los casos analizados

Por uacuteltimo se elaboroacute un anaacutelisis comparativo de las caracteriacutesticas inherentes a

cada enfoque de desarrollo Se identificaron ciertos factores de intereacutes que la comunidad

de ingenieriacutea de software considera al elegir queacute tecnologiacutea utilizar y se analizoacute su

impacto en cada enfoque de desarrollo

Capiacutetulo 6 Trabajo Futuro

78

Capiacutetulo 6 Trabajo Futuro

Si bien se estudiaron en el presente trabajo diversas tecnologiacuteas para el desarrollo

de aplicaciones moacuteviles se planea profundizar el estudio analizando otras herramientas

multiplataforma disponibles en el mercado como Ionic [32] NativeScript [38] Applause

[40] React Native [67] entre otras

Ademaacutes se plantea como liacutenea de trabajo futuro ampliar el anaacutelisis comparativo de

rendimiento incluyendo otros aspectos del desarrollo para dispositivos moacuteviles como

por ejemplo el acceso a disco el consumo de bateriacutea y el tiempo de renderizacioacuten de

imaacutegenes

Por uacuteltimo es deseable estudiar la experiencia de usuario en las aplicaciones

generadas por cada enfoque de desarrollo de aplicaciones para dispositivos moacuteviles

Capiacutetulo 6 Trabajo Futuro

79

Bibliografiacutea

80

Bibliografiacutea

[1] A Talukder H Ahmed and R Yavagal Mobile Computing Technology Applications and Service Creation Tata McGraw-Hill Ed 2010

[2] Abrahamsson P et al Mobile-D An Agile Approach for Mobile Application Development in In Companion To the 19th Annual ACM SIGPLAN Conference on Object-Oriented Programming Systems Languages and Applications (OOPSLA 04 ) Vancouver Canada 2004 pp 174-175

[3] P Abrahamsson Mobile software development - the business opportunity of today in Proceedings of the International Conference on Software Development Reykjavik 2005

[4] I S Hayes Just Enough Wireless Computing Prentice Hall Professional Technical 2002

[5] Stelios Xinogalos Spyros Xanthopoulos A Comparative Analysis of Cross-platform Development Approaches for Mobile Applications in Proceedings of the 6th Balkan Conference in Informatics Thessaloniki Greece 2013 pp 213-220

[6] Tolety SB Raj R A study on approaches to build cross-platform mobile applications and criteria to select appropriate approach in India Conference (INDICON) 2012 Annual IEEE India 2012

[7] Yonathan Aklilu Redda Cross platform Mobile Applications Development in Master in Information Systems Norwegian University of Science and Technology Norway 2012

[8] Datta SK Bonnet C Nikaein N Dalmasso I Survey comparison and evaluation of cross platform mobile application development tools in Wireless Communications and Mobile Computing Conference (IWCMC) Cagliari Sardinia Italia 2013

[9] Lisandro Deliacutea Nicolaacutes Galdaacutemez Pablo Thomas and Patricia Pesado An Experimental Analysis of Application Types for Mobile Devices in Computer Science amp Technology Series - XIX Argentine Congress of Computer Science - Selected Papers Editorial de la Universidad de La Plata 2014 pp 173 -183

[10] Lisandro Deliacutea Nicolaacutes Galdamez Pablo Thomas Leonardo Corbalaacuten and Patricia Pesado Multi-Platform Mobile Application Development Analysis in IEEE Ninth International Conference on Research Challenges in Information Science - IEEE RCIS Atenas Grecia May 2015

[11] Telam [Online] httpwwwtelamcomarnotas201504102073-telefonia-movil-lineas-activashtml

Bibliografiacutea

81

[12] RTVE [Online] httpwwwrtveesnoticias20110212evolucion-del-telefono-movil-del-zapatofono-smartphones404523shtml

[13] Vodafone [Online] httpblogvodafonecouk20130829vodafone-uks-ceo-guy-laurence-4g-finally-has-a-purpose

[14] Muy Canal [Online] httpwwwmuycanalcom20140131futuro-del-telefono-movil

[15] Statcounter [Online] httpgsstatcountercom

[16] Anthony I Wasserman Software Engineering Issues for Mobile Application Development 2010

[17] Statista [Online] httpwwwstatistacom

[18] Lisandro Deliacutea Nicolaacutes Galdamez Pablo Thomas Leonardo Corbalaacuten and Patricia Pesado Anaacutelisis Experimental de desarrollo de Aplicaciones Moacuteviles Multiplataforma in XX Congreso Argentino de Ciencias de la Computacioacuten CACIC 2014 San Justo Argentina octubre 2014

[19] Lisandro Deliacutea Nicolaacutes Galdamez Pablo Thomas and Patricia Pesado Un Anaacutelisis Experimental de Tipo de Aplicaciones para Dispositivos Moacuteviles in XIX Congreso Argentino de Ciencias de la Computacioacuten CACIC 2013 Mar del Plata Argentina 2013

[20] Abhinay Puvvala Amitava Dutta Rahul Roy and Priya Seetharaman Mobile Application Developersrsquo Platform Choice Model in 2016 49th Hawaii International Conference on System Sciences (HICSS) Koloa Hawaii 2016

[21] Android Dashboard [Online] httpsdeveloperandroidcomaboutdashboardsindexhtml

[22] Xcode [Online] httpsdeveloperapplecomxcode

[23] KW Tracy Mobile Application Development Experiences on Applersquos iOS and

Android OS Potentials IEEE vol 31 no 4 July-Aug 2012

[24] Google Recommendations for building smartphone-optimized websites [Online] httpgooglewebmastercentralblogspotcomar

[25] Bootstrap [Online] httpgetbootstrapcom

[26] Foundation [Online] httpfoundationzurbcom

[27] PhoneGap [Online] httpphonegapcom

[28] Apache Cordova [Online] httpscordovaapacheorg

Bibliografiacutea

82

[29] Adobe PhoneGap Build [Online] httpsbuildphonegapcom

[30] CocoonJS [Online] httpscocoonio

[31] Ludei [Online] httpswwwludeicom

[32] Ionic [Online] httpionicframeworkcom

[33] Sencha [Online] httpswwwsenchacomproductstouchoverview

[34] A Kosmaczewski Sencha Touch 2 Up and Running OrsquoReilly 2013

[35] Appcelerator Titanium [Online] httpwwwappceleratorcomproduct

[36] Backbone [Online] httpbackbonejsorg

[37] Underscorejs [Online] httpunderscorejsorg

[38] NativeScript [Online] httpswwwnativescriptorg

[39] TypeScript [Online] httpswwwtypescriptlangorg

[40] applause [Online] httpwwwapplausecom

[41] Xamarin [Online] wwwxamarincom

[42] Delphi [Online] httpswwwembarcaderocomproductsdelphi

[43] RubyMotion [Online] httpwwwrubymotioncom

[44] Xtext [Online] httpwwweclipseorgXtext

[45] Mono [Online] httpwwwmono-projectcom

[46] [Online] httpswebunlpeadunlpeduar

[47] I Salmre Writing Mobile Code Essential Software Engineering for Building Mobile Applications Addison Wesley Professional 2005

[48] Mapbox [Online] httpswwwmapboxcomlabstwitter-gnipbrands

[49] Ruby S Richardson L RESTful Web Services OrsquoReilly Media 2007

[50] Matthew J Hamm Wireframing Essentials Packt Publishing 2014

[51] GCM [Online] httpsdevelopersgooglecomcloud-messaging

[52] iOS Human Interface Guidelines [Online] httpsdeveloperapplecomioshuman-interface-guidelinesoverviewdesign-principles

[53] APN [Online] httpdeveloperapplecomlibrarymacdocumentationNetworkingInternetConceptual

Bibliografiacutea

83

RemoteNotificationsPGChaptersApplePushServicehtmlapple_refdocuidTP40008194-CH100-SW9

[54] Mark Norm Norman Francis Christian Heilmann Web Development Solutions Ajax APIs Libraries and Hosted Services Made Easy Apress 2007

[55] JqueryMobile [Online] httpsjquerymobilecom

[56] Pushwoosh [Online] httpsgithubcomPushwooshpushwoosh-phonegap-plugin

[57] J Clark Creating Mobile Apps with Sencha Touch 2 Packt Publishing 2013

[58] Kinvey [Online] httpwwwkinveycom

[59] Ali Mesbah Philippe Kruchten Mona Erfani Joorabchi Real Challenges in Mobile App Development in ACM IEEE International Symposium on Empirical Software Engineering and Measurement Baltimore Maryland US 2013

[60] Andreacute Nitze Andreas Schmietendorf Florian Roumlsler Towards a Mobile Application Performance Benchmark in ICIW 2014 The Ninth International Conference on Internet and Web Applications and Services Paris France 2014

[61] Sebastian Hanschke and Tim A Majchrzak Henning Heitkoumltter Comparing Cross Platform Development approaches For Mobile Applications in 8th International Conference on Web Information Systems and Technologies (WEBIST) Porto Portugal 2012

[62] HW Kim SG Chung CS Jung Measuring Software Quality A Survey of ISOIEC 9126 IEEE Software vol 21 no 5 pp 88 ndash 92 SeptemberOctober 2004

[63] Luis Corral Anton B Georgiev Alberto Sillitti and Giancarlo Succi Can execution time describe accurately the energy consumption of mobile apps An experiment in Android GREENS 2014 Proceedings of the 3rd International Workshop on Green and Sustainable Software pp 31-37 June 2014

[64] Brian Leroux Andre Charland Mobile application development web vs native Magazine Communications of the ACM vol 54 no 5 pp 49-53 May 2011

[65] Luis Corral Alberto Sillitti and Giancarlo Succi Mobile multiplatform development An experiment for performance analysis in The 9th International Conference on Mobile Web Information Systems (MobiWIS) Ontario Canada 2012

[66] Repositorio Git III-LIDI [Online] httpsgitlabcomiii-lidiperformance-assessment-multiplatform-mobile-applicationstreemaster

[67] React Native [Online] httpsfacebookgithubioreact-native

[68] Lisandro Galdaacutemez Nicolaacutes Corbalaacuten Leonardo Thomas Pablo Pesado Patricia Deliacutea Un anaacutelisis comparativo de rendimiento en aplicaciones moacuteviles

Bibliografiacutea

84

multiplataforma in XXI Congreso Argentino de Ciencias de la Computacioacuten Juniacuten 2015

Page 9: Desarrollo de Aplicaciones Móviles Multiplataforma

Prefacio

9

En el capiacutetulo 2 se describen conceptos esenciales del desarrollo de aplicaciones

para dispositivos moacuteviles

En el capiacutetulo 3 se profundizan conceptos relacionados al desarrollo de

aplicaciones moacuteviles multiplataforma y se estudian diferentes metodologiacuteas y

herramientas

El capiacutetulo 4 contiene un conjunto de experimentos sobre desarrollos de

aplicaciones moacuteviles multiplataforma y el anaacutelisis de los resultados obtenidos

El capiacutetulo 5 presenta las conclusiones obtenidas y el capiacutetulo 6 los trabajos

futuros propuestos en relacioacuten al tema

Finalmente se detalla la bibliografiacutea utilizada en el presente trabajo

Capiacutetulo 1 Tecnologiacutea Moacutevil

10

Capiacutetulo 1 Tecnologiacutea Moacutevil

Hubo una eacutepoca en el que los teleacutefonos moacuteviles no teniacutean pantalla taacutectil ni

permitiacutean grabar viacutedeo ni siquiera podiacutean conectarse a Internet Tampoco podiacutean enviar

y recibir mensajes Simplemente permitiacutean la funcioacuten baacutesica de hablar por teleacutefono

Dos deacutecadas atraacutes los dispositivos moacuteviles eran aparatos de gran tamantildeo y pesados

Soacutelo algunas pocas personas podiacutean acceder a estos dispositivos ya que se consideraban

artiacuteculos de lujo Pero este escenario fue cambiando paulatinamente llevando a que el

celular se transforme en un elemento imprescindible en nuestras vidas En Argentina en

el antildeo 2003 habiacutea 4 millones de liacuteneas activas En la actualidad la cifra llega a 37 millones

de liacuteneas activas y 62 millones de liacuteneas declaradas [11]

11 Los inicios

La Segunda Guerra Mundial originoacute la necesidad de comunicarse a distancia por

lo que Motorola creoacute un equipo militar llamado Handie Talkie H12-16 para

comunicaciones viacutea ondas de radio

Su salto a los sistemas civiles sucedioacute a finales de la deacutecada de los 40 con sistemas

de radio analoacutegicos en frecuencias FM principalmente y con servicios en las bandas HF

y VHF ofrecidos por la americana Bell

En 1955 Ericsson comercializoacute el Mobile Telephone System A (MTA) Phone

(Figura 1) un teleacutefono que pesaba 40 kilogramos y que se instalaba en automoacuteviles

Como curiosidad tuvo un total de 125 usuarios hasta 1967

Capiacutetulo 1 Tecnologiacutea Moacutevil

11

Figura 1 Mobile Telephone System A (MTA)

La primera llamada moacutevil data del 3 de abril de 1973 cuando Martin Cooper

(Figura 2) en aquel entonces ingeniero electroacutenico de Motorola realizoacute una llamada

desde la calle en Nueva York La llamada fue realizada mediante un prototipo del

Motorola DynaTAC 8000x Considerado el primer moacutevil del mundo pesaba cerca de un

kilo y mediacutea 33x45x89 centiacutemetros su bateriacutea teniacutea uacutenicamente la autonomiacutea de una

hora en conversacioacuten necesitando diez horas para cargarse Su costo era de USD 4000

Capiacutetulo 1 Tecnologiacutea Moacutevil

12

Figura 2 Martin Cooper el autor de la primer llamada moacutevil

El verdadero conocimiento popular del teleacutefono moacutevil no llegoacute hasta la deacutecada de

los 90 con la segunda generacioacuten de estos dispositivos

La comunicacioacuten digital permitioacute mejorar la calidad de la escucha de voz la

reduccioacuten del tamantildeo y peso de los dispositivos utilizados y sobre todo el incremento de

compantildeiacuteas operadoras que dieron paso a un mercado maacutes competitivo y accesible

Los usuarios fueron testigos de avances sorprendentes como la identificacioacuten de

llamada o los mensajes de texto que constituyeron a una nueva forma de comunicacioacuten

Vertiginosamente el celular pasoacute de ser considerado una herramienta de trabajo a

generalizarse en todos los estratos de la sociedad

Seguacuten avanzaba la deacutecada del 90 los teleacutefonos moacuteviles iban adaptaacutendose a esas

novedades incorporando pantallas cada vez de mayor tamantildeo y en los maacutes avanzados

haciendo desaparecer la antena que era necesario desplegar para poder realizar una

comunicacioacuten en condiciones adecuadas

Poco a poco los dispositivos empezaron a integrar cada vez maacutes funciones aviso

por vibracioacuten juegos bluetooth infrarrojos politonos y ya con el cambio de siglo

pantallas a color y caacutemaras fotograacuteficas Maacutes adelante llegariacutea la grabacioacuten de viacutedeo el

acceso a Internet las pantallas taacutectiles entre otras [12]

Capiacutetulo 1 Tecnologiacutea Moacutevil

13

12 Evolucioacuten de los protocolos para redes de comunicaciones

Hubiera sido imposible el auge de los teleacutefonos moacuteviles sin la estandarizacioacuten

mejora y evolucioacuten de los protocolos para redes de comunicaciones y su soporte por las

operadoras Asiacute tras las primeras comunicaciones viacutea ondas de radio con banda de

frecuencias por debajo de los 600 kHz las posteriores en AM y FM los servicios de Bell

y Ericsson en los antildeos 50 y 60 llegoacute esa primera llamada de 1973 que popularizoacute todo el

sector

La primera generacioacuten 1G fue responsabilidad de Ericsson con el sistema Telefoniacutea

Moacutevil Noacuterdica (NMT) y seguiacutea utilizando canales analoacutegicos En 1986 la compantildeiacutea

modernizoacute el sistema funcionando a frecuencias superiores de 900 MHz posibilitando

servicio para un mayor nuacutemero de usuarios Ademaacutes del NMT en los 80 se desarrollaron

otros sistemas de telefoniacutea moacutevil como el Sistema Telefoacutenico Moacutevil Avanzado (AMP)

desarrollado por los laboratorios Bell

La segunda generacioacuten 2G llegoacute en la deacutecada de los 90 con sistemas como Global

System for Mobile Communications (GSM) Estaacutendar Interno 136 (IS-136) Red

Mejorada Digital Integrada (iDEN) y el Estaacutendar Interno 95 (IS-95) GSM fue el

desarrollo maacutes relevante ya que fue el estaacutendar europeo de telefoniacutea moacutevil digital En el

proyecto participaron 26 compantildeiacuteas europeas de telecomunicaciones y en 1992 se

pusieron en marcha las primeras redes europeas de GSM-900 y los primeros teleacutefonos

moacuteviles GSM Ademaacutes de Europa GSM ha terminado imponieacutendose tambieacuten en Asia

Ameacuterica Latina Oceaniacutea y una parte de Ameacuterica del Norte

La necesidad de mayores velocidades de transmisioacuten de datos y mayores

capacidades que permitieran nuevos servicios dieron paso a la Tercera Generacioacuten (3G)

no sin antes pasar por el 25G que proporcionoacute el General Packet Radio Service (GPRS)

El estaacutendar europeo es el Universal Mobile Telecommunications System (UMTS) basado

en la tecnologiacutea W-CDMA y estaacute gestionado por la organizacioacuten 3GPP tambieacuten

responsable de GSM GPRS y Enhanced Data Rates for GSM Evolution (EDGE)

La Cuarta Generacioacuten (4G) sucede a las tecnologiacuteas 2G y 3G y ofrece entre otras

mejoras mayor seguridad y Calidad de Servicio (QoS) junto a velocidades de acceso

muy superiores a las anteriores (mayores a 100 Mbits en movimiento y a 1 Gbits en

Capiacutetulo 1 Tecnologiacutea Moacutevil

14

reposo) Estaacute basada completamente en el protocolo IP siendo un sistema de sistemas y

una red de redes que se alcanza gracias a la convergencia entre las redes de cables e

inalaacutembricas Seguacuten Vodafone ldquoel 4G tiene finalmente una razoacuten y es el entretenimientordquo

[13] La norma Long Term Evolution (LTE) es la maacutes extendida aunque no la uacutenica

existente

5G seraacute la nueva revisioacuten del sistema de conexioacuten de red sin cables y se espera que

esteacute disponible en el antildeo 2020 (Figura 3) en paiacuteses como Corea del Sur como asiacute tambieacuten

en Europa Como 4G la mayor velocidad de transferencia seraacute su mayor avance con

velocidades de descarga de hasta 10 Gbps (125 GBs) [14]

Figura 3 Evolucioacuten de los protocolos para redes de comunicacioacuten moacuteviles

13 La actualidad

Muchas de las actividades que un tiempo atraacutes soliacutean hacerse desde una

computadora tales como revisar el correo electroacutenico escuchar muacutesica agendar una

nueva cita en el calendario compartir fotos en alguna red social entre muchiacutesimas otras

en nuestros diacuteas se llevan a cabo de forma natural desde los dispositivos moacuteviles La

Figura 4 muestra coacutemo los dispositivos moacuteviles les han ganado terreno a los equipos

Capiacutetulo 1 Tecnologiacutea Moacutevil

15

tradicionales denominados lsquode escritoriorsquo

Figura 4 Comparacioacuten entre plataformas [15]

En la actualidad existen cientos de modelos diferentes de dispositivos moacuteviles y

los fabricantes siguen innovando intentando destacarse sobre la competencia Hoy en diacutea

no nos sorprende encontrar dispositivos moacuteviles con procesadores quad-core de 22 Ghz

Incluso ya se comienzan a conocer prototipos de dispositivos con ocho o diez nuacutecleos

De la mano de los procesadores la memoria RAM de los dispositivos moacuteviles

tambieacuten ha crecido considerablemente llegando a comercializarse dispositivos con 3 GB

de memoria

La caacutemara de los dispositivos es otra de las capacidades que maacutes ha progresado

llegando a encontrarse sensores de 20 MP y la posibilidad de grabar videos en formato

UHD 4K (3840 x 2160)

El tamantildeo de las pantallas y sus resoluciones fueron otra de las caracteriacutesticas que

maacutes han evolucionado Es posible encontrar dispositivos con pantallas de 5 pulgadas con

posibilidad de visualizar 16 millones de colores y con resoluciones Quad HD (2560 x

1440)

La tecnologiacutea de las bateriacuteas es un aspecto en que no se ha logrado grandes avances

en el sector ni se pronostican grandes progresos a corto plazo Incluso la llegada de chips

Capiacutetulo 1 Tecnologiacutea Moacutevil

16

maacutes potentes mayores pantallas o el 4G disminuiraacuten auacuten maacutes la autonomiacutea de las bateriacuteas

El uacuteltimo aspecto a mencionar es el de las capacidades del dispositivo Ademaacutes de

los ya claacutesicos sensores Global Positioning System (GPS) la capacidad de conectividad

viacutea bluetooth infrarrojo y WIFI hoy surge una diversidad de opciones que pueden

disponer los teleacutefonos inteligentes

Por el lado de la conectividad cada vez es maacutes comuacuten encontrar terminales con

mecanismos de comunicacioacuten Near Field Communication (NFC) o WIFI Direct

Con respecto a los sensores actualmente existen dispositivos que cuentan con

aceleroacutemetros giroscopios y magnetoacutemetros los cuales brindan a los desarrolladores de

aplicaciones la posibilidad de controlar la posicioacuten del aparato la aceleracioacuten que sufre

el dispositivo con respecto a la fuerza de la gravedad etc Tambieacuten es comuacuten el uso de

sensores de proximidad por ejemplo para apagar la pantalla mientras se atiende una

llamada El sensor de luminosidad permite medir el brillo de la luz ambiental Asiacute el

software del teleacutefono utiliza estos datos para ajustar el brillo de la pantalla

automaacuteticamente hacieacutendola maacutes clara o maacutes oscura

Los uacuteltimos smartphones de gama alta tambieacuten son capaces de medir la presioacuten

atmosfeacuterica a traveacutes de un baroacutemetro Los datos que mide el dispositivo sirven para

determinar en queacute nivel por encima del mar se encuentra el teleacutefono lo que se traduce en

la mejora de la precisioacuten del GPS

Incluso ya existen dispositivos que cuentan con un sensor de humedad del aire el

cual permite controlar los niveles de humedad para por ejemplo ayudar a las personas

con problemas respiratorios

Como si todo esto fuese poco existen modelos con podoacutemetro -para medir con

precisioacuten los pasos que da el usuario- pulsoacutemetro -para medir las pulsaciones a traveacutes de

los vasos sanguiacuteneos de los dedos- y hasta sensor de huellas digitales para cuestiones

relativas a la seguridad

Por lo anteriormente dicho los desarrolladores de aplicaciones para dispositivos

moacuteviles de la actualidad tienen el desafiacuteo de poder manipular desde sus aplicaciones

todas las posibilidades descriptas

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

17

Capiacutetulo 2 Desarrollo de

Aplicaciones Moacuteviles Nativas

Si bien el desarrollo de aplicaciones para dispositivos moacuteviles se remonta por lo

menos a 10 antildeos atraacutes ha habido un crecimiento exponencial desde que se abrioacute la tienda

de aplicaciones de iPhone en julio de 2008 Desde entonces los fabricantes de

dispositivos han creado tiendas de aplicaciones para otros dispositivos moacuteviles

incluyendo Android BlackBerry Nokia Ovi Windows Phone entre otros [16]

Actualmente el desarrollo de aplicaciones para dispositivos moacuteviles es un campo

en evolucioacuten con gran intereacutes econoacutemico y cientiacutefico Una prueba de esto es que para

Julio del 2014 se disponiacutean de maacutes de 3 millones de aplicaciones entre las principales

tiendas virtuales de aplicaciones Y solamente en el antildeo 2013 se contabilizaron 101

billones de descargas de aplicaciones moacuteviles en todo el mundo de las cuales 9 billones

fueron descargas pagas y 92 billones descargas gratuitas [17]

Con el actual creciente nuacutemero de plataformas moacuteviles desarrollar aplicaciones

moacuteviles se hizo muy difiacutecil para las empresas ya que necesitan desarrollar las mismas

aplicaciones para cada plataforma de destino

El desarrollo de aplicaciones nativas es la forma natural de implementar

aplicaciones moacuteviles Las aplicaciones nativas son concebidas para ejecutarse en una

plataforma especiacutefica es decir se debe considerar el tipo de dispositivo el sistema

operativo a utilizar y su versioacuten

Las aplicaciones nativas se desarrollan utilizando un entorno de desarrollo

integrado (IDE) que proporciona las herramientas de desarrollo necesarias para la

construccioacuten y depuracioacuten de aplicaciones El coacutedigo fuente se compila para obtener

coacutedigo ejecutable proceso similar que el utilizado para las tradicionales aplicaciones de

escritorio

Cuando la aplicacioacuten estaacute lista para ser distribuida debe ser transferida a las App

stores (tiendas de aplicaciones) especiacuteficas de cada sistema operativo Estas tiendas tienen

un proceso de auditoriacutea para evaluar si la aplicacioacuten se adecuacutea a los requerimientos de la

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

18

plataforma a operar Cumplido este paso la aplicacioacuten se pone a disposicioacuten de los

usuarios

La principal ventaja de este tipo de aplicaciones es la posibilidad de interactuar con

todas las capacidades del dispositivo (caacutemara GPS aceleroacutemetro agenda entre otras)

Ademaacutes no es estrictamente necesario poseer acceso a internet Su ejecucioacuten es raacutepida

puede ejecutarse en modo background y notificar al usuario cuando ocurra un evento que

necesite su atencioacuten

Claramente estas ventajas tienen como contrapartida un mayor costo de desarrollo

pues se debe utilizar un lenguaje de programacioacuten diferente seguacuten la plataforma Por ende

si se desea cubrir varias plataformas se deberaacute generar una aplicacioacuten para cada una de

ellas Esto conlleva a mayores costos de desarrollo actualizacioacuten y distribucioacuten de nuevas

versiones [9] [18] [19]

En la actualidad hay una gran cantidad de sistemas operativos para dispositivos

moacuteviles La Figura 5 muestra la utilizacioacuten de los sistemas operativos en los uacuteltimos antildeos

en todo el mundo mientras que la Figura 6 muestra la misma comparativa en Argentina

En ambos casos el ranking es liderado por Android seguido por iOS y en tercer lugar

Windows Phone [20]

Figura 5- Utilizacioacuten de Sistemas Operativos Moacuteviles en el mundo

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

19

Figura 6- Utilizacioacuten de Sistemas Operativos Moacuteviles en Argentina

A continuacioacuten se analizaraacute coacutemo es el proceso de desarrollo de aplicaciones

moacuteviles nativas en los sistemas operativos maacutes relevantes de la actualidad y luego en la

Tabla 1 se compararaacuten aspectos teacutecnicos de estas plataformas

21 Desarrollo de Aplicaciones Nativas en Android

Android es el sistema operativo maacutes utilizado en la actualidad Puede ser utilizado

en teleacutefonos inteligentes tablets relojes inteligentes televisores y automoacuteviles

Estaacute basado en Linux y es respaldado por Google

211 Evolucioacuten Inicialmente el desarrollo de Android era llevado a cabo por la empresa Android

Inc la cual fue fundada en el antildeo 2003 y recibiacutea respaldo econoacutemico por parte de Google

Antildeos maacutes tarde maacutes precisamente en Julio del 2005 Google adquiere Android y da lugar

a la primer versioacuten del sistema operativo en el antildeo 2007 Android 10 Apple Pie1

desarrollado sobre el kernel de Linux 26 En su presentacioacuten se hizo hincapieacute en que era

un sistema operativo para dispositivos moacuteviles totalmente gratuito y open source a

1 Desde la salida de la primera versioacuten del sistema operativo hasta el presente Google ha seguido la tradicioacuten de ponerle un nombre de postre a cada una de sus versiones siguiendo un orden alfabeacutetico

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

20

diferencia de iOS

La primera versioacuten comercial teniacutea mucho margen de mejora y apenas inquietoacute a la

competencia pero ya introduciacutea algunos conceptos que antildeos despueacutes son un estaacutendar de

los sistemas operativos moacuteviles

Menuacute desplegable de notificaciones

Widgets de escritorio

Android Market la tienda de apps (no contaba con ninguacuten sistema de pago para

usuarios Todo el cataacutelogo era gratuito)

Integracioacuten con Google Mail Contacts y Calendar

Navegador Maps Google Talk reproductor de YouTube y soporte para caacutemaras

En febrero del 2009 apenas 3 meses despueacutes del lanzamiento de Android 10 Apple

Pie llega la primera actualizacioacuten Android 11 Banana Bread No antildeadiacutea grandes

novedades pero siacute corregiacutea numerosos fallos detectados en la primera versioacuten e introduciacutea

un concepto por entonces poco usado por los rivales que buscaba facilitar la vida al

usuario las actualizaciones automaacuteticas con las que resultaba muy simple mantener todo

el software al diacutea

El 30 de abril del 2009 lanzan una nueva actualizacioacuten de gran importancia con

muchas novedades en cuanto a usabilidad Android 15 Cupcake Esta nueva versioacuten

introdujo las siguientes caracteriacutesticas

Teclado taacutectil QWERTY en pantalla con prediccioacuten de texto y diccionario de

usuarios para palabras personalizadas

Grabacioacuten y reproduccioacuten en formatos MPEG-4 y 3GP

Widget de escritorio de Google para realizar buacutesquedas directamente

SDK para el desarrollo de widgets de escritorio por parte de terceros

Funciones del portapapeles ampliadas

Interfaz para grabar y reproducir viacutedeos mejorada

Posibilidad de auto-rotacioacuten

Android 16 Donut apareciacutea en septiembre del 2009 con algunas novedades

adicionales

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

21

Soporte para CDMAEVDO 8021x VPN que ampliaba los mercados al alcance

de Android

Compatibilidad con distintas resoluciones de pantalla Soporte WVGA

Actualizacioacuten y nuevo disentildeo del Android Market

Utilidad de buacutesqueda universal en Internet y en el mismo dispositivo

Galeriacutea caacutemara y videocaacutemara con mejor integracioacuten con raacutepido acceso a la

caacutemara

Motor multi-lenguaje de Siacutentesis de habla para permitir a cualquier aplicacioacuten de

Android hablar una cadena de texto

Mejoras en las buacutesquedas por texto y voz

Apenas dos meses despueacutes en noviembre del 2009 lanzan Android 20 Eclair

uno de los cambios maacutes sustanciales sufridos por Android tanto a nivel de disentildeo como

de arquitectura interna Era una versioacuten dirigida a dispositivos de mayor tamantildeo en un

tiempo en el que los fabricantes empezaban a diversificar su oferta La versioacuten 21

mantuvo la misma nomenclatura y soacutelo corrigioacute algunos fallos pero su uso fue mayor

entre los fabricantes que la versioacuten anterior A continuacioacuten se mencionan algunas de las

nuevas caracteriacutesticas

Sincronizacioacuten de cuenta expandida permitiendo a los usuarios agregar muacuteltiples

cuentas al dispositivo para sincronizacioacuten de correo y contactos

Google Maps Navigation sistema de navegacioacuten GPS gratuito

Compatibilidad con Microsoft Exchange

Optimizacioacuten en velocidad de hardware y GUI renovada

Soporte para maacutes tamantildeos de pantalla y resoluciones con una mejor tasa de

contraste

Navegador actualizado soporte para HTML5 y barra de direccioacuten y buacutesqueda

unificada

Funcioacuten Speech to Text para escribir textos mediante el uso de la voz

Nueva pantalla de desbloqueo

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

22

Nuevas caracteriacutesticas para la caacutemara incluyendo soporte de flash zoom digital

modo escena balance de blancos efecto de colores y enfoque macro

Adicioacuten de fondos de pantalla animados permitiendo la animacioacuten de imaacutegenes

de fondo de la pantalla inicio para mostrar movimiento

El 20 de mayo del 2010 apareciacutea una nueva actualizacioacuten del sistema operativo

Android 22 Froyo Traiacutea numerosos cambios algunos copiados de otras ROMs y otros

con el uso empresarial en mente

Pantalla Home totalmente redisentildeada con 5 paneles en lugar de 3

Nueva galeriacutea de imaacutegenes

Soporte para actuar como hotspot2 para otros dispositivos tethering3 de datos

Soporte para Flash 101

Funcioacuten copiar y pegar mejorada en Google Mail

Nueva pantalla alternativa de desbloqueo mediante coacutedigo PIN

Grabacioacuten de viacutedeo en 720p

Optimizaciones en velocidad memoria y rendimiento Compilador JIT

Integracioacuten del motor de JavaScript V8 de Chrome en el navegador

Soporte para el servicio Android Cloud to Device Messaging (C2DM)

habilitando notificaciones push

El antildeo 2010 iba a concluir con el lanzamiento de una versioacuten sumamente popular

que prevalecioacute gran tiempo Android 23 Gingerbread Esta versioacuten contoacute con las

siguientes caracteriacutesticas

Disentildeo de la interfaz de usuario actualizado con incremento en velocidad y

simpleza

Nuevo disentildeo para el teclado numeacuterico en pantalla

Soporte para tamantildeos y resoluciones de pantalla extra-grandes (WXGA y

mayores)

Funcioacuten para copiar y pegar mejorada con soporte para caracteres individuales en

lugar de cajas de texto

2 lugar que ofrece acceso a Internet a traveacutes de una red inalaacutembrica y un enrutador conectado a un proveedor de servicios de Internet 3 proceso por el cual un dispositivo moacutevil con conexioacuten a Internet actuacutea como pasarela para ofrecer acceso a la red a otros dispositivos

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

23

Soporte para NFC

Herramientas de visualizacioacuten de consumo y uso de la bateriacutea mejoradas

Soporte para caacutemaras frontales

Acceso de bajo nivel para los desarrolladores de juegos

Recolector basura concurrente para incrementar el rendimiento

Sustitucioacuten del sistema de archivos YAFFS por ext4

Soporte nativo para maacutes sensores (tales como giroscopio y baroacutemetro)

Soporte de chat de video o voz usando Google Talk

En febrero del 2011 Google lanza Android 30 Honeycomb Se trata de una

actualizacioacuten especiacutefica para tablets no compatible con teleacutefonos que introduciacutea las

liacuteneas maestras de la interfaz en el futuro Las versiones 31 y 32 mantuvieron el mismo

nombre y fueron baacutesicamente un conjunto de correcciones A continuacioacuten se listan los

cambios significativos que tuvieron lugar en estas versiones

Pantalla de Inicio redisentildeada

Inclusioacuten de tonos azules en la interfaz en detrimento del verde tradicional

Nuevas funcionalidades para el emplazamiento y uso de widgets

Fin de los botones fiacutesicos Adaptacioacuten automaacutetica del SO seguacuten el dispositivo

Agregado de barra de sistema con caracteriacutesticas de acceso raacutepido a

notificaciones estados y botones de navegacioacuten suavizados disponible en la parte

inferior de la pantalla

Antildeadida la barra de accioacuten (Action Bar en ingleacutes) entregando acceso a opciones

contextuales navegacioacuten widgets u otros tipos de contenido en la parte superior

de la pantalla

Multitarea simplificada ndash tocando Aplicaciones recientes en la barra del sistema

permite a los usuarios ver instantaacuteneas de las tareas en curso y saltar raacutepidamente

de una aplicacioacuten a otra

Aceleracioacuten graacutefica mediante hardware

Optimizacioacuten del renderizado de graacuteficos 3D

Soporte para perifeacutericos USB

Octubre del 2011 fue el mes del lanzamiento de Android 40 Ice Cream Sandwich

basado en el nuacutecleo de Linux 301 Esta nueva versioacuten introdujo las siguientes mejoras

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

24

Nueva Interfaz Holo y fuente tipograacutefica Roboto

Sistema de gestioacuten de notificaciones mejorado

Multitarea mejorada

Android Beam funcionalidad para transferir datos entre dos dispositivos viacutea NFC

Funcioacuten de desbloqueo mediante el rostro

Nuevas funciones para la visualizacioacuten y gestioacuten del consumo de datos

Nuevas aplicaciones de correo y calendario

Habilidad de acceder a aplicaciones directamente desde la pantalla de bloqueo

Herramienta integrada de captura de pantalla

Soporte MKV

Aceleracioacuten por hardware de la interfaz de usuario

Soporte Stylus (laacutepiz taacutectil)

En Julio del 2012 se presenta Android 41 Jelly Bean que incluye las siguientes

novedades

Sistema de deteccioacuten de entrada de datos taacutectiles optimizado

Estreno de Google Now el servicio-asistente de voz inteligente de Google

Navegador Google Chrome

Buacutesqueda mediante voz mejorada

Nuevas posibilidades para las notificaciones interactivas de escritorio

Dictado de voz offline

Se deja de dar soporte al Flash Player

Meses despueacutes en noviembre del 2012 se lanza la versioacuten Android 42 Jelly Bean

la cual incluye habituales correcciones rendimiento mejorado y cambios puntuales en

ciertas aplicaciones

Android 43 Jelly Bean es anunciado el 24 de julio del 2013 Uno de los objetivos

de esta versioacuten fue tratar de consolidar a Android como un sistema operativo capaz de

ejecutar juegos Esta nueva versioacuten cuenta con las siguientes novedades

Soporte multiusuario y de perfiles mejorado

Soporte OpenGL ES 30

Bluetooth Smart

Plataforma Google Games

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

25

Servicios de localizacioacuten Wi-Fi mejorados

Ya no es necesario pulsar el icono del microacutefono para realizar una buacutesqueda de

voz Solo hay que decir OK Google y en seguida ordenar al equipo lo que se

necesite

Android 44 KitKat es anunciado en octubre del 2013 Esta nueva versioacuten intenta

corregir el problema de fragmentacioacuten se cuenta con muchas versiones y los fabricantes

tienen dificultades para adaptar sus productos a los requerimientos de cada nueva versioacuten

Se destaca de esta versioacuten

Menores requisitos de hardware para corregir la fragmentacioacuten de versiones

Compatible con terminales con 512 MB de memoria RAM

Reduccioacuten del consumo de bateriacutea mediante la optimizacioacuten de los sensores

Inclusioacuten de la suite ofimaacutetica QuickOffice

Servicios de almacenamiento online integrados Google Drive Box

Soporte para infrarrojos Usar el moacutevil como mando de TV

Aplicaciones a pantalla completa

Captura de pantalla en viacutedeo

En octubre del 2014 se lanza Android 5 Lollipop daacutendole soporte a otros

dispositivos como Android TV relojes inteligentes autos etc Esta nueva versioacuten

incluye

Nuevo disentildeo basado en Material Design que logra un flujo de trabajo maacutes fluido

Interfaz que se adapta a cualquier tamantildeo de dispositivo

Renovado sistema de notificaciones inteligente

Interesante vista multitarea que muestra capas con las diferentes aplicaciones

abiertas

Funcioacuten Android Smart Lock que permite emparejar un dispositivo Android con

otro ya sea un reloj inteligente o un automoacutevil

Modo Invitado para que puedas prestar el dispositivo sin que otros usuarios

tengan acceso a la informacioacuten privada

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

26

Soporte para sistemas de 64 bits

En octubre del 2015 se anuncia Android 6 Marshmallow que incluye las

siguientes novedades

Soporte para autenticacioacuten viacutea huella digital

Desinstalacioacuten raacutepida de las aplicaciones desde la pantalla de inicio

Nuevo esquema de gestioacuten de energiacutea llamado Doze

Mayor duracioacuten de la bateriacutea cuando el dispositivo estaacute en reposo

Inclusioacuten de Android Pay que emplearaacute el chip NFC

Mejoras en Google Now

Mayor control sobre los permisos requeridos por las aplicaciones

212 Proceso de Desarrollo Las aplicaciones nativas para esta plataforma se implementan utilizando el lenguaje

de programacioacuten Java

El estaacutendar sugiere utilizar el IDE oficial Android Studio (Figura 7) aunque es

posible utilizar otros entornos Independientemente del IDE utilizado se necesita

disponer del Software Development Kit (SDK) de la versioacuten de Android en la que se

desea trabajar El SDK provee todas las herramientas necesarias para desarrollar

compilar depurar y simular aplicaciones

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

27

Figura 7 Entorno de desarrollo Android Studio

Uno de los interrogantes que surgen en el momento de crear una aplicacioacuten es con

cual versioacuten de la Application Programming Interface (API) de Android trabajar Se debe

tener en cuenta que al trabajar con una versioacuten especiacutefica se estaacute limitando cuales son los

dispositivos que soportaraacuten la aplicacioacuten a crear No se recomienda utilizar una API

antigua -ya que no se estariacutea utilizando muchos de los avances de la plataforma- ni

tampoco la uacuteltima en el mercado ndashdebido a que pocos seriacutean los usuarios que podriacutean

utilizarla- En la Figura 8 se visualiza la distribucioacuten de versiones seguacuten los dispositivos

activos a la fecha de Diciembre 2016 [21] De esa informacioacuten se desprende que si se

optara por trabajar con la API 16 (Jelly Bean) el 966 de los celulares activos podraacuten

utilizar la aplicacioacuten a crear

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

28

Figura 8 Distribucioacuten de versiones de Android - Diciembre 2016

22 Desarrollo de Aplicaciones Nativas en iOS

iOS es un sistema operativo para dispositivos moacuteviles de la empresa multinacional

Apple Si bien fue originalmente desarrollado para el dispositivo iPhone luego el sistema

operativo alcanzoacute otros dispositivos como iPod Touch iPad A diferencias de otros

sistemas operativos para dispositivos moacuteviles iOS solo funciona en dispositivos creados

por la empresa Apple pero no asiacute en otro hardware de terceros

221 Evolucioacuten El sistema operativo moacutevil iOS se deriva del sistema operativo OS X el cual estaacute

basado en UNIX

La primera versioacuten del sistema operativo se presentoacute en enero del 2007 A

diferencia de sus sucesores la primera versioacuten no se llamoacute iOS sino iPhone OS Se

trataba de una plataforma bastante cerrada ya que las uacutenicas aplicaciones disponibles

eran las que estaban integradas al sistema operativo y fueron creadas por Apple como los

Mapas Mail Fotos Calendario entre otras

El desarrollo de aplicaciones nativas por parte de terceros no tuvo lugar hasta marzo

del 2008 momento en el cual Apple liberoacute el primer kit de desarrollo

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

29

Meses despueacutes se lanza la segunda versioacuten del sistema operativo iPhone OS 2 En

esta oportunidad introducen la App Store la cual permitioacute la descarga de aplicaciones de

terceros Ademaacutes la aplicacioacuten de Mapas recibioacute compatibilidad con el GPS y el Mail

notificaciones push

En 2009 Apple lanzoacute iPhone OS 3 y en su versioacuten 32 se le cambioacute el nombre a

iOS 32 iOS 3 incorporoacute grandes novedades buacutesqueda Spotlight botones Copiar y

Pegar grabacioacuten de viacutedeo edicioacuten de viacutedeo mensajes MMS comandos de voz modo

landscape y otras muchas apps Ademaacutes se siguioacute explotando las ventajas de las

notificaciones push y se continuoacute evolucionando su SDK daacutendole mayor poder a los

desarrolladores de aplicaciones

iOS 4 llegoacute a mediados del 2010 y trajo consigo nuevos cambios a la plataforma

Los maacutes destacables fueron la inclusioacuten de fondos de pantalla y la posibilidad de poder

abrir varias aplicaciones en simultaacuteneo Adicionalmente las aplicaciones podiacutean ser

agrupadas mediante carpetas algo simple pero uacutetil

En Junio del 2011 se libera iOS 5 Esta nueva versioacuten ofreciacutea grandes novedades

un Centro de Notificaciones Siri ndashel asistente virtual que marcoacute tendencia en los uacuteltimos

antildeos- iMessage iCloud Game Center Quiosco Recordatorios integracioacuten social para

Twitter y se mejoroacute notablemente la app de navegacioacuten web nativa Safari

iOS 6 fue presentado en Junio del 2012 y trajo como novedades la inclusioacuten de

Apple Maps (en reemplazo de Google Maps) mejoras en Siri con informacioacuten mucho

maacutes precisa la integracioacuten de Facebook y Twitter en el sistema el modo no molestar el

soporte para LTE entre otras

Los usuarios de este sistema operativo recibieron una de las mayores

actualizaciones en Junio del 2013 cuando se presenta iOS 7 Esta nueva versioacuten contoacute

con un redisentildeo total de la interfaz de usuario basaacutendose en transparencias y degradados

Ademaacutes se introdujo el Centro de Control AirDrop una renovada app de fotos iTunes

Radio y CarPlay mejoras en el App Switcher videos a caacutemara lenta entre otras cosas

Junio del 2014 fue el mes donde quedoacute disponible iOS 8 una nueva versioacuten del

sistema operativo que intenta resolver algunos errores de iOS 7 y antildeadir ciertas mejoras

Las extensiones y la posibilidad de conectar apps entre siacute mediante el menuacute compartir

hicieron que iOS 8 fuese mucho maacutes productivo Ademaacutes incorporoacute widgets para el

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

30

Centro de Notificaciones o las notificaciones interactivas Ademaacutes se implementaron los

contactos favoritos los teclados de terceros la funcioacuten Reachability y la utilidad

Continuity y las aplicaciones Apple Pay Salud HandOff QuickType Compartir en

Familia iCloud Drive y Apple Music

En el 2015 se presenta iOS 9 que introdujo todo un cambio en el uso del sistema

gracias a la compatibilidad con el 3D Touch del iPhone 6s y el iPhone 6s Plus Se

actualizoacute Notas con nuevas funciones se sustituyoacute Newsstand por News se incorporaron

mejoras en Passbook que pasoacute a llamarse Wallet y se mejoroacute Mapas con direcciones y

traacutefico Se antildeadioacute Split View Picture-in-Picture y atajos en teclados de terceros Ademaacutes

el sistema ahora podiacutea aprovechar mejor la autonomiacutea del dispositivo gracias al Modo

ahorro de bateriacutea que limita las conexiones y caracteriacutesticas del sistema para no consumir

tanta energiacutea

Por uacuteltimo en Junio del 2016 quedoacute disponible iOS 10 versioacuten que se caracteriza

por abrirse a los desarrolladores Con esta nueva versioacuten se puede tener acceso a Siri al

3D Touch y a apps directas del sistema operativo Ademaacutes el centro de widgets ahora es

maacutes intuitivo y la pantalla de bloqueo maacutes uacutetil Como es habitual se aprecian mejoras en

distintas aplicaciones del sistema operativo y se permite borrar apps de Apple que no sean

utilizadas por los usuarios

222 Proceso de desarrollo Las aplicaciones moacuteviles para la plataforma iOS se desarrollan utilizando el

lenguaje de programacioacuten Objetive C El entorno de desarrollo oficial es la plataforma

Xcode [22] la cual opera en conjunto con Interface Builder una herramienta graacutefica para

la creacioacuten de interfaces de usuario

Actualmente hay dos grandes versiones del sistema operativo moacutevil en curso como

se puede apreciar en la Figura 10 Es algo a destacar que la uacuteltima versioacuten del sistema

operativo es soportada por el 63 de los dispositivos activos Claramente la

fragmentacioacuten interna es mucho menor que la encontrada en Android

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

31

Figura 9 Entorno de desarrollo Xcode

Figura 10 Distribucioacuten de versiones de iOS - Noviembre 2016

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

32

23 Desarrollo de Aplicaciones Nativas en Windows Phone

El sistema operativo moacutevil Windows Phone fue desarrollado por Microsoft y

sucede a Windows Mobile A diferencia de su predecesor estaacute enfocado en el mercado de

consumo en lugar del mercado empresarial

231 Evolucioacuten Su primera versioacuten lanzada en septiembre del 2010 fue denominada Windows

Phone 7 Fue presentado como un nuevo sistema operativo que incluye funciones de

integracioacuten con los servicios Xbox Live y Zune La interfaz conocida como Metro ha

sido revisada en su totalidad y comparte caracteriacutesticas visuales similares a la interfaz del

dispositivo Zune HD

Windows Phone 75 es una actualizacioacuten para Windows Phone lanzada en

septiembre de 2011 Esta nueva versioacuten incorporoacute numerosas caracteriacutesticas como por

ejemplo la inclusioacuten de Internet Explorer 9 con soporte para CSS3 Media Queries y

soporte para usar GPS cuando se trabaje con aplicaciones de ubicacioacuten geograacutefica entre

otros

En enero del 2013 se presenta Windows Phone 78 una actualizacioacuten que trae

mejoras como la nueva interfaz de usuario y fondos personalizados para la pantalla de

bloqueo Fue la uacuteltima gran actualizacioacuten de Windows Phone 7 ya que Microsoft se

centroacute en Windows Phone 8

Windows Phone 8 es la siguiente versioacuten del sistema operativo la cual fue

presentada a finales de 2012 Entre las nuevas caracteriacutesticas se incluyen

Nuevas pantallas de inicio y de bloqueo maacutes personalizables

Rincoacuten infantil un espacio exclusivo y controlado para los nintildeos

Cartera para almacenar tarjetas de fidelizacioacuten y de creacutedito

NFC

Internet Explorer 10

Integracioacuten con Skype

Nuevo nuacutecleo Windows NT con soporte para procesadores de varios

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

33

nuacutecleos

Captura de pantalla

Su proacutexima versioacuten es Windows Phone 81 y fue presentada en abril del 2014

Entre sus caracteriacutesticas maacutes relevantes se encuentran

Centro de notificaciones

Asistente de voz conocido con el nombre de Cortana

Sensores (de Wi-Fi de datos y de bateriacutea)

Aplicaciones que vienen en el paquete de instalacioacuten como Salud y

ejercicios Comida y bebida Viajes y Mapas (esta uacuteltima compite con Here

Maps la cual es la aplicacioacuten de mapas de Nokia)

Mejoras en la pantalla de inicio posibilidad de agregar fondos de pantalla y

una tercera columna de mosaicos personalizables (Tiles)

A mediados del 2014 Microsoft decide cambiar de estrategia tratando de unificar

todas las plataformas como PC tablets smartphones Xbox One entre otros Windows

10 (moacutevil) se dio a conocer puacuteblicamente durante un evento el 21 de enero para 2015 Al

igual que su homoacutelogo Windows 10 Mobile utiliza como navegador predeterminado

Microsoft Edge reemplazando Internet Explorer de Windows Phone 81 ya que este no

se adecuaba a las nuevas liacuteneas de disentildeo del sistema operativo

232 Proceso de desarrollo El entorno de desarrollo maacutes popular para el desarrollo de aplicaciones para

Windows Phone es Visual Studio (Figura 11) En la actualidad es posible utilizar diversos

lenguajes de programacioacuten VBNET y CNET C++ y JavaScript

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

34

Figura 11 Entorno de desarrollo Visual Studio

24 Diferencias teacutecnicas entre Android iOS y Windows Phone

Desarrollar aplicaciones moacuteviles para los tres sistemas operativos maacutes populares

implica conocer ciertos aspectos teacutecnicos de cada plataforma Algunos de estos aspectos

teacutecnicos difieren sustancialmente entre cada sistema operativo

Una de las caracteriacutesticas a tener en cuenta es si las aplicaciones moacuteviles se ejecutan

dentro de una maacutequina virtual especiacuteficamente disentildeada o si se ejecutan directamente

sobre el sistema operativo

Otro aspecto que los desarrolladores deben tener en cuenta es el lenguaje de

programacioacuten a utilizar para crear aplicaciones nativas Este aspecto es importante porque

incide en otros aspectos como por ejemplo la gestioacuten de memoria

Ademaacutes del lenguaje de programacioacuten a utilizar es importante conocer la

tecnologiacutea requerida para disentildear interfaces de usuario

Asimismo los desarrolladores deben familiarizarse con diferentes IDEs seguacuten la

plataforma en la que se desea desarrollar como asiacute tambieacuten con diferentes tiendas de

aplicaciones donde alojar los productos finales

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

35

Por uacuteltimo la tecnologiacutea de hardware requerida para soportar el sistema operativo

tambieacuten difiere seguacuten cada plataforma

La Tabla 1 compara cada uno de estos aspectos en los sistemas operativos moacuteviles

Android iOS y Windows Phone

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

36

Sistema

Operativo

Maacutequina

Virtual

Lenguaje de

Programacioacuten

Interfaces

de usuario

Gestioacuten de

memoria

IDE Plataforma de

desarrollo

Dispositivos Tienda de

Aplicaciones

Android Dalvik VM Java XML files Garbage

collector

Android

Studio

Multiplatforma Heterogeneos Google Play

Store

iOS No Objective-C Cocoa

Touch

Reference

counting

XCode Mac OS X Homogeneos iTunes Apps

Store

Windows

Phone

CLR C and Net XAML files Garbage

collector

Visual

Studio

Windows Vista7 Homogeneos Windows

Phone Store

Tabla 1 Diferencias teacutecnicas entre las plataformas Android iOS y Windows Phone

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

37

Capiacutetulo 3 Desarrollo de

Aplicaciones Moacuteviles

Multiplataforma

En los uacuteltimos antildeos el mercado de los dispositivos moacuteviles en especial

smartphones ha mostrado un crecimiento notable tanto en Argentina como en todo el

mundo En particular en nuestro paiacutes las plataformas que maacutes han crecido son Android

e iOS [1520]

Actualmente gran parte de la industria del software se concentra en desarrollar

soluciones para dispositivos moacuteviles proveyendo especialmente aplicaciones nativas

Las aplicaciones nativas tal como se mencionoacute en el capiacutetulo anterior ofrecen la

posibilidad de acceder a todas las capacidades del dispositivo (caacutemara GPS aceleroacutemetro

y agenda entre otras) su rendimiento es alto el acceso a Internet no es estrictamente

necesario y pueden ejecutarse en segundo plano notificando al usuario cuando se requiera

su atencioacuten Estas aplicaciones pueden distribuirsecomercializarse a traveacutes de las tiendas

en liacutenea correspondientes

El principal reto para los proveedores de aplicaciones es proporcionar soluciones

para todas las plataformas pero esto conlleva un alto costo [6] no es posible reusar el

coacutedigo fuente entre plataformas diferentes multiplicando esfuerzos y elevando los costos

de desarrollo actualizacioacuten y distribucioacuten de nuevas versiones

El desarrollo multiplataforma procura optimizar la relacioacuten costobeneficio

compartiendo la misma codificacioacuten entre las versiones para las distintas plataformas

Entre otras ventajas sobresalen menor tiempo y costo de desarrollo prestaciones

similares a las nativas con acceso al hardware del dispositivo y disponibilidad de

entornos potentes de desarrollo (Delphi Visual Studio etc) o en su lugar utilizacioacuten de

tecnologiacuteas (HTML5 Javascript y CSS) bien conocidas por los desarrolladores web

quienes pueden trasladar sus conocimientos y experiencias al paradigma moacutevil Sin

embargo el rendimiento de las aplicaciones y sus interfaces de usuario pueden afectar la

experiencia de usuario

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

38

Las aplicaciones multiplataforma pueden clasificarse en aplicaciones web moacuteviles

hiacutebridas interpretadas y generadas por compilacioacuten cruzada [5] En las secciones

siguientes se analizaran cada una de estas clasifcaciones

31 Aplicaciones Web Moacuteviles

Las Aplicaciones Web Moacuteviles disentildeadas para ejecutarse dentro de un navegador

se desarrollan con tecnologiacutea web estaacutendar (HTML CSS y JavaScript) y cuentan con

una serie de caracteriacutesticas favorables no necesitan adecuarse a ninguacuten entorno operativo

son independientes de la plataforma y su puesta en marcha es raacutepida y sencilla

Por contrapartida sus tiempos de respuesta decaen debido a la interaccioacuten cliente-

servidor Al mismo tiempo resultan ser menos atractivas que las aplicaciones nativas ya

que no se encuentran instaladas en el dispositivo lo que implica acceder previamente a

un navegador Ademaacutes las restricciones de seguridad impuestas a la ejecucioacuten de coacutedigo

por medio de un navegador limitan el acceso a todas las capacidades del dispositivo [23]

Asimismo no es posible desarrollar aplicaciones web que corran en segundo plano ni

tampoco aplicaciones offline ya que es requisito disponer de una conexioacuten a internet para

su funcionamiento

El proceso de desarrollo de una aplicacioacuten web moacutevil debe contemplar una serie de

caracteriacutesticas inherentes al entorno de ejecucioacuten Como ya ha sido mencionado las

aplicaciones web moacuteviles pueden ser accesibles desde cualquier dispositivo moacutevil que

cuente con un navegador y acceso a internet pero esto no significa que la navegacioacuten en

la aplicacioacuten resulte ser coacutemoda u oacuteptima Por ejemplo una aplicacioacuten web con un menuacute

compuesto de 20 iacutetems puede implicar una usabilidad correcta desde una PC Por lo

contrario para un dispositivo moacutevil con una pantalla limitada no resulta praacutectico que se

le presente al usuario tantas opciones en el menuacute Con este ejemplo lo que se pretende

mostrar es que para que una aplicacioacuten sea accesible desde diferentes dispositivos

moacuteviles posiblemente se tengan que realizar al menos dos disentildeos de presentacioacuten

diferentes un disentildeo para PC y otro disentildeo para dispositivos moacuteviles con una estructura

organizativa de la aplicacioacuten maacutes simplificada con respecto al disentildeo tradicional Por

ejemplo algunas de las funcionalidades de la aplicacioacuten para PC pueden ser eliminadas

para la versioacuten para dispositivos moacuteviles o presentadas de forma diferente

Para desarrollar diferentes presentaciones de una misma aplicacioacuten web

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

39

actualmente existen dos estrategias distintas ambas vaacutelidas seguacuten el contexto En los

siguientes apartados se analizaraacuten cada una de ellas

311 Aplicacioacuten Web dedicada y exclusiva para dispositivos moacuteviles Esta metodologiacutea ha sido el estaacutendar hasta el antildeo 2012 En ella la direccioacuten URL

y el coacutedigo HTML de la versioacuten moacutevil son distintos de la versioacuten de escritorio Por lo

general las direcciones URL tienen el formato mnombresitiocom

Algunas de las ventajas de este meacutetodo

- En general la carga es maacutes raacutepida y la navegacioacuten maacutes coacutemoda

- Es posible adaptar de manera maacutes faacutecil el contenido de las secciones

Desventajas de este meacutetodo

- Mantenimiento maacutes costoso Se debe mantener dos versiones distintas del mismo

sitio

- Dificulta el posicionamiento del sitio en los buscadores

- Estos desarrollos al final tienden a ser versiones muy reducidas de la web para

PC llevando al usuario a frustrarse y a preferir ver la versioacuten original de la web

312 Aplicacioacuten Web con Disentildeo Adaptable Con esta metodologiacutea la aplicacioacuten web se adapta al dispositivo desde el cual se la

estaacute accediendo El coacutedigo HTML y la direccioacuten URL de la aplicacioacuten son uacutenicos El

Disentildeo Adaptable o Responsive Design (Figura 12) tiene sus oriacutegenes en el antildeo 2008

cuando la W3C discutioacute y describioacute sus propoacutesitos Desde el antildeo 2012 -momento en el

cual Google recomendoacute fuertemente su implicancia [24]- viene en ascenso y

posiblemente llegue a convertirse en un standard en un corto plazo

Mediante un Disentildeo Adaptable todos los elementos de la web se reajustan en ancho

y altura adaptaacutendose al tamantildeo de tu pantalla Incluso es posible ocultar secciones cuando

se accede desde un dispositivo moacutevil

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

40

Figura 12 Disentildeo Adaptable

Las principales ventajas del desarrollo de aplicaciones web con Disentildeo Adaptable

son

- El mantenimiento es menos costoso ya que solo hay que mantener una uacutenica

versioacuten de la aplicacioacuten

- Se simplifica el proceso de posicionar la aplicacioacuten en los buscadores

Como contrapartida el Disentildeo Adaptable presenta una serie de desventajas

- Requiere de mayores niveles teacutecnicos para su desarrollo

- El contenido de las aplicaciones con Disentildeo Adaptable puede ser mayor que el

contenido de las aplicaciones web especiacuteficas para dispositivos moacuteviles

perjudicando el tiempo de carga cuando se utiliza un tipo de conexioacuten no muy

potente y generando un mayor consumo de datos

En la actualidad existe una gran cantidad de frameworks que simplifican el

desarrollo de aplicaciones web con disentildeo adaptable destacaacutendose por su popularidad y

extensa documentacioacuten los frameworks Bootstrap [25] y Foundation [26]

32 Aplicaciones Hiacutebridas

Las aplicaciones hiacutebridas utilizan tecnologiacuteas web (HTML Javascript y CSS) pero

no son ejecutadas por un navegador En su lugar se ejecutan en un contenedor web

(webview) como parte de una aplicacioacuten nativa la cual estaacute instalada en el dispositivo

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

41

moacutevil Desde una aplicacioacuten hiacutebrida es posible acceder a las capacidades del dispositivo

a traveacutes de diversas API

Las aplicaciones hiacutebridas ofrecen grandes ventajas permitiendo la reutilizacioacuten de

coacutedigo en las distintas plataformas el acceso al hardware del dispositivo y la distribucioacuten

a traveacutes de las tiendas de aplicaciones En contrapartida se observan dos desventajas de

las aplicaciones hiacutebridas respecto del caso nativo i) la experiencia de usuario se ve

perjudicada al no utilizar componentes nativos en la interfaz y ii) la ejecucioacuten se ve

ralentizada por la carga asociada al contenedor web

Afortunadamente existe una diversidad de frameworks que permiten desarrollar

aplicaciones hiacutebridas A continuacioacuten se haraacute un breve resumen de los maacutes populares

321 PhoneGap PhoneGap [27] es un framework gratuito y open source creado en el antildeo 2008 por

la empresa Nitobi Software que permite crear aplicaciones moacuteviles usando tecnologiacutea

web estaacutendar HTML JavaScript y CSS En octubre del 2011 Adobe adquiere la empresa

Nitobi y aporta el coacutedigo de PhoneGap a Apache Software Foundation para iniciar un

nuevo proyecto por encima de PhoneGap llamado Apache Cordova [28] PhoneGap pasoacute

a ser una de las varias distribuciones de Apache Cordova (Figura 13) brindando servicios

extras como por ejemplo Adobe PhoneGap Build [29] un servicio de compilacioacuten en la

nube proporcionado por Adobe Creative Cloud PhoneGap Desktop y PhoneGap

Developer

PhoneGap permite compilar aplicaciones para las siguientes plataformas Android

IOS Amazon Fire OS Windows Phone Windows 8 Ubuntu Tizen Firefox OS

Blackberry 10

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

42

Figura 13 Funcionamiento de Apache Cordova

322 CocoonJS CocoonJS [30] es un framework para el desarrollo de aplicaciones moacuteviles

producido por Ludei [31] Actualmente cuenta con una licencia propietaria y ofrece

diferente tipos de planes pagos y gratuitos El mencionado framework estaacute basado en

Apache Cordova al igual que PhoneGap pero se diferencia de este uacuteltimo en que hace

un mayor hincapieacute en la performance de las aplicaciones resultantes CocoonJS ofrece

dos tipos de webview

Canvas+ un webview liviano optimizado para video juegos Provee solo un

subconjunto de las funcionalidades del HTML5 (canvas audio motion

geolocalizacioacuten etc) necesarias para desarrollar video juegos con el objetivo de

brindar la mejor performance posible

Webview+ un potente y completo webview basado en el webview del proyecto

Chromium el cual cuenta de una mejor performance en comparacioacuten con el

webview por defecto de Apache Cordova

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

43

CocoonJs permite crear aplicaciones tanto para iOS como para Android

323 Ionic Ionic [32] es un completo SDK gratuito y open source para el desarrollo de

aplicaciones hiacutebridas producido por Max Lynch Ben Sperry y Adam Bradley de la

compantildeia Drifty Co en el antildeo 2013 En un tiempo relativamente corto alcanzoacute una

popularidad a destacar Estaacute basado en Apache Cordova permitiendo desarrollar

aplicaciones con tecnologiacutea web A diferencia de otros frameworks para el desarrollo de

aplicaciones hibridas Ionic provee un framework para la interfaz de usuario y

herramientas visuales para disentildear interfaces

Mediante Ionic es posible crear aplicaciones para Android IOS Windows Phone y

Firefox OS

324 Sencha Touch Sencha Touch [33] es un framework gratuito Model-View-Controller (MVC)

JavaScript construido sobre el sistema de clases de Ext JS disentildeado especialmente para

el desarrollo de aplicaciones web moacuteviles para dispositivos taacutectiles [34]

Al igual que PhoneGap Sencha Touch permite a los desarrolladores crear

aplicaciones moacuteviles a partir de un desarrollo web con HTML5 CSS y Javascript A

diferencia de PhoneGap Sencha no necesita de ninguna libreriacutea de terceros para construir

interfaces similares a las nativas ya que el framework provee consigo una gran cantidad

de componentes visuales listos para utilizar

Sencha empaqueta el coacutedigo del proyecto mediante PhoneGap para luego poder

construir aplicaciones en todas las plataformas soportadas por PhoneGap

33 Aplicaciones Interpretadas

Las aplicaciones interpretadas son implementadas utilizando un lenguaje base el

cual se traduce en su mayor parte a coacutedigo nativo mientras el resto es interpretado en

tiempo de ejecucioacuten Estas aplicaciones son implementadas de manera independiente de

las plataformas utilizando diversas tecnologiacuteas y lenguajes tales como Javascript Java

Ruby y XML entre otros

Una de las principales ventajas de este tipo de aplicaciones es que se obtienen

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

44

interfaces de usuario totalmente nativas Sin embargo los desarrolladores experimentan

una dependencia total con el entorno de desarrollo elegido

Seguidamente se presentaran algunos de frameworks maacutes reconocidos para el

desarrollo de aplicaciones interpretadas

331 Appcelerator Titanium Desarrollado por Appcelerator Inc Appcelerator Titanium [35] es un framework

de coacutedigo abierto que permite la creacioacuten de aplicaciones moacuteviles para las plataformas

iOS y Android Dicho framework estaacute formado por Titanium Studio un entorno de

desarrollo de coacutedigo libre para la codificacioacuten de aplicaciones moacuteviles multiplataforma

y el SDK Titanium una serie de herramientas para el desarrollo testeo anaacutelisis

depuracioacuten y compilacioacuten de aplicaciones

Las aplicaciones desarrolladas con Appcelerator Titanium se codifican utilizando

el lenguaje Javascript el cual es evaluado en tiempo de ejecucioacuten mediante un inteacuterprete

de Javascript que se ejecuta en el sistema operativo del dispositivo Al iniciar la

aplicacioacuten desde el coacutedigo nativo se ejecuta el coacutedigo Javascript y mediante la API de

Titanium se mapea uno-a-uno cada elemento del coacutedigo Javascript con los elementos

nativos De esta manera la API de Titanium actuacutea como puente logrando interfaces de

usuario compuestas de controles nativos Este entorno de desarrollo utiliza el framework

Alloy disentildeado para el desarrollo aacutegil de aplicaciones moacuteviles Alloy estaacute basado en la

arquitectura MVC y soporta el uso de tecnologiacuteas populares como Backbonejs [36] y

Underscorejs [37]

Los creadores de Titanium destacan que mediante este framework es posible

reutilizar entre el 60 y 90 del coacutedigo entre distintas plataformas

332 NativeScript El 5 de marzo del 2015 la empresa Telerik lanzoacute NativeScript [38] un proyecto de

coacutedigo abierto el cual permite generar aplicaciones nativas utilizando JavaScript

Asimismo es posible desarrollar la aplicacioacuten utilizando el lenguaje TypeScript [39]

lenguaje libre y de coacutedigo abierto desarrollado por Microsoft que extiende a JavaScript

esencialmente antildeadiendo tipado estaacutetico y objetos basados en clases En este sentido

cuando se compila la aplicacioacuten se realiza la traduccioacuten del coacutedigo TypeScript a coacutedigo

JavaScript

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

45

NativeScript provee un moacutedulo multiplataforma que permite obtener aplicaciones

nativas desde coacutedigo JavaScript Este moacutedulo expone las capacidades del dispositivo y

de la plataforma subyacente de una manera consistente y permite accederlas desde el

coacutedigo JavaScript De igual manera las interfaces de usuario pueden ser definidas

mediante coacutedigo JavaScript documentos HTML y archivos CSS abstrayeacutendose de los

componentes nativos reales

Cuando la aplicacioacuten es compilada parte del coacutedigo multiplataforma es traducido

a coacutedigo nativo mientras que el resto es interpretado en tiempo de ejecucioacuten (Figura 14)

Por el momento NativeScript permite generar aplicaciones para Android e iOS y

se preveacute dar soporte a Windows Phone NativeScript renderiza controles nativos sin

utilizar WebViews logrando una performance y experiencia de usuario similar al de las

aplicaciones nativas

Figura 14 Proceso de interpretacioacuten mediante NativeScript

34 Aplicaciones Generadas por Compilacioacuten Cruzada

Estas aplicaciones se compilan de manera nativa creando una versioacuten especiacutefica de

alto rendimiento para cada plataforma destino Ejemplos de entornos de desarrollo para

generar aplicaciones por compilacioacuten cruzada son Applause [40] Xamarin [41]

Embarcadero Delphi 10 Seattle [42] y RubyMotion [43]

El entorno de desarrollo abierto Applause utiliza como entrada un lenguaje

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

46

especiacutefico del dominio basado en el framework Xtext [44] disentildeado expliacutecitamente para

aplicaciones moacuteviles orientadas a datos y genera coacutedigo fuente en Objective C Java C

o Python Las caracteriacutesticas de Xamarin Embarcadero Delphi 10 Seattle y RubyMotion

se presentan en secciones posteriores

341 Xamarin Xamarin es una plataforma de desarrollo de aplicaciones moacuteviles para generar

aplicaciones 100 nativas para iOS Android y Windows a partir de una base de coacutedigo

CNET comuacuten para conseguir entre un 75 y hasta casi un 100 de reutilizacioacuten de

coacutedigo entre plataformas Las aplicaciones escritas con Xamarin y C disponen de acceso

completo a las API de la plataforma subyacente asiacute como de la capacidad de crear

interfaces de usuario nativas y de realizar la compilacioacuten en coacutedigo nativo por lo que el

impacto en el rendimiento en tiempo de ejecucioacuten es escaso

Xamarin es una compantildeiacutea que se establecioacute en mayo de 2011 por los mismos

ingenieros que crearon el proyecto Mono [45] consistente en una implementacioacuten libre

de la plataforma de desarrollo NET para dispositivos Android iOS y GNULinux

Anteriormente este proyecto se llamaba MonoTouch y MonoDroid

Si bien Xamarin cuenta con su propio IDE denominado Xamarin Studio (Figura

15) es posible integrarlo con Microsoft Visual Studio y de esta manera generar tambieacuten

aplicaciones para Windows incluido Windows RT para tablets y Windows Phone para

celulares

En febrero del 2016 Xamarin es comprada por Microsoft y desde ese momento la

plataforma Xamarin y el IDE Xamarin Studio pasaron a ser gratuitas

Xamarin propone un enfoque de desarrollo multiplataforma en el que se comparte

la codificacioacuten completa de la loacutegica del negocio Sin embargo las interfaces deben ser

programadas de manera independiente para cada una de las plataformas destino Asiacute la

reutilizacioacuten de coacutedigo seguacuten estudios estadiacutesticos de la compantildeiacutea Xamarin es cercana

al 85

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

47

Figura 15 Entorno de Desarrollo Xamarin Studio

342 Embarcadero Delphi 10 Seattle Embarcadero Delphi 10 Seattle [42] es una plataforma de desarrollo propietaria y

no gratuita que permite a los desarrolladores crear aplicaciones raacutepidamente a traveacutes de

un entorno visual coacutemodo e intuitivo (Figura 16) La aplicacioacuten desarrollada puede ser

compilada para muacuteltiples plataformas incluyendo Windows Mac Android e iOS

Delphi 10 Seattle al igual que Xamarin aventaja a otros tipos de aplicaciones

multiplataformas con resultados 100 nativos con acceso total a los sensores y

capacidades del dispositivo (caacutemara notificaciones GPS aceleroacutemetro entre otras)

Un punto a destacar es que Delphi 10 Seattle a traveacutes del framework de interfaces

de usuario FireUI Multi-Device Designer permite crear interfaces de usuario totalmente

nativas sin la necesidad de tener que disentildear interfaces especiacuteficas para cada plataforma

en particular

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

48

Figura 16 Entorno de Desarrollo Delphi 10 Seattle

343 RubyMotion En Mayo de 2012 la empresa HipByte lanza RubyMontion un proyecto que

permite generar aplicaciones para iOS Android y OS X utilizando el lenguaje de

programacioacuten Ruby

Para poder generar las aplicaciones multiplataforma RubyMotion posee

implementaciones de Ruby sobre los sistemas operativos destinos (Android e iOS) que

permiten acceder a todas las caracteriacutesticas provistas por cada plataforma Las

herramientas de compilacioacuten provistas por RubyMotion se encargan de embeber la

correspondiente implementacioacuten de Ruby al momento de compilar para cada plataforma

La principal desventaja de RubyMotion es que soacutelo funciona bajo el sistema

operativo OS X Otro factor a tener en cuenta es que no posee un entorno de desarrollo

integrado que facilite todo el proceso al desarrollador esto se ve solventado gracias a que

ofrece complementos para los IDE y editores de coacutedigo maacutes utilizados

Finalmente si bien el producto es un servicio pago ofrece una posibilidad de

probarlo gratuitamente aunque con soporte uacutenicamente para compilar a la uacuteltima versioacuten

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

49

de cada plataforma destino

Capiacutetulo 4 Experimentacioacuten

50

Capiacutetulo 4 Experimentacioacuten

Con el objetivo de profundizar la investigacioacuten de las diferentes metodologiacuteas de

desarrollo de aplicaciones moacuteviles multiplataforma es que se llevaron a cabo diferentes

experimentos en simultaacuteneo El primer experimento consiste en el desarrollo de una

aplicacioacuten moacutevil utilizando cada una de las metodologiacuteas estudiadas en el capiacutetulo

anterior con el objetivo de analizar el proceso de desarrollo El segundo experimento

tiene como objetivo analizar el rendimiento de las aplicaciones moacuteviles generadas

mediante las metodologiacuteas estudiadas a traveacutes de un caacutelculo matemaacutetico Por uacuteltimo se

presenta un informe comparativo que pueda ayudar en la toma de decisiones sobre queacute

metodologiacutea utilizar en futuros desarrollos

41 Aplicacioacuten Moacutevil para la plataforma de E-Learning WebUNLP

411 Descripcioacuten del problema WebUNLP es un entorno virtual de ensentildeanza y aprendizaje que permite a los

docentes mediar sus propuestas educativas Alumnos y docentes pueden encontrarse en

ese espacio para compartir materiales de estudio comunicarse y generar una experiencia

educativa en forma virtual [46]

Actualmente WebUNLP cuenta con una versioacuten web enfocada a computadoras de

escritorio o portaacutetiles pero no estaacute adaptada para ser utilizada desde dispositivos moacuteviles

El desarrollo planteado consiste en extender WebUNLP con la construccioacuten de una

aplicacioacuten moacutevil que permita acceder a determinadas funcionalidades del sistema a

traveacutes de un dispositivo moacutevil El enfoque propuesto incluye un anaacutelisis de la misma

solucioacuten comparando el desarrollo nativo web hiacutebrido interpretado y de compilacioacuten

cruzada a fin de establecer cuaacutel de ellos es conveniente

Como ocurre con cualquier desarrollo de software la construccioacuten de una

aplicacioacuten moacutevil implica tener claramente definido su propoacutesito y cuaacuteles requerimientos

debe cumplir En particular para el caso de software para dispositivos moacuteviles resulta

esencial tener objetivos maacutes acotados que en su versioacuten de escritorio [47]

Capiacutetulo 4 Experimentacioacuten

51

Para el caso especiacutefico de WebUNLP se realizoacute el desarrollo incremental de una

aplicacioacuten moacutevil y esta primera versioacuten se enfocoacute en una de sus herramientas de

comunicacioacuten la cartelera Esta herramienta permite comunicar las novedades de un

curso como por ejemplo el cambio de horario de una cursada recordar las fechas de

entrega de un trabajo praacutectico entre otras [46]

412 Anaacutelisis Uno de los primeros interrogantes planteados fue la eleccioacuten de la plataforma En

teacuterminos de mercado los sistemas operativos que predominan en Argentina son Android

e iOS [4815] con lo cual se decidioacute dar soporte a estos dos sistemas operativos

Se analizaron los requerimientos funcionales y no funcionales de forma aislada a la

plataforma y luego de forma especiacutefica para cada una de ellas

A continuacioacuten se presentan algunos requerimientos a cumplir por la aplicacioacuten

El usuario debe poder ingresar a la aplicacioacuten con las mismas credenciales que las

utilizadas para acceder a la versioacuten web de escritorio

El usuario debe poder acceder a la cartelera de todos los cursos en los que

participa ya sea como docente o alumno

El usuario debe recibir una notificacioacuten en su dispositivo cuando una novedad es

publicada en la cartelera Este requerimiento no se puede cumplir en la versioacuten

web accesible desde computadoras de escritorio yo portables

El usuario debe tener la misma experiencia de uso en todas las plataformas

operativas

La aplicacioacuten web existente debe estar sincronizada con la aplicacioacuten moacutevil a

desarrollar esto significa que cualquier cambio realizado desde la aplicacioacuten

moacutevil debe verse reflejado en la versioacuten web y viceversa

413 Disentildeo Para satisfacer los requerimientos planteados en el punto anterior a excepcioacuten de

la notificacioacuten el disentildeo de la aplicacioacuten moacutevil web consiste en una reacuteplica de lo ofrecido

por WEBUNLP adaptaacutendose solamente la interfaz al tamantildeo de pantalla del dispositivo

moacutevil

Capiacutetulo 4 Experimentacioacuten

52

Para el disentildeo de las aplicaciones moacuteviles nativa hiacutebrida interpretada y de

compilacioacuten cruzada la situacioacuten es maacutes compleja En la Figura 17 se presenta la

arquitectura geneacuterica de todos los componentes que participan en este escenario de

desarrollo En ella se observa el acceso desde una PC a WebUNLP y el acceso desde

dispositivos moacuteviles a la informacioacuten de WebUNLP mediante servicios web Para el

desarrollo de los servicios web se disentildeoacute una API Restful dada su simpleza escalabilidad

e interoperabilidad [49]

Figura 17 Arquitectura geneacuterica para aplicacioacuten nativa e hiacutebrida

Asimismo existe una tarea programada (Cron) de ejecucioacuten intermitente a

intervalos regulares de tiempo la cual notifica a los dispositivos moacuteviles correspondientes

cuando se crea una novedad en la cartelera de WebUNLP El Cron identifica el sistema

operativo del dispositivo a notificar y genera dicha notificacioacuten

En cuanto a la interfaz graacutefica se planteoacute un disentildeo independiente de la plataforma

para analizar los aspectos de usabilidad de la aplicacioacuten y luego se realizaron los ajustes

necesarios para cada tipo de aplicacioacuten

En las interfaces disentildeadas la navegacioacuten es en serie en el orden en que se presentan

en el mockup [50] de la Figura 18

Capiacutetulo 4 Experimentacioacuten

53

Figura 18 Mockup independiente del tipo de aplicacioacuten

414 Desarrollo

4141 Aplicacioacuten Nativa para Android

El desarrollo de aplicaciones para la plataforma Android requiere disponer del Java

Development Kit (JDK) y su entorno de programacioacuten conocido como Android SDK

Este uacuteltimo provee libreriacuteas y herramientas necesarias para construir testear y depurar

aplicaciones para Android

El desarrollo de la aplicacioacuten de WebUNLP para Android se realizoacute seguacuten las

convenciones adoptadas por su comunidad porque aplica buenas praacutecticas en la

construccioacuten de interfaces y de la loacutegica detraacutes de ellas el acceso a datos y a servicios

web Para cumplir el requerimiento de las notificaciones en el dispositivo

correspondiente el Cron genera la notificacioacuten mediante el uso del servicio Google Cloud

Messaging (GCM) [51] En la Figura 19 se presentan las interfaces de la aplicacioacuten

desarrollada

Figura 19 Aplicacioacuten nativa para Android

Capiacutetulo 4 Experimentacioacuten

54

4142 Aplicacioacuten Nativa para iOS

La plataforma Apple iOS estaacute basada en un modelo propietario es por ello que el

desarrollo de una aplicacioacuten nativa iOS implica contar con una Apple Mac ejecutando OS

X con Xcode instalado El lenguaje de programacioacuten principal es Objective C Xcode es

el entorno de desarrollo de Apple para todos sus dispositivos y es el encargado de

proporcionar el iOS SDK con las herramientas compiladores y frameworks necesarios

Ademaacutes Xcode viene integrado con simuladores para dispositivos iOS (iPhones y iPads)

que facilitan las etapas de prueba del sistema desarrollado

Para los aspectos referentes a la interfaz graacutefica y la interaccioacuten con el usuario se

siguieron las convenciones propuestas por Apple [52] para lograr una mejor integracioacuten

de la aplicacioacuten con el sistema operativo y mejorar la experiencia del usuario

Por uacuteltimo para satisfacer el requerimiento de notificaciones el Cron notifica al

dispositivo iOS correspondiente mediante el uso del servicio Apple Push Notification

Service (APNs) [53] En la Figura 20 se presentan las interfaces de la aplicacioacuten

desarrollada

Figura 20 Aplicacioacuten nativa para iOS

4143 Aplicacioacuten Web Moacutevil

Se desarrolloacute una aplicacioacuten web capaz de acceder a la cartelera de WebUNLP

disponible para cualquier dispositivo moacutevil que cuente con un navegador que soporte las

caracteriacutesticas utilizadas para el desarrollo HTML5 CSS3 y Javascript

Como la velocidad de transmisioacutenrecepcioacuten de datos de un dispositivo moacutevil a

traveacutes de WiFi y en particular 3G es inferior a la velocidad de una computadora de

Capiacutetulo 4 Experimentacioacuten

55

escritorio la versioacuten web de la cartelera de WebUNLP es liviana y gran parte de los

requerimientos son implementados a traveacutes de Ajax [54] para evitar ante alguacuten cambio

la recarga de la paacutegina completa

Debido a las limitaciones que tienen las aplicaciones que se ejecutan sobre un

navegador no es posible implementar la recepcioacuten de una notificacioacuten en el dispositivo

cuando una novedad es publicada en la cartelera

4144 Aplicacioacuten Hiacutebrida desarrollada con PhoneGap y Jquery Mobile

Para la construccioacuten de la aplicacioacuten WebUNLP hiacutebrida se utilizoacute el framework

PhoneGap [27] el cual permite desarrollar aplicaciones moacuteviles que utiliza tecnologiacuteas

comunes a todos los dispositivos HTML5 CSS y Javascript

Asimismo se utilizoacute el framework Javascript Jquery Mobile [55] para lograr

interfaces con apariencia y comportamiento consistente a traveacutes de las diferentes

plataformas moacuteviles

Con el objetivo de implementar el patroacuten de disentildeo MVC se utilizoacute la libreriacutea

Backbonejs [36]

Por uacuteltimo para satisfacer el requerimiento de notificaciones se utilizoacute el plugin

Pushwoosh [56]

En la figura 5 se presentan las interfaces de la aplicacioacuten desarrollada

Figura 21 Aplicacioacuten hiacutebrida desarrollada con PhoneGap

Capiacutetulo 4 Experimentacioacuten

56

4145 Aplicacioacuten Hiacutebrida desarrollada con Sencha Touch

El desarrollo de WebUNLP utilizando Sencha Touch se vio favorecido por el uso

del patroacuten de disentildeo MVC Esto permitioacute mayor flexibilidad y legibilidad en el coacutedigo

[57] [34]

Sencha ofrece Sencha Command una herramienta multiplataforma de liacutenea de

comandos que provee tareas automatizadas para todo el ciclo completo de una aplicacioacuten

En el caso de WebUNLP se utilizoacute tanto para la generacioacuten del proyecto como para el

empaquetado de la aplicacioacuten

En la Figura 22 se presentan las interfaces de la aplicacioacuten desarrollada

Figura 22 Aplicacioacuten desarrollada con Sencha Touch

4146 Aplicacioacuten Interpretada de WebUNLP con Appcelerator Titanium 3

Para desarrollar una aplicacioacuten moacutevil experimental seguacuten el enfoque interpretado

se utilizoacute el entorno de desarrollo gratuito y open source Appcelerator Titanium 3 [35]

Se destaca la simplicidad y legibilidad de los controladores y modelos de la

aplicacioacuten desarrollada luego de utilizar Alloy el framework de Titanium que permite

disentildear aplicaciones seguacuten el patroacuten de disentildeo MVC Para la construccioacuten de las vistas se

puede optar por la programacioacuten mediante Javascript y la API de Titanium o bien por

una especificacioacuten XML con estilos TSS (Titanium Style Sheets) Esta uacuteltima opcioacuten

simplifica el proceso de creacioacuten de las vistas aunque falta todaviacutea un buen editor visual

de interfaces que lo potencie

Capiacutetulo 4 Experimentacioacuten

57

Para cubrir requerimientos de notificaciones en el dispositivo Titanium provee el

moacutedulo PushNotifications para plataformas Android e iOS

La Figura 24 (a) muestra la experimentacioacuten con Titanium

4147 Aplicacioacuten Generada por Compilacioacuten Cruzada de WebUNLP utilizando XamarinVisual Studio

Tal como se mencionoacute en la seccioacuten 341 Xamarin propone un enfoque de

desarrollo multiplataforma en el que se comparte la codificacioacuten completa de la loacutegica

del negocio Sin embargo las interfaces deben ser programadas de manera independiente

para cada una de las plataformas destino (ver Figura 23) Asiacute la reutilizacioacuten de coacutedigo

seguacuten estudios estadiacutesticos de la compantildeiacutea Xamarin es cercana al 85

Figura 23 Enfoque uacutenico de desarrollo Xamarin

Para el estudio de las aplicaciones generadas por compilacioacuten cruzada se desarrolloacute

la aplicacioacuten moacutevil de WebUNLP utilizando Xamarin integrado con Microsoft Visual

Studio Siguiendo la estrategia maacutes eficiente para trabajar en este entorno se ha creado

una solucioacuten uacutenica conteniendo tres proyectos distintos Uno de ellos se utilizoacute para

generar la aplicacioacuten Android otro para la aplicacioacuten Windwos Phone 8 y el tercero para

la implementacioacuten de una biblioteca de clases portable (PCL por sus siglas en ingleacutes) con

todo el coacutedigo compartido Los tres proyectos fueron desarrollaacutendose de manera conjunta

y concurrente

Aunque una de las ventajas maacutes importantes de Xamarin es la reutilizacioacuten de

coacutedigo eacutesta se ve fuertemente afectada por el tipo de aplicacioacuten que se desarrolla La

relacioacuten existente entre la complejidad de la interfaz y la loacutegica del negocio impacta

directamente sobre la posibilidad de mantener la mayor cantidad de coacutedigo compartido

Capiacutetulo 4 Experimentacioacuten

58

en la PCL En el desarrollo de WebUNLP la reutilizacioacuten de coacutedigo ha sido cercana al

50 Sin embargo no debe despreciarse la ventaja de utilizar el mismo lenguaje entorno

y conjunto de herramientas comunes en el desarrollo de aplicaciones para distintas

plataformas moacuteviles

La Figura 24 (b) presenta la interfaz desarrollada para Windows Phone 8

4148 Aplicacioacuten Generada por Compilacioacuten Cruzada de WebUNLP utilizando Delphi 10 Seattle

Para el profundizar el estudio de las aplicaciones generadas por compilacioacuten

cruzada ademaacutes se desarrolloacute la aplicacioacuten moacutevil de WebUNLP utilizando Delphi 10

Seattle En particular fueron de gran utilidad tanto los componentes provistos por Delphi

para acceder a servicios RESTful como el entorno visual de desarrollo de Delphi 10

Seattle

Para la recepcioacuten de notificaciones en el dispositivo de las novedades de WebUNLP

se utilizoacute el componente TPushEvent conectado al servicio Kinvey [58]

La Figura 24 (c) presenta la interfaz de la aplicacioacuten desarrollada

(a) (b) (c)

Figura 24 Aplicacioacuten desarrollada con a) Titanium b) XamarinVisual Studio y c) Delphi XE

415 Conclusiones del experimento WebUNLP Seleccionar un dominio para desarrollar un caso experimental tiene sus

particularidades La novedad de disponer una aplicacioacuten moacutevil no es motivo suficiente

que justifique tal desarrollo Es necesario satisfacer un conjunto de requerimientos

claramente planteados

Capiacutetulo 4 Experimentacioacuten

59

WebUNLP es un entorno virtual de ensentildeanza y aprendizaje utilizado por diversos

cursos de grado y postgrado de la Universidad Nacional de La Plata Por ende la cantidad

de usuarios beneficiados por acceder desde cualquier lugar a este entorno es importante

De esta manera se optoacute por elegir dicho espacio virtual para ser replicado en una

versioacuten moacutevil que no soacutelo permita acercarlo a sus usuarios sino que ademaacutes ampliacutee sus

funciones en este caso puntualmente para la cartelera

Para el desarrollo de esta experimentacioacuten se desarrolloacute la misma aplicacioacuten para

los cinco tipos de enfoques de desarrollo moacutevil (web nativa hiacutebrida interpretada y

generada por compilacioacuten cruzada)

Se destaca la gran simpleza de generar la versioacuten web dado que se utilizan las

mismas herramientas tecnoloacutegicas que las usadas para el desarrollo de cualquier

aplicacioacuten web tradicional La principal diferencia en este sentido radica en la limitacioacuten

de espacio en la pantalla del dispositivo No obstante el mayor contraste estaacute dado en que

no es posible acceder a todas las capacidades de hardware del dispositivo lo que impidioacute

implementar uno de los requerimientos probablemente el maacutes interesante la notificacioacuten

de novedades de la cartelera de WebUNLP al usuario

Por otra parte las versiones nativas han cumplido todos los requerimientos Aunque

la mayor desventaja consiste en la no portabilidad lo que implicoacute un desarrollo especiacutefico

para la plataforma que se desee cubrir En este trabajo se han presentado los desarrollos

para Android e iOS sistemas operativos maacutes usados en Argentina con un costo de

desarrollo y mantenimiento inherente mayor

Para el caso del enfoque hiacutebrido tanto la versioacuten de WebUNLP desarrollada con

PhoneGap y Jquery Mobile como la versioacuten desarrollada con Sencha Touch han logrado

conjugar la simpleza del desarrollo web con el uso de todas las capacidades del

dispositivo Este tipo de enfoque pretende suplir las desventajas de los dos enfoques

previos hecho que lo posiciona como una eleccioacuten realmente interesante siempre

condicionada por los requerimientos especiacuteficos a cumplir

Por el lado del modo de desarrollo interpretado la versioacuten de WebUNLP

desarrollada con Titanium logroacute resolver todos los requerimientos previamente

planteados Al igual que en el enfoque hiacutebrido es un punto a destacar que el desarrollo

de la aplicacioacuten con Titanium es relativamente simple y es posible reutilizar todo el

Capiacutetulo 4 Experimentacioacuten

60

coacutedigo entre plataformas Lo que lo hace la eleccioacuten prima facie es el hecho de obtener

interfaces totalmente nativas algo que no se lograba mediante el enfoque hiacutebrido

Por uacuteltimo las versiones de WebUNLP generadas con el enfoque de compilacioacuten

cruzada con Xamarin y Delphi lograron cumplir los requerimientos planteados Se

destaca el hecho de que se genera interfaces totalmente nativas pero considero que el

costo es muy alto se debe disentildear las interfaces para cada plataforma de manera

independiente lo que hace que no se pueda reutilizar todo el coacutedigo fuente de la

aplicacioacuten

42 Enfoques de desarrollo Anaacutelisis comparativo de rendimiento 421 Descripcioacuten del Problema

Hace apenas unas deacutecadas atraacutes el uso de los sistemas de software estaba

restringido a un grupo reducido de usuarios especializados Aquella eacutepoca contrasta

fuertemente con la actualidad en la que los smartphones pequentildeas computadoras moacuteviles

de propoacutesito general se han vuelto cotidianos y omnipresentes Estos dispositivos pueden

utilizarse para llevar a cabo tareas complejas y criacuteticas requiriendo la mejora continua de

las capacidades de coacutemputo la disponibilidad el rendimiento eficiente entre otras

necesidades La evolucioacuten vertiginosa de esta tecnologiacutea ejerce presioacuten en la adaptacioacuten

de la Ingenieriacutea de Software

Respecto del desarrollo para dispositivos moacuteviles se debe considerar una serie de

caracteriacutesticas propias de esta actividad que no estaban presentes en el desarrollo

tradicional de software [59] Es necesario tener en cuenta sobre queacute tipo de dispositivos

se debe ejecutar la aplicacioacuten a construir La diversidad de plataformas lenguajes de

programacioacuten herramientas de desarrollo estaacutendares protocolos y tecnologiacuteas de red

algunas limitaciones de ciertos dispositivos y las exigencias de tiempo del mercado entre

otros constituyen algunos de los problemas a tratar

En la mayoriacutea de los casos el eacutexito de un producto de software para dispositivos

moacuteviles estaraacute condicionado por el nivel de popularidad que logre alcanzar Para

maximizar su presencia en el mercado es necesario que la aplicacioacuten pueda ejecutarse

sobre la mayor cantidad de plataformas moacuteviles existentes especialmente sobre las dos

maacutes populares Android e iOS [60] Para lograr este objetivo existen dos alternativas

Capiacutetulo 4 Experimentacioacuten

61

i) Desarrollar aplicaciones especiacuteficas para cada plataforma impulsando en

paralelo varios proyectos de desarrollo con las herramientas y lenguajes propios de cada

una de ellas Estas aplicaciones analizadas previamente en este trabajo se denominan

aplicaciones nativas

ii) Generar aplicaciones que puedan ejecutarse en forma directa sobre maacutes de una

plataforma de sistema operativo a partir de un uacutenico proyecto de desarrollo Estas

aplicaciones como ya se ha presentado en este trabajo se denominan aplicaciones

multiplataforma

En los uacuteltimos antildeos se ha incrementado el intereacutes de la comunidad de Ingenieriacutea de

Software por el estudio del desarrollo de aplicaciones multiplataforma para dispositivos

moacuteviles

En [5] se presenta un anaacutelisis comparativo de enfoques de desarrollo de aplicaciones

multiplataforma para dispositivos moacuteviles proponiendo la siguiente taxonomiacutea

aplicaciones web moacuteviles aplicaciones hiacutebridas aplicaciones interpretadas y

aplicaciones generadas por compilacioacuten cruzada

En [7] y [8] se analizan aspectos generales de frameworks de desarrollo

multiplataforma para dispositivos moacuteviles

En [61] se comparan aspectos no funcionales para los diferentes enfoques de

desarrollo de aplicaciones multiplataforma para dispositivos moacuteviles

En [9] se analizaron ventajas y desventajas de los enfoques de desarrollo

multiplataforma mencionados desde el punto de vista del Ingeniero de Software

La eleccioacuten del modo de desarrollo de aplicaciones para dispositivos moacuteviles

depende de varios factores Uno de ellos en muchos casos esencial es el tiempo de

ejecucioacuten El intereacutes por optimizar el tiempo de ejecucioacuten de una aplicacioacuten de software

es intriacutenseco a la disciplina informaacutetica Esto se evidencia entre otras cosas por la

evolucioacuten del poder de coacutemputo de los procesadores Ademaacutes el rendimiento eficiente

es uno de los atributos que las aplicaciones de software deben satisfacer seguacuten diversos

estaacutendares de calidad entre otros ISOIEC 9126 e ISOIEC 25010 [62]

En lo que respecta al desarrollo de aplicaciones para dispositivos moacuteviles es

oportuno considerar el tiempo de ejecucioacuten de las aplicaciones por diversos motivos

El tiempo de ejecucioacuten de una aplicacioacuten estaacute fuertemente ligado al consumo de

Capiacutetulo 4 Experimentacioacuten

62

energiacutea [63] el cual estaacute limitado por la capacidad de la bateriacutea de los dispositivos

Asimismo el rendimiento de las aplicaciones se ve reflejado principalmente

mediante las calificaciones de los usuarios en las tiendas de aplicaciones en liacutenea

Aplicaciones con bajo rendimiento pueden implicar usuarios disconformes produciendo

publicidad negativa [60] Andre Charland y Brian Leroux identifican al tiempo de

ejecucioacuten como uno de los problemas principales a resolver en el desarrollo de

aplicaciones multiplataforma y afirman que a los usuarios finales les preocupa la calidad

del software y la experiencia de uso [64]

Corral Sillitti y Succi realizaron un anaacutelisis de rendimiento comparativo entre

aplicaciones nativas y aplicaciones hiacutebridas utilizando el framework Phonegap para una

versioacuten del sistema operativo Android [65]

Es importante destacar que no se han encontrado estudios que evaluacuteen y comparen

el rendimiento entre los diversos modos de desarrollo multiplataforma de acuerdo a la

taxonomiacutea propuesta en [5] aplicaciones web moacuteviles aplicaciones hiacutebridas

aplicaciones interpretadas y aplicaciones generadas por compilacioacuten cruzada Esta

taxonomiacutea es la que se utiliza de referencia en este trabajo

El presente apartado realiza un anaacutelisis comparativo de rendimiento de aplicaciones

para dispositivos moacuteviles generadas por el enfoque de desarrollo nativo y los distintos

enfoques de desarrollo multiplataforma seguacuten [5]

En la seccioacuten siguiente se describe el experimento utilizado para evaluar tiempos

de ejecucioacuten en aplicaciones nativas y en los diversos modos de desarrollo de aplicaciones

moacuteviles multiplataforma y en las secciones posteriores se muestran y analizan los

resultados obtenidos se presentan las conclusiones y el trabajo futuro

422 Desarrollo

4221 Disentildeo de las pruebas

Todas las pruebas cuyos resultados se presentan en este trabajo fueron realizadas

sobre dispositivos moacuteviles con sistemas operativos Android e iOS dado que en la

actualidad abarcan gran parte del mercado mundial de acuerdo a lo indicado en [60]

Para llevar a cabo la experimentacioacuten se seleccionaron los frameworks de desarrollo

multiplataforma seguacuten las alternativas presentadas en [10] Se disentildearon pruebas para

evaluar el rendimiento de Apache Cordova [28] Appcelerator Titanium [35] y Xamarin

Capiacutetulo 4 Experimentacioacuten

63

[41] que se corresponden con los modos de desarrollo hiacutebrido interpretado y compilacioacuten

cruzada respectivamente Tambieacuten se experimentoacute con otros dos frameworks de

desarrollo multiplataforma que recientemente han ganado popularidad NativeScript

(desarrollo interpretado) y Corona (compilacioacuten cruzada) Finalmente se incluyeron al

conjunto de pruebas las aplicaciones web y el enfoque nativo de desarrollo para Android

e iOS De este modo se logroacute una muestra razonablemente representativa de las diversas

opciones existentes en la actualidad

Para la realizacioacuten de las pruebas se utilizaron seis dispositivos moacuteviles distintos

(ver Tabla 2) tres de ellos con sistema operativo Android identificados como DA1 DA2 y

DA3 (dos smartphone y una tablet) y tres con sistema operativo iOS identificados como

DI1 DI2 y DI3 (dos smartphone y una tablet)

ID Sistema Operativo Caracteriacutesticas

DA1 Android 44

Tipo Smartphone Marca Motorola

Modelo Moto-G2 Procesador Quad-core 12 GHz Cortex-A7

RAM 1GB Snapdragon 400

DA2 Android 502

Tipo Smartphone Marca Samsung

Modelo S6 Procesador Octa-core (4x21 GHz Cortex-A57 amp 4x15

GHz Cortex-A53) RAM 3GB Exynos 7420 Octa

DA3 Android 422

Tipo Tablet Marca Samsung Modelo Tab 2

Procesador Dual-core 10 GHz RAM 1GB TI OMAP 4430

DI1 iOS 92

Tipo Smartphone Marca Apple Modelo 5S

Procesador Dual-core 13 GHz Cyclone (ARM v8-based)

RAM 1GB Apple A7

DI2 iOS 91

Tipo Smartphone Marca Apple

Modelo 6 plus Procesador Dual-core 14 GHz Typhoon (ARM v8-

based) RAM 1GB Apple A8

DI3 iOS 91 Tipo Tablet

Marca Apple Modelo Ipad Air

Capiacutetulo 4 Experimentacioacuten

64

Procesador Dual-core 13 GHz Cyclone (ARM v8-based)

RAM 1GB Apple A7 Tabla 2 Dispositivos moacuteviles utilizados en el experimento

Se definieron siete escenarios de anaacutelisis distintos uno por cada estrategia de

desarrollo utilizada

1 Nativo para Android y nativo para iOS 2 Aplicaciones web (multiplataforma) 3 Apache Cordova (multiplataforma hibrido) 4 Appcelerator Titanium (multiplataforma interpretado) 5 NativeScript (multiplataforma interpretado) 6 Xamarin (multiplataforma compilacioacuten cruzada) 7 Corona (multiplataforma compilacioacuten cruzada)

En los seis dispositivos se llevaron a cabo pruebas para cada uno de los siete

escenarios mencionados definiendo asiacute un total de 42 casos de prueba

Con el fin de evaluar la velocidad de procesamiento se planteoacute un caacutelculo simple

que incluyoacute varias iteraciones funciones matemaacuteticas y aritmeacutetica de punto flotante que

se resume en la siguiente serie

119904119890119903119894119890 =sum sum (log2(119896) +3119896

2119895+ radic119896

100000

119896=1

+ 119896119895minus1)

5

119895=1

A modo de ejemplo en la Figura 25 se muestra el coacutedigo multiplataforma

desarrollado en Apache Cordova para el caacutelculo de la serie definida

El experimento planteado permite medir con precisioacuten la variable analizada en este

caso el tiempo de ejecucioacuten requerido para realizar un caacutelculo matemaacutetico intensivo

Este tipo de caacutelculo matemaacutetico es frecuente en diversas aplicaciones que se

ejecutan en dispositivos moacuteviles por ejemplo juegos aplicaciones con realidad

aumentada aplicaciones para tratamiento de imaacutegenes entre otras en las cuales no

siempre es posible utilizar el poder de la Unidad de Procesamiento Grafico (GPU) para

el caacutelculo

El coacutedigo fuente de los experimentos llevados a cabo se encuentra disponible en

[66]

En las siguientes secciones se describe la experimentacioacuten y se analizan los

resultados obtenidos

Capiacutetulo 4 Experimentacioacuten

65

4222 Recoleccioacuten de datos

Para cada uno de los 42 casos de prueba definidos se realizaron 30 ejecuciones

independientes del experimento disentildeado obteniendo en cada caso una muestra T = T1

T2 hellip T30 con Ti = tiempo requerido para el caacutelculo de la serie en la i-eacutesima ejecucioacuten

del experimento planteado El tiempo Ti se expresa en milisegundos

Para caracterizar cada una de las muestras obtenidas se han calculado los

estadiacutesticos y S que se corresponden con la media (o promedio muestral) y la

desviacioacuten estaacutendar muestral (ver Tabla 3)

var startTime = new Date()getTime()

var serie = 0

for ( var j=1 j lt= 5 j++ )

for ( var k=1 k lt= 100000 k++ )

series = series + (Mathlog(k)MathLN2) + (3k2j) +

Mathsqrt(k) + Mathpow(k j-1)

var finalTime = new Date()getTime()

var duration = finalTime - startTime

documentgetElementById(result)innerHTML = duration + -gt + series

Figura 25 Caacutelculo de serie coacutedigo multiplataforma desarrollado en Apache Cordova

Capiacutetulo 4 Experimentacioacuten

66

Dada la muestra T=T1 T2 hellip Tn

Media o promedio muestral = (

1

119899)sum119879119894

119899

119894=1

Desviacioacuten estaacutendar muestral 119878 = radic

1

119899 minus 1sum(119879119894 minus )2119899

119894=1

Tabla 3 Estadiacutesticos utilizados en el anaacutelisis de los datos

423 Resultados Obtenidos En la Tabla 4 se presenta una siacutentesis de los resultados obtenidos conformada por

los valores y S calculados para cada caso de prueba planteado Estos valores permiten

comparar el rendimiento de las aplicaciones generadas a partir de los distintos enfoques

de desarrollo evaluadas sobre cada uno de los seis dispositivos utilizados

Los valores presentados en la Tabla 4 y graficados con diagramas de barras en la

Figura 26 sugieren un anaacutelisis por separado de los casos con sistema operativo Android

y los casos con sistema operativo iOS Claramente las siluetas delineadas en los

diagramas de barras de la Figura 26 se repiten de forma similar en los escenarios con el

mismo sistema operativo pero se diferencian notablemente entre distintos sistemas

operativos

Nativo WebApp Apache Cordova Titanium NativeScript Xamarin Corona

DA1 53293 18627 23033 21167 18730 39517 140173

S 1614 632 1422 2495 939 895 1260

DA2 21180 9067 8577 9563 8967 21100 60053

S 1997 1248 883 764 916 669 595

DA3 76380 17273 19060 19270 18350 37933 134430

S 2898 1551 936 1680 304 831 2339

DI1 413 5710 32373 29977 25203 12543 3963

S 078 1655 1662 401 728 1103 085

DI2 413 4190 26397 24113 22343 10303 9863

S 073 538 1544 495 861 491 613

DI3 253 4167 29223 27267 22597 11053 10967

S 057 444 1082 550 277 390 275

Tabla 4 Siacutentesis de resultados obtenidos

Capiacutetulo 4 Experimentacioacuten

67

Figura 26 Diagrama de barras con las muestras recolectadas (las barras muestran el tiempo promedio expresado en milisegundos)

Capiacutetulo 4 Experimentacioacuten

68

424 Anaacutelisis de Resultados Debido a las diferencias de hardware de los dispositivos utilizados no es prudente

comparar el rendimiento de las aplicaciones nativas en Android con respecto a las de

iOS No obstante de los resultados obtenidos es posible inferir que el enfoque nativo en

iOS resulta mucho maacutes eficiente que el enfoque nativo en Android Existen diversos

factores que presumen justificar este hecho entre ellos la diferencia inherente de ejecutar

coacutedigo Objective C en iOS comparado con ejecutar coacutedigo Java en Android el cual

necesita del Android Runtime (ART) para su funcionamiento ralentizaacutendolo

Respecto de las aplicaciones web multiplataforma los resultados de rendimiento

resaltaron positivamente en relacioacuten al resto tanto en Android como en iOS Asiacute el

enfoque de desarrollo multiplataforma web seriacutea una opcioacuten conveniente para alcanzar

un buen rendimiento en todos los dispositivos moacuteviles independientemente de su sistema

operativo Sin embargo esta eleccioacuten podriacutea verse afectada por las limitaciones de estas

aplicaciones para acceder en forma completa a las capacidades especiacuteficas del dispositivo

Respecto de los enfoques hiacutebrido e interpretado -analizados a traveacutes de las

tecnologiacuteas Coacuterdova Titanium y NativeScript- es importante destacar que si bien estos

enfoques trabajan de modo distinto entre siacute tienen algo en comuacuten la ejecucioacuten de coacutedigo

JavaScript En este sentido el motor de JavaScript -encargado de convertir el coacutedigo

JavaScript en coacutedigo optimizado para que luego lo interprete un WebView- cumple un

rol determinante Las pruebas de estos enfoques en Android -que utiliza el motor de

JavaScript V8- tuvieron un comportamiento similar al enfoque web y comportamiento

superior que el enfoque nativo y el enfoque de compilacioacuten cruzada Por el contrario en

los dispositivos moacuteviles con iOS -que utiliza el motor JavaScriptCore- los resultados de

estas pruebas fueron peores que en los enfoques nativos web y de compilacioacuten cruzada

En los dispositivos moacuteviles con iOS los casos de compilacioacuten cruzada -analizados

a traveacutes de las tecnologiacuteas Xamarin y Corona- obtuvieron mejores resultados que los

casos hiacutebridos e interpretados pero mostraron peor rendimiento que el enfoque nativo y

que el enfoque web En cambio en los dispositivos moacuteviles con Android los resultados

de las pruebas con las aplicaciones construidas mediante el enfoque de compilacioacuten

cruzada fueron los peores La necesidad de ejecucioacuten de coacutedigo Java a traveacutes del Android

Runtime entre otros factores justifican este resultado

Capiacutetulo 4 Experimentacioacuten

69

425 Conclusiones Se ha presentado un estudio comparativo sobre el tiempo de procesamiento de

aplicaciones de software para dispositivos moacuteviles generadas con distintos enfoques de

desarrollo

Los escenarios de prueba disentildeados incluyeron los dos sistemas operativos para

dispositivos moacuteviles con mayor presencia en el mercado Android e iOS ejecutaacutendose

cada uno de ellos sobre dos smartphones (considerados de gama media y gama alta al

momento en que este trabajo fue escrito) y una Tablet

Sobre estos seis dispositivos se realizoacute un estudio de rendimiento para las

aplicaciones construidas seguacuten los enfoques de desarrollo nativos y multiplataforma

mediante un conjunto de aplicaciones que fueron desarrolladas para tal fin

1 Aplicacioacuten nativa para Android 2 Aplicacioacuten nativa para iOS 3 Aplicacioacuten web (multiplataforma) 4 Aplicacioacuten Apache Cordova (multiplataforma hibrido) 5 Aplicacioacuten Appcelerator Titanium 6 (multiplataforma interpretado) 7 Aplicacioacuten NativeScript (multiplataforma interpretada) 8 Aplicacioacuten Xamarin (multiplataforma compilacioacuten cruzada) 9 Aplicacioacuten Corona (multiplataforma compilacioacuten cruzada)

En todos los dispositivos con sistema operativo Android el peor rendimiento fue

evidenciado por Corona seguido por el enfoque nativo y Xamarin Esta situacioacuten es

totalmente opuesta a los resultados obtenidos sobre el sistema operativo iOS en doacutende las

tecnologiacuteas de desarrollo mencionadas se mostraron siempre entre las cuatro mejores En

particular es destacable la supremaciacutea del enfoque nativo frente a todos los demaacutes para el

caso de los dispositivos con iOS

Respecto al mejor rendimiento en los dispositivos Android no es posible identificar

claramente cuaacutel es el enfoque maacutes conveniente Tanto las aplicaciones web como

Coacuterdova NativeScript y Titanium alcanzaron buenos resultados en relacioacuten al resto

Nuevamente esta situacioacuten se contrapone con los datos obtenidos sobre los dispositivos

iOS en los que Coacuterdova Titanium y NativeScript obtuvieron las peores mediciones entre

las tecnologiacuteas utilizadas No ocurrioacute lo mismo con las aplicaciones web en iOS que

tambieacuten produjeron buenos resultados en relacioacuten al resto

Capiacutetulo 4 Experimentacioacuten

70

En liacuteneas generales independientemente del sistema operativo las aplicaciones

web han mostrado un buen rendimiento si se consideran todos los casos analizados

Actualmente al desarrollar un sistema de software existe la posibilidad de generar

su versioacuten para dispositivos moacuteviles Esta tarea muchas veces no es simple y una de las

decisiones maacutes importantes a tomar es elegir el enfoque de desarrollo

A partir de este trabajo se dispone de un indicador de rendimiento que puede ser

uacutetil para el Ingeniero de Software que debe seleccionar un enfoque de desarrollo de

software para dispositivos moacuteviles

Por otra parte no se han encontrado trabajos de otros autores donde se haya

analizado el rendimiento en todos los enfoques de desarrollo de software para dispositivos

moacuteviles Este tema tal como se indicoacute en la introduccioacuten es importante para la

comunidad de Ingenieriacutea de Software y los trabajos analizados hasta el momento se han

concentrado solo en los enfoques nativos yo hiacutebridos

43 Anaacutelisis comparativo de enfoques de Desarrollo de Aplicaciones Moacuteviles

Como se estudioacute en las secciones anteriores existen diferentes enfoques de

desarrollo de aplicaciones moacuteviles

Una opcioacuten es desarrollar aplicaciones moacuteviles nativas las cuales hacen uso de

todas las capacidades del dispositivo moacutevil y permiten una alta experiencia de usuario

debido a que las interfaces de usuario se componen por componentes nativos resultando

semejantes al resto de las interfaces del sistema operativo No obstante el desarrollo no

puede ser reutilizado para dar soporte a otras familias de sistemas operativos implicando

mayores costos de desarrollo y mantenimiento

En contraposicioacuten al desarrollo nativo surgioacute el desarrollo multiplataforma dando

la posibilidad de desarrollar un uacutenico producto y ejecutarlo en diferentes plataformas En

este sentido se estudiaron diferentes enfoques desarrollo web moacutevil hiacutebrido

interpretado y generado por compilacioacuten cruzada Cada uno de estos enfoques cuenta con

ciertas caracteriacutesticas que naturalmente los hacen diferenciar con ventajas y

desventajas

Se identificaron diversos factores que pueden ser utilizados para analizar las

Capiacutetulo 4 Experimentacioacuten

71

aplicaciones que se generan mediante los enfoques de desarrollo nativo y

multiplataforma los cuales se detallan a continuacioacuten

Experiencia de usuario conjunto de factores y elementos que hacen referencia

al nivel de satisfaccioacuten total de los usuarios cuando utilizan un producto o sistema

El resultado es la generacioacuten de una percepcioacuten positiva o negativa de dicho

servicio producto o dispositivo

Plataformas alcanzadas se ha visto en capiacutetulos anteriores que existen distintas

familias de sistemas operativos Seguacuten el modo de desarrollo elegido se puede

desarrollar aplicaciones para una plataforma especiacutefica o por varias

Costo del desarrollo el desarrollo puede ser maacutes o menos costoso seguacuten si

requiere codificar las soluciones de forma especiacutefica para cada sistema operativo

o si es posible la reutilizacioacuten de coacutedigo

Costo del mantenimiento la correccioacuten de errores o agregados de nuevas

funcionalidades puede requerir codificar de forma especiacutefica para cada sistema

operativo Ademaacutes se debe tener en cuenta si deben convivir diferentes versiones

del mismo producto

Entorno de desarrollo integrado Software que asiste al programador en la

construccioacuten de aplicaciones

Interfaces de usuario factor que analiza los tipos de componentes utilizados para

construir las interfaces de usuario Como se mencionoacute al analizar los distintos

enfoques de desarrollo la eleccioacuten de la herramienta a utilizar incide en si las

interfaces estaraacuten compuestas mediante componentes nativos o componentes web

los cuales pueden ser decorados para simular componentes nativos

Acceso total al dispositivo posibilidad de acceder mediante las herramientas de

desarrollo a todas las capacidades del dispositivo como la caacutemara sensores entre

otros

Modo de instalacioacuten se refiere a si la aplicacioacuten puede ser instalada desde las

tiendas de aplicaciones o es accesible sin instalacioacuten desde un navegador de

Internet

Rendimiento factor que analiza la ejecucioacuten de tareas y los tiempos asociados

Capiacutetulo 4 Experimentacioacuten

72

en su resolucioacuten

Uso offline capacidad que tiene la aplicacioacuten de funcionar sin estar conectada a

internet

Distribucioacuten a traveacutes de las tiendas posibilidad de descargar la aplicacioacuten desde

las tiendas de aplicaciones

Categoriacuteas de aplicaciones a desarrollar tipo de aplicacioacuten que se desea

desarrollar

Porcentaje de coacutedigo a reutilizar Cantidad de liacuteneas de coacutedigo con respecto al

total que pueden ser reutilizadas para en la generacioacuten de aplicaciones

multiplataforma

Con el objetivo de estudiar coacutemo se comportan e inciden estos factores en los

distintos enfoques de desarrollo se realizoacute un estudio comparativo de los diferentes

criterios a tener en cuenta Dicho estudio se sintetiza en la Tabla 5

Capiacutetulo 4 Experimentacioacuten

73

Factor a analizar Desarrollo Nativo Desarrollo Web Desarrollo Hiacutebrido Desarrollo

Interpretado

Desarrollo Generado

por Compilacioacuten

Cruzada

Experiencia de Usuario

Alta Muy Baja Baja Alta Alta

Plataformas alcanzadas

Se desarrolla

exclusivamente

para una

plataforma destino

Cualquier

plataforma Se

necesita solo un

navegador y acceso a

internet

Es posible compilar

para Android iOS

Windows Phone

Es posible compilar

para Android iOS

Windows Phone

Es posible compilar

para Android iOS

Windows Phone

Costo del desarrollo

Muy Alto Muy Bajo Bajo Medio Medio a Alto

Costo del mantenimiento

Muy Alto Muy Bajo Medio Alto Alto a Muy Alto

Entorno de desarrollo integrado

IDE uacutenico por SO Muacuteltiples opciones Plugins para IDE

geneacutericos

Algunos frameworks

disponen de IDE

especiacutefico

IDE uacutenico por

framework

Interfaces de usuario

Nativas Web Web Nativas Nativas

Acceso total al dispositivo

Si No Si Si Si

Modo de instalacioacuten

Descargar desde la Sin instalaciones Descargar desde la Descargar desde la Descargar desde la

Capiacutetulo 4 Experimentacioacuten

74

Factor a analizar Desarrollo Nativo Desarrollo Web Desarrollo Hiacutebrido Desarrollo

Interpretado

Desarrollo Generado

por Compilacioacuten

Cruzada

tienda de

aplicaciones e

instalar

tienda de aplicaciones

e instalar

tienda de aplicaciones e

instalar

tienda de aplicaciones e

instalar

Rendimiento Muy Alto Muy Bajo Bajo a Medio Alto Medio a Alto

Uso offline Si No Si Si Si

Distribucioacuten a traveacutes de las tiendas

Si No Si Si Si

Categoriacutea de aplicaciones a desarrollar

Aplicaciones que

demandan muchos

recursos o que

requiere una alta

experiencia de

usuario

Sitios web existentes Sitios web

encapsulados como

aplicacioacuten para ser

distribuidas a traveacutes

de tiendas

Aplicaciones simples a

complejas

Aplicaciones simples a

complejas

Porcentaje de Coacutedigo a reutilizar

0 100 Cerca del 100 Cerca del 90 Entre el 60 y 85

Tabla 5 Anaacutelisis comparativo de enfoques de desarrollo de aplicaciones moacuteviles

Capiacutetulo 5 Conclusiones

75

Capiacutetulo 5 Conclusiones

Inicialmente los dispositivos moacuteviles fueron pensados y disentildeados con un propoacutesito

particular A traveacutes de los antildeos el crecimiento tecnoloacutegico ha permitido incorporar

funcionalidades adicionales lo que ha posibilitado expandir el marco de uso

Actualmente el poder de coacutemputo subyacente en una gran variedad de dispositivos

moacuteviles ha generado nuevas posibilidades lo que constituye un reto para los ingenieros

de software

Asimismo y tal como se mencionoacute en capiacutetulos anteriores existen diversos

sistemas operativos para dispositivos moacuteviles siendo los maacutes populares Android iOS y

Windows Phone Debido a que el eacutexito de un producto de software estaacute vinculado en

gran parte a su uso masivo surge la necesidad de desarrollar aplicaciones moacuteviles

teniendo en cuenta cada una de estas plataformas

El desarrollo de software para dispositivos moacuteviles tiene caracteriacutesticas propias que

difieren del desarrollo tradicional Esta actividad reciente impensada deacutecadas atraacutes

marca un antes y un despueacutes en la evolucioacuten de la Ingenieriacutea de Software Es de esperar

que dicha evolucioacuten continuacutee y por consiguiente que los enfoques de desarrollo para

dispositivos moacuteviles cambien o sean reemplazados por otros Es claro que por el

momento existen cinco posibilidades de desarrollo de una misma aplicacioacuten moacutevil

Aplicaciones nativas

Aplicaciones web

Aplicaciones hiacutebridas

Aplicaciones interpretadas

Aplicaciones generadas por compilacioacuten cruzada

Para un completo anaacutelisis de cada enfoque de desarrollo es que se disentildearon una

serie de casos de estudio El primero de ellos consistioacute en desarrollar una aplicacioacuten moacutevil

para cada enfoque de desarrollo presentado Teniendo este primer objetivo definido se

decidioacute extender el entorno virtual de ensentildeanza y aprendizaje WebUNLP a traveacutes de

una aplicacioacuten moacutevil enfocada en la cartelera de novedades de los cursos La aplicacioacuten

Capiacutetulo 5 Conclusiones

76

moacutevil debiacutea permitir el ingreso de alumnos y docentes con las mismas credenciales que

las utilizadas en la versioacuten web y debiacutea mostrar informacioacuten sincronizada con la web

sobre las novedades publicadas en las carteleras de los cursos Asimismo cuando los

docentes publiquen novedades aquellos alumnos pertenecientes al curso deben recibir

una notificacioacuten en su dispositivo moacutevil

Luego de desarrollar las aplicaciones moacuteviles para cada enfoque de desarrollo se

pueden elaborar algunas conclusiones

Se destaca la simpleza a la hora de generar la versioacuten web moacutevil pero se observan

limitaciones al no poder acceder a todas las capacidades de hardware del dispositivo

El desarrollo de las aplicaciones nativas resultoacute oacuteptimo si se lo compara con los

requerimientos oportunamente planteados con la desventaja de que las aplicaciones no

son portables implicando desarrollos especiacuteficos para cada plataforma que se desee

cubrir Por otro lado el desarrollo de las aplicaciones hibridas ndashutilizando PhoneGap y

Sencha- lograron conjugar la simpleza del desarrollo web con el uso de todas las

capacidades del dispositivo posicionaacutendolo como una eleccioacuten realmente interesante De

igual manera la aplicacioacuten interpretada desarrollada mediante Titanium logroacute resolver

todos los requerimientos previamente planteados se destaca que el desarrollo fue

relativamente simple y es posible reutilizar todo el coacutedigo entre plataformas El hecho de

obtener interfaces totalmente nativas la posiciona como la alternativa ideal Por uacuteltimo

las aplicaciones generadas con el enfoque de compilacioacuten cruzada (Delphi y Xamarin)

lograron cumplir los requerimientos planteados la obtencioacuten de interfaces totalmente

nativas es algo a destacar pero conlleva un alto costo ya que se debe disentildear las interfaces

para cada plataforma de manera independiente

El segundo experimento del presente trabajo consistioacute en analizar el rendimiento

de las aplicaciones generadas mediante cada enfoque de desarrollo En total se

desarrollaron mediante distintas tecnologiacuteas nueve aplicaciones Las pruebas se

realizaron en los dos sistemas operativos de mayor relevancia Android e iOS a traveacutes de

seis dispositivos (cuatro smartphones y dos tablets)

En todos los dispositivos con sistema operativo Android el peor rendimiento se

encontroacute en la aplicacioacuten generada por Corona seguido por el enfoque nativo y Xamarin

En cambio estas tecnologiacuteas se mostraron siempre entre las cuatro mejores sobre el

sistema operativo iOS

Capiacutetulo 5 Conclusiones

77

Respecto al mejor rendimiento en los dispositivos Android no es posible identificar

claramente cuaacutel es el enfoque maacutes conveniente Tanto las aplicaciones web como

Coacuterdova NativeScript y Titanium obtuvieron buenos resultados de rendimiento en

relacioacuten al resto Nuevamente esta situacioacuten se contrapone con los datos obtenidos sobre

los dispositivos iOS en los que Coacuterdova Titanium y NativeScript obtuvieron las peores

mediciones entre las tecnologiacuteas utilizadas No ocurrioacute lo mismo con las aplicaciones web

en iOS que tambieacuten produjeron buenos resultados en relacioacuten al resto

En liacuteneas generales independientemente del sistema operativo las aplicaciones

web han mostrado un buen rendimiento si se consideran todos los casos analizados

Por uacuteltimo se elaboroacute un anaacutelisis comparativo de las caracteriacutesticas inherentes a

cada enfoque de desarrollo Se identificaron ciertos factores de intereacutes que la comunidad

de ingenieriacutea de software considera al elegir queacute tecnologiacutea utilizar y se analizoacute su

impacto en cada enfoque de desarrollo

Capiacutetulo 6 Trabajo Futuro

78

Capiacutetulo 6 Trabajo Futuro

Si bien se estudiaron en el presente trabajo diversas tecnologiacuteas para el desarrollo

de aplicaciones moacuteviles se planea profundizar el estudio analizando otras herramientas

multiplataforma disponibles en el mercado como Ionic [32] NativeScript [38] Applause

[40] React Native [67] entre otras

Ademaacutes se plantea como liacutenea de trabajo futuro ampliar el anaacutelisis comparativo de

rendimiento incluyendo otros aspectos del desarrollo para dispositivos moacuteviles como

por ejemplo el acceso a disco el consumo de bateriacutea y el tiempo de renderizacioacuten de

imaacutegenes

Por uacuteltimo es deseable estudiar la experiencia de usuario en las aplicaciones

generadas por cada enfoque de desarrollo de aplicaciones para dispositivos moacuteviles

Capiacutetulo 6 Trabajo Futuro

79

Bibliografiacutea

80

Bibliografiacutea

[1] A Talukder H Ahmed and R Yavagal Mobile Computing Technology Applications and Service Creation Tata McGraw-Hill Ed 2010

[2] Abrahamsson P et al Mobile-D An Agile Approach for Mobile Application Development in In Companion To the 19th Annual ACM SIGPLAN Conference on Object-Oriented Programming Systems Languages and Applications (OOPSLA 04 ) Vancouver Canada 2004 pp 174-175

[3] P Abrahamsson Mobile software development - the business opportunity of today in Proceedings of the International Conference on Software Development Reykjavik 2005

[4] I S Hayes Just Enough Wireless Computing Prentice Hall Professional Technical 2002

[5] Stelios Xinogalos Spyros Xanthopoulos A Comparative Analysis of Cross-platform Development Approaches for Mobile Applications in Proceedings of the 6th Balkan Conference in Informatics Thessaloniki Greece 2013 pp 213-220

[6] Tolety SB Raj R A study on approaches to build cross-platform mobile applications and criteria to select appropriate approach in India Conference (INDICON) 2012 Annual IEEE India 2012

[7] Yonathan Aklilu Redda Cross platform Mobile Applications Development in Master in Information Systems Norwegian University of Science and Technology Norway 2012

[8] Datta SK Bonnet C Nikaein N Dalmasso I Survey comparison and evaluation of cross platform mobile application development tools in Wireless Communications and Mobile Computing Conference (IWCMC) Cagliari Sardinia Italia 2013

[9] Lisandro Deliacutea Nicolaacutes Galdaacutemez Pablo Thomas and Patricia Pesado An Experimental Analysis of Application Types for Mobile Devices in Computer Science amp Technology Series - XIX Argentine Congress of Computer Science - Selected Papers Editorial de la Universidad de La Plata 2014 pp 173 -183

[10] Lisandro Deliacutea Nicolaacutes Galdamez Pablo Thomas Leonardo Corbalaacuten and Patricia Pesado Multi-Platform Mobile Application Development Analysis in IEEE Ninth International Conference on Research Challenges in Information Science - IEEE RCIS Atenas Grecia May 2015

[11] Telam [Online] httpwwwtelamcomarnotas201504102073-telefonia-movil-lineas-activashtml

Bibliografiacutea

81

[12] RTVE [Online] httpwwwrtveesnoticias20110212evolucion-del-telefono-movil-del-zapatofono-smartphones404523shtml

[13] Vodafone [Online] httpblogvodafonecouk20130829vodafone-uks-ceo-guy-laurence-4g-finally-has-a-purpose

[14] Muy Canal [Online] httpwwwmuycanalcom20140131futuro-del-telefono-movil

[15] Statcounter [Online] httpgsstatcountercom

[16] Anthony I Wasserman Software Engineering Issues for Mobile Application Development 2010

[17] Statista [Online] httpwwwstatistacom

[18] Lisandro Deliacutea Nicolaacutes Galdamez Pablo Thomas Leonardo Corbalaacuten and Patricia Pesado Anaacutelisis Experimental de desarrollo de Aplicaciones Moacuteviles Multiplataforma in XX Congreso Argentino de Ciencias de la Computacioacuten CACIC 2014 San Justo Argentina octubre 2014

[19] Lisandro Deliacutea Nicolaacutes Galdamez Pablo Thomas and Patricia Pesado Un Anaacutelisis Experimental de Tipo de Aplicaciones para Dispositivos Moacuteviles in XIX Congreso Argentino de Ciencias de la Computacioacuten CACIC 2013 Mar del Plata Argentina 2013

[20] Abhinay Puvvala Amitava Dutta Rahul Roy and Priya Seetharaman Mobile Application Developersrsquo Platform Choice Model in 2016 49th Hawaii International Conference on System Sciences (HICSS) Koloa Hawaii 2016

[21] Android Dashboard [Online] httpsdeveloperandroidcomaboutdashboardsindexhtml

[22] Xcode [Online] httpsdeveloperapplecomxcode

[23] KW Tracy Mobile Application Development Experiences on Applersquos iOS and

Android OS Potentials IEEE vol 31 no 4 July-Aug 2012

[24] Google Recommendations for building smartphone-optimized websites [Online] httpgooglewebmastercentralblogspotcomar

[25] Bootstrap [Online] httpgetbootstrapcom

[26] Foundation [Online] httpfoundationzurbcom

[27] PhoneGap [Online] httpphonegapcom

[28] Apache Cordova [Online] httpscordovaapacheorg

Bibliografiacutea

82

[29] Adobe PhoneGap Build [Online] httpsbuildphonegapcom

[30] CocoonJS [Online] httpscocoonio

[31] Ludei [Online] httpswwwludeicom

[32] Ionic [Online] httpionicframeworkcom

[33] Sencha [Online] httpswwwsenchacomproductstouchoverview

[34] A Kosmaczewski Sencha Touch 2 Up and Running OrsquoReilly 2013

[35] Appcelerator Titanium [Online] httpwwwappceleratorcomproduct

[36] Backbone [Online] httpbackbonejsorg

[37] Underscorejs [Online] httpunderscorejsorg

[38] NativeScript [Online] httpswwwnativescriptorg

[39] TypeScript [Online] httpswwwtypescriptlangorg

[40] applause [Online] httpwwwapplausecom

[41] Xamarin [Online] wwwxamarincom

[42] Delphi [Online] httpswwwembarcaderocomproductsdelphi

[43] RubyMotion [Online] httpwwwrubymotioncom

[44] Xtext [Online] httpwwweclipseorgXtext

[45] Mono [Online] httpwwwmono-projectcom

[46] [Online] httpswebunlpeadunlpeduar

[47] I Salmre Writing Mobile Code Essential Software Engineering for Building Mobile Applications Addison Wesley Professional 2005

[48] Mapbox [Online] httpswwwmapboxcomlabstwitter-gnipbrands

[49] Ruby S Richardson L RESTful Web Services OrsquoReilly Media 2007

[50] Matthew J Hamm Wireframing Essentials Packt Publishing 2014

[51] GCM [Online] httpsdevelopersgooglecomcloud-messaging

[52] iOS Human Interface Guidelines [Online] httpsdeveloperapplecomioshuman-interface-guidelinesoverviewdesign-principles

[53] APN [Online] httpdeveloperapplecomlibrarymacdocumentationNetworkingInternetConceptual

Bibliografiacutea

83

RemoteNotificationsPGChaptersApplePushServicehtmlapple_refdocuidTP40008194-CH100-SW9

[54] Mark Norm Norman Francis Christian Heilmann Web Development Solutions Ajax APIs Libraries and Hosted Services Made Easy Apress 2007

[55] JqueryMobile [Online] httpsjquerymobilecom

[56] Pushwoosh [Online] httpsgithubcomPushwooshpushwoosh-phonegap-plugin

[57] J Clark Creating Mobile Apps with Sencha Touch 2 Packt Publishing 2013

[58] Kinvey [Online] httpwwwkinveycom

[59] Ali Mesbah Philippe Kruchten Mona Erfani Joorabchi Real Challenges in Mobile App Development in ACM IEEE International Symposium on Empirical Software Engineering and Measurement Baltimore Maryland US 2013

[60] Andreacute Nitze Andreas Schmietendorf Florian Roumlsler Towards a Mobile Application Performance Benchmark in ICIW 2014 The Ninth International Conference on Internet and Web Applications and Services Paris France 2014

[61] Sebastian Hanschke and Tim A Majchrzak Henning Heitkoumltter Comparing Cross Platform Development approaches For Mobile Applications in 8th International Conference on Web Information Systems and Technologies (WEBIST) Porto Portugal 2012

[62] HW Kim SG Chung CS Jung Measuring Software Quality A Survey of ISOIEC 9126 IEEE Software vol 21 no 5 pp 88 ndash 92 SeptemberOctober 2004

[63] Luis Corral Anton B Georgiev Alberto Sillitti and Giancarlo Succi Can execution time describe accurately the energy consumption of mobile apps An experiment in Android GREENS 2014 Proceedings of the 3rd International Workshop on Green and Sustainable Software pp 31-37 June 2014

[64] Brian Leroux Andre Charland Mobile application development web vs native Magazine Communications of the ACM vol 54 no 5 pp 49-53 May 2011

[65] Luis Corral Alberto Sillitti and Giancarlo Succi Mobile multiplatform development An experiment for performance analysis in The 9th International Conference on Mobile Web Information Systems (MobiWIS) Ontario Canada 2012

[66] Repositorio Git III-LIDI [Online] httpsgitlabcomiii-lidiperformance-assessment-multiplatform-mobile-applicationstreemaster

[67] React Native [Online] httpsfacebookgithubioreact-native

[68] Lisandro Galdaacutemez Nicolaacutes Corbalaacuten Leonardo Thomas Pablo Pesado Patricia Deliacutea Un anaacutelisis comparativo de rendimiento en aplicaciones moacuteviles

Bibliografiacutea

84

multiplataforma in XXI Congreso Argentino de Ciencias de la Computacioacuten Juniacuten 2015

Page 10: Desarrollo de Aplicaciones Móviles Multiplataforma

Capiacutetulo 1 Tecnologiacutea Moacutevil

10

Capiacutetulo 1 Tecnologiacutea Moacutevil

Hubo una eacutepoca en el que los teleacutefonos moacuteviles no teniacutean pantalla taacutectil ni

permitiacutean grabar viacutedeo ni siquiera podiacutean conectarse a Internet Tampoco podiacutean enviar

y recibir mensajes Simplemente permitiacutean la funcioacuten baacutesica de hablar por teleacutefono

Dos deacutecadas atraacutes los dispositivos moacuteviles eran aparatos de gran tamantildeo y pesados

Soacutelo algunas pocas personas podiacutean acceder a estos dispositivos ya que se consideraban

artiacuteculos de lujo Pero este escenario fue cambiando paulatinamente llevando a que el

celular se transforme en un elemento imprescindible en nuestras vidas En Argentina en

el antildeo 2003 habiacutea 4 millones de liacuteneas activas En la actualidad la cifra llega a 37 millones

de liacuteneas activas y 62 millones de liacuteneas declaradas [11]

11 Los inicios

La Segunda Guerra Mundial originoacute la necesidad de comunicarse a distancia por

lo que Motorola creoacute un equipo militar llamado Handie Talkie H12-16 para

comunicaciones viacutea ondas de radio

Su salto a los sistemas civiles sucedioacute a finales de la deacutecada de los 40 con sistemas

de radio analoacutegicos en frecuencias FM principalmente y con servicios en las bandas HF

y VHF ofrecidos por la americana Bell

En 1955 Ericsson comercializoacute el Mobile Telephone System A (MTA) Phone

(Figura 1) un teleacutefono que pesaba 40 kilogramos y que se instalaba en automoacuteviles

Como curiosidad tuvo un total de 125 usuarios hasta 1967

Capiacutetulo 1 Tecnologiacutea Moacutevil

11

Figura 1 Mobile Telephone System A (MTA)

La primera llamada moacutevil data del 3 de abril de 1973 cuando Martin Cooper

(Figura 2) en aquel entonces ingeniero electroacutenico de Motorola realizoacute una llamada

desde la calle en Nueva York La llamada fue realizada mediante un prototipo del

Motorola DynaTAC 8000x Considerado el primer moacutevil del mundo pesaba cerca de un

kilo y mediacutea 33x45x89 centiacutemetros su bateriacutea teniacutea uacutenicamente la autonomiacutea de una

hora en conversacioacuten necesitando diez horas para cargarse Su costo era de USD 4000

Capiacutetulo 1 Tecnologiacutea Moacutevil

12

Figura 2 Martin Cooper el autor de la primer llamada moacutevil

El verdadero conocimiento popular del teleacutefono moacutevil no llegoacute hasta la deacutecada de

los 90 con la segunda generacioacuten de estos dispositivos

La comunicacioacuten digital permitioacute mejorar la calidad de la escucha de voz la

reduccioacuten del tamantildeo y peso de los dispositivos utilizados y sobre todo el incremento de

compantildeiacuteas operadoras que dieron paso a un mercado maacutes competitivo y accesible

Los usuarios fueron testigos de avances sorprendentes como la identificacioacuten de

llamada o los mensajes de texto que constituyeron a una nueva forma de comunicacioacuten

Vertiginosamente el celular pasoacute de ser considerado una herramienta de trabajo a

generalizarse en todos los estratos de la sociedad

Seguacuten avanzaba la deacutecada del 90 los teleacutefonos moacuteviles iban adaptaacutendose a esas

novedades incorporando pantallas cada vez de mayor tamantildeo y en los maacutes avanzados

haciendo desaparecer la antena que era necesario desplegar para poder realizar una

comunicacioacuten en condiciones adecuadas

Poco a poco los dispositivos empezaron a integrar cada vez maacutes funciones aviso

por vibracioacuten juegos bluetooth infrarrojos politonos y ya con el cambio de siglo

pantallas a color y caacutemaras fotograacuteficas Maacutes adelante llegariacutea la grabacioacuten de viacutedeo el

acceso a Internet las pantallas taacutectiles entre otras [12]

Capiacutetulo 1 Tecnologiacutea Moacutevil

13

12 Evolucioacuten de los protocolos para redes de comunicaciones

Hubiera sido imposible el auge de los teleacutefonos moacuteviles sin la estandarizacioacuten

mejora y evolucioacuten de los protocolos para redes de comunicaciones y su soporte por las

operadoras Asiacute tras las primeras comunicaciones viacutea ondas de radio con banda de

frecuencias por debajo de los 600 kHz las posteriores en AM y FM los servicios de Bell

y Ericsson en los antildeos 50 y 60 llegoacute esa primera llamada de 1973 que popularizoacute todo el

sector

La primera generacioacuten 1G fue responsabilidad de Ericsson con el sistema Telefoniacutea

Moacutevil Noacuterdica (NMT) y seguiacutea utilizando canales analoacutegicos En 1986 la compantildeiacutea

modernizoacute el sistema funcionando a frecuencias superiores de 900 MHz posibilitando

servicio para un mayor nuacutemero de usuarios Ademaacutes del NMT en los 80 se desarrollaron

otros sistemas de telefoniacutea moacutevil como el Sistema Telefoacutenico Moacutevil Avanzado (AMP)

desarrollado por los laboratorios Bell

La segunda generacioacuten 2G llegoacute en la deacutecada de los 90 con sistemas como Global

System for Mobile Communications (GSM) Estaacutendar Interno 136 (IS-136) Red

Mejorada Digital Integrada (iDEN) y el Estaacutendar Interno 95 (IS-95) GSM fue el

desarrollo maacutes relevante ya que fue el estaacutendar europeo de telefoniacutea moacutevil digital En el

proyecto participaron 26 compantildeiacuteas europeas de telecomunicaciones y en 1992 se

pusieron en marcha las primeras redes europeas de GSM-900 y los primeros teleacutefonos

moacuteviles GSM Ademaacutes de Europa GSM ha terminado imponieacutendose tambieacuten en Asia

Ameacuterica Latina Oceaniacutea y una parte de Ameacuterica del Norte

La necesidad de mayores velocidades de transmisioacuten de datos y mayores

capacidades que permitieran nuevos servicios dieron paso a la Tercera Generacioacuten (3G)

no sin antes pasar por el 25G que proporcionoacute el General Packet Radio Service (GPRS)

El estaacutendar europeo es el Universal Mobile Telecommunications System (UMTS) basado

en la tecnologiacutea W-CDMA y estaacute gestionado por la organizacioacuten 3GPP tambieacuten

responsable de GSM GPRS y Enhanced Data Rates for GSM Evolution (EDGE)

La Cuarta Generacioacuten (4G) sucede a las tecnologiacuteas 2G y 3G y ofrece entre otras

mejoras mayor seguridad y Calidad de Servicio (QoS) junto a velocidades de acceso

muy superiores a las anteriores (mayores a 100 Mbits en movimiento y a 1 Gbits en

Capiacutetulo 1 Tecnologiacutea Moacutevil

14

reposo) Estaacute basada completamente en el protocolo IP siendo un sistema de sistemas y

una red de redes que se alcanza gracias a la convergencia entre las redes de cables e

inalaacutembricas Seguacuten Vodafone ldquoel 4G tiene finalmente una razoacuten y es el entretenimientordquo

[13] La norma Long Term Evolution (LTE) es la maacutes extendida aunque no la uacutenica

existente

5G seraacute la nueva revisioacuten del sistema de conexioacuten de red sin cables y se espera que

esteacute disponible en el antildeo 2020 (Figura 3) en paiacuteses como Corea del Sur como asiacute tambieacuten

en Europa Como 4G la mayor velocidad de transferencia seraacute su mayor avance con

velocidades de descarga de hasta 10 Gbps (125 GBs) [14]

Figura 3 Evolucioacuten de los protocolos para redes de comunicacioacuten moacuteviles

13 La actualidad

Muchas de las actividades que un tiempo atraacutes soliacutean hacerse desde una

computadora tales como revisar el correo electroacutenico escuchar muacutesica agendar una

nueva cita en el calendario compartir fotos en alguna red social entre muchiacutesimas otras

en nuestros diacuteas se llevan a cabo de forma natural desde los dispositivos moacuteviles La

Figura 4 muestra coacutemo los dispositivos moacuteviles les han ganado terreno a los equipos

Capiacutetulo 1 Tecnologiacutea Moacutevil

15

tradicionales denominados lsquode escritoriorsquo

Figura 4 Comparacioacuten entre plataformas [15]

En la actualidad existen cientos de modelos diferentes de dispositivos moacuteviles y

los fabricantes siguen innovando intentando destacarse sobre la competencia Hoy en diacutea

no nos sorprende encontrar dispositivos moacuteviles con procesadores quad-core de 22 Ghz

Incluso ya se comienzan a conocer prototipos de dispositivos con ocho o diez nuacutecleos

De la mano de los procesadores la memoria RAM de los dispositivos moacuteviles

tambieacuten ha crecido considerablemente llegando a comercializarse dispositivos con 3 GB

de memoria

La caacutemara de los dispositivos es otra de las capacidades que maacutes ha progresado

llegando a encontrarse sensores de 20 MP y la posibilidad de grabar videos en formato

UHD 4K (3840 x 2160)

El tamantildeo de las pantallas y sus resoluciones fueron otra de las caracteriacutesticas que

maacutes han evolucionado Es posible encontrar dispositivos con pantallas de 5 pulgadas con

posibilidad de visualizar 16 millones de colores y con resoluciones Quad HD (2560 x

1440)

La tecnologiacutea de las bateriacuteas es un aspecto en que no se ha logrado grandes avances

en el sector ni se pronostican grandes progresos a corto plazo Incluso la llegada de chips

Capiacutetulo 1 Tecnologiacutea Moacutevil

16

maacutes potentes mayores pantallas o el 4G disminuiraacuten auacuten maacutes la autonomiacutea de las bateriacuteas

El uacuteltimo aspecto a mencionar es el de las capacidades del dispositivo Ademaacutes de

los ya claacutesicos sensores Global Positioning System (GPS) la capacidad de conectividad

viacutea bluetooth infrarrojo y WIFI hoy surge una diversidad de opciones que pueden

disponer los teleacutefonos inteligentes

Por el lado de la conectividad cada vez es maacutes comuacuten encontrar terminales con

mecanismos de comunicacioacuten Near Field Communication (NFC) o WIFI Direct

Con respecto a los sensores actualmente existen dispositivos que cuentan con

aceleroacutemetros giroscopios y magnetoacutemetros los cuales brindan a los desarrolladores de

aplicaciones la posibilidad de controlar la posicioacuten del aparato la aceleracioacuten que sufre

el dispositivo con respecto a la fuerza de la gravedad etc Tambieacuten es comuacuten el uso de

sensores de proximidad por ejemplo para apagar la pantalla mientras se atiende una

llamada El sensor de luminosidad permite medir el brillo de la luz ambiental Asiacute el

software del teleacutefono utiliza estos datos para ajustar el brillo de la pantalla

automaacuteticamente hacieacutendola maacutes clara o maacutes oscura

Los uacuteltimos smartphones de gama alta tambieacuten son capaces de medir la presioacuten

atmosfeacuterica a traveacutes de un baroacutemetro Los datos que mide el dispositivo sirven para

determinar en queacute nivel por encima del mar se encuentra el teleacutefono lo que se traduce en

la mejora de la precisioacuten del GPS

Incluso ya existen dispositivos que cuentan con un sensor de humedad del aire el

cual permite controlar los niveles de humedad para por ejemplo ayudar a las personas

con problemas respiratorios

Como si todo esto fuese poco existen modelos con podoacutemetro -para medir con

precisioacuten los pasos que da el usuario- pulsoacutemetro -para medir las pulsaciones a traveacutes de

los vasos sanguiacuteneos de los dedos- y hasta sensor de huellas digitales para cuestiones

relativas a la seguridad

Por lo anteriormente dicho los desarrolladores de aplicaciones para dispositivos

moacuteviles de la actualidad tienen el desafiacuteo de poder manipular desde sus aplicaciones

todas las posibilidades descriptas

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

17

Capiacutetulo 2 Desarrollo de

Aplicaciones Moacuteviles Nativas

Si bien el desarrollo de aplicaciones para dispositivos moacuteviles se remonta por lo

menos a 10 antildeos atraacutes ha habido un crecimiento exponencial desde que se abrioacute la tienda

de aplicaciones de iPhone en julio de 2008 Desde entonces los fabricantes de

dispositivos han creado tiendas de aplicaciones para otros dispositivos moacuteviles

incluyendo Android BlackBerry Nokia Ovi Windows Phone entre otros [16]

Actualmente el desarrollo de aplicaciones para dispositivos moacuteviles es un campo

en evolucioacuten con gran intereacutes econoacutemico y cientiacutefico Una prueba de esto es que para

Julio del 2014 se disponiacutean de maacutes de 3 millones de aplicaciones entre las principales

tiendas virtuales de aplicaciones Y solamente en el antildeo 2013 se contabilizaron 101

billones de descargas de aplicaciones moacuteviles en todo el mundo de las cuales 9 billones

fueron descargas pagas y 92 billones descargas gratuitas [17]

Con el actual creciente nuacutemero de plataformas moacuteviles desarrollar aplicaciones

moacuteviles se hizo muy difiacutecil para las empresas ya que necesitan desarrollar las mismas

aplicaciones para cada plataforma de destino

El desarrollo de aplicaciones nativas es la forma natural de implementar

aplicaciones moacuteviles Las aplicaciones nativas son concebidas para ejecutarse en una

plataforma especiacutefica es decir se debe considerar el tipo de dispositivo el sistema

operativo a utilizar y su versioacuten

Las aplicaciones nativas se desarrollan utilizando un entorno de desarrollo

integrado (IDE) que proporciona las herramientas de desarrollo necesarias para la

construccioacuten y depuracioacuten de aplicaciones El coacutedigo fuente se compila para obtener

coacutedigo ejecutable proceso similar que el utilizado para las tradicionales aplicaciones de

escritorio

Cuando la aplicacioacuten estaacute lista para ser distribuida debe ser transferida a las App

stores (tiendas de aplicaciones) especiacuteficas de cada sistema operativo Estas tiendas tienen

un proceso de auditoriacutea para evaluar si la aplicacioacuten se adecuacutea a los requerimientos de la

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

18

plataforma a operar Cumplido este paso la aplicacioacuten se pone a disposicioacuten de los

usuarios

La principal ventaja de este tipo de aplicaciones es la posibilidad de interactuar con

todas las capacidades del dispositivo (caacutemara GPS aceleroacutemetro agenda entre otras)

Ademaacutes no es estrictamente necesario poseer acceso a internet Su ejecucioacuten es raacutepida

puede ejecutarse en modo background y notificar al usuario cuando ocurra un evento que

necesite su atencioacuten

Claramente estas ventajas tienen como contrapartida un mayor costo de desarrollo

pues se debe utilizar un lenguaje de programacioacuten diferente seguacuten la plataforma Por ende

si se desea cubrir varias plataformas se deberaacute generar una aplicacioacuten para cada una de

ellas Esto conlleva a mayores costos de desarrollo actualizacioacuten y distribucioacuten de nuevas

versiones [9] [18] [19]

En la actualidad hay una gran cantidad de sistemas operativos para dispositivos

moacuteviles La Figura 5 muestra la utilizacioacuten de los sistemas operativos en los uacuteltimos antildeos

en todo el mundo mientras que la Figura 6 muestra la misma comparativa en Argentina

En ambos casos el ranking es liderado por Android seguido por iOS y en tercer lugar

Windows Phone [20]

Figura 5- Utilizacioacuten de Sistemas Operativos Moacuteviles en el mundo

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

19

Figura 6- Utilizacioacuten de Sistemas Operativos Moacuteviles en Argentina

A continuacioacuten se analizaraacute coacutemo es el proceso de desarrollo de aplicaciones

moacuteviles nativas en los sistemas operativos maacutes relevantes de la actualidad y luego en la

Tabla 1 se compararaacuten aspectos teacutecnicos de estas plataformas

21 Desarrollo de Aplicaciones Nativas en Android

Android es el sistema operativo maacutes utilizado en la actualidad Puede ser utilizado

en teleacutefonos inteligentes tablets relojes inteligentes televisores y automoacuteviles

Estaacute basado en Linux y es respaldado por Google

211 Evolucioacuten Inicialmente el desarrollo de Android era llevado a cabo por la empresa Android

Inc la cual fue fundada en el antildeo 2003 y recibiacutea respaldo econoacutemico por parte de Google

Antildeos maacutes tarde maacutes precisamente en Julio del 2005 Google adquiere Android y da lugar

a la primer versioacuten del sistema operativo en el antildeo 2007 Android 10 Apple Pie1

desarrollado sobre el kernel de Linux 26 En su presentacioacuten se hizo hincapieacute en que era

un sistema operativo para dispositivos moacuteviles totalmente gratuito y open source a

1 Desde la salida de la primera versioacuten del sistema operativo hasta el presente Google ha seguido la tradicioacuten de ponerle un nombre de postre a cada una de sus versiones siguiendo un orden alfabeacutetico

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

20

diferencia de iOS

La primera versioacuten comercial teniacutea mucho margen de mejora y apenas inquietoacute a la

competencia pero ya introduciacutea algunos conceptos que antildeos despueacutes son un estaacutendar de

los sistemas operativos moacuteviles

Menuacute desplegable de notificaciones

Widgets de escritorio

Android Market la tienda de apps (no contaba con ninguacuten sistema de pago para

usuarios Todo el cataacutelogo era gratuito)

Integracioacuten con Google Mail Contacts y Calendar

Navegador Maps Google Talk reproductor de YouTube y soporte para caacutemaras

En febrero del 2009 apenas 3 meses despueacutes del lanzamiento de Android 10 Apple

Pie llega la primera actualizacioacuten Android 11 Banana Bread No antildeadiacutea grandes

novedades pero siacute corregiacutea numerosos fallos detectados en la primera versioacuten e introduciacutea

un concepto por entonces poco usado por los rivales que buscaba facilitar la vida al

usuario las actualizaciones automaacuteticas con las que resultaba muy simple mantener todo

el software al diacutea

El 30 de abril del 2009 lanzan una nueva actualizacioacuten de gran importancia con

muchas novedades en cuanto a usabilidad Android 15 Cupcake Esta nueva versioacuten

introdujo las siguientes caracteriacutesticas

Teclado taacutectil QWERTY en pantalla con prediccioacuten de texto y diccionario de

usuarios para palabras personalizadas

Grabacioacuten y reproduccioacuten en formatos MPEG-4 y 3GP

Widget de escritorio de Google para realizar buacutesquedas directamente

SDK para el desarrollo de widgets de escritorio por parte de terceros

Funciones del portapapeles ampliadas

Interfaz para grabar y reproducir viacutedeos mejorada

Posibilidad de auto-rotacioacuten

Android 16 Donut apareciacutea en septiembre del 2009 con algunas novedades

adicionales

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

21

Soporte para CDMAEVDO 8021x VPN que ampliaba los mercados al alcance

de Android

Compatibilidad con distintas resoluciones de pantalla Soporte WVGA

Actualizacioacuten y nuevo disentildeo del Android Market

Utilidad de buacutesqueda universal en Internet y en el mismo dispositivo

Galeriacutea caacutemara y videocaacutemara con mejor integracioacuten con raacutepido acceso a la

caacutemara

Motor multi-lenguaje de Siacutentesis de habla para permitir a cualquier aplicacioacuten de

Android hablar una cadena de texto

Mejoras en las buacutesquedas por texto y voz

Apenas dos meses despueacutes en noviembre del 2009 lanzan Android 20 Eclair

uno de los cambios maacutes sustanciales sufridos por Android tanto a nivel de disentildeo como

de arquitectura interna Era una versioacuten dirigida a dispositivos de mayor tamantildeo en un

tiempo en el que los fabricantes empezaban a diversificar su oferta La versioacuten 21

mantuvo la misma nomenclatura y soacutelo corrigioacute algunos fallos pero su uso fue mayor

entre los fabricantes que la versioacuten anterior A continuacioacuten se mencionan algunas de las

nuevas caracteriacutesticas

Sincronizacioacuten de cuenta expandida permitiendo a los usuarios agregar muacuteltiples

cuentas al dispositivo para sincronizacioacuten de correo y contactos

Google Maps Navigation sistema de navegacioacuten GPS gratuito

Compatibilidad con Microsoft Exchange

Optimizacioacuten en velocidad de hardware y GUI renovada

Soporte para maacutes tamantildeos de pantalla y resoluciones con una mejor tasa de

contraste

Navegador actualizado soporte para HTML5 y barra de direccioacuten y buacutesqueda

unificada

Funcioacuten Speech to Text para escribir textos mediante el uso de la voz

Nueva pantalla de desbloqueo

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

22

Nuevas caracteriacutesticas para la caacutemara incluyendo soporte de flash zoom digital

modo escena balance de blancos efecto de colores y enfoque macro

Adicioacuten de fondos de pantalla animados permitiendo la animacioacuten de imaacutegenes

de fondo de la pantalla inicio para mostrar movimiento

El 20 de mayo del 2010 apareciacutea una nueva actualizacioacuten del sistema operativo

Android 22 Froyo Traiacutea numerosos cambios algunos copiados de otras ROMs y otros

con el uso empresarial en mente

Pantalla Home totalmente redisentildeada con 5 paneles en lugar de 3

Nueva galeriacutea de imaacutegenes

Soporte para actuar como hotspot2 para otros dispositivos tethering3 de datos

Soporte para Flash 101

Funcioacuten copiar y pegar mejorada en Google Mail

Nueva pantalla alternativa de desbloqueo mediante coacutedigo PIN

Grabacioacuten de viacutedeo en 720p

Optimizaciones en velocidad memoria y rendimiento Compilador JIT

Integracioacuten del motor de JavaScript V8 de Chrome en el navegador

Soporte para el servicio Android Cloud to Device Messaging (C2DM)

habilitando notificaciones push

El antildeo 2010 iba a concluir con el lanzamiento de una versioacuten sumamente popular

que prevalecioacute gran tiempo Android 23 Gingerbread Esta versioacuten contoacute con las

siguientes caracteriacutesticas

Disentildeo de la interfaz de usuario actualizado con incremento en velocidad y

simpleza

Nuevo disentildeo para el teclado numeacuterico en pantalla

Soporte para tamantildeos y resoluciones de pantalla extra-grandes (WXGA y

mayores)

Funcioacuten para copiar y pegar mejorada con soporte para caracteres individuales en

lugar de cajas de texto

2 lugar que ofrece acceso a Internet a traveacutes de una red inalaacutembrica y un enrutador conectado a un proveedor de servicios de Internet 3 proceso por el cual un dispositivo moacutevil con conexioacuten a Internet actuacutea como pasarela para ofrecer acceso a la red a otros dispositivos

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

23

Soporte para NFC

Herramientas de visualizacioacuten de consumo y uso de la bateriacutea mejoradas

Soporte para caacutemaras frontales

Acceso de bajo nivel para los desarrolladores de juegos

Recolector basura concurrente para incrementar el rendimiento

Sustitucioacuten del sistema de archivos YAFFS por ext4

Soporte nativo para maacutes sensores (tales como giroscopio y baroacutemetro)

Soporte de chat de video o voz usando Google Talk

En febrero del 2011 Google lanza Android 30 Honeycomb Se trata de una

actualizacioacuten especiacutefica para tablets no compatible con teleacutefonos que introduciacutea las

liacuteneas maestras de la interfaz en el futuro Las versiones 31 y 32 mantuvieron el mismo

nombre y fueron baacutesicamente un conjunto de correcciones A continuacioacuten se listan los

cambios significativos que tuvieron lugar en estas versiones

Pantalla de Inicio redisentildeada

Inclusioacuten de tonos azules en la interfaz en detrimento del verde tradicional

Nuevas funcionalidades para el emplazamiento y uso de widgets

Fin de los botones fiacutesicos Adaptacioacuten automaacutetica del SO seguacuten el dispositivo

Agregado de barra de sistema con caracteriacutesticas de acceso raacutepido a

notificaciones estados y botones de navegacioacuten suavizados disponible en la parte

inferior de la pantalla

Antildeadida la barra de accioacuten (Action Bar en ingleacutes) entregando acceso a opciones

contextuales navegacioacuten widgets u otros tipos de contenido en la parte superior

de la pantalla

Multitarea simplificada ndash tocando Aplicaciones recientes en la barra del sistema

permite a los usuarios ver instantaacuteneas de las tareas en curso y saltar raacutepidamente

de una aplicacioacuten a otra

Aceleracioacuten graacutefica mediante hardware

Optimizacioacuten del renderizado de graacuteficos 3D

Soporte para perifeacutericos USB

Octubre del 2011 fue el mes del lanzamiento de Android 40 Ice Cream Sandwich

basado en el nuacutecleo de Linux 301 Esta nueva versioacuten introdujo las siguientes mejoras

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

24

Nueva Interfaz Holo y fuente tipograacutefica Roboto

Sistema de gestioacuten de notificaciones mejorado

Multitarea mejorada

Android Beam funcionalidad para transferir datos entre dos dispositivos viacutea NFC

Funcioacuten de desbloqueo mediante el rostro

Nuevas funciones para la visualizacioacuten y gestioacuten del consumo de datos

Nuevas aplicaciones de correo y calendario

Habilidad de acceder a aplicaciones directamente desde la pantalla de bloqueo

Herramienta integrada de captura de pantalla

Soporte MKV

Aceleracioacuten por hardware de la interfaz de usuario

Soporte Stylus (laacutepiz taacutectil)

En Julio del 2012 se presenta Android 41 Jelly Bean que incluye las siguientes

novedades

Sistema de deteccioacuten de entrada de datos taacutectiles optimizado

Estreno de Google Now el servicio-asistente de voz inteligente de Google

Navegador Google Chrome

Buacutesqueda mediante voz mejorada

Nuevas posibilidades para las notificaciones interactivas de escritorio

Dictado de voz offline

Se deja de dar soporte al Flash Player

Meses despueacutes en noviembre del 2012 se lanza la versioacuten Android 42 Jelly Bean

la cual incluye habituales correcciones rendimiento mejorado y cambios puntuales en

ciertas aplicaciones

Android 43 Jelly Bean es anunciado el 24 de julio del 2013 Uno de los objetivos

de esta versioacuten fue tratar de consolidar a Android como un sistema operativo capaz de

ejecutar juegos Esta nueva versioacuten cuenta con las siguientes novedades

Soporte multiusuario y de perfiles mejorado

Soporte OpenGL ES 30

Bluetooth Smart

Plataforma Google Games

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

25

Servicios de localizacioacuten Wi-Fi mejorados

Ya no es necesario pulsar el icono del microacutefono para realizar una buacutesqueda de

voz Solo hay que decir OK Google y en seguida ordenar al equipo lo que se

necesite

Android 44 KitKat es anunciado en octubre del 2013 Esta nueva versioacuten intenta

corregir el problema de fragmentacioacuten se cuenta con muchas versiones y los fabricantes

tienen dificultades para adaptar sus productos a los requerimientos de cada nueva versioacuten

Se destaca de esta versioacuten

Menores requisitos de hardware para corregir la fragmentacioacuten de versiones

Compatible con terminales con 512 MB de memoria RAM

Reduccioacuten del consumo de bateriacutea mediante la optimizacioacuten de los sensores

Inclusioacuten de la suite ofimaacutetica QuickOffice

Servicios de almacenamiento online integrados Google Drive Box

Soporte para infrarrojos Usar el moacutevil como mando de TV

Aplicaciones a pantalla completa

Captura de pantalla en viacutedeo

En octubre del 2014 se lanza Android 5 Lollipop daacutendole soporte a otros

dispositivos como Android TV relojes inteligentes autos etc Esta nueva versioacuten

incluye

Nuevo disentildeo basado en Material Design que logra un flujo de trabajo maacutes fluido

Interfaz que se adapta a cualquier tamantildeo de dispositivo

Renovado sistema de notificaciones inteligente

Interesante vista multitarea que muestra capas con las diferentes aplicaciones

abiertas

Funcioacuten Android Smart Lock que permite emparejar un dispositivo Android con

otro ya sea un reloj inteligente o un automoacutevil

Modo Invitado para que puedas prestar el dispositivo sin que otros usuarios

tengan acceso a la informacioacuten privada

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

26

Soporte para sistemas de 64 bits

En octubre del 2015 se anuncia Android 6 Marshmallow que incluye las

siguientes novedades

Soporte para autenticacioacuten viacutea huella digital

Desinstalacioacuten raacutepida de las aplicaciones desde la pantalla de inicio

Nuevo esquema de gestioacuten de energiacutea llamado Doze

Mayor duracioacuten de la bateriacutea cuando el dispositivo estaacute en reposo

Inclusioacuten de Android Pay que emplearaacute el chip NFC

Mejoras en Google Now

Mayor control sobre los permisos requeridos por las aplicaciones

212 Proceso de Desarrollo Las aplicaciones nativas para esta plataforma se implementan utilizando el lenguaje

de programacioacuten Java

El estaacutendar sugiere utilizar el IDE oficial Android Studio (Figura 7) aunque es

posible utilizar otros entornos Independientemente del IDE utilizado se necesita

disponer del Software Development Kit (SDK) de la versioacuten de Android en la que se

desea trabajar El SDK provee todas las herramientas necesarias para desarrollar

compilar depurar y simular aplicaciones

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

27

Figura 7 Entorno de desarrollo Android Studio

Uno de los interrogantes que surgen en el momento de crear una aplicacioacuten es con

cual versioacuten de la Application Programming Interface (API) de Android trabajar Se debe

tener en cuenta que al trabajar con una versioacuten especiacutefica se estaacute limitando cuales son los

dispositivos que soportaraacuten la aplicacioacuten a crear No se recomienda utilizar una API

antigua -ya que no se estariacutea utilizando muchos de los avances de la plataforma- ni

tampoco la uacuteltima en el mercado ndashdebido a que pocos seriacutean los usuarios que podriacutean

utilizarla- En la Figura 8 se visualiza la distribucioacuten de versiones seguacuten los dispositivos

activos a la fecha de Diciembre 2016 [21] De esa informacioacuten se desprende que si se

optara por trabajar con la API 16 (Jelly Bean) el 966 de los celulares activos podraacuten

utilizar la aplicacioacuten a crear

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

28

Figura 8 Distribucioacuten de versiones de Android - Diciembre 2016

22 Desarrollo de Aplicaciones Nativas en iOS

iOS es un sistema operativo para dispositivos moacuteviles de la empresa multinacional

Apple Si bien fue originalmente desarrollado para el dispositivo iPhone luego el sistema

operativo alcanzoacute otros dispositivos como iPod Touch iPad A diferencias de otros

sistemas operativos para dispositivos moacuteviles iOS solo funciona en dispositivos creados

por la empresa Apple pero no asiacute en otro hardware de terceros

221 Evolucioacuten El sistema operativo moacutevil iOS se deriva del sistema operativo OS X el cual estaacute

basado en UNIX

La primera versioacuten del sistema operativo se presentoacute en enero del 2007 A

diferencia de sus sucesores la primera versioacuten no se llamoacute iOS sino iPhone OS Se

trataba de una plataforma bastante cerrada ya que las uacutenicas aplicaciones disponibles

eran las que estaban integradas al sistema operativo y fueron creadas por Apple como los

Mapas Mail Fotos Calendario entre otras

El desarrollo de aplicaciones nativas por parte de terceros no tuvo lugar hasta marzo

del 2008 momento en el cual Apple liberoacute el primer kit de desarrollo

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

29

Meses despueacutes se lanza la segunda versioacuten del sistema operativo iPhone OS 2 En

esta oportunidad introducen la App Store la cual permitioacute la descarga de aplicaciones de

terceros Ademaacutes la aplicacioacuten de Mapas recibioacute compatibilidad con el GPS y el Mail

notificaciones push

En 2009 Apple lanzoacute iPhone OS 3 y en su versioacuten 32 se le cambioacute el nombre a

iOS 32 iOS 3 incorporoacute grandes novedades buacutesqueda Spotlight botones Copiar y

Pegar grabacioacuten de viacutedeo edicioacuten de viacutedeo mensajes MMS comandos de voz modo

landscape y otras muchas apps Ademaacutes se siguioacute explotando las ventajas de las

notificaciones push y se continuoacute evolucionando su SDK daacutendole mayor poder a los

desarrolladores de aplicaciones

iOS 4 llegoacute a mediados del 2010 y trajo consigo nuevos cambios a la plataforma

Los maacutes destacables fueron la inclusioacuten de fondos de pantalla y la posibilidad de poder

abrir varias aplicaciones en simultaacuteneo Adicionalmente las aplicaciones podiacutean ser

agrupadas mediante carpetas algo simple pero uacutetil

En Junio del 2011 se libera iOS 5 Esta nueva versioacuten ofreciacutea grandes novedades

un Centro de Notificaciones Siri ndashel asistente virtual que marcoacute tendencia en los uacuteltimos

antildeos- iMessage iCloud Game Center Quiosco Recordatorios integracioacuten social para

Twitter y se mejoroacute notablemente la app de navegacioacuten web nativa Safari

iOS 6 fue presentado en Junio del 2012 y trajo como novedades la inclusioacuten de

Apple Maps (en reemplazo de Google Maps) mejoras en Siri con informacioacuten mucho

maacutes precisa la integracioacuten de Facebook y Twitter en el sistema el modo no molestar el

soporte para LTE entre otras

Los usuarios de este sistema operativo recibieron una de las mayores

actualizaciones en Junio del 2013 cuando se presenta iOS 7 Esta nueva versioacuten contoacute

con un redisentildeo total de la interfaz de usuario basaacutendose en transparencias y degradados

Ademaacutes se introdujo el Centro de Control AirDrop una renovada app de fotos iTunes

Radio y CarPlay mejoras en el App Switcher videos a caacutemara lenta entre otras cosas

Junio del 2014 fue el mes donde quedoacute disponible iOS 8 una nueva versioacuten del

sistema operativo que intenta resolver algunos errores de iOS 7 y antildeadir ciertas mejoras

Las extensiones y la posibilidad de conectar apps entre siacute mediante el menuacute compartir

hicieron que iOS 8 fuese mucho maacutes productivo Ademaacutes incorporoacute widgets para el

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

30

Centro de Notificaciones o las notificaciones interactivas Ademaacutes se implementaron los

contactos favoritos los teclados de terceros la funcioacuten Reachability y la utilidad

Continuity y las aplicaciones Apple Pay Salud HandOff QuickType Compartir en

Familia iCloud Drive y Apple Music

En el 2015 se presenta iOS 9 que introdujo todo un cambio en el uso del sistema

gracias a la compatibilidad con el 3D Touch del iPhone 6s y el iPhone 6s Plus Se

actualizoacute Notas con nuevas funciones se sustituyoacute Newsstand por News se incorporaron

mejoras en Passbook que pasoacute a llamarse Wallet y se mejoroacute Mapas con direcciones y

traacutefico Se antildeadioacute Split View Picture-in-Picture y atajos en teclados de terceros Ademaacutes

el sistema ahora podiacutea aprovechar mejor la autonomiacutea del dispositivo gracias al Modo

ahorro de bateriacutea que limita las conexiones y caracteriacutesticas del sistema para no consumir

tanta energiacutea

Por uacuteltimo en Junio del 2016 quedoacute disponible iOS 10 versioacuten que se caracteriza

por abrirse a los desarrolladores Con esta nueva versioacuten se puede tener acceso a Siri al

3D Touch y a apps directas del sistema operativo Ademaacutes el centro de widgets ahora es

maacutes intuitivo y la pantalla de bloqueo maacutes uacutetil Como es habitual se aprecian mejoras en

distintas aplicaciones del sistema operativo y se permite borrar apps de Apple que no sean

utilizadas por los usuarios

222 Proceso de desarrollo Las aplicaciones moacuteviles para la plataforma iOS se desarrollan utilizando el

lenguaje de programacioacuten Objetive C El entorno de desarrollo oficial es la plataforma

Xcode [22] la cual opera en conjunto con Interface Builder una herramienta graacutefica para

la creacioacuten de interfaces de usuario

Actualmente hay dos grandes versiones del sistema operativo moacutevil en curso como

se puede apreciar en la Figura 10 Es algo a destacar que la uacuteltima versioacuten del sistema

operativo es soportada por el 63 de los dispositivos activos Claramente la

fragmentacioacuten interna es mucho menor que la encontrada en Android

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

31

Figura 9 Entorno de desarrollo Xcode

Figura 10 Distribucioacuten de versiones de iOS - Noviembre 2016

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

32

23 Desarrollo de Aplicaciones Nativas en Windows Phone

El sistema operativo moacutevil Windows Phone fue desarrollado por Microsoft y

sucede a Windows Mobile A diferencia de su predecesor estaacute enfocado en el mercado de

consumo en lugar del mercado empresarial

231 Evolucioacuten Su primera versioacuten lanzada en septiembre del 2010 fue denominada Windows

Phone 7 Fue presentado como un nuevo sistema operativo que incluye funciones de

integracioacuten con los servicios Xbox Live y Zune La interfaz conocida como Metro ha

sido revisada en su totalidad y comparte caracteriacutesticas visuales similares a la interfaz del

dispositivo Zune HD

Windows Phone 75 es una actualizacioacuten para Windows Phone lanzada en

septiembre de 2011 Esta nueva versioacuten incorporoacute numerosas caracteriacutesticas como por

ejemplo la inclusioacuten de Internet Explorer 9 con soporte para CSS3 Media Queries y

soporte para usar GPS cuando se trabaje con aplicaciones de ubicacioacuten geograacutefica entre

otros

En enero del 2013 se presenta Windows Phone 78 una actualizacioacuten que trae

mejoras como la nueva interfaz de usuario y fondos personalizados para la pantalla de

bloqueo Fue la uacuteltima gran actualizacioacuten de Windows Phone 7 ya que Microsoft se

centroacute en Windows Phone 8

Windows Phone 8 es la siguiente versioacuten del sistema operativo la cual fue

presentada a finales de 2012 Entre las nuevas caracteriacutesticas se incluyen

Nuevas pantallas de inicio y de bloqueo maacutes personalizables

Rincoacuten infantil un espacio exclusivo y controlado para los nintildeos

Cartera para almacenar tarjetas de fidelizacioacuten y de creacutedito

NFC

Internet Explorer 10

Integracioacuten con Skype

Nuevo nuacutecleo Windows NT con soporte para procesadores de varios

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

33

nuacutecleos

Captura de pantalla

Su proacutexima versioacuten es Windows Phone 81 y fue presentada en abril del 2014

Entre sus caracteriacutesticas maacutes relevantes se encuentran

Centro de notificaciones

Asistente de voz conocido con el nombre de Cortana

Sensores (de Wi-Fi de datos y de bateriacutea)

Aplicaciones que vienen en el paquete de instalacioacuten como Salud y

ejercicios Comida y bebida Viajes y Mapas (esta uacuteltima compite con Here

Maps la cual es la aplicacioacuten de mapas de Nokia)

Mejoras en la pantalla de inicio posibilidad de agregar fondos de pantalla y

una tercera columna de mosaicos personalizables (Tiles)

A mediados del 2014 Microsoft decide cambiar de estrategia tratando de unificar

todas las plataformas como PC tablets smartphones Xbox One entre otros Windows

10 (moacutevil) se dio a conocer puacuteblicamente durante un evento el 21 de enero para 2015 Al

igual que su homoacutelogo Windows 10 Mobile utiliza como navegador predeterminado

Microsoft Edge reemplazando Internet Explorer de Windows Phone 81 ya que este no

se adecuaba a las nuevas liacuteneas de disentildeo del sistema operativo

232 Proceso de desarrollo El entorno de desarrollo maacutes popular para el desarrollo de aplicaciones para

Windows Phone es Visual Studio (Figura 11) En la actualidad es posible utilizar diversos

lenguajes de programacioacuten VBNET y CNET C++ y JavaScript

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

34

Figura 11 Entorno de desarrollo Visual Studio

24 Diferencias teacutecnicas entre Android iOS y Windows Phone

Desarrollar aplicaciones moacuteviles para los tres sistemas operativos maacutes populares

implica conocer ciertos aspectos teacutecnicos de cada plataforma Algunos de estos aspectos

teacutecnicos difieren sustancialmente entre cada sistema operativo

Una de las caracteriacutesticas a tener en cuenta es si las aplicaciones moacuteviles se ejecutan

dentro de una maacutequina virtual especiacuteficamente disentildeada o si se ejecutan directamente

sobre el sistema operativo

Otro aspecto que los desarrolladores deben tener en cuenta es el lenguaje de

programacioacuten a utilizar para crear aplicaciones nativas Este aspecto es importante porque

incide en otros aspectos como por ejemplo la gestioacuten de memoria

Ademaacutes del lenguaje de programacioacuten a utilizar es importante conocer la

tecnologiacutea requerida para disentildear interfaces de usuario

Asimismo los desarrolladores deben familiarizarse con diferentes IDEs seguacuten la

plataforma en la que se desea desarrollar como asiacute tambieacuten con diferentes tiendas de

aplicaciones donde alojar los productos finales

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

35

Por uacuteltimo la tecnologiacutea de hardware requerida para soportar el sistema operativo

tambieacuten difiere seguacuten cada plataforma

La Tabla 1 compara cada uno de estos aspectos en los sistemas operativos moacuteviles

Android iOS y Windows Phone

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

36

Sistema

Operativo

Maacutequina

Virtual

Lenguaje de

Programacioacuten

Interfaces

de usuario

Gestioacuten de

memoria

IDE Plataforma de

desarrollo

Dispositivos Tienda de

Aplicaciones

Android Dalvik VM Java XML files Garbage

collector

Android

Studio

Multiplatforma Heterogeneos Google Play

Store

iOS No Objective-C Cocoa

Touch

Reference

counting

XCode Mac OS X Homogeneos iTunes Apps

Store

Windows

Phone

CLR C and Net XAML files Garbage

collector

Visual

Studio

Windows Vista7 Homogeneos Windows

Phone Store

Tabla 1 Diferencias teacutecnicas entre las plataformas Android iOS y Windows Phone

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

37

Capiacutetulo 3 Desarrollo de

Aplicaciones Moacuteviles

Multiplataforma

En los uacuteltimos antildeos el mercado de los dispositivos moacuteviles en especial

smartphones ha mostrado un crecimiento notable tanto en Argentina como en todo el

mundo En particular en nuestro paiacutes las plataformas que maacutes han crecido son Android

e iOS [1520]

Actualmente gran parte de la industria del software se concentra en desarrollar

soluciones para dispositivos moacuteviles proveyendo especialmente aplicaciones nativas

Las aplicaciones nativas tal como se mencionoacute en el capiacutetulo anterior ofrecen la

posibilidad de acceder a todas las capacidades del dispositivo (caacutemara GPS aceleroacutemetro

y agenda entre otras) su rendimiento es alto el acceso a Internet no es estrictamente

necesario y pueden ejecutarse en segundo plano notificando al usuario cuando se requiera

su atencioacuten Estas aplicaciones pueden distribuirsecomercializarse a traveacutes de las tiendas

en liacutenea correspondientes

El principal reto para los proveedores de aplicaciones es proporcionar soluciones

para todas las plataformas pero esto conlleva un alto costo [6] no es posible reusar el

coacutedigo fuente entre plataformas diferentes multiplicando esfuerzos y elevando los costos

de desarrollo actualizacioacuten y distribucioacuten de nuevas versiones

El desarrollo multiplataforma procura optimizar la relacioacuten costobeneficio

compartiendo la misma codificacioacuten entre las versiones para las distintas plataformas

Entre otras ventajas sobresalen menor tiempo y costo de desarrollo prestaciones

similares a las nativas con acceso al hardware del dispositivo y disponibilidad de

entornos potentes de desarrollo (Delphi Visual Studio etc) o en su lugar utilizacioacuten de

tecnologiacuteas (HTML5 Javascript y CSS) bien conocidas por los desarrolladores web

quienes pueden trasladar sus conocimientos y experiencias al paradigma moacutevil Sin

embargo el rendimiento de las aplicaciones y sus interfaces de usuario pueden afectar la

experiencia de usuario

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

38

Las aplicaciones multiplataforma pueden clasificarse en aplicaciones web moacuteviles

hiacutebridas interpretadas y generadas por compilacioacuten cruzada [5] En las secciones

siguientes se analizaran cada una de estas clasifcaciones

31 Aplicaciones Web Moacuteviles

Las Aplicaciones Web Moacuteviles disentildeadas para ejecutarse dentro de un navegador

se desarrollan con tecnologiacutea web estaacutendar (HTML CSS y JavaScript) y cuentan con

una serie de caracteriacutesticas favorables no necesitan adecuarse a ninguacuten entorno operativo

son independientes de la plataforma y su puesta en marcha es raacutepida y sencilla

Por contrapartida sus tiempos de respuesta decaen debido a la interaccioacuten cliente-

servidor Al mismo tiempo resultan ser menos atractivas que las aplicaciones nativas ya

que no se encuentran instaladas en el dispositivo lo que implica acceder previamente a

un navegador Ademaacutes las restricciones de seguridad impuestas a la ejecucioacuten de coacutedigo

por medio de un navegador limitan el acceso a todas las capacidades del dispositivo [23]

Asimismo no es posible desarrollar aplicaciones web que corran en segundo plano ni

tampoco aplicaciones offline ya que es requisito disponer de una conexioacuten a internet para

su funcionamiento

El proceso de desarrollo de una aplicacioacuten web moacutevil debe contemplar una serie de

caracteriacutesticas inherentes al entorno de ejecucioacuten Como ya ha sido mencionado las

aplicaciones web moacuteviles pueden ser accesibles desde cualquier dispositivo moacutevil que

cuente con un navegador y acceso a internet pero esto no significa que la navegacioacuten en

la aplicacioacuten resulte ser coacutemoda u oacuteptima Por ejemplo una aplicacioacuten web con un menuacute

compuesto de 20 iacutetems puede implicar una usabilidad correcta desde una PC Por lo

contrario para un dispositivo moacutevil con una pantalla limitada no resulta praacutectico que se

le presente al usuario tantas opciones en el menuacute Con este ejemplo lo que se pretende

mostrar es que para que una aplicacioacuten sea accesible desde diferentes dispositivos

moacuteviles posiblemente se tengan que realizar al menos dos disentildeos de presentacioacuten

diferentes un disentildeo para PC y otro disentildeo para dispositivos moacuteviles con una estructura

organizativa de la aplicacioacuten maacutes simplificada con respecto al disentildeo tradicional Por

ejemplo algunas de las funcionalidades de la aplicacioacuten para PC pueden ser eliminadas

para la versioacuten para dispositivos moacuteviles o presentadas de forma diferente

Para desarrollar diferentes presentaciones de una misma aplicacioacuten web

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

39

actualmente existen dos estrategias distintas ambas vaacutelidas seguacuten el contexto En los

siguientes apartados se analizaraacuten cada una de ellas

311 Aplicacioacuten Web dedicada y exclusiva para dispositivos moacuteviles Esta metodologiacutea ha sido el estaacutendar hasta el antildeo 2012 En ella la direccioacuten URL

y el coacutedigo HTML de la versioacuten moacutevil son distintos de la versioacuten de escritorio Por lo

general las direcciones URL tienen el formato mnombresitiocom

Algunas de las ventajas de este meacutetodo

- En general la carga es maacutes raacutepida y la navegacioacuten maacutes coacutemoda

- Es posible adaptar de manera maacutes faacutecil el contenido de las secciones

Desventajas de este meacutetodo

- Mantenimiento maacutes costoso Se debe mantener dos versiones distintas del mismo

sitio

- Dificulta el posicionamiento del sitio en los buscadores

- Estos desarrollos al final tienden a ser versiones muy reducidas de la web para

PC llevando al usuario a frustrarse y a preferir ver la versioacuten original de la web

312 Aplicacioacuten Web con Disentildeo Adaptable Con esta metodologiacutea la aplicacioacuten web se adapta al dispositivo desde el cual se la

estaacute accediendo El coacutedigo HTML y la direccioacuten URL de la aplicacioacuten son uacutenicos El

Disentildeo Adaptable o Responsive Design (Figura 12) tiene sus oriacutegenes en el antildeo 2008

cuando la W3C discutioacute y describioacute sus propoacutesitos Desde el antildeo 2012 -momento en el

cual Google recomendoacute fuertemente su implicancia [24]- viene en ascenso y

posiblemente llegue a convertirse en un standard en un corto plazo

Mediante un Disentildeo Adaptable todos los elementos de la web se reajustan en ancho

y altura adaptaacutendose al tamantildeo de tu pantalla Incluso es posible ocultar secciones cuando

se accede desde un dispositivo moacutevil

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

40

Figura 12 Disentildeo Adaptable

Las principales ventajas del desarrollo de aplicaciones web con Disentildeo Adaptable

son

- El mantenimiento es menos costoso ya que solo hay que mantener una uacutenica

versioacuten de la aplicacioacuten

- Se simplifica el proceso de posicionar la aplicacioacuten en los buscadores

Como contrapartida el Disentildeo Adaptable presenta una serie de desventajas

- Requiere de mayores niveles teacutecnicos para su desarrollo

- El contenido de las aplicaciones con Disentildeo Adaptable puede ser mayor que el

contenido de las aplicaciones web especiacuteficas para dispositivos moacuteviles

perjudicando el tiempo de carga cuando se utiliza un tipo de conexioacuten no muy

potente y generando un mayor consumo de datos

En la actualidad existe una gran cantidad de frameworks que simplifican el

desarrollo de aplicaciones web con disentildeo adaptable destacaacutendose por su popularidad y

extensa documentacioacuten los frameworks Bootstrap [25] y Foundation [26]

32 Aplicaciones Hiacutebridas

Las aplicaciones hiacutebridas utilizan tecnologiacuteas web (HTML Javascript y CSS) pero

no son ejecutadas por un navegador En su lugar se ejecutan en un contenedor web

(webview) como parte de una aplicacioacuten nativa la cual estaacute instalada en el dispositivo

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

41

moacutevil Desde una aplicacioacuten hiacutebrida es posible acceder a las capacidades del dispositivo

a traveacutes de diversas API

Las aplicaciones hiacutebridas ofrecen grandes ventajas permitiendo la reutilizacioacuten de

coacutedigo en las distintas plataformas el acceso al hardware del dispositivo y la distribucioacuten

a traveacutes de las tiendas de aplicaciones En contrapartida se observan dos desventajas de

las aplicaciones hiacutebridas respecto del caso nativo i) la experiencia de usuario se ve

perjudicada al no utilizar componentes nativos en la interfaz y ii) la ejecucioacuten se ve

ralentizada por la carga asociada al contenedor web

Afortunadamente existe una diversidad de frameworks que permiten desarrollar

aplicaciones hiacutebridas A continuacioacuten se haraacute un breve resumen de los maacutes populares

321 PhoneGap PhoneGap [27] es un framework gratuito y open source creado en el antildeo 2008 por

la empresa Nitobi Software que permite crear aplicaciones moacuteviles usando tecnologiacutea

web estaacutendar HTML JavaScript y CSS En octubre del 2011 Adobe adquiere la empresa

Nitobi y aporta el coacutedigo de PhoneGap a Apache Software Foundation para iniciar un

nuevo proyecto por encima de PhoneGap llamado Apache Cordova [28] PhoneGap pasoacute

a ser una de las varias distribuciones de Apache Cordova (Figura 13) brindando servicios

extras como por ejemplo Adobe PhoneGap Build [29] un servicio de compilacioacuten en la

nube proporcionado por Adobe Creative Cloud PhoneGap Desktop y PhoneGap

Developer

PhoneGap permite compilar aplicaciones para las siguientes plataformas Android

IOS Amazon Fire OS Windows Phone Windows 8 Ubuntu Tizen Firefox OS

Blackberry 10

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

42

Figura 13 Funcionamiento de Apache Cordova

322 CocoonJS CocoonJS [30] es un framework para el desarrollo de aplicaciones moacuteviles

producido por Ludei [31] Actualmente cuenta con una licencia propietaria y ofrece

diferente tipos de planes pagos y gratuitos El mencionado framework estaacute basado en

Apache Cordova al igual que PhoneGap pero se diferencia de este uacuteltimo en que hace

un mayor hincapieacute en la performance de las aplicaciones resultantes CocoonJS ofrece

dos tipos de webview

Canvas+ un webview liviano optimizado para video juegos Provee solo un

subconjunto de las funcionalidades del HTML5 (canvas audio motion

geolocalizacioacuten etc) necesarias para desarrollar video juegos con el objetivo de

brindar la mejor performance posible

Webview+ un potente y completo webview basado en el webview del proyecto

Chromium el cual cuenta de una mejor performance en comparacioacuten con el

webview por defecto de Apache Cordova

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

43

CocoonJs permite crear aplicaciones tanto para iOS como para Android

323 Ionic Ionic [32] es un completo SDK gratuito y open source para el desarrollo de

aplicaciones hiacutebridas producido por Max Lynch Ben Sperry y Adam Bradley de la

compantildeia Drifty Co en el antildeo 2013 En un tiempo relativamente corto alcanzoacute una

popularidad a destacar Estaacute basado en Apache Cordova permitiendo desarrollar

aplicaciones con tecnologiacutea web A diferencia de otros frameworks para el desarrollo de

aplicaciones hibridas Ionic provee un framework para la interfaz de usuario y

herramientas visuales para disentildear interfaces

Mediante Ionic es posible crear aplicaciones para Android IOS Windows Phone y

Firefox OS

324 Sencha Touch Sencha Touch [33] es un framework gratuito Model-View-Controller (MVC)

JavaScript construido sobre el sistema de clases de Ext JS disentildeado especialmente para

el desarrollo de aplicaciones web moacuteviles para dispositivos taacutectiles [34]

Al igual que PhoneGap Sencha Touch permite a los desarrolladores crear

aplicaciones moacuteviles a partir de un desarrollo web con HTML5 CSS y Javascript A

diferencia de PhoneGap Sencha no necesita de ninguna libreriacutea de terceros para construir

interfaces similares a las nativas ya que el framework provee consigo una gran cantidad

de componentes visuales listos para utilizar

Sencha empaqueta el coacutedigo del proyecto mediante PhoneGap para luego poder

construir aplicaciones en todas las plataformas soportadas por PhoneGap

33 Aplicaciones Interpretadas

Las aplicaciones interpretadas son implementadas utilizando un lenguaje base el

cual se traduce en su mayor parte a coacutedigo nativo mientras el resto es interpretado en

tiempo de ejecucioacuten Estas aplicaciones son implementadas de manera independiente de

las plataformas utilizando diversas tecnologiacuteas y lenguajes tales como Javascript Java

Ruby y XML entre otros

Una de las principales ventajas de este tipo de aplicaciones es que se obtienen

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

44

interfaces de usuario totalmente nativas Sin embargo los desarrolladores experimentan

una dependencia total con el entorno de desarrollo elegido

Seguidamente se presentaran algunos de frameworks maacutes reconocidos para el

desarrollo de aplicaciones interpretadas

331 Appcelerator Titanium Desarrollado por Appcelerator Inc Appcelerator Titanium [35] es un framework

de coacutedigo abierto que permite la creacioacuten de aplicaciones moacuteviles para las plataformas

iOS y Android Dicho framework estaacute formado por Titanium Studio un entorno de

desarrollo de coacutedigo libre para la codificacioacuten de aplicaciones moacuteviles multiplataforma

y el SDK Titanium una serie de herramientas para el desarrollo testeo anaacutelisis

depuracioacuten y compilacioacuten de aplicaciones

Las aplicaciones desarrolladas con Appcelerator Titanium se codifican utilizando

el lenguaje Javascript el cual es evaluado en tiempo de ejecucioacuten mediante un inteacuterprete

de Javascript que se ejecuta en el sistema operativo del dispositivo Al iniciar la

aplicacioacuten desde el coacutedigo nativo se ejecuta el coacutedigo Javascript y mediante la API de

Titanium se mapea uno-a-uno cada elemento del coacutedigo Javascript con los elementos

nativos De esta manera la API de Titanium actuacutea como puente logrando interfaces de

usuario compuestas de controles nativos Este entorno de desarrollo utiliza el framework

Alloy disentildeado para el desarrollo aacutegil de aplicaciones moacuteviles Alloy estaacute basado en la

arquitectura MVC y soporta el uso de tecnologiacuteas populares como Backbonejs [36] y

Underscorejs [37]

Los creadores de Titanium destacan que mediante este framework es posible

reutilizar entre el 60 y 90 del coacutedigo entre distintas plataformas

332 NativeScript El 5 de marzo del 2015 la empresa Telerik lanzoacute NativeScript [38] un proyecto de

coacutedigo abierto el cual permite generar aplicaciones nativas utilizando JavaScript

Asimismo es posible desarrollar la aplicacioacuten utilizando el lenguaje TypeScript [39]

lenguaje libre y de coacutedigo abierto desarrollado por Microsoft que extiende a JavaScript

esencialmente antildeadiendo tipado estaacutetico y objetos basados en clases En este sentido

cuando se compila la aplicacioacuten se realiza la traduccioacuten del coacutedigo TypeScript a coacutedigo

JavaScript

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

45

NativeScript provee un moacutedulo multiplataforma que permite obtener aplicaciones

nativas desde coacutedigo JavaScript Este moacutedulo expone las capacidades del dispositivo y

de la plataforma subyacente de una manera consistente y permite accederlas desde el

coacutedigo JavaScript De igual manera las interfaces de usuario pueden ser definidas

mediante coacutedigo JavaScript documentos HTML y archivos CSS abstrayeacutendose de los

componentes nativos reales

Cuando la aplicacioacuten es compilada parte del coacutedigo multiplataforma es traducido

a coacutedigo nativo mientras que el resto es interpretado en tiempo de ejecucioacuten (Figura 14)

Por el momento NativeScript permite generar aplicaciones para Android e iOS y

se preveacute dar soporte a Windows Phone NativeScript renderiza controles nativos sin

utilizar WebViews logrando una performance y experiencia de usuario similar al de las

aplicaciones nativas

Figura 14 Proceso de interpretacioacuten mediante NativeScript

34 Aplicaciones Generadas por Compilacioacuten Cruzada

Estas aplicaciones se compilan de manera nativa creando una versioacuten especiacutefica de

alto rendimiento para cada plataforma destino Ejemplos de entornos de desarrollo para

generar aplicaciones por compilacioacuten cruzada son Applause [40] Xamarin [41]

Embarcadero Delphi 10 Seattle [42] y RubyMotion [43]

El entorno de desarrollo abierto Applause utiliza como entrada un lenguaje

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

46

especiacutefico del dominio basado en el framework Xtext [44] disentildeado expliacutecitamente para

aplicaciones moacuteviles orientadas a datos y genera coacutedigo fuente en Objective C Java C

o Python Las caracteriacutesticas de Xamarin Embarcadero Delphi 10 Seattle y RubyMotion

se presentan en secciones posteriores

341 Xamarin Xamarin es una plataforma de desarrollo de aplicaciones moacuteviles para generar

aplicaciones 100 nativas para iOS Android y Windows a partir de una base de coacutedigo

CNET comuacuten para conseguir entre un 75 y hasta casi un 100 de reutilizacioacuten de

coacutedigo entre plataformas Las aplicaciones escritas con Xamarin y C disponen de acceso

completo a las API de la plataforma subyacente asiacute como de la capacidad de crear

interfaces de usuario nativas y de realizar la compilacioacuten en coacutedigo nativo por lo que el

impacto en el rendimiento en tiempo de ejecucioacuten es escaso

Xamarin es una compantildeiacutea que se establecioacute en mayo de 2011 por los mismos

ingenieros que crearon el proyecto Mono [45] consistente en una implementacioacuten libre

de la plataforma de desarrollo NET para dispositivos Android iOS y GNULinux

Anteriormente este proyecto se llamaba MonoTouch y MonoDroid

Si bien Xamarin cuenta con su propio IDE denominado Xamarin Studio (Figura

15) es posible integrarlo con Microsoft Visual Studio y de esta manera generar tambieacuten

aplicaciones para Windows incluido Windows RT para tablets y Windows Phone para

celulares

En febrero del 2016 Xamarin es comprada por Microsoft y desde ese momento la

plataforma Xamarin y el IDE Xamarin Studio pasaron a ser gratuitas

Xamarin propone un enfoque de desarrollo multiplataforma en el que se comparte

la codificacioacuten completa de la loacutegica del negocio Sin embargo las interfaces deben ser

programadas de manera independiente para cada una de las plataformas destino Asiacute la

reutilizacioacuten de coacutedigo seguacuten estudios estadiacutesticos de la compantildeiacutea Xamarin es cercana

al 85

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

47

Figura 15 Entorno de Desarrollo Xamarin Studio

342 Embarcadero Delphi 10 Seattle Embarcadero Delphi 10 Seattle [42] es una plataforma de desarrollo propietaria y

no gratuita que permite a los desarrolladores crear aplicaciones raacutepidamente a traveacutes de

un entorno visual coacutemodo e intuitivo (Figura 16) La aplicacioacuten desarrollada puede ser

compilada para muacuteltiples plataformas incluyendo Windows Mac Android e iOS

Delphi 10 Seattle al igual que Xamarin aventaja a otros tipos de aplicaciones

multiplataformas con resultados 100 nativos con acceso total a los sensores y

capacidades del dispositivo (caacutemara notificaciones GPS aceleroacutemetro entre otras)

Un punto a destacar es que Delphi 10 Seattle a traveacutes del framework de interfaces

de usuario FireUI Multi-Device Designer permite crear interfaces de usuario totalmente

nativas sin la necesidad de tener que disentildear interfaces especiacuteficas para cada plataforma

en particular

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

48

Figura 16 Entorno de Desarrollo Delphi 10 Seattle

343 RubyMotion En Mayo de 2012 la empresa HipByte lanza RubyMontion un proyecto que

permite generar aplicaciones para iOS Android y OS X utilizando el lenguaje de

programacioacuten Ruby

Para poder generar las aplicaciones multiplataforma RubyMotion posee

implementaciones de Ruby sobre los sistemas operativos destinos (Android e iOS) que

permiten acceder a todas las caracteriacutesticas provistas por cada plataforma Las

herramientas de compilacioacuten provistas por RubyMotion se encargan de embeber la

correspondiente implementacioacuten de Ruby al momento de compilar para cada plataforma

La principal desventaja de RubyMotion es que soacutelo funciona bajo el sistema

operativo OS X Otro factor a tener en cuenta es que no posee un entorno de desarrollo

integrado que facilite todo el proceso al desarrollador esto se ve solventado gracias a que

ofrece complementos para los IDE y editores de coacutedigo maacutes utilizados

Finalmente si bien el producto es un servicio pago ofrece una posibilidad de

probarlo gratuitamente aunque con soporte uacutenicamente para compilar a la uacuteltima versioacuten

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

49

de cada plataforma destino

Capiacutetulo 4 Experimentacioacuten

50

Capiacutetulo 4 Experimentacioacuten

Con el objetivo de profundizar la investigacioacuten de las diferentes metodologiacuteas de

desarrollo de aplicaciones moacuteviles multiplataforma es que se llevaron a cabo diferentes

experimentos en simultaacuteneo El primer experimento consiste en el desarrollo de una

aplicacioacuten moacutevil utilizando cada una de las metodologiacuteas estudiadas en el capiacutetulo

anterior con el objetivo de analizar el proceso de desarrollo El segundo experimento

tiene como objetivo analizar el rendimiento de las aplicaciones moacuteviles generadas

mediante las metodologiacuteas estudiadas a traveacutes de un caacutelculo matemaacutetico Por uacuteltimo se

presenta un informe comparativo que pueda ayudar en la toma de decisiones sobre queacute

metodologiacutea utilizar en futuros desarrollos

41 Aplicacioacuten Moacutevil para la plataforma de E-Learning WebUNLP

411 Descripcioacuten del problema WebUNLP es un entorno virtual de ensentildeanza y aprendizaje que permite a los

docentes mediar sus propuestas educativas Alumnos y docentes pueden encontrarse en

ese espacio para compartir materiales de estudio comunicarse y generar una experiencia

educativa en forma virtual [46]

Actualmente WebUNLP cuenta con una versioacuten web enfocada a computadoras de

escritorio o portaacutetiles pero no estaacute adaptada para ser utilizada desde dispositivos moacuteviles

El desarrollo planteado consiste en extender WebUNLP con la construccioacuten de una

aplicacioacuten moacutevil que permita acceder a determinadas funcionalidades del sistema a

traveacutes de un dispositivo moacutevil El enfoque propuesto incluye un anaacutelisis de la misma

solucioacuten comparando el desarrollo nativo web hiacutebrido interpretado y de compilacioacuten

cruzada a fin de establecer cuaacutel de ellos es conveniente

Como ocurre con cualquier desarrollo de software la construccioacuten de una

aplicacioacuten moacutevil implica tener claramente definido su propoacutesito y cuaacuteles requerimientos

debe cumplir En particular para el caso de software para dispositivos moacuteviles resulta

esencial tener objetivos maacutes acotados que en su versioacuten de escritorio [47]

Capiacutetulo 4 Experimentacioacuten

51

Para el caso especiacutefico de WebUNLP se realizoacute el desarrollo incremental de una

aplicacioacuten moacutevil y esta primera versioacuten se enfocoacute en una de sus herramientas de

comunicacioacuten la cartelera Esta herramienta permite comunicar las novedades de un

curso como por ejemplo el cambio de horario de una cursada recordar las fechas de

entrega de un trabajo praacutectico entre otras [46]

412 Anaacutelisis Uno de los primeros interrogantes planteados fue la eleccioacuten de la plataforma En

teacuterminos de mercado los sistemas operativos que predominan en Argentina son Android

e iOS [4815] con lo cual se decidioacute dar soporte a estos dos sistemas operativos

Se analizaron los requerimientos funcionales y no funcionales de forma aislada a la

plataforma y luego de forma especiacutefica para cada una de ellas

A continuacioacuten se presentan algunos requerimientos a cumplir por la aplicacioacuten

El usuario debe poder ingresar a la aplicacioacuten con las mismas credenciales que las

utilizadas para acceder a la versioacuten web de escritorio

El usuario debe poder acceder a la cartelera de todos los cursos en los que

participa ya sea como docente o alumno

El usuario debe recibir una notificacioacuten en su dispositivo cuando una novedad es

publicada en la cartelera Este requerimiento no se puede cumplir en la versioacuten

web accesible desde computadoras de escritorio yo portables

El usuario debe tener la misma experiencia de uso en todas las plataformas

operativas

La aplicacioacuten web existente debe estar sincronizada con la aplicacioacuten moacutevil a

desarrollar esto significa que cualquier cambio realizado desde la aplicacioacuten

moacutevil debe verse reflejado en la versioacuten web y viceversa

413 Disentildeo Para satisfacer los requerimientos planteados en el punto anterior a excepcioacuten de

la notificacioacuten el disentildeo de la aplicacioacuten moacutevil web consiste en una reacuteplica de lo ofrecido

por WEBUNLP adaptaacutendose solamente la interfaz al tamantildeo de pantalla del dispositivo

moacutevil

Capiacutetulo 4 Experimentacioacuten

52

Para el disentildeo de las aplicaciones moacuteviles nativa hiacutebrida interpretada y de

compilacioacuten cruzada la situacioacuten es maacutes compleja En la Figura 17 se presenta la

arquitectura geneacuterica de todos los componentes que participan en este escenario de

desarrollo En ella se observa el acceso desde una PC a WebUNLP y el acceso desde

dispositivos moacuteviles a la informacioacuten de WebUNLP mediante servicios web Para el

desarrollo de los servicios web se disentildeoacute una API Restful dada su simpleza escalabilidad

e interoperabilidad [49]

Figura 17 Arquitectura geneacuterica para aplicacioacuten nativa e hiacutebrida

Asimismo existe una tarea programada (Cron) de ejecucioacuten intermitente a

intervalos regulares de tiempo la cual notifica a los dispositivos moacuteviles correspondientes

cuando se crea una novedad en la cartelera de WebUNLP El Cron identifica el sistema

operativo del dispositivo a notificar y genera dicha notificacioacuten

En cuanto a la interfaz graacutefica se planteoacute un disentildeo independiente de la plataforma

para analizar los aspectos de usabilidad de la aplicacioacuten y luego se realizaron los ajustes

necesarios para cada tipo de aplicacioacuten

En las interfaces disentildeadas la navegacioacuten es en serie en el orden en que se presentan

en el mockup [50] de la Figura 18

Capiacutetulo 4 Experimentacioacuten

53

Figura 18 Mockup independiente del tipo de aplicacioacuten

414 Desarrollo

4141 Aplicacioacuten Nativa para Android

El desarrollo de aplicaciones para la plataforma Android requiere disponer del Java

Development Kit (JDK) y su entorno de programacioacuten conocido como Android SDK

Este uacuteltimo provee libreriacuteas y herramientas necesarias para construir testear y depurar

aplicaciones para Android

El desarrollo de la aplicacioacuten de WebUNLP para Android se realizoacute seguacuten las

convenciones adoptadas por su comunidad porque aplica buenas praacutecticas en la

construccioacuten de interfaces y de la loacutegica detraacutes de ellas el acceso a datos y a servicios

web Para cumplir el requerimiento de las notificaciones en el dispositivo

correspondiente el Cron genera la notificacioacuten mediante el uso del servicio Google Cloud

Messaging (GCM) [51] En la Figura 19 se presentan las interfaces de la aplicacioacuten

desarrollada

Figura 19 Aplicacioacuten nativa para Android

Capiacutetulo 4 Experimentacioacuten

54

4142 Aplicacioacuten Nativa para iOS

La plataforma Apple iOS estaacute basada en un modelo propietario es por ello que el

desarrollo de una aplicacioacuten nativa iOS implica contar con una Apple Mac ejecutando OS

X con Xcode instalado El lenguaje de programacioacuten principal es Objective C Xcode es

el entorno de desarrollo de Apple para todos sus dispositivos y es el encargado de

proporcionar el iOS SDK con las herramientas compiladores y frameworks necesarios

Ademaacutes Xcode viene integrado con simuladores para dispositivos iOS (iPhones y iPads)

que facilitan las etapas de prueba del sistema desarrollado

Para los aspectos referentes a la interfaz graacutefica y la interaccioacuten con el usuario se

siguieron las convenciones propuestas por Apple [52] para lograr una mejor integracioacuten

de la aplicacioacuten con el sistema operativo y mejorar la experiencia del usuario

Por uacuteltimo para satisfacer el requerimiento de notificaciones el Cron notifica al

dispositivo iOS correspondiente mediante el uso del servicio Apple Push Notification

Service (APNs) [53] En la Figura 20 se presentan las interfaces de la aplicacioacuten

desarrollada

Figura 20 Aplicacioacuten nativa para iOS

4143 Aplicacioacuten Web Moacutevil

Se desarrolloacute una aplicacioacuten web capaz de acceder a la cartelera de WebUNLP

disponible para cualquier dispositivo moacutevil que cuente con un navegador que soporte las

caracteriacutesticas utilizadas para el desarrollo HTML5 CSS3 y Javascript

Como la velocidad de transmisioacutenrecepcioacuten de datos de un dispositivo moacutevil a

traveacutes de WiFi y en particular 3G es inferior a la velocidad de una computadora de

Capiacutetulo 4 Experimentacioacuten

55

escritorio la versioacuten web de la cartelera de WebUNLP es liviana y gran parte de los

requerimientos son implementados a traveacutes de Ajax [54] para evitar ante alguacuten cambio

la recarga de la paacutegina completa

Debido a las limitaciones que tienen las aplicaciones que se ejecutan sobre un

navegador no es posible implementar la recepcioacuten de una notificacioacuten en el dispositivo

cuando una novedad es publicada en la cartelera

4144 Aplicacioacuten Hiacutebrida desarrollada con PhoneGap y Jquery Mobile

Para la construccioacuten de la aplicacioacuten WebUNLP hiacutebrida se utilizoacute el framework

PhoneGap [27] el cual permite desarrollar aplicaciones moacuteviles que utiliza tecnologiacuteas

comunes a todos los dispositivos HTML5 CSS y Javascript

Asimismo se utilizoacute el framework Javascript Jquery Mobile [55] para lograr

interfaces con apariencia y comportamiento consistente a traveacutes de las diferentes

plataformas moacuteviles

Con el objetivo de implementar el patroacuten de disentildeo MVC se utilizoacute la libreriacutea

Backbonejs [36]

Por uacuteltimo para satisfacer el requerimiento de notificaciones se utilizoacute el plugin

Pushwoosh [56]

En la figura 5 se presentan las interfaces de la aplicacioacuten desarrollada

Figura 21 Aplicacioacuten hiacutebrida desarrollada con PhoneGap

Capiacutetulo 4 Experimentacioacuten

56

4145 Aplicacioacuten Hiacutebrida desarrollada con Sencha Touch

El desarrollo de WebUNLP utilizando Sencha Touch se vio favorecido por el uso

del patroacuten de disentildeo MVC Esto permitioacute mayor flexibilidad y legibilidad en el coacutedigo

[57] [34]

Sencha ofrece Sencha Command una herramienta multiplataforma de liacutenea de

comandos que provee tareas automatizadas para todo el ciclo completo de una aplicacioacuten

En el caso de WebUNLP se utilizoacute tanto para la generacioacuten del proyecto como para el

empaquetado de la aplicacioacuten

En la Figura 22 se presentan las interfaces de la aplicacioacuten desarrollada

Figura 22 Aplicacioacuten desarrollada con Sencha Touch

4146 Aplicacioacuten Interpretada de WebUNLP con Appcelerator Titanium 3

Para desarrollar una aplicacioacuten moacutevil experimental seguacuten el enfoque interpretado

se utilizoacute el entorno de desarrollo gratuito y open source Appcelerator Titanium 3 [35]

Se destaca la simplicidad y legibilidad de los controladores y modelos de la

aplicacioacuten desarrollada luego de utilizar Alloy el framework de Titanium que permite

disentildear aplicaciones seguacuten el patroacuten de disentildeo MVC Para la construccioacuten de las vistas se

puede optar por la programacioacuten mediante Javascript y la API de Titanium o bien por

una especificacioacuten XML con estilos TSS (Titanium Style Sheets) Esta uacuteltima opcioacuten

simplifica el proceso de creacioacuten de las vistas aunque falta todaviacutea un buen editor visual

de interfaces que lo potencie

Capiacutetulo 4 Experimentacioacuten

57

Para cubrir requerimientos de notificaciones en el dispositivo Titanium provee el

moacutedulo PushNotifications para plataformas Android e iOS

La Figura 24 (a) muestra la experimentacioacuten con Titanium

4147 Aplicacioacuten Generada por Compilacioacuten Cruzada de WebUNLP utilizando XamarinVisual Studio

Tal como se mencionoacute en la seccioacuten 341 Xamarin propone un enfoque de

desarrollo multiplataforma en el que se comparte la codificacioacuten completa de la loacutegica

del negocio Sin embargo las interfaces deben ser programadas de manera independiente

para cada una de las plataformas destino (ver Figura 23) Asiacute la reutilizacioacuten de coacutedigo

seguacuten estudios estadiacutesticos de la compantildeiacutea Xamarin es cercana al 85

Figura 23 Enfoque uacutenico de desarrollo Xamarin

Para el estudio de las aplicaciones generadas por compilacioacuten cruzada se desarrolloacute

la aplicacioacuten moacutevil de WebUNLP utilizando Xamarin integrado con Microsoft Visual

Studio Siguiendo la estrategia maacutes eficiente para trabajar en este entorno se ha creado

una solucioacuten uacutenica conteniendo tres proyectos distintos Uno de ellos se utilizoacute para

generar la aplicacioacuten Android otro para la aplicacioacuten Windwos Phone 8 y el tercero para

la implementacioacuten de una biblioteca de clases portable (PCL por sus siglas en ingleacutes) con

todo el coacutedigo compartido Los tres proyectos fueron desarrollaacutendose de manera conjunta

y concurrente

Aunque una de las ventajas maacutes importantes de Xamarin es la reutilizacioacuten de

coacutedigo eacutesta se ve fuertemente afectada por el tipo de aplicacioacuten que se desarrolla La

relacioacuten existente entre la complejidad de la interfaz y la loacutegica del negocio impacta

directamente sobre la posibilidad de mantener la mayor cantidad de coacutedigo compartido

Capiacutetulo 4 Experimentacioacuten

58

en la PCL En el desarrollo de WebUNLP la reutilizacioacuten de coacutedigo ha sido cercana al

50 Sin embargo no debe despreciarse la ventaja de utilizar el mismo lenguaje entorno

y conjunto de herramientas comunes en el desarrollo de aplicaciones para distintas

plataformas moacuteviles

La Figura 24 (b) presenta la interfaz desarrollada para Windows Phone 8

4148 Aplicacioacuten Generada por Compilacioacuten Cruzada de WebUNLP utilizando Delphi 10 Seattle

Para el profundizar el estudio de las aplicaciones generadas por compilacioacuten

cruzada ademaacutes se desarrolloacute la aplicacioacuten moacutevil de WebUNLP utilizando Delphi 10

Seattle En particular fueron de gran utilidad tanto los componentes provistos por Delphi

para acceder a servicios RESTful como el entorno visual de desarrollo de Delphi 10

Seattle

Para la recepcioacuten de notificaciones en el dispositivo de las novedades de WebUNLP

se utilizoacute el componente TPushEvent conectado al servicio Kinvey [58]

La Figura 24 (c) presenta la interfaz de la aplicacioacuten desarrollada

(a) (b) (c)

Figura 24 Aplicacioacuten desarrollada con a) Titanium b) XamarinVisual Studio y c) Delphi XE

415 Conclusiones del experimento WebUNLP Seleccionar un dominio para desarrollar un caso experimental tiene sus

particularidades La novedad de disponer una aplicacioacuten moacutevil no es motivo suficiente

que justifique tal desarrollo Es necesario satisfacer un conjunto de requerimientos

claramente planteados

Capiacutetulo 4 Experimentacioacuten

59

WebUNLP es un entorno virtual de ensentildeanza y aprendizaje utilizado por diversos

cursos de grado y postgrado de la Universidad Nacional de La Plata Por ende la cantidad

de usuarios beneficiados por acceder desde cualquier lugar a este entorno es importante

De esta manera se optoacute por elegir dicho espacio virtual para ser replicado en una

versioacuten moacutevil que no soacutelo permita acercarlo a sus usuarios sino que ademaacutes ampliacutee sus

funciones en este caso puntualmente para la cartelera

Para el desarrollo de esta experimentacioacuten se desarrolloacute la misma aplicacioacuten para

los cinco tipos de enfoques de desarrollo moacutevil (web nativa hiacutebrida interpretada y

generada por compilacioacuten cruzada)

Se destaca la gran simpleza de generar la versioacuten web dado que se utilizan las

mismas herramientas tecnoloacutegicas que las usadas para el desarrollo de cualquier

aplicacioacuten web tradicional La principal diferencia en este sentido radica en la limitacioacuten

de espacio en la pantalla del dispositivo No obstante el mayor contraste estaacute dado en que

no es posible acceder a todas las capacidades de hardware del dispositivo lo que impidioacute

implementar uno de los requerimientos probablemente el maacutes interesante la notificacioacuten

de novedades de la cartelera de WebUNLP al usuario

Por otra parte las versiones nativas han cumplido todos los requerimientos Aunque

la mayor desventaja consiste en la no portabilidad lo que implicoacute un desarrollo especiacutefico

para la plataforma que se desee cubrir En este trabajo se han presentado los desarrollos

para Android e iOS sistemas operativos maacutes usados en Argentina con un costo de

desarrollo y mantenimiento inherente mayor

Para el caso del enfoque hiacutebrido tanto la versioacuten de WebUNLP desarrollada con

PhoneGap y Jquery Mobile como la versioacuten desarrollada con Sencha Touch han logrado

conjugar la simpleza del desarrollo web con el uso de todas las capacidades del

dispositivo Este tipo de enfoque pretende suplir las desventajas de los dos enfoques

previos hecho que lo posiciona como una eleccioacuten realmente interesante siempre

condicionada por los requerimientos especiacuteficos a cumplir

Por el lado del modo de desarrollo interpretado la versioacuten de WebUNLP

desarrollada con Titanium logroacute resolver todos los requerimientos previamente

planteados Al igual que en el enfoque hiacutebrido es un punto a destacar que el desarrollo

de la aplicacioacuten con Titanium es relativamente simple y es posible reutilizar todo el

Capiacutetulo 4 Experimentacioacuten

60

coacutedigo entre plataformas Lo que lo hace la eleccioacuten prima facie es el hecho de obtener

interfaces totalmente nativas algo que no se lograba mediante el enfoque hiacutebrido

Por uacuteltimo las versiones de WebUNLP generadas con el enfoque de compilacioacuten

cruzada con Xamarin y Delphi lograron cumplir los requerimientos planteados Se

destaca el hecho de que se genera interfaces totalmente nativas pero considero que el

costo es muy alto se debe disentildear las interfaces para cada plataforma de manera

independiente lo que hace que no se pueda reutilizar todo el coacutedigo fuente de la

aplicacioacuten

42 Enfoques de desarrollo Anaacutelisis comparativo de rendimiento 421 Descripcioacuten del Problema

Hace apenas unas deacutecadas atraacutes el uso de los sistemas de software estaba

restringido a un grupo reducido de usuarios especializados Aquella eacutepoca contrasta

fuertemente con la actualidad en la que los smartphones pequentildeas computadoras moacuteviles

de propoacutesito general se han vuelto cotidianos y omnipresentes Estos dispositivos pueden

utilizarse para llevar a cabo tareas complejas y criacuteticas requiriendo la mejora continua de

las capacidades de coacutemputo la disponibilidad el rendimiento eficiente entre otras

necesidades La evolucioacuten vertiginosa de esta tecnologiacutea ejerce presioacuten en la adaptacioacuten

de la Ingenieriacutea de Software

Respecto del desarrollo para dispositivos moacuteviles se debe considerar una serie de

caracteriacutesticas propias de esta actividad que no estaban presentes en el desarrollo

tradicional de software [59] Es necesario tener en cuenta sobre queacute tipo de dispositivos

se debe ejecutar la aplicacioacuten a construir La diversidad de plataformas lenguajes de

programacioacuten herramientas de desarrollo estaacutendares protocolos y tecnologiacuteas de red

algunas limitaciones de ciertos dispositivos y las exigencias de tiempo del mercado entre

otros constituyen algunos de los problemas a tratar

En la mayoriacutea de los casos el eacutexito de un producto de software para dispositivos

moacuteviles estaraacute condicionado por el nivel de popularidad que logre alcanzar Para

maximizar su presencia en el mercado es necesario que la aplicacioacuten pueda ejecutarse

sobre la mayor cantidad de plataformas moacuteviles existentes especialmente sobre las dos

maacutes populares Android e iOS [60] Para lograr este objetivo existen dos alternativas

Capiacutetulo 4 Experimentacioacuten

61

i) Desarrollar aplicaciones especiacuteficas para cada plataforma impulsando en

paralelo varios proyectos de desarrollo con las herramientas y lenguajes propios de cada

una de ellas Estas aplicaciones analizadas previamente en este trabajo se denominan

aplicaciones nativas

ii) Generar aplicaciones que puedan ejecutarse en forma directa sobre maacutes de una

plataforma de sistema operativo a partir de un uacutenico proyecto de desarrollo Estas

aplicaciones como ya se ha presentado en este trabajo se denominan aplicaciones

multiplataforma

En los uacuteltimos antildeos se ha incrementado el intereacutes de la comunidad de Ingenieriacutea de

Software por el estudio del desarrollo de aplicaciones multiplataforma para dispositivos

moacuteviles

En [5] se presenta un anaacutelisis comparativo de enfoques de desarrollo de aplicaciones

multiplataforma para dispositivos moacuteviles proponiendo la siguiente taxonomiacutea

aplicaciones web moacuteviles aplicaciones hiacutebridas aplicaciones interpretadas y

aplicaciones generadas por compilacioacuten cruzada

En [7] y [8] se analizan aspectos generales de frameworks de desarrollo

multiplataforma para dispositivos moacuteviles

En [61] se comparan aspectos no funcionales para los diferentes enfoques de

desarrollo de aplicaciones multiplataforma para dispositivos moacuteviles

En [9] se analizaron ventajas y desventajas de los enfoques de desarrollo

multiplataforma mencionados desde el punto de vista del Ingeniero de Software

La eleccioacuten del modo de desarrollo de aplicaciones para dispositivos moacuteviles

depende de varios factores Uno de ellos en muchos casos esencial es el tiempo de

ejecucioacuten El intereacutes por optimizar el tiempo de ejecucioacuten de una aplicacioacuten de software

es intriacutenseco a la disciplina informaacutetica Esto se evidencia entre otras cosas por la

evolucioacuten del poder de coacutemputo de los procesadores Ademaacutes el rendimiento eficiente

es uno de los atributos que las aplicaciones de software deben satisfacer seguacuten diversos

estaacutendares de calidad entre otros ISOIEC 9126 e ISOIEC 25010 [62]

En lo que respecta al desarrollo de aplicaciones para dispositivos moacuteviles es

oportuno considerar el tiempo de ejecucioacuten de las aplicaciones por diversos motivos

El tiempo de ejecucioacuten de una aplicacioacuten estaacute fuertemente ligado al consumo de

Capiacutetulo 4 Experimentacioacuten

62

energiacutea [63] el cual estaacute limitado por la capacidad de la bateriacutea de los dispositivos

Asimismo el rendimiento de las aplicaciones se ve reflejado principalmente

mediante las calificaciones de los usuarios en las tiendas de aplicaciones en liacutenea

Aplicaciones con bajo rendimiento pueden implicar usuarios disconformes produciendo

publicidad negativa [60] Andre Charland y Brian Leroux identifican al tiempo de

ejecucioacuten como uno de los problemas principales a resolver en el desarrollo de

aplicaciones multiplataforma y afirman que a los usuarios finales les preocupa la calidad

del software y la experiencia de uso [64]

Corral Sillitti y Succi realizaron un anaacutelisis de rendimiento comparativo entre

aplicaciones nativas y aplicaciones hiacutebridas utilizando el framework Phonegap para una

versioacuten del sistema operativo Android [65]

Es importante destacar que no se han encontrado estudios que evaluacuteen y comparen

el rendimiento entre los diversos modos de desarrollo multiplataforma de acuerdo a la

taxonomiacutea propuesta en [5] aplicaciones web moacuteviles aplicaciones hiacutebridas

aplicaciones interpretadas y aplicaciones generadas por compilacioacuten cruzada Esta

taxonomiacutea es la que se utiliza de referencia en este trabajo

El presente apartado realiza un anaacutelisis comparativo de rendimiento de aplicaciones

para dispositivos moacuteviles generadas por el enfoque de desarrollo nativo y los distintos

enfoques de desarrollo multiplataforma seguacuten [5]

En la seccioacuten siguiente se describe el experimento utilizado para evaluar tiempos

de ejecucioacuten en aplicaciones nativas y en los diversos modos de desarrollo de aplicaciones

moacuteviles multiplataforma y en las secciones posteriores se muestran y analizan los

resultados obtenidos se presentan las conclusiones y el trabajo futuro

422 Desarrollo

4221 Disentildeo de las pruebas

Todas las pruebas cuyos resultados se presentan en este trabajo fueron realizadas

sobre dispositivos moacuteviles con sistemas operativos Android e iOS dado que en la

actualidad abarcan gran parte del mercado mundial de acuerdo a lo indicado en [60]

Para llevar a cabo la experimentacioacuten se seleccionaron los frameworks de desarrollo

multiplataforma seguacuten las alternativas presentadas en [10] Se disentildearon pruebas para

evaluar el rendimiento de Apache Cordova [28] Appcelerator Titanium [35] y Xamarin

Capiacutetulo 4 Experimentacioacuten

63

[41] que se corresponden con los modos de desarrollo hiacutebrido interpretado y compilacioacuten

cruzada respectivamente Tambieacuten se experimentoacute con otros dos frameworks de

desarrollo multiplataforma que recientemente han ganado popularidad NativeScript

(desarrollo interpretado) y Corona (compilacioacuten cruzada) Finalmente se incluyeron al

conjunto de pruebas las aplicaciones web y el enfoque nativo de desarrollo para Android

e iOS De este modo se logroacute una muestra razonablemente representativa de las diversas

opciones existentes en la actualidad

Para la realizacioacuten de las pruebas se utilizaron seis dispositivos moacuteviles distintos

(ver Tabla 2) tres de ellos con sistema operativo Android identificados como DA1 DA2 y

DA3 (dos smartphone y una tablet) y tres con sistema operativo iOS identificados como

DI1 DI2 y DI3 (dos smartphone y una tablet)

ID Sistema Operativo Caracteriacutesticas

DA1 Android 44

Tipo Smartphone Marca Motorola

Modelo Moto-G2 Procesador Quad-core 12 GHz Cortex-A7

RAM 1GB Snapdragon 400

DA2 Android 502

Tipo Smartphone Marca Samsung

Modelo S6 Procesador Octa-core (4x21 GHz Cortex-A57 amp 4x15

GHz Cortex-A53) RAM 3GB Exynos 7420 Octa

DA3 Android 422

Tipo Tablet Marca Samsung Modelo Tab 2

Procesador Dual-core 10 GHz RAM 1GB TI OMAP 4430

DI1 iOS 92

Tipo Smartphone Marca Apple Modelo 5S

Procesador Dual-core 13 GHz Cyclone (ARM v8-based)

RAM 1GB Apple A7

DI2 iOS 91

Tipo Smartphone Marca Apple

Modelo 6 plus Procesador Dual-core 14 GHz Typhoon (ARM v8-

based) RAM 1GB Apple A8

DI3 iOS 91 Tipo Tablet

Marca Apple Modelo Ipad Air

Capiacutetulo 4 Experimentacioacuten

64

Procesador Dual-core 13 GHz Cyclone (ARM v8-based)

RAM 1GB Apple A7 Tabla 2 Dispositivos moacuteviles utilizados en el experimento

Se definieron siete escenarios de anaacutelisis distintos uno por cada estrategia de

desarrollo utilizada

1 Nativo para Android y nativo para iOS 2 Aplicaciones web (multiplataforma) 3 Apache Cordova (multiplataforma hibrido) 4 Appcelerator Titanium (multiplataforma interpretado) 5 NativeScript (multiplataforma interpretado) 6 Xamarin (multiplataforma compilacioacuten cruzada) 7 Corona (multiplataforma compilacioacuten cruzada)

En los seis dispositivos se llevaron a cabo pruebas para cada uno de los siete

escenarios mencionados definiendo asiacute un total de 42 casos de prueba

Con el fin de evaluar la velocidad de procesamiento se planteoacute un caacutelculo simple

que incluyoacute varias iteraciones funciones matemaacuteticas y aritmeacutetica de punto flotante que

se resume en la siguiente serie

119904119890119903119894119890 =sum sum (log2(119896) +3119896

2119895+ radic119896

100000

119896=1

+ 119896119895minus1)

5

119895=1

A modo de ejemplo en la Figura 25 se muestra el coacutedigo multiplataforma

desarrollado en Apache Cordova para el caacutelculo de la serie definida

El experimento planteado permite medir con precisioacuten la variable analizada en este

caso el tiempo de ejecucioacuten requerido para realizar un caacutelculo matemaacutetico intensivo

Este tipo de caacutelculo matemaacutetico es frecuente en diversas aplicaciones que se

ejecutan en dispositivos moacuteviles por ejemplo juegos aplicaciones con realidad

aumentada aplicaciones para tratamiento de imaacutegenes entre otras en las cuales no

siempre es posible utilizar el poder de la Unidad de Procesamiento Grafico (GPU) para

el caacutelculo

El coacutedigo fuente de los experimentos llevados a cabo se encuentra disponible en

[66]

En las siguientes secciones se describe la experimentacioacuten y se analizan los

resultados obtenidos

Capiacutetulo 4 Experimentacioacuten

65

4222 Recoleccioacuten de datos

Para cada uno de los 42 casos de prueba definidos se realizaron 30 ejecuciones

independientes del experimento disentildeado obteniendo en cada caso una muestra T = T1

T2 hellip T30 con Ti = tiempo requerido para el caacutelculo de la serie en la i-eacutesima ejecucioacuten

del experimento planteado El tiempo Ti se expresa en milisegundos

Para caracterizar cada una de las muestras obtenidas se han calculado los

estadiacutesticos y S que se corresponden con la media (o promedio muestral) y la

desviacioacuten estaacutendar muestral (ver Tabla 3)

var startTime = new Date()getTime()

var serie = 0

for ( var j=1 j lt= 5 j++ )

for ( var k=1 k lt= 100000 k++ )

series = series + (Mathlog(k)MathLN2) + (3k2j) +

Mathsqrt(k) + Mathpow(k j-1)

var finalTime = new Date()getTime()

var duration = finalTime - startTime

documentgetElementById(result)innerHTML = duration + -gt + series

Figura 25 Caacutelculo de serie coacutedigo multiplataforma desarrollado en Apache Cordova

Capiacutetulo 4 Experimentacioacuten

66

Dada la muestra T=T1 T2 hellip Tn

Media o promedio muestral = (

1

119899)sum119879119894

119899

119894=1

Desviacioacuten estaacutendar muestral 119878 = radic

1

119899 minus 1sum(119879119894 minus )2119899

119894=1

Tabla 3 Estadiacutesticos utilizados en el anaacutelisis de los datos

423 Resultados Obtenidos En la Tabla 4 se presenta una siacutentesis de los resultados obtenidos conformada por

los valores y S calculados para cada caso de prueba planteado Estos valores permiten

comparar el rendimiento de las aplicaciones generadas a partir de los distintos enfoques

de desarrollo evaluadas sobre cada uno de los seis dispositivos utilizados

Los valores presentados en la Tabla 4 y graficados con diagramas de barras en la

Figura 26 sugieren un anaacutelisis por separado de los casos con sistema operativo Android

y los casos con sistema operativo iOS Claramente las siluetas delineadas en los

diagramas de barras de la Figura 26 se repiten de forma similar en los escenarios con el

mismo sistema operativo pero se diferencian notablemente entre distintos sistemas

operativos

Nativo WebApp Apache Cordova Titanium NativeScript Xamarin Corona

DA1 53293 18627 23033 21167 18730 39517 140173

S 1614 632 1422 2495 939 895 1260

DA2 21180 9067 8577 9563 8967 21100 60053

S 1997 1248 883 764 916 669 595

DA3 76380 17273 19060 19270 18350 37933 134430

S 2898 1551 936 1680 304 831 2339

DI1 413 5710 32373 29977 25203 12543 3963

S 078 1655 1662 401 728 1103 085

DI2 413 4190 26397 24113 22343 10303 9863

S 073 538 1544 495 861 491 613

DI3 253 4167 29223 27267 22597 11053 10967

S 057 444 1082 550 277 390 275

Tabla 4 Siacutentesis de resultados obtenidos

Capiacutetulo 4 Experimentacioacuten

67

Figura 26 Diagrama de barras con las muestras recolectadas (las barras muestran el tiempo promedio expresado en milisegundos)

Capiacutetulo 4 Experimentacioacuten

68

424 Anaacutelisis de Resultados Debido a las diferencias de hardware de los dispositivos utilizados no es prudente

comparar el rendimiento de las aplicaciones nativas en Android con respecto a las de

iOS No obstante de los resultados obtenidos es posible inferir que el enfoque nativo en

iOS resulta mucho maacutes eficiente que el enfoque nativo en Android Existen diversos

factores que presumen justificar este hecho entre ellos la diferencia inherente de ejecutar

coacutedigo Objective C en iOS comparado con ejecutar coacutedigo Java en Android el cual

necesita del Android Runtime (ART) para su funcionamiento ralentizaacutendolo

Respecto de las aplicaciones web multiplataforma los resultados de rendimiento

resaltaron positivamente en relacioacuten al resto tanto en Android como en iOS Asiacute el

enfoque de desarrollo multiplataforma web seriacutea una opcioacuten conveniente para alcanzar

un buen rendimiento en todos los dispositivos moacuteviles independientemente de su sistema

operativo Sin embargo esta eleccioacuten podriacutea verse afectada por las limitaciones de estas

aplicaciones para acceder en forma completa a las capacidades especiacuteficas del dispositivo

Respecto de los enfoques hiacutebrido e interpretado -analizados a traveacutes de las

tecnologiacuteas Coacuterdova Titanium y NativeScript- es importante destacar que si bien estos

enfoques trabajan de modo distinto entre siacute tienen algo en comuacuten la ejecucioacuten de coacutedigo

JavaScript En este sentido el motor de JavaScript -encargado de convertir el coacutedigo

JavaScript en coacutedigo optimizado para que luego lo interprete un WebView- cumple un

rol determinante Las pruebas de estos enfoques en Android -que utiliza el motor de

JavaScript V8- tuvieron un comportamiento similar al enfoque web y comportamiento

superior que el enfoque nativo y el enfoque de compilacioacuten cruzada Por el contrario en

los dispositivos moacuteviles con iOS -que utiliza el motor JavaScriptCore- los resultados de

estas pruebas fueron peores que en los enfoques nativos web y de compilacioacuten cruzada

En los dispositivos moacuteviles con iOS los casos de compilacioacuten cruzada -analizados

a traveacutes de las tecnologiacuteas Xamarin y Corona- obtuvieron mejores resultados que los

casos hiacutebridos e interpretados pero mostraron peor rendimiento que el enfoque nativo y

que el enfoque web En cambio en los dispositivos moacuteviles con Android los resultados

de las pruebas con las aplicaciones construidas mediante el enfoque de compilacioacuten

cruzada fueron los peores La necesidad de ejecucioacuten de coacutedigo Java a traveacutes del Android

Runtime entre otros factores justifican este resultado

Capiacutetulo 4 Experimentacioacuten

69

425 Conclusiones Se ha presentado un estudio comparativo sobre el tiempo de procesamiento de

aplicaciones de software para dispositivos moacuteviles generadas con distintos enfoques de

desarrollo

Los escenarios de prueba disentildeados incluyeron los dos sistemas operativos para

dispositivos moacuteviles con mayor presencia en el mercado Android e iOS ejecutaacutendose

cada uno de ellos sobre dos smartphones (considerados de gama media y gama alta al

momento en que este trabajo fue escrito) y una Tablet

Sobre estos seis dispositivos se realizoacute un estudio de rendimiento para las

aplicaciones construidas seguacuten los enfoques de desarrollo nativos y multiplataforma

mediante un conjunto de aplicaciones que fueron desarrolladas para tal fin

1 Aplicacioacuten nativa para Android 2 Aplicacioacuten nativa para iOS 3 Aplicacioacuten web (multiplataforma) 4 Aplicacioacuten Apache Cordova (multiplataforma hibrido) 5 Aplicacioacuten Appcelerator Titanium 6 (multiplataforma interpretado) 7 Aplicacioacuten NativeScript (multiplataforma interpretada) 8 Aplicacioacuten Xamarin (multiplataforma compilacioacuten cruzada) 9 Aplicacioacuten Corona (multiplataforma compilacioacuten cruzada)

En todos los dispositivos con sistema operativo Android el peor rendimiento fue

evidenciado por Corona seguido por el enfoque nativo y Xamarin Esta situacioacuten es

totalmente opuesta a los resultados obtenidos sobre el sistema operativo iOS en doacutende las

tecnologiacuteas de desarrollo mencionadas se mostraron siempre entre las cuatro mejores En

particular es destacable la supremaciacutea del enfoque nativo frente a todos los demaacutes para el

caso de los dispositivos con iOS

Respecto al mejor rendimiento en los dispositivos Android no es posible identificar

claramente cuaacutel es el enfoque maacutes conveniente Tanto las aplicaciones web como

Coacuterdova NativeScript y Titanium alcanzaron buenos resultados en relacioacuten al resto

Nuevamente esta situacioacuten se contrapone con los datos obtenidos sobre los dispositivos

iOS en los que Coacuterdova Titanium y NativeScript obtuvieron las peores mediciones entre

las tecnologiacuteas utilizadas No ocurrioacute lo mismo con las aplicaciones web en iOS que

tambieacuten produjeron buenos resultados en relacioacuten al resto

Capiacutetulo 4 Experimentacioacuten

70

En liacuteneas generales independientemente del sistema operativo las aplicaciones

web han mostrado un buen rendimiento si se consideran todos los casos analizados

Actualmente al desarrollar un sistema de software existe la posibilidad de generar

su versioacuten para dispositivos moacuteviles Esta tarea muchas veces no es simple y una de las

decisiones maacutes importantes a tomar es elegir el enfoque de desarrollo

A partir de este trabajo se dispone de un indicador de rendimiento que puede ser

uacutetil para el Ingeniero de Software que debe seleccionar un enfoque de desarrollo de

software para dispositivos moacuteviles

Por otra parte no se han encontrado trabajos de otros autores donde se haya

analizado el rendimiento en todos los enfoques de desarrollo de software para dispositivos

moacuteviles Este tema tal como se indicoacute en la introduccioacuten es importante para la

comunidad de Ingenieriacutea de Software y los trabajos analizados hasta el momento se han

concentrado solo en los enfoques nativos yo hiacutebridos

43 Anaacutelisis comparativo de enfoques de Desarrollo de Aplicaciones Moacuteviles

Como se estudioacute en las secciones anteriores existen diferentes enfoques de

desarrollo de aplicaciones moacuteviles

Una opcioacuten es desarrollar aplicaciones moacuteviles nativas las cuales hacen uso de

todas las capacidades del dispositivo moacutevil y permiten una alta experiencia de usuario

debido a que las interfaces de usuario se componen por componentes nativos resultando

semejantes al resto de las interfaces del sistema operativo No obstante el desarrollo no

puede ser reutilizado para dar soporte a otras familias de sistemas operativos implicando

mayores costos de desarrollo y mantenimiento

En contraposicioacuten al desarrollo nativo surgioacute el desarrollo multiplataforma dando

la posibilidad de desarrollar un uacutenico producto y ejecutarlo en diferentes plataformas En

este sentido se estudiaron diferentes enfoques desarrollo web moacutevil hiacutebrido

interpretado y generado por compilacioacuten cruzada Cada uno de estos enfoques cuenta con

ciertas caracteriacutesticas que naturalmente los hacen diferenciar con ventajas y

desventajas

Se identificaron diversos factores que pueden ser utilizados para analizar las

Capiacutetulo 4 Experimentacioacuten

71

aplicaciones que se generan mediante los enfoques de desarrollo nativo y

multiplataforma los cuales se detallan a continuacioacuten

Experiencia de usuario conjunto de factores y elementos que hacen referencia

al nivel de satisfaccioacuten total de los usuarios cuando utilizan un producto o sistema

El resultado es la generacioacuten de una percepcioacuten positiva o negativa de dicho

servicio producto o dispositivo

Plataformas alcanzadas se ha visto en capiacutetulos anteriores que existen distintas

familias de sistemas operativos Seguacuten el modo de desarrollo elegido se puede

desarrollar aplicaciones para una plataforma especiacutefica o por varias

Costo del desarrollo el desarrollo puede ser maacutes o menos costoso seguacuten si

requiere codificar las soluciones de forma especiacutefica para cada sistema operativo

o si es posible la reutilizacioacuten de coacutedigo

Costo del mantenimiento la correccioacuten de errores o agregados de nuevas

funcionalidades puede requerir codificar de forma especiacutefica para cada sistema

operativo Ademaacutes se debe tener en cuenta si deben convivir diferentes versiones

del mismo producto

Entorno de desarrollo integrado Software que asiste al programador en la

construccioacuten de aplicaciones

Interfaces de usuario factor que analiza los tipos de componentes utilizados para

construir las interfaces de usuario Como se mencionoacute al analizar los distintos

enfoques de desarrollo la eleccioacuten de la herramienta a utilizar incide en si las

interfaces estaraacuten compuestas mediante componentes nativos o componentes web

los cuales pueden ser decorados para simular componentes nativos

Acceso total al dispositivo posibilidad de acceder mediante las herramientas de

desarrollo a todas las capacidades del dispositivo como la caacutemara sensores entre

otros

Modo de instalacioacuten se refiere a si la aplicacioacuten puede ser instalada desde las

tiendas de aplicaciones o es accesible sin instalacioacuten desde un navegador de

Internet

Rendimiento factor que analiza la ejecucioacuten de tareas y los tiempos asociados

Capiacutetulo 4 Experimentacioacuten

72

en su resolucioacuten

Uso offline capacidad que tiene la aplicacioacuten de funcionar sin estar conectada a

internet

Distribucioacuten a traveacutes de las tiendas posibilidad de descargar la aplicacioacuten desde

las tiendas de aplicaciones

Categoriacuteas de aplicaciones a desarrollar tipo de aplicacioacuten que se desea

desarrollar

Porcentaje de coacutedigo a reutilizar Cantidad de liacuteneas de coacutedigo con respecto al

total que pueden ser reutilizadas para en la generacioacuten de aplicaciones

multiplataforma

Con el objetivo de estudiar coacutemo se comportan e inciden estos factores en los

distintos enfoques de desarrollo se realizoacute un estudio comparativo de los diferentes

criterios a tener en cuenta Dicho estudio se sintetiza en la Tabla 5

Capiacutetulo 4 Experimentacioacuten

73

Factor a analizar Desarrollo Nativo Desarrollo Web Desarrollo Hiacutebrido Desarrollo

Interpretado

Desarrollo Generado

por Compilacioacuten

Cruzada

Experiencia de Usuario

Alta Muy Baja Baja Alta Alta

Plataformas alcanzadas

Se desarrolla

exclusivamente

para una

plataforma destino

Cualquier

plataforma Se

necesita solo un

navegador y acceso a

internet

Es posible compilar

para Android iOS

Windows Phone

Es posible compilar

para Android iOS

Windows Phone

Es posible compilar

para Android iOS

Windows Phone

Costo del desarrollo

Muy Alto Muy Bajo Bajo Medio Medio a Alto

Costo del mantenimiento

Muy Alto Muy Bajo Medio Alto Alto a Muy Alto

Entorno de desarrollo integrado

IDE uacutenico por SO Muacuteltiples opciones Plugins para IDE

geneacutericos

Algunos frameworks

disponen de IDE

especiacutefico

IDE uacutenico por

framework

Interfaces de usuario

Nativas Web Web Nativas Nativas

Acceso total al dispositivo

Si No Si Si Si

Modo de instalacioacuten

Descargar desde la Sin instalaciones Descargar desde la Descargar desde la Descargar desde la

Capiacutetulo 4 Experimentacioacuten

74

Factor a analizar Desarrollo Nativo Desarrollo Web Desarrollo Hiacutebrido Desarrollo

Interpretado

Desarrollo Generado

por Compilacioacuten

Cruzada

tienda de

aplicaciones e

instalar

tienda de aplicaciones

e instalar

tienda de aplicaciones e

instalar

tienda de aplicaciones e

instalar

Rendimiento Muy Alto Muy Bajo Bajo a Medio Alto Medio a Alto

Uso offline Si No Si Si Si

Distribucioacuten a traveacutes de las tiendas

Si No Si Si Si

Categoriacutea de aplicaciones a desarrollar

Aplicaciones que

demandan muchos

recursos o que

requiere una alta

experiencia de

usuario

Sitios web existentes Sitios web

encapsulados como

aplicacioacuten para ser

distribuidas a traveacutes

de tiendas

Aplicaciones simples a

complejas

Aplicaciones simples a

complejas

Porcentaje de Coacutedigo a reutilizar

0 100 Cerca del 100 Cerca del 90 Entre el 60 y 85

Tabla 5 Anaacutelisis comparativo de enfoques de desarrollo de aplicaciones moacuteviles

Capiacutetulo 5 Conclusiones

75

Capiacutetulo 5 Conclusiones

Inicialmente los dispositivos moacuteviles fueron pensados y disentildeados con un propoacutesito

particular A traveacutes de los antildeos el crecimiento tecnoloacutegico ha permitido incorporar

funcionalidades adicionales lo que ha posibilitado expandir el marco de uso

Actualmente el poder de coacutemputo subyacente en una gran variedad de dispositivos

moacuteviles ha generado nuevas posibilidades lo que constituye un reto para los ingenieros

de software

Asimismo y tal como se mencionoacute en capiacutetulos anteriores existen diversos

sistemas operativos para dispositivos moacuteviles siendo los maacutes populares Android iOS y

Windows Phone Debido a que el eacutexito de un producto de software estaacute vinculado en

gran parte a su uso masivo surge la necesidad de desarrollar aplicaciones moacuteviles

teniendo en cuenta cada una de estas plataformas

El desarrollo de software para dispositivos moacuteviles tiene caracteriacutesticas propias que

difieren del desarrollo tradicional Esta actividad reciente impensada deacutecadas atraacutes

marca un antes y un despueacutes en la evolucioacuten de la Ingenieriacutea de Software Es de esperar

que dicha evolucioacuten continuacutee y por consiguiente que los enfoques de desarrollo para

dispositivos moacuteviles cambien o sean reemplazados por otros Es claro que por el

momento existen cinco posibilidades de desarrollo de una misma aplicacioacuten moacutevil

Aplicaciones nativas

Aplicaciones web

Aplicaciones hiacutebridas

Aplicaciones interpretadas

Aplicaciones generadas por compilacioacuten cruzada

Para un completo anaacutelisis de cada enfoque de desarrollo es que se disentildearon una

serie de casos de estudio El primero de ellos consistioacute en desarrollar una aplicacioacuten moacutevil

para cada enfoque de desarrollo presentado Teniendo este primer objetivo definido se

decidioacute extender el entorno virtual de ensentildeanza y aprendizaje WebUNLP a traveacutes de

una aplicacioacuten moacutevil enfocada en la cartelera de novedades de los cursos La aplicacioacuten

Capiacutetulo 5 Conclusiones

76

moacutevil debiacutea permitir el ingreso de alumnos y docentes con las mismas credenciales que

las utilizadas en la versioacuten web y debiacutea mostrar informacioacuten sincronizada con la web

sobre las novedades publicadas en las carteleras de los cursos Asimismo cuando los

docentes publiquen novedades aquellos alumnos pertenecientes al curso deben recibir

una notificacioacuten en su dispositivo moacutevil

Luego de desarrollar las aplicaciones moacuteviles para cada enfoque de desarrollo se

pueden elaborar algunas conclusiones

Se destaca la simpleza a la hora de generar la versioacuten web moacutevil pero se observan

limitaciones al no poder acceder a todas las capacidades de hardware del dispositivo

El desarrollo de las aplicaciones nativas resultoacute oacuteptimo si se lo compara con los

requerimientos oportunamente planteados con la desventaja de que las aplicaciones no

son portables implicando desarrollos especiacuteficos para cada plataforma que se desee

cubrir Por otro lado el desarrollo de las aplicaciones hibridas ndashutilizando PhoneGap y

Sencha- lograron conjugar la simpleza del desarrollo web con el uso de todas las

capacidades del dispositivo posicionaacutendolo como una eleccioacuten realmente interesante De

igual manera la aplicacioacuten interpretada desarrollada mediante Titanium logroacute resolver

todos los requerimientos previamente planteados se destaca que el desarrollo fue

relativamente simple y es posible reutilizar todo el coacutedigo entre plataformas El hecho de

obtener interfaces totalmente nativas la posiciona como la alternativa ideal Por uacuteltimo

las aplicaciones generadas con el enfoque de compilacioacuten cruzada (Delphi y Xamarin)

lograron cumplir los requerimientos planteados la obtencioacuten de interfaces totalmente

nativas es algo a destacar pero conlleva un alto costo ya que se debe disentildear las interfaces

para cada plataforma de manera independiente

El segundo experimento del presente trabajo consistioacute en analizar el rendimiento

de las aplicaciones generadas mediante cada enfoque de desarrollo En total se

desarrollaron mediante distintas tecnologiacuteas nueve aplicaciones Las pruebas se

realizaron en los dos sistemas operativos de mayor relevancia Android e iOS a traveacutes de

seis dispositivos (cuatro smartphones y dos tablets)

En todos los dispositivos con sistema operativo Android el peor rendimiento se

encontroacute en la aplicacioacuten generada por Corona seguido por el enfoque nativo y Xamarin

En cambio estas tecnologiacuteas se mostraron siempre entre las cuatro mejores sobre el

sistema operativo iOS

Capiacutetulo 5 Conclusiones

77

Respecto al mejor rendimiento en los dispositivos Android no es posible identificar

claramente cuaacutel es el enfoque maacutes conveniente Tanto las aplicaciones web como

Coacuterdova NativeScript y Titanium obtuvieron buenos resultados de rendimiento en

relacioacuten al resto Nuevamente esta situacioacuten se contrapone con los datos obtenidos sobre

los dispositivos iOS en los que Coacuterdova Titanium y NativeScript obtuvieron las peores

mediciones entre las tecnologiacuteas utilizadas No ocurrioacute lo mismo con las aplicaciones web

en iOS que tambieacuten produjeron buenos resultados en relacioacuten al resto

En liacuteneas generales independientemente del sistema operativo las aplicaciones

web han mostrado un buen rendimiento si se consideran todos los casos analizados

Por uacuteltimo se elaboroacute un anaacutelisis comparativo de las caracteriacutesticas inherentes a

cada enfoque de desarrollo Se identificaron ciertos factores de intereacutes que la comunidad

de ingenieriacutea de software considera al elegir queacute tecnologiacutea utilizar y se analizoacute su

impacto en cada enfoque de desarrollo

Capiacutetulo 6 Trabajo Futuro

78

Capiacutetulo 6 Trabajo Futuro

Si bien se estudiaron en el presente trabajo diversas tecnologiacuteas para el desarrollo

de aplicaciones moacuteviles se planea profundizar el estudio analizando otras herramientas

multiplataforma disponibles en el mercado como Ionic [32] NativeScript [38] Applause

[40] React Native [67] entre otras

Ademaacutes se plantea como liacutenea de trabajo futuro ampliar el anaacutelisis comparativo de

rendimiento incluyendo otros aspectos del desarrollo para dispositivos moacuteviles como

por ejemplo el acceso a disco el consumo de bateriacutea y el tiempo de renderizacioacuten de

imaacutegenes

Por uacuteltimo es deseable estudiar la experiencia de usuario en las aplicaciones

generadas por cada enfoque de desarrollo de aplicaciones para dispositivos moacuteviles

Capiacutetulo 6 Trabajo Futuro

79

Bibliografiacutea

80

Bibliografiacutea

[1] A Talukder H Ahmed and R Yavagal Mobile Computing Technology Applications and Service Creation Tata McGraw-Hill Ed 2010

[2] Abrahamsson P et al Mobile-D An Agile Approach for Mobile Application Development in In Companion To the 19th Annual ACM SIGPLAN Conference on Object-Oriented Programming Systems Languages and Applications (OOPSLA 04 ) Vancouver Canada 2004 pp 174-175

[3] P Abrahamsson Mobile software development - the business opportunity of today in Proceedings of the International Conference on Software Development Reykjavik 2005

[4] I S Hayes Just Enough Wireless Computing Prentice Hall Professional Technical 2002

[5] Stelios Xinogalos Spyros Xanthopoulos A Comparative Analysis of Cross-platform Development Approaches for Mobile Applications in Proceedings of the 6th Balkan Conference in Informatics Thessaloniki Greece 2013 pp 213-220

[6] Tolety SB Raj R A study on approaches to build cross-platform mobile applications and criteria to select appropriate approach in India Conference (INDICON) 2012 Annual IEEE India 2012

[7] Yonathan Aklilu Redda Cross platform Mobile Applications Development in Master in Information Systems Norwegian University of Science and Technology Norway 2012

[8] Datta SK Bonnet C Nikaein N Dalmasso I Survey comparison and evaluation of cross platform mobile application development tools in Wireless Communications and Mobile Computing Conference (IWCMC) Cagliari Sardinia Italia 2013

[9] Lisandro Deliacutea Nicolaacutes Galdaacutemez Pablo Thomas and Patricia Pesado An Experimental Analysis of Application Types for Mobile Devices in Computer Science amp Technology Series - XIX Argentine Congress of Computer Science - Selected Papers Editorial de la Universidad de La Plata 2014 pp 173 -183

[10] Lisandro Deliacutea Nicolaacutes Galdamez Pablo Thomas Leonardo Corbalaacuten and Patricia Pesado Multi-Platform Mobile Application Development Analysis in IEEE Ninth International Conference on Research Challenges in Information Science - IEEE RCIS Atenas Grecia May 2015

[11] Telam [Online] httpwwwtelamcomarnotas201504102073-telefonia-movil-lineas-activashtml

Bibliografiacutea

81

[12] RTVE [Online] httpwwwrtveesnoticias20110212evolucion-del-telefono-movil-del-zapatofono-smartphones404523shtml

[13] Vodafone [Online] httpblogvodafonecouk20130829vodafone-uks-ceo-guy-laurence-4g-finally-has-a-purpose

[14] Muy Canal [Online] httpwwwmuycanalcom20140131futuro-del-telefono-movil

[15] Statcounter [Online] httpgsstatcountercom

[16] Anthony I Wasserman Software Engineering Issues for Mobile Application Development 2010

[17] Statista [Online] httpwwwstatistacom

[18] Lisandro Deliacutea Nicolaacutes Galdamez Pablo Thomas Leonardo Corbalaacuten and Patricia Pesado Anaacutelisis Experimental de desarrollo de Aplicaciones Moacuteviles Multiplataforma in XX Congreso Argentino de Ciencias de la Computacioacuten CACIC 2014 San Justo Argentina octubre 2014

[19] Lisandro Deliacutea Nicolaacutes Galdamez Pablo Thomas and Patricia Pesado Un Anaacutelisis Experimental de Tipo de Aplicaciones para Dispositivos Moacuteviles in XIX Congreso Argentino de Ciencias de la Computacioacuten CACIC 2013 Mar del Plata Argentina 2013

[20] Abhinay Puvvala Amitava Dutta Rahul Roy and Priya Seetharaman Mobile Application Developersrsquo Platform Choice Model in 2016 49th Hawaii International Conference on System Sciences (HICSS) Koloa Hawaii 2016

[21] Android Dashboard [Online] httpsdeveloperandroidcomaboutdashboardsindexhtml

[22] Xcode [Online] httpsdeveloperapplecomxcode

[23] KW Tracy Mobile Application Development Experiences on Applersquos iOS and

Android OS Potentials IEEE vol 31 no 4 July-Aug 2012

[24] Google Recommendations for building smartphone-optimized websites [Online] httpgooglewebmastercentralblogspotcomar

[25] Bootstrap [Online] httpgetbootstrapcom

[26] Foundation [Online] httpfoundationzurbcom

[27] PhoneGap [Online] httpphonegapcom

[28] Apache Cordova [Online] httpscordovaapacheorg

Bibliografiacutea

82

[29] Adobe PhoneGap Build [Online] httpsbuildphonegapcom

[30] CocoonJS [Online] httpscocoonio

[31] Ludei [Online] httpswwwludeicom

[32] Ionic [Online] httpionicframeworkcom

[33] Sencha [Online] httpswwwsenchacomproductstouchoverview

[34] A Kosmaczewski Sencha Touch 2 Up and Running OrsquoReilly 2013

[35] Appcelerator Titanium [Online] httpwwwappceleratorcomproduct

[36] Backbone [Online] httpbackbonejsorg

[37] Underscorejs [Online] httpunderscorejsorg

[38] NativeScript [Online] httpswwwnativescriptorg

[39] TypeScript [Online] httpswwwtypescriptlangorg

[40] applause [Online] httpwwwapplausecom

[41] Xamarin [Online] wwwxamarincom

[42] Delphi [Online] httpswwwembarcaderocomproductsdelphi

[43] RubyMotion [Online] httpwwwrubymotioncom

[44] Xtext [Online] httpwwweclipseorgXtext

[45] Mono [Online] httpwwwmono-projectcom

[46] [Online] httpswebunlpeadunlpeduar

[47] I Salmre Writing Mobile Code Essential Software Engineering for Building Mobile Applications Addison Wesley Professional 2005

[48] Mapbox [Online] httpswwwmapboxcomlabstwitter-gnipbrands

[49] Ruby S Richardson L RESTful Web Services OrsquoReilly Media 2007

[50] Matthew J Hamm Wireframing Essentials Packt Publishing 2014

[51] GCM [Online] httpsdevelopersgooglecomcloud-messaging

[52] iOS Human Interface Guidelines [Online] httpsdeveloperapplecomioshuman-interface-guidelinesoverviewdesign-principles

[53] APN [Online] httpdeveloperapplecomlibrarymacdocumentationNetworkingInternetConceptual

Bibliografiacutea

83

RemoteNotificationsPGChaptersApplePushServicehtmlapple_refdocuidTP40008194-CH100-SW9

[54] Mark Norm Norman Francis Christian Heilmann Web Development Solutions Ajax APIs Libraries and Hosted Services Made Easy Apress 2007

[55] JqueryMobile [Online] httpsjquerymobilecom

[56] Pushwoosh [Online] httpsgithubcomPushwooshpushwoosh-phonegap-plugin

[57] J Clark Creating Mobile Apps with Sencha Touch 2 Packt Publishing 2013

[58] Kinvey [Online] httpwwwkinveycom

[59] Ali Mesbah Philippe Kruchten Mona Erfani Joorabchi Real Challenges in Mobile App Development in ACM IEEE International Symposium on Empirical Software Engineering and Measurement Baltimore Maryland US 2013

[60] Andreacute Nitze Andreas Schmietendorf Florian Roumlsler Towards a Mobile Application Performance Benchmark in ICIW 2014 The Ninth International Conference on Internet and Web Applications and Services Paris France 2014

[61] Sebastian Hanschke and Tim A Majchrzak Henning Heitkoumltter Comparing Cross Platform Development approaches For Mobile Applications in 8th International Conference on Web Information Systems and Technologies (WEBIST) Porto Portugal 2012

[62] HW Kim SG Chung CS Jung Measuring Software Quality A Survey of ISOIEC 9126 IEEE Software vol 21 no 5 pp 88 ndash 92 SeptemberOctober 2004

[63] Luis Corral Anton B Georgiev Alberto Sillitti and Giancarlo Succi Can execution time describe accurately the energy consumption of mobile apps An experiment in Android GREENS 2014 Proceedings of the 3rd International Workshop on Green and Sustainable Software pp 31-37 June 2014

[64] Brian Leroux Andre Charland Mobile application development web vs native Magazine Communications of the ACM vol 54 no 5 pp 49-53 May 2011

[65] Luis Corral Alberto Sillitti and Giancarlo Succi Mobile multiplatform development An experiment for performance analysis in The 9th International Conference on Mobile Web Information Systems (MobiWIS) Ontario Canada 2012

[66] Repositorio Git III-LIDI [Online] httpsgitlabcomiii-lidiperformance-assessment-multiplatform-mobile-applicationstreemaster

[67] React Native [Online] httpsfacebookgithubioreact-native

[68] Lisandro Galdaacutemez Nicolaacutes Corbalaacuten Leonardo Thomas Pablo Pesado Patricia Deliacutea Un anaacutelisis comparativo de rendimiento en aplicaciones moacuteviles

Bibliografiacutea

84

multiplataforma in XXI Congreso Argentino de Ciencias de la Computacioacuten Juniacuten 2015

Page 11: Desarrollo de Aplicaciones Móviles Multiplataforma

Capiacutetulo 1 Tecnologiacutea Moacutevil

11

Figura 1 Mobile Telephone System A (MTA)

La primera llamada moacutevil data del 3 de abril de 1973 cuando Martin Cooper

(Figura 2) en aquel entonces ingeniero electroacutenico de Motorola realizoacute una llamada

desde la calle en Nueva York La llamada fue realizada mediante un prototipo del

Motorola DynaTAC 8000x Considerado el primer moacutevil del mundo pesaba cerca de un

kilo y mediacutea 33x45x89 centiacutemetros su bateriacutea teniacutea uacutenicamente la autonomiacutea de una

hora en conversacioacuten necesitando diez horas para cargarse Su costo era de USD 4000

Capiacutetulo 1 Tecnologiacutea Moacutevil

12

Figura 2 Martin Cooper el autor de la primer llamada moacutevil

El verdadero conocimiento popular del teleacutefono moacutevil no llegoacute hasta la deacutecada de

los 90 con la segunda generacioacuten de estos dispositivos

La comunicacioacuten digital permitioacute mejorar la calidad de la escucha de voz la

reduccioacuten del tamantildeo y peso de los dispositivos utilizados y sobre todo el incremento de

compantildeiacuteas operadoras que dieron paso a un mercado maacutes competitivo y accesible

Los usuarios fueron testigos de avances sorprendentes como la identificacioacuten de

llamada o los mensajes de texto que constituyeron a una nueva forma de comunicacioacuten

Vertiginosamente el celular pasoacute de ser considerado una herramienta de trabajo a

generalizarse en todos los estratos de la sociedad

Seguacuten avanzaba la deacutecada del 90 los teleacutefonos moacuteviles iban adaptaacutendose a esas

novedades incorporando pantallas cada vez de mayor tamantildeo y en los maacutes avanzados

haciendo desaparecer la antena que era necesario desplegar para poder realizar una

comunicacioacuten en condiciones adecuadas

Poco a poco los dispositivos empezaron a integrar cada vez maacutes funciones aviso

por vibracioacuten juegos bluetooth infrarrojos politonos y ya con el cambio de siglo

pantallas a color y caacutemaras fotograacuteficas Maacutes adelante llegariacutea la grabacioacuten de viacutedeo el

acceso a Internet las pantallas taacutectiles entre otras [12]

Capiacutetulo 1 Tecnologiacutea Moacutevil

13

12 Evolucioacuten de los protocolos para redes de comunicaciones

Hubiera sido imposible el auge de los teleacutefonos moacuteviles sin la estandarizacioacuten

mejora y evolucioacuten de los protocolos para redes de comunicaciones y su soporte por las

operadoras Asiacute tras las primeras comunicaciones viacutea ondas de radio con banda de

frecuencias por debajo de los 600 kHz las posteriores en AM y FM los servicios de Bell

y Ericsson en los antildeos 50 y 60 llegoacute esa primera llamada de 1973 que popularizoacute todo el

sector

La primera generacioacuten 1G fue responsabilidad de Ericsson con el sistema Telefoniacutea

Moacutevil Noacuterdica (NMT) y seguiacutea utilizando canales analoacutegicos En 1986 la compantildeiacutea

modernizoacute el sistema funcionando a frecuencias superiores de 900 MHz posibilitando

servicio para un mayor nuacutemero de usuarios Ademaacutes del NMT en los 80 se desarrollaron

otros sistemas de telefoniacutea moacutevil como el Sistema Telefoacutenico Moacutevil Avanzado (AMP)

desarrollado por los laboratorios Bell

La segunda generacioacuten 2G llegoacute en la deacutecada de los 90 con sistemas como Global

System for Mobile Communications (GSM) Estaacutendar Interno 136 (IS-136) Red

Mejorada Digital Integrada (iDEN) y el Estaacutendar Interno 95 (IS-95) GSM fue el

desarrollo maacutes relevante ya que fue el estaacutendar europeo de telefoniacutea moacutevil digital En el

proyecto participaron 26 compantildeiacuteas europeas de telecomunicaciones y en 1992 se

pusieron en marcha las primeras redes europeas de GSM-900 y los primeros teleacutefonos

moacuteviles GSM Ademaacutes de Europa GSM ha terminado imponieacutendose tambieacuten en Asia

Ameacuterica Latina Oceaniacutea y una parte de Ameacuterica del Norte

La necesidad de mayores velocidades de transmisioacuten de datos y mayores

capacidades que permitieran nuevos servicios dieron paso a la Tercera Generacioacuten (3G)

no sin antes pasar por el 25G que proporcionoacute el General Packet Radio Service (GPRS)

El estaacutendar europeo es el Universal Mobile Telecommunications System (UMTS) basado

en la tecnologiacutea W-CDMA y estaacute gestionado por la organizacioacuten 3GPP tambieacuten

responsable de GSM GPRS y Enhanced Data Rates for GSM Evolution (EDGE)

La Cuarta Generacioacuten (4G) sucede a las tecnologiacuteas 2G y 3G y ofrece entre otras

mejoras mayor seguridad y Calidad de Servicio (QoS) junto a velocidades de acceso

muy superiores a las anteriores (mayores a 100 Mbits en movimiento y a 1 Gbits en

Capiacutetulo 1 Tecnologiacutea Moacutevil

14

reposo) Estaacute basada completamente en el protocolo IP siendo un sistema de sistemas y

una red de redes que se alcanza gracias a la convergencia entre las redes de cables e

inalaacutembricas Seguacuten Vodafone ldquoel 4G tiene finalmente una razoacuten y es el entretenimientordquo

[13] La norma Long Term Evolution (LTE) es la maacutes extendida aunque no la uacutenica

existente

5G seraacute la nueva revisioacuten del sistema de conexioacuten de red sin cables y se espera que

esteacute disponible en el antildeo 2020 (Figura 3) en paiacuteses como Corea del Sur como asiacute tambieacuten

en Europa Como 4G la mayor velocidad de transferencia seraacute su mayor avance con

velocidades de descarga de hasta 10 Gbps (125 GBs) [14]

Figura 3 Evolucioacuten de los protocolos para redes de comunicacioacuten moacuteviles

13 La actualidad

Muchas de las actividades que un tiempo atraacutes soliacutean hacerse desde una

computadora tales como revisar el correo electroacutenico escuchar muacutesica agendar una

nueva cita en el calendario compartir fotos en alguna red social entre muchiacutesimas otras

en nuestros diacuteas se llevan a cabo de forma natural desde los dispositivos moacuteviles La

Figura 4 muestra coacutemo los dispositivos moacuteviles les han ganado terreno a los equipos

Capiacutetulo 1 Tecnologiacutea Moacutevil

15

tradicionales denominados lsquode escritoriorsquo

Figura 4 Comparacioacuten entre plataformas [15]

En la actualidad existen cientos de modelos diferentes de dispositivos moacuteviles y

los fabricantes siguen innovando intentando destacarse sobre la competencia Hoy en diacutea

no nos sorprende encontrar dispositivos moacuteviles con procesadores quad-core de 22 Ghz

Incluso ya se comienzan a conocer prototipos de dispositivos con ocho o diez nuacutecleos

De la mano de los procesadores la memoria RAM de los dispositivos moacuteviles

tambieacuten ha crecido considerablemente llegando a comercializarse dispositivos con 3 GB

de memoria

La caacutemara de los dispositivos es otra de las capacidades que maacutes ha progresado

llegando a encontrarse sensores de 20 MP y la posibilidad de grabar videos en formato

UHD 4K (3840 x 2160)

El tamantildeo de las pantallas y sus resoluciones fueron otra de las caracteriacutesticas que

maacutes han evolucionado Es posible encontrar dispositivos con pantallas de 5 pulgadas con

posibilidad de visualizar 16 millones de colores y con resoluciones Quad HD (2560 x

1440)

La tecnologiacutea de las bateriacuteas es un aspecto en que no se ha logrado grandes avances

en el sector ni se pronostican grandes progresos a corto plazo Incluso la llegada de chips

Capiacutetulo 1 Tecnologiacutea Moacutevil

16

maacutes potentes mayores pantallas o el 4G disminuiraacuten auacuten maacutes la autonomiacutea de las bateriacuteas

El uacuteltimo aspecto a mencionar es el de las capacidades del dispositivo Ademaacutes de

los ya claacutesicos sensores Global Positioning System (GPS) la capacidad de conectividad

viacutea bluetooth infrarrojo y WIFI hoy surge una diversidad de opciones que pueden

disponer los teleacutefonos inteligentes

Por el lado de la conectividad cada vez es maacutes comuacuten encontrar terminales con

mecanismos de comunicacioacuten Near Field Communication (NFC) o WIFI Direct

Con respecto a los sensores actualmente existen dispositivos que cuentan con

aceleroacutemetros giroscopios y magnetoacutemetros los cuales brindan a los desarrolladores de

aplicaciones la posibilidad de controlar la posicioacuten del aparato la aceleracioacuten que sufre

el dispositivo con respecto a la fuerza de la gravedad etc Tambieacuten es comuacuten el uso de

sensores de proximidad por ejemplo para apagar la pantalla mientras se atiende una

llamada El sensor de luminosidad permite medir el brillo de la luz ambiental Asiacute el

software del teleacutefono utiliza estos datos para ajustar el brillo de la pantalla

automaacuteticamente hacieacutendola maacutes clara o maacutes oscura

Los uacuteltimos smartphones de gama alta tambieacuten son capaces de medir la presioacuten

atmosfeacuterica a traveacutes de un baroacutemetro Los datos que mide el dispositivo sirven para

determinar en queacute nivel por encima del mar se encuentra el teleacutefono lo que se traduce en

la mejora de la precisioacuten del GPS

Incluso ya existen dispositivos que cuentan con un sensor de humedad del aire el

cual permite controlar los niveles de humedad para por ejemplo ayudar a las personas

con problemas respiratorios

Como si todo esto fuese poco existen modelos con podoacutemetro -para medir con

precisioacuten los pasos que da el usuario- pulsoacutemetro -para medir las pulsaciones a traveacutes de

los vasos sanguiacuteneos de los dedos- y hasta sensor de huellas digitales para cuestiones

relativas a la seguridad

Por lo anteriormente dicho los desarrolladores de aplicaciones para dispositivos

moacuteviles de la actualidad tienen el desafiacuteo de poder manipular desde sus aplicaciones

todas las posibilidades descriptas

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

17

Capiacutetulo 2 Desarrollo de

Aplicaciones Moacuteviles Nativas

Si bien el desarrollo de aplicaciones para dispositivos moacuteviles se remonta por lo

menos a 10 antildeos atraacutes ha habido un crecimiento exponencial desde que se abrioacute la tienda

de aplicaciones de iPhone en julio de 2008 Desde entonces los fabricantes de

dispositivos han creado tiendas de aplicaciones para otros dispositivos moacuteviles

incluyendo Android BlackBerry Nokia Ovi Windows Phone entre otros [16]

Actualmente el desarrollo de aplicaciones para dispositivos moacuteviles es un campo

en evolucioacuten con gran intereacutes econoacutemico y cientiacutefico Una prueba de esto es que para

Julio del 2014 se disponiacutean de maacutes de 3 millones de aplicaciones entre las principales

tiendas virtuales de aplicaciones Y solamente en el antildeo 2013 se contabilizaron 101

billones de descargas de aplicaciones moacuteviles en todo el mundo de las cuales 9 billones

fueron descargas pagas y 92 billones descargas gratuitas [17]

Con el actual creciente nuacutemero de plataformas moacuteviles desarrollar aplicaciones

moacuteviles se hizo muy difiacutecil para las empresas ya que necesitan desarrollar las mismas

aplicaciones para cada plataforma de destino

El desarrollo de aplicaciones nativas es la forma natural de implementar

aplicaciones moacuteviles Las aplicaciones nativas son concebidas para ejecutarse en una

plataforma especiacutefica es decir se debe considerar el tipo de dispositivo el sistema

operativo a utilizar y su versioacuten

Las aplicaciones nativas se desarrollan utilizando un entorno de desarrollo

integrado (IDE) que proporciona las herramientas de desarrollo necesarias para la

construccioacuten y depuracioacuten de aplicaciones El coacutedigo fuente se compila para obtener

coacutedigo ejecutable proceso similar que el utilizado para las tradicionales aplicaciones de

escritorio

Cuando la aplicacioacuten estaacute lista para ser distribuida debe ser transferida a las App

stores (tiendas de aplicaciones) especiacuteficas de cada sistema operativo Estas tiendas tienen

un proceso de auditoriacutea para evaluar si la aplicacioacuten se adecuacutea a los requerimientos de la

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

18

plataforma a operar Cumplido este paso la aplicacioacuten se pone a disposicioacuten de los

usuarios

La principal ventaja de este tipo de aplicaciones es la posibilidad de interactuar con

todas las capacidades del dispositivo (caacutemara GPS aceleroacutemetro agenda entre otras)

Ademaacutes no es estrictamente necesario poseer acceso a internet Su ejecucioacuten es raacutepida

puede ejecutarse en modo background y notificar al usuario cuando ocurra un evento que

necesite su atencioacuten

Claramente estas ventajas tienen como contrapartida un mayor costo de desarrollo

pues se debe utilizar un lenguaje de programacioacuten diferente seguacuten la plataforma Por ende

si se desea cubrir varias plataformas se deberaacute generar una aplicacioacuten para cada una de

ellas Esto conlleva a mayores costos de desarrollo actualizacioacuten y distribucioacuten de nuevas

versiones [9] [18] [19]

En la actualidad hay una gran cantidad de sistemas operativos para dispositivos

moacuteviles La Figura 5 muestra la utilizacioacuten de los sistemas operativos en los uacuteltimos antildeos

en todo el mundo mientras que la Figura 6 muestra la misma comparativa en Argentina

En ambos casos el ranking es liderado por Android seguido por iOS y en tercer lugar

Windows Phone [20]

Figura 5- Utilizacioacuten de Sistemas Operativos Moacuteviles en el mundo

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

19

Figura 6- Utilizacioacuten de Sistemas Operativos Moacuteviles en Argentina

A continuacioacuten se analizaraacute coacutemo es el proceso de desarrollo de aplicaciones

moacuteviles nativas en los sistemas operativos maacutes relevantes de la actualidad y luego en la

Tabla 1 se compararaacuten aspectos teacutecnicos de estas plataformas

21 Desarrollo de Aplicaciones Nativas en Android

Android es el sistema operativo maacutes utilizado en la actualidad Puede ser utilizado

en teleacutefonos inteligentes tablets relojes inteligentes televisores y automoacuteviles

Estaacute basado en Linux y es respaldado por Google

211 Evolucioacuten Inicialmente el desarrollo de Android era llevado a cabo por la empresa Android

Inc la cual fue fundada en el antildeo 2003 y recibiacutea respaldo econoacutemico por parte de Google

Antildeos maacutes tarde maacutes precisamente en Julio del 2005 Google adquiere Android y da lugar

a la primer versioacuten del sistema operativo en el antildeo 2007 Android 10 Apple Pie1

desarrollado sobre el kernel de Linux 26 En su presentacioacuten se hizo hincapieacute en que era

un sistema operativo para dispositivos moacuteviles totalmente gratuito y open source a

1 Desde la salida de la primera versioacuten del sistema operativo hasta el presente Google ha seguido la tradicioacuten de ponerle un nombre de postre a cada una de sus versiones siguiendo un orden alfabeacutetico

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

20

diferencia de iOS

La primera versioacuten comercial teniacutea mucho margen de mejora y apenas inquietoacute a la

competencia pero ya introduciacutea algunos conceptos que antildeos despueacutes son un estaacutendar de

los sistemas operativos moacuteviles

Menuacute desplegable de notificaciones

Widgets de escritorio

Android Market la tienda de apps (no contaba con ninguacuten sistema de pago para

usuarios Todo el cataacutelogo era gratuito)

Integracioacuten con Google Mail Contacts y Calendar

Navegador Maps Google Talk reproductor de YouTube y soporte para caacutemaras

En febrero del 2009 apenas 3 meses despueacutes del lanzamiento de Android 10 Apple

Pie llega la primera actualizacioacuten Android 11 Banana Bread No antildeadiacutea grandes

novedades pero siacute corregiacutea numerosos fallos detectados en la primera versioacuten e introduciacutea

un concepto por entonces poco usado por los rivales que buscaba facilitar la vida al

usuario las actualizaciones automaacuteticas con las que resultaba muy simple mantener todo

el software al diacutea

El 30 de abril del 2009 lanzan una nueva actualizacioacuten de gran importancia con

muchas novedades en cuanto a usabilidad Android 15 Cupcake Esta nueva versioacuten

introdujo las siguientes caracteriacutesticas

Teclado taacutectil QWERTY en pantalla con prediccioacuten de texto y diccionario de

usuarios para palabras personalizadas

Grabacioacuten y reproduccioacuten en formatos MPEG-4 y 3GP

Widget de escritorio de Google para realizar buacutesquedas directamente

SDK para el desarrollo de widgets de escritorio por parte de terceros

Funciones del portapapeles ampliadas

Interfaz para grabar y reproducir viacutedeos mejorada

Posibilidad de auto-rotacioacuten

Android 16 Donut apareciacutea en septiembre del 2009 con algunas novedades

adicionales

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

21

Soporte para CDMAEVDO 8021x VPN que ampliaba los mercados al alcance

de Android

Compatibilidad con distintas resoluciones de pantalla Soporte WVGA

Actualizacioacuten y nuevo disentildeo del Android Market

Utilidad de buacutesqueda universal en Internet y en el mismo dispositivo

Galeriacutea caacutemara y videocaacutemara con mejor integracioacuten con raacutepido acceso a la

caacutemara

Motor multi-lenguaje de Siacutentesis de habla para permitir a cualquier aplicacioacuten de

Android hablar una cadena de texto

Mejoras en las buacutesquedas por texto y voz

Apenas dos meses despueacutes en noviembre del 2009 lanzan Android 20 Eclair

uno de los cambios maacutes sustanciales sufridos por Android tanto a nivel de disentildeo como

de arquitectura interna Era una versioacuten dirigida a dispositivos de mayor tamantildeo en un

tiempo en el que los fabricantes empezaban a diversificar su oferta La versioacuten 21

mantuvo la misma nomenclatura y soacutelo corrigioacute algunos fallos pero su uso fue mayor

entre los fabricantes que la versioacuten anterior A continuacioacuten se mencionan algunas de las

nuevas caracteriacutesticas

Sincronizacioacuten de cuenta expandida permitiendo a los usuarios agregar muacuteltiples

cuentas al dispositivo para sincronizacioacuten de correo y contactos

Google Maps Navigation sistema de navegacioacuten GPS gratuito

Compatibilidad con Microsoft Exchange

Optimizacioacuten en velocidad de hardware y GUI renovada

Soporte para maacutes tamantildeos de pantalla y resoluciones con una mejor tasa de

contraste

Navegador actualizado soporte para HTML5 y barra de direccioacuten y buacutesqueda

unificada

Funcioacuten Speech to Text para escribir textos mediante el uso de la voz

Nueva pantalla de desbloqueo

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

22

Nuevas caracteriacutesticas para la caacutemara incluyendo soporte de flash zoom digital

modo escena balance de blancos efecto de colores y enfoque macro

Adicioacuten de fondos de pantalla animados permitiendo la animacioacuten de imaacutegenes

de fondo de la pantalla inicio para mostrar movimiento

El 20 de mayo del 2010 apareciacutea una nueva actualizacioacuten del sistema operativo

Android 22 Froyo Traiacutea numerosos cambios algunos copiados de otras ROMs y otros

con el uso empresarial en mente

Pantalla Home totalmente redisentildeada con 5 paneles en lugar de 3

Nueva galeriacutea de imaacutegenes

Soporte para actuar como hotspot2 para otros dispositivos tethering3 de datos

Soporte para Flash 101

Funcioacuten copiar y pegar mejorada en Google Mail

Nueva pantalla alternativa de desbloqueo mediante coacutedigo PIN

Grabacioacuten de viacutedeo en 720p

Optimizaciones en velocidad memoria y rendimiento Compilador JIT

Integracioacuten del motor de JavaScript V8 de Chrome en el navegador

Soporte para el servicio Android Cloud to Device Messaging (C2DM)

habilitando notificaciones push

El antildeo 2010 iba a concluir con el lanzamiento de una versioacuten sumamente popular

que prevalecioacute gran tiempo Android 23 Gingerbread Esta versioacuten contoacute con las

siguientes caracteriacutesticas

Disentildeo de la interfaz de usuario actualizado con incremento en velocidad y

simpleza

Nuevo disentildeo para el teclado numeacuterico en pantalla

Soporte para tamantildeos y resoluciones de pantalla extra-grandes (WXGA y

mayores)

Funcioacuten para copiar y pegar mejorada con soporte para caracteres individuales en

lugar de cajas de texto

2 lugar que ofrece acceso a Internet a traveacutes de una red inalaacutembrica y un enrutador conectado a un proveedor de servicios de Internet 3 proceso por el cual un dispositivo moacutevil con conexioacuten a Internet actuacutea como pasarela para ofrecer acceso a la red a otros dispositivos

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

23

Soporte para NFC

Herramientas de visualizacioacuten de consumo y uso de la bateriacutea mejoradas

Soporte para caacutemaras frontales

Acceso de bajo nivel para los desarrolladores de juegos

Recolector basura concurrente para incrementar el rendimiento

Sustitucioacuten del sistema de archivos YAFFS por ext4

Soporte nativo para maacutes sensores (tales como giroscopio y baroacutemetro)

Soporte de chat de video o voz usando Google Talk

En febrero del 2011 Google lanza Android 30 Honeycomb Se trata de una

actualizacioacuten especiacutefica para tablets no compatible con teleacutefonos que introduciacutea las

liacuteneas maestras de la interfaz en el futuro Las versiones 31 y 32 mantuvieron el mismo

nombre y fueron baacutesicamente un conjunto de correcciones A continuacioacuten se listan los

cambios significativos que tuvieron lugar en estas versiones

Pantalla de Inicio redisentildeada

Inclusioacuten de tonos azules en la interfaz en detrimento del verde tradicional

Nuevas funcionalidades para el emplazamiento y uso de widgets

Fin de los botones fiacutesicos Adaptacioacuten automaacutetica del SO seguacuten el dispositivo

Agregado de barra de sistema con caracteriacutesticas de acceso raacutepido a

notificaciones estados y botones de navegacioacuten suavizados disponible en la parte

inferior de la pantalla

Antildeadida la barra de accioacuten (Action Bar en ingleacutes) entregando acceso a opciones

contextuales navegacioacuten widgets u otros tipos de contenido en la parte superior

de la pantalla

Multitarea simplificada ndash tocando Aplicaciones recientes en la barra del sistema

permite a los usuarios ver instantaacuteneas de las tareas en curso y saltar raacutepidamente

de una aplicacioacuten a otra

Aceleracioacuten graacutefica mediante hardware

Optimizacioacuten del renderizado de graacuteficos 3D

Soporte para perifeacutericos USB

Octubre del 2011 fue el mes del lanzamiento de Android 40 Ice Cream Sandwich

basado en el nuacutecleo de Linux 301 Esta nueva versioacuten introdujo las siguientes mejoras

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

24

Nueva Interfaz Holo y fuente tipograacutefica Roboto

Sistema de gestioacuten de notificaciones mejorado

Multitarea mejorada

Android Beam funcionalidad para transferir datos entre dos dispositivos viacutea NFC

Funcioacuten de desbloqueo mediante el rostro

Nuevas funciones para la visualizacioacuten y gestioacuten del consumo de datos

Nuevas aplicaciones de correo y calendario

Habilidad de acceder a aplicaciones directamente desde la pantalla de bloqueo

Herramienta integrada de captura de pantalla

Soporte MKV

Aceleracioacuten por hardware de la interfaz de usuario

Soporte Stylus (laacutepiz taacutectil)

En Julio del 2012 se presenta Android 41 Jelly Bean que incluye las siguientes

novedades

Sistema de deteccioacuten de entrada de datos taacutectiles optimizado

Estreno de Google Now el servicio-asistente de voz inteligente de Google

Navegador Google Chrome

Buacutesqueda mediante voz mejorada

Nuevas posibilidades para las notificaciones interactivas de escritorio

Dictado de voz offline

Se deja de dar soporte al Flash Player

Meses despueacutes en noviembre del 2012 se lanza la versioacuten Android 42 Jelly Bean

la cual incluye habituales correcciones rendimiento mejorado y cambios puntuales en

ciertas aplicaciones

Android 43 Jelly Bean es anunciado el 24 de julio del 2013 Uno de los objetivos

de esta versioacuten fue tratar de consolidar a Android como un sistema operativo capaz de

ejecutar juegos Esta nueva versioacuten cuenta con las siguientes novedades

Soporte multiusuario y de perfiles mejorado

Soporte OpenGL ES 30

Bluetooth Smart

Plataforma Google Games

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

25

Servicios de localizacioacuten Wi-Fi mejorados

Ya no es necesario pulsar el icono del microacutefono para realizar una buacutesqueda de

voz Solo hay que decir OK Google y en seguida ordenar al equipo lo que se

necesite

Android 44 KitKat es anunciado en octubre del 2013 Esta nueva versioacuten intenta

corregir el problema de fragmentacioacuten se cuenta con muchas versiones y los fabricantes

tienen dificultades para adaptar sus productos a los requerimientos de cada nueva versioacuten

Se destaca de esta versioacuten

Menores requisitos de hardware para corregir la fragmentacioacuten de versiones

Compatible con terminales con 512 MB de memoria RAM

Reduccioacuten del consumo de bateriacutea mediante la optimizacioacuten de los sensores

Inclusioacuten de la suite ofimaacutetica QuickOffice

Servicios de almacenamiento online integrados Google Drive Box

Soporte para infrarrojos Usar el moacutevil como mando de TV

Aplicaciones a pantalla completa

Captura de pantalla en viacutedeo

En octubre del 2014 se lanza Android 5 Lollipop daacutendole soporte a otros

dispositivos como Android TV relojes inteligentes autos etc Esta nueva versioacuten

incluye

Nuevo disentildeo basado en Material Design que logra un flujo de trabajo maacutes fluido

Interfaz que se adapta a cualquier tamantildeo de dispositivo

Renovado sistema de notificaciones inteligente

Interesante vista multitarea que muestra capas con las diferentes aplicaciones

abiertas

Funcioacuten Android Smart Lock que permite emparejar un dispositivo Android con

otro ya sea un reloj inteligente o un automoacutevil

Modo Invitado para que puedas prestar el dispositivo sin que otros usuarios

tengan acceso a la informacioacuten privada

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

26

Soporte para sistemas de 64 bits

En octubre del 2015 se anuncia Android 6 Marshmallow que incluye las

siguientes novedades

Soporte para autenticacioacuten viacutea huella digital

Desinstalacioacuten raacutepida de las aplicaciones desde la pantalla de inicio

Nuevo esquema de gestioacuten de energiacutea llamado Doze

Mayor duracioacuten de la bateriacutea cuando el dispositivo estaacute en reposo

Inclusioacuten de Android Pay que emplearaacute el chip NFC

Mejoras en Google Now

Mayor control sobre los permisos requeridos por las aplicaciones

212 Proceso de Desarrollo Las aplicaciones nativas para esta plataforma se implementan utilizando el lenguaje

de programacioacuten Java

El estaacutendar sugiere utilizar el IDE oficial Android Studio (Figura 7) aunque es

posible utilizar otros entornos Independientemente del IDE utilizado se necesita

disponer del Software Development Kit (SDK) de la versioacuten de Android en la que se

desea trabajar El SDK provee todas las herramientas necesarias para desarrollar

compilar depurar y simular aplicaciones

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

27

Figura 7 Entorno de desarrollo Android Studio

Uno de los interrogantes que surgen en el momento de crear una aplicacioacuten es con

cual versioacuten de la Application Programming Interface (API) de Android trabajar Se debe

tener en cuenta que al trabajar con una versioacuten especiacutefica se estaacute limitando cuales son los

dispositivos que soportaraacuten la aplicacioacuten a crear No se recomienda utilizar una API

antigua -ya que no se estariacutea utilizando muchos de los avances de la plataforma- ni

tampoco la uacuteltima en el mercado ndashdebido a que pocos seriacutean los usuarios que podriacutean

utilizarla- En la Figura 8 se visualiza la distribucioacuten de versiones seguacuten los dispositivos

activos a la fecha de Diciembre 2016 [21] De esa informacioacuten se desprende que si se

optara por trabajar con la API 16 (Jelly Bean) el 966 de los celulares activos podraacuten

utilizar la aplicacioacuten a crear

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

28

Figura 8 Distribucioacuten de versiones de Android - Diciembre 2016

22 Desarrollo de Aplicaciones Nativas en iOS

iOS es un sistema operativo para dispositivos moacuteviles de la empresa multinacional

Apple Si bien fue originalmente desarrollado para el dispositivo iPhone luego el sistema

operativo alcanzoacute otros dispositivos como iPod Touch iPad A diferencias de otros

sistemas operativos para dispositivos moacuteviles iOS solo funciona en dispositivos creados

por la empresa Apple pero no asiacute en otro hardware de terceros

221 Evolucioacuten El sistema operativo moacutevil iOS se deriva del sistema operativo OS X el cual estaacute

basado en UNIX

La primera versioacuten del sistema operativo se presentoacute en enero del 2007 A

diferencia de sus sucesores la primera versioacuten no se llamoacute iOS sino iPhone OS Se

trataba de una plataforma bastante cerrada ya que las uacutenicas aplicaciones disponibles

eran las que estaban integradas al sistema operativo y fueron creadas por Apple como los

Mapas Mail Fotos Calendario entre otras

El desarrollo de aplicaciones nativas por parte de terceros no tuvo lugar hasta marzo

del 2008 momento en el cual Apple liberoacute el primer kit de desarrollo

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

29

Meses despueacutes se lanza la segunda versioacuten del sistema operativo iPhone OS 2 En

esta oportunidad introducen la App Store la cual permitioacute la descarga de aplicaciones de

terceros Ademaacutes la aplicacioacuten de Mapas recibioacute compatibilidad con el GPS y el Mail

notificaciones push

En 2009 Apple lanzoacute iPhone OS 3 y en su versioacuten 32 se le cambioacute el nombre a

iOS 32 iOS 3 incorporoacute grandes novedades buacutesqueda Spotlight botones Copiar y

Pegar grabacioacuten de viacutedeo edicioacuten de viacutedeo mensajes MMS comandos de voz modo

landscape y otras muchas apps Ademaacutes se siguioacute explotando las ventajas de las

notificaciones push y se continuoacute evolucionando su SDK daacutendole mayor poder a los

desarrolladores de aplicaciones

iOS 4 llegoacute a mediados del 2010 y trajo consigo nuevos cambios a la plataforma

Los maacutes destacables fueron la inclusioacuten de fondos de pantalla y la posibilidad de poder

abrir varias aplicaciones en simultaacuteneo Adicionalmente las aplicaciones podiacutean ser

agrupadas mediante carpetas algo simple pero uacutetil

En Junio del 2011 se libera iOS 5 Esta nueva versioacuten ofreciacutea grandes novedades

un Centro de Notificaciones Siri ndashel asistente virtual que marcoacute tendencia en los uacuteltimos

antildeos- iMessage iCloud Game Center Quiosco Recordatorios integracioacuten social para

Twitter y se mejoroacute notablemente la app de navegacioacuten web nativa Safari

iOS 6 fue presentado en Junio del 2012 y trajo como novedades la inclusioacuten de

Apple Maps (en reemplazo de Google Maps) mejoras en Siri con informacioacuten mucho

maacutes precisa la integracioacuten de Facebook y Twitter en el sistema el modo no molestar el

soporte para LTE entre otras

Los usuarios de este sistema operativo recibieron una de las mayores

actualizaciones en Junio del 2013 cuando se presenta iOS 7 Esta nueva versioacuten contoacute

con un redisentildeo total de la interfaz de usuario basaacutendose en transparencias y degradados

Ademaacutes se introdujo el Centro de Control AirDrop una renovada app de fotos iTunes

Radio y CarPlay mejoras en el App Switcher videos a caacutemara lenta entre otras cosas

Junio del 2014 fue el mes donde quedoacute disponible iOS 8 una nueva versioacuten del

sistema operativo que intenta resolver algunos errores de iOS 7 y antildeadir ciertas mejoras

Las extensiones y la posibilidad de conectar apps entre siacute mediante el menuacute compartir

hicieron que iOS 8 fuese mucho maacutes productivo Ademaacutes incorporoacute widgets para el

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

30

Centro de Notificaciones o las notificaciones interactivas Ademaacutes se implementaron los

contactos favoritos los teclados de terceros la funcioacuten Reachability y la utilidad

Continuity y las aplicaciones Apple Pay Salud HandOff QuickType Compartir en

Familia iCloud Drive y Apple Music

En el 2015 se presenta iOS 9 que introdujo todo un cambio en el uso del sistema

gracias a la compatibilidad con el 3D Touch del iPhone 6s y el iPhone 6s Plus Se

actualizoacute Notas con nuevas funciones se sustituyoacute Newsstand por News se incorporaron

mejoras en Passbook que pasoacute a llamarse Wallet y se mejoroacute Mapas con direcciones y

traacutefico Se antildeadioacute Split View Picture-in-Picture y atajos en teclados de terceros Ademaacutes

el sistema ahora podiacutea aprovechar mejor la autonomiacutea del dispositivo gracias al Modo

ahorro de bateriacutea que limita las conexiones y caracteriacutesticas del sistema para no consumir

tanta energiacutea

Por uacuteltimo en Junio del 2016 quedoacute disponible iOS 10 versioacuten que se caracteriza

por abrirse a los desarrolladores Con esta nueva versioacuten se puede tener acceso a Siri al

3D Touch y a apps directas del sistema operativo Ademaacutes el centro de widgets ahora es

maacutes intuitivo y la pantalla de bloqueo maacutes uacutetil Como es habitual se aprecian mejoras en

distintas aplicaciones del sistema operativo y se permite borrar apps de Apple que no sean

utilizadas por los usuarios

222 Proceso de desarrollo Las aplicaciones moacuteviles para la plataforma iOS se desarrollan utilizando el

lenguaje de programacioacuten Objetive C El entorno de desarrollo oficial es la plataforma

Xcode [22] la cual opera en conjunto con Interface Builder una herramienta graacutefica para

la creacioacuten de interfaces de usuario

Actualmente hay dos grandes versiones del sistema operativo moacutevil en curso como

se puede apreciar en la Figura 10 Es algo a destacar que la uacuteltima versioacuten del sistema

operativo es soportada por el 63 de los dispositivos activos Claramente la

fragmentacioacuten interna es mucho menor que la encontrada en Android

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

31

Figura 9 Entorno de desarrollo Xcode

Figura 10 Distribucioacuten de versiones de iOS - Noviembre 2016

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

32

23 Desarrollo de Aplicaciones Nativas en Windows Phone

El sistema operativo moacutevil Windows Phone fue desarrollado por Microsoft y

sucede a Windows Mobile A diferencia de su predecesor estaacute enfocado en el mercado de

consumo en lugar del mercado empresarial

231 Evolucioacuten Su primera versioacuten lanzada en septiembre del 2010 fue denominada Windows

Phone 7 Fue presentado como un nuevo sistema operativo que incluye funciones de

integracioacuten con los servicios Xbox Live y Zune La interfaz conocida como Metro ha

sido revisada en su totalidad y comparte caracteriacutesticas visuales similares a la interfaz del

dispositivo Zune HD

Windows Phone 75 es una actualizacioacuten para Windows Phone lanzada en

septiembre de 2011 Esta nueva versioacuten incorporoacute numerosas caracteriacutesticas como por

ejemplo la inclusioacuten de Internet Explorer 9 con soporte para CSS3 Media Queries y

soporte para usar GPS cuando se trabaje con aplicaciones de ubicacioacuten geograacutefica entre

otros

En enero del 2013 se presenta Windows Phone 78 una actualizacioacuten que trae

mejoras como la nueva interfaz de usuario y fondos personalizados para la pantalla de

bloqueo Fue la uacuteltima gran actualizacioacuten de Windows Phone 7 ya que Microsoft se

centroacute en Windows Phone 8

Windows Phone 8 es la siguiente versioacuten del sistema operativo la cual fue

presentada a finales de 2012 Entre las nuevas caracteriacutesticas se incluyen

Nuevas pantallas de inicio y de bloqueo maacutes personalizables

Rincoacuten infantil un espacio exclusivo y controlado para los nintildeos

Cartera para almacenar tarjetas de fidelizacioacuten y de creacutedito

NFC

Internet Explorer 10

Integracioacuten con Skype

Nuevo nuacutecleo Windows NT con soporte para procesadores de varios

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

33

nuacutecleos

Captura de pantalla

Su proacutexima versioacuten es Windows Phone 81 y fue presentada en abril del 2014

Entre sus caracteriacutesticas maacutes relevantes se encuentran

Centro de notificaciones

Asistente de voz conocido con el nombre de Cortana

Sensores (de Wi-Fi de datos y de bateriacutea)

Aplicaciones que vienen en el paquete de instalacioacuten como Salud y

ejercicios Comida y bebida Viajes y Mapas (esta uacuteltima compite con Here

Maps la cual es la aplicacioacuten de mapas de Nokia)

Mejoras en la pantalla de inicio posibilidad de agregar fondos de pantalla y

una tercera columna de mosaicos personalizables (Tiles)

A mediados del 2014 Microsoft decide cambiar de estrategia tratando de unificar

todas las plataformas como PC tablets smartphones Xbox One entre otros Windows

10 (moacutevil) se dio a conocer puacuteblicamente durante un evento el 21 de enero para 2015 Al

igual que su homoacutelogo Windows 10 Mobile utiliza como navegador predeterminado

Microsoft Edge reemplazando Internet Explorer de Windows Phone 81 ya que este no

se adecuaba a las nuevas liacuteneas de disentildeo del sistema operativo

232 Proceso de desarrollo El entorno de desarrollo maacutes popular para el desarrollo de aplicaciones para

Windows Phone es Visual Studio (Figura 11) En la actualidad es posible utilizar diversos

lenguajes de programacioacuten VBNET y CNET C++ y JavaScript

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

34

Figura 11 Entorno de desarrollo Visual Studio

24 Diferencias teacutecnicas entre Android iOS y Windows Phone

Desarrollar aplicaciones moacuteviles para los tres sistemas operativos maacutes populares

implica conocer ciertos aspectos teacutecnicos de cada plataforma Algunos de estos aspectos

teacutecnicos difieren sustancialmente entre cada sistema operativo

Una de las caracteriacutesticas a tener en cuenta es si las aplicaciones moacuteviles se ejecutan

dentro de una maacutequina virtual especiacuteficamente disentildeada o si se ejecutan directamente

sobre el sistema operativo

Otro aspecto que los desarrolladores deben tener en cuenta es el lenguaje de

programacioacuten a utilizar para crear aplicaciones nativas Este aspecto es importante porque

incide en otros aspectos como por ejemplo la gestioacuten de memoria

Ademaacutes del lenguaje de programacioacuten a utilizar es importante conocer la

tecnologiacutea requerida para disentildear interfaces de usuario

Asimismo los desarrolladores deben familiarizarse con diferentes IDEs seguacuten la

plataforma en la que se desea desarrollar como asiacute tambieacuten con diferentes tiendas de

aplicaciones donde alojar los productos finales

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

35

Por uacuteltimo la tecnologiacutea de hardware requerida para soportar el sistema operativo

tambieacuten difiere seguacuten cada plataforma

La Tabla 1 compara cada uno de estos aspectos en los sistemas operativos moacuteviles

Android iOS y Windows Phone

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

36

Sistema

Operativo

Maacutequina

Virtual

Lenguaje de

Programacioacuten

Interfaces

de usuario

Gestioacuten de

memoria

IDE Plataforma de

desarrollo

Dispositivos Tienda de

Aplicaciones

Android Dalvik VM Java XML files Garbage

collector

Android

Studio

Multiplatforma Heterogeneos Google Play

Store

iOS No Objective-C Cocoa

Touch

Reference

counting

XCode Mac OS X Homogeneos iTunes Apps

Store

Windows

Phone

CLR C and Net XAML files Garbage

collector

Visual

Studio

Windows Vista7 Homogeneos Windows

Phone Store

Tabla 1 Diferencias teacutecnicas entre las plataformas Android iOS y Windows Phone

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

37

Capiacutetulo 3 Desarrollo de

Aplicaciones Moacuteviles

Multiplataforma

En los uacuteltimos antildeos el mercado de los dispositivos moacuteviles en especial

smartphones ha mostrado un crecimiento notable tanto en Argentina como en todo el

mundo En particular en nuestro paiacutes las plataformas que maacutes han crecido son Android

e iOS [1520]

Actualmente gran parte de la industria del software se concentra en desarrollar

soluciones para dispositivos moacuteviles proveyendo especialmente aplicaciones nativas

Las aplicaciones nativas tal como se mencionoacute en el capiacutetulo anterior ofrecen la

posibilidad de acceder a todas las capacidades del dispositivo (caacutemara GPS aceleroacutemetro

y agenda entre otras) su rendimiento es alto el acceso a Internet no es estrictamente

necesario y pueden ejecutarse en segundo plano notificando al usuario cuando se requiera

su atencioacuten Estas aplicaciones pueden distribuirsecomercializarse a traveacutes de las tiendas

en liacutenea correspondientes

El principal reto para los proveedores de aplicaciones es proporcionar soluciones

para todas las plataformas pero esto conlleva un alto costo [6] no es posible reusar el

coacutedigo fuente entre plataformas diferentes multiplicando esfuerzos y elevando los costos

de desarrollo actualizacioacuten y distribucioacuten de nuevas versiones

El desarrollo multiplataforma procura optimizar la relacioacuten costobeneficio

compartiendo la misma codificacioacuten entre las versiones para las distintas plataformas

Entre otras ventajas sobresalen menor tiempo y costo de desarrollo prestaciones

similares a las nativas con acceso al hardware del dispositivo y disponibilidad de

entornos potentes de desarrollo (Delphi Visual Studio etc) o en su lugar utilizacioacuten de

tecnologiacuteas (HTML5 Javascript y CSS) bien conocidas por los desarrolladores web

quienes pueden trasladar sus conocimientos y experiencias al paradigma moacutevil Sin

embargo el rendimiento de las aplicaciones y sus interfaces de usuario pueden afectar la

experiencia de usuario

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

38

Las aplicaciones multiplataforma pueden clasificarse en aplicaciones web moacuteviles

hiacutebridas interpretadas y generadas por compilacioacuten cruzada [5] En las secciones

siguientes se analizaran cada una de estas clasifcaciones

31 Aplicaciones Web Moacuteviles

Las Aplicaciones Web Moacuteviles disentildeadas para ejecutarse dentro de un navegador

se desarrollan con tecnologiacutea web estaacutendar (HTML CSS y JavaScript) y cuentan con

una serie de caracteriacutesticas favorables no necesitan adecuarse a ninguacuten entorno operativo

son independientes de la plataforma y su puesta en marcha es raacutepida y sencilla

Por contrapartida sus tiempos de respuesta decaen debido a la interaccioacuten cliente-

servidor Al mismo tiempo resultan ser menos atractivas que las aplicaciones nativas ya

que no se encuentran instaladas en el dispositivo lo que implica acceder previamente a

un navegador Ademaacutes las restricciones de seguridad impuestas a la ejecucioacuten de coacutedigo

por medio de un navegador limitan el acceso a todas las capacidades del dispositivo [23]

Asimismo no es posible desarrollar aplicaciones web que corran en segundo plano ni

tampoco aplicaciones offline ya que es requisito disponer de una conexioacuten a internet para

su funcionamiento

El proceso de desarrollo de una aplicacioacuten web moacutevil debe contemplar una serie de

caracteriacutesticas inherentes al entorno de ejecucioacuten Como ya ha sido mencionado las

aplicaciones web moacuteviles pueden ser accesibles desde cualquier dispositivo moacutevil que

cuente con un navegador y acceso a internet pero esto no significa que la navegacioacuten en

la aplicacioacuten resulte ser coacutemoda u oacuteptima Por ejemplo una aplicacioacuten web con un menuacute

compuesto de 20 iacutetems puede implicar una usabilidad correcta desde una PC Por lo

contrario para un dispositivo moacutevil con una pantalla limitada no resulta praacutectico que se

le presente al usuario tantas opciones en el menuacute Con este ejemplo lo que se pretende

mostrar es que para que una aplicacioacuten sea accesible desde diferentes dispositivos

moacuteviles posiblemente se tengan que realizar al menos dos disentildeos de presentacioacuten

diferentes un disentildeo para PC y otro disentildeo para dispositivos moacuteviles con una estructura

organizativa de la aplicacioacuten maacutes simplificada con respecto al disentildeo tradicional Por

ejemplo algunas de las funcionalidades de la aplicacioacuten para PC pueden ser eliminadas

para la versioacuten para dispositivos moacuteviles o presentadas de forma diferente

Para desarrollar diferentes presentaciones de una misma aplicacioacuten web

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

39

actualmente existen dos estrategias distintas ambas vaacutelidas seguacuten el contexto En los

siguientes apartados se analizaraacuten cada una de ellas

311 Aplicacioacuten Web dedicada y exclusiva para dispositivos moacuteviles Esta metodologiacutea ha sido el estaacutendar hasta el antildeo 2012 En ella la direccioacuten URL

y el coacutedigo HTML de la versioacuten moacutevil son distintos de la versioacuten de escritorio Por lo

general las direcciones URL tienen el formato mnombresitiocom

Algunas de las ventajas de este meacutetodo

- En general la carga es maacutes raacutepida y la navegacioacuten maacutes coacutemoda

- Es posible adaptar de manera maacutes faacutecil el contenido de las secciones

Desventajas de este meacutetodo

- Mantenimiento maacutes costoso Se debe mantener dos versiones distintas del mismo

sitio

- Dificulta el posicionamiento del sitio en los buscadores

- Estos desarrollos al final tienden a ser versiones muy reducidas de la web para

PC llevando al usuario a frustrarse y a preferir ver la versioacuten original de la web

312 Aplicacioacuten Web con Disentildeo Adaptable Con esta metodologiacutea la aplicacioacuten web se adapta al dispositivo desde el cual se la

estaacute accediendo El coacutedigo HTML y la direccioacuten URL de la aplicacioacuten son uacutenicos El

Disentildeo Adaptable o Responsive Design (Figura 12) tiene sus oriacutegenes en el antildeo 2008

cuando la W3C discutioacute y describioacute sus propoacutesitos Desde el antildeo 2012 -momento en el

cual Google recomendoacute fuertemente su implicancia [24]- viene en ascenso y

posiblemente llegue a convertirse en un standard en un corto plazo

Mediante un Disentildeo Adaptable todos los elementos de la web se reajustan en ancho

y altura adaptaacutendose al tamantildeo de tu pantalla Incluso es posible ocultar secciones cuando

se accede desde un dispositivo moacutevil

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

40

Figura 12 Disentildeo Adaptable

Las principales ventajas del desarrollo de aplicaciones web con Disentildeo Adaptable

son

- El mantenimiento es menos costoso ya que solo hay que mantener una uacutenica

versioacuten de la aplicacioacuten

- Se simplifica el proceso de posicionar la aplicacioacuten en los buscadores

Como contrapartida el Disentildeo Adaptable presenta una serie de desventajas

- Requiere de mayores niveles teacutecnicos para su desarrollo

- El contenido de las aplicaciones con Disentildeo Adaptable puede ser mayor que el

contenido de las aplicaciones web especiacuteficas para dispositivos moacuteviles

perjudicando el tiempo de carga cuando se utiliza un tipo de conexioacuten no muy

potente y generando un mayor consumo de datos

En la actualidad existe una gran cantidad de frameworks que simplifican el

desarrollo de aplicaciones web con disentildeo adaptable destacaacutendose por su popularidad y

extensa documentacioacuten los frameworks Bootstrap [25] y Foundation [26]

32 Aplicaciones Hiacutebridas

Las aplicaciones hiacutebridas utilizan tecnologiacuteas web (HTML Javascript y CSS) pero

no son ejecutadas por un navegador En su lugar se ejecutan en un contenedor web

(webview) como parte de una aplicacioacuten nativa la cual estaacute instalada en el dispositivo

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

41

moacutevil Desde una aplicacioacuten hiacutebrida es posible acceder a las capacidades del dispositivo

a traveacutes de diversas API

Las aplicaciones hiacutebridas ofrecen grandes ventajas permitiendo la reutilizacioacuten de

coacutedigo en las distintas plataformas el acceso al hardware del dispositivo y la distribucioacuten

a traveacutes de las tiendas de aplicaciones En contrapartida se observan dos desventajas de

las aplicaciones hiacutebridas respecto del caso nativo i) la experiencia de usuario se ve

perjudicada al no utilizar componentes nativos en la interfaz y ii) la ejecucioacuten se ve

ralentizada por la carga asociada al contenedor web

Afortunadamente existe una diversidad de frameworks que permiten desarrollar

aplicaciones hiacutebridas A continuacioacuten se haraacute un breve resumen de los maacutes populares

321 PhoneGap PhoneGap [27] es un framework gratuito y open source creado en el antildeo 2008 por

la empresa Nitobi Software que permite crear aplicaciones moacuteviles usando tecnologiacutea

web estaacutendar HTML JavaScript y CSS En octubre del 2011 Adobe adquiere la empresa

Nitobi y aporta el coacutedigo de PhoneGap a Apache Software Foundation para iniciar un

nuevo proyecto por encima de PhoneGap llamado Apache Cordova [28] PhoneGap pasoacute

a ser una de las varias distribuciones de Apache Cordova (Figura 13) brindando servicios

extras como por ejemplo Adobe PhoneGap Build [29] un servicio de compilacioacuten en la

nube proporcionado por Adobe Creative Cloud PhoneGap Desktop y PhoneGap

Developer

PhoneGap permite compilar aplicaciones para las siguientes plataformas Android

IOS Amazon Fire OS Windows Phone Windows 8 Ubuntu Tizen Firefox OS

Blackberry 10

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

42

Figura 13 Funcionamiento de Apache Cordova

322 CocoonJS CocoonJS [30] es un framework para el desarrollo de aplicaciones moacuteviles

producido por Ludei [31] Actualmente cuenta con una licencia propietaria y ofrece

diferente tipos de planes pagos y gratuitos El mencionado framework estaacute basado en

Apache Cordova al igual que PhoneGap pero se diferencia de este uacuteltimo en que hace

un mayor hincapieacute en la performance de las aplicaciones resultantes CocoonJS ofrece

dos tipos de webview

Canvas+ un webview liviano optimizado para video juegos Provee solo un

subconjunto de las funcionalidades del HTML5 (canvas audio motion

geolocalizacioacuten etc) necesarias para desarrollar video juegos con el objetivo de

brindar la mejor performance posible

Webview+ un potente y completo webview basado en el webview del proyecto

Chromium el cual cuenta de una mejor performance en comparacioacuten con el

webview por defecto de Apache Cordova

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

43

CocoonJs permite crear aplicaciones tanto para iOS como para Android

323 Ionic Ionic [32] es un completo SDK gratuito y open source para el desarrollo de

aplicaciones hiacutebridas producido por Max Lynch Ben Sperry y Adam Bradley de la

compantildeia Drifty Co en el antildeo 2013 En un tiempo relativamente corto alcanzoacute una

popularidad a destacar Estaacute basado en Apache Cordova permitiendo desarrollar

aplicaciones con tecnologiacutea web A diferencia de otros frameworks para el desarrollo de

aplicaciones hibridas Ionic provee un framework para la interfaz de usuario y

herramientas visuales para disentildear interfaces

Mediante Ionic es posible crear aplicaciones para Android IOS Windows Phone y

Firefox OS

324 Sencha Touch Sencha Touch [33] es un framework gratuito Model-View-Controller (MVC)

JavaScript construido sobre el sistema de clases de Ext JS disentildeado especialmente para

el desarrollo de aplicaciones web moacuteviles para dispositivos taacutectiles [34]

Al igual que PhoneGap Sencha Touch permite a los desarrolladores crear

aplicaciones moacuteviles a partir de un desarrollo web con HTML5 CSS y Javascript A

diferencia de PhoneGap Sencha no necesita de ninguna libreriacutea de terceros para construir

interfaces similares a las nativas ya que el framework provee consigo una gran cantidad

de componentes visuales listos para utilizar

Sencha empaqueta el coacutedigo del proyecto mediante PhoneGap para luego poder

construir aplicaciones en todas las plataformas soportadas por PhoneGap

33 Aplicaciones Interpretadas

Las aplicaciones interpretadas son implementadas utilizando un lenguaje base el

cual se traduce en su mayor parte a coacutedigo nativo mientras el resto es interpretado en

tiempo de ejecucioacuten Estas aplicaciones son implementadas de manera independiente de

las plataformas utilizando diversas tecnologiacuteas y lenguajes tales como Javascript Java

Ruby y XML entre otros

Una de las principales ventajas de este tipo de aplicaciones es que se obtienen

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

44

interfaces de usuario totalmente nativas Sin embargo los desarrolladores experimentan

una dependencia total con el entorno de desarrollo elegido

Seguidamente se presentaran algunos de frameworks maacutes reconocidos para el

desarrollo de aplicaciones interpretadas

331 Appcelerator Titanium Desarrollado por Appcelerator Inc Appcelerator Titanium [35] es un framework

de coacutedigo abierto que permite la creacioacuten de aplicaciones moacuteviles para las plataformas

iOS y Android Dicho framework estaacute formado por Titanium Studio un entorno de

desarrollo de coacutedigo libre para la codificacioacuten de aplicaciones moacuteviles multiplataforma

y el SDK Titanium una serie de herramientas para el desarrollo testeo anaacutelisis

depuracioacuten y compilacioacuten de aplicaciones

Las aplicaciones desarrolladas con Appcelerator Titanium se codifican utilizando

el lenguaje Javascript el cual es evaluado en tiempo de ejecucioacuten mediante un inteacuterprete

de Javascript que se ejecuta en el sistema operativo del dispositivo Al iniciar la

aplicacioacuten desde el coacutedigo nativo se ejecuta el coacutedigo Javascript y mediante la API de

Titanium se mapea uno-a-uno cada elemento del coacutedigo Javascript con los elementos

nativos De esta manera la API de Titanium actuacutea como puente logrando interfaces de

usuario compuestas de controles nativos Este entorno de desarrollo utiliza el framework

Alloy disentildeado para el desarrollo aacutegil de aplicaciones moacuteviles Alloy estaacute basado en la

arquitectura MVC y soporta el uso de tecnologiacuteas populares como Backbonejs [36] y

Underscorejs [37]

Los creadores de Titanium destacan que mediante este framework es posible

reutilizar entre el 60 y 90 del coacutedigo entre distintas plataformas

332 NativeScript El 5 de marzo del 2015 la empresa Telerik lanzoacute NativeScript [38] un proyecto de

coacutedigo abierto el cual permite generar aplicaciones nativas utilizando JavaScript

Asimismo es posible desarrollar la aplicacioacuten utilizando el lenguaje TypeScript [39]

lenguaje libre y de coacutedigo abierto desarrollado por Microsoft que extiende a JavaScript

esencialmente antildeadiendo tipado estaacutetico y objetos basados en clases En este sentido

cuando se compila la aplicacioacuten se realiza la traduccioacuten del coacutedigo TypeScript a coacutedigo

JavaScript

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

45

NativeScript provee un moacutedulo multiplataforma que permite obtener aplicaciones

nativas desde coacutedigo JavaScript Este moacutedulo expone las capacidades del dispositivo y

de la plataforma subyacente de una manera consistente y permite accederlas desde el

coacutedigo JavaScript De igual manera las interfaces de usuario pueden ser definidas

mediante coacutedigo JavaScript documentos HTML y archivos CSS abstrayeacutendose de los

componentes nativos reales

Cuando la aplicacioacuten es compilada parte del coacutedigo multiplataforma es traducido

a coacutedigo nativo mientras que el resto es interpretado en tiempo de ejecucioacuten (Figura 14)

Por el momento NativeScript permite generar aplicaciones para Android e iOS y

se preveacute dar soporte a Windows Phone NativeScript renderiza controles nativos sin

utilizar WebViews logrando una performance y experiencia de usuario similar al de las

aplicaciones nativas

Figura 14 Proceso de interpretacioacuten mediante NativeScript

34 Aplicaciones Generadas por Compilacioacuten Cruzada

Estas aplicaciones se compilan de manera nativa creando una versioacuten especiacutefica de

alto rendimiento para cada plataforma destino Ejemplos de entornos de desarrollo para

generar aplicaciones por compilacioacuten cruzada son Applause [40] Xamarin [41]

Embarcadero Delphi 10 Seattle [42] y RubyMotion [43]

El entorno de desarrollo abierto Applause utiliza como entrada un lenguaje

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

46

especiacutefico del dominio basado en el framework Xtext [44] disentildeado expliacutecitamente para

aplicaciones moacuteviles orientadas a datos y genera coacutedigo fuente en Objective C Java C

o Python Las caracteriacutesticas de Xamarin Embarcadero Delphi 10 Seattle y RubyMotion

se presentan en secciones posteriores

341 Xamarin Xamarin es una plataforma de desarrollo de aplicaciones moacuteviles para generar

aplicaciones 100 nativas para iOS Android y Windows a partir de una base de coacutedigo

CNET comuacuten para conseguir entre un 75 y hasta casi un 100 de reutilizacioacuten de

coacutedigo entre plataformas Las aplicaciones escritas con Xamarin y C disponen de acceso

completo a las API de la plataforma subyacente asiacute como de la capacidad de crear

interfaces de usuario nativas y de realizar la compilacioacuten en coacutedigo nativo por lo que el

impacto en el rendimiento en tiempo de ejecucioacuten es escaso

Xamarin es una compantildeiacutea que se establecioacute en mayo de 2011 por los mismos

ingenieros que crearon el proyecto Mono [45] consistente en una implementacioacuten libre

de la plataforma de desarrollo NET para dispositivos Android iOS y GNULinux

Anteriormente este proyecto se llamaba MonoTouch y MonoDroid

Si bien Xamarin cuenta con su propio IDE denominado Xamarin Studio (Figura

15) es posible integrarlo con Microsoft Visual Studio y de esta manera generar tambieacuten

aplicaciones para Windows incluido Windows RT para tablets y Windows Phone para

celulares

En febrero del 2016 Xamarin es comprada por Microsoft y desde ese momento la

plataforma Xamarin y el IDE Xamarin Studio pasaron a ser gratuitas

Xamarin propone un enfoque de desarrollo multiplataforma en el que se comparte

la codificacioacuten completa de la loacutegica del negocio Sin embargo las interfaces deben ser

programadas de manera independiente para cada una de las plataformas destino Asiacute la

reutilizacioacuten de coacutedigo seguacuten estudios estadiacutesticos de la compantildeiacutea Xamarin es cercana

al 85

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

47

Figura 15 Entorno de Desarrollo Xamarin Studio

342 Embarcadero Delphi 10 Seattle Embarcadero Delphi 10 Seattle [42] es una plataforma de desarrollo propietaria y

no gratuita que permite a los desarrolladores crear aplicaciones raacutepidamente a traveacutes de

un entorno visual coacutemodo e intuitivo (Figura 16) La aplicacioacuten desarrollada puede ser

compilada para muacuteltiples plataformas incluyendo Windows Mac Android e iOS

Delphi 10 Seattle al igual que Xamarin aventaja a otros tipos de aplicaciones

multiplataformas con resultados 100 nativos con acceso total a los sensores y

capacidades del dispositivo (caacutemara notificaciones GPS aceleroacutemetro entre otras)

Un punto a destacar es que Delphi 10 Seattle a traveacutes del framework de interfaces

de usuario FireUI Multi-Device Designer permite crear interfaces de usuario totalmente

nativas sin la necesidad de tener que disentildear interfaces especiacuteficas para cada plataforma

en particular

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

48

Figura 16 Entorno de Desarrollo Delphi 10 Seattle

343 RubyMotion En Mayo de 2012 la empresa HipByte lanza RubyMontion un proyecto que

permite generar aplicaciones para iOS Android y OS X utilizando el lenguaje de

programacioacuten Ruby

Para poder generar las aplicaciones multiplataforma RubyMotion posee

implementaciones de Ruby sobre los sistemas operativos destinos (Android e iOS) que

permiten acceder a todas las caracteriacutesticas provistas por cada plataforma Las

herramientas de compilacioacuten provistas por RubyMotion se encargan de embeber la

correspondiente implementacioacuten de Ruby al momento de compilar para cada plataforma

La principal desventaja de RubyMotion es que soacutelo funciona bajo el sistema

operativo OS X Otro factor a tener en cuenta es que no posee un entorno de desarrollo

integrado que facilite todo el proceso al desarrollador esto se ve solventado gracias a que

ofrece complementos para los IDE y editores de coacutedigo maacutes utilizados

Finalmente si bien el producto es un servicio pago ofrece una posibilidad de

probarlo gratuitamente aunque con soporte uacutenicamente para compilar a la uacuteltima versioacuten

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

49

de cada plataforma destino

Capiacutetulo 4 Experimentacioacuten

50

Capiacutetulo 4 Experimentacioacuten

Con el objetivo de profundizar la investigacioacuten de las diferentes metodologiacuteas de

desarrollo de aplicaciones moacuteviles multiplataforma es que se llevaron a cabo diferentes

experimentos en simultaacuteneo El primer experimento consiste en el desarrollo de una

aplicacioacuten moacutevil utilizando cada una de las metodologiacuteas estudiadas en el capiacutetulo

anterior con el objetivo de analizar el proceso de desarrollo El segundo experimento

tiene como objetivo analizar el rendimiento de las aplicaciones moacuteviles generadas

mediante las metodologiacuteas estudiadas a traveacutes de un caacutelculo matemaacutetico Por uacuteltimo se

presenta un informe comparativo que pueda ayudar en la toma de decisiones sobre queacute

metodologiacutea utilizar en futuros desarrollos

41 Aplicacioacuten Moacutevil para la plataforma de E-Learning WebUNLP

411 Descripcioacuten del problema WebUNLP es un entorno virtual de ensentildeanza y aprendizaje que permite a los

docentes mediar sus propuestas educativas Alumnos y docentes pueden encontrarse en

ese espacio para compartir materiales de estudio comunicarse y generar una experiencia

educativa en forma virtual [46]

Actualmente WebUNLP cuenta con una versioacuten web enfocada a computadoras de

escritorio o portaacutetiles pero no estaacute adaptada para ser utilizada desde dispositivos moacuteviles

El desarrollo planteado consiste en extender WebUNLP con la construccioacuten de una

aplicacioacuten moacutevil que permita acceder a determinadas funcionalidades del sistema a

traveacutes de un dispositivo moacutevil El enfoque propuesto incluye un anaacutelisis de la misma

solucioacuten comparando el desarrollo nativo web hiacutebrido interpretado y de compilacioacuten

cruzada a fin de establecer cuaacutel de ellos es conveniente

Como ocurre con cualquier desarrollo de software la construccioacuten de una

aplicacioacuten moacutevil implica tener claramente definido su propoacutesito y cuaacuteles requerimientos

debe cumplir En particular para el caso de software para dispositivos moacuteviles resulta

esencial tener objetivos maacutes acotados que en su versioacuten de escritorio [47]

Capiacutetulo 4 Experimentacioacuten

51

Para el caso especiacutefico de WebUNLP se realizoacute el desarrollo incremental de una

aplicacioacuten moacutevil y esta primera versioacuten se enfocoacute en una de sus herramientas de

comunicacioacuten la cartelera Esta herramienta permite comunicar las novedades de un

curso como por ejemplo el cambio de horario de una cursada recordar las fechas de

entrega de un trabajo praacutectico entre otras [46]

412 Anaacutelisis Uno de los primeros interrogantes planteados fue la eleccioacuten de la plataforma En

teacuterminos de mercado los sistemas operativos que predominan en Argentina son Android

e iOS [4815] con lo cual se decidioacute dar soporte a estos dos sistemas operativos

Se analizaron los requerimientos funcionales y no funcionales de forma aislada a la

plataforma y luego de forma especiacutefica para cada una de ellas

A continuacioacuten se presentan algunos requerimientos a cumplir por la aplicacioacuten

El usuario debe poder ingresar a la aplicacioacuten con las mismas credenciales que las

utilizadas para acceder a la versioacuten web de escritorio

El usuario debe poder acceder a la cartelera de todos los cursos en los que

participa ya sea como docente o alumno

El usuario debe recibir una notificacioacuten en su dispositivo cuando una novedad es

publicada en la cartelera Este requerimiento no se puede cumplir en la versioacuten

web accesible desde computadoras de escritorio yo portables

El usuario debe tener la misma experiencia de uso en todas las plataformas

operativas

La aplicacioacuten web existente debe estar sincronizada con la aplicacioacuten moacutevil a

desarrollar esto significa que cualquier cambio realizado desde la aplicacioacuten

moacutevil debe verse reflejado en la versioacuten web y viceversa

413 Disentildeo Para satisfacer los requerimientos planteados en el punto anterior a excepcioacuten de

la notificacioacuten el disentildeo de la aplicacioacuten moacutevil web consiste en una reacuteplica de lo ofrecido

por WEBUNLP adaptaacutendose solamente la interfaz al tamantildeo de pantalla del dispositivo

moacutevil

Capiacutetulo 4 Experimentacioacuten

52

Para el disentildeo de las aplicaciones moacuteviles nativa hiacutebrida interpretada y de

compilacioacuten cruzada la situacioacuten es maacutes compleja En la Figura 17 se presenta la

arquitectura geneacuterica de todos los componentes que participan en este escenario de

desarrollo En ella se observa el acceso desde una PC a WebUNLP y el acceso desde

dispositivos moacuteviles a la informacioacuten de WebUNLP mediante servicios web Para el

desarrollo de los servicios web se disentildeoacute una API Restful dada su simpleza escalabilidad

e interoperabilidad [49]

Figura 17 Arquitectura geneacuterica para aplicacioacuten nativa e hiacutebrida

Asimismo existe una tarea programada (Cron) de ejecucioacuten intermitente a

intervalos regulares de tiempo la cual notifica a los dispositivos moacuteviles correspondientes

cuando se crea una novedad en la cartelera de WebUNLP El Cron identifica el sistema

operativo del dispositivo a notificar y genera dicha notificacioacuten

En cuanto a la interfaz graacutefica se planteoacute un disentildeo independiente de la plataforma

para analizar los aspectos de usabilidad de la aplicacioacuten y luego se realizaron los ajustes

necesarios para cada tipo de aplicacioacuten

En las interfaces disentildeadas la navegacioacuten es en serie en el orden en que se presentan

en el mockup [50] de la Figura 18

Capiacutetulo 4 Experimentacioacuten

53

Figura 18 Mockup independiente del tipo de aplicacioacuten

414 Desarrollo

4141 Aplicacioacuten Nativa para Android

El desarrollo de aplicaciones para la plataforma Android requiere disponer del Java

Development Kit (JDK) y su entorno de programacioacuten conocido como Android SDK

Este uacuteltimo provee libreriacuteas y herramientas necesarias para construir testear y depurar

aplicaciones para Android

El desarrollo de la aplicacioacuten de WebUNLP para Android se realizoacute seguacuten las

convenciones adoptadas por su comunidad porque aplica buenas praacutecticas en la

construccioacuten de interfaces y de la loacutegica detraacutes de ellas el acceso a datos y a servicios

web Para cumplir el requerimiento de las notificaciones en el dispositivo

correspondiente el Cron genera la notificacioacuten mediante el uso del servicio Google Cloud

Messaging (GCM) [51] En la Figura 19 se presentan las interfaces de la aplicacioacuten

desarrollada

Figura 19 Aplicacioacuten nativa para Android

Capiacutetulo 4 Experimentacioacuten

54

4142 Aplicacioacuten Nativa para iOS

La plataforma Apple iOS estaacute basada en un modelo propietario es por ello que el

desarrollo de una aplicacioacuten nativa iOS implica contar con una Apple Mac ejecutando OS

X con Xcode instalado El lenguaje de programacioacuten principal es Objective C Xcode es

el entorno de desarrollo de Apple para todos sus dispositivos y es el encargado de

proporcionar el iOS SDK con las herramientas compiladores y frameworks necesarios

Ademaacutes Xcode viene integrado con simuladores para dispositivos iOS (iPhones y iPads)

que facilitan las etapas de prueba del sistema desarrollado

Para los aspectos referentes a la interfaz graacutefica y la interaccioacuten con el usuario se

siguieron las convenciones propuestas por Apple [52] para lograr una mejor integracioacuten

de la aplicacioacuten con el sistema operativo y mejorar la experiencia del usuario

Por uacuteltimo para satisfacer el requerimiento de notificaciones el Cron notifica al

dispositivo iOS correspondiente mediante el uso del servicio Apple Push Notification

Service (APNs) [53] En la Figura 20 se presentan las interfaces de la aplicacioacuten

desarrollada

Figura 20 Aplicacioacuten nativa para iOS

4143 Aplicacioacuten Web Moacutevil

Se desarrolloacute una aplicacioacuten web capaz de acceder a la cartelera de WebUNLP

disponible para cualquier dispositivo moacutevil que cuente con un navegador que soporte las

caracteriacutesticas utilizadas para el desarrollo HTML5 CSS3 y Javascript

Como la velocidad de transmisioacutenrecepcioacuten de datos de un dispositivo moacutevil a

traveacutes de WiFi y en particular 3G es inferior a la velocidad de una computadora de

Capiacutetulo 4 Experimentacioacuten

55

escritorio la versioacuten web de la cartelera de WebUNLP es liviana y gran parte de los

requerimientos son implementados a traveacutes de Ajax [54] para evitar ante alguacuten cambio

la recarga de la paacutegina completa

Debido a las limitaciones que tienen las aplicaciones que se ejecutan sobre un

navegador no es posible implementar la recepcioacuten de una notificacioacuten en el dispositivo

cuando una novedad es publicada en la cartelera

4144 Aplicacioacuten Hiacutebrida desarrollada con PhoneGap y Jquery Mobile

Para la construccioacuten de la aplicacioacuten WebUNLP hiacutebrida se utilizoacute el framework

PhoneGap [27] el cual permite desarrollar aplicaciones moacuteviles que utiliza tecnologiacuteas

comunes a todos los dispositivos HTML5 CSS y Javascript

Asimismo se utilizoacute el framework Javascript Jquery Mobile [55] para lograr

interfaces con apariencia y comportamiento consistente a traveacutes de las diferentes

plataformas moacuteviles

Con el objetivo de implementar el patroacuten de disentildeo MVC se utilizoacute la libreriacutea

Backbonejs [36]

Por uacuteltimo para satisfacer el requerimiento de notificaciones se utilizoacute el plugin

Pushwoosh [56]

En la figura 5 se presentan las interfaces de la aplicacioacuten desarrollada

Figura 21 Aplicacioacuten hiacutebrida desarrollada con PhoneGap

Capiacutetulo 4 Experimentacioacuten

56

4145 Aplicacioacuten Hiacutebrida desarrollada con Sencha Touch

El desarrollo de WebUNLP utilizando Sencha Touch se vio favorecido por el uso

del patroacuten de disentildeo MVC Esto permitioacute mayor flexibilidad y legibilidad en el coacutedigo

[57] [34]

Sencha ofrece Sencha Command una herramienta multiplataforma de liacutenea de

comandos que provee tareas automatizadas para todo el ciclo completo de una aplicacioacuten

En el caso de WebUNLP se utilizoacute tanto para la generacioacuten del proyecto como para el

empaquetado de la aplicacioacuten

En la Figura 22 se presentan las interfaces de la aplicacioacuten desarrollada

Figura 22 Aplicacioacuten desarrollada con Sencha Touch

4146 Aplicacioacuten Interpretada de WebUNLP con Appcelerator Titanium 3

Para desarrollar una aplicacioacuten moacutevil experimental seguacuten el enfoque interpretado

se utilizoacute el entorno de desarrollo gratuito y open source Appcelerator Titanium 3 [35]

Se destaca la simplicidad y legibilidad de los controladores y modelos de la

aplicacioacuten desarrollada luego de utilizar Alloy el framework de Titanium que permite

disentildear aplicaciones seguacuten el patroacuten de disentildeo MVC Para la construccioacuten de las vistas se

puede optar por la programacioacuten mediante Javascript y la API de Titanium o bien por

una especificacioacuten XML con estilos TSS (Titanium Style Sheets) Esta uacuteltima opcioacuten

simplifica el proceso de creacioacuten de las vistas aunque falta todaviacutea un buen editor visual

de interfaces que lo potencie

Capiacutetulo 4 Experimentacioacuten

57

Para cubrir requerimientos de notificaciones en el dispositivo Titanium provee el

moacutedulo PushNotifications para plataformas Android e iOS

La Figura 24 (a) muestra la experimentacioacuten con Titanium

4147 Aplicacioacuten Generada por Compilacioacuten Cruzada de WebUNLP utilizando XamarinVisual Studio

Tal como se mencionoacute en la seccioacuten 341 Xamarin propone un enfoque de

desarrollo multiplataforma en el que se comparte la codificacioacuten completa de la loacutegica

del negocio Sin embargo las interfaces deben ser programadas de manera independiente

para cada una de las plataformas destino (ver Figura 23) Asiacute la reutilizacioacuten de coacutedigo

seguacuten estudios estadiacutesticos de la compantildeiacutea Xamarin es cercana al 85

Figura 23 Enfoque uacutenico de desarrollo Xamarin

Para el estudio de las aplicaciones generadas por compilacioacuten cruzada se desarrolloacute

la aplicacioacuten moacutevil de WebUNLP utilizando Xamarin integrado con Microsoft Visual

Studio Siguiendo la estrategia maacutes eficiente para trabajar en este entorno se ha creado

una solucioacuten uacutenica conteniendo tres proyectos distintos Uno de ellos se utilizoacute para

generar la aplicacioacuten Android otro para la aplicacioacuten Windwos Phone 8 y el tercero para

la implementacioacuten de una biblioteca de clases portable (PCL por sus siglas en ingleacutes) con

todo el coacutedigo compartido Los tres proyectos fueron desarrollaacutendose de manera conjunta

y concurrente

Aunque una de las ventajas maacutes importantes de Xamarin es la reutilizacioacuten de

coacutedigo eacutesta se ve fuertemente afectada por el tipo de aplicacioacuten que se desarrolla La

relacioacuten existente entre la complejidad de la interfaz y la loacutegica del negocio impacta

directamente sobre la posibilidad de mantener la mayor cantidad de coacutedigo compartido

Capiacutetulo 4 Experimentacioacuten

58

en la PCL En el desarrollo de WebUNLP la reutilizacioacuten de coacutedigo ha sido cercana al

50 Sin embargo no debe despreciarse la ventaja de utilizar el mismo lenguaje entorno

y conjunto de herramientas comunes en el desarrollo de aplicaciones para distintas

plataformas moacuteviles

La Figura 24 (b) presenta la interfaz desarrollada para Windows Phone 8

4148 Aplicacioacuten Generada por Compilacioacuten Cruzada de WebUNLP utilizando Delphi 10 Seattle

Para el profundizar el estudio de las aplicaciones generadas por compilacioacuten

cruzada ademaacutes se desarrolloacute la aplicacioacuten moacutevil de WebUNLP utilizando Delphi 10

Seattle En particular fueron de gran utilidad tanto los componentes provistos por Delphi

para acceder a servicios RESTful como el entorno visual de desarrollo de Delphi 10

Seattle

Para la recepcioacuten de notificaciones en el dispositivo de las novedades de WebUNLP

se utilizoacute el componente TPushEvent conectado al servicio Kinvey [58]

La Figura 24 (c) presenta la interfaz de la aplicacioacuten desarrollada

(a) (b) (c)

Figura 24 Aplicacioacuten desarrollada con a) Titanium b) XamarinVisual Studio y c) Delphi XE

415 Conclusiones del experimento WebUNLP Seleccionar un dominio para desarrollar un caso experimental tiene sus

particularidades La novedad de disponer una aplicacioacuten moacutevil no es motivo suficiente

que justifique tal desarrollo Es necesario satisfacer un conjunto de requerimientos

claramente planteados

Capiacutetulo 4 Experimentacioacuten

59

WebUNLP es un entorno virtual de ensentildeanza y aprendizaje utilizado por diversos

cursos de grado y postgrado de la Universidad Nacional de La Plata Por ende la cantidad

de usuarios beneficiados por acceder desde cualquier lugar a este entorno es importante

De esta manera se optoacute por elegir dicho espacio virtual para ser replicado en una

versioacuten moacutevil que no soacutelo permita acercarlo a sus usuarios sino que ademaacutes ampliacutee sus

funciones en este caso puntualmente para la cartelera

Para el desarrollo de esta experimentacioacuten se desarrolloacute la misma aplicacioacuten para

los cinco tipos de enfoques de desarrollo moacutevil (web nativa hiacutebrida interpretada y

generada por compilacioacuten cruzada)

Se destaca la gran simpleza de generar la versioacuten web dado que se utilizan las

mismas herramientas tecnoloacutegicas que las usadas para el desarrollo de cualquier

aplicacioacuten web tradicional La principal diferencia en este sentido radica en la limitacioacuten

de espacio en la pantalla del dispositivo No obstante el mayor contraste estaacute dado en que

no es posible acceder a todas las capacidades de hardware del dispositivo lo que impidioacute

implementar uno de los requerimientos probablemente el maacutes interesante la notificacioacuten

de novedades de la cartelera de WebUNLP al usuario

Por otra parte las versiones nativas han cumplido todos los requerimientos Aunque

la mayor desventaja consiste en la no portabilidad lo que implicoacute un desarrollo especiacutefico

para la plataforma que se desee cubrir En este trabajo se han presentado los desarrollos

para Android e iOS sistemas operativos maacutes usados en Argentina con un costo de

desarrollo y mantenimiento inherente mayor

Para el caso del enfoque hiacutebrido tanto la versioacuten de WebUNLP desarrollada con

PhoneGap y Jquery Mobile como la versioacuten desarrollada con Sencha Touch han logrado

conjugar la simpleza del desarrollo web con el uso de todas las capacidades del

dispositivo Este tipo de enfoque pretende suplir las desventajas de los dos enfoques

previos hecho que lo posiciona como una eleccioacuten realmente interesante siempre

condicionada por los requerimientos especiacuteficos a cumplir

Por el lado del modo de desarrollo interpretado la versioacuten de WebUNLP

desarrollada con Titanium logroacute resolver todos los requerimientos previamente

planteados Al igual que en el enfoque hiacutebrido es un punto a destacar que el desarrollo

de la aplicacioacuten con Titanium es relativamente simple y es posible reutilizar todo el

Capiacutetulo 4 Experimentacioacuten

60

coacutedigo entre plataformas Lo que lo hace la eleccioacuten prima facie es el hecho de obtener

interfaces totalmente nativas algo que no se lograba mediante el enfoque hiacutebrido

Por uacuteltimo las versiones de WebUNLP generadas con el enfoque de compilacioacuten

cruzada con Xamarin y Delphi lograron cumplir los requerimientos planteados Se

destaca el hecho de que se genera interfaces totalmente nativas pero considero que el

costo es muy alto se debe disentildear las interfaces para cada plataforma de manera

independiente lo que hace que no se pueda reutilizar todo el coacutedigo fuente de la

aplicacioacuten

42 Enfoques de desarrollo Anaacutelisis comparativo de rendimiento 421 Descripcioacuten del Problema

Hace apenas unas deacutecadas atraacutes el uso de los sistemas de software estaba

restringido a un grupo reducido de usuarios especializados Aquella eacutepoca contrasta

fuertemente con la actualidad en la que los smartphones pequentildeas computadoras moacuteviles

de propoacutesito general se han vuelto cotidianos y omnipresentes Estos dispositivos pueden

utilizarse para llevar a cabo tareas complejas y criacuteticas requiriendo la mejora continua de

las capacidades de coacutemputo la disponibilidad el rendimiento eficiente entre otras

necesidades La evolucioacuten vertiginosa de esta tecnologiacutea ejerce presioacuten en la adaptacioacuten

de la Ingenieriacutea de Software

Respecto del desarrollo para dispositivos moacuteviles se debe considerar una serie de

caracteriacutesticas propias de esta actividad que no estaban presentes en el desarrollo

tradicional de software [59] Es necesario tener en cuenta sobre queacute tipo de dispositivos

se debe ejecutar la aplicacioacuten a construir La diversidad de plataformas lenguajes de

programacioacuten herramientas de desarrollo estaacutendares protocolos y tecnologiacuteas de red

algunas limitaciones de ciertos dispositivos y las exigencias de tiempo del mercado entre

otros constituyen algunos de los problemas a tratar

En la mayoriacutea de los casos el eacutexito de un producto de software para dispositivos

moacuteviles estaraacute condicionado por el nivel de popularidad que logre alcanzar Para

maximizar su presencia en el mercado es necesario que la aplicacioacuten pueda ejecutarse

sobre la mayor cantidad de plataformas moacuteviles existentes especialmente sobre las dos

maacutes populares Android e iOS [60] Para lograr este objetivo existen dos alternativas

Capiacutetulo 4 Experimentacioacuten

61

i) Desarrollar aplicaciones especiacuteficas para cada plataforma impulsando en

paralelo varios proyectos de desarrollo con las herramientas y lenguajes propios de cada

una de ellas Estas aplicaciones analizadas previamente en este trabajo se denominan

aplicaciones nativas

ii) Generar aplicaciones que puedan ejecutarse en forma directa sobre maacutes de una

plataforma de sistema operativo a partir de un uacutenico proyecto de desarrollo Estas

aplicaciones como ya se ha presentado en este trabajo se denominan aplicaciones

multiplataforma

En los uacuteltimos antildeos se ha incrementado el intereacutes de la comunidad de Ingenieriacutea de

Software por el estudio del desarrollo de aplicaciones multiplataforma para dispositivos

moacuteviles

En [5] se presenta un anaacutelisis comparativo de enfoques de desarrollo de aplicaciones

multiplataforma para dispositivos moacuteviles proponiendo la siguiente taxonomiacutea

aplicaciones web moacuteviles aplicaciones hiacutebridas aplicaciones interpretadas y

aplicaciones generadas por compilacioacuten cruzada

En [7] y [8] se analizan aspectos generales de frameworks de desarrollo

multiplataforma para dispositivos moacuteviles

En [61] se comparan aspectos no funcionales para los diferentes enfoques de

desarrollo de aplicaciones multiplataforma para dispositivos moacuteviles

En [9] se analizaron ventajas y desventajas de los enfoques de desarrollo

multiplataforma mencionados desde el punto de vista del Ingeniero de Software

La eleccioacuten del modo de desarrollo de aplicaciones para dispositivos moacuteviles

depende de varios factores Uno de ellos en muchos casos esencial es el tiempo de

ejecucioacuten El intereacutes por optimizar el tiempo de ejecucioacuten de una aplicacioacuten de software

es intriacutenseco a la disciplina informaacutetica Esto se evidencia entre otras cosas por la

evolucioacuten del poder de coacutemputo de los procesadores Ademaacutes el rendimiento eficiente

es uno de los atributos que las aplicaciones de software deben satisfacer seguacuten diversos

estaacutendares de calidad entre otros ISOIEC 9126 e ISOIEC 25010 [62]

En lo que respecta al desarrollo de aplicaciones para dispositivos moacuteviles es

oportuno considerar el tiempo de ejecucioacuten de las aplicaciones por diversos motivos

El tiempo de ejecucioacuten de una aplicacioacuten estaacute fuertemente ligado al consumo de

Capiacutetulo 4 Experimentacioacuten

62

energiacutea [63] el cual estaacute limitado por la capacidad de la bateriacutea de los dispositivos

Asimismo el rendimiento de las aplicaciones se ve reflejado principalmente

mediante las calificaciones de los usuarios en las tiendas de aplicaciones en liacutenea

Aplicaciones con bajo rendimiento pueden implicar usuarios disconformes produciendo

publicidad negativa [60] Andre Charland y Brian Leroux identifican al tiempo de

ejecucioacuten como uno de los problemas principales a resolver en el desarrollo de

aplicaciones multiplataforma y afirman que a los usuarios finales les preocupa la calidad

del software y la experiencia de uso [64]

Corral Sillitti y Succi realizaron un anaacutelisis de rendimiento comparativo entre

aplicaciones nativas y aplicaciones hiacutebridas utilizando el framework Phonegap para una

versioacuten del sistema operativo Android [65]

Es importante destacar que no se han encontrado estudios que evaluacuteen y comparen

el rendimiento entre los diversos modos de desarrollo multiplataforma de acuerdo a la

taxonomiacutea propuesta en [5] aplicaciones web moacuteviles aplicaciones hiacutebridas

aplicaciones interpretadas y aplicaciones generadas por compilacioacuten cruzada Esta

taxonomiacutea es la que se utiliza de referencia en este trabajo

El presente apartado realiza un anaacutelisis comparativo de rendimiento de aplicaciones

para dispositivos moacuteviles generadas por el enfoque de desarrollo nativo y los distintos

enfoques de desarrollo multiplataforma seguacuten [5]

En la seccioacuten siguiente se describe el experimento utilizado para evaluar tiempos

de ejecucioacuten en aplicaciones nativas y en los diversos modos de desarrollo de aplicaciones

moacuteviles multiplataforma y en las secciones posteriores se muestran y analizan los

resultados obtenidos se presentan las conclusiones y el trabajo futuro

422 Desarrollo

4221 Disentildeo de las pruebas

Todas las pruebas cuyos resultados se presentan en este trabajo fueron realizadas

sobre dispositivos moacuteviles con sistemas operativos Android e iOS dado que en la

actualidad abarcan gran parte del mercado mundial de acuerdo a lo indicado en [60]

Para llevar a cabo la experimentacioacuten se seleccionaron los frameworks de desarrollo

multiplataforma seguacuten las alternativas presentadas en [10] Se disentildearon pruebas para

evaluar el rendimiento de Apache Cordova [28] Appcelerator Titanium [35] y Xamarin

Capiacutetulo 4 Experimentacioacuten

63

[41] que se corresponden con los modos de desarrollo hiacutebrido interpretado y compilacioacuten

cruzada respectivamente Tambieacuten se experimentoacute con otros dos frameworks de

desarrollo multiplataforma que recientemente han ganado popularidad NativeScript

(desarrollo interpretado) y Corona (compilacioacuten cruzada) Finalmente se incluyeron al

conjunto de pruebas las aplicaciones web y el enfoque nativo de desarrollo para Android

e iOS De este modo se logroacute una muestra razonablemente representativa de las diversas

opciones existentes en la actualidad

Para la realizacioacuten de las pruebas se utilizaron seis dispositivos moacuteviles distintos

(ver Tabla 2) tres de ellos con sistema operativo Android identificados como DA1 DA2 y

DA3 (dos smartphone y una tablet) y tres con sistema operativo iOS identificados como

DI1 DI2 y DI3 (dos smartphone y una tablet)

ID Sistema Operativo Caracteriacutesticas

DA1 Android 44

Tipo Smartphone Marca Motorola

Modelo Moto-G2 Procesador Quad-core 12 GHz Cortex-A7

RAM 1GB Snapdragon 400

DA2 Android 502

Tipo Smartphone Marca Samsung

Modelo S6 Procesador Octa-core (4x21 GHz Cortex-A57 amp 4x15

GHz Cortex-A53) RAM 3GB Exynos 7420 Octa

DA3 Android 422

Tipo Tablet Marca Samsung Modelo Tab 2

Procesador Dual-core 10 GHz RAM 1GB TI OMAP 4430

DI1 iOS 92

Tipo Smartphone Marca Apple Modelo 5S

Procesador Dual-core 13 GHz Cyclone (ARM v8-based)

RAM 1GB Apple A7

DI2 iOS 91

Tipo Smartphone Marca Apple

Modelo 6 plus Procesador Dual-core 14 GHz Typhoon (ARM v8-

based) RAM 1GB Apple A8

DI3 iOS 91 Tipo Tablet

Marca Apple Modelo Ipad Air

Capiacutetulo 4 Experimentacioacuten

64

Procesador Dual-core 13 GHz Cyclone (ARM v8-based)

RAM 1GB Apple A7 Tabla 2 Dispositivos moacuteviles utilizados en el experimento

Se definieron siete escenarios de anaacutelisis distintos uno por cada estrategia de

desarrollo utilizada

1 Nativo para Android y nativo para iOS 2 Aplicaciones web (multiplataforma) 3 Apache Cordova (multiplataforma hibrido) 4 Appcelerator Titanium (multiplataforma interpretado) 5 NativeScript (multiplataforma interpretado) 6 Xamarin (multiplataforma compilacioacuten cruzada) 7 Corona (multiplataforma compilacioacuten cruzada)

En los seis dispositivos se llevaron a cabo pruebas para cada uno de los siete

escenarios mencionados definiendo asiacute un total de 42 casos de prueba

Con el fin de evaluar la velocidad de procesamiento se planteoacute un caacutelculo simple

que incluyoacute varias iteraciones funciones matemaacuteticas y aritmeacutetica de punto flotante que

se resume en la siguiente serie

119904119890119903119894119890 =sum sum (log2(119896) +3119896

2119895+ radic119896

100000

119896=1

+ 119896119895minus1)

5

119895=1

A modo de ejemplo en la Figura 25 se muestra el coacutedigo multiplataforma

desarrollado en Apache Cordova para el caacutelculo de la serie definida

El experimento planteado permite medir con precisioacuten la variable analizada en este

caso el tiempo de ejecucioacuten requerido para realizar un caacutelculo matemaacutetico intensivo

Este tipo de caacutelculo matemaacutetico es frecuente en diversas aplicaciones que se

ejecutan en dispositivos moacuteviles por ejemplo juegos aplicaciones con realidad

aumentada aplicaciones para tratamiento de imaacutegenes entre otras en las cuales no

siempre es posible utilizar el poder de la Unidad de Procesamiento Grafico (GPU) para

el caacutelculo

El coacutedigo fuente de los experimentos llevados a cabo se encuentra disponible en

[66]

En las siguientes secciones se describe la experimentacioacuten y se analizan los

resultados obtenidos

Capiacutetulo 4 Experimentacioacuten

65

4222 Recoleccioacuten de datos

Para cada uno de los 42 casos de prueba definidos se realizaron 30 ejecuciones

independientes del experimento disentildeado obteniendo en cada caso una muestra T = T1

T2 hellip T30 con Ti = tiempo requerido para el caacutelculo de la serie en la i-eacutesima ejecucioacuten

del experimento planteado El tiempo Ti se expresa en milisegundos

Para caracterizar cada una de las muestras obtenidas se han calculado los

estadiacutesticos y S que se corresponden con la media (o promedio muestral) y la

desviacioacuten estaacutendar muestral (ver Tabla 3)

var startTime = new Date()getTime()

var serie = 0

for ( var j=1 j lt= 5 j++ )

for ( var k=1 k lt= 100000 k++ )

series = series + (Mathlog(k)MathLN2) + (3k2j) +

Mathsqrt(k) + Mathpow(k j-1)

var finalTime = new Date()getTime()

var duration = finalTime - startTime

documentgetElementById(result)innerHTML = duration + -gt + series

Figura 25 Caacutelculo de serie coacutedigo multiplataforma desarrollado en Apache Cordova

Capiacutetulo 4 Experimentacioacuten

66

Dada la muestra T=T1 T2 hellip Tn

Media o promedio muestral = (

1

119899)sum119879119894

119899

119894=1

Desviacioacuten estaacutendar muestral 119878 = radic

1

119899 minus 1sum(119879119894 minus )2119899

119894=1

Tabla 3 Estadiacutesticos utilizados en el anaacutelisis de los datos

423 Resultados Obtenidos En la Tabla 4 se presenta una siacutentesis de los resultados obtenidos conformada por

los valores y S calculados para cada caso de prueba planteado Estos valores permiten

comparar el rendimiento de las aplicaciones generadas a partir de los distintos enfoques

de desarrollo evaluadas sobre cada uno de los seis dispositivos utilizados

Los valores presentados en la Tabla 4 y graficados con diagramas de barras en la

Figura 26 sugieren un anaacutelisis por separado de los casos con sistema operativo Android

y los casos con sistema operativo iOS Claramente las siluetas delineadas en los

diagramas de barras de la Figura 26 se repiten de forma similar en los escenarios con el

mismo sistema operativo pero se diferencian notablemente entre distintos sistemas

operativos

Nativo WebApp Apache Cordova Titanium NativeScript Xamarin Corona

DA1 53293 18627 23033 21167 18730 39517 140173

S 1614 632 1422 2495 939 895 1260

DA2 21180 9067 8577 9563 8967 21100 60053

S 1997 1248 883 764 916 669 595

DA3 76380 17273 19060 19270 18350 37933 134430

S 2898 1551 936 1680 304 831 2339

DI1 413 5710 32373 29977 25203 12543 3963

S 078 1655 1662 401 728 1103 085

DI2 413 4190 26397 24113 22343 10303 9863

S 073 538 1544 495 861 491 613

DI3 253 4167 29223 27267 22597 11053 10967

S 057 444 1082 550 277 390 275

Tabla 4 Siacutentesis de resultados obtenidos

Capiacutetulo 4 Experimentacioacuten

67

Figura 26 Diagrama de barras con las muestras recolectadas (las barras muestran el tiempo promedio expresado en milisegundos)

Capiacutetulo 4 Experimentacioacuten

68

424 Anaacutelisis de Resultados Debido a las diferencias de hardware de los dispositivos utilizados no es prudente

comparar el rendimiento de las aplicaciones nativas en Android con respecto a las de

iOS No obstante de los resultados obtenidos es posible inferir que el enfoque nativo en

iOS resulta mucho maacutes eficiente que el enfoque nativo en Android Existen diversos

factores que presumen justificar este hecho entre ellos la diferencia inherente de ejecutar

coacutedigo Objective C en iOS comparado con ejecutar coacutedigo Java en Android el cual

necesita del Android Runtime (ART) para su funcionamiento ralentizaacutendolo

Respecto de las aplicaciones web multiplataforma los resultados de rendimiento

resaltaron positivamente en relacioacuten al resto tanto en Android como en iOS Asiacute el

enfoque de desarrollo multiplataforma web seriacutea una opcioacuten conveniente para alcanzar

un buen rendimiento en todos los dispositivos moacuteviles independientemente de su sistema

operativo Sin embargo esta eleccioacuten podriacutea verse afectada por las limitaciones de estas

aplicaciones para acceder en forma completa a las capacidades especiacuteficas del dispositivo

Respecto de los enfoques hiacutebrido e interpretado -analizados a traveacutes de las

tecnologiacuteas Coacuterdova Titanium y NativeScript- es importante destacar que si bien estos

enfoques trabajan de modo distinto entre siacute tienen algo en comuacuten la ejecucioacuten de coacutedigo

JavaScript En este sentido el motor de JavaScript -encargado de convertir el coacutedigo

JavaScript en coacutedigo optimizado para que luego lo interprete un WebView- cumple un

rol determinante Las pruebas de estos enfoques en Android -que utiliza el motor de

JavaScript V8- tuvieron un comportamiento similar al enfoque web y comportamiento

superior que el enfoque nativo y el enfoque de compilacioacuten cruzada Por el contrario en

los dispositivos moacuteviles con iOS -que utiliza el motor JavaScriptCore- los resultados de

estas pruebas fueron peores que en los enfoques nativos web y de compilacioacuten cruzada

En los dispositivos moacuteviles con iOS los casos de compilacioacuten cruzada -analizados

a traveacutes de las tecnologiacuteas Xamarin y Corona- obtuvieron mejores resultados que los

casos hiacutebridos e interpretados pero mostraron peor rendimiento que el enfoque nativo y

que el enfoque web En cambio en los dispositivos moacuteviles con Android los resultados

de las pruebas con las aplicaciones construidas mediante el enfoque de compilacioacuten

cruzada fueron los peores La necesidad de ejecucioacuten de coacutedigo Java a traveacutes del Android

Runtime entre otros factores justifican este resultado

Capiacutetulo 4 Experimentacioacuten

69

425 Conclusiones Se ha presentado un estudio comparativo sobre el tiempo de procesamiento de

aplicaciones de software para dispositivos moacuteviles generadas con distintos enfoques de

desarrollo

Los escenarios de prueba disentildeados incluyeron los dos sistemas operativos para

dispositivos moacuteviles con mayor presencia en el mercado Android e iOS ejecutaacutendose

cada uno de ellos sobre dos smartphones (considerados de gama media y gama alta al

momento en que este trabajo fue escrito) y una Tablet

Sobre estos seis dispositivos se realizoacute un estudio de rendimiento para las

aplicaciones construidas seguacuten los enfoques de desarrollo nativos y multiplataforma

mediante un conjunto de aplicaciones que fueron desarrolladas para tal fin

1 Aplicacioacuten nativa para Android 2 Aplicacioacuten nativa para iOS 3 Aplicacioacuten web (multiplataforma) 4 Aplicacioacuten Apache Cordova (multiplataforma hibrido) 5 Aplicacioacuten Appcelerator Titanium 6 (multiplataforma interpretado) 7 Aplicacioacuten NativeScript (multiplataforma interpretada) 8 Aplicacioacuten Xamarin (multiplataforma compilacioacuten cruzada) 9 Aplicacioacuten Corona (multiplataforma compilacioacuten cruzada)

En todos los dispositivos con sistema operativo Android el peor rendimiento fue

evidenciado por Corona seguido por el enfoque nativo y Xamarin Esta situacioacuten es

totalmente opuesta a los resultados obtenidos sobre el sistema operativo iOS en doacutende las

tecnologiacuteas de desarrollo mencionadas se mostraron siempre entre las cuatro mejores En

particular es destacable la supremaciacutea del enfoque nativo frente a todos los demaacutes para el

caso de los dispositivos con iOS

Respecto al mejor rendimiento en los dispositivos Android no es posible identificar

claramente cuaacutel es el enfoque maacutes conveniente Tanto las aplicaciones web como

Coacuterdova NativeScript y Titanium alcanzaron buenos resultados en relacioacuten al resto

Nuevamente esta situacioacuten se contrapone con los datos obtenidos sobre los dispositivos

iOS en los que Coacuterdova Titanium y NativeScript obtuvieron las peores mediciones entre

las tecnologiacuteas utilizadas No ocurrioacute lo mismo con las aplicaciones web en iOS que

tambieacuten produjeron buenos resultados en relacioacuten al resto

Capiacutetulo 4 Experimentacioacuten

70

En liacuteneas generales independientemente del sistema operativo las aplicaciones

web han mostrado un buen rendimiento si se consideran todos los casos analizados

Actualmente al desarrollar un sistema de software existe la posibilidad de generar

su versioacuten para dispositivos moacuteviles Esta tarea muchas veces no es simple y una de las

decisiones maacutes importantes a tomar es elegir el enfoque de desarrollo

A partir de este trabajo se dispone de un indicador de rendimiento que puede ser

uacutetil para el Ingeniero de Software que debe seleccionar un enfoque de desarrollo de

software para dispositivos moacuteviles

Por otra parte no se han encontrado trabajos de otros autores donde se haya

analizado el rendimiento en todos los enfoques de desarrollo de software para dispositivos

moacuteviles Este tema tal como se indicoacute en la introduccioacuten es importante para la

comunidad de Ingenieriacutea de Software y los trabajos analizados hasta el momento se han

concentrado solo en los enfoques nativos yo hiacutebridos

43 Anaacutelisis comparativo de enfoques de Desarrollo de Aplicaciones Moacuteviles

Como se estudioacute en las secciones anteriores existen diferentes enfoques de

desarrollo de aplicaciones moacuteviles

Una opcioacuten es desarrollar aplicaciones moacuteviles nativas las cuales hacen uso de

todas las capacidades del dispositivo moacutevil y permiten una alta experiencia de usuario

debido a que las interfaces de usuario se componen por componentes nativos resultando

semejantes al resto de las interfaces del sistema operativo No obstante el desarrollo no

puede ser reutilizado para dar soporte a otras familias de sistemas operativos implicando

mayores costos de desarrollo y mantenimiento

En contraposicioacuten al desarrollo nativo surgioacute el desarrollo multiplataforma dando

la posibilidad de desarrollar un uacutenico producto y ejecutarlo en diferentes plataformas En

este sentido se estudiaron diferentes enfoques desarrollo web moacutevil hiacutebrido

interpretado y generado por compilacioacuten cruzada Cada uno de estos enfoques cuenta con

ciertas caracteriacutesticas que naturalmente los hacen diferenciar con ventajas y

desventajas

Se identificaron diversos factores que pueden ser utilizados para analizar las

Capiacutetulo 4 Experimentacioacuten

71

aplicaciones que se generan mediante los enfoques de desarrollo nativo y

multiplataforma los cuales se detallan a continuacioacuten

Experiencia de usuario conjunto de factores y elementos que hacen referencia

al nivel de satisfaccioacuten total de los usuarios cuando utilizan un producto o sistema

El resultado es la generacioacuten de una percepcioacuten positiva o negativa de dicho

servicio producto o dispositivo

Plataformas alcanzadas se ha visto en capiacutetulos anteriores que existen distintas

familias de sistemas operativos Seguacuten el modo de desarrollo elegido se puede

desarrollar aplicaciones para una plataforma especiacutefica o por varias

Costo del desarrollo el desarrollo puede ser maacutes o menos costoso seguacuten si

requiere codificar las soluciones de forma especiacutefica para cada sistema operativo

o si es posible la reutilizacioacuten de coacutedigo

Costo del mantenimiento la correccioacuten de errores o agregados de nuevas

funcionalidades puede requerir codificar de forma especiacutefica para cada sistema

operativo Ademaacutes se debe tener en cuenta si deben convivir diferentes versiones

del mismo producto

Entorno de desarrollo integrado Software que asiste al programador en la

construccioacuten de aplicaciones

Interfaces de usuario factor que analiza los tipos de componentes utilizados para

construir las interfaces de usuario Como se mencionoacute al analizar los distintos

enfoques de desarrollo la eleccioacuten de la herramienta a utilizar incide en si las

interfaces estaraacuten compuestas mediante componentes nativos o componentes web

los cuales pueden ser decorados para simular componentes nativos

Acceso total al dispositivo posibilidad de acceder mediante las herramientas de

desarrollo a todas las capacidades del dispositivo como la caacutemara sensores entre

otros

Modo de instalacioacuten se refiere a si la aplicacioacuten puede ser instalada desde las

tiendas de aplicaciones o es accesible sin instalacioacuten desde un navegador de

Internet

Rendimiento factor que analiza la ejecucioacuten de tareas y los tiempos asociados

Capiacutetulo 4 Experimentacioacuten

72

en su resolucioacuten

Uso offline capacidad que tiene la aplicacioacuten de funcionar sin estar conectada a

internet

Distribucioacuten a traveacutes de las tiendas posibilidad de descargar la aplicacioacuten desde

las tiendas de aplicaciones

Categoriacuteas de aplicaciones a desarrollar tipo de aplicacioacuten que se desea

desarrollar

Porcentaje de coacutedigo a reutilizar Cantidad de liacuteneas de coacutedigo con respecto al

total que pueden ser reutilizadas para en la generacioacuten de aplicaciones

multiplataforma

Con el objetivo de estudiar coacutemo se comportan e inciden estos factores en los

distintos enfoques de desarrollo se realizoacute un estudio comparativo de los diferentes

criterios a tener en cuenta Dicho estudio se sintetiza en la Tabla 5

Capiacutetulo 4 Experimentacioacuten

73

Factor a analizar Desarrollo Nativo Desarrollo Web Desarrollo Hiacutebrido Desarrollo

Interpretado

Desarrollo Generado

por Compilacioacuten

Cruzada

Experiencia de Usuario

Alta Muy Baja Baja Alta Alta

Plataformas alcanzadas

Se desarrolla

exclusivamente

para una

plataforma destino

Cualquier

plataforma Se

necesita solo un

navegador y acceso a

internet

Es posible compilar

para Android iOS

Windows Phone

Es posible compilar

para Android iOS

Windows Phone

Es posible compilar

para Android iOS

Windows Phone

Costo del desarrollo

Muy Alto Muy Bajo Bajo Medio Medio a Alto

Costo del mantenimiento

Muy Alto Muy Bajo Medio Alto Alto a Muy Alto

Entorno de desarrollo integrado

IDE uacutenico por SO Muacuteltiples opciones Plugins para IDE

geneacutericos

Algunos frameworks

disponen de IDE

especiacutefico

IDE uacutenico por

framework

Interfaces de usuario

Nativas Web Web Nativas Nativas

Acceso total al dispositivo

Si No Si Si Si

Modo de instalacioacuten

Descargar desde la Sin instalaciones Descargar desde la Descargar desde la Descargar desde la

Capiacutetulo 4 Experimentacioacuten

74

Factor a analizar Desarrollo Nativo Desarrollo Web Desarrollo Hiacutebrido Desarrollo

Interpretado

Desarrollo Generado

por Compilacioacuten

Cruzada

tienda de

aplicaciones e

instalar

tienda de aplicaciones

e instalar

tienda de aplicaciones e

instalar

tienda de aplicaciones e

instalar

Rendimiento Muy Alto Muy Bajo Bajo a Medio Alto Medio a Alto

Uso offline Si No Si Si Si

Distribucioacuten a traveacutes de las tiendas

Si No Si Si Si

Categoriacutea de aplicaciones a desarrollar

Aplicaciones que

demandan muchos

recursos o que

requiere una alta

experiencia de

usuario

Sitios web existentes Sitios web

encapsulados como

aplicacioacuten para ser

distribuidas a traveacutes

de tiendas

Aplicaciones simples a

complejas

Aplicaciones simples a

complejas

Porcentaje de Coacutedigo a reutilizar

0 100 Cerca del 100 Cerca del 90 Entre el 60 y 85

Tabla 5 Anaacutelisis comparativo de enfoques de desarrollo de aplicaciones moacuteviles

Capiacutetulo 5 Conclusiones

75

Capiacutetulo 5 Conclusiones

Inicialmente los dispositivos moacuteviles fueron pensados y disentildeados con un propoacutesito

particular A traveacutes de los antildeos el crecimiento tecnoloacutegico ha permitido incorporar

funcionalidades adicionales lo que ha posibilitado expandir el marco de uso

Actualmente el poder de coacutemputo subyacente en una gran variedad de dispositivos

moacuteviles ha generado nuevas posibilidades lo que constituye un reto para los ingenieros

de software

Asimismo y tal como se mencionoacute en capiacutetulos anteriores existen diversos

sistemas operativos para dispositivos moacuteviles siendo los maacutes populares Android iOS y

Windows Phone Debido a que el eacutexito de un producto de software estaacute vinculado en

gran parte a su uso masivo surge la necesidad de desarrollar aplicaciones moacuteviles

teniendo en cuenta cada una de estas plataformas

El desarrollo de software para dispositivos moacuteviles tiene caracteriacutesticas propias que

difieren del desarrollo tradicional Esta actividad reciente impensada deacutecadas atraacutes

marca un antes y un despueacutes en la evolucioacuten de la Ingenieriacutea de Software Es de esperar

que dicha evolucioacuten continuacutee y por consiguiente que los enfoques de desarrollo para

dispositivos moacuteviles cambien o sean reemplazados por otros Es claro que por el

momento existen cinco posibilidades de desarrollo de una misma aplicacioacuten moacutevil

Aplicaciones nativas

Aplicaciones web

Aplicaciones hiacutebridas

Aplicaciones interpretadas

Aplicaciones generadas por compilacioacuten cruzada

Para un completo anaacutelisis de cada enfoque de desarrollo es que se disentildearon una

serie de casos de estudio El primero de ellos consistioacute en desarrollar una aplicacioacuten moacutevil

para cada enfoque de desarrollo presentado Teniendo este primer objetivo definido se

decidioacute extender el entorno virtual de ensentildeanza y aprendizaje WebUNLP a traveacutes de

una aplicacioacuten moacutevil enfocada en la cartelera de novedades de los cursos La aplicacioacuten

Capiacutetulo 5 Conclusiones

76

moacutevil debiacutea permitir el ingreso de alumnos y docentes con las mismas credenciales que

las utilizadas en la versioacuten web y debiacutea mostrar informacioacuten sincronizada con la web

sobre las novedades publicadas en las carteleras de los cursos Asimismo cuando los

docentes publiquen novedades aquellos alumnos pertenecientes al curso deben recibir

una notificacioacuten en su dispositivo moacutevil

Luego de desarrollar las aplicaciones moacuteviles para cada enfoque de desarrollo se

pueden elaborar algunas conclusiones

Se destaca la simpleza a la hora de generar la versioacuten web moacutevil pero se observan

limitaciones al no poder acceder a todas las capacidades de hardware del dispositivo

El desarrollo de las aplicaciones nativas resultoacute oacuteptimo si se lo compara con los

requerimientos oportunamente planteados con la desventaja de que las aplicaciones no

son portables implicando desarrollos especiacuteficos para cada plataforma que se desee

cubrir Por otro lado el desarrollo de las aplicaciones hibridas ndashutilizando PhoneGap y

Sencha- lograron conjugar la simpleza del desarrollo web con el uso de todas las

capacidades del dispositivo posicionaacutendolo como una eleccioacuten realmente interesante De

igual manera la aplicacioacuten interpretada desarrollada mediante Titanium logroacute resolver

todos los requerimientos previamente planteados se destaca que el desarrollo fue

relativamente simple y es posible reutilizar todo el coacutedigo entre plataformas El hecho de

obtener interfaces totalmente nativas la posiciona como la alternativa ideal Por uacuteltimo

las aplicaciones generadas con el enfoque de compilacioacuten cruzada (Delphi y Xamarin)

lograron cumplir los requerimientos planteados la obtencioacuten de interfaces totalmente

nativas es algo a destacar pero conlleva un alto costo ya que se debe disentildear las interfaces

para cada plataforma de manera independiente

El segundo experimento del presente trabajo consistioacute en analizar el rendimiento

de las aplicaciones generadas mediante cada enfoque de desarrollo En total se

desarrollaron mediante distintas tecnologiacuteas nueve aplicaciones Las pruebas se

realizaron en los dos sistemas operativos de mayor relevancia Android e iOS a traveacutes de

seis dispositivos (cuatro smartphones y dos tablets)

En todos los dispositivos con sistema operativo Android el peor rendimiento se

encontroacute en la aplicacioacuten generada por Corona seguido por el enfoque nativo y Xamarin

En cambio estas tecnologiacuteas se mostraron siempre entre las cuatro mejores sobre el

sistema operativo iOS

Capiacutetulo 5 Conclusiones

77

Respecto al mejor rendimiento en los dispositivos Android no es posible identificar

claramente cuaacutel es el enfoque maacutes conveniente Tanto las aplicaciones web como

Coacuterdova NativeScript y Titanium obtuvieron buenos resultados de rendimiento en

relacioacuten al resto Nuevamente esta situacioacuten se contrapone con los datos obtenidos sobre

los dispositivos iOS en los que Coacuterdova Titanium y NativeScript obtuvieron las peores

mediciones entre las tecnologiacuteas utilizadas No ocurrioacute lo mismo con las aplicaciones web

en iOS que tambieacuten produjeron buenos resultados en relacioacuten al resto

En liacuteneas generales independientemente del sistema operativo las aplicaciones

web han mostrado un buen rendimiento si se consideran todos los casos analizados

Por uacuteltimo se elaboroacute un anaacutelisis comparativo de las caracteriacutesticas inherentes a

cada enfoque de desarrollo Se identificaron ciertos factores de intereacutes que la comunidad

de ingenieriacutea de software considera al elegir queacute tecnologiacutea utilizar y se analizoacute su

impacto en cada enfoque de desarrollo

Capiacutetulo 6 Trabajo Futuro

78

Capiacutetulo 6 Trabajo Futuro

Si bien se estudiaron en el presente trabajo diversas tecnologiacuteas para el desarrollo

de aplicaciones moacuteviles se planea profundizar el estudio analizando otras herramientas

multiplataforma disponibles en el mercado como Ionic [32] NativeScript [38] Applause

[40] React Native [67] entre otras

Ademaacutes se plantea como liacutenea de trabajo futuro ampliar el anaacutelisis comparativo de

rendimiento incluyendo otros aspectos del desarrollo para dispositivos moacuteviles como

por ejemplo el acceso a disco el consumo de bateriacutea y el tiempo de renderizacioacuten de

imaacutegenes

Por uacuteltimo es deseable estudiar la experiencia de usuario en las aplicaciones

generadas por cada enfoque de desarrollo de aplicaciones para dispositivos moacuteviles

Capiacutetulo 6 Trabajo Futuro

79

Bibliografiacutea

80

Bibliografiacutea

[1] A Talukder H Ahmed and R Yavagal Mobile Computing Technology Applications and Service Creation Tata McGraw-Hill Ed 2010

[2] Abrahamsson P et al Mobile-D An Agile Approach for Mobile Application Development in In Companion To the 19th Annual ACM SIGPLAN Conference on Object-Oriented Programming Systems Languages and Applications (OOPSLA 04 ) Vancouver Canada 2004 pp 174-175

[3] P Abrahamsson Mobile software development - the business opportunity of today in Proceedings of the International Conference on Software Development Reykjavik 2005

[4] I S Hayes Just Enough Wireless Computing Prentice Hall Professional Technical 2002

[5] Stelios Xinogalos Spyros Xanthopoulos A Comparative Analysis of Cross-platform Development Approaches for Mobile Applications in Proceedings of the 6th Balkan Conference in Informatics Thessaloniki Greece 2013 pp 213-220

[6] Tolety SB Raj R A study on approaches to build cross-platform mobile applications and criteria to select appropriate approach in India Conference (INDICON) 2012 Annual IEEE India 2012

[7] Yonathan Aklilu Redda Cross platform Mobile Applications Development in Master in Information Systems Norwegian University of Science and Technology Norway 2012

[8] Datta SK Bonnet C Nikaein N Dalmasso I Survey comparison and evaluation of cross platform mobile application development tools in Wireless Communications and Mobile Computing Conference (IWCMC) Cagliari Sardinia Italia 2013

[9] Lisandro Deliacutea Nicolaacutes Galdaacutemez Pablo Thomas and Patricia Pesado An Experimental Analysis of Application Types for Mobile Devices in Computer Science amp Technology Series - XIX Argentine Congress of Computer Science - Selected Papers Editorial de la Universidad de La Plata 2014 pp 173 -183

[10] Lisandro Deliacutea Nicolaacutes Galdamez Pablo Thomas Leonardo Corbalaacuten and Patricia Pesado Multi-Platform Mobile Application Development Analysis in IEEE Ninth International Conference on Research Challenges in Information Science - IEEE RCIS Atenas Grecia May 2015

[11] Telam [Online] httpwwwtelamcomarnotas201504102073-telefonia-movil-lineas-activashtml

Bibliografiacutea

81

[12] RTVE [Online] httpwwwrtveesnoticias20110212evolucion-del-telefono-movil-del-zapatofono-smartphones404523shtml

[13] Vodafone [Online] httpblogvodafonecouk20130829vodafone-uks-ceo-guy-laurence-4g-finally-has-a-purpose

[14] Muy Canal [Online] httpwwwmuycanalcom20140131futuro-del-telefono-movil

[15] Statcounter [Online] httpgsstatcountercom

[16] Anthony I Wasserman Software Engineering Issues for Mobile Application Development 2010

[17] Statista [Online] httpwwwstatistacom

[18] Lisandro Deliacutea Nicolaacutes Galdamez Pablo Thomas Leonardo Corbalaacuten and Patricia Pesado Anaacutelisis Experimental de desarrollo de Aplicaciones Moacuteviles Multiplataforma in XX Congreso Argentino de Ciencias de la Computacioacuten CACIC 2014 San Justo Argentina octubre 2014

[19] Lisandro Deliacutea Nicolaacutes Galdamez Pablo Thomas and Patricia Pesado Un Anaacutelisis Experimental de Tipo de Aplicaciones para Dispositivos Moacuteviles in XIX Congreso Argentino de Ciencias de la Computacioacuten CACIC 2013 Mar del Plata Argentina 2013

[20] Abhinay Puvvala Amitava Dutta Rahul Roy and Priya Seetharaman Mobile Application Developersrsquo Platform Choice Model in 2016 49th Hawaii International Conference on System Sciences (HICSS) Koloa Hawaii 2016

[21] Android Dashboard [Online] httpsdeveloperandroidcomaboutdashboardsindexhtml

[22] Xcode [Online] httpsdeveloperapplecomxcode

[23] KW Tracy Mobile Application Development Experiences on Applersquos iOS and

Android OS Potentials IEEE vol 31 no 4 July-Aug 2012

[24] Google Recommendations for building smartphone-optimized websites [Online] httpgooglewebmastercentralblogspotcomar

[25] Bootstrap [Online] httpgetbootstrapcom

[26] Foundation [Online] httpfoundationzurbcom

[27] PhoneGap [Online] httpphonegapcom

[28] Apache Cordova [Online] httpscordovaapacheorg

Bibliografiacutea

82

[29] Adobe PhoneGap Build [Online] httpsbuildphonegapcom

[30] CocoonJS [Online] httpscocoonio

[31] Ludei [Online] httpswwwludeicom

[32] Ionic [Online] httpionicframeworkcom

[33] Sencha [Online] httpswwwsenchacomproductstouchoverview

[34] A Kosmaczewski Sencha Touch 2 Up and Running OrsquoReilly 2013

[35] Appcelerator Titanium [Online] httpwwwappceleratorcomproduct

[36] Backbone [Online] httpbackbonejsorg

[37] Underscorejs [Online] httpunderscorejsorg

[38] NativeScript [Online] httpswwwnativescriptorg

[39] TypeScript [Online] httpswwwtypescriptlangorg

[40] applause [Online] httpwwwapplausecom

[41] Xamarin [Online] wwwxamarincom

[42] Delphi [Online] httpswwwembarcaderocomproductsdelphi

[43] RubyMotion [Online] httpwwwrubymotioncom

[44] Xtext [Online] httpwwweclipseorgXtext

[45] Mono [Online] httpwwwmono-projectcom

[46] [Online] httpswebunlpeadunlpeduar

[47] I Salmre Writing Mobile Code Essential Software Engineering for Building Mobile Applications Addison Wesley Professional 2005

[48] Mapbox [Online] httpswwwmapboxcomlabstwitter-gnipbrands

[49] Ruby S Richardson L RESTful Web Services OrsquoReilly Media 2007

[50] Matthew J Hamm Wireframing Essentials Packt Publishing 2014

[51] GCM [Online] httpsdevelopersgooglecomcloud-messaging

[52] iOS Human Interface Guidelines [Online] httpsdeveloperapplecomioshuman-interface-guidelinesoverviewdesign-principles

[53] APN [Online] httpdeveloperapplecomlibrarymacdocumentationNetworkingInternetConceptual

Bibliografiacutea

83

RemoteNotificationsPGChaptersApplePushServicehtmlapple_refdocuidTP40008194-CH100-SW9

[54] Mark Norm Norman Francis Christian Heilmann Web Development Solutions Ajax APIs Libraries and Hosted Services Made Easy Apress 2007

[55] JqueryMobile [Online] httpsjquerymobilecom

[56] Pushwoosh [Online] httpsgithubcomPushwooshpushwoosh-phonegap-plugin

[57] J Clark Creating Mobile Apps with Sencha Touch 2 Packt Publishing 2013

[58] Kinvey [Online] httpwwwkinveycom

[59] Ali Mesbah Philippe Kruchten Mona Erfani Joorabchi Real Challenges in Mobile App Development in ACM IEEE International Symposium on Empirical Software Engineering and Measurement Baltimore Maryland US 2013

[60] Andreacute Nitze Andreas Schmietendorf Florian Roumlsler Towards a Mobile Application Performance Benchmark in ICIW 2014 The Ninth International Conference on Internet and Web Applications and Services Paris France 2014

[61] Sebastian Hanschke and Tim A Majchrzak Henning Heitkoumltter Comparing Cross Platform Development approaches For Mobile Applications in 8th International Conference on Web Information Systems and Technologies (WEBIST) Porto Portugal 2012

[62] HW Kim SG Chung CS Jung Measuring Software Quality A Survey of ISOIEC 9126 IEEE Software vol 21 no 5 pp 88 ndash 92 SeptemberOctober 2004

[63] Luis Corral Anton B Georgiev Alberto Sillitti and Giancarlo Succi Can execution time describe accurately the energy consumption of mobile apps An experiment in Android GREENS 2014 Proceedings of the 3rd International Workshop on Green and Sustainable Software pp 31-37 June 2014

[64] Brian Leroux Andre Charland Mobile application development web vs native Magazine Communications of the ACM vol 54 no 5 pp 49-53 May 2011

[65] Luis Corral Alberto Sillitti and Giancarlo Succi Mobile multiplatform development An experiment for performance analysis in The 9th International Conference on Mobile Web Information Systems (MobiWIS) Ontario Canada 2012

[66] Repositorio Git III-LIDI [Online] httpsgitlabcomiii-lidiperformance-assessment-multiplatform-mobile-applicationstreemaster

[67] React Native [Online] httpsfacebookgithubioreact-native

[68] Lisandro Galdaacutemez Nicolaacutes Corbalaacuten Leonardo Thomas Pablo Pesado Patricia Deliacutea Un anaacutelisis comparativo de rendimiento en aplicaciones moacuteviles

Bibliografiacutea

84

multiplataforma in XXI Congreso Argentino de Ciencias de la Computacioacuten Juniacuten 2015

Page 12: Desarrollo de Aplicaciones Móviles Multiplataforma

Capiacutetulo 1 Tecnologiacutea Moacutevil

12

Figura 2 Martin Cooper el autor de la primer llamada moacutevil

El verdadero conocimiento popular del teleacutefono moacutevil no llegoacute hasta la deacutecada de

los 90 con la segunda generacioacuten de estos dispositivos

La comunicacioacuten digital permitioacute mejorar la calidad de la escucha de voz la

reduccioacuten del tamantildeo y peso de los dispositivos utilizados y sobre todo el incremento de

compantildeiacuteas operadoras que dieron paso a un mercado maacutes competitivo y accesible

Los usuarios fueron testigos de avances sorprendentes como la identificacioacuten de

llamada o los mensajes de texto que constituyeron a una nueva forma de comunicacioacuten

Vertiginosamente el celular pasoacute de ser considerado una herramienta de trabajo a

generalizarse en todos los estratos de la sociedad

Seguacuten avanzaba la deacutecada del 90 los teleacutefonos moacuteviles iban adaptaacutendose a esas

novedades incorporando pantallas cada vez de mayor tamantildeo y en los maacutes avanzados

haciendo desaparecer la antena que era necesario desplegar para poder realizar una

comunicacioacuten en condiciones adecuadas

Poco a poco los dispositivos empezaron a integrar cada vez maacutes funciones aviso

por vibracioacuten juegos bluetooth infrarrojos politonos y ya con el cambio de siglo

pantallas a color y caacutemaras fotograacuteficas Maacutes adelante llegariacutea la grabacioacuten de viacutedeo el

acceso a Internet las pantallas taacutectiles entre otras [12]

Capiacutetulo 1 Tecnologiacutea Moacutevil

13

12 Evolucioacuten de los protocolos para redes de comunicaciones

Hubiera sido imposible el auge de los teleacutefonos moacuteviles sin la estandarizacioacuten

mejora y evolucioacuten de los protocolos para redes de comunicaciones y su soporte por las

operadoras Asiacute tras las primeras comunicaciones viacutea ondas de radio con banda de

frecuencias por debajo de los 600 kHz las posteriores en AM y FM los servicios de Bell

y Ericsson en los antildeos 50 y 60 llegoacute esa primera llamada de 1973 que popularizoacute todo el

sector

La primera generacioacuten 1G fue responsabilidad de Ericsson con el sistema Telefoniacutea

Moacutevil Noacuterdica (NMT) y seguiacutea utilizando canales analoacutegicos En 1986 la compantildeiacutea

modernizoacute el sistema funcionando a frecuencias superiores de 900 MHz posibilitando

servicio para un mayor nuacutemero de usuarios Ademaacutes del NMT en los 80 se desarrollaron

otros sistemas de telefoniacutea moacutevil como el Sistema Telefoacutenico Moacutevil Avanzado (AMP)

desarrollado por los laboratorios Bell

La segunda generacioacuten 2G llegoacute en la deacutecada de los 90 con sistemas como Global

System for Mobile Communications (GSM) Estaacutendar Interno 136 (IS-136) Red

Mejorada Digital Integrada (iDEN) y el Estaacutendar Interno 95 (IS-95) GSM fue el

desarrollo maacutes relevante ya que fue el estaacutendar europeo de telefoniacutea moacutevil digital En el

proyecto participaron 26 compantildeiacuteas europeas de telecomunicaciones y en 1992 se

pusieron en marcha las primeras redes europeas de GSM-900 y los primeros teleacutefonos

moacuteviles GSM Ademaacutes de Europa GSM ha terminado imponieacutendose tambieacuten en Asia

Ameacuterica Latina Oceaniacutea y una parte de Ameacuterica del Norte

La necesidad de mayores velocidades de transmisioacuten de datos y mayores

capacidades que permitieran nuevos servicios dieron paso a la Tercera Generacioacuten (3G)

no sin antes pasar por el 25G que proporcionoacute el General Packet Radio Service (GPRS)

El estaacutendar europeo es el Universal Mobile Telecommunications System (UMTS) basado

en la tecnologiacutea W-CDMA y estaacute gestionado por la organizacioacuten 3GPP tambieacuten

responsable de GSM GPRS y Enhanced Data Rates for GSM Evolution (EDGE)

La Cuarta Generacioacuten (4G) sucede a las tecnologiacuteas 2G y 3G y ofrece entre otras

mejoras mayor seguridad y Calidad de Servicio (QoS) junto a velocidades de acceso

muy superiores a las anteriores (mayores a 100 Mbits en movimiento y a 1 Gbits en

Capiacutetulo 1 Tecnologiacutea Moacutevil

14

reposo) Estaacute basada completamente en el protocolo IP siendo un sistema de sistemas y

una red de redes que se alcanza gracias a la convergencia entre las redes de cables e

inalaacutembricas Seguacuten Vodafone ldquoel 4G tiene finalmente una razoacuten y es el entretenimientordquo

[13] La norma Long Term Evolution (LTE) es la maacutes extendida aunque no la uacutenica

existente

5G seraacute la nueva revisioacuten del sistema de conexioacuten de red sin cables y se espera que

esteacute disponible en el antildeo 2020 (Figura 3) en paiacuteses como Corea del Sur como asiacute tambieacuten

en Europa Como 4G la mayor velocidad de transferencia seraacute su mayor avance con

velocidades de descarga de hasta 10 Gbps (125 GBs) [14]

Figura 3 Evolucioacuten de los protocolos para redes de comunicacioacuten moacuteviles

13 La actualidad

Muchas de las actividades que un tiempo atraacutes soliacutean hacerse desde una

computadora tales como revisar el correo electroacutenico escuchar muacutesica agendar una

nueva cita en el calendario compartir fotos en alguna red social entre muchiacutesimas otras

en nuestros diacuteas se llevan a cabo de forma natural desde los dispositivos moacuteviles La

Figura 4 muestra coacutemo los dispositivos moacuteviles les han ganado terreno a los equipos

Capiacutetulo 1 Tecnologiacutea Moacutevil

15

tradicionales denominados lsquode escritoriorsquo

Figura 4 Comparacioacuten entre plataformas [15]

En la actualidad existen cientos de modelos diferentes de dispositivos moacuteviles y

los fabricantes siguen innovando intentando destacarse sobre la competencia Hoy en diacutea

no nos sorprende encontrar dispositivos moacuteviles con procesadores quad-core de 22 Ghz

Incluso ya se comienzan a conocer prototipos de dispositivos con ocho o diez nuacutecleos

De la mano de los procesadores la memoria RAM de los dispositivos moacuteviles

tambieacuten ha crecido considerablemente llegando a comercializarse dispositivos con 3 GB

de memoria

La caacutemara de los dispositivos es otra de las capacidades que maacutes ha progresado

llegando a encontrarse sensores de 20 MP y la posibilidad de grabar videos en formato

UHD 4K (3840 x 2160)

El tamantildeo de las pantallas y sus resoluciones fueron otra de las caracteriacutesticas que

maacutes han evolucionado Es posible encontrar dispositivos con pantallas de 5 pulgadas con

posibilidad de visualizar 16 millones de colores y con resoluciones Quad HD (2560 x

1440)

La tecnologiacutea de las bateriacuteas es un aspecto en que no se ha logrado grandes avances

en el sector ni se pronostican grandes progresos a corto plazo Incluso la llegada de chips

Capiacutetulo 1 Tecnologiacutea Moacutevil

16

maacutes potentes mayores pantallas o el 4G disminuiraacuten auacuten maacutes la autonomiacutea de las bateriacuteas

El uacuteltimo aspecto a mencionar es el de las capacidades del dispositivo Ademaacutes de

los ya claacutesicos sensores Global Positioning System (GPS) la capacidad de conectividad

viacutea bluetooth infrarrojo y WIFI hoy surge una diversidad de opciones que pueden

disponer los teleacutefonos inteligentes

Por el lado de la conectividad cada vez es maacutes comuacuten encontrar terminales con

mecanismos de comunicacioacuten Near Field Communication (NFC) o WIFI Direct

Con respecto a los sensores actualmente existen dispositivos que cuentan con

aceleroacutemetros giroscopios y magnetoacutemetros los cuales brindan a los desarrolladores de

aplicaciones la posibilidad de controlar la posicioacuten del aparato la aceleracioacuten que sufre

el dispositivo con respecto a la fuerza de la gravedad etc Tambieacuten es comuacuten el uso de

sensores de proximidad por ejemplo para apagar la pantalla mientras se atiende una

llamada El sensor de luminosidad permite medir el brillo de la luz ambiental Asiacute el

software del teleacutefono utiliza estos datos para ajustar el brillo de la pantalla

automaacuteticamente hacieacutendola maacutes clara o maacutes oscura

Los uacuteltimos smartphones de gama alta tambieacuten son capaces de medir la presioacuten

atmosfeacuterica a traveacutes de un baroacutemetro Los datos que mide el dispositivo sirven para

determinar en queacute nivel por encima del mar se encuentra el teleacutefono lo que se traduce en

la mejora de la precisioacuten del GPS

Incluso ya existen dispositivos que cuentan con un sensor de humedad del aire el

cual permite controlar los niveles de humedad para por ejemplo ayudar a las personas

con problemas respiratorios

Como si todo esto fuese poco existen modelos con podoacutemetro -para medir con

precisioacuten los pasos que da el usuario- pulsoacutemetro -para medir las pulsaciones a traveacutes de

los vasos sanguiacuteneos de los dedos- y hasta sensor de huellas digitales para cuestiones

relativas a la seguridad

Por lo anteriormente dicho los desarrolladores de aplicaciones para dispositivos

moacuteviles de la actualidad tienen el desafiacuteo de poder manipular desde sus aplicaciones

todas las posibilidades descriptas

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

17

Capiacutetulo 2 Desarrollo de

Aplicaciones Moacuteviles Nativas

Si bien el desarrollo de aplicaciones para dispositivos moacuteviles se remonta por lo

menos a 10 antildeos atraacutes ha habido un crecimiento exponencial desde que se abrioacute la tienda

de aplicaciones de iPhone en julio de 2008 Desde entonces los fabricantes de

dispositivos han creado tiendas de aplicaciones para otros dispositivos moacuteviles

incluyendo Android BlackBerry Nokia Ovi Windows Phone entre otros [16]

Actualmente el desarrollo de aplicaciones para dispositivos moacuteviles es un campo

en evolucioacuten con gran intereacutes econoacutemico y cientiacutefico Una prueba de esto es que para

Julio del 2014 se disponiacutean de maacutes de 3 millones de aplicaciones entre las principales

tiendas virtuales de aplicaciones Y solamente en el antildeo 2013 se contabilizaron 101

billones de descargas de aplicaciones moacuteviles en todo el mundo de las cuales 9 billones

fueron descargas pagas y 92 billones descargas gratuitas [17]

Con el actual creciente nuacutemero de plataformas moacuteviles desarrollar aplicaciones

moacuteviles se hizo muy difiacutecil para las empresas ya que necesitan desarrollar las mismas

aplicaciones para cada plataforma de destino

El desarrollo de aplicaciones nativas es la forma natural de implementar

aplicaciones moacuteviles Las aplicaciones nativas son concebidas para ejecutarse en una

plataforma especiacutefica es decir se debe considerar el tipo de dispositivo el sistema

operativo a utilizar y su versioacuten

Las aplicaciones nativas se desarrollan utilizando un entorno de desarrollo

integrado (IDE) que proporciona las herramientas de desarrollo necesarias para la

construccioacuten y depuracioacuten de aplicaciones El coacutedigo fuente se compila para obtener

coacutedigo ejecutable proceso similar que el utilizado para las tradicionales aplicaciones de

escritorio

Cuando la aplicacioacuten estaacute lista para ser distribuida debe ser transferida a las App

stores (tiendas de aplicaciones) especiacuteficas de cada sistema operativo Estas tiendas tienen

un proceso de auditoriacutea para evaluar si la aplicacioacuten se adecuacutea a los requerimientos de la

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

18

plataforma a operar Cumplido este paso la aplicacioacuten se pone a disposicioacuten de los

usuarios

La principal ventaja de este tipo de aplicaciones es la posibilidad de interactuar con

todas las capacidades del dispositivo (caacutemara GPS aceleroacutemetro agenda entre otras)

Ademaacutes no es estrictamente necesario poseer acceso a internet Su ejecucioacuten es raacutepida

puede ejecutarse en modo background y notificar al usuario cuando ocurra un evento que

necesite su atencioacuten

Claramente estas ventajas tienen como contrapartida un mayor costo de desarrollo

pues se debe utilizar un lenguaje de programacioacuten diferente seguacuten la plataforma Por ende

si se desea cubrir varias plataformas se deberaacute generar una aplicacioacuten para cada una de

ellas Esto conlleva a mayores costos de desarrollo actualizacioacuten y distribucioacuten de nuevas

versiones [9] [18] [19]

En la actualidad hay una gran cantidad de sistemas operativos para dispositivos

moacuteviles La Figura 5 muestra la utilizacioacuten de los sistemas operativos en los uacuteltimos antildeos

en todo el mundo mientras que la Figura 6 muestra la misma comparativa en Argentina

En ambos casos el ranking es liderado por Android seguido por iOS y en tercer lugar

Windows Phone [20]

Figura 5- Utilizacioacuten de Sistemas Operativos Moacuteviles en el mundo

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

19

Figura 6- Utilizacioacuten de Sistemas Operativos Moacuteviles en Argentina

A continuacioacuten se analizaraacute coacutemo es el proceso de desarrollo de aplicaciones

moacuteviles nativas en los sistemas operativos maacutes relevantes de la actualidad y luego en la

Tabla 1 se compararaacuten aspectos teacutecnicos de estas plataformas

21 Desarrollo de Aplicaciones Nativas en Android

Android es el sistema operativo maacutes utilizado en la actualidad Puede ser utilizado

en teleacutefonos inteligentes tablets relojes inteligentes televisores y automoacuteviles

Estaacute basado en Linux y es respaldado por Google

211 Evolucioacuten Inicialmente el desarrollo de Android era llevado a cabo por la empresa Android

Inc la cual fue fundada en el antildeo 2003 y recibiacutea respaldo econoacutemico por parte de Google

Antildeos maacutes tarde maacutes precisamente en Julio del 2005 Google adquiere Android y da lugar

a la primer versioacuten del sistema operativo en el antildeo 2007 Android 10 Apple Pie1

desarrollado sobre el kernel de Linux 26 En su presentacioacuten se hizo hincapieacute en que era

un sistema operativo para dispositivos moacuteviles totalmente gratuito y open source a

1 Desde la salida de la primera versioacuten del sistema operativo hasta el presente Google ha seguido la tradicioacuten de ponerle un nombre de postre a cada una de sus versiones siguiendo un orden alfabeacutetico

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

20

diferencia de iOS

La primera versioacuten comercial teniacutea mucho margen de mejora y apenas inquietoacute a la

competencia pero ya introduciacutea algunos conceptos que antildeos despueacutes son un estaacutendar de

los sistemas operativos moacuteviles

Menuacute desplegable de notificaciones

Widgets de escritorio

Android Market la tienda de apps (no contaba con ninguacuten sistema de pago para

usuarios Todo el cataacutelogo era gratuito)

Integracioacuten con Google Mail Contacts y Calendar

Navegador Maps Google Talk reproductor de YouTube y soporte para caacutemaras

En febrero del 2009 apenas 3 meses despueacutes del lanzamiento de Android 10 Apple

Pie llega la primera actualizacioacuten Android 11 Banana Bread No antildeadiacutea grandes

novedades pero siacute corregiacutea numerosos fallos detectados en la primera versioacuten e introduciacutea

un concepto por entonces poco usado por los rivales que buscaba facilitar la vida al

usuario las actualizaciones automaacuteticas con las que resultaba muy simple mantener todo

el software al diacutea

El 30 de abril del 2009 lanzan una nueva actualizacioacuten de gran importancia con

muchas novedades en cuanto a usabilidad Android 15 Cupcake Esta nueva versioacuten

introdujo las siguientes caracteriacutesticas

Teclado taacutectil QWERTY en pantalla con prediccioacuten de texto y diccionario de

usuarios para palabras personalizadas

Grabacioacuten y reproduccioacuten en formatos MPEG-4 y 3GP

Widget de escritorio de Google para realizar buacutesquedas directamente

SDK para el desarrollo de widgets de escritorio por parte de terceros

Funciones del portapapeles ampliadas

Interfaz para grabar y reproducir viacutedeos mejorada

Posibilidad de auto-rotacioacuten

Android 16 Donut apareciacutea en septiembre del 2009 con algunas novedades

adicionales

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

21

Soporte para CDMAEVDO 8021x VPN que ampliaba los mercados al alcance

de Android

Compatibilidad con distintas resoluciones de pantalla Soporte WVGA

Actualizacioacuten y nuevo disentildeo del Android Market

Utilidad de buacutesqueda universal en Internet y en el mismo dispositivo

Galeriacutea caacutemara y videocaacutemara con mejor integracioacuten con raacutepido acceso a la

caacutemara

Motor multi-lenguaje de Siacutentesis de habla para permitir a cualquier aplicacioacuten de

Android hablar una cadena de texto

Mejoras en las buacutesquedas por texto y voz

Apenas dos meses despueacutes en noviembre del 2009 lanzan Android 20 Eclair

uno de los cambios maacutes sustanciales sufridos por Android tanto a nivel de disentildeo como

de arquitectura interna Era una versioacuten dirigida a dispositivos de mayor tamantildeo en un

tiempo en el que los fabricantes empezaban a diversificar su oferta La versioacuten 21

mantuvo la misma nomenclatura y soacutelo corrigioacute algunos fallos pero su uso fue mayor

entre los fabricantes que la versioacuten anterior A continuacioacuten se mencionan algunas de las

nuevas caracteriacutesticas

Sincronizacioacuten de cuenta expandida permitiendo a los usuarios agregar muacuteltiples

cuentas al dispositivo para sincronizacioacuten de correo y contactos

Google Maps Navigation sistema de navegacioacuten GPS gratuito

Compatibilidad con Microsoft Exchange

Optimizacioacuten en velocidad de hardware y GUI renovada

Soporte para maacutes tamantildeos de pantalla y resoluciones con una mejor tasa de

contraste

Navegador actualizado soporte para HTML5 y barra de direccioacuten y buacutesqueda

unificada

Funcioacuten Speech to Text para escribir textos mediante el uso de la voz

Nueva pantalla de desbloqueo

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

22

Nuevas caracteriacutesticas para la caacutemara incluyendo soporte de flash zoom digital

modo escena balance de blancos efecto de colores y enfoque macro

Adicioacuten de fondos de pantalla animados permitiendo la animacioacuten de imaacutegenes

de fondo de la pantalla inicio para mostrar movimiento

El 20 de mayo del 2010 apareciacutea una nueva actualizacioacuten del sistema operativo

Android 22 Froyo Traiacutea numerosos cambios algunos copiados de otras ROMs y otros

con el uso empresarial en mente

Pantalla Home totalmente redisentildeada con 5 paneles en lugar de 3

Nueva galeriacutea de imaacutegenes

Soporte para actuar como hotspot2 para otros dispositivos tethering3 de datos

Soporte para Flash 101

Funcioacuten copiar y pegar mejorada en Google Mail

Nueva pantalla alternativa de desbloqueo mediante coacutedigo PIN

Grabacioacuten de viacutedeo en 720p

Optimizaciones en velocidad memoria y rendimiento Compilador JIT

Integracioacuten del motor de JavaScript V8 de Chrome en el navegador

Soporte para el servicio Android Cloud to Device Messaging (C2DM)

habilitando notificaciones push

El antildeo 2010 iba a concluir con el lanzamiento de una versioacuten sumamente popular

que prevalecioacute gran tiempo Android 23 Gingerbread Esta versioacuten contoacute con las

siguientes caracteriacutesticas

Disentildeo de la interfaz de usuario actualizado con incremento en velocidad y

simpleza

Nuevo disentildeo para el teclado numeacuterico en pantalla

Soporte para tamantildeos y resoluciones de pantalla extra-grandes (WXGA y

mayores)

Funcioacuten para copiar y pegar mejorada con soporte para caracteres individuales en

lugar de cajas de texto

2 lugar que ofrece acceso a Internet a traveacutes de una red inalaacutembrica y un enrutador conectado a un proveedor de servicios de Internet 3 proceso por el cual un dispositivo moacutevil con conexioacuten a Internet actuacutea como pasarela para ofrecer acceso a la red a otros dispositivos

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

23

Soporte para NFC

Herramientas de visualizacioacuten de consumo y uso de la bateriacutea mejoradas

Soporte para caacutemaras frontales

Acceso de bajo nivel para los desarrolladores de juegos

Recolector basura concurrente para incrementar el rendimiento

Sustitucioacuten del sistema de archivos YAFFS por ext4

Soporte nativo para maacutes sensores (tales como giroscopio y baroacutemetro)

Soporte de chat de video o voz usando Google Talk

En febrero del 2011 Google lanza Android 30 Honeycomb Se trata de una

actualizacioacuten especiacutefica para tablets no compatible con teleacutefonos que introduciacutea las

liacuteneas maestras de la interfaz en el futuro Las versiones 31 y 32 mantuvieron el mismo

nombre y fueron baacutesicamente un conjunto de correcciones A continuacioacuten se listan los

cambios significativos que tuvieron lugar en estas versiones

Pantalla de Inicio redisentildeada

Inclusioacuten de tonos azules en la interfaz en detrimento del verde tradicional

Nuevas funcionalidades para el emplazamiento y uso de widgets

Fin de los botones fiacutesicos Adaptacioacuten automaacutetica del SO seguacuten el dispositivo

Agregado de barra de sistema con caracteriacutesticas de acceso raacutepido a

notificaciones estados y botones de navegacioacuten suavizados disponible en la parte

inferior de la pantalla

Antildeadida la barra de accioacuten (Action Bar en ingleacutes) entregando acceso a opciones

contextuales navegacioacuten widgets u otros tipos de contenido en la parte superior

de la pantalla

Multitarea simplificada ndash tocando Aplicaciones recientes en la barra del sistema

permite a los usuarios ver instantaacuteneas de las tareas en curso y saltar raacutepidamente

de una aplicacioacuten a otra

Aceleracioacuten graacutefica mediante hardware

Optimizacioacuten del renderizado de graacuteficos 3D

Soporte para perifeacutericos USB

Octubre del 2011 fue el mes del lanzamiento de Android 40 Ice Cream Sandwich

basado en el nuacutecleo de Linux 301 Esta nueva versioacuten introdujo las siguientes mejoras

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

24

Nueva Interfaz Holo y fuente tipograacutefica Roboto

Sistema de gestioacuten de notificaciones mejorado

Multitarea mejorada

Android Beam funcionalidad para transferir datos entre dos dispositivos viacutea NFC

Funcioacuten de desbloqueo mediante el rostro

Nuevas funciones para la visualizacioacuten y gestioacuten del consumo de datos

Nuevas aplicaciones de correo y calendario

Habilidad de acceder a aplicaciones directamente desde la pantalla de bloqueo

Herramienta integrada de captura de pantalla

Soporte MKV

Aceleracioacuten por hardware de la interfaz de usuario

Soporte Stylus (laacutepiz taacutectil)

En Julio del 2012 se presenta Android 41 Jelly Bean que incluye las siguientes

novedades

Sistema de deteccioacuten de entrada de datos taacutectiles optimizado

Estreno de Google Now el servicio-asistente de voz inteligente de Google

Navegador Google Chrome

Buacutesqueda mediante voz mejorada

Nuevas posibilidades para las notificaciones interactivas de escritorio

Dictado de voz offline

Se deja de dar soporte al Flash Player

Meses despueacutes en noviembre del 2012 se lanza la versioacuten Android 42 Jelly Bean

la cual incluye habituales correcciones rendimiento mejorado y cambios puntuales en

ciertas aplicaciones

Android 43 Jelly Bean es anunciado el 24 de julio del 2013 Uno de los objetivos

de esta versioacuten fue tratar de consolidar a Android como un sistema operativo capaz de

ejecutar juegos Esta nueva versioacuten cuenta con las siguientes novedades

Soporte multiusuario y de perfiles mejorado

Soporte OpenGL ES 30

Bluetooth Smart

Plataforma Google Games

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

25

Servicios de localizacioacuten Wi-Fi mejorados

Ya no es necesario pulsar el icono del microacutefono para realizar una buacutesqueda de

voz Solo hay que decir OK Google y en seguida ordenar al equipo lo que se

necesite

Android 44 KitKat es anunciado en octubre del 2013 Esta nueva versioacuten intenta

corregir el problema de fragmentacioacuten se cuenta con muchas versiones y los fabricantes

tienen dificultades para adaptar sus productos a los requerimientos de cada nueva versioacuten

Se destaca de esta versioacuten

Menores requisitos de hardware para corregir la fragmentacioacuten de versiones

Compatible con terminales con 512 MB de memoria RAM

Reduccioacuten del consumo de bateriacutea mediante la optimizacioacuten de los sensores

Inclusioacuten de la suite ofimaacutetica QuickOffice

Servicios de almacenamiento online integrados Google Drive Box

Soporte para infrarrojos Usar el moacutevil como mando de TV

Aplicaciones a pantalla completa

Captura de pantalla en viacutedeo

En octubre del 2014 se lanza Android 5 Lollipop daacutendole soporte a otros

dispositivos como Android TV relojes inteligentes autos etc Esta nueva versioacuten

incluye

Nuevo disentildeo basado en Material Design que logra un flujo de trabajo maacutes fluido

Interfaz que se adapta a cualquier tamantildeo de dispositivo

Renovado sistema de notificaciones inteligente

Interesante vista multitarea que muestra capas con las diferentes aplicaciones

abiertas

Funcioacuten Android Smart Lock que permite emparejar un dispositivo Android con

otro ya sea un reloj inteligente o un automoacutevil

Modo Invitado para que puedas prestar el dispositivo sin que otros usuarios

tengan acceso a la informacioacuten privada

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

26

Soporte para sistemas de 64 bits

En octubre del 2015 se anuncia Android 6 Marshmallow que incluye las

siguientes novedades

Soporte para autenticacioacuten viacutea huella digital

Desinstalacioacuten raacutepida de las aplicaciones desde la pantalla de inicio

Nuevo esquema de gestioacuten de energiacutea llamado Doze

Mayor duracioacuten de la bateriacutea cuando el dispositivo estaacute en reposo

Inclusioacuten de Android Pay que emplearaacute el chip NFC

Mejoras en Google Now

Mayor control sobre los permisos requeridos por las aplicaciones

212 Proceso de Desarrollo Las aplicaciones nativas para esta plataforma se implementan utilizando el lenguaje

de programacioacuten Java

El estaacutendar sugiere utilizar el IDE oficial Android Studio (Figura 7) aunque es

posible utilizar otros entornos Independientemente del IDE utilizado se necesita

disponer del Software Development Kit (SDK) de la versioacuten de Android en la que se

desea trabajar El SDK provee todas las herramientas necesarias para desarrollar

compilar depurar y simular aplicaciones

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

27

Figura 7 Entorno de desarrollo Android Studio

Uno de los interrogantes que surgen en el momento de crear una aplicacioacuten es con

cual versioacuten de la Application Programming Interface (API) de Android trabajar Se debe

tener en cuenta que al trabajar con una versioacuten especiacutefica se estaacute limitando cuales son los

dispositivos que soportaraacuten la aplicacioacuten a crear No se recomienda utilizar una API

antigua -ya que no se estariacutea utilizando muchos de los avances de la plataforma- ni

tampoco la uacuteltima en el mercado ndashdebido a que pocos seriacutean los usuarios que podriacutean

utilizarla- En la Figura 8 se visualiza la distribucioacuten de versiones seguacuten los dispositivos

activos a la fecha de Diciembre 2016 [21] De esa informacioacuten se desprende que si se

optara por trabajar con la API 16 (Jelly Bean) el 966 de los celulares activos podraacuten

utilizar la aplicacioacuten a crear

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

28

Figura 8 Distribucioacuten de versiones de Android - Diciembre 2016

22 Desarrollo de Aplicaciones Nativas en iOS

iOS es un sistema operativo para dispositivos moacuteviles de la empresa multinacional

Apple Si bien fue originalmente desarrollado para el dispositivo iPhone luego el sistema

operativo alcanzoacute otros dispositivos como iPod Touch iPad A diferencias de otros

sistemas operativos para dispositivos moacuteviles iOS solo funciona en dispositivos creados

por la empresa Apple pero no asiacute en otro hardware de terceros

221 Evolucioacuten El sistema operativo moacutevil iOS se deriva del sistema operativo OS X el cual estaacute

basado en UNIX

La primera versioacuten del sistema operativo se presentoacute en enero del 2007 A

diferencia de sus sucesores la primera versioacuten no se llamoacute iOS sino iPhone OS Se

trataba de una plataforma bastante cerrada ya que las uacutenicas aplicaciones disponibles

eran las que estaban integradas al sistema operativo y fueron creadas por Apple como los

Mapas Mail Fotos Calendario entre otras

El desarrollo de aplicaciones nativas por parte de terceros no tuvo lugar hasta marzo

del 2008 momento en el cual Apple liberoacute el primer kit de desarrollo

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

29

Meses despueacutes se lanza la segunda versioacuten del sistema operativo iPhone OS 2 En

esta oportunidad introducen la App Store la cual permitioacute la descarga de aplicaciones de

terceros Ademaacutes la aplicacioacuten de Mapas recibioacute compatibilidad con el GPS y el Mail

notificaciones push

En 2009 Apple lanzoacute iPhone OS 3 y en su versioacuten 32 se le cambioacute el nombre a

iOS 32 iOS 3 incorporoacute grandes novedades buacutesqueda Spotlight botones Copiar y

Pegar grabacioacuten de viacutedeo edicioacuten de viacutedeo mensajes MMS comandos de voz modo

landscape y otras muchas apps Ademaacutes se siguioacute explotando las ventajas de las

notificaciones push y se continuoacute evolucionando su SDK daacutendole mayor poder a los

desarrolladores de aplicaciones

iOS 4 llegoacute a mediados del 2010 y trajo consigo nuevos cambios a la plataforma

Los maacutes destacables fueron la inclusioacuten de fondos de pantalla y la posibilidad de poder

abrir varias aplicaciones en simultaacuteneo Adicionalmente las aplicaciones podiacutean ser

agrupadas mediante carpetas algo simple pero uacutetil

En Junio del 2011 se libera iOS 5 Esta nueva versioacuten ofreciacutea grandes novedades

un Centro de Notificaciones Siri ndashel asistente virtual que marcoacute tendencia en los uacuteltimos

antildeos- iMessage iCloud Game Center Quiosco Recordatorios integracioacuten social para

Twitter y se mejoroacute notablemente la app de navegacioacuten web nativa Safari

iOS 6 fue presentado en Junio del 2012 y trajo como novedades la inclusioacuten de

Apple Maps (en reemplazo de Google Maps) mejoras en Siri con informacioacuten mucho

maacutes precisa la integracioacuten de Facebook y Twitter en el sistema el modo no molestar el

soporte para LTE entre otras

Los usuarios de este sistema operativo recibieron una de las mayores

actualizaciones en Junio del 2013 cuando se presenta iOS 7 Esta nueva versioacuten contoacute

con un redisentildeo total de la interfaz de usuario basaacutendose en transparencias y degradados

Ademaacutes se introdujo el Centro de Control AirDrop una renovada app de fotos iTunes

Radio y CarPlay mejoras en el App Switcher videos a caacutemara lenta entre otras cosas

Junio del 2014 fue el mes donde quedoacute disponible iOS 8 una nueva versioacuten del

sistema operativo que intenta resolver algunos errores de iOS 7 y antildeadir ciertas mejoras

Las extensiones y la posibilidad de conectar apps entre siacute mediante el menuacute compartir

hicieron que iOS 8 fuese mucho maacutes productivo Ademaacutes incorporoacute widgets para el

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

30

Centro de Notificaciones o las notificaciones interactivas Ademaacutes se implementaron los

contactos favoritos los teclados de terceros la funcioacuten Reachability y la utilidad

Continuity y las aplicaciones Apple Pay Salud HandOff QuickType Compartir en

Familia iCloud Drive y Apple Music

En el 2015 se presenta iOS 9 que introdujo todo un cambio en el uso del sistema

gracias a la compatibilidad con el 3D Touch del iPhone 6s y el iPhone 6s Plus Se

actualizoacute Notas con nuevas funciones se sustituyoacute Newsstand por News se incorporaron

mejoras en Passbook que pasoacute a llamarse Wallet y se mejoroacute Mapas con direcciones y

traacutefico Se antildeadioacute Split View Picture-in-Picture y atajos en teclados de terceros Ademaacutes

el sistema ahora podiacutea aprovechar mejor la autonomiacutea del dispositivo gracias al Modo

ahorro de bateriacutea que limita las conexiones y caracteriacutesticas del sistema para no consumir

tanta energiacutea

Por uacuteltimo en Junio del 2016 quedoacute disponible iOS 10 versioacuten que se caracteriza

por abrirse a los desarrolladores Con esta nueva versioacuten se puede tener acceso a Siri al

3D Touch y a apps directas del sistema operativo Ademaacutes el centro de widgets ahora es

maacutes intuitivo y la pantalla de bloqueo maacutes uacutetil Como es habitual se aprecian mejoras en

distintas aplicaciones del sistema operativo y se permite borrar apps de Apple que no sean

utilizadas por los usuarios

222 Proceso de desarrollo Las aplicaciones moacuteviles para la plataforma iOS se desarrollan utilizando el

lenguaje de programacioacuten Objetive C El entorno de desarrollo oficial es la plataforma

Xcode [22] la cual opera en conjunto con Interface Builder una herramienta graacutefica para

la creacioacuten de interfaces de usuario

Actualmente hay dos grandes versiones del sistema operativo moacutevil en curso como

se puede apreciar en la Figura 10 Es algo a destacar que la uacuteltima versioacuten del sistema

operativo es soportada por el 63 de los dispositivos activos Claramente la

fragmentacioacuten interna es mucho menor que la encontrada en Android

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

31

Figura 9 Entorno de desarrollo Xcode

Figura 10 Distribucioacuten de versiones de iOS - Noviembre 2016

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

32

23 Desarrollo de Aplicaciones Nativas en Windows Phone

El sistema operativo moacutevil Windows Phone fue desarrollado por Microsoft y

sucede a Windows Mobile A diferencia de su predecesor estaacute enfocado en el mercado de

consumo en lugar del mercado empresarial

231 Evolucioacuten Su primera versioacuten lanzada en septiembre del 2010 fue denominada Windows

Phone 7 Fue presentado como un nuevo sistema operativo que incluye funciones de

integracioacuten con los servicios Xbox Live y Zune La interfaz conocida como Metro ha

sido revisada en su totalidad y comparte caracteriacutesticas visuales similares a la interfaz del

dispositivo Zune HD

Windows Phone 75 es una actualizacioacuten para Windows Phone lanzada en

septiembre de 2011 Esta nueva versioacuten incorporoacute numerosas caracteriacutesticas como por

ejemplo la inclusioacuten de Internet Explorer 9 con soporte para CSS3 Media Queries y

soporte para usar GPS cuando se trabaje con aplicaciones de ubicacioacuten geograacutefica entre

otros

En enero del 2013 se presenta Windows Phone 78 una actualizacioacuten que trae

mejoras como la nueva interfaz de usuario y fondos personalizados para la pantalla de

bloqueo Fue la uacuteltima gran actualizacioacuten de Windows Phone 7 ya que Microsoft se

centroacute en Windows Phone 8

Windows Phone 8 es la siguiente versioacuten del sistema operativo la cual fue

presentada a finales de 2012 Entre las nuevas caracteriacutesticas se incluyen

Nuevas pantallas de inicio y de bloqueo maacutes personalizables

Rincoacuten infantil un espacio exclusivo y controlado para los nintildeos

Cartera para almacenar tarjetas de fidelizacioacuten y de creacutedito

NFC

Internet Explorer 10

Integracioacuten con Skype

Nuevo nuacutecleo Windows NT con soporte para procesadores de varios

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

33

nuacutecleos

Captura de pantalla

Su proacutexima versioacuten es Windows Phone 81 y fue presentada en abril del 2014

Entre sus caracteriacutesticas maacutes relevantes se encuentran

Centro de notificaciones

Asistente de voz conocido con el nombre de Cortana

Sensores (de Wi-Fi de datos y de bateriacutea)

Aplicaciones que vienen en el paquete de instalacioacuten como Salud y

ejercicios Comida y bebida Viajes y Mapas (esta uacuteltima compite con Here

Maps la cual es la aplicacioacuten de mapas de Nokia)

Mejoras en la pantalla de inicio posibilidad de agregar fondos de pantalla y

una tercera columna de mosaicos personalizables (Tiles)

A mediados del 2014 Microsoft decide cambiar de estrategia tratando de unificar

todas las plataformas como PC tablets smartphones Xbox One entre otros Windows

10 (moacutevil) se dio a conocer puacuteblicamente durante un evento el 21 de enero para 2015 Al

igual que su homoacutelogo Windows 10 Mobile utiliza como navegador predeterminado

Microsoft Edge reemplazando Internet Explorer de Windows Phone 81 ya que este no

se adecuaba a las nuevas liacuteneas de disentildeo del sistema operativo

232 Proceso de desarrollo El entorno de desarrollo maacutes popular para el desarrollo de aplicaciones para

Windows Phone es Visual Studio (Figura 11) En la actualidad es posible utilizar diversos

lenguajes de programacioacuten VBNET y CNET C++ y JavaScript

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

34

Figura 11 Entorno de desarrollo Visual Studio

24 Diferencias teacutecnicas entre Android iOS y Windows Phone

Desarrollar aplicaciones moacuteviles para los tres sistemas operativos maacutes populares

implica conocer ciertos aspectos teacutecnicos de cada plataforma Algunos de estos aspectos

teacutecnicos difieren sustancialmente entre cada sistema operativo

Una de las caracteriacutesticas a tener en cuenta es si las aplicaciones moacuteviles se ejecutan

dentro de una maacutequina virtual especiacuteficamente disentildeada o si se ejecutan directamente

sobre el sistema operativo

Otro aspecto que los desarrolladores deben tener en cuenta es el lenguaje de

programacioacuten a utilizar para crear aplicaciones nativas Este aspecto es importante porque

incide en otros aspectos como por ejemplo la gestioacuten de memoria

Ademaacutes del lenguaje de programacioacuten a utilizar es importante conocer la

tecnologiacutea requerida para disentildear interfaces de usuario

Asimismo los desarrolladores deben familiarizarse con diferentes IDEs seguacuten la

plataforma en la que se desea desarrollar como asiacute tambieacuten con diferentes tiendas de

aplicaciones donde alojar los productos finales

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

35

Por uacuteltimo la tecnologiacutea de hardware requerida para soportar el sistema operativo

tambieacuten difiere seguacuten cada plataforma

La Tabla 1 compara cada uno de estos aspectos en los sistemas operativos moacuteviles

Android iOS y Windows Phone

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

36

Sistema

Operativo

Maacutequina

Virtual

Lenguaje de

Programacioacuten

Interfaces

de usuario

Gestioacuten de

memoria

IDE Plataforma de

desarrollo

Dispositivos Tienda de

Aplicaciones

Android Dalvik VM Java XML files Garbage

collector

Android

Studio

Multiplatforma Heterogeneos Google Play

Store

iOS No Objective-C Cocoa

Touch

Reference

counting

XCode Mac OS X Homogeneos iTunes Apps

Store

Windows

Phone

CLR C and Net XAML files Garbage

collector

Visual

Studio

Windows Vista7 Homogeneos Windows

Phone Store

Tabla 1 Diferencias teacutecnicas entre las plataformas Android iOS y Windows Phone

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

37

Capiacutetulo 3 Desarrollo de

Aplicaciones Moacuteviles

Multiplataforma

En los uacuteltimos antildeos el mercado de los dispositivos moacuteviles en especial

smartphones ha mostrado un crecimiento notable tanto en Argentina como en todo el

mundo En particular en nuestro paiacutes las plataformas que maacutes han crecido son Android

e iOS [1520]

Actualmente gran parte de la industria del software se concentra en desarrollar

soluciones para dispositivos moacuteviles proveyendo especialmente aplicaciones nativas

Las aplicaciones nativas tal como se mencionoacute en el capiacutetulo anterior ofrecen la

posibilidad de acceder a todas las capacidades del dispositivo (caacutemara GPS aceleroacutemetro

y agenda entre otras) su rendimiento es alto el acceso a Internet no es estrictamente

necesario y pueden ejecutarse en segundo plano notificando al usuario cuando se requiera

su atencioacuten Estas aplicaciones pueden distribuirsecomercializarse a traveacutes de las tiendas

en liacutenea correspondientes

El principal reto para los proveedores de aplicaciones es proporcionar soluciones

para todas las plataformas pero esto conlleva un alto costo [6] no es posible reusar el

coacutedigo fuente entre plataformas diferentes multiplicando esfuerzos y elevando los costos

de desarrollo actualizacioacuten y distribucioacuten de nuevas versiones

El desarrollo multiplataforma procura optimizar la relacioacuten costobeneficio

compartiendo la misma codificacioacuten entre las versiones para las distintas plataformas

Entre otras ventajas sobresalen menor tiempo y costo de desarrollo prestaciones

similares a las nativas con acceso al hardware del dispositivo y disponibilidad de

entornos potentes de desarrollo (Delphi Visual Studio etc) o en su lugar utilizacioacuten de

tecnologiacuteas (HTML5 Javascript y CSS) bien conocidas por los desarrolladores web

quienes pueden trasladar sus conocimientos y experiencias al paradigma moacutevil Sin

embargo el rendimiento de las aplicaciones y sus interfaces de usuario pueden afectar la

experiencia de usuario

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

38

Las aplicaciones multiplataforma pueden clasificarse en aplicaciones web moacuteviles

hiacutebridas interpretadas y generadas por compilacioacuten cruzada [5] En las secciones

siguientes se analizaran cada una de estas clasifcaciones

31 Aplicaciones Web Moacuteviles

Las Aplicaciones Web Moacuteviles disentildeadas para ejecutarse dentro de un navegador

se desarrollan con tecnologiacutea web estaacutendar (HTML CSS y JavaScript) y cuentan con

una serie de caracteriacutesticas favorables no necesitan adecuarse a ninguacuten entorno operativo

son independientes de la plataforma y su puesta en marcha es raacutepida y sencilla

Por contrapartida sus tiempos de respuesta decaen debido a la interaccioacuten cliente-

servidor Al mismo tiempo resultan ser menos atractivas que las aplicaciones nativas ya

que no se encuentran instaladas en el dispositivo lo que implica acceder previamente a

un navegador Ademaacutes las restricciones de seguridad impuestas a la ejecucioacuten de coacutedigo

por medio de un navegador limitan el acceso a todas las capacidades del dispositivo [23]

Asimismo no es posible desarrollar aplicaciones web que corran en segundo plano ni

tampoco aplicaciones offline ya que es requisito disponer de una conexioacuten a internet para

su funcionamiento

El proceso de desarrollo de una aplicacioacuten web moacutevil debe contemplar una serie de

caracteriacutesticas inherentes al entorno de ejecucioacuten Como ya ha sido mencionado las

aplicaciones web moacuteviles pueden ser accesibles desde cualquier dispositivo moacutevil que

cuente con un navegador y acceso a internet pero esto no significa que la navegacioacuten en

la aplicacioacuten resulte ser coacutemoda u oacuteptima Por ejemplo una aplicacioacuten web con un menuacute

compuesto de 20 iacutetems puede implicar una usabilidad correcta desde una PC Por lo

contrario para un dispositivo moacutevil con una pantalla limitada no resulta praacutectico que se

le presente al usuario tantas opciones en el menuacute Con este ejemplo lo que se pretende

mostrar es que para que una aplicacioacuten sea accesible desde diferentes dispositivos

moacuteviles posiblemente se tengan que realizar al menos dos disentildeos de presentacioacuten

diferentes un disentildeo para PC y otro disentildeo para dispositivos moacuteviles con una estructura

organizativa de la aplicacioacuten maacutes simplificada con respecto al disentildeo tradicional Por

ejemplo algunas de las funcionalidades de la aplicacioacuten para PC pueden ser eliminadas

para la versioacuten para dispositivos moacuteviles o presentadas de forma diferente

Para desarrollar diferentes presentaciones de una misma aplicacioacuten web

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

39

actualmente existen dos estrategias distintas ambas vaacutelidas seguacuten el contexto En los

siguientes apartados se analizaraacuten cada una de ellas

311 Aplicacioacuten Web dedicada y exclusiva para dispositivos moacuteviles Esta metodologiacutea ha sido el estaacutendar hasta el antildeo 2012 En ella la direccioacuten URL

y el coacutedigo HTML de la versioacuten moacutevil son distintos de la versioacuten de escritorio Por lo

general las direcciones URL tienen el formato mnombresitiocom

Algunas de las ventajas de este meacutetodo

- En general la carga es maacutes raacutepida y la navegacioacuten maacutes coacutemoda

- Es posible adaptar de manera maacutes faacutecil el contenido de las secciones

Desventajas de este meacutetodo

- Mantenimiento maacutes costoso Se debe mantener dos versiones distintas del mismo

sitio

- Dificulta el posicionamiento del sitio en los buscadores

- Estos desarrollos al final tienden a ser versiones muy reducidas de la web para

PC llevando al usuario a frustrarse y a preferir ver la versioacuten original de la web

312 Aplicacioacuten Web con Disentildeo Adaptable Con esta metodologiacutea la aplicacioacuten web se adapta al dispositivo desde el cual se la

estaacute accediendo El coacutedigo HTML y la direccioacuten URL de la aplicacioacuten son uacutenicos El

Disentildeo Adaptable o Responsive Design (Figura 12) tiene sus oriacutegenes en el antildeo 2008

cuando la W3C discutioacute y describioacute sus propoacutesitos Desde el antildeo 2012 -momento en el

cual Google recomendoacute fuertemente su implicancia [24]- viene en ascenso y

posiblemente llegue a convertirse en un standard en un corto plazo

Mediante un Disentildeo Adaptable todos los elementos de la web se reajustan en ancho

y altura adaptaacutendose al tamantildeo de tu pantalla Incluso es posible ocultar secciones cuando

se accede desde un dispositivo moacutevil

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

40

Figura 12 Disentildeo Adaptable

Las principales ventajas del desarrollo de aplicaciones web con Disentildeo Adaptable

son

- El mantenimiento es menos costoso ya que solo hay que mantener una uacutenica

versioacuten de la aplicacioacuten

- Se simplifica el proceso de posicionar la aplicacioacuten en los buscadores

Como contrapartida el Disentildeo Adaptable presenta una serie de desventajas

- Requiere de mayores niveles teacutecnicos para su desarrollo

- El contenido de las aplicaciones con Disentildeo Adaptable puede ser mayor que el

contenido de las aplicaciones web especiacuteficas para dispositivos moacuteviles

perjudicando el tiempo de carga cuando se utiliza un tipo de conexioacuten no muy

potente y generando un mayor consumo de datos

En la actualidad existe una gran cantidad de frameworks que simplifican el

desarrollo de aplicaciones web con disentildeo adaptable destacaacutendose por su popularidad y

extensa documentacioacuten los frameworks Bootstrap [25] y Foundation [26]

32 Aplicaciones Hiacutebridas

Las aplicaciones hiacutebridas utilizan tecnologiacuteas web (HTML Javascript y CSS) pero

no son ejecutadas por un navegador En su lugar se ejecutan en un contenedor web

(webview) como parte de una aplicacioacuten nativa la cual estaacute instalada en el dispositivo

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

41

moacutevil Desde una aplicacioacuten hiacutebrida es posible acceder a las capacidades del dispositivo

a traveacutes de diversas API

Las aplicaciones hiacutebridas ofrecen grandes ventajas permitiendo la reutilizacioacuten de

coacutedigo en las distintas plataformas el acceso al hardware del dispositivo y la distribucioacuten

a traveacutes de las tiendas de aplicaciones En contrapartida se observan dos desventajas de

las aplicaciones hiacutebridas respecto del caso nativo i) la experiencia de usuario se ve

perjudicada al no utilizar componentes nativos en la interfaz y ii) la ejecucioacuten se ve

ralentizada por la carga asociada al contenedor web

Afortunadamente existe una diversidad de frameworks que permiten desarrollar

aplicaciones hiacutebridas A continuacioacuten se haraacute un breve resumen de los maacutes populares

321 PhoneGap PhoneGap [27] es un framework gratuito y open source creado en el antildeo 2008 por

la empresa Nitobi Software que permite crear aplicaciones moacuteviles usando tecnologiacutea

web estaacutendar HTML JavaScript y CSS En octubre del 2011 Adobe adquiere la empresa

Nitobi y aporta el coacutedigo de PhoneGap a Apache Software Foundation para iniciar un

nuevo proyecto por encima de PhoneGap llamado Apache Cordova [28] PhoneGap pasoacute

a ser una de las varias distribuciones de Apache Cordova (Figura 13) brindando servicios

extras como por ejemplo Adobe PhoneGap Build [29] un servicio de compilacioacuten en la

nube proporcionado por Adobe Creative Cloud PhoneGap Desktop y PhoneGap

Developer

PhoneGap permite compilar aplicaciones para las siguientes plataformas Android

IOS Amazon Fire OS Windows Phone Windows 8 Ubuntu Tizen Firefox OS

Blackberry 10

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

42

Figura 13 Funcionamiento de Apache Cordova

322 CocoonJS CocoonJS [30] es un framework para el desarrollo de aplicaciones moacuteviles

producido por Ludei [31] Actualmente cuenta con una licencia propietaria y ofrece

diferente tipos de planes pagos y gratuitos El mencionado framework estaacute basado en

Apache Cordova al igual que PhoneGap pero se diferencia de este uacuteltimo en que hace

un mayor hincapieacute en la performance de las aplicaciones resultantes CocoonJS ofrece

dos tipos de webview

Canvas+ un webview liviano optimizado para video juegos Provee solo un

subconjunto de las funcionalidades del HTML5 (canvas audio motion

geolocalizacioacuten etc) necesarias para desarrollar video juegos con el objetivo de

brindar la mejor performance posible

Webview+ un potente y completo webview basado en el webview del proyecto

Chromium el cual cuenta de una mejor performance en comparacioacuten con el

webview por defecto de Apache Cordova

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

43

CocoonJs permite crear aplicaciones tanto para iOS como para Android

323 Ionic Ionic [32] es un completo SDK gratuito y open source para el desarrollo de

aplicaciones hiacutebridas producido por Max Lynch Ben Sperry y Adam Bradley de la

compantildeia Drifty Co en el antildeo 2013 En un tiempo relativamente corto alcanzoacute una

popularidad a destacar Estaacute basado en Apache Cordova permitiendo desarrollar

aplicaciones con tecnologiacutea web A diferencia de otros frameworks para el desarrollo de

aplicaciones hibridas Ionic provee un framework para la interfaz de usuario y

herramientas visuales para disentildear interfaces

Mediante Ionic es posible crear aplicaciones para Android IOS Windows Phone y

Firefox OS

324 Sencha Touch Sencha Touch [33] es un framework gratuito Model-View-Controller (MVC)

JavaScript construido sobre el sistema de clases de Ext JS disentildeado especialmente para

el desarrollo de aplicaciones web moacuteviles para dispositivos taacutectiles [34]

Al igual que PhoneGap Sencha Touch permite a los desarrolladores crear

aplicaciones moacuteviles a partir de un desarrollo web con HTML5 CSS y Javascript A

diferencia de PhoneGap Sencha no necesita de ninguna libreriacutea de terceros para construir

interfaces similares a las nativas ya que el framework provee consigo una gran cantidad

de componentes visuales listos para utilizar

Sencha empaqueta el coacutedigo del proyecto mediante PhoneGap para luego poder

construir aplicaciones en todas las plataformas soportadas por PhoneGap

33 Aplicaciones Interpretadas

Las aplicaciones interpretadas son implementadas utilizando un lenguaje base el

cual se traduce en su mayor parte a coacutedigo nativo mientras el resto es interpretado en

tiempo de ejecucioacuten Estas aplicaciones son implementadas de manera independiente de

las plataformas utilizando diversas tecnologiacuteas y lenguajes tales como Javascript Java

Ruby y XML entre otros

Una de las principales ventajas de este tipo de aplicaciones es que se obtienen

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

44

interfaces de usuario totalmente nativas Sin embargo los desarrolladores experimentan

una dependencia total con el entorno de desarrollo elegido

Seguidamente se presentaran algunos de frameworks maacutes reconocidos para el

desarrollo de aplicaciones interpretadas

331 Appcelerator Titanium Desarrollado por Appcelerator Inc Appcelerator Titanium [35] es un framework

de coacutedigo abierto que permite la creacioacuten de aplicaciones moacuteviles para las plataformas

iOS y Android Dicho framework estaacute formado por Titanium Studio un entorno de

desarrollo de coacutedigo libre para la codificacioacuten de aplicaciones moacuteviles multiplataforma

y el SDK Titanium una serie de herramientas para el desarrollo testeo anaacutelisis

depuracioacuten y compilacioacuten de aplicaciones

Las aplicaciones desarrolladas con Appcelerator Titanium se codifican utilizando

el lenguaje Javascript el cual es evaluado en tiempo de ejecucioacuten mediante un inteacuterprete

de Javascript que se ejecuta en el sistema operativo del dispositivo Al iniciar la

aplicacioacuten desde el coacutedigo nativo se ejecuta el coacutedigo Javascript y mediante la API de

Titanium se mapea uno-a-uno cada elemento del coacutedigo Javascript con los elementos

nativos De esta manera la API de Titanium actuacutea como puente logrando interfaces de

usuario compuestas de controles nativos Este entorno de desarrollo utiliza el framework

Alloy disentildeado para el desarrollo aacutegil de aplicaciones moacuteviles Alloy estaacute basado en la

arquitectura MVC y soporta el uso de tecnologiacuteas populares como Backbonejs [36] y

Underscorejs [37]

Los creadores de Titanium destacan que mediante este framework es posible

reutilizar entre el 60 y 90 del coacutedigo entre distintas plataformas

332 NativeScript El 5 de marzo del 2015 la empresa Telerik lanzoacute NativeScript [38] un proyecto de

coacutedigo abierto el cual permite generar aplicaciones nativas utilizando JavaScript

Asimismo es posible desarrollar la aplicacioacuten utilizando el lenguaje TypeScript [39]

lenguaje libre y de coacutedigo abierto desarrollado por Microsoft que extiende a JavaScript

esencialmente antildeadiendo tipado estaacutetico y objetos basados en clases En este sentido

cuando se compila la aplicacioacuten se realiza la traduccioacuten del coacutedigo TypeScript a coacutedigo

JavaScript

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

45

NativeScript provee un moacutedulo multiplataforma que permite obtener aplicaciones

nativas desde coacutedigo JavaScript Este moacutedulo expone las capacidades del dispositivo y

de la plataforma subyacente de una manera consistente y permite accederlas desde el

coacutedigo JavaScript De igual manera las interfaces de usuario pueden ser definidas

mediante coacutedigo JavaScript documentos HTML y archivos CSS abstrayeacutendose de los

componentes nativos reales

Cuando la aplicacioacuten es compilada parte del coacutedigo multiplataforma es traducido

a coacutedigo nativo mientras que el resto es interpretado en tiempo de ejecucioacuten (Figura 14)

Por el momento NativeScript permite generar aplicaciones para Android e iOS y

se preveacute dar soporte a Windows Phone NativeScript renderiza controles nativos sin

utilizar WebViews logrando una performance y experiencia de usuario similar al de las

aplicaciones nativas

Figura 14 Proceso de interpretacioacuten mediante NativeScript

34 Aplicaciones Generadas por Compilacioacuten Cruzada

Estas aplicaciones se compilan de manera nativa creando una versioacuten especiacutefica de

alto rendimiento para cada plataforma destino Ejemplos de entornos de desarrollo para

generar aplicaciones por compilacioacuten cruzada son Applause [40] Xamarin [41]

Embarcadero Delphi 10 Seattle [42] y RubyMotion [43]

El entorno de desarrollo abierto Applause utiliza como entrada un lenguaje

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

46

especiacutefico del dominio basado en el framework Xtext [44] disentildeado expliacutecitamente para

aplicaciones moacuteviles orientadas a datos y genera coacutedigo fuente en Objective C Java C

o Python Las caracteriacutesticas de Xamarin Embarcadero Delphi 10 Seattle y RubyMotion

se presentan en secciones posteriores

341 Xamarin Xamarin es una plataforma de desarrollo de aplicaciones moacuteviles para generar

aplicaciones 100 nativas para iOS Android y Windows a partir de una base de coacutedigo

CNET comuacuten para conseguir entre un 75 y hasta casi un 100 de reutilizacioacuten de

coacutedigo entre plataformas Las aplicaciones escritas con Xamarin y C disponen de acceso

completo a las API de la plataforma subyacente asiacute como de la capacidad de crear

interfaces de usuario nativas y de realizar la compilacioacuten en coacutedigo nativo por lo que el

impacto en el rendimiento en tiempo de ejecucioacuten es escaso

Xamarin es una compantildeiacutea que se establecioacute en mayo de 2011 por los mismos

ingenieros que crearon el proyecto Mono [45] consistente en una implementacioacuten libre

de la plataforma de desarrollo NET para dispositivos Android iOS y GNULinux

Anteriormente este proyecto se llamaba MonoTouch y MonoDroid

Si bien Xamarin cuenta con su propio IDE denominado Xamarin Studio (Figura

15) es posible integrarlo con Microsoft Visual Studio y de esta manera generar tambieacuten

aplicaciones para Windows incluido Windows RT para tablets y Windows Phone para

celulares

En febrero del 2016 Xamarin es comprada por Microsoft y desde ese momento la

plataforma Xamarin y el IDE Xamarin Studio pasaron a ser gratuitas

Xamarin propone un enfoque de desarrollo multiplataforma en el que se comparte

la codificacioacuten completa de la loacutegica del negocio Sin embargo las interfaces deben ser

programadas de manera independiente para cada una de las plataformas destino Asiacute la

reutilizacioacuten de coacutedigo seguacuten estudios estadiacutesticos de la compantildeiacutea Xamarin es cercana

al 85

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

47

Figura 15 Entorno de Desarrollo Xamarin Studio

342 Embarcadero Delphi 10 Seattle Embarcadero Delphi 10 Seattle [42] es una plataforma de desarrollo propietaria y

no gratuita que permite a los desarrolladores crear aplicaciones raacutepidamente a traveacutes de

un entorno visual coacutemodo e intuitivo (Figura 16) La aplicacioacuten desarrollada puede ser

compilada para muacuteltiples plataformas incluyendo Windows Mac Android e iOS

Delphi 10 Seattle al igual que Xamarin aventaja a otros tipos de aplicaciones

multiplataformas con resultados 100 nativos con acceso total a los sensores y

capacidades del dispositivo (caacutemara notificaciones GPS aceleroacutemetro entre otras)

Un punto a destacar es que Delphi 10 Seattle a traveacutes del framework de interfaces

de usuario FireUI Multi-Device Designer permite crear interfaces de usuario totalmente

nativas sin la necesidad de tener que disentildear interfaces especiacuteficas para cada plataforma

en particular

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

48

Figura 16 Entorno de Desarrollo Delphi 10 Seattle

343 RubyMotion En Mayo de 2012 la empresa HipByte lanza RubyMontion un proyecto que

permite generar aplicaciones para iOS Android y OS X utilizando el lenguaje de

programacioacuten Ruby

Para poder generar las aplicaciones multiplataforma RubyMotion posee

implementaciones de Ruby sobre los sistemas operativos destinos (Android e iOS) que

permiten acceder a todas las caracteriacutesticas provistas por cada plataforma Las

herramientas de compilacioacuten provistas por RubyMotion se encargan de embeber la

correspondiente implementacioacuten de Ruby al momento de compilar para cada plataforma

La principal desventaja de RubyMotion es que soacutelo funciona bajo el sistema

operativo OS X Otro factor a tener en cuenta es que no posee un entorno de desarrollo

integrado que facilite todo el proceso al desarrollador esto se ve solventado gracias a que

ofrece complementos para los IDE y editores de coacutedigo maacutes utilizados

Finalmente si bien el producto es un servicio pago ofrece una posibilidad de

probarlo gratuitamente aunque con soporte uacutenicamente para compilar a la uacuteltima versioacuten

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

49

de cada plataforma destino

Capiacutetulo 4 Experimentacioacuten

50

Capiacutetulo 4 Experimentacioacuten

Con el objetivo de profundizar la investigacioacuten de las diferentes metodologiacuteas de

desarrollo de aplicaciones moacuteviles multiplataforma es que se llevaron a cabo diferentes

experimentos en simultaacuteneo El primer experimento consiste en el desarrollo de una

aplicacioacuten moacutevil utilizando cada una de las metodologiacuteas estudiadas en el capiacutetulo

anterior con el objetivo de analizar el proceso de desarrollo El segundo experimento

tiene como objetivo analizar el rendimiento de las aplicaciones moacuteviles generadas

mediante las metodologiacuteas estudiadas a traveacutes de un caacutelculo matemaacutetico Por uacuteltimo se

presenta un informe comparativo que pueda ayudar en la toma de decisiones sobre queacute

metodologiacutea utilizar en futuros desarrollos

41 Aplicacioacuten Moacutevil para la plataforma de E-Learning WebUNLP

411 Descripcioacuten del problema WebUNLP es un entorno virtual de ensentildeanza y aprendizaje que permite a los

docentes mediar sus propuestas educativas Alumnos y docentes pueden encontrarse en

ese espacio para compartir materiales de estudio comunicarse y generar una experiencia

educativa en forma virtual [46]

Actualmente WebUNLP cuenta con una versioacuten web enfocada a computadoras de

escritorio o portaacutetiles pero no estaacute adaptada para ser utilizada desde dispositivos moacuteviles

El desarrollo planteado consiste en extender WebUNLP con la construccioacuten de una

aplicacioacuten moacutevil que permita acceder a determinadas funcionalidades del sistema a

traveacutes de un dispositivo moacutevil El enfoque propuesto incluye un anaacutelisis de la misma

solucioacuten comparando el desarrollo nativo web hiacutebrido interpretado y de compilacioacuten

cruzada a fin de establecer cuaacutel de ellos es conveniente

Como ocurre con cualquier desarrollo de software la construccioacuten de una

aplicacioacuten moacutevil implica tener claramente definido su propoacutesito y cuaacuteles requerimientos

debe cumplir En particular para el caso de software para dispositivos moacuteviles resulta

esencial tener objetivos maacutes acotados que en su versioacuten de escritorio [47]

Capiacutetulo 4 Experimentacioacuten

51

Para el caso especiacutefico de WebUNLP se realizoacute el desarrollo incremental de una

aplicacioacuten moacutevil y esta primera versioacuten se enfocoacute en una de sus herramientas de

comunicacioacuten la cartelera Esta herramienta permite comunicar las novedades de un

curso como por ejemplo el cambio de horario de una cursada recordar las fechas de

entrega de un trabajo praacutectico entre otras [46]

412 Anaacutelisis Uno de los primeros interrogantes planteados fue la eleccioacuten de la plataforma En

teacuterminos de mercado los sistemas operativos que predominan en Argentina son Android

e iOS [4815] con lo cual se decidioacute dar soporte a estos dos sistemas operativos

Se analizaron los requerimientos funcionales y no funcionales de forma aislada a la

plataforma y luego de forma especiacutefica para cada una de ellas

A continuacioacuten se presentan algunos requerimientos a cumplir por la aplicacioacuten

El usuario debe poder ingresar a la aplicacioacuten con las mismas credenciales que las

utilizadas para acceder a la versioacuten web de escritorio

El usuario debe poder acceder a la cartelera de todos los cursos en los que

participa ya sea como docente o alumno

El usuario debe recibir una notificacioacuten en su dispositivo cuando una novedad es

publicada en la cartelera Este requerimiento no se puede cumplir en la versioacuten

web accesible desde computadoras de escritorio yo portables

El usuario debe tener la misma experiencia de uso en todas las plataformas

operativas

La aplicacioacuten web existente debe estar sincronizada con la aplicacioacuten moacutevil a

desarrollar esto significa que cualquier cambio realizado desde la aplicacioacuten

moacutevil debe verse reflejado en la versioacuten web y viceversa

413 Disentildeo Para satisfacer los requerimientos planteados en el punto anterior a excepcioacuten de

la notificacioacuten el disentildeo de la aplicacioacuten moacutevil web consiste en una reacuteplica de lo ofrecido

por WEBUNLP adaptaacutendose solamente la interfaz al tamantildeo de pantalla del dispositivo

moacutevil

Capiacutetulo 4 Experimentacioacuten

52

Para el disentildeo de las aplicaciones moacuteviles nativa hiacutebrida interpretada y de

compilacioacuten cruzada la situacioacuten es maacutes compleja En la Figura 17 se presenta la

arquitectura geneacuterica de todos los componentes que participan en este escenario de

desarrollo En ella se observa el acceso desde una PC a WebUNLP y el acceso desde

dispositivos moacuteviles a la informacioacuten de WebUNLP mediante servicios web Para el

desarrollo de los servicios web se disentildeoacute una API Restful dada su simpleza escalabilidad

e interoperabilidad [49]

Figura 17 Arquitectura geneacuterica para aplicacioacuten nativa e hiacutebrida

Asimismo existe una tarea programada (Cron) de ejecucioacuten intermitente a

intervalos regulares de tiempo la cual notifica a los dispositivos moacuteviles correspondientes

cuando se crea una novedad en la cartelera de WebUNLP El Cron identifica el sistema

operativo del dispositivo a notificar y genera dicha notificacioacuten

En cuanto a la interfaz graacutefica se planteoacute un disentildeo independiente de la plataforma

para analizar los aspectos de usabilidad de la aplicacioacuten y luego se realizaron los ajustes

necesarios para cada tipo de aplicacioacuten

En las interfaces disentildeadas la navegacioacuten es en serie en el orden en que se presentan

en el mockup [50] de la Figura 18

Capiacutetulo 4 Experimentacioacuten

53

Figura 18 Mockup independiente del tipo de aplicacioacuten

414 Desarrollo

4141 Aplicacioacuten Nativa para Android

El desarrollo de aplicaciones para la plataforma Android requiere disponer del Java

Development Kit (JDK) y su entorno de programacioacuten conocido como Android SDK

Este uacuteltimo provee libreriacuteas y herramientas necesarias para construir testear y depurar

aplicaciones para Android

El desarrollo de la aplicacioacuten de WebUNLP para Android se realizoacute seguacuten las

convenciones adoptadas por su comunidad porque aplica buenas praacutecticas en la

construccioacuten de interfaces y de la loacutegica detraacutes de ellas el acceso a datos y a servicios

web Para cumplir el requerimiento de las notificaciones en el dispositivo

correspondiente el Cron genera la notificacioacuten mediante el uso del servicio Google Cloud

Messaging (GCM) [51] En la Figura 19 se presentan las interfaces de la aplicacioacuten

desarrollada

Figura 19 Aplicacioacuten nativa para Android

Capiacutetulo 4 Experimentacioacuten

54

4142 Aplicacioacuten Nativa para iOS

La plataforma Apple iOS estaacute basada en un modelo propietario es por ello que el

desarrollo de una aplicacioacuten nativa iOS implica contar con una Apple Mac ejecutando OS

X con Xcode instalado El lenguaje de programacioacuten principal es Objective C Xcode es

el entorno de desarrollo de Apple para todos sus dispositivos y es el encargado de

proporcionar el iOS SDK con las herramientas compiladores y frameworks necesarios

Ademaacutes Xcode viene integrado con simuladores para dispositivos iOS (iPhones y iPads)

que facilitan las etapas de prueba del sistema desarrollado

Para los aspectos referentes a la interfaz graacutefica y la interaccioacuten con el usuario se

siguieron las convenciones propuestas por Apple [52] para lograr una mejor integracioacuten

de la aplicacioacuten con el sistema operativo y mejorar la experiencia del usuario

Por uacuteltimo para satisfacer el requerimiento de notificaciones el Cron notifica al

dispositivo iOS correspondiente mediante el uso del servicio Apple Push Notification

Service (APNs) [53] En la Figura 20 se presentan las interfaces de la aplicacioacuten

desarrollada

Figura 20 Aplicacioacuten nativa para iOS

4143 Aplicacioacuten Web Moacutevil

Se desarrolloacute una aplicacioacuten web capaz de acceder a la cartelera de WebUNLP

disponible para cualquier dispositivo moacutevil que cuente con un navegador que soporte las

caracteriacutesticas utilizadas para el desarrollo HTML5 CSS3 y Javascript

Como la velocidad de transmisioacutenrecepcioacuten de datos de un dispositivo moacutevil a

traveacutes de WiFi y en particular 3G es inferior a la velocidad de una computadora de

Capiacutetulo 4 Experimentacioacuten

55

escritorio la versioacuten web de la cartelera de WebUNLP es liviana y gran parte de los

requerimientos son implementados a traveacutes de Ajax [54] para evitar ante alguacuten cambio

la recarga de la paacutegina completa

Debido a las limitaciones que tienen las aplicaciones que se ejecutan sobre un

navegador no es posible implementar la recepcioacuten de una notificacioacuten en el dispositivo

cuando una novedad es publicada en la cartelera

4144 Aplicacioacuten Hiacutebrida desarrollada con PhoneGap y Jquery Mobile

Para la construccioacuten de la aplicacioacuten WebUNLP hiacutebrida se utilizoacute el framework

PhoneGap [27] el cual permite desarrollar aplicaciones moacuteviles que utiliza tecnologiacuteas

comunes a todos los dispositivos HTML5 CSS y Javascript

Asimismo se utilizoacute el framework Javascript Jquery Mobile [55] para lograr

interfaces con apariencia y comportamiento consistente a traveacutes de las diferentes

plataformas moacuteviles

Con el objetivo de implementar el patroacuten de disentildeo MVC se utilizoacute la libreriacutea

Backbonejs [36]

Por uacuteltimo para satisfacer el requerimiento de notificaciones se utilizoacute el plugin

Pushwoosh [56]

En la figura 5 se presentan las interfaces de la aplicacioacuten desarrollada

Figura 21 Aplicacioacuten hiacutebrida desarrollada con PhoneGap

Capiacutetulo 4 Experimentacioacuten

56

4145 Aplicacioacuten Hiacutebrida desarrollada con Sencha Touch

El desarrollo de WebUNLP utilizando Sencha Touch se vio favorecido por el uso

del patroacuten de disentildeo MVC Esto permitioacute mayor flexibilidad y legibilidad en el coacutedigo

[57] [34]

Sencha ofrece Sencha Command una herramienta multiplataforma de liacutenea de

comandos que provee tareas automatizadas para todo el ciclo completo de una aplicacioacuten

En el caso de WebUNLP se utilizoacute tanto para la generacioacuten del proyecto como para el

empaquetado de la aplicacioacuten

En la Figura 22 se presentan las interfaces de la aplicacioacuten desarrollada

Figura 22 Aplicacioacuten desarrollada con Sencha Touch

4146 Aplicacioacuten Interpretada de WebUNLP con Appcelerator Titanium 3

Para desarrollar una aplicacioacuten moacutevil experimental seguacuten el enfoque interpretado

se utilizoacute el entorno de desarrollo gratuito y open source Appcelerator Titanium 3 [35]

Se destaca la simplicidad y legibilidad de los controladores y modelos de la

aplicacioacuten desarrollada luego de utilizar Alloy el framework de Titanium que permite

disentildear aplicaciones seguacuten el patroacuten de disentildeo MVC Para la construccioacuten de las vistas se

puede optar por la programacioacuten mediante Javascript y la API de Titanium o bien por

una especificacioacuten XML con estilos TSS (Titanium Style Sheets) Esta uacuteltima opcioacuten

simplifica el proceso de creacioacuten de las vistas aunque falta todaviacutea un buen editor visual

de interfaces que lo potencie

Capiacutetulo 4 Experimentacioacuten

57

Para cubrir requerimientos de notificaciones en el dispositivo Titanium provee el

moacutedulo PushNotifications para plataformas Android e iOS

La Figura 24 (a) muestra la experimentacioacuten con Titanium

4147 Aplicacioacuten Generada por Compilacioacuten Cruzada de WebUNLP utilizando XamarinVisual Studio

Tal como se mencionoacute en la seccioacuten 341 Xamarin propone un enfoque de

desarrollo multiplataforma en el que se comparte la codificacioacuten completa de la loacutegica

del negocio Sin embargo las interfaces deben ser programadas de manera independiente

para cada una de las plataformas destino (ver Figura 23) Asiacute la reutilizacioacuten de coacutedigo

seguacuten estudios estadiacutesticos de la compantildeiacutea Xamarin es cercana al 85

Figura 23 Enfoque uacutenico de desarrollo Xamarin

Para el estudio de las aplicaciones generadas por compilacioacuten cruzada se desarrolloacute

la aplicacioacuten moacutevil de WebUNLP utilizando Xamarin integrado con Microsoft Visual

Studio Siguiendo la estrategia maacutes eficiente para trabajar en este entorno se ha creado

una solucioacuten uacutenica conteniendo tres proyectos distintos Uno de ellos se utilizoacute para

generar la aplicacioacuten Android otro para la aplicacioacuten Windwos Phone 8 y el tercero para

la implementacioacuten de una biblioteca de clases portable (PCL por sus siglas en ingleacutes) con

todo el coacutedigo compartido Los tres proyectos fueron desarrollaacutendose de manera conjunta

y concurrente

Aunque una de las ventajas maacutes importantes de Xamarin es la reutilizacioacuten de

coacutedigo eacutesta se ve fuertemente afectada por el tipo de aplicacioacuten que se desarrolla La

relacioacuten existente entre la complejidad de la interfaz y la loacutegica del negocio impacta

directamente sobre la posibilidad de mantener la mayor cantidad de coacutedigo compartido

Capiacutetulo 4 Experimentacioacuten

58

en la PCL En el desarrollo de WebUNLP la reutilizacioacuten de coacutedigo ha sido cercana al

50 Sin embargo no debe despreciarse la ventaja de utilizar el mismo lenguaje entorno

y conjunto de herramientas comunes en el desarrollo de aplicaciones para distintas

plataformas moacuteviles

La Figura 24 (b) presenta la interfaz desarrollada para Windows Phone 8

4148 Aplicacioacuten Generada por Compilacioacuten Cruzada de WebUNLP utilizando Delphi 10 Seattle

Para el profundizar el estudio de las aplicaciones generadas por compilacioacuten

cruzada ademaacutes se desarrolloacute la aplicacioacuten moacutevil de WebUNLP utilizando Delphi 10

Seattle En particular fueron de gran utilidad tanto los componentes provistos por Delphi

para acceder a servicios RESTful como el entorno visual de desarrollo de Delphi 10

Seattle

Para la recepcioacuten de notificaciones en el dispositivo de las novedades de WebUNLP

se utilizoacute el componente TPushEvent conectado al servicio Kinvey [58]

La Figura 24 (c) presenta la interfaz de la aplicacioacuten desarrollada

(a) (b) (c)

Figura 24 Aplicacioacuten desarrollada con a) Titanium b) XamarinVisual Studio y c) Delphi XE

415 Conclusiones del experimento WebUNLP Seleccionar un dominio para desarrollar un caso experimental tiene sus

particularidades La novedad de disponer una aplicacioacuten moacutevil no es motivo suficiente

que justifique tal desarrollo Es necesario satisfacer un conjunto de requerimientos

claramente planteados

Capiacutetulo 4 Experimentacioacuten

59

WebUNLP es un entorno virtual de ensentildeanza y aprendizaje utilizado por diversos

cursos de grado y postgrado de la Universidad Nacional de La Plata Por ende la cantidad

de usuarios beneficiados por acceder desde cualquier lugar a este entorno es importante

De esta manera se optoacute por elegir dicho espacio virtual para ser replicado en una

versioacuten moacutevil que no soacutelo permita acercarlo a sus usuarios sino que ademaacutes ampliacutee sus

funciones en este caso puntualmente para la cartelera

Para el desarrollo de esta experimentacioacuten se desarrolloacute la misma aplicacioacuten para

los cinco tipos de enfoques de desarrollo moacutevil (web nativa hiacutebrida interpretada y

generada por compilacioacuten cruzada)

Se destaca la gran simpleza de generar la versioacuten web dado que se utilizan las

mismas herramientas tecnoloacutegicas que las usadas para el desarrollo de cualquier

aplicacioacuten web tradicional La principal diferencia en este sentido radica en la limitacioacuten

de espacio en la pantalla del dispositivo No obstante el mayor contraste estaacute dado en que

no es posible acceder a todas las capacidades de hardware del dispositivo lo que impidioacute

implementar uno de los requerimientos probablemente el maacutes interesante la notificacioacuten

de novedades de la cartelera de WebUNLP al usuario

Por otra parte las versiones nativas han cumplido todos los requerimientos Aunque

la mayor desventaja consiste en la no portabilidad lo que implicoacute un desarrollo especiacutefico

para la plataforma que se desee cubrir En este trabajo se han presentado los desarrollos

para Android e iOS sistemas operativos maacutes usados en Argentina con un costo de

desarrollo y mantenimiento inherente mayor

Para el caso del enfoque hiacutebrido tanto la versioacuten de WebUNLP desarrollada con

PhoneGap y Jquery Mobile como la versioacuten desarrollada con Sencha Touch han logrado

conjugar la simpleza del desarrollo web con el uso de todas las capacidades del

dispositivo Este tipo de enfoque pretende suplir las desventajas de los dos enfoques

previos hecho que lo posiciona como una eleccioacuten realmente interesante siempre

condicionada por los requerimientos especiacuteficos a cumplir

Por el lado del modo de desarrollo interpretado la versioacuten de WebUNLP

desarrollada con Titanium logroacute resolver todos los requerimientos previamente

planteados Al igual que en el enfoque hiacutebrido es un punto a destacar que el desarrollo

de la aplicacioacuten con Titanium es relativamente simple y es posible reutilizar todo el

Capiacutetulo 4 Experimentacioacuten

60

coacutedigo entre plataformas Lo que lo hace la eleccioacuten prima facie es el hecho de obtener

interfaces totalmente nativas algo que no se lograba mediante el enfoque hiacutebrido

Por uacuteltimo las versiones de WebUNLP generadas con el enfoque de compilacioacuten

cruzada con Xamarin y Delphi lograron cumplir los requerimientos planteados Se

destaca el hecho de que se genera interfaces totalmente nativas pero considero que el

costo es muy alto se debe disentildear las interfaces para cada plataforma de manera

independiente lo que hace que no se pueda reutilizar todo el coacutedigo fuente de la

aplicacioacuten

42 Enfoques de desarrollo Anaacutelisis comparativo de rendimiento 421 Descripcioacuten del Problema

Hace apenas unas deacutecadas atraacutes el uso de los sistemas de software estaba

restringido a un grupo reducido de usuarios especializados Aquella eacutepoca contrasta

fuertemente con la actualidad en la que los smartphones pequentildeas computadoras moacuteviles

de propoacutesito general se han vuelto cotidianos y omnipresentes Estos dispositivos pueden

utilizarse para llevar a cabo tareas complejas y criacuteticas requiriendo la mejora continua de

las capacidades de coacutemputo la disponibilidad el rendimiento eficiente entre otras

necesidades La evolucioacuten vertiginosa de esta tecnologiacutea ejerce presioacuten en la adaptacioacuten

de la Ingenieriacutea de Software

Respecto del desarrollo para dispositivos moacuteviles se debe considerar una serie de

caracteriacutesticas propias de esta actividad que no estaban presentes en el desarrollo

tradicional de software [59] Es necesario tener en cuenta sobre queacute tipo de dispositivos

se debe ejecutar la aplicacioacuten a construir La diversidad de plataformas lenguajes de

programacioacuten herramientas de desarrollo estaacutendares protocolos y tecnologiacuteas de red

algunas limitaciones de ciertos dispositivos y las exigencias de tiempo del mercado entre

otros constituyen algunos de los problemas a tratar

En la mayoriacutea de los casos el eacutexito de un producto de software para dispositivos

moacuteviles estaraacute condicionado por el nivel de popularidad que logre alcanzar Para

maximizar su presencia en el mercado es necesario que la aplicacioacuten pueda ejecutarse

sobre la mayor cantidad de plataformas moacuteviles existentes especialmente sobre las dos

maacutes populares Android e iOS [60] Para lograr este objetivo existen dos alternativas

Capiacutetulo 4 Experimentacioacuten

61

i) Desarrollar aplicaciones especiacuteficas para cada plataforma impulsando en

paralelo varios proyectos de desarrollo con las herramientas y lenguajes propios de cada

una de ellas Estas aplicaciones analizadas previamente en este trabajo se denominan

aplicaciones nativas

ii) Generar aplicaciones que puedan ejecutarse en forma directa sobre maacutes de una

plataforma de sistema operativo a partir de un uacutenico proyecto de desarrollo Estas

aplicaciones como ya se ha presentado en este trabajo se denominan aplicaciones

multiplataforma

En los uacuteltimos antildeos se ha incrementado el intereacutes de la comunidad de Ingenieriacutea de

Software por el estudio del desarrollo de aplicaciones multiplataforma para dispositivos

moacuteviles

En [5] se presenta un anaacutelisis comparativo de enfoques de desarrollo de aplicaciones

multiplataforma para dispositivos moacuteviles proponiendo la siguiente taxonomiacutea

aplicaciones web moacuteviles aplicaciones hiacutebridas aplicaciones interpretadas y

aplicaciones generadas por compilacioacuten cruzada

En [7] y [8] se analizan aspectos generales de frameworks de desarrollo

multiplataforma para dispositivos moacuteviles

En [61] se comparan aspectos no funcionales para los diferentes enfoques de

desarrollo de aplicaciones multiplataforma para dispositivos moacuteviles

En [9] se analizaron ventajas y desventajas de los enfoques de desarrollo

multiplataforma mencionados desde el punto de vista del Ingeniero de Software

La eleccioacuten del modo de desarrollo de aplicaciones para dispositivos moacuteviles

depende de varios factores Uno de ellos en muchos casos esencial es el tiempo de

ejecucioacuten El intereacutes por optimizar el tiempo de ejecucioacuten de una aplicacioacuten de software

es intriacutenseco a la disciplina informaacutetica Esto se evidencia entre otras cosas por la

evolucioacuten del poder de coacutemputo de los procesadores Ademaacutes el rendimiento eficiente

es uno de los atributos que las aplicaciones de software deben satisfacer seguacuten diversos

estaacutendares de calidad entre otros ISOIEC 9126 e ISOIEC 25010 [62]

En lo que respecta al desarrollo de aplicaciones para dispositivos moacuteviles es

oportuno considerar el tiempo de ejecucioacuten de las aplicaciones por diversos motivos

El tiempo de ejecucioacuten de una aplicacioacuten estaacute fuertemente ligado al consumo de

Capiacutetulo 4 Experimentacioacuten

62

energiacutea [63] el cual estaacute limitado por la capacidad de la bateriacutea de los dispositivos

Asimismo el rendimiento de las aplicaciones se ve reflejado principalmente

mediante las calificaciones de los usuarios en las tiendas de aplicaciones en liacutenea

Aplicaciones con bajo rendimiento pueden implicar usuarios disconformes produciendo

publicidad negativa [60] Andre Charland y Brian Leroux identifican al tiempo de

ejecucioacuten como uno de los problemas principales a resolver en el desarrollo de

aplicaciones multiplataforma y afirman que a los usuarios finales les preocupa la calidad

del software y la experiencia de uso [64]

Corral Sillitti y Succi realizaron un anaacutelisis de rendimiento comparativo entre

aplicaciones nativas y aplicaciones hiacutebridas utilizando el framework Phonegap para una

versioacuten del sistema operativo Android [65]

Es importante destacar que no se han encontrado estudios que evaluacuteen y comparen

el rendimiento entre los diversos modos de desarrollo multiplataforma de acuerdo a la

taxonomiacutea propuesta en [5] aplicaciones web moacuteviles aplicaciones hiacutebridas

aplicaciones interpretadas y aplicaciones generadas por compilacioacuten cruzada Esta

taxonomiacutea es la que se utiliza de referencia en este trabajo

El presente apartado realiza un anaacutelisis comparativo de rendimiento de aplicaciones

para dispositivos moacuteviles generadas por el enfoque de desarrollo nativo y los distintos

enfoques de desarrollo multiplataforma seguacuten [5]

En la seccioacuten siguiente se describe el experimento utilizado para evaluar tiempos

de ejecucioacuten en aplicaciones nativas y en los diversos modos de desarrollo de aplicaciones

moacuteviles multiplataforma y en las secciones posteriores se muestran y analizan los

resultados obtenidos se presentan las conclusiones y el trabajo futuro

422 Desarrollo

4221 Disentildeo de las pruebas

Todas las pruebas cuyos resultados se presentan en este trabajo fueron realizadas

sobre dispositivos moacuteviles con sistemas operativos Android e iOS dado que en la

actualidad abarcan gran parte del mercado mundial de acuerdo a lo indicado en [60]

Para llevar a cabo la experimentacioacuten se seleccionaron los frameworks de desarrollo

multiplataforma seguacuten las alternativas presentadas en [10] Se disentildearon pruebas para

evaluar el rendimiento de Apache Cordova [28] Appcelerator Titanium [35] y Xamarin

Capiacutetulo 4 Experimentacioacuten

63

[41] que se corresponden con los modos de desarrollo hiacutebrido interpretado y compilacioacuten

cruzada respectivamente Tambieacuten se experimentoacute con otros dos frameworks de

desarrollo multiplataforma que recientemente han ganado popularidad NativeScript

(desarrollo interpretado) y Corona (compilacioacuten cruzada) Finalmente se incluyeron al

conjunto de pruebas las aplicaciones web y el enfoque nativo de desarrollo para Android

e iOS De este modo se logroacute una muestra razonablemente representativa de las diversas

opciones existentes en la actualidad

Para la realizacioacuten de las pruebas se utilizaron seis dispositivos moacuteviles distintos

(ver Tabla 2) tres de ellos con sistema operativo Android identificados como DA1 DA2 y

DA3 (dos smartphone y una tablet) y tres con sistema operativo iOS identificados como

DI1 DI2 y DI3 (dos smartphone y una tablet)

ID Sistema Operativo Caracteriacutesticas

DA1 Android 44

Tipo Smartphone Marca Motorola

Modelo Moto-G2 Procesador Quad-core 12 GHz Cortex-A7

RAM 1GB Snapdragon 400

DA2 Android 502

Tipo Smartphone Marca Samsung

Modelo S6 Procesador Octa-core (4x21 GHz Cortex-A57 amp 4x15

GHz Cortex-A53) RAM 3GB Exynos 7420 Octa

DA3 Android 422

Tipo Tablet Marca Samsung Modelo Tab 2

Procesador Dual-core 10 GHz RAM 1GB TI OMAP 4430

DI1 iOS 92

Tipo Smartphone Marca Apple Modelo 5S

Procesador Dual-core 13 GHz Cyclone (ARM v8-based)

RAM 1GB Apple A7

DI2 iOS 91

Tipo Smartphone Marca Apple

Modelo 6 plus Procesador Dual-core 14 GHz Typhoon (ARM v8-

based) RAM 1GB Apple A8

DI3 iOS 91 Tipo Tablet

Marca Apple Modelo Ipad Air

Capiacutetulo 4 Experimentacioacuten

64

Procesador Dual-core 13 GHz Cyclone (ARM v8-based)

RAM 1GB Apple A7 Tabla 2 Dispositivos moacuteviles utilizados en el experimento

Se definieron siete escenarios de anaacutelisis distintos uno por cada estrategia de

desarrollo utilizada

1 Nativo para Android y nativo para iOS 2 Aplicaciones web (multiplataforma) 3 Apache Cordova (multiplataforma hibrido) 4 Appcelerator Titanium (multiplataforma interpretado) 5 NativeScript (multiplataforma interpretado) 6 Xamarin (multiplataforma compilacioacuten cruzada) 7 Corona (multiplataforma compilacioacuten cruzada)

En los seis dispositivos se llevaron a cabo pruebas para cada uno de los siete

escenarios mencionados definiendo asiacute un total de 42 casos de prueba

Con el fin de evaluar la velocidad de procesamiento se planteoacute un caacutelculo simple

que incluyoacute varias iteraciones funciones matemaacuteticas y aritmeacutetica de punto flotante que

se resume en la siguiente serie

119904119890119903119894119890 =sum sum (log2(119896) +3119896

2119895+ radic119896

100000

119896=1

+ 119896119895minus1)

5

119895=1

A modo de ejemplo en la Figura 25 se muestra el coacutedigo multiplataforma

desarrollado en Apache Cordova para el caacutelculo de la serie definida

El experimento planteado permite medir con precisioacuten la variable analizada en este

caso el tiempo de ejecucioacuten requerido para realizar un caacutelculo matemaacutetico intensivo

Este tipo de caacutelculo matemaacutetico es frecuente en diversas aplicaciones que se

ejecutan en dispositivos moacuteviles por ejemplo juegos aplicaciones con realidad

aumentada aplicaciones para tratamiento de imaacutegenes entre otras en las cuales no

siempre es posible utilizar el poder de la Unidad de Procesamiento Grafico (GPU) para

el caacutelculo

El coacutedigo fuente de los experimentos llevados a cabo se encuentra disponible en

[66]

En las siguientes secciones se describe la experimentacioacuten y se analizan los

resultados obtenidos

Capiacutetulo 4 Experimentacioacuten

65

4222 Recoleccioacuten de datos

Para cada uno de los 42 casos de prueba definidos se realizaron 30 ejecuciones

independientes del experimento disentildeado obteniendo en cada caso una muestra T = T1

T2 hellip T30 con Ti = tiempo requerido para el caacutelculo de la serie en la i-eacutesima ejecucioacuten

del experimento planteado El tiempo Ti se expresa en milisegundos

Para caracterizar cada una de las muestras obtenidas se han calculado los

estadiacutesticos y S que se corresponden con la media (o promedio muestral) y la

desviacioacuten estaacutendar muestral (ver Tabla 3)

var startTime = new Date()getTime()

var serie = 0

for ( var j=1 j lt= 5 j++ )

for ( var k=1 k lt= 100000 k++ )

series = series + (Mathlog(k)MathLN2) + (3k2j) +

Mathsqrt(k) + Mathpow(k j-1)

var finalTime = new Date()getTime()

var duration = finalTime - startTime

documentgetElementById(result)innerHTML = duration + -gt + series

Figura 25 Caacutelculo de serie coacutedigo multiplataforma desarrollado en Apache Cordova

Capiacutetulo 4 Experimentacioacuten

66

Dada la muestra T=T1 T2 hellip Tn

Media o promedio muestral = (

1

119899)sum119879119894

119899

119894=1

Desviacioacuten estaacutendar muestral 119878 = radic

1

119899 minus 1sum(119879119894 minus )2119899

119894=1

Tabla 3 Estadiacutesticos utilizados en el anaacutelisis de los datos

423 Resultados Obtenidos En la Tabla 4 se presenta una siacutentesis de los resultados obtenidos conformada por

los valores y S calculados para cada caso de prueba planteado Estos valores permiten

comparar el rendimiento de las aplicaciones generadas a partir de los distintos enfoques

de desarrollo evaluadas sobre cada uno de los seis dispositivos utilizados

Los valores presentados en la Tabla 4 y graficados con diagramas de barras en la

Figura 26 sugieren un anaacutelisis por separado de los casos con sistema operativo Android

y los casos con sistema operativo iOS Claramente las siluetas delineadas en los

diagramas de barras de la Figura 26 se repiten de forma similar en los escenarios con el

mismo sistema operativo pero se diferencian notablemente entre distintos sistemas

operativos

Nativo WebApp Apache Cordova Titanium NativeScript Xamarin Corona

DA1 53293 18627 23033 21167 18730 39517 140173

S 1614 632 1422 2495 939 895 1260

DA2 21180 9067 8577 9563 8967 21100 60053

S 1997 1248 883 764 916 669 595

DA3 76380 17273 19060 19270 18350 37933 134430

S 2898 1551 936 1680 304 831 2339

DI1 413 5710 32373 29977 25203 12543 3963

S 078 1655 1662 401 728 1103 085

DI2 413 4190 26397 24113 22343 10303 9863

S 073 538 1544 495 861 491 613

DI3 253 4167 29223 27267 22597 11053 10967

S 057 444 1082 550 277 390 275

Tabla 4 Siacutentesis de resultados obtenidos

Capiacutetulo 4 Experimentacioacuten

67

Figura 26 Diagrama de barras con las muestras recolectadas (las barras muestran el tiempo promedio expresado en milisegundos)

Capiacutetulo 4 Experimentacioacuten

68

424 Anaacutelisis de Resultados Debido a las diferencias de hardware de los dispositivos utilizados no es prudente

comparar el rendimiento de las aplicaciones nativas en Android con respecto a las de

iOS No obstante de los resultados obtenidos es posible inferir que el enfoque nativo en

iOS resulta mucho maacutes eficiente que el enfoque nativo en Android Existen diversos

factores que presumen justificar este hecho entre ellos la diferencia inherente de ejecutar

coacutedigo Objective C en iOS comparado con ejecutar coacutedigo Java en Android el cual

necesita del Android Runtime (ART) para su funcionamiento ralentizaacutendolo

Respecto de las aplicaciones web multiplataforma los resultados de rendimiento

resaltaron positivamente en relacioacuten al resto tanto en Android como en iOS Asiacute el

enfoque de desarrollo multiplataforma web seriacutea una opcioacuten conveniente para alcanzar

un buen rendimiento en todos los dispositivos moacuteviles independientemente de su sistema

operativo Sin embargo esta eleccioacuten podriacutea verse afectada por las limitaciones de estas

aplicaciones para acceder en forma completa a las capacidades especiacuteficas del dispositivo

Respecto de los enfoques hiacutebrido e interpretado -analizados a traveacutes de las

tecnologiacuteas Coacuterdova Titanium y NativeScript- es importante destacar que si bien estos

enfoques trabajan de modo distinto entre siacute tienen algo en comuacuten la ejecucioacuten de coacutedigo

JavaScript En este sentido el motor de JavaScript -encargado de convertir el coacutedigo

JavaScript en coacutedigo optimizado para que luego lo interprete un WebView- cumple un

rol determinante Las pruebas de estos enfoques en Android -que utiliza el motor de

JavaScript V8- tuvieron un comportamiento similar al enfoque web y comportamiento

superior que el enfoque nativo y el enfoque de compilacioacuten cruzada Por el contrario en

los dispositivos moacuteviles con iOS -que utiliza el motor JavaScriptCore- los resultados de

estas pruebas fueron peores que en los enfoques nativos web y de compilacioacuten cruzada

En los dispositivos moacuteviles con iOS los casos de compilacioacuten cruzada -analizados

a traveacutes de las tecnologiacuteas Xamarin y Corona- obtuvieron mejores resultados que los

casos hiacutebridos e interpretados pero mostraron peor rendimiento que el enfoque nativo y

que el enfoque web En cambio en los dispositivos moacuteviles con Android los resultados

de las pruebas con las aplicaciones construidas mediante el enfoque de compilacioacuten

cruzada fueron los peores La necesidad de ejecucioacuten de coacutedigo Java a traveacutes del Android

Runtime entre otros factores justifican este resultado

Capiacutetulo 4 Experimentacioacuten

69

425 Conclusiones Se ha presentado un estudio comparativo sobre el tiempo de procesamiento de

aplicaciones de software para dispositivos moacuteviles generadas con distintos enfoques de

desarrollo

Los escenarios de prueba disentildeados incluyeron los dos sistemas operativos para

dispositivos moacuteviles con mayor presencia en el mercado Android e iOS ejecutaacutendose

cada uno de ellos sobre dos smartphones (considerados de gama media y gama alta al

momento en que este trabajo fue escrito) y una Tablet

Sobre estos seis dispositivos se realizoacute un estudio de rendimiento para las

aplicaciones construidas seguacuten los enfoques de desarrollo nativos y multiplataforma

mediante un conjunto de aplicaciones que fueron desarrolladas para tal fin

1 Aplicacioacuten nativa para Android 2 Aplicacioacuten nativa para iOS 3 Aplicacioacuten web (multiplataforma) 4 Aplicacioacuten Apache Cordova (multiplataforma hibrido) 5 Aplicacioacuten Appcelerator Titanium 6 (multiplataforma interpretado) 7 Aplicacioacuten NativeScript (multiplataforma interpretada) 8 Aplicacioacuten Xamarin (multiplataforma compilacioacuten cruzada) 9 Aplicacioacuten Corona (multiplataforma compilacioacuten cruzada)

En todos los dispositivos con sistema operativo Android el peor rendimiento fue

evidenciado por Corona seguido por el enfoque nativo y Xamarin Esta situacioacuten es

totalmente opuesta a los resultados obtenidos sobre el sistema operativo iOS en doacutende las

tecnologiacuteas de desarrollo mencionadas se mostraron siempre entre las cuatro mejores En

particular es destacable la supremaciacutea del enfoque nativo frente a todos los demaacutes para el

caso de los dispositivos con iOS

Respecto al mejor rendimiento en los dispositivos Android no es posible identificar

claramente cuaacutel es el enfoque maacutes conveniente Tanto las aplicaciones web como

Coacuterdova NativeScript y Titanium alcanzaron buenos resultados en relacioacuten al resto

Nuevamente esta situacioacuten se contrapone con los datos obtenidos sobre los dispositivos

iOS en los que Coacuterdova Titanium y NativeScript obtuvieron las peores mediciones entre

las tecnologiacuteas utilizadas No ocurrioacute lo mismo con las aplicaciones web en iOS que

tambieacuten produjeron buenos resultados en relacioacuten al resto

Capiacutetulo 4 Experimentacioacuten

70

En liacuteneas generales independientemente del sistema operativo las aplicaciones

web han mostrado un buen rendimiento si se consideran todos los casos analizados

Actualmente al desarrollar un sistema de software existe la posibilidad de generar

su versioacuten para dispositivos moacuteviles Esta tarea muchas veces no es simple y una de las

decisiones maacutes importantes a tomar es elegir el enfoque de desarrollo

A partir de este trabajo se dispone de un indicador de rendimiento que puede ser

uacutetil para el Ingeniero de Software que debe seleccionar un enfoque de desarrollo de

software para dispositivos moacuteviles

Por otra parte no se han encontrado trabajos de otros autores donde se haya

analizado el rendimiento en todos los enfoques de desarrollo de software para dispositivos

moacuteviles Este tema tal como se indicoacute en la introduccioacuten es importante para la

comunidad de Ingenieriacutea de Software y los trabajos analizados hasta el momento se han

concentrado solo en los enfoques nativos yo hiacutebridos

43 Anaacutelisis comparativo de enfoques de Desarrollo de Aplicaciones Moacuteviles

Como se estudioacute en las secciones anteriores existen diferentes enfoques de

desarrollo de aplicaciones moacuteviles

Una opcioacuten es desarrollar aplicaciones moacuteviles nativas las cuales hacen uso de

todas las capacidades del dispositivo moacutevil y permiten una alta experiencia de usuario

debido a que las interfaces de usuario se componen por componentes nativos resultando

semejantes al resto de las interfaces del sistema operativo No obstante el desarrollo no

puede ser reutilizado para dar soporte a otras familias de sistemas operativos implicando

mayores costos de desarrollo y mantenimiento

En contraposicioacuten al desarrollo nativo surgioacute el desarrollo multiplataforma dando

la posibilidad de desarrollar un uacutenico producto y ejecutarlo en diferentes plataformas En

este sentido se estudiaron diferentes enfoques desarrollo web moacutevil hiacutebrido

interpretado y generado por compilacioacuten cruzada Cada uno de estos enfoques cuenta con

ciertas caracteriacutesticas que naturalmente los hacen diferenciar con ventajas y

desventajas

Se identificaron diversos factores que pueden ser utilizados para analizar las

Capiacutetulo 4 Experimentacioacuten

71

aplicaciones que se generan mediante los enfoques de desarrollo nativo y

multiplataforma los cuales se detallan a continuacioacuten

Experiencia de usuario conjunto de factores y elementos que hacen referencia

al nivel de satisfaccioacuten total de los usuarios cuando utilizan un producto o sistema

El resultado es la generacioacuten de una percepcioacuten positiva o negativa de dicho

servicio producto o dispositivo

Plataformas alcanzadas se ha visto en capiacutetulos anteriores que existen distintas

familias de sistemas operativos Seguacuten el modo de desarrollo elegido se puede

desarrollar aplicaciones para una plataforma especiacutefica o por varias

Costo del desarrollo el desarrollo puede ser maacutes o menos costoso seguacuten si

requiere codificar las soluciones de forma especiacutefica para cada sistema operativo

o si es posible la reutilizacioacuten de coacutedigo

Costo del mantenimiento la correccioacuten de errores o agregados de nuevas

funcionalidades puede requerir codificar de forma especiacutefica para cada sistema

operativo Ademaacutes se debe tener en cuenta si deben convivir diferentes versiones

del mismo producto

Entorno de desarrollo integrado Software que asiste al programador en la

construccioacuten de aplicaciones

Interfaces de usuario factor que analiza los tipos de componentes utilizados para

construir las interfaces de usuario Como se mencionoacute al analizar los distintos

enfoques de desarrollo la eleccioacuten de la herramienta a utilizar incide en si las

interfaces estaraacuten compuestas mediante componentes nativos o componentes web

los cuales pueden ser decorados para simular componentes nativos

Acceso total al dispositivo posibilidad de acceder mediante las herramientas de

desarrollo a todas las capacidades del dispositivo como la caacutemara sensores entre

otros

Modo de instalacioacuten se refiere a si la aplicacioacuten puede ser instalada desde las

tiendas de aplicaciones o es accesible sin instalacioacuten desde un navegador de

Internet

Rendimiento factor que analiza la ejecucioacuten de tareas y los tiempos asociados

Capiacutetulo 4 Experimentacioacuten

72

en su resolucioacuten

Uso offline capacidad que tiene la aplicacioacuten de funcionar sin estar conectada a

internet

Distribucioacuten a traveacutes de las tiendas posibilidad de descargar la aplicacioacuten desde

las tiendas de aplicaciones

Categoriacuteas de aplicaciones a desarrollar tipo de aplicacioacuten que se desea

desarrollar

Porcentaje de coacutedigo a reutilizar Cantidad de liacuteneas de coacutedigo con respecto al

total que pueden ser reutilizadas para en la generacioacuten de aplicaciones

multiplataforma

Con el objetivo de estudiar coacutemo se comportan e inciden estos factores en los

distintos enfoques de desarrollo se realizoacute un estudio comparativo de los diferentes

criterios a tener en cuenta Dicho estudio se sintetiza en la Tabla 5

Capiacutetulo 4 Experimentacioacuten

73

Factor a analizar Desarrollo Nativo Desarrollo Web Desarrollo Hiacutebrido Desarrollo

Interpretado

Desarrollo Generado

por Compilacioacuten

Cruzada

Experiencia de Usuario

Alta Muy Baja Baja Alta Alta

Plataformas alcanzadas

Se desarrolla

exclusivamente

para una

plataforma destino

Cualquier

plataforma Se

necesita solo un

navegador y acceso a

internet

Es posible compilar

para Android iOS

Windows Phone

Es posible compilar

para Android iOS

Windows Phone

Es posible compilar

para Android iOS

Windows Phone

Costo del desarrollo

Muy Alto Muy Bajo Bajo Medio Medio a Alto

Costo del mantenimiento

Muy Alto Muy Bajo Medio Alto Alto a Muy Alto

Entorno de desarrollo integrado

IDE uacutenico por SO Muacuteltiples opciones Plugins para IDE

geneacutericos

Algunos frameworks

disponen de IDE

especiacutefico

IDE uacutenico por

framework

Interfaces de usuario

Nativas Web Web Nativas Nativas

Acceso total al dispositivo

Si No Si Si Si

Modo de instalacioacuten

Descargar desde la Sin instalaciones Descargar desde la Descargar desde la Descargar desde la

Capiacutetulo 4 Experimentacioacuten

74

Factor a analizar Desarrollo Nativo Desarrollo Web Desarrollo Hiacutebrido Desarrollo

Interpretado

Desarrollo Generado

por Compilacioacuten

Cruzada

tienda de

aplicaciones e

instalar

tienda de aplicaciones

e instalar

tienda de aplicaciones e

instalar

tienda de aplicaciones e

instalar

Rendimiento Muy Alto Muy Bajo Bajo a Medio Alto Medio a Alto

Uso offline Si No Si Si Si

Distribucioacuten a traveacutes de las tiendas

Si No Si Si Si

Categoriacutea de aplicaciones a desarrollar

Aplicaciones que

demandan muchos

recursos o que

requiere una alta

experiencia de

usuario

Sitios web existentes Sitios web

encapsulados como

aplicacioacuten para ser

distribuidas a traveacutes

de tiendas

Aplicaciones simples a

complejas

Aplicaciones simples a

complejas

Porcentaje de Coacutedigo a reutilizar

0 100 Cerca del 100 Cerca del 90 Entre el 60 y 85

Tabla 5 Anaacutelisis comparativo de enfoques de desarrollo de aplicaciones moacuteviles

Capiacutetulo 5 Conclusiones

75

Capiacutetulo 5 Conclusiones

Inicialmente los dispositivos moacuteviles fueron pensados y disentildeados con un propoacutesito

particular A traveacutes de los antildeos el crecimiento tecnoloacutegico ha permitido incorporar

funcionalidades adicionales lo que ha posibilitado expandir el marco de uso

Actualmente el poder de coacutemputo subyacente en una gran variedad de dispositivos

moacuteviles ha generado nuevas posibilidades lo que constituye un reto para los ingenieros

de software

Asimismo y tal como se mencionoacute en capiacutetulos anteriores existen diversos

sistemas operativos para dispositivos moacuteviles siendo los maacutes populares Android iOS y

Windows Phone Debido a que el eacutexito de un producto de software estaacute vinculado en

gran parte a su uso masivo surge la necesidad de desarrollar aplicaciones moacuteviles

teniendo en cuenta cada una de estas plataformas

El desarrollo de software para dispositivos moacuteviles tiene caracteriacutesticas propias que

difieren del desarrollo tradicional Esta actividad reciente impensada deacutecadas atraacutes

marca un antes y un despueacutes en la evolucioacuten de la Ingenieriacutea de Software Es de esperar

que dicha evolucioacuten continuacutee y por consiguiente que los enfoques de desarrollo para

dispositivos moacuteviles cambien o sean reemplazados por otros Es claro que por el

momento existen cinco posibilidades de desarrollo de una misma aplicacioacuten moacutevil

Aplicaciones nativas

Aplicaciones web

Aplicaciones hiacutebridas

Aplicaciones interpretadas

Aplicaciones generadas por compilacioacuten cruzada

Para un completo anaacutelisis de cada enfoque de desarrollo es que se disentildearon una

serie de casos de estudio El primero de ellos consistioacute en desarrollar una aplicacioacuten moacutevil

para cada enfoque de desarrollo presentado Teniendo este primer objetivo definido se

decidioacute extender el entorno virtual de ensentildeanza y aprendizaje WebUNLP a traveacutes de

una aplicacioacuten moacutevil enfocada en la cartelera de novedades de los cursos La aplicacioacuten

Capiacutetulo 5 Conclusiones

76

moacutevil debiacutea permitir el ingreso de alumnos y docentes con las mismas credenciales que

las utilizadas en la versioacuten web y debiacutea mostrar informacioacuten sincronizada con la web

sobre las novedades publicadas en las carteleras de los cursos Asimismo cuando los

docentes publiquen novedades aquellos alumnos pertenecientes al curso deben recibir

una notificacioacuten en su dispositivo moacutevil

Luego de desarrollar las aplicaciones moacuteviles para cada enfoque de desarrollo se

pueden elaborar algunas conclusiones

Se destaca la simpleza a la hora de generar la versioacuten web moacutevil pero se observan

limitaciones al no poder acceder a todas las capacidades de hardware del dispositivo

El desarrollo de las aplicaciones nativas resultoacute oacuteptimo si se lo compara con los

requerimientos oportunamente planteados con la desventaja de que las aplicaciones no

son portables implicando desarrollos especiacuteficos para cada plataforma que se desee

cubrir Por otro lado el desarrollo de las aplicaciones hibridas ndashutilizando PhoneGap y

Sencha- lograron conjugar la simpleza del desarrollo web con el uso de todas las

capacidades del dispositivo posicionaacutendolo como una eleccioacuten realmente interesante De

igual manera la aplicacioacuten interpretada desarrollada mediante Titanium logroacute resolver

todos los requerimientos previamente planteados se destaca que el desarrollo fue

relativamente simple y es posible reutilizar todo el coacutedigo entre plataformas El hecho de

obtener interfaces totalmente nativas la posiciona como la alternativa ideal Por uacuteltimo

las aplicaciones generadas con el enfoque de compilacioacuten cruzada (Delphi y Xamarin)

lograron cumplir los requerimientos planteados la obtencioacuten de interfaces totalmente

nativas es algo a destacar pero conlleva un alto costo ya que se debe disentildear las interfaces

para cada plataforma de manera independiente

El segundo experimento del presente trabajo consistioacute en analizar el rendimiento

de las aplicaciones generadas mediante cada enfoque de desarrollo En total se

desarrollaron mediante distintas tecnologiacuteas nueve aplicaciones Las pruebas se

realizaron en los dos sistemas operativos de mayor relevancia Android e iOS a traveacutes de

seis dispositivos (cuatro smartphones y dos tablets)

En todos los dispositivos con sistema operativo Android el peor rendimiento se

encontroacute en la aplicacioacuten generada por Corona seguido por el enfoque nativo y Xamarin

En cambio estas tecnologiacuteas se mostraron siempre entre las cuatro mejores sobre el

sistema operativo iOS

Capiacutetulo 5 Conclusiones

77

Respecto al mejor rendimiento en los dispositivos Android no es posible identificar

claramente cuaacutel es el enfoque maacutes conveniente Tanto las aplicaciones web como

Coacuterdova NativeScript y Titanium obtuvieron buenos resultados de rendimiento en

relacioacuten al resto Nuevamente esta situacioacuten se contrapone con los datos obtenidos sobre

los dispositivos iOS en los que Coacuterdova Titanium y NativeScript obtuvieron las peores

mediciones entre las tecnologiacuteas utilizadas No ocurrioacute lo mismo con las aplicaciones web

en iOS que tambieacuten produjeron buenos resultados en relacioacuten al resto

En liacuteneas generales independientemente del sistema operativo las aplicaciones

web han mostrado un buen rendimiento si se consideran todos los casos analizados

Por uacuteltimo se elaboroacute un anaacutelisis comparativo de las caracteriacutesticas inherentes a

cada enfoque de desarrollo Se identificaron ciertos factores de intereacutes que la comunidad

de ingenieriacutea de software considera al elegir queacute tecnologiacutea utilizar y se analizoacute su

impacto en cada enfoque de desarrollo

Capiacutetulo 6 Trabajo Futuro

78

Capiacutetulo 6 Trabajo Futuro

Si bien se estudiaron en el presente trabajo diversas tecnologiacuteas para el desarrollo

de aplicaciones moacuteviles se planea profundizar el estudio analizando otras herramientas

multiplataforma disponibles en el mercado como Ionic [32] NativeScript [38] Applause

[40] React Native [67] entre otras

Ademaacutes se plantea como liacutenea de trabajo futuro ampliar el anaacutelisis comparativo de

rendimiento incluyendo otros aspectos del desarrollo para dispositivos moacuteviles como

por ejemplo el acceso a disco el consumo de bateriacutea y el tiempo de renderizacioacuten de

imaacutegenes

Por uacuteltimo es deseable estudiar la experiencia de usuario en las aplicaciones

generadas por cada enfoque de desarrollo de aplicaciones para dispositivos moacuteviles

Capiacutetulo 6 Trabajo Futuro

79

Bibliografiacutea

80

Bibliografiacutea

[1] A Talukder H Ahmed and R Yavagal Mobile Computing Technology Applications and Service Creation Tata McGraw-Hill Ed 2010

[2] Abrahamsson P et al Mobile-D An Agile Approach for Mobile Application Development in In Companion To the 19th Annual ACM SIGPLAN Conference on Object-Oriented Programming Systems Languages and Applications (OOPSLA 04 ) Vancouver Canada 2004 pp 174-175

[3] P Abrahamsson Mobile software development - the business opportunity of today in Proceedings of the International Conference on Software Development Reykjavik 2005

[4] I S Hayes Just Enough Wireless Computing Prentice Hall Professional Technical 2002

[5] Stelios Xinogalos Spyros Xanthopoulos A Comparative Analysis of Cross-platform Development Approaches for Mobile Applications in Proceedings of the 6th Balkan Conference in Informatics Thessaloniki Greece 2013 pp 213-220

[6] Tolety SB Raj R A study on approaches to build cross-platform mobile applications and criteria to select appropriate approach in India Conference (INDICON) 2012 Annual IEEE India 2012

[7] Yonathan Aklilu Redda Cross platform Mobile Applications Development in Master in Information Systems Norwegian University of Science and Technology Norway 2012

[8] Datta SK Bonnet C Nikaein N Dalmasso I Survey comparison and evaluation of cross platform mobile application development tools in Wireless Communications and Mobile Computing Conference (IWCMC) Cagliari Sardinia Italia 2013

[9] Lisandro Deliacutea Nicolaacutes Galdaacutemez Pablo Thomas and Patricia Pesado An Experimental Analysis of Application Types for Mobile Devices in Computer Science amp Technology Series - XIX Argentine Congress of Computer Science - Selected Papers Editorial de la Universidad de La Plata 2014 pp 173 -183

[10] Lisandro Deliacutea Nicolaacutes Galdamez Pablo Thomas Leonardo Corbalaacuten and Patricia Pesado Multi-Platform Mobile Application Development Analysis in IEEE Ninth International Conference on Research Challenges in Information Science - IEEE RCIS Atenas Grecia May 2015

[11] Telam [Online] httpwwwtelamcomarnotas201504102073-telefonia-movil-lineas-activashtml

Bibliografiacutea

81

[12] RTVE [Online] httpwwwrtveesnoticias20110212evolucion-del-telefono-movil-del-zapatofono-smartphones404523shtml

[13] Vodafone [Online] httpblogvodafonecouk20130829vodafone-uks-ceo-guy-laurence-4g-finally-has-a-purpose

[14] Muy Canal [Online] httpwwwmuycanalcom20140131futuro-del-telefono-movil

[15] Statcounter [Online] httpgsstatcountercom

[16] Anthony I Wasserman Software Engineering Issues for Mobile Application Development 2010

[17] Statista [Online] httpwwwstatistacom

[18] Lisandro Deliacutea Nicolaacutes Galdamez Pablo Thomas Leonardo Corbalaacuten and Patricia Pesado Anaacutelisis Experimental de desarrollo de Aplicaciones Moacuteviles Multiplataforma in XX Congreso Argentino de Ciencias de la Computacioacuten CACIC 2014 San Justo Argentina octubre 2014

[19] Lisandro Deliacutea Nicolaacutes Galdamez Pablo Thomas and Patricia Pesado Un Anaacutelisis Experimental de Tipo de Aplicaciones para Dispositivos Moacuteviles in XIX Congreso Argentino de Ciencias de la Computacioacuten CACIC 2013 Mar del Plata Argentina 2013

[20] Abhinay Puvvala Amitava Dutta Rahul Roy and Priya Seetharaman Mobile Application Developersrsquo Platform Choice Model in 2016 49th Hawaii International Conference on System Sciences (HICSS) Koloa Hawaii 2016

[21] Android Dashboard [Online] httpsdeveloperandroidcomaboutdashboardsindexhtml

[22] Xcode [Online] httpsdeveloperapplecomxcode

[23] KW Tracy Mobile Application Development Experiences on Applersquos iOS and

Android OS Potentials IEEE vol 31 no 4 July-Aug 2012

[24] Google Recommendations for building smartphone-optimized websites [Online] httpgooglewebmastercentralblogspotcomar

[25] Bootstrap [Online] httpgetbootstrapcom

[26] Foundation [Online] httpfoundationzurbcom

[27] PhoneGap [Online] httpphonegapcom

[28] Apache Cordova [Online] httpscordovaapacheorg

Bibliografiacutea

82

[29] Adobe PhoneGap Build [Online] httpsbuildphonegapcom

[30] CocoonJS [Online] httpscocoonio

[31] Ludei [Online] httpswwwludeicom

[32] Ionic [Online] httpionicframeworkcom

[33] Sencha [Online] httpswwwsenchacomproductstouchoverview

[34] A Kosmaczewski Sencha Touch 2 Up and Running OrsquoReilly 2013

[35] Appcelerator Titanium [Online] httpwwwappceleratorcomproduct

[36] Backbone [Online] httpbackbonejsorg

[37] Underscorejs [Online] httpunderscorejsorg

[38] NativeScript [Online] httpswwwnativescriptorg

[39] TypeScript [Online] httpswwwtypescriptlangorg

[40] applause [Online] httpwwwapplausecom

[41] Xamarin [Online] wwwxamarincom

[42] Delphi [Online] httpswwwembarcaderocomproductsdelphi

[43] RubyMotion [Online] httpwwwrubymotioncom

[44] Xtext [Online] httpwwweclipseorgXtext

[45] Mono [Online] httpwwwmono-projectcom

[46] [Online] httpswebunlpeadunlpeduar

[47] I Salmre Writing Mobile Code Essential Software Engineering for Building Mobile Applications Addison Wesley Professional 2005

[48] Mapbox [Online] httpswwwmapboxcomlabstwitter-gnipbrands

[49] Ruby S Richardson L RESTful Web Services OrsquoReilly Media 2007

[50] Matthew J Hamm Wireframing Essentials Packt Publishing 2014

[51] GCM [Online] httpsdevelopersgooglecomcloud-messaging

[52] iOS Human Interface Guidelines [Online] httpsdeveloperapplecomioshuman-interface-guidelinesoverviewdesign-principles

[53] APN [Online] httpdeveloperapplecomlibrarymacdocumentationNetworkingInternetConceptual

Bibliografiacutea

83

RemoteNotificationsPGChaptersApplePushServicehtmlapple_refdocuidTP40008194-CH100-SW9

[54] Mark Norm Norman Francis Christian Heilmann Web Development Solutions Ajax APIs Libraries and Hosted Services Made Easy Apress 2007

[55] JqueryMobile [Online] httpsjquerymobilecom

[56] Pushwoosh [Online] httpsgithubcomPushwooshpushwoosh-phonegap-plugin

[57] J Clark Creating Mobile Apps with Sencha Touch 2 Packt Publishing 2013

[58] Kinvey [Online] httpwwwkinveycom

[59] Ali Mesbah Philippe Kruchten Mona Erfani Joorabchi Real Challenges in Mobile App Development in ACM IEEE International Symposium on Empirical Software Engineering and Measurement Baltimore Maryland US 2013

[60] Andreacute Nitze Andreas Schmietendorf Florian Roumlsler Towards a Mobile Application Performance Benchmark in ICIW 2014 The Ninth International Conference on Internet and Web Applications and Services Paris France 2014

[61] Sebastian Hanschke and Tim A Majchrzak Henning Heitkoumltter Comparing Cross Platform Development approaches For Mobile Applications in 8th International Conference on Web Information Systems and Technologies (WEBIST) Porto Portugal 2012

[62] HW Kim SG Chung CS Jung Measuring Software Quality A Survey of ISOIEC 9126 IEEE Software vol 21 no 5 pp 88 ndash 92 SeptemberOctober 2004

[63] Luis Corral Anton B Georgiev Alberto Sillitti and Giancarlo Succi Can execution time describe accurately the energy consumption of mobile apps An experiment in Android GREENS 2014 Proceedings of the 3rd International Workshop on Green and Sustainable Software pp 31-37 June 2014

[64] Brian Leroux Andre Charland Mobile application development web vs native Magazine Communications of the ACM vol 54 no 5 pp 49-53 May 2011

[65] Luis Corral Alberto Sillitti and Giancarlo Succi Mobile multiplatform development An experiment for performance analysis in The 9th International Conference on Mobile Web Information Systems (MobiWIS) Ontario Canada 2012

[66] Repositorio Git III-LIDI [Online] httpsgitlabcomiii-lidiperformance-assessment-multiplatform-mobile-applicationstreemaster

[67] React Native [Online] httpsfacebookgithubioreact-native

[68] Lisandro Galdaacutemez Nicolaacutes Corbalaacuten Leonardo Thomas Pablo Pesado Patricia Deliacutea Un anaacutelisis comparativo de rendimiento en aplicaciones moacuteviles

Bibliografiacutea

84

multiplataforma in XXI Congreso Argentino de Ciencias de la Computacioacuten Juniacuten 2015

Page 13: Desarrollo de Aplicaciones Móviles Multiplataforma

Capiacutetulo 1 Tecnologiacutea Moacutevil

13

12 Evolucioacuten de los protocolos para redes de comunicaciones

Hubiera sido imposible el auge de los teleacutefonos moacuteviles sin la estandarizacioacuten

mejora y evolucioacuten de los protocolos para redes de comunicaciones y su soporte por las

operadoras Asiacute tras las primeras comunicaciones viacutea ondas de radio con banda de

frecuencias por debajo de los 600 kHz las posteriores en AM y FM los servicios de Bell

y Ericsson en los antildeos 50 y 60 llegoacute esa primera llamada de 1973 que popularizoacute todo el

sector

La primera generacioacuten 1G fue responsabilidad de Ericsson con el sistema Telefoniacutea

Moacutevil Noacuterdica (NMT) y seguiacutea utilizando canales analoacutegicos En 1986 la compantildeiacutea

modernizoacute el sistema funcionando a frecuencias superiores de 900 MHz posibilitando

servicio para un mayor nuacutemero de usuarios Ademaacutes del NMT en los 80 se desarrollaron

otros sistemas de telefoniacutea moacutevil como el Sistema Telefoacutenico Moacutevil Avanzado (AMP)

desarrollado por los laboratorios Bell

La segunda generacioacuten 2G llegoacute en la deacutecada de los 90 con sistemas como Global

System for Mobile Communications (GSM) Estaacutendar Interno 136 (IS-136) Red

Mejorada Digital Integrada (iDEN) y el Estaacutendar Interno 95 (IS-95) GSM fue el

desarrollo maacutes relevante ya que fue el estaacutendar europeo de telefoniacutea moacutevil digital En el

proyecto participaron 26 compantildeiacuteas europeas de telecomunicaciones y en 1992 se

pusieron en marcha las primeras redes europeas de GSM-900 y los primeros teleacutefonos

moacuteviles GSM Ademaacutes de Europa GSM ha terminado imponieacutendose tambieacuten en Asia

Ameacuterica Latina Oceaniacutea y una parte de Ameacuterica del Norte

La necesidad de mayores velocidades de transmisioacuten de datos y mayores

capacidades que permitieran nuevos servicios dieron paso a la Tercera Generacioacuten (3G)

no sin antes pasar por el 25G que proporcionoacute el General Packet Radio Service (GPRS)

El estaacutendar europeo es el Universal Mobile Telecommunications System (UMTS) basado

en la tecnologiacutea W-CDMA y estaacute gestionado por la organizacioacuten 3GPP tambieacuten

responsable de GSM GPRS y Enhanced Data Rates for GSM Evolution (EDGE)

La Cuarta Generacioacuten (4G) sucede a las tecnologiacuteas 2G y 3G y ofrece entre otras

mejoras mayor seguridad y Calidad de Servicio (QoS) junto a velocidades de acceso

muy superiores a las anteriores (mayores a 100 Mbits en movimiento y a 1 Gbits en

Capiacutetulo 1 Tecnologiacutea Moacutevil

14

reposo) Estaacute basada completamente en el protocolo IP siendo un sistema de sistemas y

una red de redes que se alcanza gracias a la convergencia entre las redes de cables e

inalaacutembricas Seguacuten Vodafone ldquoel 4G tiene finalmente una razoacuten y es el entretenimientordquo

[13] La norma Long Term Evolution (LTE) es la maacutes extendida aunque no la uacutenica

existente

5G seraacute la nueva revisioacuten del sistema de conexioacuten de red sin cables y se espera que

esteacute disponible en el antildeo 2020 (Figura 3) en paiacuteses como Corea del Sur como asiacute tambieacuten

en Europa Como 4G la mayor velocidad de transferencia seraacute su mayor avance con

velocidades de descarga de hasta 10 Gbps (125 GBs) [14]

Figura 3 Evolucioacuten de los protocolos para redes de comunicacioacuten moacuteviles

13 La actualidad

Muchas de las actividades que un tiempo atraacutes soliacutean hacerse desde una

computadora tales como revisar el correo electroacutenico escuchar muacutesica agendar una

nueva cita en el calendario compartir fotos en alguna red social entre muchiacutesimas otras

en nuestros diacuteas se llevan a cabo de forma natural desde los dispositivos moacuteviles La

Figura 4 muestra coacutemo los dispositivos moacuteviles les han ganado terreno a los equipos

Capiacutetulo 1 Tecnologiacutea Moacutevil

15

tradicionales denominados lsquode escritoriorsquo

Figura 4 Comparacioacuten entre plataformas [15]

En la actualidad existen cientos de modelos diferentes de dispositivos moacuteviles y

los fabricantes siguen innovando intentando destacarse sobre la competencia Hoy en diacutea

no nos sorprende encontrar dispositivos moacuteviles con procesadores quad-core de 22 Ghz

Incluso ya se comienzan a conocer prototipos de dispositivos con ocho o diez nuacutecleos

De la mano de los procesadores la memoria RAM de los dispositivos moacuteviles

tambieacuten ha crecido considerablemente llegando a comercializarse dispositivos con 3 GB

de memoria

La caacutemara de los dispositivos es otra de las capacidades que maacutes ha progresado

llegando a encontrarse sensores de 20 MP y la posibilidad de grabar videos en formato

UHD 4K (3840 x 2160)

El tamantildeo de las pantallas y sus resoluciones fueron otra de las caracteriacutesticas que

maacutes han evolucionado Es posible encontrar dispositivos con pantallas de 5 pulgadas con

posibilidad de visualizar 16 millones de colores y con resoluciones Quad HD (2560 x

1440)

La tecnologiacutea de las bateriacuteas es un aspecto en que no se ha logrado grandes avances

en el sector ni se pronostican grandes progresos a corto plazo Incluso la llegada de chips

Capiacutetulo 1 Tecnologiacutea Moacutevil

16

maacutes potentes mayores pantallas o el 4G disminuiraacuten auacuten maacutes la autonomiacutea de las bateriacuteas

El uacuteltimo aspecto a mencionar es el de las capacidades del dispositivo Ademaacutes de

los ya claacutesicos sensores Global Positioning System (GPS) la capacidad de conectividad

viacutea bluetooth infrarrojo y WIFI hoy surge una diversidad de opciones que pueden

disponer los teleacutefonos inteligentes

Por el lado de la conectividad cada vez es maacutes comuacuten encontrar terminales con

mecanismos de comunicacioacuten Near Field Communication (NFC) o WIFI Direct

Con respecto a los sensores actualmente existen dispositivos que cuentan con

aceleroacutemetros giroscopios y magnetoacutemetros los cuales brindan a los desarrolladores de

aplicaciones la posibilidad de controlar la posicioacuten del aparato la aceleracioacuten que sufre

el dispositivo con respecto a la fuerza de la gravedad etc Tambieacuten es comuacuten el uso de

sensores de proximidad por ejemplo para apagar la pantalla mientras se atiende una

llamada El sensor de luminosidad permite medir el brillo de la luz ambiental Asiacute el

software del teleacutefono utiliza estos datos para ajustar el brillo de la pantalla

automaacuteticamente hacieacutendola maacutes clara o maacutes oscura

Los uacuteltimos smartphones de gama alta tambieacuten son capaces de medir la presioacuten

atmosfeacuterica a traveacutes de un baroacutemetro Los datos que mide el dispositivo sirven para

determinar en queacute nivel por encima del mar se encuentra el teleacutefono lo que se traduce en

la mejora de la precisioacuten del GPS

Incluso ya existen dispositivos que cuentan con un sensor de humedad del aire el

cual permite controlar los niveles de humedad para por ejemplo ayudar a las personas

con problemas respiratorios

Como si todo esto fuese poco existen modelos con podoacutemetro -para medir con

precisioacuten los pasos que da el usuario- pulsoacutemetro -para medir las pulsaciones a traveacutes de

los vasos sanguiacuteneos de los dedos- y hasta sensor de huellas digitales para cuestiones

relativas a la seguridad

Por lo anteriormente dicho los desarrolladores de aplicaciones para dispositivos

moacuteviles de la actualidad tienen el desafiacuteo de poder manipular desde sus aplicaciones

todas las posibilidades descriptas

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

17

Capiacutetulo 2 Desarrollo de

Aplicaciones Moacuteviles Nativas

Si bien el desarrollo de aplicaciones para dispositivos moacuteviles se remonta por lo

menos a 10 antildeos atraacutes ha habido un crecimiento exponencial desde que se abrioacute la tienda

de aplicaciones de iPhone en julio de 2008 Desde entonces los fabricantes de

dispositivos han creado tiendas de aplicaciones para otros dispositivos moacuteviles

incluyendo Android BlackBerry Nokia Ovi Windows Phone entre otros [16]

Actualmente el desarrollo de aplicaciones para dispositivos moacuteviles es un campo

en evolucioacuten con gran intereacutes econoacutemico y cientiacutefico Una prueba de esto es que para

Julio del 2014 se disponiacutean de maacutes de 3 millones de aplicaciones entre las principales

tiendas virtuales de aplicaciones Y solamente en el antildeo 2013 se contabilizaron 101

billones de descargas de aplicaciones moacuteviles en todo el mundo de las cuales 9 billones

fueron descargas pagas y 92 billones descargas gratuitas [17]

Con el actual creciente nuacutemero de plataformas moacuteviles desarrollar aplicaciones

moacuteviles se hizo muy difiacutecil para las empresas ya que necesitan desarrollar las mismas

aplicaciones para cada plataforma de destino

El desarrollo de aplicaciones nativas es la forma natural de implementar

aplicaciones moacuteviles Las aplicaciones nativas son concebidas para ejecutarse en una

plataforma especiacutefica es decir se debe considerar el tipo de dispositivo el sistema

operativo a utilizar y su versioacuten

Las aplicaciones nativas se desarrollan utilizando un entorno de desarrollo

integrado (IDE) que proporciona las herramientas de desarrollo necesarias para la

construccioacuten y depuracioacuten de aplicaciones El coacutedigo fuente se compila para obtener

coacutedigo ejecutable proceso similar que el utilizado para las tradicionales aplicaciones de

escritorio

Cuando la aplicacioacuten estaacute lista para ser distribuida debe ser transferida a las App

stores (tiendas de aplicaciones) especiacuteficas de cada sistema operativo Estas tiendas tienen

un proceso de auditoriacutea para evaluar si la aplicacioacuten se adecuacutea a los requerimientos de la

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

18

plataforma a operar Cumplido este paso la aplicacioacuten se pone a disposicioacuten de los

usuarios

La principal ventaja de este tipo de aplicaciones es la posibilidad de interactuar con

todas las capacidades del dispositivo (caacutemara GPS aceleroacutemetro agenda entre otras)

Ademaacutes no es estrictamente necesario poseer acceso a internet Su ejecucioacuten es raacutepida

puede ejecutarse en modo background y notificar al usuario cuando ocurra un evento que

necesite su atencioacuten

Claramente estas ventajas tienen como contrapartida un mayor costo de desarrollo

pues se debe utilizar un lenguaje de programacioacuten diferente seguacuten la plataforma Por ende

si se desea cubrir varias plataformas se deberaacute generar una aplicacioacuten para cada una de

ellas Esto conlleva a mayores costos de desarrollo actualizacioacuten y distribucioacuten de nuevas

versiones [9] [18] [19]

En la actualidad hay una gran cantidad de sistemas operativos para dispositivos

moacuteviles La Figura 5 muestra la utilizacioacuten de los sistemas operativos en los uacuteltimos antildeos

en todo el mundo mientras que la Figura 6 muestra la misma comparativa en Argentina

En ambos casos el ranking es liderado por Android seguido por iOS y en tercer lugar

Windows Phone [20]

Figura 5- Utilizacioacuten de Sistemas Operativos Moacuteviles en el mundo

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

19

Figura 6- Utilizacioacuten de Sistemas Operativos Moacuteviles en Argentina

A continuacioacuten se analizaraacute coacutemo es el proceso de desarrollo de aplicaciones

moacuteviles nativas en los sistemas operativos maacutes relevantes de la actualidad y luego en la

Tabla 1 se compararaacuten aspectos teacutecnicos de estas plataformas

21 Desarrollo de Aplicaciones Nativas en Android

Android es el sistema operativo maacutes utilizado en la actualidad Puede ser utilizado

en teleacutefonos inteligentes tablets relojes inteligentes televisores y automoacuteviles

Estaacute basado en Linux y es respaldado por Google

211 Evolucioacuten Inicialmente el desarrollo de Android era llevado a cabo por la empresa Android

Inc la cual fue fundada en el antildeo 2003 y recibiacutea respaldo econoacutemico por parte de Google

Antildeos maacutes tarde maacutes precisamente en Julio del 2005 Google adquiere Android y da lugar

a la primer versioacuten del sistema operativo en el antildeo 2007 Android 10 Apple Pie1

desarrollado sobre el kernel de Linux 26 En su presentacioacuten se hizo hincapieacute en que era

un sistema operativo para dispositivos moacuteviles totalmente gratuito y open source a

1 Desde la salida de la primera versioacuten del sistema operativo hasta el presente Google ha seguido la tradicioacuten de ponerle un nombre de postre a cada una de sus versiones siguiendo un orden alfabeacutetico

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

20

diferencia de iOS

La primera versioacuten comercial teniacutea mucho margen de mejora y apenas inquietoacute a la

competencia pero ya introduciacutea algunos conceptos que antildeos despueacutes son un estaacutendar de

los sistemas operativos moacuteviles

Menuacute desplegable de notificaciones

Widgets de escritorio

Android Market la tienda de apps (no contaba con ninguacuten sistema de pago para

usuarios Todo el cataacutelogo era gratuito)

Integracioacuten con Google Mail Contacts y Calendar

Navegador Maps Google Talk reproductor de YouTube y soporte para caacutemaras

En febrero del 2009 apenas 3 meses despueacutes del lanzamiento de Android 10 Apple

Pie llega la primera actualizacioacuten Android 11 Banana Bread No antildeadiacutea grandes

novedades pero siacute corregiacutea numerosos fallos detectados en la primera versioacuten e introduciacutea

un concepto por entonces poco usado por los rivales que buscaba facilitar la vida al

usuario las actualizaciones automaacuteticas con las que resultaba muy simple mantener todo

el software al diacutea

El 30 de abril del 2009 lanzan una nueva actualizacioacuten de gran importancia con

muchas novedades en cuanto a usabilidad Android 15 Cupcake Esta nueva versioacuten

introdujo las siguientes caracteriacutesticas

Teclado taacutectil QWERTY en pantalla con prediccioacuten de texto y diccionario de

usuarios para palabras personalizadas

Grabacioacuten y reproduccioacuten en formatos MPEG-4 y 3GP

Widget de escritorio de Google para realizar buacutesquedas directamente

SDK para el desarrollo de widgets de escritorio por parte de terceros

Funciones del portapapeles ampliadas

Interfaz para grabar y reproducir viacutedeos mejorada

Posibilidad de auto-rotacioacuten

Android 16 Donut apareciacutea en septiembre del 2009 con algunas novedades

adicionales

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

21

Soporte para CDMAEVDO 8021x VPN que ampliaba los mercados al alcance

de Android

Compatibilidad con distintas resoluciones de pantalla Soporte WVGA

Actualizacioacuten y nuevo disentildeo del Android Market

Utilidad de buacutesqueda universal en Internet y en el mismo dispositivo

Galeriacutea caacutemara y videocaacutemara con mejor integracioacuten con raacutepido acceso a la

caacutemara

Motor multi-lenguaje de Siacutentesis de habla para permitir a cualquier aplicacioacuten de

Android hablar una cadena de texto

Mejoras en las buacutesquedas por texto y voz

Apenas dos meses despueacutes en noviembre del 2009 lanzan Android 20 Eclair

uno de los cambios maacutes sustanciales sufridos por Android tanto a nivel de disentildeo como

de arquitectura interna Era una versioacuten dirigida a dispositivos de mayor tamantildeo en un

tiempo en el que los fabricantes empezaban a diversificar su oferta La versioacuten 21

mantuvo la misma nomenclatura y soacutelo corrigioacute algunos fallos pero su uso fue mayor

entre los fabricantes que la versioacuten anterior A continuacioacuten se mencionan algunas de las

nuevas caracteriacutesticas

Sincronizacioacuten de cuenta expandida permitiendo a los usuarios agregar muacuteltiples

cuentas al dispositivo para sincronizacioacuten de correo y contactos

Google Maps Navigation sistema de navegacioacuten GPS gratuito

Compatibilidad con Microsoft Exchange

Optimizacioacuten en velocidad de hardware y GUI renovada

Soporte para maacutes tamantildeos de pantalla y resoluciones con una mejor tasa de

contraste

Navegador actualizado soporte para HTML5 y barra de direccioacuten y buacutesqueda

unificada

Funcioacuten Speech to Text para escribir textos mediante el uso de la voz

Nueva pantalla de desbloqueo

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

22

Nuevas caracteriacutesticas para la caacutemara incluyendo soporte de flash zoom digital

modo escena balance de blancos efecto de colores y enfoque macro

Adicioacuten de fondos de pantalla animados permitiendo la animacioacuten de imaacutegenes

de fondo de la pantalla inicio para mostrar movimiento

El 20 de mayo del 2010 apareciacutea una nueva actualizacioacuten del sistema operativo

Android 22 Froyo Traiacutea numerosos cambios algunos copiados de otras ROMs y otros

con el uso empresarial en mente

Pantalla Home totalmente redisentildeada con 5 paneles en lugar de 3

Nueva galeriacutea de imaacutegenes

Soporte para actuar como hotspot2 para otros dispositivos tethering3 de datos

Soporte para Flash 101

Funcioacuten copiar y pegar mejorada en Google Mail

Nueva pantalla alternativa de desbloqueo mediante coacutedigo PIN

Grabacioacuten de viacutedeo en 720p

Optimizaciones en velocidad memoria y rendimiento Compilador JIT

Integracioacuten del motor de JavaScript V8 de Chrome en el navegador

Soporte para el servicio Android Cloud to Device Messaging (C2DM)

habilitando notificaciones push

El antildeo 2010 iba a concluir con el lanzamiento de una versioacuten sumamente popular

que prevalecioacute gran tiempo Android 23 Gingerbread Esta versioacuten contoacute con las

siguientes caracteriacutesticas

Disentildeo de la interfaz de usuario actualizado con incremento en velocidad y

simpleza

Nuevo disentildeo para el teclado numeacuterico en pantalla

Soporte para tamantildeos y resoluciones de pantalla extra-grandes (WXGA y

mayores)

Funcioacuten para copiar y pegar mejorada con soporte para caracteres individuales en

lugar de cajas de texto

2 lugar que ofrece acceso a Internet a traveacutes de una red inalaacutembrica y un enrutador conectado a un proveedor de servicios de Internet 3 proceso por el cual un dispositivo moacutevil con conexioacuten a Internet actuacutea como pasarela para ofrecer acceso a la red a otros dispositivos

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

23

Soporte para NFC

Herramientas de visualizacioacuten de consumo y uso de la bateriacutea mejoradas

Soporte para caacutemaras frontales

Acceso de bajo nivel para los desarrolladores de juegos

Recolector basura concurrente para incrementar el rendimiento

Sustitucioacuten del sistema de archivos YAFFS por ext4

Soporte nativo para maacutes sensores (tales como giroscopio y baroacutemetro)

Soporte de chat de video o voz usando Google Talk

En febrero del 2011 Google lanza Android 30 Honeycomb Se trata de una

actualizacioacuten especiacutefica para tablets no compatible con teleacutefonos que introduciacutea las

liacuteneas maestras de la interfaz en el futuro Las versiones 31 y 32 mantuvieron el mismo

nombre y fueron baacutesicamente un conjunto de correcciones A continuacioacuten se listan los

cambios significativos que tuvieron lugar en estas versiones

Pantalla de Inicio redisentildeada

Inclusioacuten de tonos azules en la interfaz en detrimento del verde tradicional

Nuevas funcionalidades para el emplazamiento y uso de widgets

Fin de los botones fiacutesicos Adaptacioacuten automaacutetica del SO seguacuten el dispositivo

Agregado de barra de sistema con caracteriacutesticas de acceso raacutepido a

notificaciones estados y botones de navegacioacuten suavizados disponible en la parte

inferior de la pantalla

Antildeadida la barra de accioacuten (Action Bar en ingleacutes) entregando acceso a opciones

contextuales navegacioacuten widgets u otros tipos de contenido en la parte superior

de la pantalla

Multitarea simplificada ndash tocando Aplicaciones recientes en la barra del sistema

permite a los usuarios ver instantaacuteneas de las tareas en curso y saltar raacutepidamente

de una aplicacioacuten a otra

Aceleracioacuten graacutefica mediante hardware

Optimizacioacuten del renderizado de graacuteficos 3D

Soporte para perifeacutericos USB

Octubre del 2011 fue el mes del lanzamiento de Android 40 Ice Cream Sandwich

basado en el nuacutecleo de Linux 301 Esta nueva versioacuten introdujo las siguientes mejoras

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

24

Nueva Interfaz Holo y fuente tipograacutefica Roboto

Sistema de gestioacuten de notificaciones mejorado

Multitarea mejorada

Android Beam funcionalidad para transferir datos entre dos dispositivos viacutea NFC

Funcioacuten de desbloqueo mediante el rostro

Nuevas funciones para la visualizacioacuten y gestioacuten del consumo de datos

Nuevas aplicaciones de correo y calendario

Habilidad de acceder a aplicaciones directamente desde la pantalla de bloqueo

Herramienta integrada de captura de pantalla

Soporte MKV

Aceleracioacuten por hardware de la interfaz de usuario

Soporte Stylus (laacutepiz taacutectil)

En Julio del 2012 se presenta Android 41 Jelly Bean que incluye las siguientes

novedades

Sistema de deteccioacuten de entrada de datos taacutectiles optimizado

Estreno de Google Now el servicio-asistente de voz inteligente de Google

Navegador Google Chrome

Buacutesqueda mediante voz mejorada

Nuevas posibilidades para las notificaciones interactivas de escritorio

Dictado de voz offline

Se deja de dar soporte al Flash Player

Meses despueacutes en noviembre del 2012 se lanza la versioacuten Android 42 Jelly Bean

la cual incluye habituales correcciones rendimiento mejorado y cambios puntuales en

ciertas aplicaciones

Android 43 Jelly Bean es anunciado el 24 de julio del 2013 Uno de los objetivos

de esta versioacuten fue tratar de consolidar a Android como un sistema operativo capaz de

ejecutar juegos Esta nueva versioacuten cuenta con las siguientes novedades

Soporte multiusuario y de perfiles mejorado

Soporte OpenGL ES 30

Bluetooth Smart

Plataforma Google Games

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

25

Servicios de localizacioacuten Wi-Fi mejorados

Ya no es necesario pulsar el icono del microacutefono para realizar una buacutesqueda de

voz Solo hay que decir OK Google y en seguida ordenar al equipo lo que se

necesite

Android 44 KitKat es anunciado en octubre del 2013 Esta nueva versioacuten intenta

corregir el problema de fragmentacioacuten se cuenta con muchas versiones y los fabricantes

tienen dificultades para adaptar sus productos a los requerimientos de cada nueva versioacuten

Se destaca de esta versioacuten

Menores requisitos de hardware para corregir la fragmentacioacuten de versiones

Compatible con terminales con 512 MB de memoria RAM

Reduccioacuten del consumo de bateriacutea mediante la optimizacioacuten de los sensores

Inclusioacuten de la suite ofimaacutetica QuickOffice

Servicios de almacenamiento online integrados Google Drive Box

Soporte para infrarrojos Usar el moacutevil como mando de TV

Aplicaciones a pantalla completa

Captura de pantalla en viacutedeo

En octubre del 2014 se lanza Android 5 Lollipop daacutendole soporte a otros

dispositivos como Android TV relojes inteligentes autos etc Esta nueva versioacuten

incluye

Nuevo disentildeo basado en Material Design que logra un flujo de trabajo maacutes fluido

Interfaz que se adapta a cualquier tamantildeo de dispositivo

Renovado sistema de notificaciones inteligente

Interesante vista multitarea que muestra capas con las diferentes aplicaciones

abiertas

Funcioacuten Android Smart Lock que permite emparejar un dispositivo Android con

otro ya sea un reloj inteligente o un automoacutevil

Modo Invitado para que puedas prestar el dispositivo sin que otros usuarios

tengan acceso a la informacioacuten privada

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

26

Soporte para sistemas de 64 bits

En octubre del 2015 se anuncia Android 6 Marshmallow que incluye las

siguientes novedades

Soporte para autenticacioacuten viacutea huella digital

Desinstalacioacuten raacutepida de las aplicaciones desde la pantalla de inicio

Nuevo esquema de gestioacuten de energiacutea llamado Doze

Mayor duracioacuten de la bateriacutea cuando el dispositivo estaacute en reposo

Inclusioacuten de Android Pay que emplearaacute el chip NFC

Mejoras en Google Now

Mayor control sobre los permisos requeridos por las aplicaciones

212 Proceso de Desarrollo Las aplicaciones nativas para esta plataforma se implementan utilizando el lenguaje

de programacioacuten Java

El estaacutendar sugiere utilizar el IDE oficial Android Studio (Figura 7) aunque es

posible utilizar otros entornos Independientemente del IDE utilizado se necesita

disponer del Software Development Kit (SDK) de la versioacuten de Android en la que se

desea trabajar El SDK provee todas las herramientas necesarias para desarrollar

compilar depurar y simular aplicaciones

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

27

Figura 7 Entorno de desarrollo Android Studio

Uno de los interrogantes que surgen en el momento de crear una aplicacioacuten es con

cual versioacuten de la Application Programming Interface (API) de Android trabajar Se debe

tener en cuenta que al trabajar con una versioacuten especiacutefica se estaacute limitando cuales son los

dispositivos que soportaraacuten la aplicacioacuten a crear No se recomienda utilizar una API

antigua -ya que no se estariacutea utilizando muchos de los avances de la plataforma- ni

tampoco la uacuteltima en el mercado ndashdebido a que pocos seriacutean los usuarios que podriacutean

utilizarla- En la Figura 8 se visualiza la distribucioacuten de versiones seguacuten los dispositivos

activos a la fecha de Diciembre 2016 [21] De esa informacioacuten se desprende que si se

optara por trabajar con la API 16 (Jelly Bean) el 966 de los celulares activos podraacuten

utilizar la aplicacioacuten a crear

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

28

Figura 8 Distribucioacuten de versiones de Android - Diciembre 2016

22 Desarrollo de Aplicaciones Nativas en iOS

iOS es un sistema operativo para dispositivos moacuteviles de la empresa multinacional

Apple Si bien fue originalmente desarrollado para el dispositivo iPhone luego el sistema

operativo alcanzoacute otros dispositivos como iPod Touch iPad A diferencias de otros

sistemas operativos para dispositivos moacuteviles iOS solo funciona en dispositivos creados

por la empresa Apple pero no asiacute en otro hardware de terceros

221 Evolucioacuten El sistema operativo moacutevil iOS se deriva del sistema operativo OS X el cual estaacute

basado en UNIX

La primera versioacuten del sistema operativo se presentoacute en enero del 2007 A

diferencia de sus sucesores la primera versioacuten no se llamoacute iOS sino iPhone OS Se

trataba de una plataforma bastante cerrada ya que las uacutenicas aplicaciones disponibles

eran las que estaban integradas al sistema operativo y fueron creadas por Apple como los

Mapas Mail Fotos Calendario entre otras

El desarrollo de aplicaciones nativas por parte de terceros no tuvo lugar hasta marzo

del 2008 momento en el cual Apple liberoacute el primer kit de desarrollo

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

29

Meses despueacutes se lanza la segunda versioacuten del sistema operativo iPhone OS 2 En

esta oportunidad introducen la App Store la cual permitioacute la descarga de aplicaciones de

terceros Ademaacutes la aplicacioacuten de Mapas recibioacute compatibilidad con el GPS y el Mail

notificaciones push

En 2009 Apple lanzoacute iPhone OS 3 y en su versioacuten 32 se le cambioacute el nombre a

iOS 32 iOS 3 incorporoacute grandes novedades buacutesqueda Spotlight botones Copiar y

Pegar grabacioacuten de viacutedeo edicioacuten de viacutedeo mensajes MMS comandos de voz modo

landscape y otras muchas apps Ademaacutes se siguioacute explotando las ventajas de las

notificaciones push y se continuoacute evolucionando su SDK daacutendole mayor poder a los

desarrolladores de aplicaciones

iOS 4 llegoacute a mediados del 2010 y trajo consigo nuevos cambios a la plataforma

Los maacutes destacables fueron la inclusioacuten de fondos de pantalla y la posibilidad de poder

abrir varias aplicaciones en simultaacuteneo Adicionalmente las aplicaciones podiacutean ser

agrupadas mediante carpetas algo simple pero uacutetil

En Junio del 2011 se libera iOS 5 Esta nueva versioacuten ofreciacutea grandes novedades

un Centro de Notificaciones Siri ndashel asistente virtual que marcoacute tendencia en los uacuteltimos

antildeos- iMessage iCloud Game Center Quiosco Recordatorios integracioacuten social para

Twitter y se mejoroacute notablemente la app de navegacioacuten web nativa Safari

iOS 6 fue presentado en Junio del 2012 y trajo como novedades la inclusioacuten de

Apple Maps (en reemplazo de Google Maps) mejoras en Siri con informacioacuten mucho

maacutes precisa la integracioacuten de Facebook y Twitter en el sistema el modo no molestar el

soporte para LTE entre otras

Los usuarios de este sistema operativo recibieron una de las mayores

actualizaciones en Junio del 2013 cuando se presenta iOS 7 Esta nueva versioacuten contoacute

con un redisentildeo total de la interfaz de usuario basaacutendose en transparencias y degradados

Ademaacutes se introdujo el Centro de Control AirDrop una renovada app de fotos iTunes

Radio y CarPlay mejoras en el App Switcher videos a caacutemara lenta entre otras cosas

Junio del 2014 fue el mes donde quedoacute disponible iOS 8 una nueva versioacuten del

sistema operativo que intenta resolver algunos errores de iOS 7 y antildeadir ciertas mejoras

Las extensiones y la posibilidad de conectar apps entre siacute mediante el menuacute compartir

hicieron que iOS 8 fuese mucho maacutes productivo Ademaacutes incorporoacute widgets para el

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

30

Centro de Notificaciones o las notificaciones interactivas Ademaacutes se implementaron los

contactos favoritos los teclados de terceros la funcioacuten Reachability y la utilidad

Continuity y las aplicaciones Apple Pay Salud HandOff QuickType Compartir en

Familia iCloud Drive y Apple Music

En el 2015 se presenta iOS 9 que introdujo todo un cambio en el uso del sistema

gracias a la compatibilidad con el 3D Touch del iPhone 6s y el iPhone 6s Plus Se

actualizoacute Notas con nuevas funciones se sustituyoacute Newsstand por News se incorporaron

mejoras en Passbook que pasoacute a llamarse Wallet y se mejoroacute Mapas con direcciones y

traacutefico Se antildeadioacute Split View Picture-in-Picture y atajos en teclados de terceros Ademaacutes

el sistema ahora podiacutea aprovechar mejor la autonomiacutea del dispositivo gracias al Modo

ahorro de bateriacutea que limita las conexiones y caracteriacutesticas del sistema para no consumir

tanta energiacutea

Por uacuteltimo en Junio del 2016 quedoacute disponible iOS 10 versioacuten que se caracteriza

por abrirse a los desarrolladores Con esta nueva versioacuten se puede tener acceso a Siri al

3D Touch y a apps directas del sistema operativo Ademaacutes el centro de widgets ahora es

maacutes intuitivo y la pantalla de bloqueo maacutes uacutetil Como es habitual se aprecian mejoras en

distintas aplicaciones del sistema operativo y se permite borrar apps de Apple que no sean

utilizadas por los usuarios

222 Proceso de desarrollo Las aplicaciones moacuteviles para la plataforma iOS se desarrollan utilizando el

lenguaje de programacioacuten Objetive C El entorno de desarrollo oficial es la plataforma

Xcode [22] la cual opera en conjunto con Interface Builder una herramienta graacutefica para

la creacioacuten de interfaces de usuario

Actualmente hay dos grandes versiones del sistema operativo moacutevil en curso como

se puede apreciar en la Figura 10 Es algo a destacar que la uacuteltima versioacuten del sistema

operativo es soportada por el 63 de los dispositivos activos Claramente la

fragmentacioacuten interna es mucho menor que la encontrada en Android

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

31

Figura 9 Entorno de desarrollo Xcode

Figura 10 Distribucioacuten de versiones de iOS - Noviembre 2016

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

32

23 Desarrollo de Aplicaciones Nativas en Windows Phone

El sistema operativo moacutevil Windows Phone fue desarrollado por Microsoft y

sucede a Windows Mobile A diferencia de su predecesor estaacute enfocado en el mercado de

consumo en lugar del mercado empresarial

231 Evolucioacuten Su primera versioacuten lanzada en septiembre del 2010 fue denominada Windows

Phone 7 Fue presentado como un nuevo sistema operativo que incluye funciones de

integracioacuten con los servicios Xbox Live y Zune La interfaz conocida como Metro ha

sido revisada en su totalidad y comparte caracteriacutesticas visuales similares a la interfaz del

dispositivo Zune HD

Windows Phone 75 es una actualizacioacuten para Windows Phone lanzada en

septiembre de 2011 Esta nueva versioacuten incorporoacute numerosas caracteriacutesticas como por

ejemplo la inclusioacuten de Internet Explorer 9 con soporte para CSS3 Media Queries y

soporte para usar GPS cuando se trabaje con aplicaciones de ubicacioacuten geograacutefica entre

otros

En enero del 2013 se presenta Windows Phone 78 una actualizacioacuten que trae

mejoras como la nueva interfaz de usuario y fondos personalizados para la pantalla de

bloqueo Fue la uacuteltima gran actualizacioacuten de Windows Phone 7 ya que Microsoft se

centroacute en Windows Phone 8

Windows Phone 8 es la siguiente versioacuten del sistema operativo la cual fue

presentada a finales de 2012 Entre las nuevas caracteriacutesticas se incluyen

Nuevas pantallas de inicio y de bloqueo maacutes personalizables

Rincoacuten infantil un espacio exclusivo y controlado para los nintildeos

Cartera para almacenar tarjetas de fidelizacioacuten y de creacutedito

NFC

Internet Explorer 10

Integracioacuten con Skype

Nuevo nuacutecleo Windows NT con soporte para procesadores de varios

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

33

nuacutecleos

Captura de pantalla

Su proacutexima versioacuten es Windows Phone 81 y fue presentada en abril del 2014

Entre sus caracteriacutesticas maacutes relevantes se encuentran

Centro de notificaciones

Asistente de voz conocido con el nombre de Cortana

Sensores (de Wi-Fi de datos y de bateriacutea)

Aplicaciones que vienen en el paquete de instalacioacuten como Salud y

ejercicios Comida y bebida Viajes y Mapas (esta uacuteltima compite con Here

Maps la cual es la aplicacioacuten de mapas de Nokia)

Mejoras en la pantalla de inicio posibilidad de agregar fondos de pantalla y

una tercera columna de mosaicos personalizables (Tiles)

A mediados del 2014 Microsoft decide cambiar de estrategia tratando de unificar

todas las plataformas como PC tablets smartphones Xbox One entre otros Windows

10 (moacutevil) se dio a conocer puacuteblicamente durante un evento el 21 de enero para 2015 Al

igual que su homoacutelogo Windows 10 Mobile utiliza como navegador predeterminado

Microsoft Edge reemplazando Internet Explorer de Windows Phone 81 ya que este no

se adecuaba a las nuevas liacuteneas de disentildeo del sistema operativo

232 Proceso de desarrollo El entorno de desarrollo maacutes popular para el desarrollo de aplicaciones para

Windows Phone es Visual Studio (Figura 11) En la actualidad es posible utilizar diversos

lenguajes de programacioacuten VBNET y CNET C++ y JavaScript

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

34

Figura 11 Entorno de desarrollo Visual Studio

24 Diferencias teacutecnicas entre Android iOS y Windows Phone

Desarrollar aplicaciones moacuteviles para los tres sistemas operativos maacutes populares

implica conocer ciertos aspectos teacutecnicos de cada plataforma Algunos de estos aspectos

teacutecnicos difieren sustancialmente entre cada sistema operativo

Una de las caracteriacutesticas a tener en cuenta es si las aplicaciones moacuteviles se ejecutan

dentro de una maacutequina virtual especiacuteficamente disentildeada o si se ejecutan directamente

sobre el sistema operativo

Otro aspecto que los desarrolladores deben tener en cuenta es el lenguaje de

programacioacuten a utilizar para crear aplicaciones nativas Este aspecto es importante porque

incide en otros aspectos como por ejemplo la gestioacuten de memoria

Ademaacutes del lenguaje de programacioacuten a utilizar es importante conocer la

tecnologiacutea requerida para disentildear interfaces de usuario

Asimismo los desarrolladores deben familiarizarse con diferentes IDEs seguacuten la

plataforma en la que se desea desarrollar como asiacute tambieacuten con diferentes tiendas de

aplicaciones donde alojar los productos finales

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

35

Por uacuteltimo la tecnologiacutea de hardware requerida para soportar el sistema operativo

tambieacuten difiere seguacuten cada plataforma

La Tabla 1 compara cada uno de estos aspectos en los sistemas operativos moacuteviles

Android iOS y Windows Phone

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

36

Sistema

Operativo

Maacutequina

Virtual

Lenguaje de

Programacioacuten

Interfaces

de usuario

Gestioacuten de

memoria

IDE Plataforma de

desarrollo

Dispositivos Tienda de

Aplicaciones

Android Dalvik VM Java XML files Garbage

collector

Android

Studio

Multiplatforma Heterogeneos Google Play

Store

iOS No Objective-C Cocoa

Touch

Reference

counting

XCode Mac OS X Homogeneos iTunes Apps

Store

Windows

Phone

CLR C and Net XAML files Garbage

collector

Visual

Studio

Windows Vista7 Homogeneos Windows

Phone Store

Tabla 1 Diferencias teacutecnicas entre las plataformas Android iOS y Windows Phone

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

37

Capiacutetulo 3 Desarrollo de

Aplicaciones Moacuteviles

Multiplataforma

En los uacuteltimos antildeos el mercado de los dispositivos moacuteviles en especial

smartphones ha mostrado un crecimiento notable tanto en Argentina como en todo el

mundo En particular en nuestro paiacutes las plataformas que maacutes han crecido son Android

e iOS [1520]

Actualmente gran parte de la industria del software se concentra en desarrollar

soluciones para dispositivos moacuteviles proveyendo especialmente aplicaciones nativas

Las aplicaciones nativas tal como se mencionoacute en el capiacutetulo anterior ofrecen la

posibilidad de acceder a todas las capacidades del dispositivo (caacutemara GPS aceleroacutemetro

y agenda entre otras) su rendimiento es alto el acceso a Internet no es estrictamente

necesario y pueden ejecutarse en segundo plano notificando al usuario cuando se requiera

su atencioacuten Estas aplicaciones pueden distribuirsecomercializarse a traveacutes de las tiendas

en liacutenea correspondientes

El principal reto para los proveedores de aplicaciones es proporcionar soluciones

para todas las plataformas pero esto conlleva un alto costo [6] no es posible reusar el

coacutedigo fuente entre plataformas diferentes multiplicando esfuerzos y elevando los costos

de desarrollo actualizacioacuten y distribucioacuten de nuevas versiones

El desarrollo multiplataforma procura optimizar la relacioacuten costobeneficio

compartiendo la misma codificacioacuten entre las versiones para las distintas plataformas

Entre otras ventajas sobresalen menor tiempo y costo de desarrollo prestaciones

similares a las nativas con acceso al hardware del dispositivo y disponibilidad de

entornos potentes de desarrollo (Delphi Visual Studio etc) o en su lugar utilizacioacuten de

tecnologiacuteas (HTML5 Javascript y CSS) bien conocidas por los desarrolladores web

quienes pueden trasladar sus conocimientos y experiencias al paradigma moacutevil Sin

embargo el rendimiento de las aplicaciones y sus interfaces de usuario pueden afectar la

experiencia de usuario

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

38

Las aplicaciones multiplataforma pueden clasificarse en aplicaciones web moacuteviles

hiacutebridas interpretadas y generadas por compilacioacuten cruzada [5] En las secciones

siguientes se analizaran cada una de estas clasifcaciones

31 Aplicaciones Web Moacuteviles

Las Aplicaciones Web Moacuteviles disentildeadas para ejecutarse dentro de un navegador

se desarrollan con tecnologiacutea web estaacutendar (HTML CSS y JavaScript) y cuentan con

una serie de caracteriacutesticas favorables no necesitan adecuarse a ninguacuten entorno operativo

son independientes de la plataforma y su puesta en marcha es raacutepida y sencilla

Por contrapartida sus tiempos de respuesta decaen debido a la interaccioacuten cliente-

servidor Al mismo tiempo resultan ser menos atractivas que las aplicaciones nativas ya

que no se encuentran instaladas en el dispositivo lo que implica acceder previamente a

un navegador Ademaacutes las restricciones de seguridad impuestas a la ejecucioacuten de coacutedigo

por medio de un navegador limitan el acceso a todas las capacidades del dispositivo [23]

Asimismo no es posible desarrollar aplicaciones web que corran en segundo plano ni

tampoco aplicaciones offline ya que es requisito disponer de una conexioacuten a internet para

su funcionamiento

El proceso de desarrollo de una aplicacioacuten web moacutevil debe contemplar una serie de

caracteriacutesticas inherentes al entorno de ejecucioacuten Como ya ha sido mencionado las

aplicaciones web moacuteviles pueden ser accesibles desde cualquier dispositivo moacutevil que

cuente con un navegador y acceso a internet pero esto no significa que la navegacioacuten en

la aplicacioacuten resulte ser coacutemoda u oacuteptima Por ejemplo una aplicacioacuten web con un menuacute

compuesto de 20 iacutetems puede implicar una usabilidad correcta desde una PC Por lo

contrario para un dispositivo moacutevil con una pantalla limitada no resulta praacutectico que se

le presente al usuario tantas opciones en el menuacute Con este ejemplo lo que se pretende

mostrar es que para que una aplicacioacuten sea accesible desde diferentes dispositivos

moacuteviles posiblemente se tengan que realizar al menos dos disentildeos de presentacioacuten

diferentes un disentildeo para PC y otro disentildeo para dispositivos moacuteviles con una estructura

organizativa de la aplicacioacuten maacutes simplificada con respecto al disentildeo tradicional Por

ejemplo algunas de las funcionalidades de la aplicacioacuten para PC pueden ser eliminadas

para la versioacuten para dispositivos moacuteviles o presentadas de forma diferente

Para desarrollar diferentes presentaciones de una misma aplicacioacuten web

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

39

actualmente existen dos estrategias distintas ambas vaacutelidas seguacuten el contexto En los

siguientes apartados se analizaraacuten cada una de ellas

311 Aplicacioacuten Web dedicada y exclusiva para dispositivos moacuteviles Esta metodologiacutea ha sido el estaacutendar hasta el antildeo 2012 En ella la direccioacuten URL

y el coacutedigo HTML de la versioacuten moacutevil son distintos de la versioacuten de escritorio Por lo

general las direcciones URL tienen el formato mnombresitiocom

Algunas de las ventajas de este meacutetodo

- En general la carga es maacutes raacutepida y la navegacioacuten maacutes coacutemoda

- Es posible adaptar de manera maacutes faacutecil el contenido de las secciones

Desventajas de este meacutetodo

- Mantenimiento maacutes costoso Se debe mantener dos versiones distintas del mismo

sitio

- Dificulta el posicionamiento del sitio en los buscadores

- Estos desarrollos al final tienden a ser versiones muy reducidas de la web para

PC llevando al usuario a frustrarse y a preferir ver la versioacuten original de la web

312 Aplicacioacuten Web con Disentildeo Adaptable Con esta metodologiacutea la aplicacioacuten web se adapta al dispositivo desde el cual se la

estaacute accediendo El coacutedigo HTML y la direccioacuten URL de la aplicacioacuten son uacutenicos El

Disentildeo Adaptable o Responsive Design (Figura 12) tiene sus oriacutegenes en el antildeo 2008

cuando la W3C discutioacute y describioacute sus propoacutesitos Desde el antildeo 2012 -momento en el

cual Google recomendoacute fuertemente su implicancia [24]- viene en ascenso y

posiblemente llegue a convertirse en un standard en un corto plazo

Mediante un Disentildeo Adaptable todos los elementos de la web se reajustan en ancho

y altura adaptaacutendose al tamantildeo de tu pantalla Incluso es posible ocultar secciones cuando

se accede desde un dispositivo moacutevil

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

40

Figura 12 Disentildeo Adaptable

Las principales ventajas del desarrollo de aplicaciones web con Disentildeo Adaptable

son

- El mantenimiento es menos costoso ya que solo hay que mantener una uacutenica

versioacuten de la aplicacioacuten

- Se simplifica el proceso de posicionar la aplicacioacuten en los buscadores

Como contrapartida el Disentildeo Adaptable presenta una serie de desventajas

- Requiere de mayores niveles teacutecnicos para su desarrollo

- El contenido de las aplicaciones con Disentildeo Adaptable puede ser mayor que el

contenido de las aplicaciones web especiacuteficas para dispositivos moacuteviles

perjudicando el tiempo de carga cuando se utiliza un tipo de conexioacuten no muy

potente y generando un mayor consumo de datos

En la actualidad existe una gran cantidad de frameworks que simplifican el

desarrollo de aplicaciones web con disentildeo adaptable destacaacutendose por su popularidad y

extensa documentacioacuten los frameworks Bootstrap [25] y Foundation [26]

32 Aplicaciones Hiacutebridas

Las aplicaciones hiacutebridas utilizan tecnologiacuteas web (HTML Javascript y CSS) pero

no son ejecutadas por un navegador En su lugar se ejecutan en un contenedor web

(webview) como parte de una aplicacioacuten nativa la cual estaacute instalada en el dispositivo

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

41

moacutevil Desde una aplicacioacuten hiacutebrida es posible acceder a las capacidades del dispositivo

a traveacutes de diversas API

Las aplicaciones hiacutebridas ofrecen grandes ventajas permitiendo la reutilizacioacuten de

coacutedigo en las distintas plataformas el acceso al hardware del dispositivo y la distribucioacuten

a traveacutes de las tiendas de aplicaciones En contrapartida se observan dos desventajas de

las aplicaciones hiacutebridas respecto del caso nativo i) la experiencia de usuario se ve

perjudicada al no utilizar componentes nativos en la interfaz y ii) la ejecucioacuten se ve

ralentizada por la carga asociada al contenedor web

Afortunadamente existe una diversidad de frameworks que permiten desarrollar

aplicaciones hiacutebridas A continuacioacuten se haraacute un breve resumen de los maacutes populares

321 PhoneGap PhoneGap [27] es un framework gratuito y open source creado en el antildeo 2008 por

la empresa Nitobi Software que permite crear aplicaciones moacuteviles usando tecnologiacutea

web estaacutendar HTML JavaScript y CSS En octubre del 2011 Adobe adquiere la empresa

Nitobi y aporta el coacutedigo de PhoneGap a Apache Software Foundation para iniciar un

nuevo proyecto por encima de PhoneGap llamado Apache Cordova [28] PhoneGap pasoacute

a ser una de las varias distribuciones de Apache Cordova (Figura 13) brindando servicios

extras como por ejemplo Adobe PhoneGap Build [29] un servicio de compilacioacuten en la

nube proporcionado por Adobe Creative Cloud PhoneGap Desktop y PhoneGap

Developer

PhoneGap permite compilar aplicaciones para las siguientes plataformas Android

IOS Amazon Fire OS Windows Phone Windows 8 Ubuntu Tizen Firefox OS

Blackberry 10

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

42

Figura 13 Funcionamiento de Apache Cordova

322 CocoonJS CocoonJS [30] es un framework para el desarrollo de aplicaciones moacuteviles

producido por Ludei [31] Actualmente cuenta con una licencia propietaria y ofrece

diferente tipos de planes pagos y gratuitos El mencionado framework estaacute basado en

Apache Cordova al igual que PhoneGap pero se diferencia de este uacuteltimo en que hace

un mayor hincapieacute en la performance de las aplicaciones resultantes CocoonJS ofrece

dos tipos de webview

Canvas+ un webview liviano optimizado para video juegos Provee solo un

subconjunto de las funcionalidades del HTML5 (canvas audio motion

geolocalizacioacuten etc) necesarias para desarrollar video juegos con el objetivo de

brindar la mejor performance posible

Webview+ un potente y completo webview basado en el webview del proyecto

Chromium el cual cuenta de una mejor performance en comparacioacuten con el

webview por defecto de Apache Cordova

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

43

CocoonJs permite crear aplicaciones tanto para iOS como para Android

323 Ionic Ionic [32] es un completo SDK gratuito y open source para el desarrollo de

aplicaciones hiacutebridas producido por Max Lynch Ben Sperry y Adam Bradley de la

compantildeia Drifty Co en el antildeo 2013 En un tiempo relativamente corto alcanzoacute una

popularidad a destacar Estaacute basado en Apache Cordova permitiendo desarrollar

aplicaciones con tecnologiacutea web A diferencia de otros frameworks para el desarrollo de

aplicaciones hibridas Ionic provee un framework para la interfaz de usuario y

herramientas visuales para disentildear interfaces

Mediante Ionic es posible crear aplicaciones para Android IOS Windows Phone y

Firefox OS

324 Sencha Touch Sencha Touch [33] es un framework gratuito Model-View-Controller (MVC)

JavaScript construido sobre el sistema de clases de Ext JS disentildeado especialmente para

el desarrollo de aplicaciones web moacuteviles para dispositivos taacutectiles [34]

Al igual que PhoneGap Sencha Touch permite a los desarrolladores crear

aplicaciones moacuteviles a partir de un desarrollo web con HTML5 CSS y Javascript A

diferencia de PhoneGap Sencha no necesita de ninguna libreriacutea de terceros para construir

interfaces similares a las nativas ya que el framework provee consigo una gran cantidad

de componentes visuales listos para utilizar

Sencha empaqueta el coacutedigo del proyecto mediante PhoneGap para luego poder

construir aplicaciones en todas las plataformas soportadas por PhoneGap

33 Aplicaciones Interpretadas

Las aplicaciones interpretadas son implementadas utilizando un lenguaje base el

cual se traduce en su mayor parte a coacutedigo nativo mientras el resto es interpretado en

tiempo de ejecucioacuten Estas aplicaciones son implementadas de manera independiente de

las plataformas utilizando diversas tecnologiacuteas y lenguajes tales como Javascript Java

Ruby y XML entre otros

Una de las principales ventajas de este tipo de aplicaciones es que se obtienen

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

44

interfaces de usuario totalmente nativas Sin embargo los desarrolladores experimentan

una dependencia total con el entorno de desarrollo elegido

Seguidamente se presentaran algunos de frameworks maacutes reconocidos para el

desarrollo de aplicaciones interpretadas

331 Appcelerator Titanium Desarrollado por Appcelerator Inc Appcelerator Titanium [35] es un framework

de coacutedigo abierto que permite la creacioacuten de aplicaciones moacuteviles para las plataformas

iOS y Android Dicho framework estaacute formado por Titanium Studio un entorno de

desarrollo de coacutedigo libre para la codificacioacuten de aplicaciones moacuteviles multiplataforma

y el SDK Titanium una serie de herramientas para el desarrollo testeo anaacutelisis

depuracioacuten y compilacioacuten de aplicaciones

Las aplicaciones desarrolladas con Appcelerator Titanium se codifican utilizando

el lenguaje Javascript el cual es evaluado en tiempo de ejecucioacuten mediante un inteacuterprete

de Javascript que se ejecuta en el sistema operativo del dispositivo Al iniciar la

aplicacioacuten desde el coacutedigo nativo se ejecuta el coacutedigo Javascript y mediante la API de

Titanium se mapea uno-a-uno cada elemento del coacutedigo Javascript con los elementos

nativos De esta manera la API de Titanium actuacutea como puente logrando interfaces de

usuario compuestas de controles nativos Este entorno de desarrollo utiliza el framework

Alloy disentildeado para el desarrollo aacutegil de aplicaciones moacuteviles Alloy estaacute basado en la

arquitectura MVC y soporta el uso de tecnologiacuteas populares como Backbonejs [36] y

Underscorejs [37]

Los creadores de Titanium destacan que mediante este framework es posible

reutilizar entre el 60 y 90 del coacutedigo entre distintas plataformas

332 NativeScript El 5 de marzo del 2015 la empresa Telerik lanzoacute NativeScript [38] un proyecto de

coacutedigo abierto el cual permite generar aplicaciones nativas utilizando JavaScript

Asimismo es posible desarrollar la aplicacioacuten utilizando el lenguaje TypeScript [39]

lenguaje libre y de coacutedigo abierto desarrollado por Microsoft que extiende a JavaScript

esencialmente antildeadiendo tipado estaacutetico y objetos basados en clases En este sentido

cuando se compila la aplicacioacuten se realiza la traduccioacuten del coacutedigo TypeScript a coacutedigo

JavaScript

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

45

NativeScript provee un moacutedulo multiplataforma que permite obtener aplicaciones

nativas desde coacutedigo JavaScript Este moacutedulo expone las capacidades del dispositivo y

de la plataforma subyacente de una manera consistente y permite accederlas desde el

coacutedigo JavaScript De igual manera las interfaces de usuario pueden ser definidas

mediante coacutedigo JavaScript documentos HTML y archivos CSS abstrayeacutendose de los

componentes nativos reales

Cuando la aplicacioacuten es compilada parte del coacutedigo multiplataforma es traducido

a coacutedigo nativo mientras que el resto es interpretado en tiempo de ejecucioacuten (Figura 14)

Por el momento NativeScript permite generar aplicaciones para Android e iOS y

se preveacute dar soporte a Windows Phone NativeScript renderiza controles nativos sin

utilizar WebViews logrando una performance y experiencia de usuario similar al de las

aplicaciones nativas

Figura 14 Proceso de interpretacioacuten mediante NativeScript

34 Aplicaciones Generadas por Compilacioacuten Cruzada

Estas aplicaciones se compilan de manera nativa creando una versioacuten especiacutefica de

alto rendimiento para cada plataforma destino Ejemplos de entornos de desarrollo para

generar aplicaciones por compilacioacuten cruzada son Applause [40] Xamarin [41]

Embarcadero Delphi 10 Seattle [42] y RubyMotion [43]

El entorno de desarrollo abierto Applause utiliza como entrada un lenguaje

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

46

especiacutefico del dominio basado en el framework Xtext [44] disentildeado expliacutecitamente para

aplicaciones moacuteviles orientadas a datos y genera coacutedigo fuente en Objective C Java C

o Python Las caracteriacutesticas de Xamarin Embarcadero Delphi 10 Seattle y RubyMotion

se presentan en secciones posteriores

341 Xamarin Xamarin es una plataforma de desarrollo de aplicaciones moacuteviles para generar

aplicaciones 100 nativas para iOS Android y Windows a partir de una base de coacutedigo

CNET comuacuten para conseguir entre un 75 y hasta casi un 100 de reutilizacioacuten de

coacutedigo entre plataformas Las aplicaciones escritas con Xamarin y C disponen de acceso

completo a las API de la plataforma subyacente asiacute como de la capacidad de crear

interfaces de usuario nativas y de realizar la compilacioacuten en coacutedigo nativo por lo que el

impacto en el rendimiento en tiempo de ejecucioacuten es escaso

Xamarin es una compantildeiacutea que se establecioacute en mayo de 2011 por los mismos

ingenieros que crearon el proyecto Mono [45] consistente en una implementacioacuten libre

de la plataforma de desarrollo NET para dispositivos Android iOS y GNULinux

Anteriormente este proyecto se llamaba MonoTouch y MonoDroid

Si bien Xamarin cuenta con su propio IDE denominado Xamarin Studio (Figura

15) es posible integrarlo con Microsoft Visual Studio y de esta manera generar tambieacuten

aplicaciones para Windows incluido Windows RT para tablets y Windows Phone para

celulares

En febrero del 2016 Xamarin es comprada por Microsoft y desde ese momento la

plataforma Xamarin y el IDE Xamarin Studio pasaron a ser gratuitas

Xamarin propone un enfoque de desarrollo multiplataforma en el que se comparte

la codificacioacuten completa de la loacutegica del negocio Sin embargo las interfaces deben ser

programadas de manera independiente para cada una de las plataformas destino Asiacute la

reutilizacioacuten de coacutedigo seguacuten estudios estadiacutesticos de la compantildeiacutea Xamarin es cercana

al 85

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

47

Figura 15 Entorno de Desarrollo Xamarin Studio

342 Embarcadero Delphi 10 Seattle Embarcadero Delphi 10 Seattle [42] es una plataforma de desarrollo propietaria y

no gratuita que permite a los desarrolladores crear aplicaciones raacutepidamente a traveacutes de

un entorno visual coacutemodo e intuitivo (Figura 16) La aplicacioacuten desarrollada puede ser

compilada para muacuteltiples plataformas incluyendo Windows Mac Android e iOS

Delphi 10 Seattle al igual que Xamarin aventaja a otros tipos de aplicaciones

multiplataformas con resultados 100 nativos con acceso total a los sensores y

capacidades del dispositivo (caacutemara notificaciones GPS aceleroacutemetro entre otras)

Un punto a destacar es que Delphi 10 Seattle a traveacutes del framework de interfaces

de usuario FireUI Multi-Device Designer permite crear interfaces de usuario totalmente

nativas sin la necesidad de tener que disentildear interfaces especiacuteficas para cada plataforma

en particular

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

48

Figura 16 Entorno de Desarrollo Delphi 10 Seattle

343 RubyMotion En Mayo de 2012 la empresa HipByte lanza RubyMontion un proyecto que

permite generar aplicaciones para iOS Android y OS X utilizando el lenguaje de

programacioacuten Ruby

Para poder generar las aplicaciones multiplataforma RubyMotion posee

implementaciones de Ruby sobre los sistemas operativos destinos (Android e iOS) que

permiten acceder a todas las caracteriacutesticas provistas por cada plataforma Las

herramientas de compilacioacuten provistas por RubyMotion se encargan de embeber la

correspondiente implementacioacuten de Ruby al momento de compilar para cada plataforma

La principal desventaja de RubyMotion es que soacutelo funciona bajo el sistema

operativo OS X Otro factor a tener en cuenta es que no posee un entorno de desarrollo

integrado que facilite todo el proceso al desarrollador esto se ve solventado gracias a que

ofrece complementos para los IDE y editores de coacutedigo maacutes utilizados

Finalmente si bien el producto es un servicio pago ofrece una posibilidad de

probarlo gratuitamente aunque con soporte uacutenicamente para compilar a la uacuteltima versioacuten

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

49

de cada plataforma destino

Capiacutetulo 4 Experimentacioacuten

50

Capiacutetulo 4 Experimentacioacuten

Con el objetivo de profundizar la investigacioacuten de las diferentes metodologiacuteas de

desarrollo de aplicaciones moacuteviles multiplataforma es que se llevaron a cabo diferentes

experimentos en simultaacuteneo El primer experimento consiste en el desarrollo de una

aplicacioacuten moacutevil utilizando cada una de las metodologiacuteas estudiadas en el capiacutetulo

anterior con el objetivo de analizar el proceso de desarrollo El segundo experimento

tiene como objetivo analizar el rendimiento de las aplicaciones moacuteviles generadas

mediante las metodologiacuteas estudiadas a traveacutes de un caacutelculo matemaacutetico Por uacuteltimo se

presenta un informe comparativo que pueda ayudar en la toma de decisiones sobre queacute

metodologiacutea utilizar en futuros desarrollos

41 Aplicacioacuten Moacutevil para la plataforma de E-Learning WebUNLP

411 Descripcioacuten del problema WebUNLP es un entorno virtual de ensentildeanza y aprendizaje que permite a los

docentes mediar sus propuestas educativas Alumnos y docentes pueden encontrarse en

ese espacio para compartir materiales de estudio comunicarse y generar una experiencia

educativa en forma virtual [46]

Actualmente WebUNLP cuenta con una versioacuten web enfocada a computadoras de

escritorio o portaacutetiles pero no estaacute adaptada para ser utilizada desde dispositivos moacuteviles

El desarrollo planteado consiste en extender WebUNLP con la construccioacuten de una

aplicacioacuten moacutevil que permita acceder a determinadas funcionalidades del sistema a

traveacutes de un dispositivo moacutevil El enfoque propuesto incluye un anaacutelisis de la misma

solucioacuten comparando el desarrollo nativo web hiacutebrido interpretado y de compilacioacuten

cruzada a fin de establecer cuaacutel de ellos es conveniente

Como ocurre con cualquier desarrollo de software la construccioacuten de una

aplicacioacuten moacutevil implica tener claramente definido su propoacutesito y cuaacuteles requerimientos

debe cumplir En particular para el caso de software para dispositivos moacuteviles resulta

esencial tener objetivos maacutes acotados que en su versioacuten de escritorio [47]

Capiacutetulo 4 Experimentacioacuten

51

Para el caso especiacutefico de WebUNLP se realizoacute el desarrollo incremental de una

aplicacioacuten moacutevil y esta primera versioacuten se enfocoacute en una de sus herramientas de

comunicacioacuten la cartelera Esta herramienta permite comunicar las novedades de un

curso como por ejemplo el cambio de horario de una cursada recordar las fechas de

entrega de un trabajo praacutectico entre otras [46]

412 Anaacutelisis Uno de los primeros interrogantes planteados fue la eleccioacuten de la plataforma En

teacuterminos de mercado los sistemas operativos que predominan en Argentina son Android

e iOS [4815] con lo cual se decidioacute dar soporte a estos dos sistemas operativos

Se analizaron los requerimientos funcionales y no funcionales de forma aislada a la

plataforma y luego de forma especiacutefica para cada una de ellas

A continuacioacuten se presentan algunos requerimientos a cumplir por la aplicacioacuten

El usuario debe poder ingresar a la aplicacioacuten con las mismas credenciales que las

utilizadas para acceder a la versioacuten web de escritorio

El usuario debe poder acceder a la cartelera de todos los cursos en los que

participa ya sea como docente o alumno

El usuario debe recibir una notificacioacuten en su dispositivo cuando una novedad es

publicada en la cartelera Este requerimiento no se puede cumplir en la versioacuten

web accesible desde computadoras de escritorio yo portables

El usuario debe tener la misma experiencia de uso en todas las plataformas

operativas

La aplicacioacuten web existente debe estar sincronizada con la aplicacioacuten moacutevil a

desarrollar esto significa que cualquier cambio realizado desde la aplicacioacuten

moacutevil debe verse reflejado en la versioacuten web y viceversa

413 Disentildeo Para satisfacer los requerimientos planteados en el punto anterior a excepcioacuten de

la notificacioacuten el disentildeo de la aplicacioacuten moacutevil web consiste en una reacuteplica de lo ofrecido

por WEBUNLP adaptaacutendose solamente la interfaz al tamantildeo de pantalla del dispositivo

moacutevil

Capiacutetulo 4 Experimentacioacuten

52

Para el disentildeo de las aplicaciones moacuteviles nativa hiacutebrida interpretada y de

compilacioacuten cruzada la situacioacuten es maacutes compleja En la Figura 17 se presenta la

arquitectura geneacuterica de todos los componentes que participan en este escenario de

desarrollo En ella se observa el acceso desde una PC a WebUNLP y el acceso desde

dispositivos moacuteviles a la informacioacuten de WebUNLP mediante servicios web Para el

desarrollo de los servicios web se disentildeoacute una API Restful dada su simpleza escalabilidad

e interoperabilidad [49]

Figura 17 Arquitectura geneacuterica para aplicacioacuten nativa e hiacutebrida

Asimismo existe una tarea programada (Cron) de ejecucioacuten intermitente a

intervalos regulares de tiempo la cual notifica a los dispositivos moacuteviles correspondientes

cuando se crea una novedad en la cartelera de WebUNLP El Cron identifica el sistema

operativo del dispositivo a notificar y genera dicha notificacioacuten

En cuanto a la interfaz graacutefica se planteoacute un disentildeo independiente de la plataforma

para analizar los aspectos de usabilidad de la aplicacioacuten y luego se realizaron los ajustes

necesarios para cada tipo de aplicacioacuten

En las interfaces disentildeadas la navegacioacuten es en serie en el orden en que se presentan

en el mockup [50] de la Figura 18

Capiacutetulo 4 Experimentacioacuten

53

Figura 18 Mockup independiente del tipo de aplicacioacuten

414 Desarrollo

4141 Aplicacioacuten Nativa para Android

El desarrollo de aplicaciones para la plataforma Android requiere disponer del Java

Development Kit (JDK) y su entorno de programacioacuten conocido como Android SDK

Este uacuteltimo provee libreriacuteas y herramientas necesarias para construir testear y depurar

aplicaciones para Android

El desarrollo de la aplicacioacuten de WebUNLP para Android se realizoacute seguacuten las

convenciones adoptadas por su comunidad porque aplica buenas praacutecticas en la

construccioacuten de interfaces y de la loacutegica detraacutes de ellas el acceso a datos y a servicios

web Para cumplir el requerimiento de las notificaciones en el dispositivo

correspondiente el Cron genera la notificacioacuten mediante el uso del servicio Google Cloud

Messaging (GCM) [51] En la Figura 19 se presentan las interfaces de la aplicacioacuten

desarrollada

Figura 19 Aplicacioacuten nativa para Android

Capiacutetulo 4 Experimentacioacuten

54

4142 Aplicacioacuten Nativa para iOS

La plataforma Apple iOS estaacute basada en un modelo propietario es por ello que el

desarrollo de una aplicacioacuten nativa iOS implica contar con una Apple Mac ejecutando OS

X con Xcode instalado El lenguaje de programacioacuten principal es Objective C Xcode es

el entorno de desarrollo de Apple para todos sus dispositivos y es el encargado de

proporcionar el iOS SDK con las herramientas compiladores y frameworks necesarios

Ademaacutes Xcode viene integrado con simuladores para dispositivos iOS (iPhones y iPads)

que facilitan las etapas de prueba del sistema desarrollado

Para los aspectos referentes a la interfaz graacutefica y la interaccioacuten con el usuario se

siguieron las convenciones propuestas por Apple [52] para lograr una mejor integracioacuten

de la aplicacioacuten con el sistema operativo y mejorar la experiencia del usuario

Por uacuteltimo para satisfacer el requerimiento de notificaciones el Cron notifica al

dispositivo iOS correspondiente mediante el uso del servicio Apple Push Notification

Service (APNs) [53] En la Figura 20 se presentan las interfaces de la aplicacioacuten

desarrollada

Figura 20 Aplicacioacuten nativa para iOS

4143 Aplicacioacuten Web Moacutevil

Se desarrolloacute una aplicacioacuten web capaz de acceder a la cartelera de WebUNLP

disponible para cualquier dispositivo moacutevil que cuente con un navegador que soporte las

caracteriacutesticas utilizadas para el desarrollo HTML5 CSS3 y Javascript

Como la velocidad de transmisioacutenrecepcioacuten de datos de un dispositivo moacutevil a

traveacutes de WiFi y en particular 3G es inferior a la velocidad de una computadora de

Capiacutetulo 4 Experimentacioacuten

55

escritorio la versioacuten web de la cartelera de WebUNLP es liviana y gran parte de los

requerimientos son implementados a traveacutes de Ajax [54] para evitar ante alguacuten cambio

la recarga de la paacutegina completa

Debido a las limitaciones que tienen las aplicaciones que se ejecutan sobre un

navegador no es posible implementar la recepcioacuten de una notificacioacuten en el dispositivo

cuando una novedad es publicada en la cartelera

4144 Aplicacioacuten Hiacutebrida desarrollada con PhoneGap y Jquery Mobile

Para la construccioacuten de la aplicacioacuten WebUNLP hiacutebrida se utilizoacute el framework

PhoneGap [27] el cual permite desarrollar aplicaciones moacuteviles que utiliza tecnologiacuteas

comunes a todos los dispositivos HTML5 CSS y Javascript

Asimismo se utilizoacute el framework Javascript Jquery Mobile [55] para lograr

interfaces con apariencia y comportamiento consistente a traveacutes de las diferentes

plataformas moacuteviles

Con el objetivo de implementar el patroacuten de disentildeo MVC se utilizoacute la libreriacutea

Backbonejs [36]

Por uacuteltimo para satisfacer el requerimiento de notificaciones se utilizoacute el plugin

Pushwoosh [56]

En la figura 5 se presentan las interfaces de la aplicacioacuten desarrollada

Figura 21 Aplicacioacuten hiacutebrida desarrollada con PhoneGap

Capiacutetulo 4 Experimentacioacuten

56

4145 Aplicacioacuten Hiacutebrida desarrollada con Sencha Touch

El desarrollo de WebUNLP utilizando Sencha Touch se vio favorecido por el uso

del patroacuten de disentildeo MVC Esto permitioacute mayor flexibilidad y legibilidad en el coacutedigo

[57] [34]

Sencha ofrece Sencha Command una herramienta multiplataforma de liacutenea de

comandos que provee tareas automatizadas para todo el ciclo completo de una aplicacioacuten

En el caso de WebUNLP se utilizoacute tanto para la generacioacuten del proyecto como para el

empaquetado de la aplicacioacuten

En la Figura 22 se presentan las interfaces de la aplicacioacuten desarrollada

Figura 22 Aplicacioacuten desarrollada con Sencha Touch

4146 Aplicacioacuten Interpretada de WebUNLP con Appcelerator Titanium 3

Para desarrollar una aplicacioacuten moacutevil experimental seguacuten el enfoque interpretado

se utilizoacute el entorno de desarrollo gratuito y open source Appcelerator Titanium 3 [35]

Se destaca la simplicidad y legibilidad de los controladores y modelos de la

aplicacioacuten desarrollada luego de utilizar Alloy el framework de Titanium que permite

disentildear aplicaciones seguacuten el patroacuten de disentildeo MVC Para la construccioacuten de las vistas se

puede optar por la programacioacuten mediante Javascript y la API de Titanium o bien por

una especificacioacuten XML con estilos TSS (Titanium Style Sheets) Esta uacuteltima opcioacuten

simplifica el proceso de creacioacuten de las vistas aunque falta todaviacutea un buen editor visual

de interfaces que lo potencie

Capiacutetulo 4 Experimentacioacuten

57

Para cubrir requerimientos de notificaciones en el dispositivo Titanium provee el

moacutedulo PushNotifications para plataformas Android e iOS

La Figura 24 (a) muestra la experimentacioacuten con Titanium

4147 Aplicacioacuten Generada por Compilacioacuten Cruzada de WebUNLP utilizando XamarinVisual Studio

Tal como se mencionoacute en la seccioacuten 341 Xamarin propone un enfoque de

desarrollo multiplataforma en el que se comparte la codificacioacuten completa de la loacutegica

del negocio Sin embargo las interfaces deben ser programadas de manera independiente

para cada una de las plataformas destino (ver Figura 23) Asiacute la reutilizacioacuten de coacutedigo

seguacuten estudios estadiacutesticos de la compantildeiacutea Xamarin es cercana al 85

Figura 23 Enfoque uacutenico de desarrollo Xamarin

Para el estudio de las aplicaciones generadas por compilacioacuten cruzada se desarrolloacute

la aplicacioacuten moacutevil de WebUNLP utilizando Xamarin integrado con Microsoft Visual

Studio Siguiendo la estrategia maacutes eficiente para trabajar en este entorno se ha creado

una solucioacuten uacutenica conteniendo tres proyectos distintos Uno de ellos se utilizoacute para

generar la aplicacioacuten Android otro para la aplicacioacuten Windwos Phone 8 y el tercero para

la implementacioacuten de una biblioteca de clases portable (PCL por sus siglas en ingleacutes) con

todo el coacutedigo compartido Los tres proyectos fueron desarrollaacutendose de manera conjunta

y concurrente

Aunque una de las ventajas maacutes importantes de Xamarin es la reutilizacioacuten de

coacutedigo eacutesta se ve fuertemente afectada por el tipo de aplicacioacuten que se desarrolla La

relacioacuten existente entre la complejidad de la interfaz y la loacutegica del negocio impacta

directamente sobre la posibilidad de mantener la mayor cantidad de coacutedigo compartido

Capiacutetulo 4 Experimentacioacuten

58

en la PCL En el desarrollo de WebUNLP la reutilizacioacuten de coacutedigo ha sido cercana al

50 Sin embargo no debe despreciarse la ventaja de utilizar el mismo lenguaje entorno

y conjunto de herramientas comunes en el desarrollo de aplicaciones para distintas

plataformas moacuteviles

La Figura 24 (b) presenta la interfaz desarrollada para Windows Phone 8

4148 Aplicacioacuten Generada por Compilacioacuten Cruzada de WebUNLP utilizando Delphi 10 Seattle

Para el profundizar el estudio de las aplicaciones generadas por compilacioacuten

cruzada ademaacutes se desarrolloacute la aplicacioacuten moacutevil de WebUNLP utilizando Delphi 10

Seattle En particular fueron de gran utilidad tanto los componentes provistos por Delphi

para acceder a servicios RESTful como el entorno visual de desarrollo de Delphi 10

Seattle

Para la recepcioacuten de notificaciones en el dispositivo de las novedades de WebUNLP

se utilizoacute el componente TPushEvent conectado al servicio Kinvey [58]

La Figura 24 (c) presenta la interfaz de la aplicacioacuten desarrollada

(a) (b) (c)

Figura 24 Aplicacioacuten desarrollada con a) Titanium b) XamarinVisual Studio y c) Delphi XE

415 Conclusiones del experimento WebUNLP Seleccionar un dominio para desarrollar un caso experimental tiene sus

particularidades La novedad de disponer una aplicacioacuten moacutevil no es motivo suficiente

que justifique tal desarrollo Es necesario satisfacer un conjunto de requerimientos

claramente planteados

Capiacutetulo 4 Experimentacioacuten

59

WebUNLP es un entorno virtual de ensentildeanza y aprendizaje utilizado por diversos

cursos de grado y postgrado de la Universidad Nacional de La Plata Por ende la cantidad

de usuarios beneficiados por acceder desde cualquier lugar a este entorno es importante

De esta manera se optoacute por elegir dicho espacio virtual para ser replicado en una

versioacuten moacutevil que no soacutelo permita acercarlo a sus usuarios sino que ademaacutes ampliacutee sus

funciones en este caso puntualmente para la cartelera

Para el desarrollo de esta experimentacioacuten se desarrolloacute la misma aplicacioacuten para

los cinco tipos de enfoques de desarrollo moacutevil (web nativa hiacutebrida interpretada y

generada por compilacioacuten cruzada)

Se destaca la gran simpleza de generar la versioacuten web dado que se utilizan las

mismas herramientas tecnoloacutegicas que las usadas para el desarrollo de cualquier

aplicacioacuten web tradicional La principal diferencia en este sentido radica en la limitacioacuten

de espacio en la pantalla del dispositivo No obstante el mayor contraste estaacute dado en que

no es posible acceder a todas las capacidades de hardware del dispositivo lo que impidioacute

implementar uno de los requerimientos probablemente el maacutes interesante la notificacioacuten

de novedades de la cartelera de WebUNLP al usuario

Por otra parte las versiones nativas han cumplido todos los requerimientos Aunque

la mayor desventaja consiste en la no portabilidad lo que implicoacute un desarrollo especiacutefico

para la plataforma que se desee cubrir En este trabajo se han presentado los desarrollos

para Android e iOS sistemas operativos maacutes usados en Argentina con un costo de

desarrollo y mantenimiento inherente mayor

Para el caso del enfoque hiacutebrido tanto la versioacuten de WebUNLP desarrollada con

PhoneGap y Jquery Mobile como la versioacuten desarrollada con Sencha Touch han logrado

conjugar la simpleza del desarrollo web con el uso de todas las capacidades del

dispositivo Este tipo de enfoque pretende suplir las desventajas de los dos enfoques

previos hecho que lo posiciona como una eleccioacuten realmente interesante siempre

condicionada por los requerimientos especiacuteficos a cumplir

Por el lado del modo de desarrollo interpretado la versioacuten de WebUNLP

desarrollada con Titanium logroacute resolver todos los requerimientos previamente

planteados Al igual que en el enfoque hiacutebrido es un punto a destacar que el desarrollo

de la aplicacioacuten con Titanium es relativamente simple y es posible reutilizar todo el

Capiacutetulo 4 Experimentacioacuten

60

coacutedigo entre plataformas Lo que lo hace la eleccioacuten prima facie es el hecho de obtener

interfaces totalmente nativas algo que no se lograba mediante el enfoque hiacutebrido

Por uacuteltimo las versiones de WebUNLP generadas con el enfoque de compilacioacuten

cruzada con Xamarin y Delphi lograron cumplir los requerimientos planteados Se

destaca el hecho de que se genera interfaces totalmente nativas pero considero que el

costo es muy alto se debe disentildear las interfaces para cada plataforma de manera

independiente lo que hace que no se pueda reutilizar todo el coacutedigo fuente de la

aplicacioacuten

42 Enfoques de desarrollo Anaacutelisis comparativo de rendimiento 421 Descripcioacuten del Problema

Hace apenas unas deacutecadas atraacutes el uso de los sistemas de software estaba

restringido a un grupo reducido de usuarios especializados Aquella eacutepoca contrasta

fuertemente con la actualidad en la que los smartphones pequentildeas computadoras moacuteviles

de propoacutesito general se han vuelto cotidianos y omnipresentes Estos dispositivos pueden

utilizarse para llevar a cabo tareas complejas y criacuteticas requiriendo la mejora continua de

las capacidades de coacutemputo la disponibilidad el rendimiento eficiente entre otras

necesidades La evolucioacuten vertiginosa de esta tecnologiacutea ejerce presioacuten en la adaptacioacuten

de la Ingenieriacutea de Software

Respecto del desarrollo para dispositivos moacuteviles se debe considerar una serie de

caracteriacutesticas propias de esta actividad que no estaban presentes en el desarrollo

tradicional de software [59] Es necesario tener en cuenta sobre queacute tipo de dispositivos

se debe ejecutar la aplicacioacuten a construir La diversidad de plataformas lenguajes de

programacioacuten herramientas de desarrollo estaacutendares protocolos y tecnologiacuteas de red

algunas limitaciones de ciertos dispositivos y las exigencias de tiempo del mercado entre

otros constituyen algunos de los problemas a tratar

En la mayoriacutea de los casos el eacutexito de un producto de software para dispositivos

moacuteviles estaraacute condicionado por el nivel de popularidad que logre alcanzar Para

maximizar su presencia en el mercado es necesario que la aplicacioacuten pueda ejecutarse

sobre la mayor cantidad de plataformas moacuteviles existentes especialmente sobre las dos

maacutes populares Android e iOS [60] Para lograr este objetivo existen dos alternativas

Capiacutetulo 4 Experimentacioacuten

61

i) Desarrollar aplicaciones especiacuteficas para cada plataforma impulsando en

paralelo varios proyectos de desarrollo con las herramientas y lenguajes propios de cada

una de ellas Estas aplicaciones analizadas previamente en este trabajo se denominan

aplicaciones nativas

ii) Generar aplicaciones que puedan ejecutarse en forma directa sobre maacutes de una

plataforma de sistema operativo a partir de un uacutenico proyecto de desarrollo Estas

aplicaciones como ya se ha presentado en este trabajo se denominan aplicaciones

multiplataforma

En los uacuteltimos antildeos se ha incrementado el intereacutes de la comunidad de Ingenieriacutea de

Software por el estudio del desarrollo de aplicaciones multiplataforma para dispositivos

moacuteviles

En [5] se presenta un anaacutelisis comparativo de enfoques de desarrollo de aplicaciones

multiplataforma para dispositivos moacuteviles proponiendo la siguiente taxonomiacutea

aplicaciones web moacuteviles aplicaciones hiacutebridas aplicaciones interpretadas y

aplicaciones generadas por compilacioacuten cruzada

En [7] y [8] se analizan aspectos generales de frameworks de desarrollo

multiplataforma para dispositivos moacuteviles

En [61] se comparan aspectos no funcionales para los diferentes enfoques de

desarrollo de aplicaciones multiplataforma para dispositivos moacuteviles

En [9] se analizaron ventajas y desventajas de los enfoques de desarrollo

multiplataforma mencionados desde el punto de vista del Ingeniero de Software

La eleccioacuten del modo de desarrollo de aplicaciones para dispositivos moacuteviles

depende de varios factores Uno de ellos en muchos casos esencial es el tiempo de

ejecucioacuten El intereacutes por optimizar el tiempo de ejecucioacuten de una aplicacioacuten de software

es intriacutenseco a la disciplina informaacutetica Esto se evidencia entre otras cosas por la

evolucioacuten del poder de coacutemputo de los procesadores Ademaacutes el rendimiento eficiente

es uno de los atributos que las aplicaciones de software deben satisfacer seguacuten diversos

estaacutendares de calidad entre otros ISOIEC 9126 e ISOIEC 25010 [62]

En lo que respecta al desarrollo de aplicaciones para dispositivos moacuteviles es

oportuno considerar el tiempo de ejecucioacuten de las aplicaciones por diversos motivos

El tiempo de ejecucioacuten de una aplicacioacuten estaacute fuertemente ligado al consumo de

Capiacutetulo 4 Experimentacioacuten

62

energiacutea [63] el cual estaacute limitado por la capacidad de la bateriacutea de los dispositivos

Asimismo el rendimiento de las aplicaciones se ve reflejado principalmente

mediante las calificaciones de los usuarios en las tiendas de aplicaciones en liacutenea

Aplicaciones con bajo rendimiento pueden implicar usuarios disconformes produciendo

publicidad negativa [60] Andre Charland y Brian Leroux identifican al tiempo de

ejecucioacuten como uno de los problemas principales a resolver en el desarrollo de

aplicaciones multiplataforma y afirman que a los usuarios finales les preocupa la calidad

del software y la experiencia de uso [64]

Corral Sillitti y Succi realizaron un anaacutelisis de rendimiento comparativo entre

aplicaciones nativas y aplicaciones hiacutebridas utilizando el framework Phonegap para una

versioacuten del sistema operativo Android [65]

Es importante destacar que no se han encontrado estudios que evaluacuteen y comparen

el rendimiento entre los diversos modos de desarrollo multiplataforma de acuerdo a la

taxonomiacutea propuesta en [5] aplicaciones web moacuteviles aplicaciones hiacutebridas

aplicaciones interpretadas y aplicaciones generadas por compilacioacuten cruzada Esta

taxonomiacutea es la que se utiliza de referencia en este trabajo

El presente apartado realiza un anaacutelisis comparativo de rendimiento de aplicaciones

para dispositivos moacuteviles generadas por el enfoque de desarrollo nativo y los distintos

enfoques de desarrollo multiplataforma seguacuten [5]

En la seccioacuten siguiente se describe el experimento utilizado para evaluar tiempos

de ejecucioacuten en aplicaciones nativas y en los diversos modos de desarrollo de aplicaciones

moacuteviles multiplataforma y en las secciones posteriores se muestran y analizan los

resultados obtenidos se presentan las conclusiones y el trabajo futuro

422 Desarrollo

4221 Disentildeo de las pruebas

Todas las pruebas cuyos resultados se presentan en este trabajo fueron realizadas

sobre dispositivos moacuteviles con sistemas operativos Android e iOS dado que en la

actualidad abarcan gran parte del mercado mundial de acuerdo a lo indicado en [60]

Para llevar a cabo la experimentacioacuten se seleccionaron los frameworks de desarrollo

multiplataforma seguacuten las alternativas presentadas en [10] Se disentildearon pruebas para

evaluar el rendimiento de Apache Cordova [28] Appcelerator Titanium [35] y Xamarin

Capiacutetulo 4 Experimentacioacuten

63

[41] que se corresponden con los modos de desarrollo hiacutebrido interpretado y compilacioacuten

cruzada respectivamente Tambieacuten se experimentoacute con otros dos frameworks de

desarrollo multiplataforma que recientemente han ganado popularidad NativeScript

(desarrollo interpretado) y Corona (compilacioacuten cruzada) Finalmente se incluyeron al

conjunto de pruebas las aplicaciones web y el enfoque nativo de desarrollo para Android

e iOS De este modo se logroacute una muestra razonablemente representativa de las diversas

opciones existentes en la actualidad

Para la realizacioacuten de las pruebas se utilizaron seis dispositivos moacuteviles distintos

(ver Tabla 2) tres de ellos con sistema operativo Android identificados como DA1 DA2 y

DA3 (dos smartphone y una tablet) y tres con sistema operativo iOS identificados como

DI1 DI2 y DI3 (dos smartphone y una tablet)

ID Sistema Operativo Caracteriacutesticas

DA1 Android 44

Tipo Smartphone Marca Motorola

Modelo Moto-G2 Procesador Quad-core 12 GHz Cortex-A7

RAM 1GB Snapdragon 400

DA2 Android 502

Tipo Smartphone Marca Samsung

Modelo S6 Procesador Octa-core (4x21 GHz Cortex-A57 amp 4x15

GHz Cortex-A53) RAM 3GB Exynos 7420 Octa

DA3 Android 422

Tipo Tablet Marca Samsung Modelo Tab 2

Procesador Dual-core 10 GHz RAM 1GB TI OMAP 4430

DI1 iOS 92

Tipo Smartphone Marca Apple Modelo 5S

Procesador Dual-core 13 GHz Cyclone (ARM v8-based)

RAM 1GB Apple A7

DI2 iOS 91

Tipo Smartphone Marca Apple

Modelo 6 plus Procesador Dual-core 14 GHz Typhoon (ARM v8-

based) RAM 1GB Apple A8

DI3 iOS 91 Tipo Tablet

Marca Apple Modelo Ipad Air

Capiacutetulo 4 Experimentacioacuten

64

Procesador Dual-core 13 GHz Cyclone (ARM v8-based)

RAM 1GB Apple A7 Tabla 2 Dispositivos moacuteviles utilizados en el experimento

Se definieron siete escenarios de anaacutelisis distintos uno por cada estrategia de

desarrollo utilizada

1 Nativo para Android y nativo para iOS 2 Aplicaciones web (multiplataforma) 3 Apache Cordova (multiplataforma hibrido) 4 Appcelerator Titanium (multiplataforma interpretado) 5 NativeScript (multiplataforma interpretado) 6 Xamarin (multiplataforma compilacioacuten cruzada) 7 Corona (multiplataforma compilacioacuten cruzada)

En los seis dispositivos se llevaron a cabo pruebas para cada uno de los siete

escenarios mencionados definiendo asiacute un total de 42 casos de prueba

Con el fin de evaluar la velocidad de procesamiento se planteoacute un caacutelculo simple

que incluyoacute varias iteraciones funciones matemaacuteticas y aritmeacutetica de punto flotante que

se resume en la siguiente serie

119904119890119903119894119890 =sum sum (log2(119896) +3119896

2119895+ radic119896

100000

119896=1

+ 119896119895minus1)

5

119895=1

A modo de ejemplo en la Figura 25 se muestra el coacutedigo multiplataforma

desarrollado en Apache Cordova para el caacutelculo de la serie definida

El experimento planteado permite medir con precisioacuten la variable analizada en este

caso el tiempo de ejecucioacuten requerido para realizar un caacutelculo matemaacutetico intensivo

Este tipo de caacutelculo matemaacutetico es frecuente en diversas aplicaciones que se

ejecutan en dispositivos moacuteviles por ejemplo juegos aplicaciones con realidad

aumentada aplicaciones para tratamiento de imaacutegenes entre otras en las cuales no

siempre es posible utilizar el poder de la Unidad de Procesamiento Grafico (GPU) para

el caacutelculo

El coacutedigo fuente de los experimentos llevados a cabo se encuentra disponible en

[66]

En las siguientes secciones se describe la experimentacioacuten y se analizan los

resultados obtenidos

Capiacutetulo 4 Experimentacioacuten

65

4222 Recoleccioacuten de datos

Para cada uno de los 42 casos de prueba definidos se realizaron 30 ejecuciones

independientes del experimento disentildeado obteniendo en cada caso una muestra T = T1

T2 hellip T30 con Ti = tiempo requerido para el caacutelculo de la serie en la i-eacutesima ejecucioacuten

del experimento planteado El tiempo Ti se expresa en milisegundos

Para caracterizar cada una de las muestras obtenidas se han calculado los

estadiacutesticos y S que se corresponden con la media (o promedio muestral) y la

desviacioacuten estaacutendar muestral (ver Tabla 3)

var startTime = new Date()getTime()

var serie = 0

for ( var j=1 j lt= 5 j++ )

for ( var k=1 k lt= 100000 k++ )

series = series + (Mathlog(k)MathLN2) + (3k2j) +

Mathsqrt(k) + Mathpow(k j-1)

var finalTime = new Date()getTime()

var duration = finalTime - startTime

documentgetElementById(result)innerHTML = duration + -gt + series

Figura 25 Caacutelculo de serie coacutedigo multiplataforma desarrollado en Apache Cordova

Capiacutetulo 4 Experimentacioacuten

66

Dada la muestra T=T1 T2 hellip Tn

Media o promedio muestral = (

1

119899)sum119879119894

119899

119894=1

Desviacioacuten estaacutendar muestral 119878 = radic

1

119899 minus 1sum(119879119894 minus )2119899

119894=1

Tabla 3 Estadiacutesticos utilizados en el anaacutelisis de los datos

423 Resultados Obtenidos En la Tabla 4 se presenta una siacutentesis de los resultados obtenidos conformada por

los valores y S calculados para cada caso de prueba planteado Estos valores permiten

comparar el rendimiento de las aplicaciones generadas a partir de los distintos enfoques

de desarrollo evaluadas sobre cada uno de los seis dispositivos utilizados

Los valores presentados en la Tabla 4 y graficados con diagramas de barras en la

Figura 26 sugieren un anaacutelisis por separado de los casos con sistema operativo Android

y los casos con sistema operativo iOS Claramente las siluetas delineadas en los

diagramas de barras de la Figura 26 se repiten de forma similar en los escenarios con el

mismo sistema operativo pero se diferencian notablemente entre distintos sistemas

operativos

Nativo WebApp Apache Cordova Titanium NativeScript Xamarin Corona

DA1 53293 18627 23033 21167 18730 39517 140173

S 1614 632 1422 2495 939 895 1260

DA2 21180 9067 8577 9563 8967 21100 60053

S 1997 1248 883 764 916 669 595

DA3 76380 17273 19060 19270 18350 37933 134430

S 2898 1551 936 1680 304 831 2339

DI1 413 5710 32373 29977 25203 12543 3963

S 078 1655 1662 401 728 1103 085

DI2 413 4190 26397 24113 22343 10303 9863

S 073 538 1544 495 861 491 613

DI3 253 4167 29223 27267 22597 11053 10967

S 057 444 1082 550 277 390 275

Tabla 4 Siacutentesis de resultados obtenidos

Capiacutetulo 4 Experimentacioacuten

67

Figura 26 Diagrama de barras con las muestras recolectadas (las barras muestran el tiempo promedio expresado en milisegundos)

Capiacutetulo 4 Experimentacioacuten

68

424 Anaacutelisis de Resultados Debido a las diferencias de hardware de los dispositivos utilizados no es prudente

comparar el rendimiento de las aplicaciones nativas en Android con respecto a las de

iOS No obstante de los resultados obtenidos es posible inferir que el enfoque nativo en

iOS resulta mucho maacutes eficiente que el enfoque nativo en Android Existen diversos

factores que presumen justificar este hecho entre ellos la diferencia inherente de ejecutar

coacutedigo Objective C en iOS comparado con ejecutar coacutedigo Java en Android el cual

necesita del Android Runtime (ART) para su funcionamiento ralentizaacutendolo

Respecto de las aplicaciones web multiplataforma los resultados de rendimiento

resaltaron positivamente en relacioacuten al resto tanto en Android como en iOS Asiacute el

enfoque de desarrollo multiplataforma web seriacutea una opcioacuten conveniente para alcanzar

un buen rendimiento en todos los dispositivos moacuteviles independientemente de su sistema

operativo Sin embargo esta eleccioacuten podriacutea verse afectada por las limitaciones de estas

aplicaciones para acceder en forma completa a las capacidades especiacuteficas del dispositivo

Respecto de los enfoques hiacutebrido e interpretado -analizados a traveacutes de las

tecnologiacuteas Coacuterdova Titanium y NativeScript- es importante destacar que si bien estos

enfoques trabajan de modo distinto entre siacute tienen algo en comuacuten la ejecucioacuten de coacutedigo

JavaScript En este sentido el motor de JavaScript -encargado de convertir el coacutedigo

JavaScript en coacutedigo optimizado para que luego lo interprete un WebView- cumple un

rol determinante Las pruebas de estos enfoques en Android -que utiliza el motor de

JavaScript V8- tuvieron un comportamiento similar al enfoque web y comportamiento

superior que el enfoque nativo y el enfoque de compilacioacuten cruzada Por el contrario en

los dispositivos moacuteviles con iOS -que utiliza el motor JavaScriptCore- los resultados de

estas pruebas fueron peores que en los enfoques nativos web y de compilacioacuten cruzada

En los dispositivos moacuteviles con iOS los casos de compilacioacuten cruzada -analizados

a traveacutes de las tecnologiacuteas Xamarin y Corona- obtuvieron mejores resultados que los

casos hiacutebridos e interpretados pero mostraron peor rendimiento que el enfoque nativo y

que el enfoque web En cambio en los dispositivos moacuteviles con Android los resultados

de las pruebas con las aplicaciones construidas mediante el enfoque de compilacioacuten

cruzada fueron los peores La necesidad de ejecucioacuten de coacutedigo Java a traveacutes del Android

Runtime entre otros factores justifican este resultado

Capiacutetulo 4 Experimentacioacuten

69

425 Conclusiones Se ha presentado un estudio comparativo sobre el tiempo de procesamiento de

aplicaciones de software para dispositivos moacuteviles generadas con distintos enfoques de

desarrollo

Los escenarios de prueba disentildeados incluyeron los dos sistemas operativos para

dispositivos moacuteviles con mayor presencia en el mercado Android e iOS ejecutaacutendose

cada uno de ellos sobre dos smartphones (considerados de gama media y gama alta al

momento en que este trabajo fue escrito) y una Tablet

Sobre estos seis dispositivos se realizoacute un estudio de rendimiento para las

aplicaciones construidas seguacuten los enfoques de desarrollo nativos y multiplataforma

mediante un conjunto de aplicaciones que fueron desarrolladas para tal fin

1 Aplicacioacuten nativa para Android 2 Aplicacioacuten nativa para iOS 3 Aplicacioacuten web (multiplataforma) 4 Aplicacioacuten Apache Cordova (multiplataforma hibrido) 5 Aplicacioacuten Appcelerator Titanium 6 (multiplataforma interpretado) 7 Aplicacioacuten NativeScript (multiplataforma interpretada) 8 Aplicacioacuten Xamarin (multiplataforma compilacioacuten cruzada) 9 Aplicacioacuten Corona (multiplataforma compilacioacuten cruzada)

En todos los dispositivos con sistema operativo Android el peor rendimiento fue

evidenciado por Corona seguido por el enfoque nativo y Xamarin Esta situacioacuten es

totalmente opuesta a los resultados obtenidos sobre el sistema operativo iOS en doacutende las

tecnologiacuteas de desarrollo mencionadas se mostraron siempre entre las cuatro mejores En

particular es destacable la supremaciacutea del enfoque nativo frente a todos los demaacutes para el

caso de los dispositivos con iOS

Respecto al mejor rendimiento en los dispositivos Android no es posible identificar

claramente cuaacutel es el enfoque maacutes conveniente Tanto las aplicaciones web como

Coacuterdova NativeScript y Titanium alcanzaron buenos resultados en relacioacuten al resto

Nuevamente esta situacioacuten se contrapone con los datos obtenidos sobre los dispositivos

iOS en los que Coacuterdova Titanium y NativeScript obtuvieron las peores mediciones entre

las tecnologiacuteas utilizadas No ocurrioacute lo mismo con las aplicaciones web en iOS que

tambieacuten produjeron buenos resultados en relacioacuten al resto

Capiacutetulo 4 Experimentacioacuten

70

En liacuteneas generales independientemente del sistema operativo las aplicaciones

web han mostrado un buen rendimiento si se consideran todos los casos analizados

Actualmente al desarrollar un sistema de software existe la posibilidad de generar

su versioacuten para dispositivos moacuteviles Esta tarea muchas veces no es simple y una de las

decisiones maacutes importantes a tomar es elegir el enfoque de desarrollo

A partir de este trabajo se dispone de un indicador de rendimiento que puede ser

uacutetil para el Ingeniero de Software que debe seleccionar un enfoque de desarrollo de

software para dispositivos moacuteviles

Por otra parte no se han encontrado trabajos de otros autores donde se haya

analizado el rendimiento en todos los enfoques de desarrollo de software para dispositivos

moacuteviles Este tema tal como se indicoacute en la introduccioacuten es importante para la

comunidad de Ingenieriacutea de Software y los trabajos analizados hasta el momento se han

concentrado solo en los enfoques nativos yo hiacutebridos

43 Anaacutelisis comparativo de enfoques de Desarrollo de Aplicaciones Moacuteviles

Como se estudioacute en las secciones anteriores existen diferentes enfoques de

desarrollo de aplicaciones moacuteviles

Una opcioacuten es desarrollar aplicaciones moacuteviles nativas las cuales hacen uso de

todas las capacidades del dispositivo moacutevil y permiten una alta experiencia de usuario

debido a que las interfaces de usuario se componen por componentes nativos resultando

semejantes al resto de las interfaces del sistema operativo No obstante el desarrollo no

puede ser reutilizado para dar soporte a otras familias de sistemas operativos implicando

mayores costos de desarrollo y mantenimiento

En contraposicioacuten al desarrollo nativo surgioacute el desarrollo multiplataforma dando

la posibilidad de desarrollar un uacutenico producto y ejecutarlo en diferentes plataformas En

este sentido se estudiaron diferentes enfoques desarrollo web moacutevil hiacutebrido

interpretado y generado por compilacioacuten cruzada Cada uno de estos enfoques cuenta con

ciertas caracteriacutesticas que naturalmente los hacen diferenciar con ventajas y

desventajas

Se identificaron diversos factores que pueden ser utilizados para analizar las

Capiacutetulo 4 Experimentacioacuten

71

aplicaciones que se generan mediante los enfoques de desarrollo nativo y

multiplataforma los cuales se detallan a continuacioacuten

Experiencia de usuario conjunto de factores y elementos que hacen referencia

al nivel de satisfaccioacuten total de los usuarios cuando utilizan un producto o sistema

El resultado es la generacioacuten de una percepcioacuten positiva o negativa de dicho

servicio producto o dispositivo

Plataformas alcanzadas se ha visto en capiacutetulos anteriores que existen distintas

familias de sistemas operativos Seguacuten el modo de desarrollo elegido se puede

desarrollar aplicaciones para una plataforma especiacutefica o por varias

Costo del desarrollo el desarrollo puede ser maacutes o menos costoso seguacuten si

requiere codificar las soluciones de forma especiacutefica para cada sistema operativo

o si es posible la reutilizacioacuten de coacutedigo

Costo del mantenimiento la correccioacuten de errores o agregados de nuevas

funcionalidades puede requerir codificar de forma especiacutefica para cada sistema

operativo Ademaacutes se debe tener en cuenta si deben convivir diferentes versiones

del mismo producto

Entorno de desarrollo integrado Software que asiste al programador en la

construccioacuten de aplicaciones

Interfaces de usuario factor que analiza los tipos de componentes utilizados para

construir las interfaces de usuario Como se mencionoacute al analizar los distintos

enfoques de desarrollo la eleccioacuten de la herramienta a utilizar incide en si las

interfaces estaraacuten compuestas mediante componentes nativos o componentes web

los cuales pueden ser decorados para simular componentes nativos

Acceso total al dispositivo posibilidad de acceder mediante las herramientas de

desarrollo a todas las capacidades del dispositivo como la caacutemara sensores entre

otros

Modo de instalacioacuten se refiere a si la aplicacioacuten puede ser instalada desde las

tiendas de aplicaciones o es accesible sin instalacioacuten desde un navegador de

Internet

Rendimiento factor que analiza la ejecucioacuten de tareas y los tiempos asociados

Capiacutetulo 4 Experimentacioacuten

72

en su resolucioacuten

Uso offline capacidad que tiene la aplicacioacuten de funcionar sin estar conectada a

internet

Distribucioacuten a traveacutes de las tiendas posibilidad de descargar la aplicacioacuten desde

las tiendas de aplicaciones

Categoriacuteas de aplicaciones a desarrollar tipo de aplicacioacuten que se desea

desarrollar

Porcentaje de coacutedigo a reutilizar Cantidad de liacuteneas de coacutedigo con respecto al

total que pueden ser reutilizadas para en la generacioacuten de aplicaciones

multiplataforma

Con el objetivo de estudiar coacutemo se comportan e inciden estos factores en los

distintos enfoques de desarrollo se realizoacute un estudio comparativo de los diferentes

criterios a tener en cuenta Dicho estudio se sintetiza en la Tabla 5

Capiacutetulo 4 Experimentacioacuten

73

Factor a analizar Desarrollo Nativo Desarrollo Web Desarrollo Hiacutebrido Desarrollo

Interpretado

Desarrollo Generado

por Compilacioacuten

Cruzada

Experiencia de Usuario

Alta Muy Baja Baja Alta Alta

Plataformas alcanzadas

Se desarrolla

exclusivamente

para una

plataforma destino

Cualquier

plataforma Se

necesita solo un

navegador y acceso a

internet

Es posible compilar

para Android iOS

Windows Phone

Es posible compilar

para Android iOS

Windows Phone

Es posible compilar

para Android iOS

Windows Phone

Costo del desarrollo

Muy Alto Muy Bajo Bajo Medio Medio a Alto

Costo del mantenimiento

Muy Alto Muy Bajo Medio Alto Alto a Muy Alto

Entorno de desarrollo integrado

IDE uacutenico por SO Muacuteltiples opciones Plugins para IDE

geneacutericos

Algunos frameworks

disponen de IDE

especiacutefico

IDE uacutenico por

framework

Interfaces de usuario

Nativas Web Web Nativas Nativas

Acceso total al dispositivo

Si No Si Si Si

Modo de instalacioacuten

Descargar desde la Sin instalaciones Descargar desde la Descargar desde la Descargar desde la

Capiacutetulo 4 Experimentacioacuten

74

Factor a analizar Desarrollo Nativo Desarrollo Web Desarrollo Hiacutebrido Desarrollo

Interpretado

Desarrollo Generado

por Compilacioacuten

Cruzada

tienda de

aplicaciones e

instalar

tienda de aplicaciones

e instalar

tienda de aplicaciones e

instalar

tienda de aplicaciones e

instalar

Rendimiento Muy Alto Muy Bajo Bajo a Medio Alto Medio a Alto

Uso offline Si No Si Si Si

Distribucioacuten a traveacutes de las tiendas

Si No Si Si Si

Categoriacutea de aplicaciones a desarrollar

Aplicaciones que

demandan muchos

recursos o que

requiere una alta

experiencia de

usuario

Sitios web existentes Sitios web

encapsulados como

aplicacioacuten para ser

distribuidas a traveacutes

de tiendas

Aplicaciones simples a

complejas

Aplicaciones simples a

complejas

Porcentaje de Coacutedigo a reutilizar

0 100 Cerca del 100 Cerca del 90 Entre el 60 y 85

Tabla 5 Anaacutelisis comparativo de enfoques de desarrollo de aplicaciones moacuteviles

Capiacutetulo 5 Conclusiones

75

Capiacutetulo 5 Conclusiones

Inicialmente los dispositivos moacuteviles fueron pensados y disentildeados con un propoacutesito

particular A traveacutes de los antildeos el crecimiento tecnoloacutegico ha permitido incorporar

funcionalidades adicionales lo que ha posibilitado expandir el marco de uso

Actualmente el poder de coacutemputo subyacente en una gran variedad de dispositivos

moacuteviles ha generado nuevas posibilidades lo que constituye un reto para los ingenieros

de software

Asimismo y tal como se mencionoacute en capiacutetulos anteriores existen diversos

sistemas operativos para dispositivos moacuteviles siendo los maacutes populares Android iOS y

Windows Phone Debido a que el eacutexito de un producto de software estaacute vinculado en

gran parte a su uso masivo surge la necesidad de desarrollar aplicaciones moacuteviles

teniendo en cuenta cada una de estas plataformas

El desarrollo de software para dispositivos moacuteviles tiene caracteriacutesticas propias que

difieren del desarrollo tradicional Esta actividad reciente impensada deacutecadas atraacutes

marca un antes y un despueacutes en la evolucioacuten de la Ingenieriacutea de Software Es de esperar

que dicha evolucioacuten continuacutee y por consiguiente que los enfoques de desarrollo para

dispositivos moacuteviles cambien o sean reemplazados por otros Es claro que por el

momento existen cinco posibilidades de desarrollo de una misma aplicacioacuten moacutevil

Aplicaciones nativas

Aplicaciones web

Aplicaciones hiacutebridas

Aplicaciones interpretadas

Aplicaciones generadas por compilacioacuten cruzada

Para un completo anaacutelisis de cada enfoque de desarrollo es que se disentildearon una

serie de casos de estudio El primero de ellos consistioacute en desarrollar una aplicacioacuten moacutevil

para cada enfoque de desarrollo presentado Teniendo este primer objetivo definido se

decidioacute extender el entorno virtual de ensentildeanza y aprendizaje WebUNLP a traveacutes de

una aplicacioacuten moacutevil enfocada en la cartelera de novedades de los cursos La aplicacioacuten

Capiacutetulo 5 Conclusiones

76

moacutevil debiacutea permitir el ingreso de alumnos y docentes con las mismas credenciales que

las utilizadas en la versioacuten web y debiacutea mostrar informacioacuten sincronizada con la web

sobre las novedades publicadas en las carteleras de los cursos Asimismo cuando los

docentes publiquen novedades aquellos alumnos pertenecientes al curso deben recibir

una notificacioacuten en su dispositivo moacutevil

Luego de desarrollar las aplicaciones moacuteviles para cada enfoque de desarrollo se

pueden elaborar algunas conclusiones

Se destaca la simpleza a la hora de generar la versioacuten web moacutevil pero se observan

limitaciones al no poder acceder a todas las capacidades de hardware del dispositivo

El desarrollo de las aplicaciones nativas resultoacute oacuteptimo si se lo compara con los

requerimientos oportunamente planteados con la desventaja de que las aplicaciones no

son portables implicando desarrollos especiacuteficos para cada plataforma que se desee

cubrir Por otro lado el desarrollo de las aplicaciones hibridas ndashutilizando PhoneGap y

Sencha- lograron conjugar la simpleza del desarrollo web con el uso de todas las

capacidades del dispositivo posicionaacutendolo como una eleccioacuten realmente interesante De

igual manera la aplicacioacuten interpretada desarrollada mediante Titanium logroacute resolver

todos los requerimientos previamente planteados se destaca que el desarrollo fue

relativamente simple y es posible reutilizar todo el coacutedigo entre plataformas El hecho de

obtener interfaces totalmente nativas la posiciona como la alternativa ideal Por uacuteltimo

las aplicaciones generadas con el enfoque de compilacioacuten cruzada (Delphi y Xamarin)

lograron cumplir los requerimientos planteados la obtencioacuten de interfaces totalmente

nativas es algo a destacar pero conlleva un alto costo ya que se debe disentildear las interfaces

para cada plataforma de manera independiente

El segundo experimento del presente trabajo consistioacute en analizar el rendimiento

de las aplicaciones generadas mediante cada enfoque de desarrollo En total se

desarrollaron mediante distintas tecnologiacuteas nueve aplicaciones Las pruebas se

realizaron en los dos sistemas operativos de mayor relevancia Android e iOS a traveacutes de

seis dispositivos (cuatro smartphones y dos tablets)

En todos los dispositivos con sistema operativo Android el peor rendimiento se

encontroacute en la aplicacioacuten generada por Corona seguido por el enfoque nativo y Xamarin

En cambio estas tecnologiacuteas se mostraron siempre entre las cuatro mejores sobre el

sistema operativo iOS

Capiacutetulo 5 Conclusiones

77

Respecto al mejor rendimiento en los dispositivos Android no es posible identificar

claramente cuaacutel es el enfoque maacutes conveniente Tanto las aplicaciones web como

Coacuterdova NativeScript y Titanium obtuvieron buenos resultados de rendimiento en

relacioacuten al resto Nuevamente esta situacioacuten se contrapone con los datos obtenidos sobre

los dispositivos iOS en los que Coacuterdova Titanium y NativeScript obtuvieron las peores

mediciones entre las tecnologiacuteas utilizadas No ocurrioacute lo mismo con las aplicaciones web

en iOS que tambieacuten produjeron buenos resultados en relacioacuten al resto

En liacuteneas generales independientemente del sistema operativo las aplicaciones

web han mostrado un buen rendimiento si se consideran todos los casos analizados

Por uacuteltimo se elaboroacute un anaacutelisis comparativo de las caracteriacutesticas inherentes a

cada enfoque de desarrollo Se identificaron ciertos factores de intereacutes que la comunidad

de ingenieriacutea de software considera al elegir queacute tecnologiacutea utilizar y se analizoacute su

impacto en cada enfoque de desarrollo

Capiacutetulo 6 Trabajo Futuro

78

Capiacutetulo 6 Trabajo Futuro

Si bien se estudiaron en el presente trabajo diversas tecnologiacuteas para el desarrollo

de aplicaciones moacuteviles se planea profundizar el estudio analizando otras herramientas

multiplataforma disponibles en el mercado como Ionic [32] NativeScript [38] Applause

[40] React Native [67] entre otras

Ademaacutes se plantea como liacutenea de trabajo futuro ampliar el anaacutelisis comparativo de

rendimiento incluyendo otros aspectos del desarrollo para dispositivos moacuteviles como

por ejemplo el acceso a disco el consumo de bateriacutea y el tiempo de renderizacioacuten de

imaacutegenes

Por uacuteltimo es deseable estudiar la experiencia de usuario en las aplicaciones

generadas por cada enfoque de desarrollo de aplicaciones para dispositivos moacuteviles

Capiacutetulo 6 Trabajo Futuro

79

Bibliografiacutea

80

Bibliografiacutea

[1] A Talukder H Ahmed and R Yavagal Mobile Computing Technology Applications and Service Creation Tata McGraw-Hill Ed 2010

[2] Abrahamsson P et al Mobile-D An Agile Approach for Mobile Application Development in In Companion To the 19th Annual ACM SIGPLAN Conference on Object-Oriented Programming Systems Languages and Applications (OOPSLA 04 ) Vancouver Canada 2004 pp 174-175

[3] P Abrahamsson Mobile software development - the business opportunity of today in Proceedings of the International Conference on Software Development Reykjavik 2005

[4] I S Hayes Just Enough Wireless Computing Prentice Hall Professional Technical 2002

[5] Stelios Xinogalos Spyros Xanthopoulos A Comparative Analysis of Cross-platform Development Approaches for Mobile Applications in Proceedings of the 6th Balkan Conference in Informatics Thessaloniki Greece 2013 pp 213-220

[6] Tolety SB Raj R A study on approaches to build cross-platform mobile applications and criteria to select appropriate approach in India Conference (INDICON) 2012 Annual IEEE India 2012

[7] Yonathan Aklilu Redda Cross platform Mobile Applications Development in Master in Information Systems Norwegian University of Science and Technology Norway 2012

[8] Datta SK Bonnet C Nikaein N Dalmasso I Survey comparison and evaluation of cross platform mobile application development tools in Wireless Communications and Mobile Computing Conference (IWCMC) Cagliari Sardinia Italia 2013

[9] Lisandro Deliacutea Nicolaacutes Galdaacutemez Pablo Thomas and Patricia Pesado An Experimental Analysis of Application Types for Mobile Devices in Computer Science amp Technology Series - XIX Argentine Congress of Computer Science - Selected Papers Editorial de la Universidad de La Plata 2014 pp 173 -183

[10] Lisandro Deliacutea Nicolaacutes Galdamez Pablo Thomas Leonardo Corbalaacuten and Patricia Pesado Multi-Platform Mobile Application Development Analysis in IEEE Ninth International Conference on Research Challenges in Information Science - IEEE RCIS Atenas Grecia May 2015

[11] Telam [Online] httpwwwtelamcomarnotas201504102073-telefonia-movil-lineas-activashtml

Bibliografiacutea

81

[12] RTVE [Online] httpwwwrtveesnoticias20110212evolucion-del-telefono-movil-del-zapatofono-smartphones404523shtml

[13] Vodafone [Online] httpblogvodafonecouk20130829vodafone-uks-ceo-guy-laurence-4g-finally-has-a-purpose

[14] Muy Canal [Online] httpwwwmuycanalcom20140131futuro-del-telefono-movil

[15] Statcounter [Online] httpgsstatcountercom

[16] Anthony I Wasserman Software Engineering Issues for Mobile Application Development 2010

[17] Statista [Online] httpwwwstatistacom

[18] Lisandro Deliacutea Nicolaacutes Galdamez Pablo Thomas Leonardo Corbalaacuten and Patricia Pesado Anaacutelisis Experimental de desarrollo de Aplicaciones Moacuteviles Multiplataforma in XX Congreso Argentino de Ciencias de la Computacioacuten CACIC 2014 San Justo Argentina octubre 2014

[19] Lisandro Deliacutea Nicolaacutes Galdamez Pablo Thomas and Patricia Pesado Un Anaacutelisis Experimental de Tipo de Aplicaciones para Dispositivos Moacuteviles in XIX Congreso Argentino de Ciencias de la Computacioacuten CACIC 2013 Mar del Plata Argentina 2013

[20] Abhinay Puvvala Amitava Dutta Rahul Roy and Priya Seetharaman Mobile Application Developersrsquo Platform Choice Model in 2016 49th Hawaii International Conference on System Sciences (HICSS) Koloa Hawaii 2016

[21] Android Dashboard [Online] httpsdeveloperandroidcomaboutdashboardsindexhtml

[22] Xcode [Online] httpsdeveloperapplecomxcode

[23] KW Tracy Mobile Application Development Experiences on Applersquos iOS and

Android OS Potentials IEEE vol 31 no 4 July-Aug 2012

[24] Google Recommendations for building smartphone-optimized websites [Online] httpgooglewebmastercentralblogspotcomar

[25] Bootstrap [Online] httpgetbootstrapcom

[26] Foundation [Online] httpfoundationzurbcom

[27] PhoneGap [Online] httpphonegapcom

[28] Apache Cordova [Online] httpscordovaapacheorg

Bibliografiacutea

82

[29] Adobe PhoneGap Build [Online] httpsbuildphonegapcom

[30] CocoonJS [Online] httpscocoonio

[31] Ludei [Online] httpswwwludeicom

[32] Ionic [Online] httpionicframeworkcom

[33] Sencha [Online] httpswwwsenchacomproductstouchoverview

[34] A Kosmaczewski Sencha Touch 2 Up and Running OrsquoReilly 2013

[35] Appcelerator Titanium [Online] httpwwwappceleratorcomproduct

[36] Backbone [Online] httpbackbonejsorg

[37] Underscorejs [Online] httpunderscorejsorg

[38] NativeScript [Online] httpswwwnativescriptorg

[39] TypeScript [Online] httpswwwtypescriptlangorg

[40] applause [Online] httpwwwapplausecom

[41] Xamarin [Online] wwwxamarincom

[42] Delphi [Online] httpswwwembarcaderocomproductsdelphi

[43] RubyMotion [Online] httpwwwrubymotioncom

[44] Xtext [Online] httpwwweclipseorgXtext

[45] Mono [Online] httpwwwmono-projectcom

[46] [Online] httpswebunlpeadunlpeduar

[47] I Salmre Writing Mobile Code Essential Software Engineering for Building Mobile Applications Addison Wesley Professional 2005

[48] Mapbox [Online] httpswwwmapboxcomlabstwitter-gnipbrands

[49] Ruby S Richardson L RESTful Web Services OrsquoReilly Media 2007

[50] Matthew J Hamm Wireframing Essentials Packt Publishing 2014

[51] GCM [Online] httpsdevelopersgooglecomcloud-messaging

[52] iOS Human Interface Guidelines [Online] httpsdeveloperapplecomioshuman-interface-guidelinesoverviewdesign-principles

[53] APN [Online] httpdeveloperapplecomlibrarymacdocumentationNetworkingInternetConceptual

Bibliografiacutea

83

RemoteNotificationsPGChaptersApplePushServicehtmlapple_refdocuidTP40008194-CH100-SW9

[54] Mark Norm Norman Francis Christian Heilmann Web Development Solutions Ajax APIs Libraries and Hosted Services Made Easy Apress 2007

[55] JqueryMobile [Online] httpsjquerymobilecom

[56] Pushwoosh [Online] httpsgithubcomPushwooshpushwoosh-phonegap-plugin

[57] J Clark Creating Mobile Apps with Sencha Touch 2 Packt Publishing 2013

[58] Kinvey [Online] httpwwwkinveycom

[59] Ali Mesbah Philippe Kruchten Mona Erfani Joorabchi Real Challenges in Mobile App Development in ACM IEEE International Symposium on Empirical Software Engineering and Measurement Baltimore Maryland US 2013

[60] Andreacute Nitze Andreas Schmietendorf Florian Roumlsler Towards a Mobile Application Performance Benchmark in ICIW 2014 The Ninth International Conference on Internet and Web Applications and Services Paris France 2014

[61] Sebastian Hanschke and Tim A Majchrzak Henning Heitkoumltter Comparing Cross Platform Development approaches For Mobile Applications in 8th International Conference on Web Information Systems and Technologies (WEBIST) Porto Portugal 2012

[62] HW Kim SG Chung CS Jung Measuring Software Quality A Survey of ISOIEC 9126 IEEE Software vol 21 no 5 pp 88 ndash 92 SeptemberOctober 2004

[63] Luis Corral Anton B Georgiev Alberto Sillitti and Giancarlo Succi Can execution time describe accurately the energy consumption of mobile apps An experiment in Android GREENS 2014 Proceedings of the 3rd International Workshop on Green and Sustainable Software pp 31-37 June 2014

[64] Brian Leroux Andre Charland Mobile application development web vs native Magazine Communications of the ACM vol 54 no 5 pp 49-53 May 2011

[65] Luis Corral Alberto Sillitti and Giancarlo Succi Mobile multiplatform development An experiment for performance analysis in The 9th International Conference on Mobile Web Information Systems (MobiWIS) Ontario Canada 2012

[66] Repositorio Git III-LIDI [Online] httpsgitlabcomiii-lidiperformance-assessment-multiplatform-mobile-applicationstreemaster

[67] React Native [Online] httpsfacebookgithubioreact-native

[68] Lisandro Galdaacutemez Nicolaacutes Corbalaacuten Leonardo Thomas Pablo Pesado Patricia Deliacutea Un anaacutelisis comparativo de rendimiento en aplicaciones moacuteviles

Bibliografiacutea

84

multiplataforma in XXI Congreso Argentino de Ciencias de la Computacioacuten Juniacuten 2015

Page 14: Desarrollo de Aplicaciones Móviles Multiplataforma

Capiacutetulo 1 Tecnologiacutea Moacutevil

14

reposo) Estaacute basada completamente en el protocolo IP siendo un sistema de sistemas y

una red de redes que se alcanza gracias a la convergencia entre las redes de cables e

inalaacutembricas Seguacuten Vodafone ldquoel 4G tiene finalmente una razoacuten y es el entretenimientordquo

[13] La norma Long Term Evolution (LTE) es la maacutes extendida aunque no la uacutenica

existente

5G seraacute la nueva revisioacuten del sistema de conexioacuten de red sin cables y se espera que

esteacute disponible en el antildeo 2020 (Figura 3) en paiacuteses como Corea del Sur como asiacute tambieacuten

en Europa Como 4G la mayor velocidad de transferencia seraacute su mayor avance con

velocidades de descarga de hasta 10 Gbps (125 GBs) [14]

Figura 3 Evolucioacuten de los protocolos para redes de comunicacioacuten moacuteviles

13 La actualidad

Muchas de las actividades que un tiempo atraacutes soliacutean hacerse desde una

computadora tales como revisar el correo electroacutenico escuchar muacutesica agendar una

nueva cita en el calendario compartir fotos en alguna red social entre muchiacutesimas otras

en nuestros diacuteas se llevan a cabo de forma natural desde los dispositivos moacuteviles La

Figura 4 muestra coacutemo los dispositivos moacuteviles les han ganado terreno a los equipos

Capiacutetulo 1 Tecnologiacutea Moacutevil

15

tradicionales denominados lsquode escritoriorsquo

Figura 4 Comparacioacuten entre plataformas [15]

En la actualidad existen cientos de modelos diferentes de dispositivos moacuteviles y

los fabricantes siguen innovando intentando destacarse sobre la competencia Hoy en diacutea

no nos sorprende encontrar dispositivos moacuteviles con procesadores quad-core de 22 Ghz

Incluso ya se comienzan a conocer prototipos de dispositivos con ocho o diez nuacutecleos

De la mano de los procesadores la memoria RAM de los dispositivos moacuteviles

tambieacuten ha crecido considerablemente llegando a comercializarse dispositivos con 3 GB

de memoria

La caacutemara de los dispositivos es otra de las capacidades que maacutes ha progresado

llegando a encontrarse sensores de 20 MP y la posibilidad de grabar videos en formato

UHD 4K (3840 x 2160)

El tamantildeo de las pantallas y sus resoluciones fueron otra de las caracteriacutesticas que

maacutes han evolucionado Es posible encontrar dispositivos con pantallas de 5 pulgadas con

posibilidad de visualizar 16 millones de colores y con resoluciones Quad HD (2560 x

1440)

La tecnologiacutea de las bateriacuteas es un aspecto en que no se ha logrado grandes avances

en el sector ni se pronostican grandes progresos a corto plazo Incluso la llegada de chips

Capiacutetulo 1 Tecnologiacutea Moacutevil

16

maacutes potentes mayores pantallas o el 4G disminuiraacuten auacuten maacutes la autonomiacutea de las bateriacuteas

El uacuteltimo aspecto a mencionar es el de las capacidades del dispositivo Ademaacutes de

los ya claacutesicos sensores Global Positioning System (GPS) la capacidad de conectividad

viacutea bluetooth infrarrojo y WIFI hoy surge una diversidad de opciones que pueden

disponer los teleacutefonos inteligentes

Por el lado de la conectividad cada vez es maacutes comuacuten encontrar terminales con

mecanismos de comunicacioacuten Near Field Communication (NFC) o WIFI Direct

Con respecto a los sensores actualmente existen dispositivos que cuentan con

aceleroacutemetros giroscopios y magnetoacutemetros los cuales brindan a los desarrolladores de

aplicaciones la posibilidad de controlar la posicioacuten del aparato la aceleracioacuten que sufre

el dispositivo con respecto a la fuerza de la gravedad etc Tambieacuten es comuacuten el uso de

sensores de proximidad por ejemplo para apagar la pantalla mientras se atiende una

llamada El sensor de luminosidad permite medir el brillo de la luz ambiental Asiacute el

software del teleacutefono utiliza estos datos para ajustar el brillo de la pantalla

automaacuteticamente hacieacutendola maacutes clara o maacutes oscura

Los uacuteltimos smartphones de gama alta tambieacuten son capaces de medir la presioacuten

atmosfeacuterica a traveacutes de un baroacutemetro Los datos que mide el dispositivo sirven para

determinar en queacute nivel por encima del mar se encuentra el teleacutefono lo que se traduce en

la mejora de la precisioacuten del GPS

Incluso ya existen dispositivos que cuentan con un sensor de humedad del aire el

cual permite controlar los niveles de humedad para por ejemplo ayudar a las personas

con problemas respiratorios

Como si todo esto fuese poco existen modelos con podoacutemetro -para medir con

precisioacuten los pasos que da el usuario- pulsoacutemetro -para medir las pulsaciones a traveacutes de

los vasos sanguiacuteneos de los dedos- y hasta sensor de huellas digitales para cuestiones

relativas a la seguridad

Por lo anteriormente dicho los desarrolladores de aplicaciones para dispositivos

moacuteviles de la actualidad tienen el desafiacuteo de poder manipular desde sus aplicaciones

todas las posibilidades descriptas

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

17

Capiacutetulo 2 Desarrollo de

Aplicaciones Moacuteviles Nativas

Si bien el desarrollo de aplicaciones para dispositivos moacuteviles se remonta por lo

menos a 10 antildeos atraacutes ha habido un crecimiento exponencial desde que se abrioacute la tienda

de aplicaciones de iPhone en julio de 2008 Desde entonces los fabricantes de

dispositivos han creado tiendas de aplicaciones para otros dispositivos moacuteviles

incluyendo Android BlackBerry Nokia Ovi Windows Phone entre otros [16]

Actualmente el desarrollo de aplicaciones para dispositivos moacuteviles es un campo

en evolucioacuten con gran intereacutes econoacutemico y cientiacutefico Una prueba de esto es que para

Julio del 2014 se disponiacutean de maacutes de 3 millones de aplicaciones entre las principales

tiendas virtuales de aplicaciones Y solamente en el antildeo 2013 se contabilizaron 101

billones de descargas de aplicaciones moacuteviles en todo el mundo de las cuales 9 billones

fueron descargas pagas y 92 billones descargas gratuitas [17]

Con el actual creciente nuacutemero de plataformas moacuteviles desarrollar aplicaciones

moacuteviles se hizo muy difiacutecil para las empresas ya que necesitan desarrollar las mismas

aplicaciones para cada plataforma de destino

El desarrollo de aplicaciones nativas es la forma natural de implementar

aplicaciones moacuteviles Las aplicaciones nativas son concebidas para ejecutarse en una

plataforma especiacutefica es decir se debe considerar el tipo de dispositivo el sistema

operativo a utilizar y su versioacuten

Las aplicaciones nativas se desarrollan utilizando un entorno de desarrollo

integrado (IDE) que proporciona las herramientas de desarrollo necesarias para la

construccioacuten y depuracioacuten de aplicaciones El coacutedigo fuente se compila para obtener

coacutedigo ejecutable proceso similar que el utilizado para las tradicionales aplicaciones de

escritorio

Cuando la aplicacioacuten estaacute lista para ser distribuida debe ser transferida a las App

stores (tiendas de aplicaciones) especiacuteficas de cada sistema operativo Estas tiendas tienen

un proceso de auditoriacutea para evaluar si la aplicacioacuten se adecuacutea a los requerimientos de la

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

18

plataforma a operar Cumplido este paso la aplicacioacuten se pone a disposicioacuten de los

usuarios

La principal ventaja de este tipo de aplicaciones es la posibilidad de interactuar con

todas las capacidades del dispositivo (caacutemara GPS aceleroacutemetro agenda entre otras)

Ademaacutes no es estrictamente necesario poseer acceso a internet Su ejecucioacuten es raacutepida

puede ejecutarse en modo background y notificar al usuario cuando ocurra un evento que

necesite su atencioacuten

Claramente estas ventajas tienen como contrapartida un mayor costo de desarrollo

pues se debe utilizar un lenguaje de programacioacuten diferente seguacuten la plataforma Por ende

si se desea cubrir varias plataformas se deberaacute generar una aplicacioacuten para cada una de

ellas Esto conlleva a mayores costos de desarrollo actualizacioacuten y distribucioacuten de nuevas

versiones [9] [18] [19]

En la actualidad hay una gran cantidad de sistemas operativos para dispositivos

moacuteviles La Figura 5 muestra la utilizacioacuten de los sistemas operativos en los uacuteltimos antildeos

en todo el mundo mientras que la Figura 6 muestra la misma comparativa en Argentina

En ambos casos el ranking es liderado por Android seguido por iOS y en tercer lugar

Windows Phone [20]

Figura 5- Utilizacioacuten de Sistemas Operativos Moacuteviles en el mundo

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

19

Figura 6- Utilizacioacuten de Sistemas Operativos Moacuteviles en Argentina

A continuacioacuten se analizaraacute coacutemo es el proceso de desarrollo de aplicaciones

moacuteviles nativas en los sistemas operativos maacutes relevantes de la actualidad y luego en la

Tabla 1 se compararaacuten aspectos teacutecnicos de estas plataformas

21 Desarrollo de Aplicaciones Nativas en Android

Android es el sistema operativo maacutes utilizado en la actualidad Puede ser utilizado

en teleacutefonos inteligentes tablets relojes inteligentes televisores y automoacuteviles

Estaacute basado en Linux y es respaldado por Google

211 Evolucioacuten Inicialmente el desarrollo de Android era llevado a cabo por la empresa Android

Inc la cual fue fundada en el antildeo 2003 y recibiacutea respaldo econoacutemico por parte de Google

Antildeos maacutes tarde maacutes precisamente en Julio del 2005 Google adquiere Android y da lugar

a la primer versioacuten del sistema operativo en el antildeo 2007 Android 10 Apple Pie1

desarrollado sobre el kernel de Linux 26 En su presentacioacuten se hizo hincapieacute en que era

un sistema operativo para dispositivos moacuteviles totalmente gratuito y open source a

1 Desde la salida de la primera versioacuten del sistema operativo hasta el presente Google ha seguido la tradicioacuten de ponerle un nombre de postre a cada una de sus versiones siguiendo un orden alfabeacutetico

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

20

diferencia de iOS

La primera versioacuten comercial teniacutea mucho margen de mejora y apenas inquietoacute a la

competencia pero ya introduciacutea algunos conceptos que antildeos despueacutes son un estaacutendar de

los sistemas operativos moacuteviles

Menuacute desplegable de notificaciones

Widgets de escritorio

Android Market la tienda de apps (no contaba con ninguacuten sistema de pago para

usuarios Todo el cataacutelogo era gratuito)

Integracioacuten con Google Mail Contacts y Calendar

Navegador Maps Google Talk reproductor de YouTube y soporte para caacutemaras

En febrero del 2009 apenas 3 meses despueacutes del lanzamiento de Android 10 Apple

Pie llega la primera actualizacioacuten Android 11 Banana Bread No antildeadiacutea grandes

novedades pero siacute corregiacutea numerosos fallos detectados en la primera versioacuten e introduciacutea

un concepto por entonces poco usado por los rivales que buscaba facilitar la vida al

usuario las actualizaciones automaacuteticas con las que resultaba muy simple mantener todo

el software al diacutea

El 30 de abril del 2009 lanzan una nueva actualizacioacuten de gran importancia con

muchas novedades en cuanto a usabilidad Android 15 Cupcake Esta nueva versioacuten

introdujo las siguientes caracteriacutesticas

Teclado taacutectil QWERTY en pantalla con prediccioacuten de texto y diccionario de

usuarios para palabras personalizadas

Grabacioacuten y reproduccioacuten en formatos MPEG-4 y 3GP

Widget de escritorio de Google para realizar buacutesquedas directamente

SDK para el desarrollo de widgets de escritorio por parte de terceros

Funciones del portapapeles ampliadas

Interfaz para grabar y reproducir viacutedeos mejorada

Posibilidad de auto-rotacioacuten

Android 16 Donut apareciacutea en septiembre del 2009 con algunas novedades

adicionales

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

21

Soporte para CDMAEVDO 8021x VPN que ampliaba los mercados al alcance

de Android

Compatibilidad con distintas resoluciones de pantalla Soporte WVGA

Actualizacioacuten y nuevo disentildeo del Android Market

Utilidad de buacutesqueda universal en Internet y en el mismo dispositivo

Galeriacutea caacutemara y videocaacutemara con mejor integracioacuten con raacutepido acceso a la

caacutemara

Motor multi-lenguaje de Siacutentesis de habla para permitir a cualquier aplicacioacuten de

Android hablar una cadena de texto

Mejoras en las buacutesquedas por texto y voz

Apenas dos meses despueacutes en noviembre del 2009 lanzan Android 20 Eclair

uno de los cambios maacutes sustanciales sufridos por Android tanto a nivel de disentildeo como

de arquitectura interna Era una versioacuten dirigida a dispositivos de mayor tamantildeo en un

tiempo en el que los fabricantes empezaban a diversificar su oferta La versioacuten 21

mantuvo la misma nomenclatura y soacutelo corrigioacute algunos fallos pero su uso fue mayor

entre los fabricantes que la versioacuten anterior A continuacioacuten se mencionan algunas de las

nuevas caracteriacutesticas

Sincronizacioacuten de cuenta expandida permitiendo a los usuarios agregar muacuteltiples

cuentas al dispositivo para sincronizacioacuten de correo y contactos

Google Maps Navigation sistema de navegacioacuten GPS gratuito

Compatibilidad con Microsoft Exchange

Optimizacioacuten en velocidad de hardware y GUI renovada

Soporte para maacutes tamantildeos de pantalla y resoluciones con una mejor tasa de

contraste

Navegador actualizado soporte para HTML5 y barra de direccioacuten y buacutesqueda

unificada

Funcioacuten Speech to Text para escribir textos mediante el uso de la voz

Nueva pantalla de desbloqueo

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

22

Nuevas caracteriacutesticas para la caacutemara incluyendo soporte de flash zoom digital

modo escena balance de blancos efecto de colores y enfoque macro

Adicioacuten de fondos de pantalla animados permitiendo la animacioacuten de imaacutegenes

de fondo de la pantalla inicio para mostrar movimiento

El 20 de mayo del 2010 apareciacutea una nueva actualizacioacuten del sistema operativo

Android 22 Froyo Traiacutea numerosos cambios algunos copiados de otras ROMs y otros

con el uso empresarial en mente

Pantalla Home totalmente redisentildeada con 5 paneles en lugar de 3

Nueva galeriacutea de imaacutegenes

Soporte para actuar como hotspot2 para otros dispositivos tethering3 de datos

Soporte para Flash 101

Funcioacuten copiar y pegar mejorada en Google Mail

Nueva pantalla alternativa de desbloqueo mediante coacutedigo PIN

Grabacioacuten de viacutedeo en 720p

Optimizaciones en velocidad memoria y rendimiento Compilador JIT

Integracioacuten del motor de JavaScript V8 de Chrome en el navegador

Soporte para el servicio Android Cloud to Device Messaging (C2DM)

habilitando notificaciones push

El antildeo 2010 iba a concluir con el lanzamiento de una versioacuten sumamente popular

que prevalecioacute gran tiempo Android 23 Gingerbread Esta versioacuten contoacute con las

siguientes caracteriacutesticas

Disentildeo de la interfaz de usuario actualizado con incremento en velocidad y

simpleza

Nuevo disentildeo para el teclado numeacuterico en pantalla

Soporte para tamantildeos y resoluciones de pantalla extra-grandes (WXGA y

mayores)

Funcioacuten para copiar y pegar mejorada con soporte para caracteres individuales en

lugar de cajas de texto

2 lugar que ofrece acceso a Internet a traveacutes de una red inalaacutembrica y un enrutador conectado a un proveedor de servicios de Internet 3 proceso por el cual un dispositivo moacutevil con conexioacuten a Internet actuacutea como pasarela para ofrecer acceso a la red a otros dispositivos

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

23

Soporte para NFC

Herramientas de visualizacioacuten de consumo y uso de la bateriacutea mejoradas

Soporte para caacutemaras frontales

Acceso de bajo nivel para los desarrolladores de juegos

Recolector basura concurrente para incrementar el rendimiento

Sustitucioacuten del sistema de archivos YAFFS por ext4

Soporte nativo para maacutes sensores (tales como giroscopio y baroacutemetro)

Soporte de chat de video o voz usando Google Talk

En febrero del 2011 Google lanza Android 30 Honeycomb Se trata de una

actualizacioacuten especiacutefica para tablets no compatible con teleacutefonos que introduciacutea las

liacuteneas maestras de la interfaz en el futuro Las versiones 31 y 32 mantuvieron el mismo

nombre y fueron baacutesicamente un conjunto de correcciones A continuacioacuten se listan los

cambios significativos que tuvieron lugar en estas versiones

Pantalla de Inicio redisentildeada

Inclusioacuten de tonos azules en la interfaz en detrimento del verde tradicional

Nuevas funcionalidades para el emplazamiento y uso de widgets

Fin de los botones fiacutesicos Adaptacioacuten automaacutetica del SO seguacuten el dispositivo

Agregado de barra de sistema con caracteriacutesticas de acceso raacutepido a

notificaciones estados y botones de navegacioacuten suavizados disponible en la parte

inferior de la pantalla

Antildeadida la barra de accioacuten (Action Bar en ingleacutes) entregando acceso a opciones

contextuales navegacioacuten widgets u otros tipos de contenido en la parte superior

de la pantalla

Multitarea simplificada ndash tocando Aplicaciones recientes en la barra del sistema

permite a los usuarios ver instantaacuteneas de las tareas en curso y saltar raacutepidamente

de una aplicacioacuten a otra

Aceleracioacuten graacutefica mediante hardware

Optimizacioacuten del renderizado de graacuteficos 3D

Soporte para perifeacutericos USB

Octubre del 2011 fue el mes del lanzamiento de Android 40 Ice Cream Sandwich

basado en el nuacutecleo de Linux 301 Esta nueva versioacuten introdujo las siguientes mejoras

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

24

Nueva Interfaz Holo y fuente tipograacutefica Roboto

Sistema de gestioacuten de notificaciones mejorado

Multitarea mejorada

Android Beam funcionalidad para transferir datos entre dos dispositivos viacutea NFC

Funcioacuten de desbloqueo mediante el rostro

Nuevas funciones para la visualizacioacuten y gestioacuten del consumo de datos

Nuevas aplicaciones de correo y calendario

Habilidad de acceder a aplicaciones directamente desde la pantalla de bloqueo

Herramienta integrada de captura de pantalla

Soporte MKV

Aceleracioacuten por hardware de la interfaz de usuario

Soporte Stylus (laacutepiz taacutectil)

En Julio del 2012 se presenta Android 41 Jelly Bean que incluye las siguientes

novedades

Sistema de deteccioacuten de entrada de datos taacutectiles optimizado

Estreno de Google Now el servicio-asistente de voz inteligente de Google

Navegador Google Chrome

Buacutesqueda mediante voz mejorada

Nuevas posibilidades para las notificaciones interactivas de escritorio

Dictado de voz offline

Se deja de dar soporte al Flash Player

Meses despueacutes en noviembre del 2012 se lanza la versioacuten Android 42 Jelly Bean

la cual incluye habituales correcciones rendimiento mejorado y cambios puntuales en

ciertas aplicaciones

Android 43 Jelly Bean es anunciado el 24 de julio del 2013 Uno de los objetivos

de esta versioacuten fue tratar de consolidar a Android como un sistema operativo capaz de

ejecutar juegos Esta nueva versioacuten cuenta con las siguientes novedades

Soporte multiusuario y de perfiles mejorado

Soporte OpenGL ES 30

Bluetooth Smart

Plataforma Google Games

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

25

Servicios de localizacioacuten Wi-Fi mejorados

Ya no es necesario pulsar el icono del microacutefono para realizar una buacutesqueda de

voz Solo hay que decir OK Google y en seguida ordenar al equipo lo que se

necesite

Android 44 KitKat es anunciado en octubre del 2013 Esta nueva versioacuten intenta

corregir el problema de fragmentacioacuten se cuenta con muchas versiones y los fabricantes

tienen dificultades para adaptar sus productos a los requerimientos de cada nueva versioacuten

Se destaca de esta versioacuten

Menores requisitos de hardware para corregir la fragmentacioacuten de versiones

Compatible con terminales con 512 MB de memoria RAM

Reduccioacuten del consumo de bateriacutea mediante la optimizacioacuten de los sensores

Inclusioacuten de la suite ofimaacutetica QuickOffice

Servicios de almacenamiento online integrados Google Drive Box

Soporte para infrarrojos Usar el moacutevil como mando de TV

Aplicaciones a pantalla completa

Captura de pantalla en viacutedeo

En octubre del 2014 se lanza Android 5 Lollipop daacutendole soporte a otros

dispositivos como Android TV relojes inteligentes autos etc Esta nueva versioacuten

incluye

Nuevo disentildeo basado en Material Design que logra un flujo de trabajo maacutes fluido

Interfaz que se adapta a cualquier tamantildeo de dispositivo

Renovado sistema de notificaciones inteligente

Interesante vista multitarea que muestra capas con las diferentes aplicaciones

abiertas

Funcioacuten Android Smart Lock que permite emparejar un dispositivo Android con

otro ya sea un reloj inteligente o un automoacutevil

Modo Invitado para que puedas prestar el dispositivo sin que otros usuarios

tengan acceso a la informacioacuten privada

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

26

Soporte para sistemas de 64 bits

En octubre del 2015 se anuncia Android 6 Marshmallow que incluye las

siguientes novedades

Soporte para autenticacioacuten viacutea huella digital

Desinstalacioacuten raacutepida de las aplicaciones desde la pantalla de inicio

Nuevo esquema de gestioacuten de energiacutea llamado Doze

Mayor duracioacuten de la bateriacutea cuando el dispositivo estaacute en reposo

Inclusioacuten de Android Pay que emplearaacute el chip NFC

Mejoras en Google Now

Mayor control sobre los permisos requeridos por las aplicaciones

212 Proceso de Desarrollo Las aplicaciones nativas para esta plataforma se implementan utilizando el lenguaje

de programacioacuten Java

El estaacutendar sugiere utilizar el IDE oficial Android Studio (Figura 7) aunque es

posible utilizar otros entornos Independientemente del IDE utilizado se necesita

disponer del Software Development Kit (SDK) de la versioacuten de Android en la que se

desea trabajar El SDK provee todas las herramientas necesarias para desarrollar

compilar depurar y simular aplicaciones

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

27

Figura 7 Entorno de desarrollo Android Studio

Uno de los interrogantes que surgen en el momento de crear una aplicacioacuten es con

cual versioacuten de la Application Programming Interface (API) de Android trabajar Se debe

tener en cuenta que al trabajar con una versioacuten especiacutefica se estaacute limitando cuales son los

dispositivos que soportaraacuten la aplicacioacuten a crear No se recomienda utilizar una API

antigua -ya que no se estariacutea utilizando muchos de los avances de la plataforma- ni

tampoco la uacuteltima en el mercado ndashdebido a que pocos seriacutean los usuarios que podriacutean

utilizarla- En la Figura 8 se visualiza la distribucioacuten de versiones seguacuten los dispositivos

activos a la fecha de Diciembre 2016 [21] De esa informacioacuten se desprende que si se

optara por trabajar con la API 16 (Jelly Bean) el 966 de los celulares activos podraacuten

utilizar la aplicacioacuten a crear

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

28

Figura 8 Distribucioacuten de versiones de Android - Diciembre 2016

22 Desarrollo de Aplicaciones Nativas en iOS

iOS es un sistema operativo para dispositivos moacuteviles de la empresa multinacional

Apple Si bien fue originalmente desarrollado para el dispositivo iPhone luego el sistema

operativo alcanzoacute otros dispositivos como iPod Touch iPad A diferencias de otros

sistemas operativos para dispositivos moacuteviles iOS solo funciona en dispositivos creados

por la empresa Apple pero no asiacute en otro hardware de terceros

221 Evolucioacuten El sistema operativo moacutevil iOS se deriva del sistema operativo OS X el cual estaacute

basado en UNIX

La primera versioacuten del sistema operativo se presentoacute en enero del 2007 A

diferencia de sus sucesores la primera versioacuten no se llamoacute iOS sino iPhone OS Se

trataba de una plataforma bastante cerrada ya que las uacutenicas aplicaciones disponibles

eran las que estaban integradas al sistema operativo y fueron creadas por Apple como los

Mapas Mail Fotos Calendario entre otras

El desarrollo de aplicaciones nativas por parte de terceros no tuvo lugar hasta marzo

del 2008 momento en el cual Apple liberoacute el primer kit de desarrollo

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

29

Meses despueacutes se lanza la segunda versioacuten del sistema operativo iPhone OS 2 En

esta oportunidad introducen la App Store la cual permitioacute la descarga de aplicaciones de

terceros Ademaacutes la aplicacioacuten de Mapas recibioacute compatibilidad con el GPS y el Mail

notificaciones push

En 2009 Apple lanzoacute iPhone OS 3 y en su versioacuten 32 se le cambioacute el nombre a

iOS 32 iOS 3 incorporoacute grandes novedades buacutesqueda Spotlight botones Copiar y

Pegar grabacioacuten de viacutedeo edicioacuten de viacutedeo mensajes MMS comandos de voz modo

landscape y otras muchas apps Ademaacutes se siguioacute explotando las ventajas de las

notificaciones push y se continuoacute evolucionando su SDK daacutendole mayor poder a los

desarrolladores de aplicaciones

iOS 4 llegoacute a mediados del 2010 y trajo consigo nuevos cambios a la plataforma

Los maacutes destacables fueron la inclusioacuten de fondos de pantalla y la posibilidad de poder

abrir varias aplicaciones en simultaacuteneo Adicionalmente las aplicaciones podiacutean ser

agrupadas mediante carpetas algo simple pero uacutetil

En Junio del 2011 se libera iOS 5 Esta nueva versioacuten ofreciacutea grandes novedades

un Centro de Notificaciones Siri ndashel asistente virtual que marcoacute tendencia en los uacuteltimos

antildeos- iMessage iCloud Game Center Quiosco Recordatorios integracioacuten social para

Twitter y se mejoroacute notablemente la app de navegacioacuten web nativa Safari

iOS 6 fue presentado en Junio del 2012 y trajo como novedades la inclusioacuten de

Apple Maps (en reemplazo de Google Maps) mejoras en Siri con informacioacuten mucho

maacutes precisa la integracioacuten de Facebook y Twitter en el sistema el modo no molestar el

soporte para LTE entre otras

Los usuarios de este sistema operativo recibieron una de las mayores

actualizaciones en Junio del 2013 cuando se presenta iOS 7 Esta nueva versioacuten contoacute

con un redisentildeo total de la interfaz de usuario basaacutendose en transparencias y degradados

Ademaacutes se introdujo el Centro de Control AirDrop una renovada app de fotos iTunes

Radio y CarPlay mejoras en el App Switcher videos a caacutemara lenta entre otras cosas

Junio del 2014 fue el mes donde quedoacute disponible iOS 8 una nueva versioacuten del

sistema operativo que intenta resolver algunos errores de iOS 7 y antildeadir ciertas mejoras

Las extensiones y la posibilidad de conectar apps entre siacute mediante el menuacute compartir

hicieron que iOS 8 fuese mucho maacutes productivo Ademaacutes incorporoacute widgets para el

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

30

Centro de Notificaciones o las notificaciones interactivas Ademaacutes se implementaron los

contactos favoritos los teclados de terceros la funcioacuten Reachability y la utilidad

Continuity y las aplicaciones Apple Pay Salud HandOff QuickType Compartir en

Familia iCloud Drive y Apple Music

En el 2015 se presenta iOS 9 que introdujo todo un cambio en el uso del sistema

gracias a la compatibilidad con el 3D Touch del iPhone 6s y el iPhone 6s Plus Se

actualizoacute Notas con nuevas funciones se sustituyoacute Newsstand por News se incorporaron

mejoras en Passbook que pasoacute a llamarse Wallet y se mejoroacute Mapas con direcciones y

traacutefico Se antildeadioacute Split View Picture-in-Picture y atajos en teclados de terceros Ademaacutes

el sistema ahora podiacutea aprovechar mejor la autonomiacutea del dispositivo gracias al Modo

ahorro de bateriacutea que limita las conexiones y caracteriacutesticas del sistema para no consumir

tanta energiacutea

Por uacuteltimo en Junio del 2016 quedoacute disponible iOS 10 versioacuten que se caracteriza

por abrirse a los desarrolladores Con esta nueva versioacuten se puede tener acceso a Siri al

3D Touch y a apps directas del sistema operativo Ademaacutes el centro de widgets ahora es

maacutes intuitivo y la pantalla de bloqueo maacutes uacutetil Como es habitual se aprecian mejoras en

distintas aplicaciones del sistema operativo y se permite borrar apps de Apple que no sean

utilizadas por los usuarios

222 Proceso de desarrollo Las aplicaciones moacuteviles para la plataforma iOS se desarrollan utilizando el

lenguaje de programacioacuten Objetive C El entorno de desarrollo oficial es la plataforma

Xcode [22] la cual opera en conjunto con Interface Builder una herramienta graacutefica para

la creacioacuten de interfaces de usuario

Actualmente hay dos grandes versiones del sistema operativo moacutevil en curso como

se puede apreciar en la Figura 10 Es algo a destacar que la uacuteltima versioacuten del sistema

operativo es soportada por el 63 de los dispositivos activos Claramente la

fragmentacioacuten interna es mucho menor que la encontrada en Android

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

31

Figura 9 Entorno de desarrollo Xcode

Figura 10 Distribucioacuten de versiones de iOS - Noviembre 2016

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

32

23 Desarrollo de Aplicaciones Nativas en Windows Phone

El sistema operativo moacutevil Windows Phone fue desarrollado por Microsoft y

sucede a Windows Mobile A diferencia de su predecesor estaacute enfocado en el mercado de

consumo en lugar del mercado empresarial

231 Evolucioacuten Su primera versioacuten lanzada en septiembre del 2010 fue denominada Windows

Phone 7 Fue presentado como un nuevo sistema operativo que incluye funciones de

integracioacuten con los servicios Xbox Live y Zune La interfaz conocida como Metro ha

sido revisada en su totalidad y comparte caracteriacutesticas visuales similares a la interfaz del

dispositivo Zune HD

Windows Phone 75 es una actualizacioacuten para Windows Phone lanzada en

septiembre de 2011 Esta nueva versioacuten incorporoacute numerosas caracteriacutesticas como por

ejemplo la inclusioacuten de Internet Explorer 9 con soporte para CSS3 Media Queries y

soporte para usar GPS cuando se trabaje con aplicaciones de ubicacioacuten geograacutefica entre

otros

En enero del 2013 se presenta Windows Phone 78 una actualizacioacuten que trae

mejoras como la nueva interfaz de usuario y fondos personalizados para la pantalla de

bloqueo Fue la uacuteltima gran actualizacioacuten de Windows Phone 7 ya que Microsoft se

centroacute en Windows Phone 8

Windows Phone 8 es la siguiente versioacuten del sistema operativo la cual fue

presentada a finales de 2012 Entre las nuevas caracteriacutesticas se incluyen

Nuevas pantallas de inicio y de bloqueo maacutes personalizables

Rincoacuten infantil un espacio exclusivo y controlado para los nintildeos

Cartera para almacenar tarjetas de fidelizacioacuten y de creacutedito

NFC

Internet Explorer 10

Integracioacuten con Skype

Nuevo nuacutecleo Windows NT con soporte para procesadores de varios

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

33

nuacutecleos

Captura de pantalla

Su proacutexima versioacuten es Windows Phone 81 y fue presentada en abril del 2014

Entre sus caracteriacutesticas maacutes relevantes se encuentran

Centro de notificaciones

Asistente de voz conocido con el nombre de Cortana

Sensores (de Wi-Fi de datos y de bateriacutea)

Aplicaciones que vienen en el paquete de instalacioacuten como Salud y

ejercicios Comida y bebida Viajes y Mapas (esta uacuteltima compite con Here

Maps la cual es la aplicacioacuten de mapas de Nokia)

Mejoras en la pantalla de inicio posibilidad de agregar fondos de pantalla y

una tercera columna de mosaicos personalizables (Tiles)

A mediados del 2014 Microsoft decide cambiar de estrategia tratando de unificar

todas las plataformas como PC tablets smartphones Xbox One entre otros Windows

10 (moacutevil) se dio a conocer puacuteblicamente durante un evento el 21 de enero para 2015 Al

igual que su homoacutelogo Windows 10 Mobile utiliza como navegador predeterminado

Microsoft Edge reemplazando Internet Explorer de Windows Phone 81 ya que este no

se adecuaba a las nuevas liacuteneas de disentildeo del sistema operativo

232 Proceso de desarrollo El entorno de desarrollo maacutes popular para el desarrollo de aplicaciones para

Windows Phone es Visual Studio (Figura 11) En la actualidad es posible utilizar diversos

lenguajes de programacioacuten VBNET y CNET C++ y JavaScript

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

34

Figura 11 Entorno de desarrollo Visual Studio

24 Diferencias teacutecnicas entre Android iOS y Windows Phone

Desarrollar aplicaciones moacuteviles para los tres sistemas operativos maacutes populares

implica conocer ciertos aspectos teacutecnicos de cada plataforma Algunos de estos aspectos

teacutecnicos difieren sustancialmente entre cada sistema operativo

Una de las caracteriacutesticas a tener en cuenta es si las aplicaciones moacuteviles se ejecutan

dentro de una maacutequina virtual especiacuteficamente disentildeada o si se ejecutan directamente

sobre el sistema operativo

Otro aspecto que los desarrolladores deben tener en cuenta es el lenguaje de

programacioacuten a utilizar para crear aplicaciones nativas Este aspecto es importante porque

incide en otros aspectos como por ejemplo la gestioacuten de memoria

Ademaacutes del lenguaje de programacioacuten a utilizar es importante conocer la

tecnologiacutea requerida para disentildear interfaces de usuario

Asimismo los desarrolladores deben familiarizarse con diferentes IDEs seguacuten la

plataforma en la que se desea desarrollar como asiacute tambieacuten con diferentes tiendas de

aplicaciones donde alojar los productos finales

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

35

Por uacuteltimo la tecnologiacutea de hardware requerida para soportar el sistema operativo

tambieacuten difiere seguacuten cada plataforma

La Tabla 1 compara cada uno de estos aspectos en los sistemas operativos moacuteviles

Android iOS y Windows Phone

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

36

Sistema

Operativo

Maacutequina

Virtual

Lenguaje de

Programacioacuten

Interfaces

de usuario

Gestioacuten de

memoria

IDE Plataforma de

desarrollo

Dispositivos Tienda de

Aplicaciones

Android Dalvik VM Java XML files Garbage

collector

Android

Studio

Multiplatforma Heterogeneos Google Play

Store

iOS No Objective-C Cocoa

Touch

Reference

counting

XCode Mac OS X Homogeneos iTunes Apps

Store

Windows

Phone

CLR C and Net XAML files Garbage

collector

Visual

Studio

Windows Vista7 Homogeneos Windows

Phone Store

Tabla 1 Diferencias teacutecnicas entre las plataformas Android iOS y Windows Phone

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

37

Capiacutetulo 3 Desarrollo de

Aplicaciones Moacuteviles

Multiplataforma

En los uacuteltimos antildeos el mercado de los dispositivos moacuteviles en especial

smartphones ha mostrado un crecimiento notable tanto en Argentina como en todo el

mundo En particular en nuestro paiacutes las plataformas que maacutes han crecido son Android

e iOS [1520]

Actualmente gran parte de la industria del software se concentra en desarrollar

soluciones para dispositivos moacuteviles proveyendo especialmente aplicaciones nativas

Las aplicaciones nativas tal como se mencionoacute en el capiacutetulo anterior ofrecen la

posibilidad de acceder a todas las capacidades del dispositivo (caacutemara GPS aceleroacutemetro

y agenda entre otras) su rendimiento es alto el acceso a Internet no es estrictamente

necesario y pueden ejecutarse en segundo plano notificando al usuario cuando se requiera

su atencioacuten Estas aplicaciones pueden distribuirsecomercializarse a traveacutes de las tiendas

en liacutenea correspondientes

El principal reto para los proveedores de aplicaciones es proporcionar soluciones

para todas las plataformas pero esto conlleva un alto costo [6] no es posible reusar el

coacutedigo fuente entre plataformas diferentes multiplicando esfuerzos y elevando los costos

de desarrollo actualizacioacuten y distribucioacuten de nuevas versiones

El desarrollo multiplataforma procura optimizar la relacioacuten costobeneficio

compartiendo la misma codificacioacuten entre las versiones para las distintas plataformas

Entre otras ventajas sobresalen menor tiempo y costo de desarrollo prestaciones

similares a las nativas con acceso al hardware del dispositivo y disponibilidad de

entornos potentes de desarrollo (Delphi Visual Studio etc) o en su lugar utilizacioacuten de

tecnologiacuteas (HTML5 Javascript y CSS) bien conocidas por los desarrolladores web

quienes pueden trasladar sus conocimientos y experiencias al paradigma moacutevil Sin

embargo el rendimiento de las aplicaciones y sus interfaces de usuario pueden afectar la

experiencia de usuario

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

38

Las aplicaciones multiplataforma pueden clasificarse en aplicaciones web moacuteviles

hiacutebridas interpretadas y generadas por compilacioacuten cruzada [5] En las secciones

siguientes se analizaran cada una de estas clasifcaciones

31 Aplicaciones Web Moacuteviles

Las Aplicaciones Web Moacuteviles disentildeadas para ejecutarse dentro de un navegador

se desarrollan con tecnologiacutea web estaacutendar (HTML CSS y JavaScript) y cuentan con

una serie de caracteriacutesticas favorables no necesitan adecuarse a ninguacuten entorno operativo

son independientes de la plataforma y su puesta en marcha es raacutepida y sencilla

Por contrapartida sus tiempos de respuesta decaen debido a la interaccioacuten cliente-

servidor Al mismo tiempo resultan ser menos atractivas que las aplicaciones nativas ya

que no se encuentran instaladas en el dispositivo lo que implica acceder previamente a

un navegador Ademaacutes las restricciones de seguridad impuestas a la ejecucioacuten de coacutedigo

por medio de un navegador limitan el acceso a todas las capacidades del dispositivo [23]

Asimismo no es posible desarrollar aplicaciones web que corran en segundo plano ni

tampoco aplicaciones offline ya que es requisito disponer de una conexioacuten a internet para

su funcionamiento

El proceso de desarrollo de una aplicacioacuten web moacutevil debe contemplar una serie de

caracteriacutesticas inherentes al entorno de ejecucioacuten Como ya ha sido mencionado las

aplicaciones web moacuteviles pueden ser accesibles desde cualquier dispositivo moacutevil que

cuente con un navegador y acceso a internet pero esto no significa que la navegacioacuten en

la aplicacioacuten resulte ser coacutemoda u oacuteptima Por ejemplo una aplicacioacuten web con un menuacute

compuesto de 20 iacutetems puede implicar una usabilidad correcta desde una PC Por lo

contrario para un dispositivo moacutevil con una pantalla limitada no resulta praacutectico que se

le presente al usuario tantas opciones en el menuacute Con este ejemplo lo que se pretende

mostrar es que para que una aplicacioacuten sea accesible desde diferentes dispositivos

moacuteviles posiblemente se tengan que realizar al menos dos disentildeos de presentacioacuten

diferentes un disentildeo para PC y otro disentildeo para dispositivos moacuteviles con una estructura

organizativa de la aplicacioacuten maacutes simplificada con respecto al disentildeo tradicional Por

ejemplo algunas de las funcionalidades de la aplicacioacuten para PC pueden ser eliminadas

para la versioacuten para dispositivos moacuteviles o presentadas de forma diferente

Para desarrollar diferentes presentaciones de una misma aplicacioacuten web

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

39

actualmente existen dos estrategias distintas ambas vaacutelidas seguacuten el contexto En los

siguientes apartados se analizaraacuten cada una de ellas

311 Aplicacioacuten Web dedicada y exclusiva para dispositivos moacuteviles Esta metodologiacutea ha sido el estaacutendar hasta el antildeo 2012 En ella la direccioacuten URL

y el coacutedigo HTML de la versioacuten moacutevil son distintos de la versioacuten de escritorio Por lo

general las direcciones URL tienen el formato mnombresitiocom

Algunas de las ventajas de este meacutetodo

- En general la carga es maacutes raacutepida y la navegacioacuten maacutes coacutemoda

- Es posible adaptar de manera maacutes faacutecil el contenido de las secciones

Desventajas de este meacutetodo

- Mantenimiento maacutes costoso Se debe mantener dos versiones distintas del mismo

sitio

- Dificulta el posicionamiento del sitio en los buscadores

- Estos desarrollos al final tienden a ser versiones muy reducidas de la web para

PC llevando al usuario a frustrarse y a preferir ver la versioacuten original de la web

312 Aplicacioacuten Web con Disentildeo Adaptable Con esta metodologiacutea la aplicacioacuten web se adapta al dispositivo desde el cual se la

estaacute accediendo El coacutedigo HTML y la direccioacuten URL de la aplicacioacuten son uacutenicos El

Disentildeo Adaptable o Responsive Design (Figura 12) tiene sus oriacutegenes en el antildeo 2008

cuando la W3C discutioacute y describioacute sus propoacutesitos Desde el antildeo 2012 -momento en el

cual Google recomendoacute fuertemente su implicancia [24]- viene en ascenso y

posiblemente llegue a convertirse en un standard en un corto plazo

Mediante un Disentildeo Adaptable todos los elementos de la web se reajustan en ancho

y altura adaptaacutendose al tamantildeo de tu pantalla Incluso es posible ocultar secciones cuando

se accede desde un dispositivo moacutevil

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

40

Figura 12 Disentildeo Adaptable

Las principales ventajas del desarrollo de aplicaciones web con Disentildeo Adaptable

son

- El mantenimiento es menos costoso ya que solo hay que mantener una uacutenica

versioacuten de la aplicacioacuten

- Se simplifica el proceso de posicionar la aplicacioacuten en los buscadores

Como contrapartida el Disentildeo Adaptable presenta una serie de desventajas

- Requiere de mayores niveles teacutecnicos para su desarrollo

- El contenido de las aplicaciones con Disentildeo Adaptable puede ser mayor que el

contenido de las aplicaciones web especiacuteficas para dispositivos moacuteviles

perjudicando el tiempo de carga cuando se utiliza un tipo de conexioacuten no muy

potente y generando un mayor consumo de datos

En la actualidad existe una gran cantidad de frameworks que simplifican el

desarrollo de aplicaciones web con disentildeo adaptable destacaacutendose por su popularidad y

extensa documentacioacuten los frameworks Bootstrap [25] y Foundation [26]

32 Aplicaciones Hiacutebridas

Las aplicaciones hiacutebridas utilizan tecnologiacuteas web (HTML Javascript y CSS) pero

no son ejecutadas por un navegador En su lugar se ejecutan en un contenedor web

(webview) como parte de una aplicacioacuten nativa la cual estaacute instalada en el dispositivo

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

41

moacutevil Desde una aplicacioacuten hiacutebrida es posible acceder a las capacidades del dispositivo

a traveacutes de diversas API

Las aplicaciones hiacutebridas ofrecen grandes ventajas permitiendo la reutilizacioacuten de

coacutedigo en las distintas plataformas el acceso al hardware del dispositivo y la distribucioacuten

a traveacutes de las tiendas de aplicaciones En contrapartida se observan dos desventajas de

las aplicaciones hiacutebridas respecto del caso nativo i) la experiencia de usuario se ve

perjudicada al no utilizar componentes nativos en la interfaz y ii) la ejecucioacuten se ve

ralentizada por la carga asociada al contenedor web

Afortunadamente existe una diversidad de frameworks que permiten desarrollar

aplicaciones hiacutebridas A continuacioacuten se haraacute un breve resumen de los maacutes populares

321 PhoneGap PhoneGap [27] es un framework gratuito y open source creado en el antildeo 2008 por

la empresa Nitobi Software que permite crear aplicaciones moacuteviles usando tecnologiacutea

web estaacutendar HTML JavaScript y CSS En octubre del 2011 Adobe adquiere la empresa

Nitobi y aporta el coacutedigo de PhoneGap a Apache Software Foundation para iniciar un

nuevo proyecto por encima de PhoneGap llamado Apache Cordova [28] PhoneGap pasoacute

a ser una de las varias distribuciones de Apache Cordova (Figura 13) brindando servicios

extras como por ejemplo Adobe PhoneGap Build [29] un servicio de compilacioacuten en la

nube proporcionado por Adobe Creative Cloud PhoneGap Desktop y PhoneGap

Developer

PhoneGap permite compilar aplicaciones para las siguientes plataformas Android

IOS Amazon Fire OS Windows Phone Windows 8 Ubuntu Tizen Firefox OS

Blackberry 10

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

42

Figura 13 Funcionamiento de Apache Cordova

322 CocoonJS CocoonJS [30] es un framework para el desarrollo de aplicaciones moacuteviles

producido por Ludei [31] Actualmente cuenta con una licencia propietaria y ofrece

diferente tipos de planes pagos y gratuitos El mencionado framework estaacute basado en

Apache Cordova al igual que PhoneGap pero se diferencia de este uacuteltimo en que hace

un mayor hincapieacute en la performance de las aplicaciones resultantes CocoonJS ofrece

dos tipos de webview

Canvas+ un webview liviano optimizado para video juegos Provee solo un

subconjunto de las funcionalidades del HTML5 (canvas audio motion

geolocalizacioacuten etc) necesarias para desarrollar video juegos con el objetivo de

brindar la mejor performance posible

Webview+ un potente y completo webview basado en el webview del proyecto

Chromium el cual cuenta de una mejor performance en comparacioacuten con el

webview por defecto de Apache Cordova

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

43

CocoonJs permite crear aplicaciones tanto para iOS como para Android

323 Ionic Ionic [32] es un completo SDK gratuito y open source para el desarrollo de

aplicaciones hiacutebridas producido por Max Lynch Ben Sperry y Adam Bradley de la

compantildeia Drifty Co en el antildeo 2013 En un tiempo relativamente corto alcanzoacute una

popularidad a destacar Estaacute basado en Apache Cordova permitiendo desarrollar

aplicaciones con tecnologiacutea web A diferencia de otros frameworks para el desarrollo de

aplicaciones hibridas Ionic provee un framework para la interfaz de usuario y

herramientas visuales para disentildear interfaces

Mediante Ionic es posible crear aplicaciones para Android IOS Windows Phone y

Firefox OS

324 Sencha Touch Sencha Touch [33] es un framework gratuito Model-View-Controller (MVC)

JavaScript construido sobre el sistema de clases de Ext JS disentildeado especialmente para

el desarrollo de aplicaciones web moacuteviles para dispositivos taacutectiles [34]

Al igual que PhoneGap Sencha Touch permite a los desarrolladores crear

aplicaciones moacuteviles a partir de un desarrollo web con HTML5 CSS y Javascript A

diferencia de PhoneGap Sencha no necesita de ninguna libreriacutea de terceros para construir

interfaces similares a las nativas ya que el framework provee consigo una gran cantidad

de componentes visuales listos para utilizar

Sencha empaqueta el coacutedigo del proyecto mediante PhoneGap para luego poder

construir aplicaciones en todas las plataformas soportadas por PhoneGap

33 Aplicaciones Interpretadas

Las aplicaciones interpretadas son implementadas utilizando un lenguaje base el

cual se traduce en su mayor parte a coacutedigo nativo mientras el resto es interpretado en

tiempo de ejecucioacuten Estas aplicaciones son implementadas de manera independiente de

las plataformas utilizando diversas tecnologiacuteas y lenguajes tales como Javascript Java

Ruby y XML entre otros

Una de las principales ventajas de este tipo de aplicaciones es que se obtienen

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

44

interfaces de usuario totalmente nativas Sin embargo los desarrolladores experimentan

una dependencia total con el entorno de desarrollo elegido

Seguidamente se presentaran algunos de frameworks maacutes reconocidos para el

desarrollo de aplicaciones interpretadas

331 Appcelerator Titanium Desarrollado por Appcelerator Inc Appcelerator Titanium [35] es un framework

de coacutedigo abierto que permite la creacioacuten de aplicaciones moacuteviles para las plataformas

iOS y Android Dicho framework estaacute formado por Titanium Studio un entorno de

desarrollo de coacutedigo libre para la codificacioacuten de aplicaciones moacuteviles multiplataforma

y el SDK Titanium una serie de herramientas para el desarrollo testeo anaacutelisis

depuracioacuten y compilacioacuten de aplicaciones

Las aplicaciones desarrolladas con Appcelerator Titanium se codifican utilizando

el lenguaje Javascript el cual es evaluado en tiempo de ejecucioacuten mediante un inteacuterprete

de Javascript que se ejecuta en el sistema operativo del dispositivo Al iniciar la

aplicacioacuten desde el coacutedigo nativo se ejecuta el coacutedigo Javascript y mediante la API de

Titanium se mapea uno-a-uno cada elemento del coacutedigo Javascript con los elementos

nativos De esta manera la API de Titanium actuacutea como puente logrando interfaces de

usuario compuestas de controles nativos Este entorno de desarrollo utiliza el framework

Alloy disentildeado para el desarrollo aacutegil de aplicaciones moacuteviles Alloy estaacute basado en la

arquitectura MVC y soporta el uso de tecnologiacuteas populares como Backbonejs [36] y

Underscorejs [37]

Los creadores de Titanium destacan que mediante este framework es posible

reutilizar entre el 60 y 90 del coacutedigo entre distintas plataformas

332 NativeScript El 5 de marzo del 2015 la empresa Telerik lanzoacute NativeScript [38] un proyecto de

coacutedigo abierto el cual permite generar aplicaciones nativas utilizando JavaScript

Asimismo es posible desarrollar la aplicacioacuten utilizando el lenguaje TypeScript [39]

lenguaje libre y de coacutedigo abierto desarrollado por Microsoft que extiende a JavaScript

esencialmente antildeadiendo tipado estaacutetico y objetos basados en clases En este sentido

cuando se compila la aplicacioacuten se realiza la traduccioacuten del coacutedigo TypeScript a coacutedigo

JavaScript

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

45

NativeScript provee un moacutedulo multiplataforma que permite obtener aplicaciones

nativas desde coacutedigo JavaScript Este moacutedulo expone las capacidades del dispositivo y

de la plataforma subyacente de una manera consistente y permite accederlas desde el

coacutedigo JavaScript De igual manera las interfaces de usuario pueden ser definidas

mediante coacutedigo JavaScript documentos HTML y archivos CSS abstrayeacutendose de los

componentes nativos reales

Cuando la aplicacioacuten es compilada parte del coacutedigo multiplataforma es traducido

a coacutedigo nativo mientras que el resto es interpretado en tiempo de ejecucioacuten (Figura 14)

Por el momento NativeScript permite generar aplicaciones para Android e iOS y

se preveacute dar soporte a Windows Phone NativeScript renderiza controles nativos sin

utilizar WebViews logrando una performance y experiencia de usuario similar al de las

aplicaciones nativas

Figura 14 Proceso de interpretacioacuten mediante NativeScript

34 Aplicaciones Generadas por Compilacioacuten Cruzada

Estas aplicaciones se compilan de manera nativa creando una versioacuten especiacutefica de

alto rendimiento para cada plataforma destino Ejemplos de entornos de desarrollo para

generar aplicaciones por compilacioacuten cruzada son Applause [40] Xamarin [41]

Embarcadero Delphi 10 Seattle [42] y RubyMotion [43]

El entorno de desarrollo abierto Applause utiliza como entrada un lenguaje

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

46

especiacutefico del dominio basado en el framework Xtext [44] disentildeado expliacutecitamente para

aplicaciones moacuteviles orientadas a datos y genera coacutedigo fuente en Objective C Java C

o Python Las caracteriacutesticas de Xamarin Embarcadero Delphi 10 Seattle y RubyMotion

se presentan en secciones posteriores

341 Xamarin Xamarin es una plataforma de desarrollo de aplicaciones moacuteviles para generar

aplicaciones 100 nativas para iOS Android y Windows a partir de una base de coacutedigo

CNET comuacuten para conseguir entre un 75 y hasta casi un 100 de reutilizacioacuten de

coacutedigo entre plataformas Las aplicaciones escritas con Xamarin y C disponen de acceso

completo a las API de la plataforma subyacente asiacute como de la capacidad de crear

interfaces de usuario nativas y de realizar la compilacioacuten en coacutedigo nativo por lo que el

impacto en el rendimiento en tiempo de ejecucioacuten es escaso

Xamarin es una compantildeiacutea que se establecioacute en mayo de 2011 por los mismos

ingenieros que crearon el proyecto Mono [45] consistente en una implementacioacuten libre

de la plataforma de desarrollo NET para dispositivos Android iOS y GNULinux

Anteriormente este proyecto se llamaba MonoTouch y MonoDroid

Si bien Xamarin cuenta con su propio IDE denominado Xamarin Studio (Figura

15) es posible integrarlo con Microsoft Visual Studio y de esta manera generar tambieacuten

aplicaciones para Windows incluido Windows RT para tablets y Windows Phone para

celulares

En febrero del 2016 Xamarin es comprada por Microsoft y desde ese momento la

plataforma Xamarin y el IDE Xamarin Studio pasaron a ser gratuitas

Xamarin propone un enfoque de desarrollo multiplataforma en el que se comparte

la codificacioacuten completa de la loacutegica del negocio Sin embargo las interfaces deben ser

programadas de manera independiente para cada una de las plataformas destino Asiacute la

reutilizacioacuten de coacutedigo seguacuten estudios estadiacutesticos de la compantildeiacutea Xamarin es cercana

al 85

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

47

Figura 15 Entorno de Desarrollo Xamarin Studio

342 Embarcadero Delphi 10 Seattle Embarcadero Delphi 10 Seattle [42] es una plataforma de desarrollo propietaria y

no gratuita que permite a los desarrolladores crear aplicaciones raacutepidamente a traveacutes de

un entorno visual coacutemodo e intuitivo (Figura 16) La aplicacioacuten desarrollada puede ser

compilada para muacuteltiples plataformas incluyendo Windows Mac Android e iOS

Delphi 10 Seattle al igual que Xamarin aventaja a otros tipos de aplicaciones

multiplataformas con resultados 100 nativos con acceso total a los sensores y

capacidades del dispositivo (caacutemara notificaciones GPS aceleroacutemetro entre otras)

Un punto a destacar es que Delphi 10 Seattle a traveacutes del framework de interfaces

de usuario FireUI Multi-Device Designer permite crear interfaces de usuario totalmente

nativas sin la necesidad de tener que disentildear interfaces especiacuteficas para cada plataforma

en particular

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

48

Figura 16 Entorno de Desarrollo Delphi 10 Seattle

343 RubyMotion En Mayo de 2012 la empresa HipByte lanza RubyMontion un proyecto que

permite generar aplicaciones para iOS Android y OS X utilizando el lenguaje de

programacioacuten Ruby

Para poder generar las aplicaciones multiplataforma RubyMotion posee

implementaciones de Ruby sobre los sistemas operativos destinos (Android e iOS) que

permiten acceder a todas las caracteriacutesticas provistas por cada plataforma Las

herramientas de compilacioacuten provistas por RubyMotion se encargan de embeber la

correspondiente implementacioacuten de Ruby al momento de compilar para cada plataforma

La principal desventaja de RubyMotion es que soacutelo funciona bajo el sistema

operativo OS X Otro factor a tener en cuenta es que no posee un entorno de desarrollo

integrado que facilite todo el proceso al desarrollador esto se ve solventado gracias a que

ofrece complementos para los IDE y editores de coacutedigo maacutes utilizados

Finalmente si bien el producto es un servicio pago ofrece una posibilidad de

probarlo gratuitamente aunque con soporte uacutenicamente para compilar a la uacuteltima versioacuten

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

49

de cada plataforma destino

Capiacutetulo 4 Experimentacioacuten

50

Capiacutetulo 4 Experimentacioacuten

Con el objetivo de profundizar la investigacioacuten de las diferentes metodologiacuteas de

desarrollo de aplicaciones moacuteviles multiplataforma es que se llevaron a cabo diferentes

experimentos en simultaacuteneo El primer experimento consiste en el desarrollo de una

aplicacioacuten moacutevil utilizando cada una de las metodologiacuteas estudiadas en el capiacutetulo

anterior con el objetivo de analizar el proceso de desarrollo El segundo experimento

tiene como objetivo analizar el rendimiento de las aplicaciones moacuteviles generadas

mediante las metodologiacuteas estudiadas a traveacutes de un caacutelculo matemaacutetico Por uacuteltimo se

presenta un informe comparativo que pueda ayudar en la toma de decisiones sobre queacute

metodologiacutea utilizar en futuros desarrollos

41 Aplicacioacuten Moacutevil para la plataforma de E-Learning WebUNLP

411 Descripcioacuten del problema WebUNLP es un entorno virtual de ensentildeanza y aprendizaje que permite a los

docentes mediar sus propuestas educativas Alumnos y docentes pueden encontrarse en

ese espacio para compartir materiales de estudio comunicarse y generar una experiencia

educativa en forma virtual [46]

Actualmente WebUNLP cuenta con una versioacuten web enfocada a computadoras de

escritorio o portaacutetiles pero no estaacute adaptada para ser utilizada desde dispositivos moacuteviles

El desarrollo planteado consiste en extender WebUNLP con la construccioacuten de una

aplicacioacuten moacutevil que permita acceder a determinadas funcionalidades del sistema a

traveacutes de un dispositivo moacutevil El enfoque propuesto incluye un anaacutelisis de la misma

solucioacuten comparando el desarrollo nativo web hiacutebrido interpretado y de compilacioacuten

cruzada a fin de establecer cuaacutel de ellos es conveniente

Como ocurre con cualquier desarrollo de software la construccioacuten de una

aplicacioacuten moacutevil implica tener claramente definido su propoacutesito y cuaacuteles requerimientos

debe cumplir En particular para el caso de software para dispositivos moacuteviles resulta

esencial tener objetivos maacutes acotados que en su versioacuten de escritorio [47]

Capiacutetulo 4 Experimentacioacuten

51

Para el caso especiacutefico de WebUNLP se realizoacute el desarrollo incremental de una

aplicacioacuten moacutevil y esta primera versioacuten se enfocoacute en una de sus herramientas de

comunicacioacuten la cartelera Esta herramienta permite comunicar las novedades de un

curso como por ejemplo el cambio de horario de una cursada recordar las fechas de

entrega de un trabajo praacutectico entre otras [46]

412 Anaacutelisis Uno de los primeros interrogantes planteados fue la eleccioacuten de la plataforma En

teacuterminos de mercado los sistemas operativos que predominan en Argentina son Android

e iOS [4815] con lo cual se decidioacute dar soporte a estos dos sistemas operativos

Se analizaron los requerimientos funcionales y no funcionales de forma aislada a la

plataforma y luego de forma especiacutefica para cada una de ellas

A continuacioacuten se presentan algunos requerimientos a cumplir por la aplicacioacuten

El usuario debe poder ingresar a la aplicacioacuten con las mismas credenciales que las

utilizadas para acceder a la versioacuten web de escritorio

El usuario debe poder acceder a la cartelera de todos los cursos en los que

participa ya sea como docente o alumno

El usuario debe recibir una notificacioacuten en su dispositivo cuando una novedad es

publicada en la cartelera Este requerimiento no se puede cumplir en la versioacuten

web accesible desde computadoras de escritorio yo portables

El usuario debe tener la misma experiencia de uso en todas las plataformas

operativas

La aplicacioacuten web existente debe estar sincronizada con la aplicacioacuten moacutevil a

desarrollar esto significa que cualquier cambio realizado desde la aplicacioacuten

moacutevil debe verse reflejado en la versioacuten web y viceversa

413 Disentildeo Para satisfacer los requerimientos planteados en el punto anterior a excepcioacuten de

la notificacioacuten el disentildeo de la aplicacioacuten moacutevil web consiste en una reacuteplica de lo ofrecido

por WEBUNLP adaptaacutendose solamente la interfaz al tamantildeo de pantalla del dispositivo

moacutevil

Capiacutetulo 4 Experimentacioacuten

52

Para el disentildeo de las aplicaciones moacuteviles nativa hiacutebrida interpretada y de

compilacioacuten cruzada la situacioacuten es maacutes compleja En la Figura 17 se presenta la

arquitectura geneacuterica de todos los componentes que participan en este escenario de

desarrollo En ella se observa el acceso desde una PC a WebUNLP y el acceso desde

dispositivos moacuteviles a la informacioacuten de WebUNLP mediante servicios web Para el

desarrollo de los servicios web se disentildeoacute una API Restful dada su simpleza escalabilidad

e interoperabilidad [49]

Figura 17 Arquitectura geneacuterica para aplicacioacuten nativa e hiacutebrida

Asimismo existe una tarea programada (Cron) de ejecucioacuten intermitente a

intervalos regulares de tiempo la cual notifica a los dispositivos moacuteviles correspondientes

cuando se crea una novedad en la cartelera de WebUNLP El Cron identifica el sistema

operativo del dispositivo a notificar y genera dicha notificacioacuten

En cuanto a la interfaz graacutefica se planteoacute un disentildeo independiente de la plataforma

para analizar los aspectos de usabilidad de la aplicacioacuten y luego se realizaron los ajustes

necesarios para cada tipo de aplicacioacuten

En las interfaces disentildeadas la navegacioacuten es en serie en el orden en que se presentan

en el mockup [50] de la Figura 18

Capiacutetulo 4 Experimentacioacuten

53

Figura 18 Mockup independiente del tipo de aplicacioacuten

414 Desarrollo

4141 Aplicacioacuten Nativa para Android

El desarrollo de aplicaciones para la plataforma Android requiere disponer del Java

Development Kit (JDK) y su entorno de programacioacuten conocido como Android SDK

Este uacuteltimo provee libreriacuteas y herramientas necesarias para construir testear y depurar

aplicaciones para Android

El desarrollo de la aplicacioacuten de WebUNLP para Android se realizoacute seguacuten las

convenciones adoptadas por su comunidad porque aplica buenas praacutecticas en la

construccioacuten de interfaces y de la loacutegica detraacutes de ellas el acceso a datos y a servicios

web Para cumplir el requerimiento de las notificaciones en el dispositivo

correspondiente el Cron genera la notificacioacuten mediante el uso del servicio Google Cloud

Messaging (GCM) [51] En la Figura 19 se presentan las interfaces de la aplicacioacuten

desarrollada

Figura 19 Aplicacioacuten nativa para Android

Capiacutetulo 4 Experimentacioacuten

54

4142 Aplicacioacuten Nativa para iOS

La plataforma Apple iOS estaacute basada en un modelo propietario es por ello que el

desarrollo de una aplicacioacuten nativa iOS implica contar con una Apple Mac ejecutando OS

X con Xcode instalado El lenguaje de programacioacuten principal es Objective C Xcode es

el entorno de desarrollo de Apple para todos sus dispositivos y es el encargado de

proporcionar el iOS SDK con las herramientas compiladores y frameworks necesarios

Ademaacutes Xcode viene integrado con simuladores para dispositivos iOS (iPhones y iPads)

que facilitan las etapas de prueba del sistema desarrollado

Para los aspectos referentes a la interfaz graacutefica y la interaccioacuten con el usuario se

siguieron las convenciones propuestas por Apple [52] para lograr una mejor integracioacuten

de la aplicacioacuten con el sistema operativo y mejorar la experiencia del usuario

Por uacuteltimo para satisfacer el requerimiento de notificaciones el Cron notifica al

dispositivo iOS correspondiente mediante el uso del servicio Apple Push Notification

Service (APNs) [53] En la Figura 20 se presentan las interfaces de la aplicacioacuten

desarrollada

Figura 20 Aplicacioacuten nativa para iOS

4143 Aplicacioacuten Web Moacutevil

Se desarrolloacute una aplicacioacuten web capaz de acceder a la cartelera de WebUNLP

disponible para cualquier dispositivo moacutevil que cuente con un navegador que soporte las

caracteriacutesticas utilizadas para el desarrollo HTML5 CSS3 y Javascript

Como la velocidad de transmisioacutenrecepcioacuten de datos de un dispositivo moacutevil a

traveacutes de WiFi y en particular 3G es inferior a la velocidad de una computadora de

Capiacutetulo 4 Experimentacioacuten

55

escritorio la versioacuten web de la cartelera de WebUNLP es liviana y gran parte de los

requerimientos son implementados a traveacutes de Ajax [54] para evitar ante alguacuten cambio

la recarga de la paacutegina completa

Debido a las limitaciones que tienen las aplicaciones que se ejecutan sobre un

navegador no es posible implementar la recepcioacuten de una notificacioacuten en el dispositivo

cuando una novedad es publicada en la cartelera

4144 Aplicacioacuten Hiacutebrida desarrollada con PhoneGap y Jquery Mobile

Para la construccioacuten de la aplicacioacuten WebUNLP hiacutebrida se utilizoacute el framework

PhoneGap [27] el cual permite desarrollar aplicaciones moacuteviles que utiliza tecnologiacuteas

comunes a todos los dispositivos HTML5 CSS y Javascript

Asimismo se utilizoacute el framework Javascript Jquery Mobile [55] para lograr

interfaces con apariencia y comportamiento consistente a traveacutes de las diferentes

plataformas moacuteviles

Con el objetivo de implementar el patroacuten de disentildeo MVC se utilizoacute la libreriacutea

Backbonejs [36]

Por uacuteltimo para satisfacer el requerimiento de notificaciones se utilizoacute el plugin

Pushwoosh [56]

En la figura 5 se presentan las interfaces de la aplicacioacuten desarrollada

Figura 21 Aplicacioacuten hiacutebrida desarrollada con PhoneGap

Capiacutetulo 4 Experimentacioacuten

56

4145 Aplicacioacuten Hiacutebrida desarrollada con Sencha Touch

El desarrollo de WebUNLP utilizando Sencha Touch se vio favorecido por el uso

del patroacuten de disentildeo MVC Esto permitioacute mayor flexibilidad y legibilidad en el coacutedigo

[57] [34]

Sencha ofrece Sencha Command una herramienta multiplataforma de liacutenea de

comandos que provee tareas automatizadas para todo el ciclo completo de una aplicacioacuten

En el caso de WebUNLP se utilizoacute tanto para la generacioacuten del proyecto como para el

empaquetado de la aplicacioacuten

En la Figura 22 se presentan las interfaces de la aplicacioacuten desarrollada

Figura 22 Aplicacioacuten desarrollada con Sencha Touch

4146 Aplicacioacuten Interpretada de WebUNLP con Appcelerator Titanium 3

Para desarrollar una aplicacioacuten moacutevil experimental seguacuten el enfoque interpretado

se utilizoacute el entorno de desarrollo gratuito y open source Appcelerator Titanium 3 [35]

Se destaca la simplicidad y legibilidad de los controladores y modelos de la

aplicacioacuten desarrollada luego de utilizar Alloy el framework de Titanium que permite

disentildear aplicaciones seguacuten el patroacuten de disentildeo MVC Para la construccioacuten de las vistas se

puede optar por la programacioacuten mediante Javascript y la API de Titanium o bien por

una especificacioacuten XML con estilos TSS (Titanium Style Sheets) Esta uacuteltima opcioacuten

simplifica el proceso de creacioacuten de las vistas aunque falta todaviacutea un buen editor visual

de interfaces que lo potencie

Capiacutetulo 4 Experimentacioacuten

57

Para cubrir requerimientos de notificaciones en el dispositivo Titanium provee el

moacutedulo PushNotifications para plataformas Android e iOS

La Figura 24 (a) muestra la experimentacioacuten con Titanium

4147 Aplicacioacuten Generada por Compilacioacuten Cruzada de WebUNLP utilizando XamarinVisual Studio

Tal como se mencionoacute en la seccioacuten 341 Xamarin propone un enfoque de

desarrollo multiplataforma en el que se comparte la codificacioacuten completa de la loacutegica

del negocio Sin embargo las interfaces deben ser programadas de manera independiente

para cada una de las plataformas destino (ver Figura 23) Asiacute la reutilizacioacuten de coacutedigo

seguacuten estudios estadiacutesticos de la compantildeiacutea Xamarin es cercana al 85

Figura 23 Enfoque uacutenico de desarrollo Xamarin

Para el estudio de las aplicaciones generadas por compilacioacuten cruzada se desarrolloacute

la aplicacioacuten moacutevil de WebUNLP utilizando Xamarin integrado con Microsoft Visual

Studio Siguiendo la estrategia maacutes eficiente para trabajar en este entorno se ha creado

una solucioacuten uacutenica conteniendo tres proyectos distintos Uno de ellos se utilizoacute para

generar la aplicacioacuten Android otro para la aplicacioacuten Windwos Phone 8 y el tercero para

la implementacioacuten de una biblioteca de clases portable (PCL por sus siglas en ingleacutes) con

todo el coacutedigo compartido Los tres proyectos fueron desarrollaacutendose de manera conjunta

y concurrente

Aunque una de las ventajas maacutes importantes de Xamarin es la reutilizacioacuten de

coacutedigo eacutesta se ve fuertemente afectada por el tipo de aplicacioacuten que se desarrolla La

relacioacuten existente entre la complejidad de la interfaz y la loacutegica del negocio impacta

directamente sobre la posibilidad de mantener la mayor cantidad de coacutedigo compartido

Capiacutetulo 4 Experimentacioacuten

58

en la PCL En el desarrollo de WebUNLP la reutilizacioacuten de coacutedigo ha sido cercana al

50 Sin embargo no debe despreciarse la ventaja de utilizar el mismo lenguaje entorno

y conjunto de herramientas comunes en el desarrollo de aplicaciones para distintas

plataformas moacuteviles

La Figura 24 (b) presenta la interfaz desarrollada para Windows Phone 8

4148 Aplicacioacuten Generada por Compilacioacuten Cruzada de WebUNLP utilizando Delphi 10 Seattle

Para el profundizar el estudio de las aplicaciones generadas por compilacioacuten

cruzada ademaacutes se desarrolloacute la aplicacioacuten moacutevil de WebUNLP utilizando Delphi 10

Seattle En particular fueron de gran utilidad tanto los componentes provistos por Delphi

para acceder a servicios RESTful como el entorno visual de desarrollo de Delphi 10

Seattle

Para la recepcioacuten de notificaciones en el dispositivo de las novedades de WebUNLP

se utilizoacute el componente TPushEvent conectado al servicio Kinvey [58]

La Figura 24 (c) presenta la interfaz de la aplicacioacuten desarrollada

(a) (b) (c)

Figura 24 Aplicacioacuten desarrollada con a) Titanium b) XamarinVisual Studio y c) Delphi XE

415 Conclusiones del experimento WebUNLP Seleccionar un dominio para desarrollar un caso experimental tiene sus

particularidades La novedad de disponer una aplicacioacuten moacutevil no es motivo suficiente

que justifique tal desarrollo Es necesario satisfacer un conjunto de requerimientos

claramente planteados

Capiacutetulo 4 Experimentacioacuten

59

WebUNLP es un entorno virtual de ensentildeanza y aprendizaje utilizado por diversos

cursos de grado y postgrado de la Universidad Nacional de La Plata Por ende la cantidad

de usuarios beneficiados por acceder desde cualquier lugar a este entorno es importante

De esta manera se optoacute por elegir dicho espacio virtual para ser replicado en una

versioacuten moacutevil que no soacutelo permita acercarlo a sus usuarios sino que ademaacutes ampliacutee sus

funciones en este caso puntualmente para la cartelera

Para el desarrollo de esta experimentacioacuten se desarrolloacute la misma aplicacioacuten para

los cinco tipos de enfoques de desarrollo moacutevil (web nativa hiacutebrida interpretada y

generada por compilacioacuten cruzada)

Se destaca la gran simpleza de generar la versioacuten web dado que se utilizan las

mismas herramientas tecnoloacutegicas que las usadas para el desarrollo de cualquier

aplicacioacuten web tradicional La principal diferencia en este sentido radica en la limitacioacuten

de espacio en la pantalla del dispositivo No obstante el mayor contraste estaacute dado en que

no es posible acceder a todas las capacidades de hardware del dispositivo lo que impidioacute

implementar uno de los requerimientos probablemente el maacutes interesante la notificacioacuten

de novedades de la cartelera de WebUNLP al usuario

Por otra parte las versiones nativas han cumplido todos los requerimientos Aunque

la mayor desventaja consiste en la no portabilidad lo que implicoacute un desarrollo especiacutefico

para la plataforma que se desee cubrir En este trabajo se han presentado los desarrollos

para Android e iOS sistemas operativos maacutes usados en Argentina con un costo de

desarrollo y mantenimiento inherente mayor

Para el caso del enfoque hiacutebrido tanto la versioacuten de WebUNLP desarrollada con

PhoneGap y Jquery Mobile como la versioacuten desarrollada con Sencha Touch han logrado

conjugar la simpleza del desarrollo web con el uso de todas las capacidades del

dispositivo Este tipo de enfoque pretende suplir las desventajas de los dos enfoques

previos hecho que lo posiciona como una eleccioacuten realmente interesante siempre

condicionada por los requerimientos especiacuteficos a cumplir

Por el lado del modo de desarrollo interpretado la versioacuten de WebUNLP

desarrollada con Titanium logroacute resolver todos los requerimientos previamente

planteados Al igual que en el enfoque hiacutebrido es un punto a destacar que el desarrollo

de la aplicacioacuten con Titanium es relativamente simple y es posible reutilizar todo el

Capiacutetulo 4 Experimentacioacuten

60

coacutedigo entre plataformas Lo que lo hace la eleccioacuten prima facie es el hecho de obtener

interfaces totalmente nativas algo que no se lograba mediante el enfoque hiacutebrido

Por uacuteltimo las versiones de WebUNLP generadas con el enfoque de compilacioacuten

cruzada con Xamarin y Delphi lograron cumplir los requerimientos planteados Se

destaca el hecho de que se genera interfaces totalmente nativas pero considero que el

costo es muy alto se debe disentildear las interfaces para cada plataforma de manera

independiente lo que hace que no se pueda reutilizar todo el coacutedigo fuente de la

aplicacioacuten

42 Enfoques de desarrollo Anaacutelisis comparativo de rendimiento 421 Descripcioacuten del Problema

Hace apenas unas deacutecadas atraacutes el uso de los sistemas de software estaba

restringido a un grupo reducido de usuarios especializados Aquella eacutepoca contrasta

fuertemente con la actualidad en la que los smartphones pequentildeas computadoras moacuteviles

de propoacutesito general se han vuelto cotidianos y omnipresentes Estos dispositivos pueden

utilizarse para llevar a cabo tareas complejas y criacuteticas requiriendo la mejora continua de

las capacidades de coacutemputo la disponibilidad el rendimiento eficiente entre otras

necesidades La evolucioacuten vertiginosa de esta tecnologiacutea ejerce presioacuten en la adaptacioacuten

de la Ingenieriacutea de Software

Respecto del desarrollo para dispositivos moacuteviles se debe considerar una serie de

caracteriacutesticas propias de esta actividad que no estaban presentes en el desarrollo

tradicional de software [59] Es necesario tener en cuenta sobre queacute tipo de dispositivos

se debe ejecutar la aplicacioacuten a construir La diversidad de plataformas lenguajes de

programacioacuten herramientas de desarrollo estaacutendares protocolos y tecnologiacuteas de red

algunas limitaciones de ciertos dispositivos y las exigencias de tiempo del mercado entre

otros constituyen algunos de los problemas a tratar

En la mayoriacutea de los casos el eacutexito de un producto de software para dispositivos

moacuteviles estaraacute condicionado por el nivel de popularidad que logre alcanzar Para

maximizar su presencia en el mercado es necesario que la aplicacioacuten pueda ejecutarse

sobre la mayor cantidad de plataformas moacuteviles existentes especialmente sobre las dos

maacutes populares Android e iOS [60] Para lograr este objetivo existen dos alternativas

Capiacutetulo 4 Experimentacioacuten

61

i) Desarrollar aplicaciones especiacuteficas para cada plataforma impulsando en

paralelo varios proyectos de desarrollo con las herramientas y lenguajes propios de cada

una de ellas Estas aplicaciones analizadas previamente en este trabajo se denominan

aplicaciones nativas

ii) Generar aplicaciones que puedan ejecutarse en forma directa sobre maacutes de una

plataforma de sistema operativo a partir de un uacutenico proyecto de desarrollo Estas

aplicaciones como ya se ha presentado en este trabajo se denominan aplicaciones

multiplataforma

En los uacuteltimos antildeos se ha incrementado el intereacutes de la comunidad de Ingenieriacutea de

Software por el estudio del desarrollo de aplicaciones multiplataforma para dispositivos

moacuteviles

En [5] se presenta un anaacutelisis comparativo de enfoques de desarrollo de aplicaciones

multiplataforma para dispositivos moacuteviles proponiendo la siguiente taxonomiacutea

aplicaciones web moacuteviles aplicaciones hiacutebridas aplicaciones interpretadas y

aplicaciones generadas por compilacioacuten cruzada

En [7] y [8] se analizan aspectos generales de frameworks de desarrollo

multiplataforma para dispositivos moacuteviles

En [61] se comparan aspectos no funcionales para los diferentes enfoques de

desarrollo de aplicaciones multiplataforma para dispositivos moacuteviles

En [9] se analizaron ventajas y desventajas de los enfoques de desarrollo

multiplataforma mencionados desde el punto de vista del Ingeniero de Software

La eleccioacuten del modo de desarrollo de aplicaciones para dispositivos moacuteviles

depende de varios factores Uno de ellos en muchos casos esencial es el tiempo de

ejecucioacuten El intereacutes por optimizar el tiempo de ejecucioacuten de una aplicacioacuten de software

es intriacutenseco a la disciplina informaacutetica Esto se evidencia entre otras cosas por la

evolucioacuten del poder de coacutemputo de los procesadores Ademaacutes el rendimiento eficiente

es uno de los atributos que las aplicaciones de software deben satisfacer seguacuten diversos

estaacutendares de calidad entre otros ISOIEC 9126 e ISOIEC 25010 [62]

En lo que respecta al desarrollo de aplicaciones para dispositivos moacuteviles es

oportuno considerar el tiempo de ejecucioacuten de las aplicaciones por diversos motivos

El tiempo de ejecucioacuten de una aplicacioacuten estaacute fuertemente ligado al consumo de

Capiacutetulo 4 Experimentacioacuten

62

energiacutea [63] el cual estaacute limitado por la capacidad de la bateriacutea de los dispositivos

Asimismo el rendimiento de las aplicaciones se ve reflejado principalmente

mediante las calificaciones de los usuarios en las tiendas de aplicaciones en liacutenea

Aplicaciones con bajo rendimiento pueden implicar usuarios disconformes produciendo

publicidad negativa [60] Andre Charland y Brian Leroux identifican al tiempo de

ejecucioacuten como uno de los problemas principales a resolver en el desarrollo de

aplicaciones multiplataforma y afirman que a los usuarios finales les preocupa la calidad

del software y la experiencia de uso [64]

Corral Sillitti y Succi realizaron un anaacutelisis de rendimiento comparativo entre

aplicaciones nativas y aplicaciones hiacutebridas utilizando el framework Phonegap para una

versioacuten del sistema operativo Android [65]

Es importante destacar que no se han encontrado estudios que evaluacuteen y comparen

el rendimiento entre los diversos modos de desarrollo multiplataforma de acuerdo a la

taxonomiacutea propuesta en [5] aplicaciones web moacuteviles aplicaciones hiacutebridas

aplicaciones interpretadas y aplicaciones generadas por compilacioacuten cruzada Esta

taxonomiacutea es la que se utiliza de referencia en este trabajo

El presente apartado realiza un anaacutelisis comparativo de rendimiento de aplicaciones

para dispositivos moacuteviles generadas por el enfoque de desarrollo nativo y los distintos

enfoques de desarrollo multiplataforma seguacuten [5]

En la seccioacuten siguiente se describe el experimento utilizado para evaluar tiempos

de ejecucioacuten en aplicaciones nativas y en los diversos modos de desarrollo de aplicaciones

moacuteviles multiplataforma y en las secciones posteriores se muestran y analizan los

resultados obtenidos se presentan las conclusiones y el trabajo futuro

422 Desarrollo

4221 Disentildeo de las pruebas

Todas las pruebas cuyos resultados se presentan en este trabajo fueron realizadas

sobre dispositivos moacuteviles con sistemas operativos Android e iOS dado que en la

actualidad abarcan gran parte del mercado mundial de acuerdo a lo indicado en [60]

Para llevar a cabo la experimentacioacuten se seleccionaron los frameworks de desarrollo

multiplataforma seguacuten las alternativas presentadas en [10] Se disentildearon pruebas para

evaluar el rendimiento de Apache Cordova [28] Appcelerator Titanium [35] y Xamarin

Capiacutetulo 4 Experimentacioacuten

63

[41] que se corresponden con los modos de desarrollo hiacutebrido interpretado y compilacioacuten

cruzada respectivamente Tambieacuten se experimentoacute con otros dos frameworks de

desarrollo multiplataforma que recientemente han ganado popularidad NativeScript

(desarrollo interpretado) y Corona (compilacioacuten cruzada) Finalmente se incluyeron al

conjunto de pruebas las aplicaciones web y el enfoque nativo de desarrollo para Android

e iOS De este modo se logroacute una muestra razonablemente representativa de las diversas

opciones existentes en la actualidad

Para la realizacioacuten de las pruebas se utilizaron seis dispositivos moacuteviles distintos

(ver Tabla 2) tres de ellos con sistema operativo Android identificados como DA1 DA2 y

DA3 (dos smartphone y una tablet) y tres con sistema operativo iOS identificados como

DI1 DI2 y DI3 (dos smartphone y una tablet)

ID Sistema Operativo Caracteriacutesticas

DA1 Android 44

Tipo Smartphone Marca Motorola

Modelo Moto-G2 Procesador Quad-core 12 GHz Cortex-A7

RAM 1GB Snapdragon 400

DA2 Android 502

Tipo Smartphone Marca Samsung

Modelo S6 Procesador Octa-core (4x21 GHz Cortex-A57 amp 4x15

GHz Cortex-A53) RAM 3GB Exynos 7420 Octa

DA3 Android 422

Tipo Tablet Marca Samsung Modelo Tab 2

Procesador Dual-core 10 GHz RAM 1GB TI OMAP 4430

DI1 iOS 92

Tipo Smartphone Marca Apple Modelo 5S

Procesador Dual-core 13 GHz Cyclone (ARM v8-based)

RAM 1GB Apple A7

DI2 iOS 91

Tipo Smartphone Marca Apple

Modelo 6 plus Procesador Dual-core 14 GHz Typhoon (ARM v8-

based) RAM 1GB Apple A8

DI3 iOS 91 Tipo Tablet

Marca Apple Modelo Ipad Air

Capiacutetulo 4 Experimentacioacuten

64

Procesador Dual-core 13 GHz Cyclone (ARM v8-based)

RAM 1GB Apple A7 Tabla 2 Dispositivos moacuteviles utilizados en el experimento

Se definieron siete escenarios de anaacutelisis distintos uno por cada estrategia de

desarrollo utilizada

1 Nativo para Android y nativo para iOS 2 Aplicaciones web (multiplataforma) 3 Apache Cordova (multiplataforma hibrido) 4 Appcelerator Titanium (multiplataforma interpretado) 5 NativeScript (multiplataforma interpretado) 6 Xamarin (multiplataforma compilacioacuten cruzada) 7 Corona (multiplataforma compilacioacuten cruzada)

En los seis dispositivos se llevaron a cabo pruebas para cada uno de los siete

escenarios mencionados definiendo asiacute un total de 42 casos de prueba

Con el fin de evaluar la velocidad de procesamiento se planteoacute un caacutelculo simple

que incluyoacute varias iteraciones funciones matemaacuteticas y aritmeacutetica de punto flotante que

se resume en la siguiente serie

119904119890119903119894119890 =sum sum (log2(119896) +3119896

2119895+ radic119896

100000

119896=1

+ 119896119895minus1)

5

119895=1

A modo de ejemplo en la Figura 25 se muestra el coacutedigo multiplataforma

desarrollado en Apache Cordova para el caacutelculo de la serie definida

El experimento planteado permite medir con precisioacuten la variable analizada en este

caso el tiempo de ejecucioacuten requerido para realizar un caacutelculo matemaacutetico intensivo

Este tipo de caacutelculo matemaacutetico es frecuente en diversas aplicaciones que se

ejecutan en dispositivos moacuteviles por ejemplo juegos aplicaciones con realidad

aumentada aplicaciones para tratamiento de imaacutegenes entre otras en las cuales no

siempre es posible utilizar el poder de la Unidad de Procesamiento Grafico (GPU) para

el caacutelculo

El coacutedigo fuente de los experimentos llevados a cabo se encuentra disponible en

[66]

En las siguientes secciones se describe la experimentacioacuten y se analizan los

resultados obtenidos

Capiacutetulo 4 Experimentacioacuten

65

4222 Recoleccioacuten de datos

Para cada uno de los 42 casos de prueba definidos se realizaron 30 ejecuciones

independientes del experimento disentildeado obteniendo en cada caso una muestra T = T1

T2 hellip T30 con Ti = tiempo requerido para el caacutelculo de la serie en la i-eacutesima ejecucioacuten

del experimento planteado El tiempo Ti se expresa en milisegundos

Para caracterizar cada una de las muestras obtenidas se han calculado los

estadiacutesticos y S que se corresponden con la media (o promedio muestral) y la

desviacioacuten estaacutendar muestral (ver Tabla 3)

var startTime = new Date()getTime()

var serie = 0

for ( var j=1 j lt= 5 j++ )

for ( var k=1 k lt= 100000 k++ )

series = series + (Mathlog(k)MathLN2) + (3k2j) +

Mathsqrt(k) + Mathpow(k j-1)

var finalTime = new Date()getTime()

var duration = finalTime - startTime

documentgetElementById(result)innerHTML = duration + -gt + series

Figura 25 Caacutelculo de serie coacutedigo multiplataforma desarrollado en Apache Cordova

Capiacutetulo 4 Experimentacioacuten

66

Dada la muestra T=T1 T2 hellip Tn

Media o promedio muestral = (

1

119899)sum119879119894

119899

119894=1

Desviacioacuten estaacutendar muestral 119878 = radic

1

119899 minus 1sum(119879119894 minus )2119899

119894=1

Tabla 3 Estadiacutesticos utilizados en el anaacutelisis de los datos

423 Resultados Obtenidos En la Tabla 4 se presenta una siacutentesis de los resultados obtenidos conformada por

los valores y S calculados para cada caso de prueba planteado Estos valores permiten

comparar el rendimiento de las aplicaciones generadas a partir de los distintos enfoques

de desarrollo evaluadas sobre cada uno de los seis dispositivos utilizados

Los valores presentados en la Tabla 4 y graficados con diagramas de barras en la

Figura 26 sugieren un anaacutelisis por separado de los casos con sistema operativo Android

y los casos con sistema operativo iOS Claramente las siluetas delineadas en los

diagramas de barras de la Figura 26 se repiten de forma similar en los escenarios con el

mismo sistema operativo pero se diferencian notablemente entre distintos sistemas

operativos

Nativo WebApp Apache Cordova Titanium NativeScript Xamarin Corona

DA1 53293 18627 23033 21167 18730 39517 140173

S 1614 632 1422 2495 939 895 1260

DA2 21180 9067 8577 9563 8967 21100 60053

S 1997 1248 883 764 916 669 595

DA3 76380 17273 19060 19270 18350 37933 134430

S 2898 1551 936 1680 304 831 2339

DI1 413 5710 32373 29977 25203 12543 3963

S 078 1655 1662 401 728 1103 085

DI2 413 4190 26397 24113 22343 10303 9863

S 073 538 1544 495 861 491 613

DI3 253 4167 29223 27267 22597 11053 10967

S 057 444 1082 550 277 390 275

Tabla 4 Siacutentesis de resultados obtenidos

Capiacutetulo 4 Experimentacioacuten

67

Figura 26 Diagrama de barras con las muestras recolectadas (las barras muestran el tiempo promedio expresado en milisegundos)

Capiacutetulo 4 Experimentacioacuten

68

424 Anaacutelisis de Resultados Debido a las diferencias de hardware de los dispositivos utilizados no es prudente

comparar el rendimiento de las aplicaciones nativas en Android con respecto a las de

iOS No obstante de los resultados obtenidos es posible inferir que el enfoque nativo en

iOS resulta mucho maacutes eficiente que el enfoque nativo en Android Existen diversos

factores que presumen justificar este hecho entre ellos la diferencia inherente de ejecutar

coacutedigo Objective C en iOS comparado con ejecutar coacutedigo Java en Android el cual

necesita del Android Runtime (ART) para su funcionamiento ralentizaacutendolo

Respecto de las aplicaciones web multiplataforma los resultados de rendimiento

resaltaron positivamente en relacioacuten al resto tanto en Android como en iOS Asiacute el

enfoque de desarrollo multiplataforma web seriacutea una opcioacuten conveniente para alcanzar

un buen rendimiento en todos los dispositivos moacuteviles independientemente de su sistema

operativo Sin embargo esta eleccioacuten podriacutea verse afectada por las limitaciones de estas

aplicaciones para acceder en forma completa a las capacidades especiacuteficas del dispositivo

Respecto de los enfoques hiacutebrido e interpretado -analizados a traveacutes de las

tecnologiacuteas Coacuterdova Titanium y NativeScript- es importante destacar que si bien estos

enfoques trabajan de modo distinto entre siacute tienen algo en comuacuten la ejecucioacuten de coacutedigo

JavaScript En este sentido el motor de JavaScript -encargado de convertir el coacutedigo

JavaScript en coacutedigo optimizado para que luego lo interprete un WebView- cumple un

rol determinante Las pruebas de estos enfoques en Android -que utiliza el motor de

JavaScript V8- tuvieron un comportamiento similar al enfoque web y comportamiento

superior que el enfoque nativo y el enfoque de compilacioacuten cruzada Por el contrario en

los dispositivos moacuteviles con iOS -que utiliza el motor JavaScriptCore- los resultados de

estas pruebas fueron peores que en los enfoques nativos web y de compilacioacuten cruzada

En los dispositivos moacuteviles con iOS los casos de compilacioacuten cruzada -analizados

a traveacutes de las tecnologiacuteas Xamarin y Corona- obtuvieron mejores resultados que los

casos hiacutebridos e interpretados pero mostraron peor rendimiento que el enfoque nativo y

que el enfoque web En cambio en los dispositivos moacuteviles con Android los resultados

de las pruebas con las aplicaciones construidas mediante el enfoque de compilacioacuten

cruzada fueron los peores La necesidad de ejecucioacuten de coacutedigo Java a traveacutes del Android

Runtime entre otros factores justifican este resultado

Capiacutetulo 4 Experimentacioacuten

69

425 Conclusiones Se ha presentado un estudio comparativo sobre el tiempo de procesamiento de

aplicaciones de software para dispositivos moacuteviles generadas con distintos enfoques de

desarrollo

Los escenarios de prueba disentildeados incluyeron los dos sistemas operativos para

dispositivos moacuteviles con mayor presencia en el mercado Android e iOS ejecutaacutendose

cada uno de ellos sobre dos smartphones (considerados de gama media y gama alta al

momento en que este trabajo fue escrito) y una Tablet

Sobre estos seis dispositivos se realizoacute un estudio de rendimiento para las

aplicaciones construidas seguacuten los enfoques de desarrollo nativos y multiplataforma

mediante un conjunto de aplicaciones que fueron desarrolladas para tal fin

1 Aplicacioacuten nativa para Android 2 Aplicacioacuten nativa para iOS 3 Aplicacioacuten web (multiplataforma) 4 Aplicacioacuten Apache Cordova (multiplataforma hibrido) 5 Aplicacioacuten Appcelerator Titanium 6 (multiplataforma interpretado) 7 Aplicacioacuten NativeScript (multiplataforma interpretada) 8 Aplicacioacuten Xamarin (multiplataforma compilacioacuten cruzada) 9 Aplicacioacuten Corona (multiplataforma compilacioacuten cruzada)

En todos los dispositivos con sistema operativo Android el peor rendimiento fue

evidenciado por Corona seguido por el enfoque nativo y Xamarin Esta situacioacuten es

totalmente opuesta a los resultados obtenidos sobre el sistema operativo iOS en doacutende las

tecnologiacuteas de desarrollo mencionadas se mostraron siempre entre las cuatro mejores En

particular es destacable la supremaciacutea del enfoque nativo frente a todos los demaacutes para el

caso de los dispositivos con iOS

Respecto al mejor rendimiento en los dispositivos Android no es posible identificar

claramente cuaacutel es el enfoque maacutes conveniente Tanto las aplicaciones web como

Coacuterdova NativeScript y Titanium alcanzaron buenos resultados en relacioacuten al resto

Nuevamente esta situacioacuten se contrapone con los datos obtenidos sobre los dispositivos

iOS en los que Coacuterdova Titanium y NativeScript obtuvieron las peores mediciones entre

las tecnologiacuteas utilizadas No ocurrioacute lo mismo con las aplicaciones web en iOS que

tambieacuten produjeron buenos resultados en relacioacuten al resto

Capiacutetulo 4 Experimentacioacuten

70

En liacuteneas generales independientemente del sistema operativo las aplicaciones

web han mostrado un buen rendimiento si se consideran todos los casos analizados

Actualmente al desarrollar un sistema de software existe la posibilidad de generar

su versioacuten para dispositivos moacuteviles Esta tarea muchas veces no es simple y una de las

decisiones maacutes importantes a tomar es elegir el enfoque de desarrollo

A partir de este trabajo se dispone de un indicador de rendimiento que puede ser

uacutetil para el Ingeniero de Software que debe seleccionar un enfoque de desarrollo de

software para dispositivos moacuteviles

Por otra parte no se han encontrado trabajos de otros autores donde se haya

analizado el rendimiento en todos los enfoques de desarrollo de software para dispositivos

moacuteviles Este tema tal como se indicoacute en la introduccioacuten es importante para la

comunidad de Ingenieriacutea de Software y los trabajos analizados hasta el momento se han

concentrado solo en los enfoques nativos yo hiacutebridos

43 Anaacutelisis comparativo de enfoques de Desarrollo de Aplicaciones Moacuteviles

Como se estudioacute en las secciones anteriores existen diferentes enfoques de

desarrollo de aplicaciones moacuteviles

Una opcioacuten es desarrollar aplicaciones moacuteviles nativas las cuales hacen uso de

todas las capacidades del dispositivo moacutevil y permiten una alta experiencia de usuario

debido a que las interfaces de usuario se componen por componentes nativos resultando

semejantes al resto de las interfaces del sistema operativo No obstante el desarrollo no

puede ser reutilizado para dar soporte a otras familias de sistemas operativos implicando

mayores costos de desarrollo y mantenimiento

En contraposicioacuten al desarrollo nativo surgioacute el desarrollo multiplataforma dando

la posibilidad de desarrollar un uacutenico producto y ejecutarlo en diferentes plataformas En

este sentido se estudiaron diferentes enfoques desarrollo web moacutevil hiacutebrido

interpretado y generado por compilacioacuten cruzada Cada uno de estos enfoques cuenta con

ciertas caracteriacutesticas que naturalmente los hacen diferenciar con ventajas y

desventajas

Se identificaron diversos factores que pueden ser utilizados para analizar las

Capiacutetulo 4 Experimentacioacuten

71

aplicaciones que se generan mediante los enfoques de desarrollo nativo y

multiplataforma los cuales se detallan a continuacioacuten

Experiencia de usuario conjunto de factores y elementos que hacen referencia

al nivel de satisfaccioacuten total de los usuarios cuando utilizan un producto o sistema

El resultado es la generacioacuten de una percepcioacuten positiva o negativa de dicho

servicio producto o dispositivo

Plataformas alcanzadas se ha visto en capiacutetulos anteriores que existen distintas

familias de sistemas operativos Seguacuten el modo de desarrollo elegido se puede

desarrollar aplicaciones para una plataforma especiacutefica o por varias

Costo del desarrollo el desarrollo puede ser maacutes o menos costoso seguacuten si

requiere codificar las soluciones de forma especiacutefica para cada sistema operativo

o si es posible la reutilizacioacuten de coacutedigo

Costo del mantenimiento la correccioacuten de errores o agregados de nuevas

funcionalidades puede requerir codificar de forma especiacutefica para cada sistema

operativo Ademaacutes se debe tener en cuenta si deben convivir diferentes versiones

del mismo producto

Entorno de desarrollo integrado Software que asiste al programador en la

construccioacuten de aplicaciones

Interfaces de usuario factor que analiza los tipos de componentes utilizados para

construir las interfaces de usuario Como se mencionoacute al analizar los distintos

enfoques de desarrollo la eleccioacuten de la herramienta a utilizar incide en si las

interfaces estaraacuten compuestas mediante componentes nativos o componentes web

los cuales pueden ser decorados para simular componentes nativos

Acceso total al dispositivo posibilidad de acceder mediante las herramientas de

desarrollo a todas las capacidades del dispositivo como la caacutemara sensores entre

otros

Modo de instalacioacuten se refiere a si la aplicacioacuten puede ser instalada desde las

tiendas de aplicaciones o es accesible sin instalacioacuten desde un navegador de

Internet

Rendimiento factor que analiza la ejecucioacuten de tareas y los tiempos asociados

Capiacutetulo 4 Experimentacioacuten

72

en su resolucioacuten

Uso offline capacidad que tiene la aplicacioacuten de funcionar sin estar conectada a

internet

Distribucioacuten a traveacutes de las tiendas posibilidad de descargar la aplicacioacuten desde

las tiendas de aplicaciones

Categoriacuteas de aplicaciones a desarrollar tipo de aplicacioacuten que se desea

desarrollar

Porcentaje de coacutedigo a reutilizar Cantidad de liacuteneas de coacutedigo con respecto al

total que pueden ser reutilizadas para en la generacioacuten de aplicaciones

multiplataforma

Con el objetivo de estudiar coacutemo se comportan e inciden estos factores en los

distintos enfoques de desarrollo se realizoacute un estudio comparativo de los diferentes

criterios a tener en cuenta Dicho estudio se sintetiza en la Tabla 5

Capiacutetulo 4 Experimentacioacuten

73

Factor a analizar Desarrollo Nativo Desarrollo Web Desarrollo Hiacutebrido Desarrollo

Interpretado

Desarrollo Generado

por Compilacioacuten

Cruzada

Experiencia de Usuario

Alta Muy Baja Baja Alta Alta

Plataformas alcanzadas

Se desarrolla

exclusivamente

para una

plataforma destino

Cualquier

plataforma Se

necesita solo un

navegador y acceso a

internet

Es posible compilar

para Android iOS

Windows Phone

Es posible compilar

para Android iOS

Windows Phone

Es posible compilar

para Android iOS

Windows Phone

Costo del desarrollo

Muy Alto Muy Bajo Bajo Medio Medio a Alto

Costo del mantenimiento

Muy Alto Muy Bajo Medio Alto Alto a Muy Alto

Entorno de desarrollo integrado

IDE uacutenico por SO Muacuteltiples opciones Plugins para IDE

geneacutericos

Algunos frameworks

disponen de IDE

especiacutefico

IDE uacutenico por

framework

Interfaces de usuario

Nativas Web Web Nativas Nativas

Acceso total al dispositivo

Si No Si Si Si

Modo de instalacioacuten

Descargar desde la Sin instalaciones Descargar desde la Descargar desde la Descargar desde la

Capiacutetulo 4 Experimentacioacuten

74

Factor a analizar Desarrollo Nativo Desarrollo Web Desarrollo Hiacutebrido Desarrollo

Interpretado

Desarrollo Generado

por Compilacioacuten

Cruzada

tienda de

aplicaciones e

instalar

tienda de aplicaciones

e instalar

tienda de aplicaciones e

instalar

tienda de aplicaciones e

instalar

Rendimiento Muy Alto Muy Bajo Bajo a Medio Alto Medio a Alto

Uso offline Si No Si Si Si

Distribucioacuten a traveacutes de las tiendas

Si No Si Si Si

Categoriacutea de aplicaciones a desarrollar

Aplicaciones que

demandan muchos

recursos o que

requiere una alta

experiencia de

usuario

Sitios web existentes Sitios web

encapsulados como

aplicacioacuten para ser

distribuidas a traveacutes

de tiendas

Aplicaciones simples a

complejas

Aplicaciones simples a

complejas

Porcentaje de Coacutedigo a reutilizar

0 100 Cerca del 100 Cerca del 90 Entre el 60 y 85

Tabla 5 Anaacutelisis comparativo de enfoques de desarrollo de aplicaciones moacuteviles

Capiacutetulo 5 Conclusiones

75

Capiacutetulo 5 Conclusiones

Inicialmente los dispositivos moacuteviles fueron pensados y disentildeados con un propoacutesito

particular A traveacutes de los antildeos el crecimiento tecnoloacutegico ha permitido incorporar

funcionalidades adicionales lo que ha posibilitado expandir el marco de uso

Actualmente el poder de coacutemputo subyacente en una gran variedad de dispositivos

moacuteviles ha generado nuevas posibilidades lo que constituye un reto para los ingenieros

de software

Asimismo y tal como se mencionoacute en capiacutetulos anteriores existen diversos

sistemas operativos para dispositivos moacuteviles siendo los maacutes populares Android iOS y

Windows Phone Debido a que el eacutexito de un producto de software estaacute vinculado en

gran parte a su uso masivo surge la necesidad de desarrollar aplicaciones moacuteviles

teniendo en cuenta cada una de estas plataformas

El desarrollo de software para dispositivos moacuteviles tiene caracteriacutesticas propias que

difieren del desarrollo tradicional Esta actividad reciente impensada deacutecadas atraacutes

marca un antes y un despueacutes en la evolucioacuten de la Ingenieriacutea de Software Es de esperar

que dicha evolucioacuten continuacutee y por consiguiente que los enfoques de desarrollo para

dispositivos moacuteviles cambien o sean reemplazados por otros Es claro que por el

momento existen cinco posibilidades de desarrollo de una misma aplicacioacuten moacutevil

Aplicaciones nativas

Aplicaciones web

Aplicaciones hiacutebridas

Aplicaciones interpretadas

Aplicaciones generadas por compilacioacuten cruzada

Para un completo anaacutelisis de cada enfoque de desarrollo es que se disentildearon una

serie de casos de estudio El primero de ellos consistioacute en desarrollar una aplicacioacuten moacutevil

para cada enfoque de desarrollo presentado Teniendo este primer objetivo definido se

decidioacute extender el entorno virtual de ensentildeanza y aprendizaje WebUNLP a traveacutes de

una aplicacioacuten moacutevil enfocada en la cartelera de novedades de los cursos La aplicacioacuten

Capiacutetulo 5 Conclusiones

76

moacutevil debiacutea permitir el ingreso de alumnos y docentes con las mismas credenciales que

las utilizadas en la versioacuten web y debiacutea mostrar informacioacuten sincronizada con la web

sobre las novedades publicadas en las carteleras de los cursos Asimismo cuando los

docentes publiquen novedades aquellos alumnos pertenecientes al curso deben recibir

una notificacioacuten en su dispositivo moacutevil

Luego de desarrollar las aplicaciones moacuteviles para cada enfoque de desarrollo se

pueden elaborar algunas conclusiones

Se destaca la simpleza a la hora de generar la versioacuten web moacutevil pero se observan

limitaciones al no poder acceder a todas las capacidades de hardware del dispositivo

El desarrollo de las aplicaciones nativas resultoacute oacuteptimo si se lo compara con los

requerimientos oportunamente planteados con la desventaja de que las aplicaciones no

son portables implicando desarrollos especiacuteficos para cada plataforma que se desee

cubrir Por otro lado el desarrollo de las aplicaciones hibridas ndashutilizando PhoneGap y

Sencha- lograron conjugar la simpleza del desarrollo web con el uso de todas las

capacidades del dispositivo posicionaacutendolo como una eleccioacuten realmente interesante De

igual manera la aplicacioacuten interpretada desarrollada mediante Titanium logroacute resolver

todos los requerimientos previamente planteados se destaca que el desarrollo fue

relativamente simple y es posible reutilizar todo el coacutedigo entre plataformas El hecho de

obtener interfaces totalmente nativas la posiciona como la alternativa ideal Por uacuteltimo

las aplicaciones generadas con el enfoque de compilacioacuten cruzada (Delphi y Xamarin)

lograron cumplir los requerimientos planteados la obtencioacuten de interfaces totalmente

nativas es algo a destacar pero conlleva un alto costo ya que se debe disentildear las interfaces

para cada plataforma de manera independiente

El segundo experimento del presente trabajo consistioacute en analizar el rendimiento

de las aplicaciones generadas mediante cada enfoque de desarrollo En total se

desarrollaron mediante distintas tecnologiacuteas nueve aplicaciones Las pruebas se

realizaron en los dos sistemas operativos de mayor relevancia Android e iOS a traveacutes de

seis dispositivos (cuatro smartphones y dos tablets)

En todos los dispositivos con sistema operativo Android el peor rendimiento se

encontroacute en la aplicacioacuten generada por Corona seguido por el enfoque nativo y Xamarin

En cambio estas tecnologiacuteas se mostraron siempre entre las cuatro mejores sobre el

sistema operativo iOS

Capiacutetulo 5 Conclusiones

77

Respecto al mejor rendimiento en los dispositivos Android no es posible identificar

claramente cuaacutel es el enfoque maacutes conveniente Tanto las aplicaciones web como

Coacuterdova NativeScript y Titanium obtuvieron buenos resultados de rendimiento en

relacioacuten al resto Nuevamente esta situacioacuten se contrapone con los datos obtenidos sobre

los dispositivos iOS en los que Coacuterdova Titanium y NativeScript obtuvieron las peores

mediciones entre las tecnologiacuteas utilizadas No ocurrioacute lo mismo con las aplicaciones web

en iOS que tambieacuten produjeron buenos resultados en relacioacuten al resto

En liacuteneas generales independientemente del sistema operativo las aplicaciones

web han mostrado un buen rendimiento si se consideran todos los casos analizados

Por uacuteltimo se elaboroacute un anaacutelisis comparativo de las caracteriacutesticas inherentes a

cada enfoque de desarrollo Se identificaron ciertos factores de intereacutes que la comunidad

de ingenieriacutea de software considera al elegir queacute tecnologiacutea utilizar y se analizoacute su

impacto en cada enfoque de desarrollo

Capiacutetulo 6 Trabajo Futuro

78

Capiacutetulo 6 Trabajo Futuro

Si bien se estudiaron en el presente trabajo diversas tecnologiacuteas para el desarrollo

de aplicaciones moacuteviles se planea profundizar el estudio analizando otras herramientas

multiplataforma disponibles en el mercado como Ionic [32] NativeScript [38] Applause

[40] React Native [67] entre otras

Ademaacutes se plantea como liacutenea de trabajo futuro ampliar el anaacutelisis comparativo de

rendimiento incluyendo otros aspectos del desarrollo para dispositivos moacuteviles como

por ejemplo el acceso a disco el consumo de bateriacutea y el tiempo de renderizacioacuten de

imaacutegenes

Por uacuteltimo es deseable estudiar la experiencia de usuario en las aplicaciones

generadas por cada enfoque de desarrollo de aplicaciones para dispositivos moacuteviles

Capiacutetulo 6 Trabajo Futuro

79

Bibliografiacutea

80

Bibliografiacutea

[1] A Talukder H Ahmed and R Yavagal Mobile Computing Technology Applications and Service Creation Tata McGraw-Hill Ed 2010

[2] Abrahamsson P et al Mobile-D An Agile Approach for Mobile Application Development in In Companion To the 19th Annual ACM SIGPLAN Conference on Object-Oriented Programming Systems Languages and Applications (OOPSLA 04 ) Vancouver Canada 2004 pp 174-175

[3] P Abrahamsson Mobile software development - the business opportunity of today in Proceedings of the International Conference on Software Development Reykjavik 2005

[4] I S Hayes Just Enough Wireless Computing Prentice Hall Professional Technical 2002

[5] Stelios Xinogalos Spyros Xanthopoulos A Comparative Analysis of Cross-platform Development Approaches for Mobile Applications in Proceedings of the 6th Balkan Conference in Informatics Thessaloniki Greece 2013 pp 213-220

[6] Tolety SB Raj R A study on approaches to build cross-platform mobile applications and criteria to select appropriate approach in India Conference (INDICON) 2012 Annual IEEE India 2012

[7] Yonathan Aklilu Redda Cross platform Mobile Applications Development in Master in Information Systems Norwegian University of Science and Technology Norway 2012

[8] Datta SK Bonnet C Nikaein N Dalmasso I Survey comparison and evaluation of cross platform mobile application development tools in Wireless Communications and Mobile Computing Conference (IWCMC) Cagliari Sardinia Italia 2013

[9] Lisandro Deliacutea Nicolaacutes Galdaacutemez Pablo Thomas and Patricia Pesado An Experimental Analysis of Application Types for Mobile Devices in Computer Science amp Technology Series - XIX Argentine Congress of Computer Science - Selected Papers Editorial de la Universidad de La Plata 2014 pp 173 -183

[10] Lisandro Deliacutea Nicolaacutes Galdamez Pablo Thomas Leonardo Corbalaacuten and Patricia Pesado Multi-Platform Mobile Application Development Analysis in IEEE Ninth International Conference on Research Challenges in Information Science - IEEE RCIS Atenas Grecia May 2015

[11] Telam [Online] httpwwwtelamcomarnotas201504102073-telefonia-movil-lineas-activashtml

Bibliografiacutea

81

[12] RTVE [Online] httpwwwrtveesnoticias20110212evolucion-del-telefono-movil-del-zapatofono-smartphones404523shtml

[13] Vodafone [Online] httpblogvodafonecouk20130829vodafone-uks-ceo-guy-laurence-4g-finally-has-a-purpose

[14] Muy Canal [Online] httpwwwmuycanalcom20140131futuro-del-telefono-movil

[15] Statcounter [Online] httpgsstatcountercom

[16] Anthony I Wasserman Software Engineering Issues for Mobile Application Development 2010

[17] Statista [Online] httpwwwstatistacom

[18] Lisandro Deliacutea Nicolaacutes Galdamez Pablo Thomas Leonardo Corbalaacuten and Patricia Pesado Anaacutelisis Experimental de desarrollo de Aplicaciones Moacuteviles Multiplataforma in XX Congreso Argentino de Ciencias de la Computacioacuten CACIC 2014 San Justo Argentina octubre 2014

[19] Lisandro Deliacutea Nicolaacutes Galdamez Pablo Thomas and Patricia Pesado Un Anaacutelisis Experimental de Tipo de Aplicaciones para Dispositivos Moacuteviles in XIX Congreso Argentino de Ciencias de la Computacioacuten CACIC 2013 Mar del Plata Argentina 2013

[20] Abhinay Puvvala Amitava Dutta Rahul Roy and Priya Seetharaman Mobile Application Developersrsquo Platform Choice Model in 2016 49th Hawaii International Conference on System Sciences (HICSS) Koloa Hawaii 2016

[21] Android Dashboard [Online] httpsdeveloperandroidcomaboutdashboardsindexhtml

[22] Xcode [Online] httpsdeveloperapplecomxcode

[23] KW Tracy Mobile Application Development Experiences on Applersquos iOS and

Android OS Potentials IEEE vol 31 no 4 July-Aug 2012

[24] Google Recommendations for building smartphone-optimized websites [Online] httpgooglewebmastercentralblogspotcomar

[25] Bootstrap [Online] httpgetbootstrapcom

[26] Foundation [Online] httpfoundationzurbcom

[27] PhoneGap [Online] httpphonegapcom

[28] Apache Cordova [Online] httpscordovaapacheorg

Bibliografiacutea

82

[29] Adobe PhoneGap Build [Online] httpsbuildphonegapcom

[30] CocoonJS [Online] httpscocoonio

[31] Ludei [Online] httpswwwludeicom

[32] Ionic [Online] httpionicframeworkcom

[33] Sencha [Online] httpswwwsenchacomproductstouchoverview

[34] A Kosmaczewski Sencha Touch 2 Up and Running OrsquoReilly 2013

[35] Appcelerator Titanium [Online] httpwwwappceleratorcomproduct

[36] Backbone [Online] httpbackbonejsorg

[37] Underscorejs [Online] httpunderscorejsorg

[38] NativeScript [Online] httpswwwnativescriptorg

[39] TypeScript [Online] httpswwwtypescriptlangorg

[40] applause [Online] httpwwwapplausecom

[41] Xamarin [Online] wwwxamarincom

[42] Delphi [Online] httpswwwembarcaderocomproductsdelphi

[43] RubyMotion [Online] httpwwwrubymotioncom

[44] Xtext [Online] httpwwweclipseorgXtext

[45] Mono [Online] httpwwwmono-projectcom

[46] [Online] httpswebunlpeadunlpeduar

[47] I Salmre Writing Mobile Code Essential Software Engineering for Building Mobile Applications Addison Wesley Professional 2005

[48] Mapbox [Online] httpswwwmapboxcomlabstwitter-gnipbrands

[49] Ruby S Richardson L RESTful Web Services OrsquoReilly Media 2007

[50] Matthew J Hamm Wireframing Essentials Packt Publishing 2014

[51] GCM [Online] httpsdevelopersgooglecomcloud-messaging

[52] iOS Human Interface Guidelines [Online] httpsdeveloperapplecomioshuman-interface-guidelinesoverviewdesign-principles

[53] APN [Online] httpdeveloperapplecomlibrarymacdocumentationNetworkingInternetConceptual

Bibliografiacutea

83

RemoteNotificationsPGChaptersApplePushServicehtmlapple_refdocuidTP40008194-CH100-SW9

[54] Mark Norm Norman Francis Christian Heilmann Web Development Solutions Ajax APIs Libraries and Hosted Services Made Easy Apress 2007

[55] JqueryMobile [Online] httpsjquerymobilecom

[56] Pushwoosh [Online] httpsgithubcomPushwooshpushwoosh-phonegap-plugin

[57] J Clark Creating Mobile Apps with Sencha Touch 2 Packt Publishing 2013

[58] Kinvey [Online] httpwwwkinveycom

[59] Ali Mesbah Philippe Kruchten Mona Erfani Joorabchi Real Challenges in Mobile App Development in ACM IEEE International Symposium on Empirical Software Engineering and Measurement Baltimore Maryland US 2013

[60] Andreacute Nitze Andreas Schmietendorf Florian Roumlsler Towards a Mobile Application Performance Benchmark in ICIW 2014 The Ninth International Conference on Internet and Web Applications and Services Paris France 2014

[61] Sebastian Hanschke and Tim A Majchrzak Henning Heitkoumltter Comparing Cross Platform Development approaches For Mobile Applications in 8th International Conference on Web Information Systems and Technologies (WEBIST) Porto Portugal 2012

[62] HW Kim SG Chung CS Jung Measuring Software Quality A Survey of ISOIEC 9126 IEEE Software vol 21 no 5 pp 88 ndash 92 SeptemberOctober 2004

[63] Luis Corral Anton B Georgiev Alberto Sillitti and Giancarlo Succi Can execution time describe accurately the energy consumption of mobile apps An experiment in Android GREENS 2014 Proceedings of the 3rd International Workshop on Green and Sustainable Software pp 31-37 June 2014

[64] Brian Leroux Andre Charland Mobile application development web vs native Magazine Communications of the ACM vol 54 no 5 pp 49-53 May 2011

[65] Luis Corral Alberto Sillitti and Giancarlo Succi Mobile multiplatform development An experiment for performance analysis in The 9th International Conference on Mobile Web Information Systems (MobiWIS) Ontario Canada 2012

[66] Repositorio Git III-LIDI [Online] httpsgitlabcomiii-lidiperformance-assessment-multiplatform-mobile-applicationstreemaster

[67] React Native [Online] httpsfacebookgithubioreact-native

[68] Lisandro Galdaacutemez Nicolaacutes Corbalaacuten Leonardo Thomas Pablo Pesado Patricia Deliacutea Un anaacutelisis comparativo de rendimiento en aplicaciones moacuteviles

Bibliografiacutea

84

multiplataforma in XXI Congreso Argentino de Ciencias de la Computacioacuten Juniacuten 2015

Page 15: Desarrollo de Aplicaciones Móviles Multiplataforma

Capiacutetulo 1 Tecnologiacutea Moacutevil

15

tradicionales denominados lsquode escritoriorsquo

Figura 4 Comparacioacuten entre plataformas [15]

En la actualidad existen cientos de modelos diferentes de dispositivos moacuteviles y

los fabricantes siguen innovando intentando destacarse sobre la competencia Hoy en diacutea

no nos sorprende encontrar dispositivos moacuteviles con procesadores quad-core de 22 Ghz

Incluso ya se comienzan a conocer prototipos de dispositivos con ocho o diez nuacutecleos

De la mano de los procesadores la memoria RAM de los dispositivos moacuteviles

tambieacuten ha crecido considerablemente llegando a comercializarse dispositivos con 3 GB

de memoria

La caacutemara de los dispositivos es otra de las capacidades que maacutes ha progresado

llegando a encontrarse sensores de 20 MP y la posibilidad de grabar videos en formato

UHD 4K (3840 x 2160)

El tamantildeo de las pantallas y sus resoluciones fueron otra de las caracteriacutesticas que

maacutes han evolucionado Es posible encontrar dispositivos con pantallas de 5 pulgadas con

posibilidad de visualizar 16 millones de colores y con resoluciones Quad HD (2560 x

1440)

La tecnologiacutea de las bateriacuteas es un aspecto en que no se ha logrado grandes avances

en el sector ni se pronostican grandes progresos a corto plazo Incluso la llegada de chips

Capiacutetulo 1 Tecnologiacutea Moacutevil

16

maacutes potentes mayores pantallas o el 4G disminuiraacuten auacuten maacutes la autonomiacutea de las bateriacuteas

El uacuteltimo aspecto a mencionar es el de las capacidades del dispositivo Ademaacutes de

los ya claacutesicos sensores Global Positioning System (GPS) la capacidad de conectividad

viacutea bluetooth infrarrojo y WIFI hoy surge una diversidad de opciones que pueden

disponer los teleacutefonos inteligentes

Por el lado de la conectividad cada vez es maacutes comuacuten encontrar terminales con

mecanismos de comunicacioacuten Near Field Communication (NFC) o WIFI Direct

Con respecto a los sensores actualmente existen dispositivos que cuentan con

aceleroacutemetros giroscopios y magnetoacutemetros los cuales brindan a los desarrolladores de

aplicaciones la posibilidad de controlar la posicioacuten del aparato la aceleracioacuten que sufre

el dispositivo con respecto a la fuerza de la gravedad etc Tambieacuten es comuacuten el uso de

sensores de proximidad por ejemplo para apagar la pantalla mientras se atiende una

llamada El sensor de luminosidad permite medir el brillo de la luz ambiental Asiacute el

software del teleacutefono utiliza estos datos para ajustar el brillo de la pantalla

automaacuteticamente hacieacutendola maacutes clara o maacutes oscura

Los uacuteltimos smartphones de gama alta tambieacuten son capaces de medir la presioacuten

atmosfeacuterica a traveacutes de un baroacutemetro Los datos que mide el dispositivo sirven para

determinar en queacute nivel por encima del mar se encuentra el teleacutefono lo que se traduce en

la mejora de la precisioacuten del GPS

Incluso ya existen dispositivos que cuentan con un sensor de humedad del aire el

cual permite controlar los niveles de humedad para por ejemplo ayudar a las personas

con problemas respiratorios

Como si todo esto fuese poco existen modelos con podoacutemetro -para medir con

precisioacuten los pasos que da el usuario- pulsoacutemetro -para medir las pulsaciones a traveacutes de

los vasos sanguiacuteneos de los dedos- y hasta sensor de huellas digitales para cuestiones

relativas a la seguridad

Por lo anteriormente dicho los desarrolladores de aplicaciones para dispositivos

moacuteviles de la actualidad tienen el desafiacuteo de poder manipular desde sus aplicaciones

todas las posibilidades descriptas

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

17

Capiacutetulo 2 Desarrollo de

Aplicaciones Moacuteviles Nativas

Si bien el desarrollo de aplicaciones para dispositivos moacuteviles se remonta por lo

menos a 10 antildeos atraacutes ha habido un crecimiento exponencial desde que se abrioacute la tienda

de aplicaciones de iPhone en julio de 2008 Desde entonces los fabricantes de

dispositivos han creado tiendas de aplicaciones para otros dispositivos moacuteviles

incluyendo Android BlackBerry Nokia Ovi Windows Phone entre otros [16]

Actualmente el desarrollo de aplicaciones para dispositivos moacuteviles es un campo

en evolucioacuten con gran intereacutes econoacutemico y cientiacutefico Una prueba de esto es que para

Julio del 2014 se disponiacutean de maacutes de 3 millones de aplicaciones entre las principales

tiendas virtuales de aplicaciones Y solamente en el antildeo 2013 se contabilizaron 101

billones de descargas de aplicaciones moacuteviles en todo el mundo de las cuales 9 billones

fueron descargas pagas y 92 billones descargas gratuitas [17]

Con el actual creciente nuacutemero de plataformas moacuteviles desarrollar aplicaciones

moacuteviles se hizo muy difiacutecil para las empresas ya que necesitan desarrollar las mismas

aplicaciones para cada plataforma de destino

El desarrollo de aplicaciones nativas es la forma natural de implementar

aplicaciones moacuteviles Las aplicaciones nativas son concebidas para ejecutarse en una

plataforma especiacutefica es decir se debe considerar el tipo de dispositivo el sistema

operativo a utilizar y su versioacuten

Las aplicaciones nativas se desarrollan utilizando un entorno de desarrollo

integrado (IDE) que proporciona las herramientas de desarrollo necesarias para la

construccioacuten y depuracioacuten de aplicaciones El coacutedigo fuente se compila para obtener

coacutedigo ejecutable proceso similar que el utilizado para las tradicionales aplicaciones de

escritorio

Cuando la aplicacioacuten estaacute lista para ser distribuida debe ser transferida a las App

stores (tiendas de aplicaciones) especiacuteficas de cada sistema operativo Estas tiendas tienen

un proceso de auditoriacutea para evaluar si la aplicacioacuten se adecuacutea a los requerimientos de la

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

18

plataforma a operar Cumplido este paso la aplicacioacuten se pone a disposicioacuten de los

usuarios

La principal ventaja de este tipo de aplicaciones es la posibilidad de interactuar con

todas las capacidades del dispositivo (caacutemara GPS aceleroacutemetro agenda entre otras)

Ademaacutes no es estrictamente necesario poseer acceso a internet Su ejecucioacuten es raacutepida

puede ejecutarse en modo background y notificar al usuario cuando ocurra un evento que

necesite su atencioacuten

Claramente estas ventajas tienen como contrapartida un mayor costo de desarrollo

pues se debe utilizar un lenguaje de programacioacuten diferente seguacuten la plataforma Por ende

si se desea cubrir varias plataformas se deberaacute generar una aplicacioacuten para cada una de

ellas Esto conlleva a mayores costos de desarrollo actualizacioacuten y distribucioacuten de nuevas

versiones [9] [18] [19]

En la actualidad hay una gran cantidad de sistemas operativos para dispositivos

moacuteviles La Figura 5 muestra la utilizacioacuten de los sistemas operativos en los uacuteltimos antildeos

en todo el mundo mientras que la Figura 6 muestra la misma comparativa en Argentina

En ambos casos el ranking es liderado por Android seguido por iOS y en tercer lugar

Windows Phone [20]

Figura 5- Utilizacioacuten de Sistemas Operativos Moacuteviles en el mundo

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

19

Figura 6- Utilizacioacuten de Sistemas Operativos Moacuteviles en Argentina

A continuacioacuten se analizaraacute coacutemo es el proceso de desarrollo de aplicaciones

moacuteviles nativas en los sistemas operativos maacutes relevantes de la actualidad y luego en la

Tabla 1 se compararaacuten aspectos teacutecnicos de estas plataformas

21 Desarrollo de Aplicaciones Nativas en Android

Android es el sistema operativo maacutes utilizado en la actualidad Puede ser utilizado

en teleacutefonos inteligentes tablets relojes inteligentes televisores y automoacuteviles

Estaacute basado en Linux y es respaldado por Google

211 Evolucioacuten Inicialmente el desarrollo de Android era llevado a cabo por la empresa Android

Inc la cual fue fundada en el antildeo 2003 y recibiacutea respaldo econoacutemico por parte de Google

Antildeos maacutes tarde maacutes precisamente en Julio del 2005 Google adquiere Android y da lugar

a la primer versioacuten del sistema operativo en el antildeo 2007 Android 10 Apple Pie1

desarrollado sobre el kernel de Linux 26 En su presentacioacuten se hizo hincapieacute en que era

un sistema operativo para dispositivos moacuteviles totalmente gratuito y open source a

1 Desde la salida de la primera versioacuten del sistema operativo hasta el presente Google ha seguido la tradicioacuten de ponerle un nombre de postre a cada una de sus versiones siguiendo un orden alfabeacutetico

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

20

diferencia de iOS

La primera versioacuten comercial teniacutea mucho margen de mejora y apenas inquietoacute a la

competencia pero ya introduciacutea algunos conceptos que antildeos despueacutes son un estaacutendar de

los sistemas operativos moacuteviles

Menuacute desplegable de notificaciones

Widgets de escritorio

Android Market la tienda de apps (no contaba con ninguacuten sistema de pago para

usuarios Todo el cataacutelogo era gratuito)

Integracioacuten con Google Mail Contacts y Calendar

Navegador Maps Google Talk reproductor de YouTube y soporte para caacutemaras

En febrero del 2009 apenas 3 meses despueacutes del lanzamiento de Android 10 Apple

Pie llega la primera actualizacioacuten Android 11 Banana Bread No antildeadiacutea grandes

novedades pero siacute corregiacutea numerosos fallos detectados en la primera versioacuten e introduciacutea

un concepto por entonces poco usado por los rivales que buscaba facilitar la vida al

usuario las actualizaciones automaacuteticas con las que resultaba muy simple mantener todo

el software al diacutea

El 30 de abril del 2009 lanzan una nueva actualizacioacuten de gran importancia con

muchas novedades en cuanto a usabilidad Android 15 Cupcake Esta nueva versioacuten

introdujo las siguientes caracteriacutesticas

Teclado taacutectil QWERTY en pantalla con prediccioacuten de texto y diccionario de

usuarios para palabras personalizadas

Grabacioacuten y reproduccioacuten en formatos MPEG-4 y 3GP

Widget de escritorio de Google para realizar buacutesquedas directamente

SDK para el desarrollo de widgets de escritorio por parte de terceros

Funciones del portapapeles ampliadas

Interfaz para grabar y reproducir viacutedeos mejorada

Posibilidad de auto-rotacioacuten

Android 16 Donut apareciacutea en septiembre del 2009 con algunas novedades

adicionales

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

21

Soporte para CDMAEVDO 8021x VPN que ampliaba los mercados al alcance

de Android

Compatibilidad con distintas resoluciones de pantalla Soporte WVGA

Actualizacioacuten y nuevo disentildeo del Android Market

Utilidad de buacutesqueda universal en Internet y en el mismo dispositivo

Galeriacutea caacutemara y videocaacutemara con mejor integracioacuten con raacutepido acceso a la

caacutemara

Motor multi-lenguaje de Siacutentesis de habla para permitir a cualquier aplicacioacuten de

Android hablar una cadena de texto

Mejoras en las buacutesquedas por texto y voz

Apenas dos meses despueacutes en noviembre del 2009 lanzan Android 20 Eclair

uno de los cambios maacutes sustanciales sufridos por Android tanto a nivel de disentildeo como

de arquitectura interna Era una versioacuten dirigida a dispositivos de mayor tamantildeo en un

tiempo en el que los fabricantes empezaban a diversificar su oferta La versioacuten 21

mantuvo la misma nomenclatura y soacutelo corrigioacute algunos fallos pero su uso fue mayor

entre los fabricantes que la versioacuten anterior A continuacioacuten se mencionan algunas de las

nuevas caracteriacutesticas

Sincronizacioacuten de cuenta expandida permitiendo a los usuarios agregar muacuteltiples

cuentas al dispositivo para sincronizacioacuten de correo y contactos

Google Maps Navigation sistema de navegacioacuten GPS gratuito

Compatibilidad con Microsoft Exchange

Optimizacioacuten en velocidad de hardware y GUI renovada

Soporte para maacutes tamantildeos de pantalla y resoluciones con una mejor tasa de

contraste

Navegador actualizado soporte para HTML5 y barra de direccioacuten y buacutesqueda

unificada

Funcioacuten Speech to Text para escribir textos mediante el uso de la voz

Nueva pantalla de desbloqueo

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

22

Nuevas caracteriacutesticas para la caacutemara incluyendo soporte de flash zoom digital

modo escena balance de blancos efecto de colores y enfoque macro

Adicioacuten de fondos de pantalla animados permitiendo la animacioacuten de imaacutegenes

de fondo de la pantalla inicio para mostrar movimiento

El 20 de mayo del 2010 apareciacutea una nueva actualizacioacuten del sistema operativo

Android 22 Froyo Traiacutea numerosos cambios algunos copiados de otras ROMs y otros

con el uso empresarial en mente

Pantalla Home totalmente redisentildeada con 5 paneles en lugar de 3

Nueva galeriacutea de imaacutegenes

Soporte para actuar como hotspot2 para otros dispositivos tethering3 de datos

Soporte para Flash 101

Funcioacuten copiar y pegar mejorada en Google Mail

Nueva pantalla alternativa de desbloqueo mediante coacutedigo PIN

Grabacioacuten de viacutedeo en 720p

Optimizaciones en velocidad memoria y rendimiento Compilador JIT

Integracioacuten del motor de JavaScript V8 de Chrome en el navegador

Soporte para el servicio Android Cloud to Device Messaging (C2DM)

habilitando notificaciones push

El antildeo 2010 iba a concluir con el lanzamiento de una versioacuten sumamente popular

que prevalecioacute gran tiempo Android 23 Gingerbread Esta versioacuten contoacute con las

siguientes caracteriacutesticas

Disentildeo de la interfaz de usuario actualizado con incremento en velocidad y

simpleza

Nuevo disentildeo para el teclado numeacuterico en pantalla

Soporte para tamantildeos y resoluciones de pantalla extra-grandes (WXGA y

mayores)

Funcioacuten para copiar y pegar mejorada con soporte para caracteres individuales en

lugar de cajas de texto

2 lugar que ofrece acceso a Internet a traveacutes de una red inalaacutembrica y un enrutador conectado a un proveedor de servicios de Internet 3 proceso por el cual un dispositivo moacutevil con conexioacuten a Internet actuacutea como pasarela para ofrecer acceso a la red a otros dispositivos

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

23

Soporte para NFC

Herramientas de visualizacioacuten de consumo y uso de la bateriacutea mejoradas

Soporte para caacutemaras frontales

Acceso de bajo nivel para los desarrolladores de juegos

Recolector basura concurrente para incrementar el rendimiento

Sustitucioacuten del sistema de archivos YAFFS por ext4

Soporte nativo para maacutes sensores (tales como giroscopio y baroacutemetro)

Soporte de chat de video o voz usando Google Talk

En febrero del 2011 Google lanza Android 30 Honeycomb Se trata de una

actualizacioacuten especiacutefica para tablets no compatible con teleacutefonos que introduciacutea las

liacuteneas maestras de la interfaz en el futuro Las versiones 31 y 32 mantuvieron el mismo

nombre y fueron baacutesicamente un conjunto de correcciones A continuacioacuten se listan los

cambios significativos que tuvieron lugar en estas versiones

Pantalla de Inicio redisentildeada

Inclusioacuten de tonos azules en la interfaz en detrimento del verde tradicional

Nuevas funcionalidades para el emplazamiento y uso de widgets

Fin de los botones fiacutesicos Adaptacioacuten automaacutetica del SO seguacuten el dispositivo

Agregado de barra de sistema con caracteriacutesticas de acceso raacutepido a

notificaciones estados y botones de navegacioacuten suavizados disponible en la parte

inferior de la pantalla

Antildeadida la barra de accioacuten (Action Bar en ingleacutes) entregando acceso a opciones

contextuales navegacioacuten widgets u otros tipos de contenido en la parte superior

de la pantalla

Multitarea simplificada ndash tocando Aplicaciones recientes en la barra del sistema

permite a los usuarios ver instantaacuteneas de las tareas en curso y saltar raacutepidamente

de una aplicacioacuten a otra

Aceleracioacuten graacutefica mediante hardware

Optimizacioacuten del renderizado de graacuteficos 3D

Soporte para perifeacutericos USB

Octubre del 2011 fue el mes del lanzamiento de Android 40 Ice Cream Sandwich

basado en el nuacutecleo de Linux 301 Esta nueva versioacuten introdujo las siguientes mejoras

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

24

Nueva Interfaz Holo y fuente tipograacutefica Roboto

Sistema de gestioacuten de notificaciones mejorado

Multitarea mejorada

Android Beam funcionalidad para transferir datos entre dos dispositivos viacutea NFC

Funcioacuten de desbloqueo mediante el rostro

Nuevas funciones para la visualizacioacuten y gestioacuten del consumo de datos

Nuevas aplicaciones de correo y calendario

Habilidad de acceder a aplicaciones directamente desde la pantalla de bloqueo

Herramienta integrada de captura de pantalla

Soporte MKV

Aceleracioacuten por hardware de la interfaz de usuario

Soporte Stylus (laacutepiz taacutectil)

En Julio del 2012 se presenta Android 41 Jelly Bean que incluye las siguientes

novedades

Sistema de deteccioacuten de entrada de datos taacutectiles optimizado

Estreno de Google Now el servicio-asistente de voz inteligente de Google

Navegador Google Chrome

Buacutesqueda mediante voz mejorada

Nuevas posibilidades para las notificaciones interactivas de escritorio

Dictado de voz offline

Se deja de dar soporte al Flash Player

Meses despueacutes en noviembre del 2012 se lanza la versioacuten Android 42 Jelly Bean

la cual incluye habituales correcciones rendimiento mejorado y cambios puntuales en

ciertas aplicaciones

Android 43 Jelly Bean es anunciado el 24 de julio del 2013 Uno de los objetivos

de esta versioacuten fue tratar de consolidar a Android como un sistema operativo capaz de

ejecutar juegos Esta nueva versioacuten cuenta con las siguientes novedades

Soporte multiusuario y de perfiles mejorado

Soporte OpenGL ES 30

Bluetooth Smart

Plataforma Google Games

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

25

Servicios de localizacioacuten Wi-Fi mejorados

Ya no es necesario pulsar el icono del microacutefono para realizar una buacutesqueda de

voz Solo hay que decir OK Google y en seguida ordenar al equipo lo que se

necesite

Android 44 KitKat es anunciado en octubre del 2013 Esta nueva versioacuten intenta

corregir el problema de fragmentacioacuten se cuenta con muchas versiones y los fabricantes

tienen dificultades para adaptar sus productos a los requerimientos de cada nueva versioacuten

Se destaca de esta versioacuten

Menores requisitos de hardware para corregir la fragmentacioacuten de versiones

Compatible con terminales con 512 MB de memoria RAM

Reduccioacuten del consumo de bateriacutea mediante la optimizacioacuten de los sensores

Inclusioacuten de la suite ofimaacutetica QuickOffice

Servicios de almacenamiento online integrados Google Drive Box

Soporte para infrarrojos Usar el moacutevil como mando de TV

Aplicaciones a pantalla completa

Captura de pantalla en viacutedeo

En octubre del 2014 se lanza Android 5 Lollipop daacutendole soporte a otros

dispositivos como Android TV relojes inteligentes autos etc Esta nueva versioacuten

incluye

Nuevo disentildeo basado en Material Design que logra un flujo de trabajo maacutes fluido

Interfaz que se adapta a cualquier tamantildeo de dispositivo

Renovado sistema de notificaciones inteligente

Interesante vista multitarea que muestra capas con las diferentes aplicaciones

abiertas

Funcioacuten Android Smart Lock que permite emparejar un dispositivo Android con

otro ya sea un reloj inteligente o un automoacutevil

Modo Invitado para que puedas prestar el dispositivo sin que otros usuarios

tengan acceso a la informacioacuten privada

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

26

Soporte para sistemas de 64 bits

En octubre del 2015 se anuncia Android 6 Marshmallow que incluye las

siguientes novedades

Soporte para autenticacioacuten viacutea huella digital

Desinstalacioacuten raacutepida de las aplicaciones desde la pantalla de inicio

Nuevo esquema de gestioacuten de energiacutea llamado Doze

Mayor duracioacuten de la bateriacutea cuando el dispositivo estaacute en reposo

Inclusioacuten de Android Pay que emplearaacute el chip NFC

Mejoras en Google Now

Mayor control sobre los permisos requeridos por las aplicaciones

212 Proceso de Desarrollo Las aplicaciones nativas para esta plataforma se implementan utilizando el lenguaje

de programacioacuten Java

El estaacutendar sugiere utilizar el IDE oficial Android Studio (Figura 7) aunque es

posible utilizar otros entornos Independientemente del IDE utilizado se necesita

disponer del Software Development Kit (SDK) de la versioacuten de Android en la que se

desea trabajar El SDK provee todas las herramientas necesarias para desarrollar

compilar depurar y simular aplicaciones

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

27

Figura 7 Entorno de desarrollo Android Studio

Uno de los interrogantes que surgen en el momento de crear una aplicacioacuten es con

cual versioacuten de la Application Programming Interface (API) de Android trabajar Se debe

tener en cuenta que al trabajar con una versioacuten especiacutefica se estaacute limitando cuales son los

dispositivos que soportaraacuten la aplicacioacuten a crear No se recomienda utilizar una API

antigua -ya que no se estariacutea utilizando muchos de los avances de la plataforma- ni

tampoco la uacuteltima en el mercado ndashdebido a que pocos seriacutean los usuarios que podriacutean

utilizarla- En la Figura 8 se visualiza la distribucioacuten de versiones seguacuten los dispositivos

activos a la fecha de Diciembre 2016 [21] De esa informacioacuten se desprende que si se

optara por trabajar con la API 16 (Jelly Bean) el 966 de los celulares activos podraacuten

utilizar la aplicacioacuten a crear

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

28

Figura 8 Distribucioacuten de versiones de Android - Diciembre 2016

22 Desarrollo de Aplicaciones Nativas en iOS

iOS es un sistema operativo para dispositivos moacuteviles de la empresa multinacional

Apple Si bien fue originalmente desarrollado para el dispositivo iPhone luego el sistema

operativo alcanzoacute otros dispositivos como iPod Touch iPad A diferencias de otros

sistemas operativos para dispositivos moacuteviles iOS solo funciona en dispositivos creados

por la empresa Apple pero no asiacute en otro hardware de terceros

221 Evolucioacuten El sistema operativo moacutevil iOS se deriva del sistema operativo OS X el cual estaacute

basado en UNIX

La primera versioacuten del sistema operativo se presentoacute en enero del 2007 A

diferencia de sus sucesores la primera versioacuten no se llamoacute iOS sino iPhone OS Se

trataba de una plataforma bastante cerrada ya que las uacutenicas aplicaciones disponibles

eran las que estaban integradas al sistema operativo y fueron creadas por Apple como los

Mapas Mail Fotos Calendario entre otras

El desarrollo de aplicaciones nativas por parte de terceros no tuvo lugar hasta marzo

del 2008 momento en el cual Apple liberoacute el primer kit de desarrollo

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

29

Meses despueacutes se lanza la segunda versioacuten del sistema operativo iPhone OS 2 En

esta oportunidad introducen la App Store la cual permitioacute la descarga de aplicaciones de

terceros Ademaacutes la aplicacioacuten de Mapas recibioacute compatibilidad con el GPS y el Mail

notificaciones push

En 2009 Apple lanzoacute iPhone OS 3 y en su versioacuten 32 se le cambioacute el nombre a

iOS 32 iOS 3 incorporoacute grandes novedades buacutesqueda Spotlight botones Copiar y

Pegar grabacioacuten de viacutedeo edicioacuten de viacutedeo mensajes MMS comandos de voz modo

landscape y otras muchas apps Ademaacutes se siguioacute explotando las ventajas de las

notificaciones push y se continuoacute evolucionando su SDK daacutendole mayor poder a los

desarrolladores de aplicaciones

iOS 4 llegoacute a mediados del 2010 y trajo consigo nuevos cambios a la plataforma

Los maacutes destacables fueron la inclusioacuten de fondos de pantalla y la posibilidad de poder

abrir varias aplicaciones en simultaacuteneo Adicionalmente las aplicaciones podiacutean ser

agrupadas mediante carpetas algo simple pero uacutetil

En Junio del 2011 se libera iOS 5 Esta nueva versioacuten ofreciacutea grandes novedades

un Centro de Notificaciones Siri ndashel asistente virtual que marcoacute tendencia en los uacuteltimos

antildeos- iMessage iCloud Game Center Quiosco Recordatorios integracioacuten social para

Twitter y se mejoroacute notablemente la app de navegacioacuten web nativa Safari

iOS 6 fue presentado en Junio del 2012 y trajo como novedades la inclusioacuten de

Apple Maps (en reemplazo de Google Maps) mejoras en Siri con informacioacuten mucho

maacutes precisa la integracioacuten de Facebook y Twitter en el sistema el modo no molestar el

soporte para LTE entre otras

Los usuarios de este sistema operativo recibieron una de las mayores

actualizaciones en Junio del 2013 cuando se presenta iOS 7 Esta nueva versioacuten contoacute

con un redisentildeo total de la interfaz de usuario basaacutendose en transparencias y degradados

Ademaacutes se introdujo el Centro de Control AirDrop una renovada app de fotos iTunes

Radio y CarPlay mejoras en el App Switcher videos a caacutemara lenta entre otras cosas

Junio del 2014 fue el mes donde quedoacute disponible iOS 8 una nueva versioacuten del

sistema operativo que intenta resolver algunos errores de iOS 7 y antildeadir ciertas mejoras

Las extensiones y la posibilidad de conectar apps entre siacute mediante el menuacute compartir

hicieron que iOS 8 fuese mucho maacutes productivo Ademaacutes incorporoacute widgets para el

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

30

Centro de Notificaciones o las notificaciones interactivas Ademaacutes se implementaron los

contactos favoritos los teclados de terceros la funcioacuten Reachability y la utilidad

Continuity y las aplicaciones Apple Pay Salud HandOff QuickType Compartir en

Familia iCloud Drive y Apple Music

En el 2015 se presenta iOS 9 que introdujo todo un cambio en el uso del sistema

gracias a la compatibilidad con el 3D Touch del iPhone 6s y el iPhone 6s Plus Se

actualizoacute Notas con nuevas funciones se sustituyoacute Newsstand por News se incorporaron

mejoras en Passbook que pasoacute a llamarse Wallet y se mejoroacute Mapas con direcciones y

traacutefico Se antildeadioacute Split View Picture-in-Picture y atajos en teclados de terceros Ademaacutes

el sistema ahora podiacutea aprovechar mejor la autonomiacutea del dispositivo gracias al Modo

ahorro de bateriacutea que limita las conexiones y caracteriacutesticas del sistema para no consumir

tanta energiacutea

Por uacuteltimo en Junio del 2016 quedoacute disponible iOS 10 versioacuten que se caracteriza

por abrirse a los desarrolladores Con esta nueva versioacuten se puede tener acceso a Siri al

3D Touch y a apps directas del sistema operativo Ademaacutes el centro de widgets ahora es

maacutes intuitivo y la pantalla de bloqueo maacutes uacutetil Como es habitual se aprecian mejoras en

distintas aplicaciones del sistema operativo y se permite borrar apps de Apple que no sean

utilizadas por los usuarios

222 Proceso de desarrollo Las aplicaciones moacuteviles para la plataforma iOS se desarrollan utilizando el

lenguaje de programacioacuten Objetive C El entorno de desarrollo oficial es la plataforma

Xcode [22] la cual opera en conjunto con Interface Builder una herramienta graacutefica para

la creacioacuten de interfaces de usuario

Actualmente hay dos grandes versiones del sistema operativo moacutevil en curso como

se puede apreciar en la Figura 10 Es algo a destacar que la uacuteltima versioacuten del sistema

operativo es soportada por el 63 de los dispositivos activos Claramente la

fragmentacioacuten interna es mucho menor que la encontrada en Android

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

31

Figura 9 Entorno de desarrollo Xcode

Figura 10 Distribucioacuten de versiones de iOS - Noviembre 2016

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

32

23 Desarrollo de Aplicaciones Nativas en Windows Phone

El sistema operativo moacutevil Windows Phone fue desarrollado por Microsoft y

sucede a Windows Mobile A diferencia de su predecesor estaacute enfocado en el mercado de

consumo en lugar del mercado empresarial

231 Evolucioacuten Su primera versioacuten lanzada en septiembre del 2010 fue denominada Windows

Phone 7 Fue presentado como un nuevo sistema operativo que incluye funciones de

integracioacuten con los servicios Xbox Live y Zune La interfaz conocida como Metro ha

sido revisada en su totalidad y comparte caracteriacutesticas visuales similares a la interfaz del

dispositivo Zune HD

Windows Phone 75 es una actualizacioacuten para Windows Phone lanzada en

septiembre de 2011 Esta nueva versioacuten incorporoacute numerosas caracteriacutesticas como por

ejemplo la inclusioacuten de Internet Explorer 9 con soporte para CSS3 Media Queries y

soporte para usar GPS cuando se trabaje con aplicaciones de ubicacioacuten geograacutefica entre

otros

En enero del 2013 se presenta Windows Phone 78 una actualizacioacuten que trae

mejoras como la nueva interfaz de usuario y fondos personalizados para la pantalla de

bloqueo Fue la uacuteltima gran actualizacioacuten de Windows Phone 7 ya que Microsoft se

centroacute en Windows Phone 8

Windows Phone 8 es la siguiente versioacuten del sistema operativo la cual fue

presentada a finales de 2012 Entre las nuevas caracteriacutesticas se incluyen

Nuevas pantallas de inicio y de bloqueo maacutes personalizables

Rincoacuten infantil un espacio exclusivo y controlado para los nintildeos

Cartera para almacenar tarjetas de fidelizacioacuten y de creacutedito

NFC

Internet Explorer 10

Integracioacuten con Skype

Nuevo nuacutecleo Windows NT con soporte para procesadores de varios

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

33

nuacutecleos

Captura de pantalla

Su proacutexima versioacuten es Windows Phone 81 y fue presentada en abril del 2014

Entre sus caracteriacutesticas maacutes relevantes se encuentran

Centro de notificaciones

Asistente de voz conocido con el nombre de Cortana

Sensores (de Wi-Fi de datos y de bateriacutea)

Aplicaciones que vienen en el paquete de instalacioacuten como Salud y

ejercicios Comida y bebida Viajes y Mapas (esta uacuteltima compite con Here

Maps la cual es la aplicacioacuten de mapas de Nokia)

Mejoras en la pantalla de inicio posibilidad de agregar fondos de pantalla y

una tercera columna de mosaicos personalizables (Tiles)

A mediados del 2014 Microsoft decide cambiar de estrategia tratando de unificar

todas las plataformas como PC tablets smartphones Xbox One entre otros Windows

10 (moacutevil) se dio a conocer puacuteblicamente durante un evento el 21 de enero para 2015 Al

igual que su homoacutelogo Windows 10 Mobile utiliza como navegador predeterminado

Microsoft Edge reemplazando Internet Explorer de Windows Phone 81 ya que este no

se adecuaba a las nuevas liacuteneas de disentildeo del sistema operativo

232 Proceso de desarrollo El entorno de desarrollo maacutes popular para el desarrollo de aplicaciones para

Windows Phone es Visual Studio (Figura 11) En la actualidad es posible utilizar diversos

lenguajes de programacioacuten VBNET y CNET C++ y JavaScript

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

34

Figura 11 Entorno de desarrollo Visual Studio

24 Diferencias teacutecnicas entre Android iOS y Windows Phone

Desarrollar aplicaciones moacuteviles para los tres sistemas operativos maacutes populares

implica conocer ciertos aspectos teacutecnicos de cada plataforma Algunos de estos aspectos

teacutecnicos difieren sustancialmente entre cada sistema operativo

Una de las caracteriacutesticas a tener en cuenta es si las aplicaciones moacuteviles se ejecutan

dentro de una maacutequina virtual especiacuteficamente disentildeada o si se ejecutan directamente

sobre el sistema operativo

Otro aspecto que los desarrolladores deben tener en cuenta es el lenguaje de

programacioacuten a utilizar para crear aplicaciones nativas Este aspecto es importante porque

incide en otros aspectos como por ejemplo la gestioacuten de memoria

Ademaacutes del lenguaje de programacioacuten a utilizar es importante conocer la

tecnologiacutea requerida para disentildear interfaces de usuario

Asimismo los desarrolladores deben familiarizarse con diferentes IDEs seguacuten la

plataforma en la que se desea desarrollar como asiacute tambieacuten con diferentes tiendas de

aplicaciones donde alojar los productos finales

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

35

Por uacuteltimo la tecnologiacutea de hardware requerida para soportar el sistema operativo

tambieacuten difiere seguacuten cada plataforma

La Tabla 1 compara cada uno de estos aspectos en los sistemas operativos moacuteviles

Android iOS y Windows Phone

Capiacutetulo 2 Desarrollo de Aplicaciones Moacuteviles Nativas

36

Sistema

Operativo

Maacutequina

Virtual

Lenguaje de

Programacioacuten

Interfaces

de usuario

Gestioacuten de

memoria

IDE Plataforma de

desarrollo

Dispositivos Tienda de

Aplicaciones

Android Dalvik VM Java XML files Garbage

collector

Android

Studio

Multiplatforma Heterogeneos Google Play

Store

iOS No Objective-C Cocoa

Touch

Reference

counting

XCode Mac OS X Homogeneos iTunes Apps

Store

Windows

Phone

CLR C and Net XAML files Garbage

collector

Visual

Studio

Windows Vista7 Homogeneos Windows

Phone Store

Tabla 1 Diferencias teacutecnicas entre las plataformas Android iOS y Windows Phone

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

37

Capiacutetulo 3 Desarrollo de

Aplicaciones Moacuteviles

Multiplataforma

En los uacuteltimos antildeos el mercado de los dispositivos moacuteviles en especial

smartphones ha mostrado un crecimiento notable tanto en Argentina como en todo el

mundo En particular en nuestro paiacutes las plataformas que maacutes han crecido son Android

e iOS [1520]

Actualmente gran parte de la industria del software se concentra en desarrollar

soluciones para dispositivos moacuteviles proveyendo especialmente aplicaciones nativas

Las aplicaciones nativas tal como se mencionoacute en el capiacutetulo anterior ofrecen la

posibilidad de acceder a todas las capacidades del dispositivo (caacutemara GPS aceleroacutemetro

y agenda entre otras) su rendimiento es alto el acceso a Internet no es estrictamente

necesario y pueden ejecutarse en segundo plano notificando al usuario cuando se requiera

su atencioacuten Estas aplicaciones pueden distribuirsecomercializarse a traveacutes de las tiendas

en liacutenea correspondientes

El principal reto para los proveedores de aplicaciones es proporcionar soluciones

para todas las plataformas pero esto conlleva un alto costo [6] no es posible reusar el

coacutedigo fuente entre plataformas diferentes multiplicando esfuerzos y elevando los costos

de desarrollo actualizacioacuten y distribucioacuten de nuevas versiones

El desarrollo multiplataforma procura optimizar la relacioacuten costobeneficio

compartiendo la misma codificacioacuten entre las versiones para las distintas plataformas

Entre otras ventajas sobresalen menor tiempo y costo de desarrollo prestaciones

similares a las nativas con acceso al hardware del dispositivo y disponibilidad de

entornos potentes de desarrollo (Delphi Visual Studio etc) o en su lugar utilizacioacuten de

tecnologiacuteas (HTML5 Javascript y CSS) bien conocidas por los desarrolladores web

quienes pueden trasladar sus conocimientos y experiencias al paradigma moacutevil Sin

embargo el rendimiento de las aplicaciones y sus interfaces de usuario pueden afectar la

experiencia de usuario

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

38

Las aplicaciones multiplataforma pueden clasificarse en aplicaciones web moacuteviles

hiacutebridas interpretadas y generadas por compilacioacuten cruzada [5] En las secciones

siguientes se analizaran cada una de estas clasifcaciones

31 Aplicaciones Web Moacuteviles

Las Aplicaciones Web Moacuteviles disentildeadas para ejecutarse dentro de un navegador

se desarrollan con tecnologiacutea web estaacutendar (HTML CSS y JavaScript) y cuentan con

una serie de caracteriacutesticas favorables no necesitan adecuarse a ninguacuten entorno operativo

son independientes de la plataforma y su puesta en marcha es raacutepida y sencilla

Por contrapartida sus tiempos de respuesta decaen debido a la interaccioacuten cliente-

servidor Al mismo tiempo resultan ser menos atractivas que las aplicaciones nativas ya

que no se encuentran instaladas en el dispositivo lo que implica acceder previamente a

un navegador Ademaacutes las restricciones de seguridad impuestas a la ejecucioacuten de coacutedigo

por medio de un navegador limitan el acceso a todas las capacidades del dispositivo [23]

Asimismo no es posible desarrollar aplicaciones web que corran en segundo plano ni

tampoco aplicaciones offline ya que es requisito disponer de una conexioacuten a internet para

su funcionamiento

El proceso de desarrollo de una aplicacioacuten web moacutevil debe contemplar una serie de

caracteriacutesticas inherentes al entorno de ejecucioacuten Como ya ha sido mencionado las

aplicaciones web moacuteviles pueden ser accesibles desde cualquier dispositivo moacutevil que

cuente con un navegador y acceso a internet pero esto no significa que la navegacioacuten en

la aplicacioacuten resulte ser coacutemoda u oacuteptima Por ejemplo una aplicacioacuten web con un menuacute

compuesto de 20 iacutetems puede implicar una usabilidad correcta desde una PC Por lo

contrario para un dispositivo moacutevil con una pantalla limitada no resulta praacutectico que se

le presente al usuario tantas opciones en el menuacute Con este ejemplo lo que se pretende

mostrar es que para que una aplicacioacuten sea accesible desde diferentes dispositivos

moacuteviles posiblemente se tengan que realizar al menos dos disentildeos de presentacioacuten

diferentes un disentildeo para PC y otro disentildeo para dispositivos moacuteviles con una estructura

organizativa de la aplicacioacuten maacutes simplificada con respecto al disentildeo tradicional Por

ejemplo algunas de las funcionalidades de la aplicacioacuten para PC pueden ser eliminadas

para la versioacuten para dispositivos moacuteviles o presentadas de forma diferente

Para desarrollar diferentes presentaciones de una misma aplicacioacuten web

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

39

actualmente existen dos estrategias distintas ambas vaacutelidas seguacuten el contexto En los

siguientes apartados se analizaraacuten cada una de ellas

311 Aplicacioacuten Web dedicada y exclusiva para dispositivos moacuteviles Esta metodologiacutea ha sido el estaacutendar hasta el antildeo 2012 En ella la direccioacuten URL

y el coacutedigo HTML de la versioacuten moacutevil son distintos de la versioacuten de escritorio Por lo

general las direcciones URL tienen el formato mnombresitiocom

Algunas de las ventajas de este meacutetodo

- En general la carga es maacutes raacutepida y la navegacioacuten maacutes coacutemoda

- Es posible adaptar de manera maacutes faacutecil el contenido de las secciones

Desventajas de este meacutetodo

- Mantenimiento maacutes costoso Se debe mantener dos versiones distintas del mismo

sitio

- Dificulta el posicionamiento del sitio en los buscadores

- Estos desarrollos al final tienden a ser versiones muy reducidas de la web para

PC llevando al usuario a frustrarse y a preferir ver la versioacuten original de la web

312 Aplicacioacuten Web con Disentildeo Adaptable Con esta metodologiacutea la aplicacioacuten web se adapta al dispositivo desde el cual se la

estaacute accediendo El coacutedigo HTML y la direccioacuten URL de la aplicacioacuten son uacutenicos El

Disentildeo Adaptable o Responsive Design (Figura 12) tiene sus oriacutegenes en el antildeo 2008

cuando la W3C discutioacute y describioacute sus propoacutesitos Desde el antildeo 2012 -momento en el

cual Google recomendoacute fuertemente su implicancia [24]- viene en ascenso y

posiblemente llegue a convertirse en un standard en un corto plazo

Mediante un Disentildeo Adaptable todos los elementos de la web se reajustan en ancho

y altura adaptaacutendose al tamantildeo de tu pantalla Incluso es posible ocultar secciones cuando

se accede desde un dispositivo moacutevil

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

40

Figura 12 Disentildeo Adaptable

Las principales ventajas del desarrollo de aplicaciones web con Disentildeo Adaptable

son

- El mantenimiento es menos costoso ya que solo hay que mantener una uacutenica

versioacuten de la aplicacioacuten

- Se simplifica el proceso de posicionar la aplicacioacuten en los buscadores

Como contrapartida el Disentildeo Adaptable presenta una serie de desventajas

- Requiere de mayores niveles teacutecnicos para su desarrollo

- El contenido de las aplicaciones con Disentildeo Adaptable puede ser mayor que el

contenido de las aplicaciones web especiacuteficas para dispositivos moacuteviles

perjudicando el tiempo de carga cuando se utiliza un tipo de conexioacuten no muy

potente y generando un mayor consumo de datos

En la actualidad existe una gran cantidad de frameworks que simplifican el

desarrollo de aplicaciones web con disentildeo adaptable destacaacutendose por su popularidad y

extensa documentacioacuten los frameworks Bootstrap [25] y Foundation [26]

32 Aplicaciones Hiacutebridas

Las aplicaciones hiacutebridas utilizan tecnologiacuteas web (HTML Javascript y CSS) pero

no son ejecutadas por un navegador En su lugar se ejecutan en un contenedor web

(webview) como parte de una aplicacioacuten nativa la cual estaacute instalada en el dispositivo

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

41

moacutevil Desde una aplicacioacuten hiacutebrida es posible acceder a las capacidades del dispositivo

a traveacutes de diversas API

Las aplicaciones hiacutebridas ofrecen grandes ventajas permitiendo la reutilizacioacuten de

coacutedigo en las distintas plataformas el acceso al hardware del dispositivo y la distribucioacuten

a traveacutes de las tiendas de aplicaciones En contrapartida se observan dos desventajas de

las aplicaciones hiacutebridas respecto del caso nativo i) la experiencia de usuario se ve

perjudicada al no utilizar componentes nativos en la interfaz y ii) la ejecucioacuten se ve

ralentizada por la carga asociada al contenedor web

Afortunadamente existe una diversidad de frameworks que permiten desarrollar

aplicaciones hiacutebridas A continuacioacuten se haraacute un breve resumen de los maacutes populares

321 PhoneGap PhoneGap [27] es un framework gratuito y open source creado en el antildeo 2008 por

la empresa Nitobi Software que permite crear aplicaciones moacuteviles usando tecnologiacutea

web estaacutendar HTML JavaScript y CSS En octubre del 2011 Adobe adquiere la empresa

Nitobi y aporta el coacutedigo de PhoneGap a Apache Software Foundation para iniciar un

nuevo proyecto por encima de PhoneGap llamado Apache Cordova [28] PhoneGap pasoacute

a ser una de las varias distribuciones de Apache Cordova (Figura 13) brindando servicios

extras como por ejemplo Adobe PhoneGap Build [29] un servicio de compilacioacuten en la

nube proporcionado por Adobe Creative Cloud PhoneGap Desktop y PhoneGap

Developer

PhoneGap permite compilar aplicaciones para las siguientes plataformas Android

IOS Amazon Fire OS Windows Phone Windows 8 Ubuntu Tizen Firefox OS

Blackberry 10

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

42

Figura 13 Funcionamiento de Apache Cordova

322 CocoonJS CocoonJS [30] es un framework para el desarrollo de aplicaciones moacuteviles

producido por Ludei [31] Actualmente cuenta con una licencia propietaria y ofrece

diferente tipos de planes pagos y gratuitos El mencionado framework estaacute basado en

Apache Cordova al igual que PhoneGap pero se diferencia de este uacuteltimo en que hace

un mayor hincapieacute en la performance de las aplicaciones resultantes CocoonJS ofrece

dos tipos de webview

Canvas+ un webview liviano optimizado para video juegos Provee solo un

subconjunto de las funcionalidades del HTML5 (canvas audio motion

geolocalizacioacuten etc) necesarias para desarrollar video juegos con el objetivo de

brindar la mejor performance posible

Webview+ un potente y completo webview basado en el webview del proyecto

Chromium el cual cuenta de una mejor performance en comparacioacuten con el

webview por defecto de Apache Cordova

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

43

CocoonJs permite crear aplicaciones tanto para iOS como para Android

323 Ionic Ionic [32] es un completo SDK gratuito y open source para el desarrollo de

aplicaciones hiacutebridas producido por Max Lynch Ben Sperry y Adam Bradley de la

compantildeia Drifty Co en el antildeo 2013 En un tiempo relativamente corto alcanzoacute una

popularidad a destacar Estaacute basado en Apache Cordova permitiendo desarrollar

aplicaciones con tecnologiacutea web A diferencia de otros frameworks para el desarrollo de

aplicaciones hibridas Ionic provee un framework para la interfaz de usuario y

herramientas visuales para disentildear interfaces

Mediante Ionic es posible crear aplicaciones para Android IOS Windows Phone y

Firefox OS

324 Sencha Touch Sencha Touch [33] es un framework gratuito Model-View-Controller (MVC)

JavaScript construido sobre el sistema de clases de Ext JS disentildeado especialmente para

el desarrollo de aplicaciones web moacuteviles para dispositivos taacutectiles [34]

Al igual que PhoneGap Sencha Touch permite a los desarrolladores crear

aplicaciones moacuteviles a partir de un desarrollo web con HTML5 CSS y Javascript A

diferencia de PhoneGap Sencha no necesita de ninguna libreriacutea de terceros para construir

interfaces similares a las nativas ya que el framework provee consigo una gran cantidad

de componentes visuales listos para utilizar

Sencha empaqueta el coacutedigo del proyecto mediante PhoneGap para luego poder

construir aplicaciones en todas las plataformas soportadas por PhoneGap

33 Aplicaciones Interpretadas

Las aplicaciones interpretadas son implementadas utilizando un lenguaje base el

cual se traduce en su mayor parte a coacutedigo nativo mientras el resto es interpretado en

tiempo de ejecucioacuten Estas aplicaciones son implementadas de manera independiente de

las plataformas utilizando diversas tecnologiacuteas y lenguajes tales como Javascript Java

Ruby y XML entre otros

Una de las principales ventajas de este tipo de aplicaciones es que se obtienen

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

44

interfaces de usuario totalmente nativas Sin embargo los desarrolladores experimentan

una dependencia total con el entorno de desarrollo elegido

Seguidamente se presentaran algunos de frameworks maacutes reconocidos para el

desarrollo de aplicaciones interpretadas

331 Appcelerator Titanium Desarrollado por Appcelerator Inc Appcelerator Titanium [35] es un framework

de coacutedigo abierto que permite la creacioacuten de aplicaciones moacuteviles para las plataformas

iOS y Android Dicho framework estaacute formado por Titanium Studio un entorno de

desarrollo de coacutedigo libre para la codificacioacuten de aplicaciones moacuteviles multiplataforma

y el SDK Titanium una serie de herramientas para el desarrollo testeo anaacutelisis

depuracioacuten y compilacioacuten de aplicaciones

Las aplicaciones desarrolladas con Appcelerator Titanium se codifican utilizando

el lenguaje Javascript el cual es evaluado en tiempo de ejecucioacuten mediante un inteacuterprete

de Javascript que se ejecuta en el sistema operativo del dispositivo Al iniciar la

aplicacioacuten desde el coacutedigo nativo se ejecuta el coacutedigo Javascript y mediante la API de

Titanium se mapea uno-a-uno cada elemento del coacutedigo Javascript con los elementos

nativos De esta manera la API de Titanium actuacutea como puente logrando interfaces de

usuario compuestas de controles nativos Este entorno de desarrollo utiliza el framework

Alloy disentildeado para el desarrollo aacutegil de aplicaciones moacuteviles Alloy estaacute basado en la

arquitectura MVC y soporta el uso de tecnologiacuteas populares como Backbonejs [36] y

Underscorejs [37]

Los creadores de Titanium destacan que mediante este framework es posible

reutilizar entre el 60 y 90 del coacutedigo entre distintas plataformas

332 NativeScript El 5 de marzo del 2015 la empresa Telerik lanzoacute NativeScript [38] un proyecto de

coacutedigo abierto el cual permite generar aplicaciones nativas utilizando JavaScript

Asimismo es posible desarrollar la aplicacioacuten utilizando el lenguaje TypeScript [39]

lenguaje libre y de coacutedigo abierto desarrollado por Microsoft que extiende a JavaScript

esencialmente antildeadiendo tipado estaacutetico y objetos basados en clases En este sentido

cuando se compila la aplicacioacuten se realiza la traduccioacuten del coacutedigo TypeScript a coacutedigo

JavaScript

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

45

NativeScript provee un moacutedulo multiplataforma que permite obtener aplicaciones

nativas desde coacutedigo JavaScript Este moacutedulo expone las capacidades del dispositivo y

de la plataforma subyacente de una manera consistente y permite accederlas desde el

coacutedigo JavaScript De igual manera las interfaces de usuario pueden ser definidas

mediante coacutedigo JavaScript documentos HTML y archivos CSS abstrayeacutendose de los

componentes nativos reales

Cuando la aplicacioacuten es compilada parte del coacutedigo multiplataforma es traducido

a coacutedigo nativo mientras que el resto es interpretado en tiempo de ejecucioacuten (Figura 14)

Por el momento NativeScript permite generar aplicaciones para Android e iOS y

se preveacute dar soporte a Windows Phone NativeScript renderiza controles nativos sin

utilizar WebViews logrando una performance y experiencia de usuario similar al de las

aplicaciones nativas

Figura 14 Proceso de interpretacioacuten mediante NativeScript

34 Aplicaciones Generadas por Compilacioacuten Cruzada

Estas aplicaciones se compilan de manera nativa creando una versioacuten especiacutefica de

alto rendimiento para cada plataforma destino Ejemplos de entornos de desarrollo para

generar aplicaciones por compilacioacuten cruzada son Applause [40] Xamarin [41]

Embarcadero Delphi 10 Seattle [42] y RubyMotion [43]

El entorno de desarrollo abierto Applause utiliza como entrada un lenguaje

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

46

especiacutefico del dominio basado en el framework Xtext [44] disentildeado expliacutecitamente para

aplicaciones moacuteviles orientadas a datos y genera coacutedigo fuente en Objective C Java C

o Python Las caracteriacutesticas de Xamarin Embarcadero Delphi 10 Seattle y RubyMotion

se presentan en secciones posteriores

341 Xamarin Xamarin es una plataforma de desarrollo de aplicaciones moacuteviles para generar

aplicaciones 100 nativas para iOS Android y Windows a partir de una base de coacutedigo

CNET comuacuten para conseguir entre un 75 y hasta casi un 100 de reutilizacioacuten de

coacutedigo entre plataformas Las aplicaciones escritas con Xamarin y C disponen de acceso

completo a las API de la plataforma subyacente asiacute como de la capacidad de crear

interfaces de usuario nativas y de realizar la compilacioacuten en coacutedigo nativo por lo que el

impacto en el rendimiento en tiempo de ejecucioacuten es escaso

Xamarin es una compantildeiacutea que se establecioacute en mayo de 2011 por los mismos

ingenieros que crearon el proyecto Mono [45] consistente en una implementacioacuten libre

de la plataforma de desarrollo NET para dispositivos Android iOS y GNULinux

Anteriormente este proyecto se llamaba MonoTouch y MonoDroid

Si bien Xamarin cuenta con su propio IDE denominado Xamarin Studio (Figura

15) es posible integrarlo con Microsoft Visual Studio y de esta manera generar tambieacuten

aplicaciones para Windows incluido Windows RT para tablets y Windows Phone para

celulares

En febrero del 2016 Xamarin es comprada por Microsoft y desde ese momento la

plataforma Xamarin y el IDE Xamarin Studio pasaron a ser gratuitas

Xamarin propone un enfoque de desarrollo multiplataforma en el que se comparte

la codificacioacuten completa de la loacutegica del negocio Sin embargo las interfaces deben ser

programadas de manera independiente para cada una de las plataformas destino Asiacute la

reutilizacioacuten de coacutedigo seguacuten estudios estadiacutesticos de la compantildeiacutea Xamarin es cercana

al 85

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

47

Figura 15 Entorno de Desarrollo Xamarin Studio

342 Embarcadero Delphi 10 Seattle Embarcadero Delphi 10 Seattle [42] es una plataforma de desarrollo propietaria y

no gratuita que permite a los desarrolladores crear aplicaciones raacutepidamente a traveacutes de

un entorno visual coacutemodo e intuitivo (Figura 16) La aplicacioacuten desarrollada puede ser

compilada para muacuteltiples plataformas incluyendo Windows Mac Android e iOS

Delphi 10 Seattle al igual que Xamarin aventaja a otros tipos de aplicaciones

multiplataformas con resultados 100 nativos con acceso total a los sensores y

capacidades del dispositivo (caacutemara notificaciones GPS aceleroacutemetro entre otras)

Un punto a destacar es que Delphi 10 Seattle a traveacutes del framework de interfaces

de usuario FireUI Multi-Device Designer permite crear interfaces de usuario totalmente

nativas sin la necesidad de tener que disentildear interfaces especiacuteficas para cada plataforma

en particular

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

48

Figura 16 Entorno de Desarrollo Delphi 10 Seattle

343 RubyMotion En Mayo de 2012 la empresa HipByte lanza RubyMontion un proyecto que

permite generar aplicaciones para iOS Android y OS X utilizando el lenguaje de

programacioacuten Ruby

Para poder generar las aplicaciones multiplataforma RubyMotion posee

implementaciones de Ruby sobre los sistemas operativos destinos (Android e iOS) que

permiten acceder a todas las caracteriacutesticas provistas por cada plataforma Las

herramientas de compilacioacuten provistas por RubyMotion se encargan de embeber la

correspondiente implementacioacuten de Ruby al momento de compilar para cada plataforma

La principal desventaja de RubyMotion es que soacutelo funciona bajo el sistema

operativo OS X Otro factor a tener en cuenta es que no posee un entorno de desarrollo

integrado que facilite todo el proceso al desarrollador esto se ve solventado gracias a que

ofrece complementos para los IDE y editores de coacutedigo maacutes utilizados

Finalmente si bien el producto es un servicio pago ofrece una posibilidad de

probarlo gratuitamente aunque con soporte uacutenicamente para compilar a la uacuteltima versioacuten

Capiacutetulo 3 Desarrollo de Aplicaciones Moacuteviles Multiplataforma

49

de cada plataforma destino

Capiacutetulo 4 Experimentacioacuten

50

Capiacutetulo 4 Experimentacioacuten

Con el objetivo de profundizar la investigacioacuten de las diferentes metodologiacuteas de

desarrollo de aplicaciones moacuteviles multiplataforma es que se llevaron a cabo diferentes

experimentos en simultaacuteneo El primer experimento consiste en el desarrollo de una

aplicacioacuten moacutevil utilizando cada una de las metodologiacuteas estudiadas en el capiacutetulo

anterior con el objetivo de analizar el proceso de desarrollo El segundo experimento

tiene como objetivo analizar el rendimiento de las aplicaciones moacuteviles generadas

mediante las metodologiacuteas estudiadas a traveacutes de un caacutelculo matemaacutetico Por uacuteltimo se

presenta un informe comparativo que pueda ayudar en la toma de decisiones sobre queacute

metodologiacutea utilizar en futuros desarrollos

41 Aplicacioacuten Moacutevil para la plataforma de E-Learning WebUNLP

411 Descripcioacuten del problema WebUNLP es un entorno virtual de ensentildeanza y aprendizaje que permite a los

docentes mediar sus propuestas educativas Alumnos y docentes pueden encontrarse en

ese espacio para compartir materiales de estudio comunicarse y generar una experiencia

educativa en forma virtual [46]

Actualmente WebUNLP cuenta con una versioacuten web enfocada a computadoras de

escritorio o portaacutetiles pero no estaacute adaptada para ser utilizada desde dispositivos moacuteviles

El desarrollo planteado consiste en extender WebUNLP con la construccioacuten de una

aplicacioacuten moacutevil que permita acceder a determinadas funcionalidades del sistema a

traveacutes de un dispositivo moacutevil El enfoque propuesto incluye un anaacutelisis de la misma

solucioacuten comparando el desarrollo nativo web hiacutebrido interpretado y de compilacioacuten

cruzada a fin de establecer cuaacutel de ellos es conveniente

Como ocurre con cualquier desarrollo de software la construccioacuten de una

aplicacioacuten moacutevil implica tener claramente definido su propoacutesito y cuaacuteles requerimientos

debe cumplir En particular para el caso de software para dispositivos moacuteviles resulta

esencial tener objetivos maacutes acotados que en su versioacuten de escritorio [47]

Capiacutetulo 4 Experimentacioacuten

51

Para el caso especiacutefico de WebUNLP se realizoacute el desarrollo incremental de una

aplicacioacuten moacutevil y esta primera versioacuten se enfocoacute en una de sus herramientas de

comunicacioacuten la cartelera Esta herramienta permite comunicar las novedades de un

curso como por ejemplo el cambio de horario de una cursada recordar las fechas de

entrega de un trabajo praacutectico entre otras [46]

412 Anaacutelisis Uno de los primeros interrogantes planteados fue la eleccioacuten de la plataforma En

teacuterminos de mercado los sistemas operativos que predominan en Argentina son Android

e iOS [4815] con lo cual se decidioacute dar soporte a estos dos sistemas operativos

Se analizaron los requerimientos funcionales y no funcionales de forma aislada a la

plataforma y luego de forma especiacutefica para cada una de ellas

A continuacioacuten se presentan algunos requerimientos a cumplir por la aplicacioacuten

El usuario debe poder ingresar a la aplicacioacuten con las mismas credenciales que las

utilizadas para acceder a la versioacuten web de escritorio

El usuario debe poder acceder a la cartelera de todos los cursos en los que

participa ya sea como docente o alumno

El usuario debe recibir una notificacioacuten en su dispositivo cuando una novedad es

publicada en la cartelera Este requerimiento no se puede cumplir en la versioacuten

web accesible desde computadoras de escritorio yo portables

El usuario debe tener la misma experiencia de uso en todas las plataformas

operativas

La aplicacioacuten web existente debe estar sincronizada con la aplicacioacuten moacutevil a

desarrollar esto significa que cualquier cambio realizado desde la aplicacioacuten

moacutevil debe verse reflejado en la versioacuten web y viceversa

413 Disentildeo Para satisfacer los requerimientos planteados en el punto anterior a excepcioacuten de

la notificacioacuten el disentildeo de la aplicacioacuten moacutevil web consiste en una reacuteplica de lo ofrecido

por WEBUNLP adaptaacutendose solamente la interfaz al tamantildeo de pantalla del dispositivo

moacutevil

Capiacutetulo 4 Experimentacioacuten

52

Para el disentildeo de las aplicaciones moacuteviles nativa hiacutebrida interpretada y de

compilacioacuten cruzada la situacioacuten es maacutes compleja En la Figura 17 se presenta la

arquitectura geneacuterica de todos los componentes que participan en este escenario de

desarrollo En ella se observa el acceso desde una PC a WebUNLP y el acceso desde

dispositivos moacuteviles a la informacioacuten de WebUNLP mediante servicios web Para el

desarrollo de los servicios web se disentildeoacute una API Restful dada su simpleza escalabilidad

e interoperabilidad [49]

Figura 17 Arquitectura geneacuterica para aplicacioacuten nativa e hiacutebrida

Asimismo existe una tarea programada (Cron) de ejecucioacuten intermitente a

intervalos regulares de tiempo la cual notifica a los dispositivos moacuteviles correspondientes

cuando se crea una novedad en la cartelera de WebUNLP El Cron identifica el sistema

operativo del dispositivo a notificar y genera dicha notificacioacuten

En cuanto a la interfaz graacutefica se planteoacute un disentildeo independiente de la plataforma

para analizar los aspectos de usabilidad de la aplicacioacuten y luego se realizaron los ajustes

necesarios para cada tipo de aplicacioacuten

En las interfaces disentildeadas la navegacioacuten es en serie en el orden en que se presentan

en el mockup [50] de la Figura 18

Capiacutetulo 4 Experimentacioacuten

53

Figura 18 Mockup independiente del tipo de aplicacioacuten

414 Desarrollo

4141 Aplicacioacuten Nativa para Android

El desarrollo de aplicaciones para la plataforma Android requiere disponer del Java

Development Kit (JDK) y su entorno de programacioacuten conocido como Android SDK

Este uacuteltimo provee libreriacuteas y herramientas necesarias para construir testear y depurar

aplicaciones para Android

El desarrollo de la aplicacioacuten de WebUNLP para Android se realizoacute seguacuten las

convenciones adoptadas por su comunidad porque aplica buenas praacutecticas en la

construccioacuten de interfaces y de la loacutegica detraacutes de ellas el acceso a datos y a servicios

web Para cumplir el requerimiento de las notificaciones en el dispositivo

correspondiente el Cron genera la notificacioacuten mediante el uso del servicio Google Cloud

Messaging (GCM) [51] En la Figura 19 se presentan las interfaces de la aplicacioacuten

desarrollada

Figura 19 Aplicacioacuten nativa para Android

Capiacutetulo 4 Experimentacioacuten

54

4142 Aplicacioacuten Nativa para iOS

La plataforma Apple iOS estaacute basada en un modelo propietario es por ello que el

desarrollo de una aplicacioacuten nativa iOS implica contar con una Apple Mac ejecutando OS

X con Xcode instalado El lenguaje de programacioacuten principal es Objective C Xcode es

el entorno de desarrollo de Apple para todos sus dispositivos y es el encargado de

proporcionar el iOS SDK con las herramientas compiladores y frameworks necesarios

Ademaacutes Xcode viene integrado con simuladores para dispositivos iOS (iPhones y iPads)

que facilitan las etapas de prueba del sistema desarrollado

Para los aspectos referentes a la interfaz graacutefica y la interaccioacuten con el usuario se

siguieron las convenciones propuestas por Apple [52] para lograr una mejor integracioacuten

de la aplicacioacuten con el sistema operativo y mejorar la experiencia del usuario

Por uacuteltimo para satisfacer el requerimiento de notificaciones el Cron notifica al

dispositivo iOS correspondiente mediante el uso del servicio Apple Push Notification

Service (APNs) [53] En la Figura 20 se presentan las interfaces de la aplicacioacuten

desarrollada

Figura 20 Aplicacioacuten nativa para iOS

4143 Aplicacioacuten Web Moacutevil

Se desarrolloacute una aplicacioacuten web capaz de acceder a la cartelera de WebUNLP

disponible para cualquier dispositivo moacutevil que cuente con un navegador que soporte las

caracteriacutesticas utilizadas para el desarrollo HTML5 CSS3 y Javascript

Como la velocidad de transmisioacutenrecepcioacuten de datos de un dispositivo moacutevil a

traveacutes de WiFi y en particular 3G es inferior a la velocidad de una computadora de

Capiacutetulo 4 Experimentacioacuten

55

escritorio la versioacuten web de la cartelera de WebUNLP es liviana y gran parte de los

requerimientos son implementados a traveacutes de Ajax [54] para evitar ante alguacuten cambio

la recarga de la paacutegina completa

Debido a las limitaciones que tienen las aplicaciones que se ejecutan sobre un

navegador no es posible implementar la recepcioacuten de una notificacioacuten en el dispositivo

cuando una novedad es publicada en la cartelera

4144 Aplicacioacuten Hiacutebrida desarrollada con PhoneGap y Jquery Mobile

Para la construccioacuten de la aplicacioacuten WebUNLP hiacutebrida se utilizoacute el framework

PhoneGap [27] el cual permite desarrollar aplicaciones moacuteviles que utiliza tecnologiacuteas

comunes a todos los dispositivos HTML5 CSS y Javascript

Asimismo se utilizoacute el framework Javascript Jquery Mobile [55] para lograr

interfaces con apariencia y comportamiento consistente a traveacutes de las diferentes

plataformas moacuteviles

Con el objetivo de implementar el patroacuten de disentildeo MVC se utilizoacute la libreriacutea

Backbonejs [36]

Por uacuteltimo para satisfacer el requerimiento de notificaciones se utilizoacute el plugin

Pushwoosh [56]

En la figura 5 se presentan las interfaces de la aplicacioacuten desarrollada

Figura 21 Aplicacioacuten hiacutebrida desarrollada con PhoneGap

Capiacutetulo 4 Experimentacioacuten

56

4145 Aplicacioacuten Hiacutebrida desarrollada con Sencha Touch

El desarrollo de WebUNLP utilizando Sencha Touch se vio favorecido por el uso

del patroacuten de disentildeo MVC Esto permitioacute mayor flexibilidad y legibilidad en el coacutedigo

[57] [34]

Sencha ofrece Sencha Command una herramienta multiplataforma de liacutenea de

comandos que provee tareas automatizadas para todo el ciclo completo de una aplicacioacuten

En el caso de WebUNLP se utilizoacute tanto para la generacioacuten del proyecto como para el

empaquetado de la aplicacioacuten

En la Figura 22 se presentan las interfaces de la aplicacioacuten desarrollada

Figura 22 Aplicacioacuten desarrollada con Sencha Touch

4146 Aplicacioacuten Interpretada de WebUNLP con Appcelerator Titanium 3

Para desarrollar una aplicacioacuten moacutevil experimental seguacuten el enfoque interpretado

se utilizoacute el entorno de desarrollo gratuito y open source Appcelerator Titanium 3 [35]

Se destaca la simplicidad y legibilidad de los controladores y modelos de la

aplicacioacuten desarrollada luego de utilizar Alloy el framework de Titanium que permite

disentildear aplicaciones seguacuten el patroacuten de disentildeo MVC Para la construccioacuten de las vistas se

puede optar por la programacioacuten mediante Javascript y la API de Titanium o bien por

una especificacioacuten XML con estilos TSS (Titanium Style Sheets) Esta uacuteltima opcioacuten

simplifica el proceso de creacioacuten de las vistas aunque falta todaviacutea un buen editor visual

de interfaces que lo potencie

Capiacutetulo 4 Experimentacioacuten

57

Para cubrir requerimientos de notificaciones en el dispositivo Titanium provee el

moacutedulo PushNotifications para plataformas Android e iOS

La Figura 24 (a) muestra la experimentacioacuten con Titanium

4147 Aplicacioacuten Generada por Compilacioacuten Cruzada de WebUNLP utilizando XamarinVisual Studio

Tal como se mencionoacute en la seccioacuten 341 Xamarin propone un enfoque de

desarrollo multiplataforma en el que se comparte la codificacioacuten completa de la loacutegica

del negocio Sin embargo las interfaces deben ser programadas de manera independiente

para cada una de las plataformas destino (ver Figura 23) Asiacute la reutilizacioacuten de coacutedigo

seguacuten estudios estadiacutesticos de la compantildeiacutea Xamarin es cercana al 85

Figura 23 Enfoque uacutenico de desarrollo Xamarin

Para el estudio de las aplicaciones generadas por compilacioacuten cruzada se desarrolloacute

la aplicacioacuten moacutevil de WebUNLP utilizando Xamarin integrado con Microsoft Visual

Studio Siguiendo la estrategia maacutes eficiente para trabajar en este entorno se ha creado

una solucioacuten uacutenica conteniendo tres proyectos distintos Uno de ellos se utilizoacute para

generar la aplicacioacuten Android otro para la aplicacioacuten Windwos Phone 8 y el tercero para

la implementacioacuten de una biblioteca de clases portable (PCL por sus siglas en ingleacutes) con

todo el coacutedigo compartido Los tres proyectos fueron desarrollaacutendose de manera conjunta

y concurrente

Aunque una de las ventajas maacutes importantes de Xamarin es la reutilizacioacuten de

coacutedigo eacutesta se ve fuertemente afectada por el tipo de aplicacioacuten que se desarrolla La

relacioacuten existente entre la complejidad de la interfaz y la loacutegica del negocio impacta

directamente sobre la posibilidad de mantener la mayor cantidad de coacutedigo compartido

Capiacutetulo 4 Experimentacioacuten

58

en la PCL En el desarrollo de WebUNLP la reutilizacioacuten de coacutedigo ha sido cercana al

50 Sin embargo no debe despreciarse la ventaja de utilizar el mismo lenguaje entorno

y conjunto de herramientas comunes en el desarrollo de aplicaciones para distintas

plataformas moacuteviles

La Figura 24 (b) presenta la interfaz desarrollada para Windows Phone 8

4148 Aplicacioacuten Generada por Compilacioacuten Cruzada de WebUNLP utilizando Delphi 10 Seattle

Para el profundizar el estudio de las aplicaciones generadas por compilacioacuten

cruzada ademaacutes se desarrolloacute la aplicacioacuten moacutevil de WebUNLP utilizando Delphi 10

Seattle En particular fueron de gran utilidad tanto los componentes provistos por Delphi

para acceder a servicios RESTful como el entorno visual de desarrollo de Delphi 10

Seattle

Para la recepcioacuten de notificaciones en el dispositivo de las novedades de WebUNLP

se utilizoacute el componente TPushEvent conectado al servicio Kinvey [58]

La Figura 24 (c) presenta la interfaz de la aplicacioacuten desarrollada

(a) (b) (c)

Figura 24 Aplicacioacuten desarrollada con a) Titanium b) XamarinVisual Studio y c) Delphi XE

415 Conclusiones del experimento WebUNLP Seleccionar un dominio para desarrollar un caso experimental tiene sus

particularidades La novedad de disponer una aplicacioacuten moacutevil no es motivo suficiente

que justifique tal desarrollo Es necesario satisfacer un conjunto de requerimientos

claramente planteados

Capiacutetulo 4 Experimentacioacuten

59

WebUNLP es un entorno virtual de ensentildeanza y aprendizaje utilizado por diversos

cursos de grado y postgrado de la Universidad Nacional de La Plata Por ende la cantidad

de usuarios beneficiados por acceder desde cualquier lugar a este entorno es importante

De esta manera se optoacute por elegir dicho espacio virtual para ser replicado en una

versioacuten moacutevil que no soacutelo permita acercarlo a sus usuarios sino que ademaacutes ampliacutee sus

funciones en este caso puntualmente para la cartelera

Para el desarrollo de esta experimentacioacuten se desarrolloacute la misma aplicacioacuten para

los cinco tipos de enfoques de desarrollo moacutevil (web nativa hiacutebrida interpretada y

generada por compilacioacuten cruzada)

Se destaca la gran simpleza de generar la versioacuten web dado que se utilizan las

mismas herramientas tecnoloacutegicas que las usadas para el desarrollo de cualquier

aplicacioacuten web tradicional La principal diferencia en este sentido radica en la limitacioacuten

de espacio en la pantalla del dispositivo No obstante el mayor contraste estaacute dado en que

no es posible acceder a todas las capacidades de hardware del dispositivo lo que impidioacute

implementar uno de los requerimientos probablemente el maacutes interesante la notificacioacuten

de novedades de la cartelera de WebUNLP al usuario

Por otra parte las versiones nativas han cumplido todos los requerimientos Aunque

la mayor desventaja consiste en la no portabilidad lo que implicoacute un desarrollo especiacutefico

para la plataforma que se desee cubrir En este trabajo se han presentado los desarrollos

para Android e iOS sistemas operativos maacutes usados en Argentina con un costo de

desarrollo y mantenimiento inherente mayor

Para el caso del enfoque hiacutebrido tanto la versioacuten de WebUNLP desarrollada con

PhoneGap y Jquery Mobile como la versioacuten desarrollada con Sencha Touch han logrado

conjugar la simpleza del desarrollo web con el uso de todas las capacidades del

dispositivo Este tipo de enfoque pretende suplir las desventajas de los dos enfoques

previos hecho que lo posiciona como una eleccioacuten realmente interesante siempre

condicionada por los requerimientos especiacuteficos a cumplir

Por el lado del modo de desarrollo interpretado la versioacuten de WebUNLP

desarrollada con Titanium logroacute resolver todos los requerimientos previamente

planteados Al igual que en el enfoque hiacutebrido es un punto a destacar que el desarrollo

de la aplicacioacuten con Titanium es relativamente simple y es posible reutilizar todo el

Capiacutetulo 4 Experimentacioacuten

60

coacutedigo entre plataformas Lo que lo hace la eleccioacuten prima facie es el hecho de obtener

interfaces totalmente nativas algo que no se lograba mediante el enfoque hiacutebrido

Por uacuteltimo las versiones de WebUNLP generadas con el enfoque de compilacioacuten

cruzada con Xamarin y Delphi lograron cumplir los requerimientos planteados Se

destaca el hecho de que se genera interfaces totalmente nativas pero considero que el

costo es muy alto se debe disentildear las interfaces para cada plataforma de manera

independiente lo que hace que no se pueda reutilizar todo el coacutedigo fuente de la

aplicacioacuten

42 Enfoques de desarrollo Anaacutelisis comparativo de rendimiento 421 Descripcioacuten del Problema

Hace apenas unas deacutecadas atraacutes el uso de los sistemas de software estaba

restringido a un grupo reducido de usuarios especializados Aquella eacutepoca contrasta

fuertemente con la actualidad en la que los smartphones pequentildeas computadoras moacuteviles

de propoacutesito general se han vuelto cotidianos y omnipresentes Estos dispositivos pueden

utilizarse para llevar a cabo tareas complejas y criacuteticas requiriendo la mejora continua de

las capacidades de coacutemputo la disponibilidad el rendimiento eficiente entre otras

necesidades La evolucioacuten vertiginosa de esta tecnologiacutea ejerce presioacuten en la adaptacioacuten

de la Ingenieriacutea de Software

Respecto del desarrollo para dispositivos moacuteviles se debe considerar una serie de

caracteriacutesticas propias de esta actividad que no estaban presentes en el desarrollo

tradicional de software [59] Es necesario tener en cuenta sobre queacute tipo de dispositivos

se debe ejecutar la aplicacioacuten a construir La diversidad de plataformas lenguajes de

programacioacuten herramientas de desarrollo estaacutendares protocolos y tecnologiacuteas de red

algunas limitaciones de ciertos dispositivos y las exigencias de tiempo del mercado entre

otros constituyen algunos de los problemas a tratar

En la mayoriacutea de los casos el eacutexito de un producto de software para dispositivos

moacuteviles estaraacute condicionado por el nivel de popularidad que logre alcanzar Para

maximizar su presencia en el mercado es necesario que la aplicacioacuten pueda ejecutarse

sobre la mayor cantidad de plataformas moacuteviles existentes especialmente sobre las dos

maacutes populares Android e iOS [60] Para lograr este objetivo existen dos alternativas

Capiacutetulo 4 Experimentacioacuten

61

i) Desarrollar aplicaciones especiacuteficas para cada plataforma impulsando en

paralelo varios proyectos de desarrollo con las herramientas y lenguajes propios de cada

una de ellas Estas aplicaciones analizadas previamente en este trabajo se denominan

aplicaciones nativas

ii) Generar aplicaciones que puedan ejecutarse en forma directa sobre maacutes de una

plataforma de sistema operativo a partir de un uacutenico proyecto de desarrollo Estas

aplicaciones como ya se ha presentado en este trabajo se denominan aplicaciones

multiplataforma

En los uacuteltimos antildeos se ha incrementado el intereacutes de la comunidad de Ingenieriacutea de

Software por el estudio del desarrollo de aplicaciones multiplataforma para dispositivos

moacuteviles

En [5] se presenta un anaacutelisis comparativo de enfoques de desarrollo de aplicaciones

multiplataforma para dispositivos moacuteviles proponiendo la siguiente taxonomiacutea

aplicaciones web moacuteviles aplicaciones hiacutebridas aplicaciones interpretadas y

aplicaciones generadas por compilacioacuten cruzada

En [7] y [8] se analizan aspectos generales de frameworks de desarrollo

multiplataforma para dispositivos moacuteviles

En [61] se comparan aspectos no funcionales para los diferentes enfoques de

desarrollo de aplicaciones multiplataforma para dispositivos moacuteviles

En [9] se analizaron ventajas y desventajas de los enfoques de desarrollo

multiplataforma mencionados desde el punto de vista del Ingeniero de Software

La eleccioacuten del modo de desarrollo de aplicaciones para dispositivos moacuteviles

depende de varios factores Uno de ellos en muchos casos esencial es el tiempo de

ejecucioacuten El intereacutes por optimizar el tiempo de ejecucioacuten de una aplicacioacuten de software

es intriacutenseco a la disciplina informaacutetica Esto se evidencia entre otras cosas por la

evolucioacuten del poder de coacutemputo de los procesadores Ademaacutes el rendimiento eficiente

es uno de los atributos que las aplicaciones de software deben satisfacer seguacuten diversos

estaacutendares de calidad entre otros ISOIEC 9126 e ISOIEC 25010 [62]

En lo que respecta al desarrollo de aplicaciones para dispositivos moacuteviles es

oportuno considerar el tiempo de ejecucioacuten de las aplicaciones por diversos motivos

El tiempo de ejecucioacuten de una aplicacioacuten estaacute fuertemente ligado al consumo de

Capiacutetulo 4 Experimentacioacuten

62

energiacutea [63] el cual estaacute limitado por la capacidad de la bateriacutea de los dispositivos

Asimismo el rendimiento de las aplicaciones se ve reflejado principalmente

mediante las calificaciones de los usuarios en las tiendas de aplicaciones en liacutenea

Aplicaciones con bajo rendimiento pueden implicar usuarios disconformes produciendo

publicidad negativa [60] Andre Charland y Brian Leroux identifican al tiempo de

ejecucioacuten como uno de los problemas principales a resolver en el desarrollo de

aplicaciones multiplataforma y afirman que a los usuarios finales les preocupa la calidad

del software y la experiencia de uso [64]

Corral Sillitti y Succi realizaron un anaacutelisis de rendimiento comparativo entre

aplicaciones nativas y aplicaciones hiacutebridas utilizando el framework Phonegap para una

versioacuten del sistema operativo Android [65]

Es importante destacar que no se han encontrado estudios que evaluacuteen y comparen

el rendimiento entre los diversos modos de desarrollo multiplataforma de acuerdo a la

taxonomiacutea propuesta en [5] aplicaciones web moacuteviles aplicaciones hiacutebridas

aplicaciones interpretadas y aplicaciones generadas por compilacioacuten cruzada Esta

taxonomiacutea es la que se utiliza de referencia en este trabajo

El presente apartado realiza un anaacutelisis comparativo de rendimiento de aplicaciones

para dispositivos moacuteviles generadas por el enfoque de desarrollo nativo y los distintos

enfoques de desarrollo multiplataforma seguacuten [5]

En la seccioacuten siguiente se describe el experimento utilizado para evaluar tiempos

de ejecucioacuten en aplicaciones nativas y en los diversos modos de desarrollo de aplicaciones

moacuteviles multiplataforma y en las secciones posteriores se muestran y analizan los

resultados obtenidos se presentan las conclusiones y el trabajo futuro

422 Desarrollo

4221 Disentildeo de las pruebas

Todas las pruebas cuyos resultados se presentan en este trabajo fueron realizadas

sobre dispositivos moacuteviles con sistemas operativos Android e iOS dado que en la

actualidad abarcan gran parte del mercado mundial de acuerdo a lo indicado en [60]

Para llevar a cabo la experimentacioacuten se seleccionaron los frameworks de desarrollo

multiplataforma seguacuten las alternativas presentadas en [10] Se disentildearon pruebas para

evaluar el rendimiento de Apache Cordova [28] Appcelerator Titanium [35] y Xamarin

Capiacutetulo 4 Experimentacioacuten

63

[41] que se corresponden con los modos de desarrollo hiacutebrido interpretado y compilacioacuten

cruzada respectivamente Tambieacuten se experimentoacute con otros dos frameworks de

desarrollo multiplataforma que recientemente han ganado popularidad NativeScript

(desarrollo interpretado) y Corona (compilacioacuten cruzada) Finalmente se incluyeron al

conjunto de pruebas las aplicaciones web y el enfoque nativo de desarrollo para Android

e iOS De este modo se logroacute una muestra razonablemente representativa de las diversas

opciones existentes en la actualidad

Para la realizacioacuten de las pruebas se utilizaron seis dispositivos moacuteviles distintos

(ver Tabla 2) tres de ellos con sistema operativo Android identificados como DA1 DA2 y

DA3 (dos smartphone y una tablet) y tres con sistema operativo iOS identificados como

DI1 DI2 y DI3 (dos smartphone y una tablet)

ID Sistema Operativo Caracteriacutesticas

DA1 Android 44

Tipo Smartphone Marca Motorola

Modelo Moto-G2 Procesador Quad-core 12 GHz Cortex-A7

RAM 1GB Snapdragon 400

DA2 Android 502

Tipo Smartphone Marca Samsung

Modelo S6 Procesador Octa-core (4x21 GHz Cortex-A57 amp 4x15

GHz Cortex-A53) RAM 3GB Exynos 7420 Octa

DA3 Android 422

Tipo Tablet Marca Samsung Modelo Tab 2

Procesador Dual-core 10 GHz RAM 1GB TI OMAP 4430

DI1 iOS 92

Tipo Smartphone Marca Apple Modelo 5S

Procesador Dual-core 13 GHz Cyclone (ARM v8-based)

RAM 1GB Apple A7

DI2 iOS 91

Tipo Smartphone Marca Apple

Modelo 6 plus Procesador Dual-core 14 GHz Typhoon (ARM v8-

based) RAM 1GB Apple A8

DI3 iOS 91 Tipo Tablet

Marca Apple Modelo Ipad Air

Capiacutetulo 4 Experimentacioacuten

64

Procesador Dual-core 13 GHz Cyclone (ARM v8-based)

RAM 1GB Apple A7 Tabla 2 Dispositivos moacuteviles utilizados en el experimento

Se definieron siete escenarios de anaacutelisis distintos uno por cada estrategia de

desarrollo utilizada

1 Nativo para Android y nativo para iOS 2 Aplicaciones web (multiplataforma) 3 Apache Cordova (multiplataforma hibrido) 4 Appcelerator Titanium (multiplataforma interpretado) 5 NativeScript (multiplataforma interpretado) 6 Xamarin (multiplataforma compilacioacuten cruzada) 7 Corona (multiplataforma compilacioacuten cruzada)

En los seis dispositivos se llevaron a cabo pruebas para cada uno de los siete

escenarios mencionados definiendo asiacute un total de 42 casos de prueba

Con el fin de evaluar la velocidad de procesamiento se planteoacute un caacutelculo simple

que incluyoacute varias iteraciones funciones matemaacuteticas y aritmeacutetica de punto flotante que

se resume en la siguiente serie

119904119890119903119894119890 =sum sum (log2(119896) +3119896

2119895+ radic119896

100000

119896=1

+ 119896119895minus1)

5

119895=1

A modo de ejemplo en la Figura 25 se muestra el coacutedigo multiplataforma

desarrollado en Apache Cordova para el caacutelculo de la serie definida

El experimento planteado permite medir con precisioacuten la variable analizada en este

caso el tiempo de ejecucioacuten requerido para realizar un caacutelculo matemaacutetico intensivo

Este tipo de caacutelculo matemaacutetico es frecuente en diversas aplicaciones que se

ejecutan en dispositivos moacuteviles por ejemplo juegos aplicaciones con realidad

aumentada aplicaciones para tratamiento de imaacutegenes entre otras en las cuales no

siempre es posible utilizar el poder de la Unidad de Procesamiento Grafico (GPU) para

el caacutelculo

El coacutedigo fuente de los experimentos llevados a cabo se encuentra disponible en

[66]

En las siguientes secciones se describe la experimentacioacuten y se analizan los

resultados obtenidos

Capiacutetulo 4 Experimentacioacuten

65

4222 Recoleccioacuten de datos

Para cada uno de los 42 casos de prueba definidos se realizaron 30 ejecuciones

independientes del experimento disentildeado obteniendo en cada caso una muestra T = T1

T2 hellip T30 con Ti = tiempo requerido para el caacutelculo de la serie en la i-eacutesima ejecucioacuten

del experimento planteado El tiempo Ti se expresa en milisegundos

Para caracterizar cada una de las muestras obtenidas se han calculado los

estadiacutesticos y S que se corresponden con la media (o promedio muestral) y la

desviacioacuten estaacutendar muestral (ver Tabla 3)

var startTime = new Date()getTime()

var serie = 0

for ( var j=1 j lt= 5 j++ )

for ( var k=1 k lt= 100000 k++ )

series = series + (Mathlog(k)MathLN2) + (3k2j) +

Mathsqrt(k) + Mathpow(k j-1)

var finalTime = new Date()getTime()

var duration = finalTime - startTime

documentgetElementById(result)innerHTML = duration + -gt + series

Figura 25 Caacutelculo de serie coacutedigo multiplataforma desarrollado en Apache Cordova

Capiacutetulo 4 Experimentacioacuten

66

Dada la muestra T=T1 T2 hellip Tn

Media o promedio muestral = (

1

119899)sum119879119894

119899

119894=1

Desviacioacuten estaacutendar muestral 119878 = radic

1

119899 minus 1sum(119879119894 minus )2119899

119894=1

Tabla 3 Estadiacutesticos utilizados en el anaacutelisis de los datos

423 Resultados Obtenidos En la Tabla 4 se presenta una siacutentesis de los resultados obtenidos conformada por

los valores y S calculados para cada caso de prueba planteado Estos valores permiten

comparar el rendimiento de las aplicaciones generadas a partir de los distintos enfoques

de desarrollo evaluadas sobre cada uno de los seis dispositivos utilizados

Los valores presentados en la Tabla 4 y graficados con diagramas de barras en la

Figura 26 sugieren un anaacutelisis por separado de los casos con sistema operativo Android

y los casos con sistema operativo iOS Claramente las siluetas delineadas en los

diagramas de barras de la Figura 26 se repiten de forma similar en los escenarios con el

mismo sistema operativo pero se diferencian notablemente entre distintos sistemas

operativos

Nativo WebApp Apache Cordova Titanium NativeScript Xamarin Corona

DA1 53293 18627 23033 21167 18730 39517 140173

S 1614 632 1422 2495 939 895 1260

DA2 21180 9067 8577 9563 8967 21100 60053

S 1997 1248 883 764 916 669 595

DA3 76380 17273 19060 19270 18350 37933 134430

S 2898 1551 936 1680 304 831 2339

DI1 413 5710 32373 29977 25203 12543 3963

S 078 1655 1662 401 728 1103 085

DI2 413 4190 26397 24113 22343 10303 9863

S 073 538 1544 495 861 491 613

DI3 253 4167 29223 27267 22597 11053 10967

S 057 444 1082 550 277 390 275

Tabla 4 Siacutentesis de resultados obtenidos

Capiacutetulo 4 Experimentacioacuten

67

Figura 26 Diagrama de barras con las muestras recolectadas (las barras muestran el tiempo promedio expresado en milisegundos)

Capiacutetulo 4 Experimentacioacuten

68

424 Anaacutelisis de Resultados Debido a las diferencias de hardware de los dispositivos utilizados no es prudente

comparar el rendimiento de las aplicaciones nativas en Android con respecto a las de

iOS No obstante de los resultados obtenidos es posible inferir que el enfoque nativo en

iOS resulta mucho maacutes eficiente que el enfoque nativo en Android Existen diversos

factores que presumen justificar este hecho entre ellos la diferencia inherente de ejecutar

coacutedigo Objective C en iOS comparado con ejecutar coacutedigo Java en Android el cual

necesita del Android Runtime (ART) para su funcionamiento ralentizaacutendolo

Respecto de las aplicaciones web multiplataforma los resultados de rendimiento

resaltaron positivamente en relacioacuten al resto tanto en Android como en iOS Asiacute el

enfoque de desarrollo multiplataforma web seriacutea una opcioacuten conveniente para alcanzar

un buen rendimiento en todos los dispositivos moacuteviles independientemente de su sistema

operativo Sin embargo esta eleccioacuten podriacutea verse afectada por las limitaciones de estas

aplicaciones para acceder en forma completa a las capacidades especiacuteficas del dispositivo

Respecto de los enfoques hiacutebrido e interpretado -analizados a traveacutes de las

tecnologiacuteas Coacuterdova Titanium y NativeScript- es importante destacar que si bien estos

enfoques trabajan de modo distinto entre siacute tienen algo en comuacuten la ejecucioacuten de coacutedigo

JavaScript En este sentido el motor de JavaScript -encargado de convertir el coacutedigo

JavaScript en coacutedigo optimizado para que luego lo interprete un WebView- cumple un

rol determinante Las pruebas de estos enfoques en Android -que utiliza el motor de

JavaScript V8- tuvieron un comportamiento similar al enfoque web y comportamiento

superior que el enfoque nativo y el enfoque de compilacioacuten cruzada Por el contrario en

los dispositivos moacuteviles con iOS -que utiliza el motor JavaScriptCore- los resultados de

estas pruebas fueron peores que en los enfoques nativos web y de compilacioacuten cruzada

En los dispositivos moacuteviles con iOS los casos de compilacioacuten cruzada -analizados

a traveacutes de las tecnologiacuteas Xamarin y Corona- obtuvieron mejores resultados que los

casos hiacutebridos e interpretados pero mostraron peor rendimiento que el enfoque nativo y

que el enfoque web En cambio en los dispositivos moacuteviles con Android los resultados

de las pruebas con las aplicaciones construidas mediante el enfoque de compilacioacuten

cruzada fueron los peores La necesidad de ejecucioacuten de coacutedigo Java a traveacutes del Android

Runtime entre otros factores justifican este resultado

Capiacutetulo 4 Experimentacioacuten

69

425 Conclusiones Se ha presentado un estudio comparativo sobre el tiempo de procesamiento de

aplicaciones de software para dispositivos moacuteviles generadas con distintos enfoques de

desarrollo

Los escenarios de prueba disentildeados incluyeron los dos sistemas operativos para

dispositivos moacuteviles con mayor presencia en el mercado Android e iOS ejecutaacutendose

cada uno de ellos sobre dos smartphones (considerados de gama media y gama alta al

momento en que este trabajo fue escrito) y una Tablet

Sobre estos seis dispositivos se realizoacute un estudio de rendimiento para las

aplicaciones construidas seguacuten los enfoques de desarrollo nativos y multiplataforma

mediante un conjunto de aplicaciones que fueron desarrolladas para tal fin

1 Aplicacioacuten nativa para Android 2 Aplicacioacuten nativa para iOS 3 Aplicacioacuten web (multiplataforma) 4 Aplicacioacuten Apache Cordova (multiplataforma hibrido) 5 Aplicacioacuten Appcelerator Titanium 6 (multiplataforma interpretado) 7 Aplicacioacuten NativeScript (multiplataforma interpretada) 8 Aplicacioacuten Xamarin (multiplataforma compilacioacuten cruzada) 9 Aplicacioacuten Corona (multiplataforma compilacioacuten cruzada)

En todos los dispositivos con sistema operativo Android el peor rendimiento fue

evidenciado por Corona seguido por el enfoque nativo y Xamarin Esta situacioacuten es

totalmente opuesta a los resultados obtenidos sobre el sistema operativo iOS en doacutende las

tecnologiacuteas de desarrollo mencionadas se mostraron siempre entre las cuatro mejores En

particular es destacable la supremaciacutea del enfoque nativo frente a todos los demaacutes para el

caso de los dispositivos con iOS

Respecto al mejor rendimiento en los dispositivos Android no es posible identificar

claramente cuaacutel es el enfoque maacutes conveniente Tanto las aplicaciones web como

Coacuterdova NativeScript y Titanium alcanzaron buenos resultados en relacioacuten al resto

Nuevamente esta situacioacuten se contrapone con los datos obtenidos sobre los dispositivos

iOS en los que Coacuterdova Titanium y NativeScript obtuvieron las peores mediciones entre

las tecnologiacuteas utilizadas No ocurrioacute lo mismo con las aplicaciones web en iOS que

tambieacuten produjeron buenos resultados en relacioacuten al resto

Capiacutetulo 4 Experimentacioacuten

70

En liacuteneas generales independientemente del sistema operativo las aplicaciones

web han mostrado un buen rendimiento si se consideran todos los casos analizados

Actualmente al desarrollar un sistema de software existe la posibilidad de generar

su versioacuten para dispositivos moacuteviles Esta tarea muchas veces no es simple y una de las

decisiones maacutes importantes a tomar es elegir el enfoque de desarrollo

A partir de este trabajo se dispone de un indicador de rendimiento que puede ser

uacutetil para el Ingeniero de Software que debe seleccionar un enfoque de desarrollo de

software para dispositivos moacuteviles

Por otra parte no se han encontrado trabajos de otros autores donde se haya

analizado el rendimiento en todos los enfoques de desarrollo de software para dispositivos

moacuteviles Este tema tal como se indicoacute en la introduccioacuten es importante para la

comunidad de Ingenieriacutea de Software y los trabajos analizados hasta el momento se han

concentrado solo en los enfoques nativos yo hiacutebridos

43 Anaacutelisis comparativo de enfoques de Desarrollo de Aplicaciones Moacuteviles

Como se estudioacute en las secciones anteriores existen diferentes enfoques de

desarrollo de aplicaciones moacuteviles

Una opcioacuten es desarrollar aplicaciones moacuteviles nativas las cuales hacen uso de

todas las capacidades del dispositivo moacutevil y permiten una alta experiencia de usuario

debido a que las interfaces de usuario se componen por componentes nativos resultando

semejantes al resto de las interfaces del sistema operativo No obstante el desarrollo no

puede ser reutilizado para dar soporte a otras familias de sistemas operativos implicando

mayores costos de desarrollo y mantenimiento

En contraposicioacuten al desarrollo nativo surgioacute el desarrollo multiplataforma dando

la posibilidad de desarrollar un uacutenico producto y ejecutarlo en diferentes plataformas En

este sentido se estudiaron diferentes enfoques desarrollo web moacutevil hiacutebrido

interpretado y generado por compilacioacuten cruzada Cada uno de estos enfoques cuenta con

ciertas caracteriacutesticas que naturalmente los hacen diferenciar con ventajas y

desventajas

Se identificaron diversos factores que pueden ser utilizados para analizar las

Capiacutetulo 4 Experimentacioacuten

71

aplicaciones que se generan mediante los enfoques de desarrollo nativo y

multiplataforma los cuales se detallan a continuacioacuten

Experiencia de usuario conjunto de factores y elementos que hacen referencia

al nivel de satisfaccioacuten total de los usuarios cuando utilizan un producto o sistema

El resultado es la generacioacuten de una percepcioacuten positiva o negativa de dicho

servicio producto o dispositivo

Plataformas alcanzadas se ha visto en capiacutetulos anteriores que existen distintas

familias de sistemas operativos Seguacuten el modo de desarrollo elegido se puede

desarrollar aplicaciones para una plataforma especiacutefica o por varias

Costo del desarrollo el desarrollo puede ser maacutes o menos costoso seguacuten si

requiere codificar las soluciones de forma especiacutefica para cada sistema operativo

o si es posible la reutilizacioacuten de coacutedigo

Costo del mantenimiento la correccioacuten de errores o agregados de nuevas

funcionalidades puede requerir codificar de forma especiacutefica para cada sistema

operativo Ademaacutes se debe tener en cuenta si deben convivir diferentes versiones

del mismo producto

Entorno de desarrollo integrado Software que asiste al programador en la

construccioacuten de aplicaciones

Interfaces de usuario factor que analiza los tipos de componentes utilizados para

construir las interfaces de usuario Como se mencionoacute al analizar los distintos

enfoques de desarrollo la eleccioacuten de la herramienta a utilizar incide en si las

interfaces estaraacuten compuestas mediante componentes nativos o componentes web

los cuales pueden ser decorados para simular componentes nativos

Acceso total al dispositivo posibilidad de acceder mediante las herramientas de

desarrollo a todas las capacidades del dispositivo como la caacutemara sensores entre

otros

Modo de instalacioacuten se refiere a si la aplicacioacuten puede ser instalada desde las

tiendas de aplicaciones o es accesible sin instalacioacuten desde un navegador de

Internet

Rendimiento factor que analiza la ejecucioacuten de tareas y los tiempos asociados

Capiacutetulo 4 Experimentacioacuten

72

en su resolucioacuten

Uso offline capacidad que tiene la aplicacioacuten de funcionar sin estar conectada a

internet

Distribucioacuten a traveacutes de las tiendas posibilidad de descargar la aplicacioacuten desde

las tiendas de aplicaciones

Categoriacuteas de aplicaciones a desarrollar tipo de aplicacioacuten que se desea

desarrollar

Porcentaje de coacutedigo a reutilizar Cantidad de liacuteneas de coacutedigo con respecto al

total que pueden ser reutilizadas para en la generacioacuten de aplicaciones

multiplataforma

Con el objetivo de estudiar coacutemo se comportan e inciden estos factores en los

distintos enfoques de desarrollo se realizoacute un estudio comparativo de los diferentes

criterios a tener en cuenta Dicho estudio se sintetiza en la Tabla 5

Capiacutetulo 4 Experimentacioacuten

73

Factor a analizar Desarrollo Nativo Desarrollo Web Desarrollo Hiacutebrido Desarrollo

Interpretado

Desarrollo Generado

por Compilacioacuten

Cruzada

Experiencia de Usuario

Alta Muy Baja Baja Alta Alta

Plataformas alcanzadas

Se desarrolla

exclusivamente

para una

plataforma destino

Cualquier

plataforma Se

necesita solo un

navegador y acceso a

internet

Es posible compilar

para Android iOS

Windows Phone

Es posible compilar

para Android iOS

Windows Phone

Es posible compilar

para Android iOS

Windows Phone

Costo del desarrollo

Muy Alto Muy Bajo Bajo Medio Medio a Alto

Costo del mantenimiento

Muy Alto Muy Bajo Medio Alto Alto a Muy Alto

Entorno de desarrollo integrado

IDE uacutenico por SO Muacuteltiples opciones Plugins para IDE

geneacutericos

Algunos frameworks

disponen de IDE

especiacutefico

IDE uacutenico por

framework

Interfaces de usuario

Nativas Web Web Nativas Nativas

Acceso total al dispositivo

Si No Si Si Si

Modo de instalacioacuten

Descargar desde la Sin instalaciones Descargar desde la Descargar desde la Descargar desde la

Capiacutetulo 4 Experimentacioacuten

74

Factor a analizar Desarrollo Nativo Desarrollo Web Desarrollo Hiacutebrido Desarrollo

Interpretado

Desarrollo Generado

por Compilacioacuten

Cruzada

tienda de

aplicaciones e

instalar

tienda de aplicaciones

e instalar

tienda de aplicaciones e

instalar

tienda de aplicaciones e

instalar

Rendimiento Muy Alto Muy Bajo Bajo a Medio Alto Medio a Alto

Uso offline Si No Si Si Si

Distribucioacuten a traveacutes de las tiendas

Si No Si Si Si

Categoriacutea de aplicaciones a desarrollar

Aplicaciones que

demandan muchos

recursos o que

requiere una alta

experiencia de

usuario

Sitios web existentes Sitios web

encapsulados como

aplicacioacuten para ser

distribuidas a traveacutes

de tiendas

Aplicaciones simples a

complejas

Aplicaciones simples a

complejas

Porcentaje de Coacutedigo a reutilizar

0 100 Cerca del 100 Cerca del 90 Entre el 60 y 85

Tabla 5 Anaacutelisis comparativo de enfoques de desarrollo de aplicaciones moacuteviles

Capiacutetulo 5 Conclusiones

75

Capiacutetulo 5 Conclusiones

Inicialmente los dispositivos moacuteviles fueron pensados y disentildeados con un propoacutesito

particular A traveacutes de los antildeos el crecimiento tecnoloacutegico ha permitido incorporar

funcionalidades adicionales lo que ha posibilitado expandir el marco de uso

Actualmente el poder de coacutemputo subyacente en una gran variedad de dispositivos

moacuteviles ha generado nuevas posibilidades lo que constituye un reto para los ingenieros

de software

Asimismo y tal como se mencionoacute en capiacutetulos anteriores existen diversos

sistemas operativos para dispositivos moacuteviles siendo los maacutes populares Android iOS y

Windows Phone Debido a que el eacutexito de un producto de software estaacute vinculado en

gran parte a su uso masivo surge la necesidad de desarrollar aplicaciones moacuteviles

teniendo en cuenta cada una de estas plataformas

El desarrollo de software para dispositivos moacuteviles tiene caracteriacutesticas propias que

difieren del desarrollo tradicional Esta actividad reciente impensada deacutecadas atraacutes

marca un antes y un despueacutes en la evolucioacuten de la Ingenieriacutea de Software Es de esperar

que dicha evolucioacuten continuacutee y por consiguiente que los enfoques de desarrollo para

dispositivos moacuteviles cambien o sean reemplazados por otros Es claro que por el

momento existen cinco posibilidades de desarrollo de una misma aplicacioacuten moacutevil

Aplicaciones nativas

Aplicaciones web

Aplicaciones hiacutebridas

Aplicaciones interpretadas

Aplicaciones generadas por compilacioacuten cruzada

Para un completo anaacutelisis de cada enfoque de desarrollo es que se disentildearon una

serie de casos de estudio El primero de ellos consistioacute en desarrollar una aplicacioacuten moacutevil

para cada enfoque de desarrollo presentado Teniendo este primer objetivo definido se

decidioacute extender el entorno virtual de ensentildeanza y aprendizaje WebUNLP a traveacutes de

una aplicacioacuten moacutevil enfocada en la cartelera de novedades de los cursos La aplicacioacuten

Capiacutetulo 5 Conclusiones

76

moacutevil debiacutea permitir el ingreso de alumnos y docentes con las mismas credenciales que

las utilizadas en la versioacuten web y debiacutea mostrar informacioacuten sincronizada con la web

sobre las novedades publicadas en las carteleras de los cursos Asimismo cuando los

docentes publiquen novedades aquellos alumnos pertenecientes al curso deben recibir

una notificacioacuten en su dispositivo moacutevil

Luego de desarrollar las aplicaciones moacuteviles para cada enfoque de desarrollo se

pueden elaborar algunas conclusiones

Se destaca la simpleza a la hora de generar la versioacuten web moacutevil pero se observan

limitaciones al no poder acceder a todas las capacidades de hardware del dispositivo

El desarrollo de las aplicaciones nativas resultoacute oacuteptimo si se lo compara con los

requerimientos oportunamente planteados con la desventaja de que las aplicaciones no

son portables implicando desarrollos especiacuteficos para cada plataforma que se desee

cubrir Por otro lado el desarrollo de las aplicaciones hibridas ndashutilizando PhoneGap y

Sencha- lograron conjugar la simpleza del desarrollo web con el uso de todas las

capacidades del dispositivo posicionaacutendolo como una eleccioacuten realmente interesante De

igual manera la aplicacioacuten interpretada desarrollada mediante Titanium logroacute resolver

todos los requerimientos previamente planteados se destaca que el desarrollo fue

relativamente simple y es posible reutilizar todo el coacutedigo entre plataformas El hecho de

obtener interfaces totalmente nativas la posiciona como la alternativa ideal Por uacuteltimo

las aplicaciones generadas con el enfoque de compilacioacuten cruzada (Delphi y Xamarin)

lograron cumplir los requerimientos planteados la obtencioacuten de interfaces totalmente

nativas es algo a destacar pero conlleva un alto costo ya que se debe disentildear las interfaces

para cada plataforma de manera independiente

El segundo experimento del presente trabajo consistioacute en analizar el rendimiento

de las aplicaciones generadas mediante cada enfoque de desarrollo En total se

desarrollaron mediante distintas tecnologiacuteas nueve aplicaciones Las pruebas se

realizaron en los dos sistemas operativos de mayor relevancia Android e iOS a traveacutes de

seis dispositivos (cuatro smartphones y dos tablets)

En todos los dispositivos con sistema operativo Android el peor rendimiento se

encontroacute en la aplicacioacuten generada por Corona seguido por el enfoque nativo y Xamarin

En cambio estas tecnologiacuteas se mostraron siempre entre las cuatro mejores sobre el

sistema operativo iOS

Capiacutetulo 5 Conclusiones

77

Respecto al mejor rendimiento en los dispositivos Android no es posible identificar

claramente cuaacutel es el enfoque maacutes conveniente Tanto las aplicaciones web como

Coacuterdova NativeScript y Titanium obtuvieron buenos resultados de rendimiento en

relacioacuten al resto Nuevamente esta situacioacuten se contrapone con los datos obtenidos sobre

los dispositivos iOS en los que Coacuterdova Titanium y NativeScript obtuvieron las peores

mediciones entre las tecnologiacuteas utilizadas No ocurrioacute lo mismo con las aplicaciones web

en iOS que tambieacuten produjeron buenos resultados en relacioacuten al resto

En liacuteneas generales independientemente del sistema operativo las aplicaciones

web han mostrado un buen rendimiento si se consideran todos los casos analizados

Por uacuteltimo se elaboroacute un anaacutelisis comparativo de las caracteriacutesticas inherentes a

cada enfoque de desarrollo Se identificaron ciertos factores de intereacutes que la comunidad

de ingenieriacutea de software considera al elegir queacute tecnologiacutea utilizar y se analizoacute su

impacto en cada enfoque de desarrollo

Capiacutetulo 6 Trabajo Futuro

78

Capiacutetulo 6 Trabajo Futuro

Si bien se estudiaron en el presente trabajo diversas tecnologiacuteas para el desarrollo

de aplicaciones moacuteviles se planea profundizar el estudio analizando otras herramientas

multiplataforma disponibles en el mercado como Ionic [32] NativeScript [38] Applause

[40] React Native [67] entre otras

Ademaacutes se plantea como liacutenea de trabajo futuro ampliar el anaacutelisis comparativo de

rendimiento incluyendo otros aspectos del desarrollo para dispositivos moacuteviles como

por ejemplo el acceso a disco el consumo de bateriacutea y el tiempo de renderizacioacuten de

imaacutegenes

Por uacuteltimo es deseable estudiar la experiencia de usuario en las aplicaciones

generadas por cada enfoque de desarrollo de aplicaciones para dispositivos moacuteviles

Capiacutetulo 6 Trabajo Futuro

79

Bibliografiacutea

80

Bibliografiacutea

[1] A Talukder H Ahmed and R Yavagal Mobile Computing Technology Applications and Service Creation Tata McGraw-Hill Ed 2010

[2] Abrahamsson P et al Mobile-D An Agile Approach for Mobile Application Development in In Companion To the 19th Annual ACM SIGPLAN Conference on Object-Oriented Programming Systems Languages and Applications (OOPSLA 04 ) Vancouver Canada 2004 pp 174-175

[3] P Abrahamsson Mobile software development - the business opportunity of today in Proceedings of the International Conference on Software Development Reykjavik 2005

[4] I S Hayes Just Enough Wireless Computing Prentice Hall Professional Technical 2002

[5] Stelios Xinogalos Spyros Xanthopoulos A Comparative Analysis of Cross-platform Development Approaches for Mobile Applications in Proceedings of the 6th Balkan Conference in Informatics Thessaloniki Greece 2013 pp 213-220

[6] Tolety SB Raj R A study on approaches to build cross-platform mobile applications and criteria to select appropriate approach in India Conference (INDICON) 2012 Annual IEEE India 2012

[7] Yonathan Aklilu Redda Cross platform Mobile Applications Development in Master in Information Systems Norwegian University of Science and Technology Norway 2012

[8] Datta SK Bonnet C Nikaein N Dalmasso I Survey comparison and evaluation of cross platform mobile application development tools in Wireless Communications and Mobile Computing Conference (IWCMC) Cagliari Sardinia Italia 2013

[9] Lisandro Deliacutea Nicolaacutes Galdaacutemez Pablo Thomas and Patricia Pesado An Experimental Analysis of Application Types for Mobile Devices in Computer Science amp Technology Series - XIX Argentine Congress of Computer Science - Selected Papers Editorial de la Universidad de La Plata 2014 pp 173 -183

[10] Lisandro Deliacutea Nicolaacutes Galdamez Pablo Thomas Leonardo Corbalaacuten and Patricia Pesado Multi-Platform Mobile Application Development Analysis in IEEE Ninth International Conference on Research Challenges in Information Science - IEEE RCIS Atenas Grecia May 2015

[11] Telam [Online] httpwwwtelamcomarnotas201504102073-telefonia-movil-lineas-activashtml

Bibliografiacutea

81

[12] RTVE [Online] httpwwwrtveesnoticias20110212evolucion-del-telefono-movil-del-zapatofono-smartphones404523shtml

[13] Vodafone [Online] httpblogvodafonecouk20130829vodafone-uks-ceo-guy-laurence-4g-finally-has-a-purpose

[14] Muy Canal [Online] httpwwwmuycanalcom20140131futuro-del-telefono-movil

[15] Statcounter [Online] httpgsstatcountercom

[16] Anthony I Wasserman Software Engineering Issues for Mobile Application Development 2010

[17] Statista [Online] httpwwwstatistacom

[18] Lisandro Deliacutea Nicolaacutes Galdamez Pablo Thomas Leonardo Corbalaacuten and Patricia Pesado Anaacutelisis Experimental de desarrollo de Aplicaciones Moacuteviles Multiplataforma in XX Congreso Argentino de Ciencias de la Computacioacuten CACIC 2014 San Justo Argentina octubre 2014

[19] Lisandro Deliacutea Nicolaacutes Galdamez Pablo Thomas and Patricia Pesado Un Anaacutelisis Experimental de Tipo de Aplicaciones para Dispositivos Moacuteviles in XIX Congreso Argentino de Ciencias de la Computacioacuten CACIC 2013 Mar del Plata Argentina 2013

[20] Abhinay Puvvala Amitava Dutta Rahul Roy and Priya Seetharaman Mobile Application Developersrsquo Platform Choice Model in 2016 49th Hawaii International Conference on System Sciences (HICSS) Koloa Hawaii 2016

[21] Android Dashboard [Online] httpsdeveloperandroidcomaboutdashboardsindexhtml

[22] Xcode [Online] httpsdeveloperapplecomxcode

[23] KW Tracy Mobile Application Development Experiences on Applersquos iOS and

Android OS Potentials IEEE vol 31 no 4 July-Aug 2012

[24] Google Recommendations for building smartphone-optimized websites [Online] httpgooglewebmastercentralblogspotcomar

[25] Bootstrap [Online] httpgetbootstrapcom

[26] Foundation [Online] httpfoundationzurbcom

[27] PhoneGap [Online] httpphonegapcom

[28] Apache Cordova [Online] httpscordovaapacheorg

Bibliografiacutea

82

[29] Adobe PhoneGap Build [Online] httpsbuildphonegapcom

[30] CocoonJS [Online] httpscocoonio

[31] Ludei [Online] httpswwwludeicom

[32] Ionic [Online] httpionicframeworkcom

[33] Sencha [Online] httpswwwsenchacomproductstouchoverview

[34] A Kosmaczewski Sencha Touch 2 Up and Running OrsquoReilly 2013

[35] Appcelerator Titanium [Online] httpwwwappceleratorcomproduct

[36] Backbone [Online] httpbackbonejsorg

[37] Underscorejs [Online] httpunderscorejsorg

[38] NativeScript [Online] httpswwwnativescriptorg

[39] TypeScript [Online] httpswwwtypescriptlangorg

[40] applause [Online] httpwwwapplausecom

[41] Xamarin [Online] wwwxamarincom

[42] Delphi [Online] httpswwwembarcaderocomproductsdelphi

[43] RubyMotion [Online] httpwwwrubymotioncom

[44] Xtext [Online] httpwwweclipseorgXtext

[45] Mono [Online] httpwwwmono-projectcom

[46] [Online] httpswebunlpeadunlpeduar

[47] I Salmre Writing Mobile Code Essential Software Engineering for Building Mobile Applications Addison Wesley Professional 2005

[48] Mapbox [Online] httpswwwmapboxcomlabstwitter-gnipbrands

[49] Ruby S Richardson L RESTful Web Services OrsquoReilly Media 2007

[50] Matthew J Hamm Wireframing Essentials Packt Publishing 2014

[51] GCM [Online] httpsdevelopersgooglecomcloud-messaging

[52] iOS Human Interface Guidelines [Online] httpsdeveloperapplecomioshuman-interface-guidelinesoverviewdesign-principles

[53] APN [Online] httpdeveloperapplecomlibrarymacdocumentationNetworkingInternetConceptual

Bibliografiacutea

83

RemoteNotificationsPGChaptersApplePushServicehtmlapple_refdocuidTP40008194-CH100-SW9

[54] Mark Norm Norman Francis Christian Heilmann Web Development Solutions Ajax APIs Libraries and Hosted Services Made Easy Apress 2007

[55] JqueryMobile [Online] httpsjquerymobilecom

[56] Pushwoosh [Online] httpsgithubcomPushwooshpushwoosh-phonegap-plugin

[57] J Clark Creating Mobile Apps with Sencha Touch 2 Packt Publishing 2013

[58] Kinvey [Online] httpwwwkinveycom

[59] Ali Mesbah Philippe Kruchten Mona Erfani Joorabchi Real Challenges in Mobile App Development in ACM IEEE International Symposium on Empirical Software Engineering and Measurement Baltimore Maryland US 2013

[60] Andreacute Nitze Andreas Schmietendorf Florian Roumlsler Towards a Mobile Application Performance Benchmark in ICIW 2014 The Ninth International Conference on Internet and Web Applications and Services Paris France 2014

[61] Sebastian Hanschke and Tim A Majchrzak Henning Heitkoumltter Comparing Cross Platform Development approaches For Mobile Applications in 8th International Conference on Web Information Systems and Technologies (WEBIST) Porto Portugal 2012

[62] HW Kim SG Chung CS Jung Measuring Software Quality A Survey of ISOIEC 9126 IEEE Software vol 21 no 5 pp 88 ndash 92 SeptemberOctober 2004

[63] Luis Corral Anton B Georgiev Alberto Sillitti and Giancarlo Succi Can execution time describe accurately the energy consumption of mobile apps An experiment in Android GREENS 2014 Proceedings of the 3rd International Workshop on Green and Sustainable Software pp 31-37 June 2014

[64] Brian Leroux Andre Charland Mobile application development web vs native Magazine Communications of the ACM vol 54 no 5 pp 49-53 May 2011

[65] Luis Corral Alberto Sillitti and Giancarlo Succi Mobile multiplatform development An experiment for performance analysis in The 9th International Conference on Mobile Web Information Systems (MobiWIS) Ontario Canada 2012

[66] Repositorio Git III-LIDI [Online] httpsgitlabcomiii-lidiperformance-assessment-multiplatform-mobile-applicationstreemaster

[67] React Native [Online] httpsfacebookgithubioreact-native

[68] Lisandro Galdaacutemez Nicolaacutes Corbalaacuten Leonardo Thomas Pablo Pesado Patricia Deliacutea Un anaacutelisis comparativo de rendimiento en aplicaciones moacuteviles

Bibliografiacutea

84

multiplataforma in XXI Congreso Argentino de Ciencias de la Computacioacuten Juniacuten 2015

Page 16: Desarrollo de Aplicaciones Móviles Multiplataforma
Page 17: Desarrollo de Aplicaciones Móviles Multiplataforma
Page 18: Desarrollo de Aplicaciones Móviles Multiplataforma
Page 19: Desarrollo de Aplicaciones Móviles Multiplataforma
Page 20: Desarrollo de Aplicaciones Móviles Multiplataforma
Page 21: Desarrollo de Aplicaciones Móviles Multiplataforma
Page 22: Desarrollo de Aplicaciones Móviles Multiplataforma
Page 23: Desarrollo de Aplicaciones Móviles Multiplataforma
Page 24: Desarrollo de Aplicaciones Móviles Multiplataforma
Page 25: Desarrollo de Aplicaciones Móviles Multiplataforma
Page 26: Desarrollo de Aplicaciones Móviles Multiplataforma
Page 27: Desarrollo de Aplicaciones Móviles Multiplataforma
Page 28: Desarrollo de Aplicaciones Móviles Multiplataforma
Page 29: Desarrollo de Aplicaciones Móviles Multiplataforma
Page 30: Desarrollo de Aplicaciones Móviles Multiplataforma
Page 31: Desarrollo de Aplicaciones Móviles Multiplataforma
Page 32: Desarrollo de Aplicaciones Móviles Multiplataforma
Page 33: Desarrollo de Aplicaciones Móviles Multiplataforma
Page 34: Desarrollo de Aplicaciones Móviles Multiplataforma
Page 35: Desarrollo de Aplicaciones Móviles Multiplataforma
Page 36: Desarrollo de Aplicaciones Móviles Multiplataforma
Page 37: Desarrollo de Aplicaciones Móviles Multiplataforma
Page 38: Desarrollo de Aplicaciones Móviles Multiplataforma
Page 39: Desarrollo de Aplicaciones Móviles Multiplataforma
Page 40: Desarrollo de Aplicaciones Móviles Multiplataforma
Page 41: Desarrollo de Aplicaciones Móviles Multiplataforma
Page 42: Desarrollo de Aplicaciones Móviles Multiplataforma
Page 43: Desarrollo de Aplicaciones Móviles Multiplataforma
Page 44: Desarrollo de Aplicaciones Móviles Multiplataforma
Page 45: Desarrollo de Aplicaciones Móviles Multiplataforma
Page 46: Desarrollo de Aplicaciones Móviles Multiplataforma
Page 47: Desarrollo de Aplicaciones Móviles Multiplataforma
Page 48: Desarrollo de Aplicaciones Móviles Multiplataforma
Page 49: Desarrollo de Aplicaciones Móviles Multiplataforma
Page 50: Desarrollo de Aplicaciones Móviles Multiplataforma
Page 51: Desarrollo de Aplicaciones Móviles Multiplataforma
Page 52: Desarrollo de Aplicaciones Móviles Multiplataforma
Page 53: Desarrollo de Aplicaciones Móviles Multiplataforma
Page 54: Desarrollo de Aplicaciones Móviles Multiplataforma
Page 55: Desarrollo de Aplicaciones Móviles Multiplataforma
Page 56: Desarrollo de Aplicaciones Móviles Multiplataforma
Page 57: Desarrollo de Aplicaciones Móviles Multiplataforma
Page 58: Desarrollo de Aplicaciones Móviles Multiplataforma
Page 59: Desarrollo de Aplicaciones Móviles Multiplataforma
Page 60: Desarrollo de Aplicaciones Móviles Multiplataforma
Page 61: Desarrollo de Aplicaciones Móviles Multiplataforma
Page 62: Desarrollo de Aplicaciones Móviles Multiplataforma
Page 63: Desarrollo de Aplicaciones Móviles Multiplataforma
Page 64: Desarrollo de Aplicaciones Móviles Multiplataforma
Page 65: Desarrollo de Aplicaciones Móviles Multiplataforma
Page 66: Desarrollo de Aplicaciones Móviles Multiplataforma
Page 67: Desarrollo de Aplicaciones Móviles Multiplataforma
Page 68: Desarrollo de Aplicaciones Móviles Multiplataforma
Page 69: Desarrollo de Aplicaciones Móviles Multiplataforma
Page 70: Desarrollo de Aplicaciones Móviles Multiplataforma
Page 71: Desarrollo de Aplicaciones Móviles Multiplataforma
Page 72: Desarrollo de Aplicaciones Móviles Multiplataforma
Page 73: Desarrollo de Aplicaciones Móviles Multiplataforma
Page 74: Desarrollo de Aplicaciones Móviles Multiplataforma
Page 75: Desarrollo de Aplicaciones Móviles Multiplataforma
Page 76: Desarrollo de Aplicaciones Móviles Multiplataforma
Page 77: Desarrollo de Aplicaciones Móviles Multiplataforma
Page 78: Desarrollo de Aplicaciones Móviles Multiplataforma
Page 79: Desarrollo de Aplicaciones Móviles Multiplataforma
Page 80: Desarrollo de Aplicaciones Móviles Multiplataforma
Page 81: Desarrollo de Aplicaciones Móviles Multiplataforma
Page 82: Desarrollo de Aplicaciones Móviles Multiplataforma
Page 83: Desarrollo de Aplicaciones Móviles Multiplataforma
Page 84: Desarrollo de Aplicaciones Móviles Multiplataforma