jueves, 6 de diciembre de 2012

Arquitecturas para desarrollo móvil - Modelo de Código Generado

Este artículo forma parte de una serie de artículos donde iré explicando las distintas arquitecturas que tenemos disponibles a la hora de desarrollar para móvil.
Arquitectura del Modelo de Código Generado
La idea base de este modelo es producir aplicaciones nativas para cada plataforma pero a partird de un mismo código y un mismo lenguaje de programación.

Diagrama Modelo de Código Generado
Un compilador multiplaforma permite separar el entorno de construcción o desarrollo del entorno del dispositivo objetivo o de ejecución. La idea es la siguiente: Habrá una framework o herramienta que nos ofrecerá un API (en cualquier lenguaje de programación) independiente de la plataforma en la que se vaya a ejecutar. El desarrollador usará este API para construir la aplicación móvil, incluyendo el interfaz de usuario, la persistencia de datos y la lógica de negocio. Una vez hecho esto, el código es procesado por el compilador multiplaforma que transformará esté código en una aplicación nativa especifica para una plataforma objetivo. La aplicación resultante de este proceso puede ser desplegada y ejecutada de forma nativa en un dispositivo.

lunes, 3 de diciembre de 2012

Arquitecturas para desarrollo móvil - Modelo de Código Interpretado


Este artículo forma parte de una serie de artículos donde iré explicando las distintas arquitecturas que tenemos disponibles a la hora de desarrollar para móvil.

Este modelo se basa en la existencia de un Intermediate Language Runtime (ILR) o entorno de ejecución de lenguaje intermedio que abstraiga al desarrollador los detalles de la plataforma en la que se está ejecutando el código. El desarrollador escibirá el código en un lenguaje de programación determinado (esto depende del framework), un compilador generará el mismo programa en un lenguaje intermedio, y este código intermedio es interpretado o compilado just-in time por un por un interprete escrito para cada plataforma que interpreta o compila el código en un código máquina entendible por el dispositivo objetivo.

Arquitectura del Modelo de Código Interpretado

Como podemos ver en la arquitectura, el ILR será por tanto un entorno de ejecución que contendrá una capa de abstracción multi plataforma que trabajará con cada una de las APIs de las distintas plataformas. La implementación de este interprete varía en tamaño y complejidad según la herramienta elegida, incluso varían los métodos de ejecución, pudiendo usarse virtualización, interpretación, compilación just-int time o una mezcla de varios tipos.

Un ejemplo muy conocido de este modelo en las aplicaciones de escritorio es la maquina virual de java. Una máquina virtual es una implementación software de una maquina (por ejemplo de un dispositivo móvil) que ejecuta programas como si de una maquina físifica real se tratase. Y ya en su día se intentó replicar este modelo en el mundo móvil con Java ME y su KVM (Kilo Virtual Machine), pero no termino de triunfar ya que producía aplicaciones demasiado pesadas para el momento, y la alta fragmentación del mercado, hacía que las aplicaciones desarrolladas para este entorno de ejecución no funcionase en muchas plataformas.

Componentes del Modelo de Código Interpretado

Así que con este modelo, la responsabilidad de soportar multiples plataformas, la pasamos del desarrollador al creador de la máquina virtual o el ILR

Anngry Birds es un ejemplo de este modelo (usa Lua como lenguaje principal).

domingo, 2 de diciembre de 2012

Arquitecturas para desarrollo móvil - Modelo Híbrido


Este artículo forma parte de una serie de artículos donde iré explicando las distintas arquitecturas que tenemos disponibles a la hora de desarrollar para móvil.

Uno de los mayores inconvenientes del modelo web es las limitaciones que nos impone a la hora de acceder a algunas características del hardware de la plataforma o dispositivo sobre la que se ejecuta la aplicación, ya que a pesar de que las últimas versiones de los navegadores móviles propagan información como la orientación de la pantalla o geolocalización, esta es aun limitada y todavía no hay forma de obtener datos del acelerómetro, la cámara o subir un video.

Aquí es donde el modelo hibrido entra en escena. En este, básicamente tendremos una aplicación nativa que sólo contendrá la aplicación web embebida, de tal manera que funcionará como un wrapper que hará de puente de comunicación entre la aplicación web embebida y las opciones propias del dispositivo, eliminando así parte de las limitaciones del modelo web.

El usuario recibe una aplicación nativa normal que muestra contenido web. La aplicación web interna será cacheada localmente en el dispositivo durante la instalación, eliminando así la necesidad de una conexión activa a la red y mejorando su velocidad y sensibilidad.

 Arquitectura del Modelo Híbrido

La comunicación entre la aplicación web y la aplicación nativa, normalmente ocurre mediante JavaScript APIs que nos dan la posibilidad de leer datos adicionales del móvil, y lanzar acciones como la vibración, el acelerómetro o acceder a ficheros de un modo estándar a través de diferentes plataformas.

Componentes del Modelo Híbrido
Esta habilidad de combinar aplicaciones web estándar con las nativas, puede significar una importante reducción de tiempo y coste al minimizar el trabajo necesario de codificación. Para el usuario, una aplicación hibrida bien diseñada, se verá muy parecido a una nativa: Se la bajará de un app store, la almacenará en el dispositivo móvil y la ejecutará como cualquier otra aplicación nativa. Sin embargo para los desarrolladores supone una gran diferencia, porque en vez de tener que rescribir buena parte de la aplicación para cada plataforma móvil, escribirán esa parte en HTML, CSS y JavaCript, y reusarán ese código a través de las diferentes plataformas.

