Convierte una idea en una aplicación móvil para iOS y Android.

Son muchos los emprendedores de aplicaciones móviles que parten de una idea innovadora de aplicación para iOS y Android y que quieren ponerla en marcha. A veces tienen el perfil tecnológico para desarrollarla, pero la gran mayoría de veces necesitan una empresa tecnológica que le ayude a plasmarla desde el inicio o concepción de la idea, hasta lograr publicar la aplicación Android o iOS en Google Play o en Apple Store. La gran mayoría comienza como startup y van definiendo su modelo de negocio de forma incremental y por eso, la empresa que se encargue del desarrollo de la aplicación debe estar a la altura del dinamismo y evolución constante de una startup.

Son muchos aspectos los que intervienen a la hora de desarrollar una aplicación móvil de calidad, viable, atractiva y robusta. La parte de la que vamos hablar aquí es de la importancia de estructurar bien las aplicaciones ya que es una parte fundamental del éxito del proyecto para poder ser ágiles en el desarrollo sin renunciar del todo a la calidad y confiabilidad de la aplicación.

La explosión tecnológica que está suponiendo los aparatos Smart (smartphones, smart tv, Smart watch…) están posibilitando la creación de un sin fin de aplicaciones para móviles que revolucionan nuestra sociedad. Una buena idea de aplicación móvil para triunfar es esencial, pero una buena idea que no tenga una buena resolución técnica y tecnológica, puede ser un gran fiasco.

La mayoría de estas aplicaciones se basan en una aplicación que comunica con un servidor para enviar y recibir información tipo aplicaciones de comunicación como Whatsapp, Facebook, Instagram etc..

En este modelo de aplicación web, en el que se puede acceder desde diferentes dispositivos, se suele crear una API en el sistema remoto para comunicar las diferentes aplicaciones Android o iOS con el servidor remoto o aplicación web.

Existe mucha documentación en internet sobre como realizar y las ventajas que ofrece una API RestFull para ofrecer información a diferentes plataformas: Android, iOS, Web, TV, Desktop, etc pero no existe tanta a cerca de las ventajas que supone crear una biblioteca cliente, o por qué no llamarla API cliente, para consumir estos servicios.

El objetivo de este articulo no es solo ahondar en las bondades que una API servidor aporta, sino destacar algunas ventajas que puede ofrecer extender esta misma filosofía de desarrollo en la parte cliente, ya sea una aplicación móvil para Android o para iOS, que consume los servicios web de una API RestFull.

En primer lugar, todos sabemos que API significa Aplication Interface Program y que pretende aunar un conjunto de operaciones o procesamiento de datos que permite una utilización transparente de esas funcionalidades. Cuando se trata de consultar desde diferentes sistemas la información que un sistema web ofrece, parece, casi de forma natural, que una API es lo más indicado ya que logramos ofrecer información de forma trasparente a diferentes sistemas independientemente de cual sea su origen o arquitectura y, a demás, todas esas peticiones tendrán un mismo punto de entrada de comunicación.

Un gráfico de ejemplo sería:
api1

Este diseño permite a los consumidores ( ya sean sistemas móviles Android, iOS o incluso otros sistemas) obtener la información remota de forma transparente reutilizando el mismo código y no teniendo que diseñar módulos específicos para cada uno de ellos.

Que pasa si nos fijamos en la parte cliente de la izquierda del gráfico ( la parte del consumidor). Imaginemos que uno de esos consumidores es una aplicación Android o iOS que obtiene o carga información del sistema web. Dentro de la aplicación móvil y dependiendo de la arquitectura propia de la aplicación (ya sea Android o iOS) habrá diferentes modulos, subsistemas, paquetes o agrupaciones en los que se divida, y esos módulos necesitarán acceder a la información remota.

api2

Este ejemplo provoca que la cohesión del sistema cliente baje de forma drástica y todos sabemos que en el desarrollo de software hay que buscar una alta cohesión y un bajo acoplamiento.

Si por el contrario, creamos una API cliente que se encarge de recoger los datos del sistema remoto, aumentaremos la cohesion de los diferentes módulos que integran la aplicación. Cualquier cambio que haya que realizar en las peticiones remotas estará localizado en la api cliente y solo habrá que actuar en esa parte del software. Además de todo, habremos conseguido un menor acoplamiento entre la aplicación cliente y el sistema remoto y estaremos aplicando el patrón de diseño Modelo Vista Controlador (MVC) ya que el acceso al modelo es independiente de las vistas y de los controladores.

api3

Las ventajas que obtenemos son muchas, vamos a señalar algunas de ellas:

Aumenta la cohesión del sistema lo que permite un desarrollo mas modular de forma que aumentan las posibilidades de repartir el trabajo de forma que se desarrollen en paralelo las diferentes partes permitiendo una mejor sincronización del equipo de desarrollo y reduciendo en consecuencia tiempos de ejecución del proyecto.

Cualquier cambio posterior del software ya sea una ampliación o corrección será menos costoso ya que los bug son más fácil de parcelar y su efecto estará más delimitado y las ampliaciones o cambios tendrán efectos colaterales mas delimitados y fáciles de detectar.

Este diseño permite un desarrollo más ágil del proyecto ya que permite desarrollos incrementales de prototipos funcionales que pueden evolucionar hasta convertirse en el producto final.

El sistema está más abierto a cambios y escalabilidad.

El software producido aumenta en calidad ya que la propia modularización permite parcelar, aislar y concretar fallos de forma mucho más rápida y fácil.

¿Te ha gustado el artículo?
Sé el primero en calificar esta publicación.
1 estrella2 estrellas3 estrellas4 estrellas5 estrellas
Loading...
Artículo escrito por

¡Exprésate! Dejanos tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

1 Comentarios

horacio

Excelente perspectiva. Justamente andaba por esos rumbos en un App que se conecte a una web y le proporcione datos al estar activada. como una base de datos remota. que al server sea la app del android y la web conecte con las app activadas permitiendo que publiquen el contenido alojado en cada equipo, como una web personal por ejemplo.