Tecnología móvil y arquitectura

A diferencia de las computadoras “tradicionales”, los dispositivos móviles tienen características particulares que incluyen:

  • Duración limitada de la batería.
  • Posible tamaño pequeño de la pantalla.
  • Conectividad intermitente.
  • Posibilidad de que el dispositivo se pierda fácilmente.
  • Posibilidad de realizar cálculos demandantes.
  • Variedad de sensores que permiten recolectar información.
  • Acceso a infraestructura que facilita la instalación y actualización de aplicaciones (mercados de apps).

Los puntos descritos previamente aunados al hecho de que los dispositivos móviles están siempre a la mano, ha dado lugar a distintos tipos de aplicaciones con drivers particulares. Recordemos que en el contexto de arquitectura de software, los drivers, se refieren a los requerimientos que influyen en el diseño de la arquitectura. Estos drivers generalmente incluyen requerimientos funcionales primarios, atributos de calidad y restricciones.

Tipos de aplicaciones

Hoy en día podemos considerar tres categorías de aplicaciones móviles:

  • La primer categoría son las típicas aplicaciones (apps) que instalamos en dispositivos móviles tales como los teléfonos inteligentes y tabletas a través de un mercado de apps. Esta categoría de aplicación tiene la particularidad de que generalmente se ejecuta de forma aislada en el dispositivo y, si se comunica con recursos externos, simplemente lo hace para acceder a información que no se tiene en el dispositivo. 
  • La segunda categoría se refiere a las aplicaciones donde el dispositivo móvil se vuelve una extensión a los sistemas empresariales. En esta categoría, el dispositivo es parte del sistema y, en cierta forma, podríamos pensarlo como la interfaz de usuario con el mismo. Por las características descritas previamente de los dispositivos móviles, esta interfaz de usuario es distinta al enfoque tradicional con el que se interactúa con los sistemas empresariales que es generalmente a través de un navegador.
  • La tercera categoría es cuando se utilizan los dispositivos móviles como colectores de información aprovechando todos los sensores que tienen, tales como GPS, acelerómetro, etc. Esta categoría se podría considerar como una extensión de los sistemas empresariales pero con una función muy específica enfocada a la colecta de información.

 

Drivers arquitectónicos

Existen drivers específicos dependiendo del tipo de aplicación móvil. En el primer tipo de aplicaciones (las apps), el driver principal es una restricción de tiempo de entrega. Estas son aplicaciones de muy corta vida que duran unos pocos días en el “top 10” de los mercados de apps y después desaparecen. 

En el segundo tipo de aplicaciones, es decir la extensión de los sistemas empresariales, a nivel funcional generalmente es necesario considerar que los casos de uso del sistema deben poder ser realizados tanto a través de un cliente tradicional (navegador) como de la aplicación móvil. En este tipo de aplicaciones, la conectividad variable es algo que debe tomarse en cuenta y esto puede requerir que se almacenen datos de forma local y que se tenga que lidiar con cuestiones de sincronización de datos. El almacenar datos de forma local requiere, sin embargo, considerar además aspectos relacionados con la seguridad por la información, posiblemente confidencial, que se maneja. 

En el tercer tipo de aplicaciones, es decir cuando se usan los dispositivos móviles como sensores que colectan datos, puede haber atributos de calidad relacionados con aspectos tales como la privacidad. 

De forma general, todos los tipos de aplicaciones se benefician de la infraestructura de mercados de apps que facilita la instalación y actualización de las mismas.

Arquitectura y aplicaciones móviles

Actualmente el mercado móvil todavía depende mucho de la restricción de tiempos de entrega rápidos y generalmente el desarrollo del primer tipo de aplicaciones descrito previamente no se preocupa tanto por la arquitectura. El considerar realizar diseño de arquitectura podría aportar muchos beneficios al desarrollo de aplicaciones móviles. Se puede pensar por ejemplo en generar líneas de productos y establecer frameworks robustos para el desarrollo, lo cual permitiría generar aplicaciones más rápido y además de mejor calidad. Por otro lado, en las aplicaciones que son extensiones de los sistemas empresariales, la arquitectura juega un papel fundamental para poder cubrir con los drivers que se mencionaron previamente.