Ejemplos de este modelo serían la aplicación android de la Wikipedia o la aplicación iPhone de LinkedIn.

viernes, 16 de noviembre de 2012

Arquitecturas para desarrollo móvil - Modelo Web


Este artículo forma parte de una serie de artículos donde iré explicando las distintas arquitecturas que tenemos disponibles a la hora de desarrollar para móvil.

En este modelo, las aplicaciones son codificadas en un lenguaje de programación soportado por los navegadores web y es ejecutado dentro del navegador del móvil.

A la hora de presentar la información (parte UI) se utilizan dos enfoques, uno en el que tanto la lógica como las vistas son procesadas, ejecutadas y preparadas en el servidor, y otro en el que la mayor parte de este trabajo es hecho en cliente.

Arquitectura del modelo Web (Procesamiento en Servidor)

Para el segundo enfoque, la base es javascript

Arquitectura del modelo web (Parte en Cliente)

Por lo tanto podríamos resumirlo en que aquí la clave es construer la aplicación usando tecnologías web estandar como HTML (para definer texto estático e imagines), CSS (que define el estilo y la presentación) y JavaScript (nos servirá para establecer las interacciones y animación) que nos permiten que su apariencia y comportamiento sea cercano al de las aplicaciones nativas. Todos los frameworks que utilizan este modelo se basan en librerías javascript, que combinadas con HTML 5 y CSS 3 renderizan la aplicación web móvil en cualquier dispositivo, y esto es possible a las posibilidades que nos ofrece HTML 5  y CSS 3, que incluyen bases de datos SQL, almacenamiento local, animaciones, video, ejecución offline…

Esta arquitectura es muy interesante cuando buscamos algo barato y que cubra un rango muy grande de plataformas con cambios mínimos. 

miércoles, 14 de noviembre de 2012

Arquitecturas para desarrollo móvil - Modelo Nativo


Este artículo forma parte de una serie de artículos donde iré explicando las distintas arquitecturas que tenemos disponibles a la hora de desarrollar para móvil.

Como si fuera una aplicación de escritorio, las aplicaciones nativas se construyen pensando en un único sistema operativo o incluso un único dispositivo. La idea de este enfoque es aprovechar todo el potencial que nos da el entorno para acceder a las características propias del dispositivo móvil y poder así llegar a sacar el máximo potencial en cuanto a rendiemiento y posibilidades que un móvil nos ofrece.


Arquitectura del modelo nativo

La arquitectura se basa en que en el dispositivo implementaremos toda su interfaz, acceso a funcionalidades de la plataforma (cámara y demás) y lógica (al menos la que necesite ser accedida de modo offline). Si existe cierta información que no necesite ser accedidad de modo constante y offline, sino que basta con recuperarla cada vez que haya una conexión disponible, se podría implementar una aplicación web o servicio web que implementase parte de la lógica y recuperación de información.

En este enfoque, la misma funcionalidad (offline y UI) debe ser implementada desde cero para cada plataforma, ya que cada una de ellas usa su propio lenguaje de programación, por lo que no tenemos la opción de compartir implementaciones de funcionlidad común.  Esto puede hacer que pensemos en desechar esta alternativa inmediatamente, pero para algunos escenarios, donde el rendiemiento y la experiencia de usuario cobran especial relevancia, las aplicaciones nativas son necesarias.

Entornos de trabajo para el desarrollo de aplicaciones nativas
Tanto Android como iOS o Windows Phone proveen todos los mecanismos necesarios para crear este tipo de aplicaciones, ya sea un IDE, emuladores o un app store donde ponerla a la venta.

En resumen, puede ser interesante en aplicaciones donde hay un alto nivel gráfico y de procesamiento de imágenes, se requiere geo localización audio o video en tiempo real, se busca la realidad aumentada, integridad transaccional con datos offline del teléfono…

Instagram para iOS o Mint.com son ejemplos de este enfoque.

domingo, 11 de noviembre de 2012

Consideraciones previas en una arquitectura para móviles


Este artículo forma parte de una serie de artículos donde iré explicando las distintas arquitecturas que tenemos disponibles a la hora de desarrollar para móvil.


A la hora de elegir una arquitectura de desarrollo para móvil es necesario tener en cuenta una serie de aspectos, como son: conectividad, almacenamiento, limitaciones del procesador, estándares, opciones de despliegue, usuarios potenciales… sin olvidar otros típicos como escalabilidad, mantenibilidad o extensibilidad. Todos estos factores servirán como punto de partida a la hora de tomar una decisión arquitectónica.



A continuación se comentan los aspectos más relevantes.

Conectividad


Aplicaciones móviles son por defeinición, móviles, es decir, el usuario no está conectado a un punto de red fijo, sino que mientras se mueve va cambiando y puede que en ciertos momentos se encuentre con una conexión nula o inexistente.

A pesar de que las tecnologías inalambricas han evolucionado mucho en los últimos años, no se puede esperar que un usuario móvil vaya a estar “siempre conectado”, como mucho se puede esperar que este “casi siempre conectado”.

 Acceso al dispositivo.


Con esto nos referimos al echo de poder acceder desde nuestra aplicación a funciones propias del smartphone o dispositivo, como son el GPS, acelerometro, agenda, camara y demás.

