viernes, 20 de julio de 2012

Objetivos del Blog

El mundo móvil es la revolución del momento, igual que lo fue hace unos años la web, o más atrás las aplicaciones cliente. Hoy en día un profesional con un poco de experiencia, ya habrá creado alguna aplicación web que se ejecuta sin problema en múltiples navegadores y entornos, y puede que alguna aplicación de escritorio que corra en distintos sistemas operativos, pero ¿que hay de las aplicaciones para móviles? Puede que muchos me respondan, que ellos si, que también han hecho sus inicios con alguna aplicación para móviles pero ¿multiplataforma y multidispositivo?

En esta última pregunta radica la diferencia. Hoy en día no basta con hacer una aplicación móvil que funcione en un único sistema operativo, si realmente queremos llegar a la gente, tenemos que ser capaces de desarrollar programas capaces de ejecutarse en los principales sistemas operativos, y cuando intentas esto el inicio se hace pesado, nos desbordan las arquitecturas, plataformas, frameworks, dispositivos… dificultades que hacen que en vez de centrarnos en el negocio del problema, tengamos que poner la mayoría de nuestro esfuerzo, tiempo y en definitiva dinero, en la parte técnica.

El objetivo de este blog no es otro que el de hacer más llevadero este primer paso para alguien que este empezando en el mundo del desarrollo para móviles.
De forma enumerada lo resumiría en:
·         Introducir al lector en el mundo del desarrollo móvil. Mostrarle  la situación actual en la que nos encontramos. Sus retos y sus oportunidades.
·         Analizar las arquitecturas y frameworks existentes, para evaluar cuál sería la mejor alternativa, desde el punto de vista arquitectónico, a la hora de desarrollar una aplicación para las principales plataformas del mercado.
·         Se contempla la posibilidad de proponer una arquitectura alternativa a las existentes en el caso de que ninguna cumpla con lo esperado.

Justificación del Blog

Los móviles se han convertido en algo básico en nuestras vidas. Con pantallas de alta resolución, GPS, cámaras capaces de sacar fotos y videos de alta calidad, navegadores, aplicaciones nativas con gran funcionalidad, pantallas táctiles, conexión a internet constantes…. Se podría decir que el móvil es tu conexión con el mundo. Ante este panorama, muchos negocios han visto como a la necesidad de tener presencia en internet, se ha unido la de tener una estrategia móvil.

En el proceso de desarrollo de software, uno de los grandes inconvenientes es la amplia variedad, ya sea de sistemas operativos, hardware, etc que existen. Este problema no es ajeno al desarrollo móvil, ya que prácticamente podemos decir que hoy en día cada fabricante de terminales tiene su propio conjunto de herramientas, lenguajes preferidos y modo de hacer las cosas.

Esto llevó a muchas empresas a centrarse en una única plataforma y hasta hace poco el tener una aplicación que funcionase al para iOS (sistema operativo del iPhone), bastaba para tener esta tarea como cubierta, pero en los últimos años esta tendencia continúa, y ha surgido la necesidad de también ser operativo en otras plataformas móviles que poco a poco, o en algunos casos a gran velocidad, ganan cuota de mercado.

Pero crear una aplicación que funcione sin problemas entre distintas plataformas y móviles puede sonar fácil, sólo es copiar código ya existente, pero sólo en teoría, ya que hay que tener en cuenta la alta complejidad técnica que tiene debido a un gran número de factores como lo fragmentación en el mundo móvil, la rápida evolución de los estándares, las limitaciones impuestas por los propios dispositivos (tamaño de pantallas, memoria…), problemas de conexión a internet que pueden tener estos dispositivos (bajo ancho de banda, perdidas de conexión...), grandes diferencias entre sistemas operativos… Lo ideal sería que tu código se ejecutase en todo tipo de plataformas (multiplataforma) y dispositivos (multidispositivo) sin que eso supusiese un gran esfuerzo para el programador, pero la realidad es muy distinta y cada entorno tiene sus reglas.

Esto podría llevarnos a la conclusión de que el problema es que hay demasiadas plataformas, aun así la realidad es que no todas gozan de igual salud e importancia, en cuanto a cuota de mercado, por lo que podemos focalizar nuestros esfuerzos en los tres que suenan con más fuerza y que más futuro tienen: iOS, Android y Windows Phone.

Para facilitar la terea de crear aplicaciones multiplataforma (al menos para las tres mencionadas anteriormente) se están realizando muchos esfuerzos de la comunidad para promover buenas prácticas y estándares móviles, guías y frameworks.

En este blog analizaremos las arquitecturas y frameworks existentes, para evaluar cuál sería la mejor alternativa, desde el punto de vista arquitectónico, a la hora de desarrollar una aplicación para estas plataformas.