Estrategias de desarrollo de Aplicaciones Móviles

Por

A la hora de emprender un proyecto de desarrollo de aplicaciones móviles, es importante que se conozcan las alternativas. En ocasiones es inviable conocerlas todas y, normalmente, resulta muy difícil conocerlas todas a detalle, pero sí es muy recomendable que se tenga una visión general de las opciones y alternativas del mercado.

 

En este post te daremos una visión general y ampliaremos algunos aspectos. Dada la gran fragmentación de plataformas y tipos de aplicaciones que existen, lo primero que tienes que hacer es intentar minimizar al máximo el abanico de posibilidades. Para ello, veras los tipos de aplicaciones a los que te vas a enfrentar. Una vez tengas claro el tipo de aplicación que quieres hacer, debes elegir el tipo de estrategia a utilizar para llevarla al dispositivo. Hay diferentes tipos de estrategias, y dentro de estas estrategias existen muchas alternativas concretas. Veras también los puntos fuertes y débiles de cada alternativa. Así, podremos ver las diferentes estrategias para desarrollar en nuestro móvil.

 

Desarrollos web

Aqui se engloban todas las aplicaciones que están basadas en lenguajes de marcas, lo cual añade la facilidad de poder programar y probar sin necesidad de un emulador o un dispositivo real. A estas aplicaciones se accede directamente mediante la red. Quedan excluidas las aplicaciones que requieren de un preproceso para poder ser distribuidas. En este punto también se incluyen aplicaciones web basadas en aplicaciones propietarias, como, por ejemplo, Flash y Flash lite. 

 

img_intro_index.png

 

Estas aplicaciones tienen el mismo modelo de desarrollo.

 

1) Prerequisitos.

En general, se puede utilizar cualquier entorno de desarrollo conocido. En el caso de las aplicaciones de tipo widget o entornos de ejecución propietarios, los fabricantes suelen dar soporte a estos desarrollos mediante entornos de desarrollo específicos.

 

2) Fragmentación.

La fragmentación en este tipo de aplicaciones existe, aunque suele ser menor que en el resto. Para poder adaptar nuestra aplicación a las capacidades del dispositivo, y dado que estamos en una arquitectura de navegador web, la mejor opción es intentar reconocer el dispositivo cuando se recibe la primera petición. También se puede intentar mostrar de manera diferente la información en el navegador, pero normalmente las capacidades del navegador hacen inviable esta opción.

 

Una vez que sabemos el dispositivo, tenemos que conocer sus capacidades. Existen varias maneras de adaptar nuestra aplicación a dicho dispositivo:

a) Teniendo el conocimiento (por ejemplo, el proyecto WURLF, que consiste en una base de datos de todos los dispositivos y sus capacidades).

b) Utilizando servidores que incorporen ese conocimiento y lo automaticen, de manera que lleguen a realizar transformaciones automatizadas.

Esta opción tiene el inconveniente de que las últimas versiones no suelen estar soportadas.

 

3) Pruebas.

Las pruebas se pueden empezar con navegadores de escritorio que soporten HTML 5 o el correspondiente lenguaje de marcado, pero después se deberán hacer pruebas reales, o bien con emuladores. Es muy recomendable que se realicen las pruebas con dispositivos reales. Hay que prestar especial atención a aquellas partes de los estándares que no son soportadas por todos los dispositivos. En el mundo del desarrollo web existen muchas herramientas para probar las aplicaciones web. La gran mayoría de ellas se puede aplicar a este tipo de aplicaciones.

 

4) Distribución.

La distribución es lo más sencillo, ya que es igual que la distribución de una aplicación web cualquiera. Solo cuando haya cambios incompatibles con los datos guardados "fuera de línea" de una aplicación, habrá que realizar acciones informativas para que el usuario actualice dichos datos.

 

Entornos de desarrollo nativos