Algunas arquitecturas permitirán acceder a todas estas opciones, mientras que otras solo permiten acceder a algunas o incluso a ninguna. Por eso es importante tener siempre en mente como de importante es para nosotros y para nuestra aplicación el acceso al dispositivo y a sus funciones.

Usabilidad


A la hora de diseñar el interfaz de una aplicación para móvil, tenemos que ser mucho más cuidadosos, si cabe, que cuando lo hacemos para una aplicación de escritorio o web, ya que  nos encontramos ante pantallas de pequeño tamaño, multitáctiles, con métodos de entrada disitintos a los tradiciones y en definitiva, unas limitaciones y posibilidades que pueden llevar a nuestra aplicación al fracaso o al exito

Rendimiento


Un aspecto muy a tener en cuenta es como de importante es para nuestro objetivo el rendimiento que tenga la aplicación. Está claro que si queremos desarrollar un juego de coches, el rendimiento es muy importante y por tanto seguramente deberemos pensar en aquellar arquitecturas que permiten sacar el máximo potencial de cada dispositivo.

 Seguridad


Las aplicaciones para móviles estan dejando de ser un simple entreteniemiento para convertirse en una parte importante de nuestro día a día, llegando a tener presencia en operaciones clave donde la seguridad es crucial, como emails, bancos o simples aplicaciones de compra y venta donde tenemos almacenados datos bancarios… Esto hace que en nuestra elección sea importante valorar hasta que punto sera necesaria una seguridad robusta con características como autenticación, encriptación o control de acceso.

domingo, 9 de septiembre de 2012

Plataformas Disponibles para Móviles - Windows Phone


Windows Phone es el nuevo, el último en llegar, el sucesor de Windows Mobile y el sustituto de Symbian, su nacimiento fue en Octubre de 2010 de la mano de Microsoft. El mercado lo ha aceptado con cautela, y su crecimiento ha sido lento, pero el reciente acuerdo con Nokia por el que pasará a ser el sistema operativo de sus móviles más avanzados, ha hecho que su popularidad haya aumentado considerablemente en los últimos meses, y algunos expertos ya le situán como un importante competidor a futuro para Android e iOS.

¿Pero que nos ofrece Windows Phone? Seguramente la interfaz más fácil de usar, antes denominado Metro y ahora Modern UI, se aleja en cierto modo de la propuesta de iOS y Androd. Con un buen diseño y mosaicos interactivos que sirven como widgets (pequeños programas) y como accesos directos, la interfaz Metro posee un aspecto eficaz e intuitivo, con grandes pantallas de desplazamiento horizontal. Una puesta diferente a la de sus comeptidores pero está teniendo muy buena aceptación.

Además está totalmente integrado con el paquete Office de Microsoft, lo cual puede ser algo muy a considerar en el mundo empresarial a la hora de mejorar la productividad de sus empleados
Con todo esto, los fabricantes están empezando a implantar este sistema operativo en sus dispositivos, en especial Nokia por el acuerdo que antes comentábamos. Microsoft da libertad en el diseño de los dispositivos, pero está decidido a mantener un estricto control sobre el cumplimiento de una serie de requisitos con la idea de asegurar la estabilidad y calidad y así evitar algunos de los problemas que nos podemos encontrar con Android.

Para el desarrollo sobre Windows phone contamos con toda la potencia de .Net en este campo, así podremos desarrollar usando el Visual Studio 2010, C# como lenguaje de programación y emuladores sobre Windows, seguramente la opción más sencilla de las tres.

Plataformas Disponibles para Móviles - Android

Google lanzó Android al Mercado en Octubre de 2008 bajo la premisa de la utilización de software libre. Desde entonces su crecimiento ha sido imparable hasta situarse como el más utilizado entre los grandes sistemas operativos para móviles.
Comparativa de funcionalidades entre plataformas (PCWorld)
Algunas características que han hecho triunfar a Android ha sido su alto grado de personalización, por medio de widgets en el escriotio (por ejemplo de tiempo, hora, rss…), el que esté presente en móviles de todo tipo de gamas, desde gama alta a gama baja, su integración con las herramientas google, o la amplia comunidad open source que tiene detrás.


Y está ultima característica es una ventaja también para los fabricantes, que gracias a la amplia flexibilidad de la licencia de Android, puedan hacer cambios en las versiones de android para adaptarlos a sus dispositivos, con lo que en la actualidad muy pocos dispositivos llevan la versión estándar del sistema operativo.

Android, al igual que iOS, no sólo esta pensado para smartphones, sino que también dispone de versión para Tablets y para televisión (Google TV).

Para el desarrollador, con Android todo es mucho más fácil. Primero tenemos el lenguaje Java para programar aplicaciones (qye Java es más fácil de aprender y programar que Objective-C -y que C en general- debido a su simplicidad es un hecho) y un SDK multiplataforma que funciona en Windows, Linux y Mac.

Si queremos un entorno de desarrollo, podemos usar, entre otras opciones, un plugin ADT para Eclipse que incluye un simulador, que también es multiplataforma, libre y gratuito. Todo esto sin pagar licencia alguna.

Un detalle a tener en cuenta es que este sistema sufre mas malware que iOS o Windows Phone.

Plataformas Disponibles para Móviles - iOS

Cuando nación el primer iPhone, allá por el 2007, su sistema operativo se denominaba “iPhoneOS”. Este no paso a ser llamado iOS hasta 2010, cuando fue incorporado al iPad, iPod Touch y la Apple Tv.
La principal característica de este sistema operativo desde su lanzamiento fue lo intuitivo de su interfaz, que permite que cualquier tipo de usuario sea capaz de realizar operaciones complejas con un par de toques en la pantalla.

