Las aplicaciones móviles toman la delantera en el mundo del desarrollo de software, en paralelo con el incremento de usuarios de dispositivos móviles y el surgimiento de nuevos modelos de negocio. Este artículo orienta en la comprensión y bases tecnológicas para el desarrollo de estas aplicaciones.
Contexto
Llevar siempre consigo una aplicación en el bolsillo a través de un dispositivo portable, es sin duda un atractivo potente de tráfico, productividad, socialización y comunicación, con una fuerte tendencia a solamente aumentar su crecimiento.
Sin embargo, desarrollar aplicaciones móviles supone iniciar un proceso de reconocimiento de posibilidades, dispositivos, tendencias, herramientas, servicios y distribución de las aplicaciones en tiendas en línea.
Con la continua maduración del entorno móvil, existe un alto riesgo de elegir inapropiadamente la plataforma que soportará el desarrollo de sus aplicaciones o perderse en el intento. Conozca algunas consideraciones importantes para elegir una plataforma de desarrollo móvil, así como las alternativas y tendencias más recientes del ámbito.
Consideraciones
Variables y aspectos importantes, que no debe dejar de considerar al valorar el desarrollo de una aplicación móvil:
- Los usuarios de aplicaciones móviles esperan una experiencia de interacción y valor muy alta
- Existen diversos dispositivos móviles con resoluciones, rendimiento y sistema operativo distinto
- Las interfaces de usuario deben soportar la diversidad de resoluciones de pantalla disponibles
- Hay al menos dos sistemas operativos predominantes: Android (Google) y iOS (Apple)
- Cada sistema operativo móvil requiere binarios de aplicación compilados específicamente para ese sistema
- Las aplicaciones abiertas al público suelen publicarse en tiendas en línea: iTunes Store y Google Play
- Publicar en Google Play es mucho más ágil que en iTunes Store, a nivel de procedimiento y tiempo de espera
- Las aplicaciones móviles se concentran en interacción, mientras la lógica y datos residen en servicios en la Nube
- Existen muchos servicios en la nube para aplicaciones móviles: Push Notifications, SMS, E-mail, Autenticación, etc
- Para facilitar el consumo de servicios móviles en la nube, existen servicios MBaaS de terceros para unificar su uso
- Por el eventual elevado uso de la aplicación, los servicios de lógica de negocio y otros suelen residir en la Nube
- Usualmente existe un backend para gestionar los datos por el propietario de la aplicación móvil
- Los proveedores Infraestructura como Servicio (IaaS) ofrecen balanceo de carga, escalabilidad y otros beneficios
- Los frameworks de desarrollo son específicos para aplicaciones móviles o existen adaptaciones de los tradicionales
- Los sistemas operativos y frameworks que soportan las aplicaciones móviles están en constante maduración
Modalidad
Al desarrollar aplicaciones móviles, suelen haber tres grandes alternativas, en orden de complejidad, que constituyen los cimientos de una aplicación móvil:
A. Nativa
Son aplicaciones construidas y compiladas en su totalidad para un sistema operativo específico, por lo cual al desarrollar una aplicación móvil, debe pensar en desarrollar, probar y dar mantenimiento a una versión de la aplicación distinta para cada sistema operativo.
Este modelo supone tiempos de desarrollo y mantenimiento más largos, así como un mayor riesgo de aparición de defectos, pero también puede ofrecer un mayor rendimiento y aprovechamiento de las características propias de cada sistema operativo de forma inmediata.
Para agilizar el desarrollo de aplicaciones nativas, existen diversos frameworks que facilitan el esfuerzo de desarrollo y compilación para cada sistema operativo, entregando una serie de librerías que abstraen el diseño de software, en un lenguaje de programación no necesariamente nativo, como C#, Java, entre otros.
El uso de estos frameworks implica que el desarrollador deba familiarizarse y apegarse a esta tecnología, por tanto también existe una curva de aprendizaje importante y valoración seria de la adopción del framework en los futuros proyectos.
B. Híbrida
Las aplicaciones híbridas, por lo general, son construidas usando tecnologías y estándares Web con los que el desarrollador probablemente ya esté familiarizado, bastante semejantes y compatibles con las que emplea al desarrollar aplicaciones Web, por ejemplo: HTML 5, CSS 3, Javascript.
Para soportar este modelo de desarrollo, existen frameworks como Apache Cordova, Adobe PhoneGap o Ionic Framework, que básicamente se valen de que todos los sistemas operativos móviles cuentan con un componente para visualizar contenido Web, como cualquier navegador Web lo hace, y así cargar la aplicación sobre éste de forma transparente para el usuario.
Esto hace posible que una misma aplicación construida sobre tecnologías y estándares Web pueda ser ejecutada en distintos sistemas operativos. Para aprovechar características específicas de cada sistema operativo, estos frameworks poseen plugins que extienden las posibilidades de una aplicación móvil.
Bajo este modelo, el desarrollador puede construir aplicaciones para múltiples dispositivos con un menor riesgo de aparición defectos, una curva de aprendizaje menor y usando tecnología estándard, contando siempre con la posibilidad de aprovechar características nativas a través de plugins específicos.
C. Web Móvil
Esta modalidad consiste en básicamente una versión de un sitio o aplicación Web, optimizada para móviles. No necesariamente requiere de la creación de una aplicación instalable para dispositivos móviles, pero podría ser deseable en algunos casos.
En caso de que no espere aprovechar características propias de los dispositivos móviles, como geolocalización, mensajeria, notificaciones, cámara, entre otros, es una opción muy razonable y de mucho menor costo ya que incuso puede estar integrada como parte de la misma aplicación Web que puede estar ya operando.
Algunos sitios, como Facebook, ofrecen tanto una aplicación móvil nativa que puede instalar en su dispositivo, así como versiones Web de sus sitios en Internet que se comportan de forma muy similar a las aplicaciones nativas, usando básicamente un navegador.
Con la evolución de HTML 5, se están abriendo nuevas posibilidades para facilitar acceso a datos en disco, caché y notificaciones para aplicaciones que emplean únicamente tecnologías y estándares Web, que se están acercando a las aplicaciones móviles. Algunos sistemas operativos, incluso soportan que aplicaciones Web Móvil operen como si fuesen cualquier otra aplicación más del móvil. A esto le llaman Mobile Web Apps.
Servicios
Tomando en cuenta que las aplicaciones móviles por lo general no almacenan ni llevan a cabo operaciones de lógica de negocios, sino que están más enfocadas a la experiencia de usuario, suele ser necesaria la implementación de servicios Web, que se encargan de suplir los datos y operaciones necesarias.
Estos servicios por lo general están siendo desarrollados como API's bajo diseño RESTful y usando el formato de intercambio de mensajes JSON. Con mucha más frecuencia, estos servicios operan en las nubes de proveedores de Infraestructura como Servicio (IaaS) para facilitar procesos de escalabilidad, disponibilidad y balanceo de carga.
Además de los API's propios de la lógica de negocios, las aplicaciones móviles suelen aprovechar un conjunto más amplio de servicios de terceros que amplían las posibilidades de interacción, como notificaciones Push, envío de mensajes SMS, envío de correo electrónico, almacenamiento de contenido, autenticación contra sitios populares (Google, Facebook, Twitter), entre otros.
Frameworks
En lo que respecta al framework para desarrollar la aplicación, tome en cuenta que el principal valor de su aplicación móvil será la experiencia que pueda entregar al usuario final, así como dimensionar correctamente el costo de desarrollo, mantenimiento y operación del servicio a lo largo del tiempo.
Así, deberá valorar antes la modalidad de entrega de su aplicación móvil, si será Híbrida, Nativa o Web Móvil, y elegir un framework que constituya la fundación para la construcción del software de su aplicación. Es probable que requiera frameworks complementarios para componentes de interfaz de usuario, consumir servicios, estilizar la aplicación o mejorar la interacción.
En el caso de Web Móvil, frameworks como AngularJS y jQuery Mobile han ganado popularidad. Por el lado de aplicaciones híbridas, PhoneGap ha tomado mayor popularidad aunque Ionic está en acelerada adopción (ambos basados en Apache Cordova), junto a varios frameworks de Javascript y CSS adicionales como jQuery Mobile, por ejemplo. Para aplicaciones nativas, los sabores son mucho más variados pero descacan Appcelerator y Xamarin.
La elección de uno de estos frameworks, podría ser la decisión más compleja que pueda tomar a la hora de desarrollar una aplicación móvil, por lo que deberá comparar con cuidado y examinar distintos casos de uso.
Plataformas
Dependiendo de la modalidad y de los servicios que su aplicación desea utilizar, podrá elegir entre una serie de MBaaS y Frameworks para desarrollo de aplicaciones móviles que facilitarán el proceso de construcción, operación y mantenimiento.
Dado que una aplicación puede requerir consumir múltiples servicios, el proceso de configuración puede ser complejo. Por ello existen proveedores de Mobile Backend as a Service (MBaaS), que ofrecen un conjunto de estos servicios bajo una misma interfaz, operando en la nube y sin requerir que usted deba implementarlos.
Por otro lado, están surgiendo nuevas plataformas de integración de servicios, como es el caso de DreamFactory, que a través de una misma interfaz o bus de servicios, es posible abstraer la comunicación con los demás servicios finales que componen la aplicación.
Dentro del conjunto de proveedores de servicios específicos para aplicaciones móviles, destacan Parse, Kinvey, Appcelerator, Amazon AWS for Mobile, entre otros. Cada plataforma posee modelos de negocio y posibilidades distintas, por lo cual deberá hacer una comparación de acuerdo a los requerimientos de su aplicación.
Tendencias
En los últimos meses, ha prevalecido la preferencia por aplicaciones híbridas, destacando una acelarada adopción del framework Ionic, el cual a su vez está basado en AngularJS, principalmente en razón de agilizar los esfuerzos de desarrollo y mantenimiento.
Por otro lado, existe una fuerte tendencia a desarrollar aplicaciones Web más enriquecidas e interactivas bajo el modelo Single Page Application, aprovechando frameworks como AngularJS, que abren la posibilidad de unificar aplicaciones Web y Móviles.
La aparición de nuevas características en las tecnologías y estándares Web enfocadas a móviles, así como la mejora de las capacidades de procesamiento del hardware de los dispositivos, están abriendo la posibilidad de integrar aplicaciones Web Móvil brindándoles un trato similar a cualquier otra aplicación móvil.
La industria le está apostando a la estandarización y a la Nube, empleando las tecnologías Web como fundación para la construcción de nuevas aplicaciones, entre ellas HTML 5, CSS 3, JSON, RESTful API Services y Javascript, así como a plataformas robustas en la Nube que soporten la escalabilidad y alto rendimiento de los servicios para móviles.
Jonathan labora para Alkaid, compañía costarricense que entrega servicios de desarrollo de software bajo métodos ágiles, tanto para aplicaciones Móviles como aplicaciones Web, usando tecnología moderna en código abierto.