Como ya hemos visto, las aplicaciones nativas son las que ofrecen una mejor experiencia de usuario. Son aquellas que están especialmente diseñadas e implementadas para el contexto de ejecución (plataforma o dispositivo) en el que van a ejecutarse, y pueden sacarle partido a todas las capacidades de dichos dispositivos. En ocasiones, también están sujetas a normas específicas de los fabricantes de dispositivos o responsables de las plataformas.

apps-moviles.jpg

 

1) Prerrequisitos.

Para poder desarrollar una aplicación nativa, generalmente se necesita el entorno de desarrollo o IDE de cada plataforma. Por ejemplo, para Android necesitamos su SDK, y es recomendable usar Eclipse y añadirle algunos plugins. En cambio, en el caso de iOS, necesitamos xCode; para Blackberry apps necesitamos también su SDK; para Windows Phone necesitamos Miscrosoft Visual Studio, etc. Estos IDE pueden tener una licencia de pago, la cual dependerá de cada plataforma. Algunos de estos IDE no son multiplataforma, por lo que requieren de un equipo de desarrollo específico (como es el caso de Windows Phone o iOs). Estos IDE suelen proporcionar todo lo necesario para cubrir el desarrollo completo de la aplicación, de manera que incluyen los emuladores necesarios para probar nuestra aplicación mientras la desarrollamos.

 

2) Implementación.

Todas las implementaciones son distintas. Cada sistema utiliza su propio método y sus propios patrones, pero hay algunos puntos comunes:

a) Existe un emulador con el que podemos probar nuestras aplicaciones. Sin embargo, en ocasiones el emulador no permite emular todas las acciones de usuarios o la emulación no es lo suficientemente ágil, por lo que necesitamos un dispositivo real.

b) Separación de presentación y lógica, de manera que aprovechemos al má- ximo los componentes.

c) Posibilidad de "debugar" nuestra aplicación para poder tener mayor control.

d) Generalmente existen herramientas que facilitan la construcción de las interfaces gráficas o UI (user interface)

 

3) Pruebas.

Para poder hacer pruebas, cada IDE tiene sus herramientas, desde las típicas tecnologías de pruebas unitarias hasta sistemas más complejos, como el monkeyrunner de Android. Para realizar pruebas de estrés de las aplicaciones, también existen herramientas para hacer pruebas de aceptación contra la UI, que utilizan lenguajes de alto nivel, como es el caso de UIAutomation sobre iOs. Sin duda, las posibles pruebas que se pueden realizar sobre las aplicaciones nativas son mucho más extensas y están más controladas que aquellas que se puedan realizar en otro tipo de aplicación, ya que se tienen las herramientas propias de la plataforma.

 

4) Firma y distribución.

Para poder distribuir la aplicación o, incluso, ejecutarla en un terminal para hacer pruebas, puede ser necesario firmar dicha aplicación con un certificado digital que nos identifique como desarrolladores. Si la distribución se realiza mediante terceros, como sucede en los mercados de aplicaciones (market places), es incluso más necesario para poder acreditar que tenemos el derecho de publicar aplicaciones, así como para hacernos responsables de dichas aplicaciones.

 

Entorno de desarrollo multiplataforma

Como hemos visto, las aplicaciones nativas son muy potentes, pero a la vez requieren de un esfuerzo de desarrollo para soportar solamente una plataforma, y así con cada una de las plataformas que queramos soportar. Para poder soportar todas las plataformas, necesitaríamos saber muchos lenguajes, ya que habría que portar dichas aplicaciones entre plataformas. En concreto, en la actualidad existen al menos cinco lenguajes diferentes, que son necesarios para poder realizar aplicaciones sobre las plataformas más actuales: C, C++, Java, C#, Javascript, Objective-C, además de los diferentes IDE necesarios y sus correspondientes librerías específicas.

 Mobile-testing.jpg

 

En cambio, las aplicaciones web nos permiten llegar a muchas plataformas con un mismo código sin necesidad de portar el código, pero sin poder llevar al usuario la misma experiencia que consigue con las aplicaciones nativas.

 

DEMO Emprendedor