A esto hay que sumarle que con el iOS apareció el concepto de apps, que tiene una importante comunidad de desarrolladores detrás, que ofrece una navegación por internet muy fluida, o detalles avanzados que han ido mejorando como el asistente personal (SIRI) que nos permite manejar nuestro terminal mediante la voz.
Características técnicas de cada plataforma
Sus detractores hablan de que, por medios legales, es difícil personalizarlo, que no soporta Flash, por lo que no podremos ver muchas de las páginas webs en internet, o que no permite la transferencia de archivos por bluetooth a otro terminal no Apple

Desde la visión de desarrollador, el lenguaje oficial para iOS es Objective-C, y con este lenguaje podemos crear aplicaciones para Iphone, Ipad y Ipod touch. Hay distintas versiones de iOS pero todas ellas se programan usando el mismo lenguaje, Objective-C, y la misma herramienta, Xcode, que es el entorno de desarrollo oficial de Apple. Con él, podemos crear aplicaciones de escritorio para Mac y para iOS. Aunque podemos compilar las aplicaciones “a mano”, es una tarea casi imposible y siempre se recomienda Xcode para, por lo menos, empaquetar y subir la aplicación al App Store.

El único “problema” que tiene Xcode es que solo existe para Mac, por lo que para crear aplicaciones iOS te hace falta un ordenador marca Apple (aunque se puede remediar con virtualización). Sobre el precio de Xcode, ahora es gratis pero hasta hace poco costaba 5€ en la App Store. No es caro y tampoco es un drama tener que comprarlo.

Requisito importante: para distribuir aplicaciones en el App Store y para poder probar las aplicaciones desarrolladas en nuestro propio Iphone/Ipad, es necesario adquirir una licencia de desarrollador que cuesta 79€ al año.

domingo, 26 de agosto de 2012

Situación Actual - La Guerra de las Apps

El 7 de Noviembre del 2008 Apple sacaba el Apple App Store para iPhone, un espacio donde poder ver y comprar todas las aplicaciones disponibles para su dispositivo estrella, el iPhone. Este era el inicio de la guerra de aplicaciones. Entonces otras compañías se pusieron manos a la obra, y primero Google, seguido por RIM, Nokia o Microsoft también sacaron sus propios App Store, cada uno con aplicaciones para sus dispositivos y sistemas operativos.

TimeLine del nacimiento de los App Stores
La realidad es que unos con más acierto u otros con menos, las aplicaciones se han convertido en un negocio estimado en billones de dólares. La gente es cada vez más dependiente de las aplicaciones móviles.  Y esto también ha llegado al mundo laboral. Tecnologías como internet y herramientas como las que esta gran red ofrece son cada vez más importantes en la vida de las empresas y los trabajadores de todo el mundo, hasta el punto de que hoy sea difícil concebir las rutinas y las tareas laborales sin el enorme abanico de posibilidades que estas tecnologías y herramientas ofrecen para hacer más fáciles, rápidos y eficientes los negocios y las comunicaciones.

Valor del mercado de aplicaciones para móviles
Y no se trata de tecnologías implementadas solo por grandes multinacionales, sino que, por el contrario, desde los más pequeños negocios han encontrado la forma de adaptarse a las alternativas más convenientes para ellos, de manera que puedan sacarles el mayor provecho y obtener excelentes resultados a partir de ellas.

Hoy en día es normal que en nuestra actividad diaria, ya sea laboral o personal, usemos aplicaciones, como la navegación por GPS (sistema de navegación por satélite) y las aplicaciones móviles de mapas. Las apps se esconden en la ropa, en los libros, el cine y las tarjetas de crédito. El mundo ya es multidispositivo. Se usan a cualquier hora, están por todas partes y, por si esto fuese poca garantía de éxito, su público potencial somos todos. A diferencia de los ordenadores, no hace falta estar alfabetizado tecnológicamente para utilizar las aplicaciones. “Siempre pienso en mi madre, que nunca usó el ordenador en casa y ahora es súper fan de las tabletas, donde pinta, guarda sus fotos, apunta recetas y nos manda mensajes”.

Las aplicaciones para móviles también constituyen un producto al alza para las compañías de este lado del charco. Y lo seguirán siendo, tal como anuncian las empresas multinacionales europeas, las cuales siguen dando prioridad a sus estrategias en el complejo campo de unos accesorios que, en definitiva, aportan un plus de calidad y atractivo al producto final.

Esto es lo que revela un nuevo estudio de IDC. En un comunicado de la consultora, se explica que el mercado de la plataforma de empresas de móviles y aplicaciones del oeste europeo podrá crecer una media que superará el 25 por ciento en los próximos cinco años.

Destacar que las preferencias de los usuarios difieren en función del país, del grupo, del trabajo, del nivel de ingresos.  Por esta razón, los publicistas han adoptado la estrategia de focalizar la publicidad, ajustarla más al perfil que se dirige. Sin embargo, a pesar de las diferencias de usuarios, los juegos siguen siendo, con mucho, las aplicaciones que más se usan en los móviles, seguidas por el segmento de las sociales y personalizadas.