Los métodos de desarrollo de arquitectura, tales como QAW, ADD o ATAM, se pueden aplicar sin necesidad de ajustes en el desarrollo de aplicaciones móviles. Lo que posiblemente diferirá al utilizarlos son aspectos tales como los drivers, pues los escenarios que se identifican difieren de los que ocurren en aplicaciones más tradicionales. Un ejemplo de ello podría ser un escenario de seguridad: “Se extravía un dispositivo móvil en el cual se descargó información confidencial y un usuario malintencionado intenta extraerla”. En el contexto de las aplicaciones móviles, se debe pensar en los mismos atributos de calidad que los de las aplicaciones tradicionales pero considerando los aspectos propios de los dispositivos móviles. Un ejemplo de ello es la usabilidad, que en el contexto de las aplicaciones para dispositivos móviles debe considerar, por ejemplo, el tamaño reducido de las pantallas.

Relación con el cómputo en la nube y SOA

Cuando hablamos de tecnologías móviles, difícilmente las podemos disociar del cómputo en la nube y la Arquitectura Orientada a Servicios (SOA). La combinación de tecnología móvil y cómputo en la nube resulta en algo que hoy en día se conoce en inglés como “Mobile Cloud Computing”. Al igual que con los tipos de aplicaciones, dentro de esta intersección de las tecnologías, podemos considerar tres variantes: 

  • Cuando se utiliza el dispositivo móvil como un mecanismo para acceder a los recursos de la nube. Por ejemplo cuando se utiliza el teléfono para acceder a una aplicación tal como Google maps. Esto usualmente corresponde al primer tipo de aplicación del que se habló previamente.

  • Lograr que un dispositivo móvil pueda asignar tareas a otros dispositivos móviles cercanos como si fueran recursos de la nube. Por ejemplo, si se tiene una tarea muy complicada entonces se puede repartir cálculos a varios dispositivos cercanos.
  • El “cyber-foraging” y se refiere a descargar parte del trabajo de cálculo del dispositivo móvil a máquinas más poderosas para evitar, por ejemplo, un consumo excesivo de batería. En este enfoque, la nube se ve como una extensión del dispositivo móvil, independientemente de si los cálculos se realizan en la nube en sí o bien en servidores más cercanos. 

Respecto a SOA, esta tecnología y el cómputo en la nube tienen mucho en común: el cómputo en la nube puede ser visto como una plataforma de implantación para aplicaciones que se desarrollan bajo el paradigma SOA. Por otro lado, el utilizar servicios es un mecanismo para facilitar la conexión entre los dispositivos móviles y las aplicaciones empresariales. 

Investigación

Uno de los problemas en los que se trabaja actualmente en investigación (particularmente en el SEI) es el desarrollo de sistemas que apoyan a personas que están en “el borde” (the edge). El borde es un término que se utiliza para referirse a esa parte de la infraestructura hasta donde llegan las conexiones de red. El proyecto que dirige Grace se llama “Edge-enabled tactical systems” y se enfoca en establecer mecanismos para ayudar a la gente que trabaja con dispositivos móviles más allá del borde. Los usuarios principales en este proyecto de investigación son soldados y personas que son llamadas a ayudar en casos de emergencia (Cruz Roja, organizaciones de ayuda, etc.) o médicos rurales. 

De forma general, en la investigación se ha hecho mucho énfasis en aspectos algorítmicos. Un caso es el poder determinar en tiempo de ejecución si cierto cálculo se puede ejecutar en otros recursos distintos al dispositivo mismo. Se observa, sin embargo, que actualmente no se hace mucho énfasis en arquitectura. 

Conclusión

Hoy en día el acceso móvil a los sistemas ya no es algo opcional, sino que es algo ubicuo y es necesario pensar en clientes móviles desde que se comienza a diseñar la aplicación. El acceso móvil es la forma como la gente interactúa hoy en día con computación y, por ello, los usuarios tienen expectativas al respecto, como por ejemplo poder realizar las mismas actividades que se hacen en la máquina de la oficina a través de un teléfono inteligente. 

Por otro lado, y para recalcar la importancia que está cobrando el desarrollo de aplicaciones para dispositivos móviles, es interesante observar que a nivel de la oferta laboral (en Estados Unidos) cerca de un 70% de las ofertas de trabajo para los egresados de la universidad está exigiendo algún conocimiento de desarrollo en iOS o Android. 

La arquitectura de software juega un papel fundamental en el desarrollo de aplicaciones móviles y creemos que el darle un énfasis mayor al que se está dando actualmente podría aportar grandes beneficios.