En cuanto a los App Stores, hoy en día podríamos decir que la gran guerra es entre el Apple App Store y el Google Android Market. Entre los dos pronto llegarán al millón de aplicaciones. Aun así existe una alternativa que esta emergiendo con fuerza que es el Windows Phone MarketPlace.

Últimamente Apple está recibiendo críticas por las estrictas limitaciones que pone a los desarrolladores de iOS -fueron la queja más señalada por un 38% de los entrevistados en la Conferencia Mundial de Desarrolladores-. Mientras que un 11% mencionó como aspecto negativo el largo proceso de aprobación para las aplicaciones de Apple.  Además, un 40% de los encuestados tienen otras quejas, como por ejemplo, el entorno de desarrollo Xcode de Apple, que para algunos es “viejo y anticuado”.

Mientras tanto, el marketplace de Google gana adeptos día a día, ya sea en usuarios como en desarrollados. Y Windows Phone, con paso lento, pero seguro, y su ecosistema de aplicaciones siguen avanzando lentamente. En el mes de mayo se ha batido la cifra de 100.000 aplicaciones en el MarketPlace, una cifra modesta respecto a la competencia pero esperanzadora para quienes ven al sistema operativo de Microsoft como la tercera alternativa.

En cuanto a la rapidez, Windows Phone ha sido el segundo sistema operativo móvil más rápido en batir la cifra de los 100.000. Sólo superado por iOS que necesitó poco más de dieciséis meses para llegar a esta marca. Android por su parte tardó un poco más y Blackberry fue la que más tiempo necesitó.

No obstante, este tipo de datos siempre hay que cogerlos con cuidado. Es bueno que haya más aplicaciones, claro. Demuestra que los desarrolladores están interesados y que el ecosistema va creciendo. Sin embargo, la calidad también es importante y es un factor que no se puede medir de forma objetiva.
Microsoft y Nokia se han tomado en serio la creación de un ecosistema sólido, algo que no tenemos duda que están consiguiendo en número de aplicaciones en poco tiempo.

Por ejemplo Nokia continua con la estrategia de alimentar a los desarrolladores como paso necesario para crear ecosistema, en una nueva iniciativa han enviado 17.000 dispositivos a nuevos desarrolladores para que empiecen a trabajar con ellos.

Evolución del número de aplicaciones para Windows Phone 

También existe alguna alternativa al margen de los tres competidores por excelencia, y una de las que últimamente está pisando fuerte es el Amazon AppStore, que es una de las principales alternativas a Google Play para los usuarios de tablets y smartphones equipados con Android, diferenciandose de ésta mediante una mayor oferta económica en la adquisición de juegos y aplicaciones que también pueden encontrarse en el canal oficial de venta de los de Mountain View. Además, para más inri de éstos, Amazon Appstore permite a los usuarios “probar” las aplicaciones antes de proceder a su compra. 

Situación Actual - Competencia entre Sistemas Operativos

Hace tres meses Kantar, una consultora independiente de estudios de mercado, anunció un dato sobre los smartphones en España: más del 72% de este tipo de dispositivos utilizan Android. Más allá de ser una cifra récord, el sistema operativo Google sigue creciendo, al menos así lo corrobora el último informe de Kantar.
Según la compañía, a fecha del 10 de junio, el 84,1% de los teléfonos inteligentes usaban Android. Un crecimiento del 12% respecto al último periodo analizado por Kantar y el doble en relación con el mismo periodo de tiempo en el 2011 (del 41,3 al 84,1%). Mientras, el resto de opciones van perdiendo peso.

De este modo, Symbian ve reducida su cuota hasta el 3,4% (en el 2011 tenía un 40,2%), RIM baja un poco (del 9,3 al 7,2) al igual que IOS: de 9,3% en el 2011 al 7,2. El motivo de este crecimiento: los smartphones económicos. Recordemos que Android cubre todo tipo de espectros y posibilidades pero en la gama baja y de entrada se ha convertido en una opción barata.

En el resto de Europa los resultados se repiten aunque de los casos estudiados España es el país más androide.

Hay una excepción a Android y a iOS, que entre ambos dominan el 85% del mercado: Windows Phone. Tiene sólo un 3,5% de cuota pero su crecimiento ha sido del 115,3%, una cifra muy buena teniendo en cuenta que el nuevo sistema operativo móvil de Microsoft está aún en una fase inicial de su comercialización. Está claro que los esfuerzos de Nokia y Microsoft se están dejando ver, pero aun está bastante lejos de las dos grandes opciones. Parece que está llamado a ser la tercera alternativa, sobre todo con la llegada de Windows Phone 8.
Cuota de mercado para los distintos sistemas operativos móviles en Europa

En cuanto a los fabricantes chinos, uno de los que cuenta con mayor potencial de crecimiento son los de ZTE, principalmente con Smartphones de gama media o acceso con sistema operativo Android. Pero no hacen ascos a otras plataformas, y ya tienen teléfonos con Windows Phone como el ZTE Tania. Así el vicepresidente de la compañía, He Shiyou, tiene una opinión sobre el estado de las plataformas a medio plazo: “La cuota de mercado de los teléfonos basados en Android está llegando a su nivel máximo, mientras que los dispositivos Windows Phone están cobrado impulso desde el cuarto trimestre del año pasado”
Parece que la relación con Microsoft se estrecha, ya que informan que ellos van a diversificar aun más su catálogo hacia Windows Phone. Las expectativas de ventas del año son de 30 millones de Smartphones, el 10% con Windows Phone.

En el mercado en Estados Unidos, Android domina, como el año pasado por estas fechas, pero los dispositivos Apple han recortado cuota de mercado, pasando del 23 al 33% en un año, según las mediciones en el segundo trimestre.

El sistema operativo de Google contaba con el 60.6% de la cuota de mercado el año pasado, y ahora se estima que Android está en 56.3%. La ganancia de Apple no sólo está en el pequeño retroceso de Android, sino en el estado del resto de competidores, especialmente BlackBerry.
Cuota de mercado para los distintos sistemas operativos móviles en EEUU

Con todos estos datos podemos llegar a la conclusión de que la batalla es cosa de tres: iOS, Android y Windows Phone, ya que BlackBerry está en caída libre y Symbian parece condenado a desaparecer tras la apuesta de Nokia por Windows Phone.

Situación Actual - Competencia entre Distribuidores Móviles


En este primer trimestre del 2012, según IDC, el mercado de la telefonía móvil se ha reducido un 1,5% respecto al mismo periodo de tiempo en el 2011. También han cambiado los líderes de distribución y Samsung recoge el testigo de Nokia distribuyendo 42.2 millones de smartphones en los tres primeros meses de este año. O lo que es lo mismo: un 29.1%.

Detrás de la coreana nos encontramos a Apple con 35.1 millones de iPhones y un 24.2%. Notable es la caída de Nokia que en un año ha pasado de enviar 24.2 millones a 11.9, dejándole en tercer lugar con una caída de la mitad de su cuota de mercado. Cuarto y quinto en discordia nos encontramos a RIM y HTC con 9.7 y 6.9 millones de unidades respectivamente.

Cuotas de mercado para los distintos fabricantes de móviles

Situación Actual- El Mercado de Telefonía Móvil en el Mundo

La movilidad se ha convertido en la protagonista del mundo tecnológico y cada vez más del mundo empresarial. En los últimos años se ha asistido a un crecimiento brutal de la adopción de este tipo de dispositivos y servicios, lo que ha hecho que el mercado crezca y se consolide a un ritmo elevadísimo.

Y este mercado no para de crecer en todo el mundo y su valor no se detiene. Actualmente hay 6.000 millones de dispositivos móviles en todo el mundo, sólo unos 15 meses antes en el mundo se contaba con mil millones menos de usuarios de telefonía móvil, y en conjunto el mercado de la movilidad está valorado en 1,3 billones de dólares (casi 1 billón de euros, algo equivalente al 2% del Producto Interno Bruto mundial). Las previsiones apuntan a que se seguirá consolidando, sobre todo en campos como el uso de banda ancha móvil.

En el marco del Foro Económico Mundial se han dado a conocer los datos del informe 'Banda ancha móvil: Redefiniendo el acceso a Internet y fortaleciendo el potencial de las personas', escrito por los expertos Bill Davidson y Bill Bold. Dicho informe presenta datos que cuantifican el éxito de este mercado.

Los datos del estudio presentado en el Foro Económico Mundial apuntan a que, en 2016, más del 80% de las conexiones de banda ancha serán móviles. Se trata de un cambio significativo, que muestra que el acceso a Internet desde el móvil crece a un ritmo muy superior a las conexiones fijas. De hecho, las previsiones apuntan a que en 2014 el tráfico móvil mensual superará a todo el tráfico de datos móviles en el año 2008. Este dato permite ver como la progresión del sector está siendo frenética, en cuestión de años.

Pero esta escalada en el uso móvil no se limita los países más ricos, según el último informe de la UIT para la ONU las suscripciones de banda ancha móvil están aumentando a nivel mundial. En los países ricos, casi una de cada dos personas tiene una suscripción móvil de alta velocidad, mientras que en los países pobres la ratio sigue siendo de sólo una suscripción por cada 20 personas. Sin embargo, estas naciones son las que han mostrado un mayor crecimiento, con incremento del 160% cada año, y gracias a la disponibilidad de tarifas económicas para los clientes.

Esta pasión o locura por la movilidad se puede entender cuando vemos algunos ejemplos como aquellos que aseguran que la utilización de la tecnología móvil en el campo sanitario puede ser una solución para paliar la necesidad de reducir costes en este campo. Así los expertos comentan que la monitorización remota puede reducir los costes del sistema sanitario entre 175.000 y 200.000 millones al año en todo el mundo. 

Situación Actual - El Mercado de Telefonía Móvil en España

La llegada de la telefonía móvil a España se produjo en 1976, desde entonces esta ha ido evolucionando lentamente con los años hasta la aparición de los teléfonos móviles, donde los cambios han sido vertiginosos y desde el 31 de marzo de 2006, en España hay oficialmente más líneas de teléfono móvil que habitantes. Así a fecha de Diciembre de 2011, el número de líneas de telefonía móvil para comunicación personal era de unos 56.189.478, frente a 47.157.822 habitantes, siendo la tasa de penetración de 111,5 líneas por cada 100 habitantes.

Aun así las compañías de teléfono están viendo peligrar su modelo tradicional de negocio debido a la generalización de la banda ancha, las posibilidades que da internet, la diversidad de oferta… todo esto confirmado en el informe que ha presentado en 2012 la CMT en el Senado sobre el sector de las telecomunicaciones, y que viene a decir que en 2011 los ingresos de telefonía móvil (voz y mensajes) bajaron un 8.8%.

Lo que si creció de una manera espectacular, aunque sin poder compensar los menores ingresos por voz y datos, fue la Banda Ancha móvil. Las conexiones a Internet mediante un móvil crecieron un 92%, haciendo que en España existan 15.9 líneas móviles con conexión a la red a las que hay que sumar los 3.4 millones de líneas de módems o datacards. Con esta subida la penetración de la Banda Ancha Móvil alcanza las 41.9 líneas por cada 100 habitantes.

Y la realidad es que el smartphone es el protagonista del desarrollo de la Sociedad de la Información en nuestro país, gracias al significativo nivel de implantación logrado por este dispositivo. Así, España, junto con Reino Unido, lidera su uso en Europa con una penetración del 46,3%. La penetración de Internet móvil en España se sitúa en el 20%, mientras que la media de la Unión Europea es del 11%.

Respecto al dispositivo de acceso principal, el teléfono móvil ha irrumpido con un 26,1% de internautas que utilizan sus terminales para conectarse a Internet, aunque el ordenador personal sigue siendo el dispositivo de acceso fundamental (98,8% de los internautas). De cualquier forma, el móvil sí ha desbancado al PC como terminal inteligente más vendido. A su vez, la conexión se hace más ubicua, con el 22,8% de los internautas que se conectan tanto desde casa como desde otros sitios.

¿A que se refieren con "Desarrollo móvil"?

Se entiende por desarrollo móvil el ámbito de tareas y procesos involucrados en escribir software para dispositivos, normalmente de pequeño tamaño, con unas capacidades limitadas y que están pensados para ser llevados por el consumidor constantemente encima, algunos ejemplos de estos tipos de dispositivos serían los móviles, smartphones, tablets…

El desarrollo móvil tiene sus raíces en el desarrollo de software tradicional de aplicaciones de escritorio, pero tiene unos condicionantes especiales que lo hacen ser una rama independiente. Estos serían el tamaño de las pantallas, las limitaciones de memoria, las distintas maneras de interactuar con el dispositivo, la fragmentación de plataformas… un conjunto de características, limitaciones y posibilidades, que hacen que el desarrollar para estos aparatos, sea lo suficientemente distinto y especifico como para que sea necesario el que existan expertos en este campo.

Otros ejemplos de ramas surgidas a partir del desarrollo de software tradicional, podrían ser el desarrollo web o el desarrollo de videojuegos.

Definición de plataforma en el mundo del software

Determinado software y/o hardware con el cual una aplicación es compatible y permite ejecutarla. Una plataforma es, por ejemplo, un procesador Intel 80486, una máquina UNIX, un sistema operativo, las consolas de videojuegos, etc.

La plataforma define un estándar alrededor del cual un sistema puede ser desarrollado. Una vez que la plataforma ha sido definida, los desarrolladores pueden crear software acorde a las necesidades de dicha plataforma.

Existen programas multiplataforma, que permiten ejecutarse en diversas plataformas. También existen emuladores, programas que permiten ejecutar desde una plataforma programas de otra emulando su funcionamiento.

Ejemplos en el mundo móvil: iOS para Apple, Android de Google, BlackBerry OS para RIM, Windows Phone de Microsoft o Symbian para Nokia.

¿Cual es la utilidad de un Kit de desarrollo de software (SDK)?

Un conjunto de librerías, herramientas, códigos de ejemplo y documentación que no sólo permite al usuario construir una aplicación completa, sino que también contempla la depuración, configuración, empaquetado y distribución. Estos normalmente vienen acompañados de algún tipo de IDE para facilitar el desarrollo de aplicaciones.

Así por ejemplo para implementar aplicación que usen el .Net Framework 2.0 y corran sobre plataforma X86 deberemos usar el Kit de desarrollo de software (SDK) de Microsoft .NET Framework 2.0 (x86) junto con el “Visual Studio .Net” como IDE.

En el mundo móvil tenemos SDK para Android, iOS, Windows Phone…

Entorno de Desarrollo Integrado (IDE). Definición


Un entorno de desarrollo integrado (en inglés Integrated Development Environment o IDE)  es un programa compuesto por una serie de herramientas que utilizan los programadores para desarrollar código. Esta herramienta puede estar pensada para su utilización con un único lenguaje de programación o bien puede dar cabida a varios de estos.

Un IDE es un programa informático compuesto por un conjunto de herramientas para programar en un lenguaje de programación o varios, donde podemos encontrar como mínimo un editor, compilador, interprete y depurador de uno o varios lenguajes de programación.

Las herramientas que normalmente componen un entorno de desarrollo integrado son las siguientes: un editor de texto, un compilador, un intérprete, unas herramientas para  la automatización, un depurador, un sistema de ayuda para la construcción de interfaces gráficas de usuario y, opcionalmente, un sistema de control de versiones.
Eclipse es un ejemplo IDE
Hoy en día los entornos de desarrollo proporcionan un marco de trabajo para la mayoría de los lenguajes de programación existentes en el mercado (por ejemplo C, C++, C#, Java, Python y Visual Basic entre otros). Además es posible que un mismo entorno de desarrollo tenga la posibilidad  de utilizar varios lenguajes de programación, como es el caso de Eclipse.

¿Que denominamos Framework en informática?


Un framework es una colección organizada de clases que constituyen un diseño reutilizable para un dominio específico de software. Contiene un conjunto de librerías, componentes de software y directrices arquitectónicas que ofrece al desarrollador un kit de herramientas completo para construir una aplicación de principio a fin, siempre teniendo en cuenta que es necesario adaptarlo a cada aplicación en particular.

Framework a utilizar sobre una arquitectura 
En la arquitectura de ejemplo puesta en el punto 2.1. Asp .Net MVC sería el framework de desarrollo web que usaríamos para el desarrollo web basada en una arquitectura MVC.

Por ejemplo “.Net” es considerado un “framework” para desarrollar aplicaciones (Aplicaciones sobre Windows).  FrameWork puede ser algo tan grande como “.NET” o Java (también es un framework), pero también el concepto se aplica a ámbitos mas específicos, por ejemplo; dentro de Java en el ámbito especifico de aplicaciones Web tenemos los framework: Struts, “Java Server Faces”, o Spring.

Abstracción de framework en el mundo de la construcción 

¿Que entendemos por Arquitectura Sorftware de una aplicación?

La arquitectura sotware de una aplicación es una descripción de los subsistemas y componentes que la forman, y de las relaciones entre ellos. Es el resultado de la actividad de diseño del sotware. Así se podrías describir como un modelo conceptual y/o técnico orientado a resolver una o más problemáticas. Es el modelo aplicado para construir una solución, producto, etc, y que proporciona los "planos" para llevar a cabo la implementación.

Abstracción de arquitectura de software en el mundo de la construcción 
Estos “planos” o modelos de una arquitectura de software pueden expresarse mediante uno o varios lenguajes. El más obvio es el lenguaje natural, pero existen otros lenguajes tales como los diagramas de estado, los diagramas de flujo de datos, etc. Existe cierto consenso en adoptar UML (Unified Modeling Language, lenguaje unificado de modelado) como lenguaje único para todos los modelos o vistas.
Una arquitectura representa entonces la base de un sistema de software, y esta debe ser construida pensando tanto en satisfacer las necesidades actuales, como en proporcionar al software las capacidades necesarias para permitir su mantenimiento y evolución de acuerdo a las necesidades del negocio y a las peticiones de los clientes.

Arquitectura de desarrollo dirigido por el dominio dividida en N-Capas 
De esta importancia de una buena arquitectura, surge la necesidad de la figura del arquitecto de software, que será quien se encargue de definir la arquitectura de un sistema.

¿Que es una librería o biblioteca en informática?

Se emplea el término librería para referirse a una biblioteca, por la similitud con el original inglés library. Ambos términos, biblioteca y librería, son correctos según las definiciones de la RAE, aunque en términos formales, la acepción correcta es biblioteca, porque es la traducción correcta de library.


Independientemente de lo anterior comentado, una biblioteca es un Kit de herramientas software pequeño y autónomo que ofrece una funcionalidad muy específica al usuario. Normalmente se usa junto con otras librerías y herramientas para hacer una aplicación completa, ya que por lo general las bibliotecas no son ejecutables, pero sí pueden ser usadas por ejecutables que las necesiten para poder funcionar.

Imaginemos que estamos haciendo programas de ordenador, nos damos cuenta que algunas partes del código se utilizan en muchos de ellos. Por ejemplo, podemos tener varios programas que utilizan números complejos y las funciones de suma, resta, etc son comunes. También es posible, por ejemplo, que nos guste hacer juegos, y nos damos cuenta que estamos repitiendo una y otra vez el código para mover una imagen por la pantalla. Sería estupendo poder meter esas funciones en un directorio separado de los programas concretos y tenerlas ya compiladas, de forma que podamos usarlas siempre que queramos.

Las ventajas enormes de esto son:
·         No tener que volver a escribir el código (o hacer copy-paste).
·         Nos ahorraremos el tiempo de compilar cada vez ese código que ya está compilado. Además, ya sabemos que mientras hacemos un programa, probamos y corregimos, hay que compilar entre muchas y "más muchas" veces.
·         El código ya compilado estará probado y será fiable. No las primeras veces, pero sí cuando ya lo hayamos usado en 200 programas distintos y le hayamos ido corrigiendo los errores.

La forma de hacer esto es hacer librerías. Ya que hemos quedado que una librería son una o más funciones que tenemos ya compiladas y preparadas para ser utilizadas en cualquier programa que hagamos.
Existen dos tipos de librerías:
·         Librerías estáticas à Es una librería que "se copia" en nuestro programa cuando lo compilamos. Una vez que tenemos el ejecutable de nuestro programa, la librería no sirve para nada (es un decir, sirve para otros futuros proyectos). Podríamos borrarla y nuestro programa seguiría funcionando, ya que tiene copia de todo lo que necesita. Sólo se copia aquella parte de la librería que se necesite. Por ejemplo, si la librería tiene dos funciones y nuestro programa sólo llama a una, sólo se copia esa función.
·         Librerías dinámica à NO se copia en nuestro programa al compilarlo. Cuando tengamos nuestro ejecutable y lo estemos ejecutando, cada vez que el código necesite algo de la librería, irá a buscarlo a ésta. Si borramos la librería, nuestro programa dará un error de que no la encuentra. Windows está construido sobre una gran cantidad deDLL's, y es que Windows guarda sus librerías de enlace dinámico en archivos que tienen extensión DLL.

 Toda librería ofrecerá un Interfaz de programación de aplicaciones (API) que es el conjunto de métodos que ofrece cierta biblioteca para ser utilizado por otro software como una capa de abstracción
Ejemplo: En .Net System.IO.File es una librería que en su API tiene el método GetFileContents()

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.