Métodos para el desarrollo de aplicaciones móviles

Índice
- Introducción
- Objetivos
- 1.Ecosistema de aplicaciones móviles
- 1.1.Fragmentación
- 1.1.1.Un desarrollo para cada escenario
- 1.1.2.Parte común y derivaciones
- 1.1.3.Adaptación única
- 1.2.Contexto
- 1.2.1.Capacidades de los dispositivos
- 1.2.2.Ubicuidad
- 1.2.3.Contexto social
- 1.2.4.Costes
- 1.2.5.Conclusiones
- 1.1.Fragmentación
- 2.Características de un proyecto de desarrollo para dispositivos móviles
- 2.1.Tipos de aplicaciones
- 2.1.1.Aplicaciones básicas
- 2.1.2.Webs móviles
- 2.1.3.Aplicaciones web sobre móviles
- 2.1.4.Aplicaciones web móviles nativas
- 2.1.5.Aplicaciones nativas
- 2.2.Estrategias de desarrollo de aplicaciones móviles
- 2.3.Métodos aplicados al desarrollo de aplicaciones móviles
- 2.3.1.Modelo waterfall
- 2.3.2.Desarrollo rápido de aplicaciones
- 2.3.3.Desarrollo ágil
- 2.3.4.Mobile-D
- 2.4.Fases de los proyectos de desarrollo de aplicaciones móviles
- 2.4.1.Planificación
- 2.4.2.Toma de requisitos
- 2.4.3.Especificación y diseño
- 2.4.4.Implementación y pruebas
- 2.1.Tipos de aplicaciones
- 3.Negocio
- Resumen
- Actividades
- Glosario
- Bibliografía
Introducción
-
Las mejoras en las características hardware de los dispositivos móviles gracias a la inclusión de los fabricantes de la electrónica de consumo, que han visto un nicho de negocio y no quieren perder la oportunidad.
-
La diversidad en las plataformas y dispositivos, de manera que se puede cubrir un gran abanico de posibles consumidores. Además, aparecen novedades a un gran ritmo, que no parece decaer. Sin duda, hay un papel especial para algunas apariciones, como son las de iOs (iPhone, iTouch y iPad) y Android, que han dado una perspectiva diferente.
-
El uso generalizado de los dispositivos móviles (smartphones, tablets pc, televisores, etc.) en muchos aspectos de la vida cotidiana, que ha permitido que entren en muchos mercados. Lo que antes parecía reservado a las escenas de ciencia ficción, hoy está al alcance de la mano.
-
La popularización (en aumento) de las tarifas de Internet móvil para conseguir una mayor cuota de mercado.
-
La aparición de una gran cantidad de nuevas aplicaciones a diario, disponibles para el gran público gracias a las tiendas de aplicaciones o market places.
-
Las nuevas formas o facilidades de venta de las aplicaciones, que hacen más atractivo para las empresas el desarrollo de aplicaciones para este tipo de dispositivos.
-
La aparición de las redes sociales, cuyo propósito se ve complementado y potenciado con las aplicaciones móviles.
Objetivos
-
Que conozcáis los problemas de los desarrollos de aplicaciones para móviles.
-
Que veáis las restricciones y posibilidades de dichas aplicaciones.
-
Que conozcáis un método de desarrollo (pondremos especial atención a los problemas de las aplicaciones para dispositivos móviles).
-
Que conozcáis las herramientas necesarias para aplicar dicho método a las nuevas tecnologías emergentes.
-
Que seáis capaces de afrontar todas las fases de un proyecto relacionado con el desarrollo de aplicaciones móviles y dispongáis de herramientas para afrontarlo con garantías.
1.Ecosistema de aplicaciones móviles
Servicios
|
Aplicaciones
|
Framework de aplicaciones
|
Sistemas operativos
|
Plataformas
|
Dispositivos
|
Redes (GPRS, 3G, etc.)
|
Operadoras
|
1.1.Fragmentación
-
Hardware diferente: Como, por ejemplo, dispositivos con componentes distintos: tamaño o densidad de la pantalla, teclado, sensores, capacidad de proceso, etc.
-
Software diferente:
-
Plataforma diferente. Una plataforma, un framework, un sistema operativo (o las versiones de cualquiera de ellos) puede generar la fragmentación de las aplicaciones.
-
Diferencias en las implementaciones. Por ejemplo, diferencias en la implementación del estándar, o bien errores conocidos de versiones concretas.
-
-
Variaciones de las funcionalidades. Por ser una versión con menos privilegios (versión de pago y versión gratuita) o según los roles de los propios usuarios de la aplicación.
-
Preferencias de usuario. Las más habituales son las localizaciones de la aplicación (idioma, orientación del texto, etc.).
-
Diversidad del entorno. Derivado de la infraestructura, como pueden ser los operadores y sus API, los problemas de cortafuegos, las limitaciones de las redes, el roaming, etc.
-
Reducir la calidad del producto. Debido a la mayor complejidad de las soluciones fragmentadas, se pueden generar más errores.
-
Limitar el número de dispositivos soportados. Para evitar este problema, se puede decidir soportar un número menor de dispositivos (con posibilidades de ampliaciones en un futuro).
-
Alargar cualquier fase del proyecto, desde las fases iniciales a la implementación, además del mantenimiento. Esta dilatación en el tiempo supondrá un sobreprecio, así como posible fracaso de dicho proyecto.
-
Grandes costes asociados a las pruebas sobre dispositivos reales.
1.1.1.Un desarrollo para cada escenario

1.1.2.Parte común y derivaciones
-
Derivación selectiva. Las modificaciones necesarias están localizadas en unos elementos concretos (ya sean clases del código, ficheros de marcado, estilos u otros recursos), y existe un sistema o herramienta que genera las diferentes versiones mediante la captura y el empaquetado de estos elementos para cada escenario.
-
Derivación usando meta programación. Se trata de programar algo que se va a ejecutar en varios escenarios. Para conseguir distintos comportamientos hay varias opciones:
-
Mediante la inyección de objetos o recursos (imágenes, ficheros XMLS, etc.) en el código, de manera que nuestra aplicación deje estos objetos vacíos y se rellenen, en tiempo de ejecución, los objetos específicos de cada escenario. Esta estrategia se baja en el patrón de diseño Inversion of control.
-
Utilizando preprocesadores, que se encargan de cambiar o ampliar nuestro código para adaptarlo a los diferentes escenarios antes de ejecutar.
-
-
Generación automática. El software se debe escribir de una manera específica y solo una vez. A posteriori, existe un proceso que genera automáticamente las aplicaciones correctas para cada escenario, normalmente transformando nuestra aplicación al código particular de cada escenario. En este punto existen más variantes.
1.1.3.Adaptación única
-
Mínimo común denominador. Se trata de conseguir una aplicación mediante la reducción de los puntos de fragmentación, de manera que no exista la necesidad de adaptar la aplicación.

1.2.Contexto
1.2.1.Capacidades de los dispositivos
-
GPS, para conocer la posición geográfica y saber qué se debe mostrar.
-
Brújula, para saber la orientación actual
-
Acelerómetro, para saber cuál es la orientación exacta de nuestro dispositivo y superponer las capas.
-
Cámara, para poder captar nuestro alrededor y así ampliar la información (en ocasiones, incluso, varias cámaras).
-
Conexión a Internet, para poder obtener la información para ampliar nuestra realidad. Esta conectividad puede venir mediante Internet móvil o WiFi, entre otros.
-
Capacidad de procesamiento gráfico muy mejorada, con chips de aceleración gráfica potentes.
1.2.2.Ubicuidad
-
El dispositivo móvil es el primer medio de comunicación masivo real, dado que es capaz de llegar a casi todos los usuarios y en todo momento.
-
El primer medio de comunicación permanentemente encendido, pues es capaz de captar y enviar información aun cuando está apagado (apagado en el sentido del usuario, es decir, cerrado, pero no totalmente apagado).
-
Primer medio que está siempre con el usuario.
-
Medio masivo que tiene incorporado un sistema de pago, que en este caso es mediante la operadora.
1.2.3.Contexto social
-
Compartir nuestra puntuación en un juego.
-
Ver usuarios que están actualmente interaccionando con la aplicación, o bien con el tema que nos interesa en ese momento (por ejemplo, poder comentar una serie de televisión mientras la vemos).
-
Publicar en cualquier momento lo que se estamos haciendo y ver lo que hacen nuestros amigos.
-
Recibir avisos de cuando nuestros amigos están cerca, llegan a un lugar concreto o hacer alguna acción destacable.
1.2.4.Costes
-
Acceso a Internet mediante redes WiFi o MWWAN.
-
Proximidad de otros dispositivos para compartir información.
-
Estar constantemente conectado a las redes sociales, lo que requiere que dispongamos de cuentas en esas redes sociales y que tengamos activado el acceso (con los posibles problemas de privacidad).
-
Conexiones a otras redes inalámbricas, Bluetooth, GPS, NFC, etc.
-
Grandes capacidades de proceso en nuestros teléfonos para realizar las acciones, ya sea la capacidad de proceso interno o bien mediante accesorios.
-
Debido a innovaciones y cambios, tenemos que pagar el coste de actualizar nuestra aplicación. Es decir, durante o después del lanzamiento de nuestra aplicación, pueden aparecer nuevas fuentes de fragmentación hardware o software que provoquen que nuestra aplicación se tenga que actualizar. Esto sucede en todos los desarrollos, pero especialmente en el desarrollo de aplicaciones para dispositivos móviles, debido a la gran velocidad del cambio en este sector.
-
Limitación de la vida de las baterías. Esto significa que, al utilizar muchas de estas capacidades (por ejemplo, el GPS), hacemos que nuestro terminal pierda autonomía, pues se necesita destinar energía a estos periféricos, y lo mismo sucede con el resto de capacidades. En la materia que nos incumbe, el desarrollo de aplicaciones, tenemos que tener esto muy presente a la hora de diseñar y escribir nuestras aplicaciones, ya que puede afectar mucho a su rendimiento.
-
Vulneración de la privacidad. Nuestros dispositivos móviles contienen cada vez más información personal y confidencial, y requieren acceso a esta información para poder sacarle el mayor partido y conseguir integrarse en el contexto. Por eso, siempre que realicéis una aplicación que requiera acceso a información o acceda a datos de otras fuentes (como las redes sociales), debéis tener el permiso explícito del usuario, y este se debe poder revocar.
-
Necesidades de hardware. Por ejemplo, la necesidad de mayor velocidad de transmisión. Si nos encontramos en una zona con poca cobertura para nuestra red de transmisión de datos, puede ocurrir que nuestras aplicaciones no funcionen correctamente.
-
Necesidades de inversión no previstas debido a novedades del mercado. Si aparece una fuente de fragmentación nueva (por ejemplo, un nuevo dispositivo), debemos invertir en dar soporte a ese nuevo dispositivo. Esta inversión puede suponer no tener que hacer nada o realizar un desarrollo nuevo.
1.2.5.Conclusiones
2.Características de un proyecto de desarrollo para dispositivos móviles
2.1.Tipos de aplicaciones
2.1.1.Aplicaciones básicas
-
simplicidad
-
facilidad de venta
-
gran cantidad de usuarios potenciales
-
poca o casi nula capacidad de procesamiento del contexto
-
muy baja complejidad de las aplicaciones realizadas
-
limitaciones impuestas por la tecnología sobre los diseños de las aplicaciones (ciento sesenta caracteres de texto)

2.1.2.Webs móviles
-
Fácil implementación, testeo y actualización. Incluso se puede realizar gran parte del desarrollo sin necesidad de utilizar dispositivos móviles ni emuladores, hasta llegar a las fases finales del desarrollo.
-
Lenguaje conocido y estándar. Los lenguajes de marcas son muy conocidos hoy en día por la mayoría de los desarrolladores, y en la mayoría de los casos se trata de subconjuntos de lenguajes conocidos.
-
Pueden soportar múltiples dispositivos con un único código fuente. Para soportar fragmentación entre dispositivos, es necesario utilizar técnicas especiales (como el WURLF).
-
Es difícil soportar múltiples dispositivos, así como conseguir la misma experiencia de usuario con varios tipos de navegadores.
-
Ofrecen grandes limitaciones a la hora de realizar programas, tanto de proceso como de acceso a la información del dispositivo y del usuario. Por tanto, es difícil conseguir aplicaciones contextualizadas.
-
En muchos casos está pensado para ser visualizado con conexiones lentas, pero dichas conexiones pueden ser demasiado lentas y provocar una experiencia de usuario deficiente.
-
En la actualidad, la mayoría de los dispositivos nuevos están incorporando estándares más nuevos (como HTML 5), por lo que no se está trabajando en mejorar estos estándares.
-
El número de dispositivos que solo pueden ver una página web con este tipo de lenguajes de marcas está disminuyendo.

2.1.3.Aplicaciones web sobre móviles

-
Posibilidad de acceso a mucha información del dispositivo para realizar aplicaciones relativamente complejas.
-
Desarrollo, distribución y pruebas sencillas.
-
Convergencia entre aplicaciones de sobremesa y de dispositivos móviles, lo cual tiene muchas implicaciones, como, por ejemplo, que los desarrolladores solo tienen que conocer una tecnología.
-
Uso de estándares de la web (claramente definidos).
-
Ampliamente soportado por la industria, de manera que la mayoría de los nuevos dispositivos tienen soporte para este tipo de aplicaciones.
-
Se necesita un navegador que pueda dar soporte a este tipo de tecnología. Aunque la mayoría de los nuevos dispositivos lo pueden dar, los antiguos no.
-
Su rendimiento es menor con respecto a las aplicaciones nativas, pues se ejecuta todo mediante el Javascript del navegador, cuya potencia es limitada.
-
Imposibilidad de acceder a todas las posibilidades del dispositivo. No se puede acceder al hardware ni a muchos periféricos (como sensores o cámaras). No se puede acceder a mucha de la información del usuario (contactos, sus citas, etc.).

Introducción a HTML 5
-
Añadir novedades al HTML y CSS actuales.
-
Dar soporte a todos los navegadores, incluyendo los navegadores móviles, evitando una ruptura total con las versiones actuales del estándar.
-
Aprovechar las características de los dispositivos actuales, como pueden ser aceleración gráfica o múltiples procesadores.
-
Tener mayor libertad de desarrollo, evitando al máximo la necesidad de extensiones propietarias que existen actualmente.
-
Visualización de información e interacción con dicha información más potente, a través de los lienzos (canvas) y los formularios (web forms). En los formularios se tiene validación nativa del navegador.
-
Modo sin conexión. Guardado de la información del usuario en el dispositivo físico, mediante el almacenamiento local para por ejemplo soportar falta de conectividad.
-
Almacenamiento de datos en el navegador como una base de datos.
-
Acceso a datos como la posición geográfica.
-
Renderización de objetos gráficos aprovechando la potencia de las tarjetas gráficas de los dispositivos, para así mejorar su rendimiento (gracias en parte al soporte de SVG (6) ).
-
Soporte para video y audio (etiquetas <video> y <audio>) sin necesidad de extensiones propietarias.
-
Nuevas etiquetas semánticas, como section, article, header, nav, etc.
-
API para coger y arrastrar (Drag & drop).
-
Trabajos pesados en segundo plano (Web Workers).
2.1.4.Aplicaciones web móviles nativas
-
Todos los puntos a favor de las aplicaciones web móviles.
-
Se pueden considerar, en lo que respecta a la instalación y la distribución, como aplicaciones nativas.
-
La mayoría de los inconvenientes de las aplicaciones web móviles, a excepción de la instalación en el cliente.
-
La experiencia del usuario es, en ocasiones, contradictoria, pues a pesar de tratarse de una aplicación nativa, requiere de conexión a Internet para poder trabajar y funciona según los tiempos de respuesta del navegador.

2.1.5.Aplicaciones nativas
-
Acceso total al contexto, con todas las posibilidades que eso conlleva. Consigue las mejores experiencias de usuario.
-
Posibilidad de gestión de interrupciones en la aplicación o en las capacidades del dispositivo. Desde saber si tenemos conexión de datos o conexión de localización hasta tener información sobre la batería.
-
Son relativamente fáciles de desarrollar si solo se contempla una plataforma.
-
Se pueden distribuir por los canales conocidos de aplicaciones que permita la plataforma, con lo que se pueden vender más fácilmente.
-
Todas las novedades llegan primero a este tipo de aplicaciones, pues es en este tipo de aplicaciones donde se prueban.
-
Portar aplicaciones es costoso. En el caso de querer realizar una aplicación para más de una plataforma, se complica el desarrollo, debido a los problemas de la fragmentación.
-
Dependiendo de la plataforma elegida, puede haber fragmentación dentro de cada plataforma, debido a los diferentes tipos de dispositivos o versiones de la plataforma.
-
No existe un estándar, por lo que cada plataforma ofrecerá sus peculiaridades.
-
Normalmente, para desarrollar, distribuir o probar estas aplicaciones en dispositivos reales, es necesario tener una licencia de pago, dependiendo de la plataforma.
-
Las ganancias por estas aplicaciones suelen repartirse entre el creador de la aplicación y la plataforma de distribución.
-
Aplicaciones para la gestión de la agenda o para encontrar amigos de la agenda con su posición geográfica.
-
Alarmas, aplicaciones correo electrónico, etc.
-
Aplicaciones sociales, como las aplicaciones de las redes sociales y otras aplicaciones que permiten utilizar el acceso a estas aplicaciones, como los agregadores de redes sociales.



2.2.Estrategias de desarrollo de aplicaciones móviles
2.2.1.Desarrollos web
public class HelloWorld extends HttpServlet { ... protected void processRequest( HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { WURFLHolder wurflHolder = (WURFLHolder) getServletContext() .getAttribute("net.sourceforge.wurfl.core.WURFLHolder"); WURFLManager wurfl = wurflHolder.getWURFLManager(); Device device = wurfl.getDeviceForRequest(request); MarkUp markUp = device.getMarkUp(); request.setAttribute("markUp", markUp); request.setAttribute("device", device); ... } }
2.2.2.Entornos de desarrollo nativos
2.2.3.Entorno de desarrollo multiplataforma
-
Pérdida de controles específicos de una plataforma: Si tenemos un control de la UI o una funcionalidad concreta que solo existe en una plataforma, no podremos generar de manera única, por nuestro desarrollo multiplataforma.
-
Integración en el escritorio del dispositivo: Según la plataforma, las posibilidades de añadir elementos en el escritorio de cada usuario varían. Por ejemplo, en Android o Symbian se pueden crear widgets potentes para mejorar la el uso de nuestra aplicación, mientras que en Windows Phone solo es posible añadir iconos de la misma.
-
Gestión de la multitarea: Debido a que se trata de conceptos de bajo nivel de cada plataforma, cada una la trata de manera diferente, con restricciones diferentes, por lo que no será fácil hacer código común para todas sin perder mucha potencia.
-
Consumo de la batería: Estas aproximaciones requieren de una capa de abstracción sobre nuestro dispositivo, que provoca problemas como la multitarea. De la misma forma, el control sobre el consumo de batería se hace más difícil cuando no se tienen las capacidades concretas de la plataforma. También afecta el hecho de no tener el control sobre la multitarea, ya que esta es una de las maneras de ahorrar las baterías.
-
Servicios de mensajería asíncrona o push services: Sirven para implementar elementos como la mensajería instantánea, pero debido a que cada plataforma los implementa de una manera, se hace complicado atacarlos conjuntamente.
-
PhoneGap: Son aplicaciones realizadas en HTML 5 con objetos Javascript que permiten el acceso, mediante enlaces, a las funciones nativas para las capacidades que HTML 5 no ofrece. Las aplicaciones se ejecutan sobre un componente que contiene un navegador.
-
Rhodes: Son aplicaciones escritas en Ruby que utilizan el patrón de diseño MVC (7) y que se ejecutan en máquinas virtuales específicas de Ruby para cada plataforma. Por tanto, son aplicaciones nativas. Incluyen sistemas para sincronizar datos de manera sencilla y conseguir, de esa manera, el cambio de "en línea" a "fuera de línea" sin mucho coste.
-
Appcelerator: Son aplicaciones escritas en HTML 5 que son compiladas en aplicaciones nativas. También son capaces de generar aplicaciones de sobremesa clásicas, ejecutables sobre Mac, Linux o Windows.
-
Wacapps: Son aplicaciones escritas en HTML 5 con soporte para la distribución por parte de las operadoras.
-
Flash: Son aplicaciones que corren sobre un player propietario. Si existe el player correspondiente, no necesitan ser portadas. Se escriben de igual manera que las aplicaciones de sobremesa y tienen las mismas restricciones.
-
Java ME: Son aplicaciones escritas en Java, con todas las peculiaridades de los perfiles J2ME, y se ejecutan mediante una máquina virtual, con sus correspondientes restricciones. Actualmente están en casi el ochenta por ciento de los dispositivos móviles del mercado.
-
Unity3D: Entorno para desarrollar juegos nativos o web para cada plataforma, como Play Station, Wii, PC, Mac, etc. También da soporte para las Android e Iphone.
-
Solo una línea de desarrollo para varias plataformas.
-
Aplicaciones que podemos instalar en nuestros dispositivos, que tienen la posibilidad de ser distribuidas en los mercados de aplicaciones.
-
Dependiendo del caso, el resultado son aplicaciones nativas que aprovechan en gran medida el potencial del dispositivo y ofrecen un diseño y experiencia de usuario idéntica a las aplicaciones desarrolladas sólo para una plataforma.
-
En diferentes grados, tienen acceso parcial a los recursos del dispositivo. Esto significa que, según el grado, no pueden interaccionar con algunas capacidades y, en mayor o menor medida, serán aplicaciones menos eficientes que las aplicaciones nativas.
-
Para poder soportar varios dispositivos, suelen tener que hacer el mínimo común denominador de las capacidades. Así, si una plataforma aporta una nueva funcionalidad (por ejemplo, un sistema de comunicación que el resto no tenga), no se podrá implementar sin añadir código específico.
-
Soporte parcial. No tienen soporte absoluto para todas las plataformas y versiones.
-
Las nuevas funcionalidades tardan en ser soportadas. Dado que las novedades en las plataformas aparecen en un ritmo muy elevado y en cortos periodos de tiempo, si se utilizan estos entornos para el desarrollo, es necesario esperar un tiempo para poder utilizar dichas herramientas. En el mejor de los casos, si se trata de código libre o ampliable, podemos realizar una implementación para tener acceso a esa funcionalidad.
-
Se requiere pagar la licencia, si la tiene, para el entorno de desarrollo, además de la licencia propia de cada plataforma para poder distribuir la aplicación.
2.3.Métodos aplicados al desarrollo de aplicaciones móviles
-
modelo waterfall
-
desarrollo rápido de aplicaciones
-
desarrollo ágil (cualquiera de sus variantes)
-
Mobile-D
"It can take up to nine months to deploy an entertainment (mobile) application, but that's the duration of a cell phone in this market."
Craig Hayman (IBM)
2.3.1.Modelo waterfall

2.3.2.Desarrollo rápido de aplicaciones
2.3.3.Desarrollo ágil
2) Dar más valor al software que funciona que a la documentación exhaustiva.
3) Dar más valor a la colaboración con el cliente que a la negociación contractual.
4) Dar más valor a la respuesta al cambio que al seguimiento de un plan.
-
Alta volatilidad del entorno: Con cambios en entornos de desarrollo, nuevos terminales y nuevas tecnologías a un ritmo mucho más elevado que en otros entornos de desarrollo.
-
Equipos de desarrollo pequeños: Dado que los desarrollos móviles suelen ser proyectos relativamente pequeños, los equipos no suelen ser muy grandes. Generalmente son llevados a cabo por desarrolladores individuales o por PYME.
-
Software no crítico: No suelen ser aplicaciones de alto nivel de criticidad, dado que suelen ser aplicaciones para entretenimiento o gestión empresarial no crítica.
-
Ciclos de desarrollo cortos: Dada la evolución constante de la industria, se requieren ciclos de vida realmente cortos para poder dar salida a las aplicaciones a tiempo.
2.3.4.Mobile-D

-
Exploración. Se dedica a la planificación y a los conceptos básicos del proyecto. Es diferente del resto de fases.
-
Inicialización. Se preparan e identifican todos los recursos necesarios. Se establece el entorno técnico.
-
Productización o fase de producto. Se repiten iterativamente las subfases, con un día de planificación, uno de trabajo y uno de entrega. Aquí se intentan utilizar técnicas como la del test driven development para conseguir la mayor calidad.
-
Fase de estabilización. Se llevan a cabo las acciones de integración para asegurar que el sistema completo funciona correctamente.
-
Fase de pruebas y reparación. Tiene como meta la disponibilidad de una versión estable y plenamente funcional del sistema según los requisitos del cliente.
2.4.Fases de los proyectos de desarrollo de aplicaciones móviles
2.4.1.Planificación
-
Dificultades por el desconocimiento de la tecnología. Suele tratarse de tecnologías nuevas, en ocasiones desconocidas para los desarrolladores. Eso repercute en el tiempo de aprendizaje y puede ocasionar desviaciones por contratiempos no conocidos
-
Disponer de dispositivos reales. Para poder realizar un buen proyecto de desarrollo de aplicaciones móviles, es necesario poder probarlo en dispositivos reales. Para ello, se debe planificar una fase de pruebas reales.
-
Time to market. A la hora de planificar hay que tener muy en cuenta el que suele tardar una idea en llegar al mercado e intentar reducirlo al máximo, pues la competencia es muy grande.
-
Prototipado. Es importante planificar cuando se va a conseguir el primer prototipo (y, tal vez, la primera salida en beta), pues el prototipado rápido puede ser muy útil para este tipo de aplicaciones.
2.4.2.Toma de requisitos
-
¿Quien va a ser nuestro usuario? ¿En qué momento va a utilizar nuestra aplicación?
-
¿Qué requerimientos mínimos de hardware son necesarios?
-
¿Necesitamos gestionar el modo "en línea" y "fuera de línea"?
-
¿Deben existir datos de terceros? (desde un mapa, hasta datos del propio dispositivo).
Plan de dispositivos (device plan)
|
Coste estimado
|
Ingresos estimados
|
Beneficios previstos
|
---|---|---|---|
Dispositivos de clase A
|
1
|
5
|
4
|
Dispositivos de clase B
|
2
|
4
|
2
|
Dispositivos de clase C
|
3
|
3
|
0
|
Dispositivos de clase D
|
4
|
2
|
-2
|
Dispositivos de clase E
|
5
|
1
|
-4
|
Definición de la arquitectura
-
Muchos tipos de juegos que no comparten ningún tipo de información.
-
Aplicaciones de productividad (como el gestor de tareas o las alarmas).
-
Todas las aplicaciones que se pueden utilizar en el móvil mediante el navegador web correspondiente (redes sociales, accesos a webmails, etc.).
-
Aplicaciones web móviles nativas, que son aplicaciones web pero tienen apariencia y características de una aplicación nativa.
-
Aplicaciones nativas que requieren de la conexión para poder estar autentificados o para obtener los datos.
-
Aplicaciones de redes sociales o de tiempo real en las que la conexión es prácticamente imprescindible para tener la información actualizada.
-
Cualquier tipo de chat, aplicación de llamadas o videoconferencias.
-
Unidireccional. Son aplicaciones que pueden sincronizar los cambios con algún servidor externo, bien porque en uno de los dos extremos solo es posible leer información, bien porque sirven como backup de información.
-
Bidireccional. Son aplicaciones que pueden sufrir modificaciones tanto en el servidor como en el cliente, y la parte servidora y cliente se deben comunicar para realizar la sincronización.
-
aplicaciones de intercambio de contactos
-
juegos entre dos o varios jugadores
2.4.3.Especificación y diseño
-
Model-View-Controler (MVC). Se utiliza para poder separar al máximo la lógica de la visualización e interacción, y así poder dar soporte a más escenarios, como puede ser el caso de una aplicación para smartphone y la misma para tablet PC.
-
Threading. Se refiere al uso de hilos en segundo plano para realizar tareas largas que bloqueen al usuario.
-
Delegation. Se trata de delegar una parte del trabajo hacia otro objeto sin que este tenga que ser una subclase del primero. En el caso de los desarrollos móviles, es muy útil para delegar trabajos relacionados con la interfaz, de manera que pueda trabajar con eventos de manera muy sencilla y sostenible.
-
Modelo de memoria gestionada. En general, las aplicaciones no se ejecutan directamente sobre la plataforma, sino que suele haber una capa intermedia o middleware, y esta suele gestionar la memoria. Sin embargo, para poder hacerlo de manera eficiente, es necesario realizar algunas acciones o convenciones.
Cuadro de control (dashboard)
-
Resaltar lo que es nuevo.
-
Enfocar de tres a seis características importantes.

Barra de acción (action bar)

Menús contextuales (quick action menu)
-
Usarlo solo para las acciones más obvias e importantes
-
Usarlo cuando el objeto no tenga una vista especialmente diseñada para él. En ese caso, hay que ir a esa vista y mostrar allí la información.
-
No usar en contextos donde se soporten múltiples selecciones.

Lista dinámica (dynamic list)

Mensajes de alerta

-
Usarlo solo para mensajes importantes y necesarios. Este tipo de mensajes son muy invasivos, y el usuario, en lugar de sentirse agradecido por recibirlos, puede acabar ignorándolos.
-
Realizar alguna acción cuando sea necesario; mostrar una de las opciones como atajo para dicha acción. Por ejemplo, si hay un problema de espacio en el disco, una de las acciones irá al gestor de aplicaciones instaladas para eliminar las que no necesitemos.
2.4.4.Implementación y pruebas
-
Usabilidad. La usabilidad de la aplicación se debe tener muy en cuenta (debemos tener presente que la mayoría de usuarios no tendrán tiempo ni ganas de leer los manuales). Una buena práctica para mejorar la usabilidad es adaptar las aplicaciones a los comportamientos estándares de la plataforma, de manera que el usuario pueda aprovechar reglas mnemotécnicas o hábitos adquiridos.
-
Responsividad. La aplicación debe responder a las acciones de usuario lo mejor posible y de manera ágil. Es un punto muy importante pues el usuario de dispositivos móviles suele ser más exigente que el de aplicaciones tradicionales en situaciones parecidas. Algunas plataformas, como Android, son muy estrictas a la hora conseguir que la aplicación sea suficientemente responsiva. Si la aplicación no es suficientemente ágil a la hora de responder al usuario, el sistema debe avisarle de esta circunstancia y permitir que la cierre inmediatamente.
-
Optimización de recursos. Los dispositivos móviles, incluso los actuales, cuentan con unos recursos mucho más reducidos que las aplicaciones de sobremesa o las páginas web. Esto quiere decir que tenemos que hacer un buen uso de la memoria y del procesador del dispositivo, por lo que es conveniente cerrar los recursos que no se necesiten para evitar los problemas asociados.
También es importante prestar mucha atención al consumo de batería de la aplicación. Por ello, es recomendable evitar cálculos excesivos (como los cálculos de coma flotante), el uso de las funciones de vibración o el uso de las conexiones inalámbricas. Cada una de estas recomendaciones se debe adaptar a la plataforma específica donde trabajamos, pues los fabricantes nos darán las recomendaciones concretas.
Otra buena práctica, en este sentido, es perfilar la aplicación con las herramientas propias de la plataforma para encontrar problemas.
-
Accesibilidad de la aplicación. Debemos tener en cuenta al diseñar la aplicación que los usuarios pueden necesitar acceder a ella de diferentes maneras. Por ejemplo, si tenemos una aplicación con formularios, es ideal que sea accesible tanto a través de las pantallas táctiles como de los trackballs.
Importancia de las pruebas unitarias
Pruebas de integración contextualizadas
-
¿Cuál es la experiencia del usuario con la aplicación?
-
¿Se carga rápidamente la aplicación? ¿Se necesita alguna barra de progreso de la aplicación? ¿Y con conectividad reducida?
-
¿Cambia la aplicación al mover el dispositivo? Es decir, ¿se deben tener en cuenta los sensores de acelerómetros? ¿Reacciona con agilidad a estos cambios?
-
¿Acepta correctamente la aplicación las interrupciones como, por ejemplo, las llamadas telefónicas? ¿Acaba correctamente la aplicación? Es decir, ¿cierra correctamente todos los recursos utilizados?
-
En caso de utilizar conectividad, geolocalización o cualquier otro servicio, ¿cuál es el comportamiento esperado de la aplicación ante la falta de dicha capacidad?
Continuidad de las pruebas
3.Negocio
3.1.Posibilidades de negocio
-
SMS premium. Mensajes de texto con un coste extra, también conocidos como servicios de tarificación adicional (STA).
-
SMS para descargar aplicaciones o melodías.
-
Desarrollo de aplicaciones a medida.
-
Vender la aplicación a través de una tienda de aplicaciones. Es el modelo más clásico, aunque no siempre es el más eficaz.
-
Ofrecer versión gratuita, y con su distribución conseguir marketing de la aplicación o de los servicios relacionados, como puede ser una web inmobiliaria.
-
Ofrecer una versión gratuita y una versión de pago. La versión gratuita no contiene todas las funcionalidades de la aplicación, de esta manera, el usuario puede probarla y, si le convence y quiere obtener las funcionalidades extras, deberá pagar por ellas.
-
Vender publicidad. Diversas tecnologías permiten incluir en las aplicaciones, tanto en las basadas en tecnología web como en las nativas, anuncios contextualizados. En ocasiones la publicidad sólo aparece en la versión lite.
-
Vender packs de contenidos extras. Se trata de vender la aplicación por partes, cada una con un coste. Esto es muy habitual en los juegos, por ejemplo, que ofrecen packs con distintos niveles.
-
Llevar un negocio existente al mundo móvil:
-
Mejorar una línea de negocio, por ejemplo se hace añadiendo la localización geográfica a nuestro servicio.
-
Intentar conseguir nuevos clientes. Por ejemplo, conseguir clientes compulsivos; es decir, aquellos que si tuvieran que ir al ordenador no comprarían, pero teniéndolo en el bolsillo sí.
-
-
Construir una aplicación como un servicio (como, por ejemplo, Gootaxi, que permite acceder al servicio de taxis a través del móvil).
-
Construir nuestra aplicación como una suscripción. Por ejemplo, el streaming de partidos de la NBA que ofrece el portal http://www.nba.com.
-
Movilizar una tecnología existente. Por ejemplo, un CRM.
-
Crear una aplicación que extienda un negocio "en línea", aprovechando principalmente las API públicas de Google, Twitter, Idealista, etc.
-
Aplicaciones con sistemas pay-in. Esto significa que la aplicación puede pedirte pagos a cambio de opciones de la aplicación mientras está ejecutándose. Esto puede funcionar para aplicaciones como juegos para comprar elementos que ayuden al juego, o aplicaciones de modelado para comprar elementos especiales, o aplicaciones normales que piden pagos para servicios adicionales.
-
El modelo de aplicación gratuita
-
El modelo de pago directo o indirecto
3.1.1.Modelo de aplicación gratuita

3.1.2.Pago directo o indirecto

-
Registrarnos y, generalmente, pagar para conseguir una cuenta de desarrollador que nos acredite como responsables de las aplicaciones.
-
Subir la aplicación a la tienda a través de su zona de desarrollador.
-
Superar el proceso de aprobación, lo que puede tardar días o semanas. En todas las tiendas es posible que nuestra aplicación sea eliminada en caso de causar problemas o bien de incumplir alguna de las normas de dicha tienda.


Resumen
Actividades
Glosario
- accesibilidad f
- Grado en el que las personas pueden utilizar un objeto, visitar un lugar o acceder a un servicio, independientemente de sus capacidades técnicas, cognitivas o físicas.
- API f
- Sigla de application program interface. Interfaz expuesta para ser utilizada dentro de una aplicación con el objetivo de dar acceso a librerías o funciones externas a la aplicación.
- CRM f
- Sigla de customer relationship management. Software para gestionar la relación con los clientes.
- CSS m
- Sigla de cascade stylesheet. Lenguaje usado para definir la presentación de un documento estructurado con XML o HTML.
- derivación de software m
- Modificación sobre el software original para poder adaptarse a los cambios de la fragmentación.
- device plan m
- Lista ordenada de todos los dispositivos o grupo de dispositivos que se desea soportar.
- ecosistema móvil m
- Conjunto de actores necesarios para poder tener los dispositivos móviles y finalmente las aplicaciones para estos dispositivos. En concreto, en este ecosistema se incluyen las operadoras de telecomunicaciones, los fabricantes de hardware y los elementos de software que intervienen en la ejecución de la aplicación
- escenario de una aplicación m
- Caso de fragmentación debido a una o varias de las posibles causas de fragmentación.
- fragmentación f
- Situación, o condicionantes de la situación, que no permite compartir una misma aplicación entre diferentes ecosistemas sin hacerle las adaptaciones pertinentes.
- framework de aplicaciones m
- Marco de desarrollo que permite realizar aplicaciones de manera más sencilla, ordenada y mantenible.
- fremium m
- Modelo de negocio gratuito en contraposición al modelo premium.
- ide m
- Sigla de integrated development environment. Entorno de desarrollo que incorpora todas, o casi todas, las herramientas necesarias (herramientas de modelado o diseño, herramientas de debugging, etc.).
- inverse of control m
- Patrón de diseño utilizado para definir las dependencias desde un contenedor externo.
- iOs m
- Sistema operativo para dispositivos móviles de Iphone.
- itinerancia m
- Capacidad de un dispositivo de moverse de una zona de cobertura a otra.
- Javascript m
- Dialecto del estándar ECMA Script, utilizado para dar dinamismo a las aplicaciones web.
- LBS m
- Sigla de location based service. Servicio que intenta ofrecer un valor añadido gracias al conocimiento de la ubicación geográfica del usuario.
- lenguaje de marcado o lenguaje de marcas m
- Lenguaje que estructura la información a través de marcas o etiquetas (tags).
- markup language m
- Lenguaje de marcado o lenguaje de marcas.
- mash-up f
- Aplicación que aprovecha las API existentes en la red para interactuar con datos, como puede ser la API de Twitter, o datos públicos del Estado.
- método m
- Definición de los pasos a seguir para conseguir un objetivo.
- MMS m
- Sigla de multimedia message system
- MoSoSo m
- Sigla de mobile social software. Software con una capa social añadida para aprovechar las conexiones sociales del usuario.
- OTA m
- Sigla de over-the-air. Método para distribuir actualizaciones u otras funciones accesibles a través de Internet.
- plugin f
- Aplicación añadida a una aplicación principal para ampliar y/o cambiar su funcionalidad.
- preprocesador m
- Herramienta que permite realizar cambios sobre el código con el objetivo de adaptarlo a unas necesidades específicas.
- prueba unitaria f
- Prueba que sirve para comprobar el correcto funcionamiento de una parte del código. Es recomendable que este tipo de pruebas sean automatizables, completas, reutilizables (repetibles a lo largo del tiempo), independientes entre sí y tan profesionales como el propio código.
- responsividad f
- Capacidad de respuesta de una aplicación ante las acciones de usuario.
- roaming m
- Itinerancia.
- SDK m
- Sigla de software development kit. Herramientas necesarias para poder realizar el desarrollo de aplicaciones en una plataforma.
- smart card f
- Tarjeta inteligente.
- tarjeta inteligente f
- Tarjeta con un circuito integrado de tamaño bolsillo que se puede programar con algún tipo de lógica. Un ejemplo de ello son las tarjetas de crédito con microchip.
- TDD m
- Sigla de test driven development. Desarrollo dirigido por las pruebas: antes de realizar una funcionalidad debe existir una prueba que verifique su funcionamiento.
- ubicuidad f
- Capacidad de acceder a toda la información o servicios que necesita el usuario en cualquier momento y circunstancia, a través del dispositivo que tenga actualmente.
- usabilidad f
- Facilidad con que las personas pueden utilizar una herramienta particular o cualquier otro objeto fabricado por humanos con el fin de alcanzar un objetivo concreto.
- w3c m
- Sigla de World Wide Web Consorcium. Consorcio internacional que produce recomendaciones, que no estándares, para la World Wide Web (www).
- WHATGW m
- Sigla de Web Hypertex Application Techonolgoy Working Group. Grupo formado por las empresas responsables de los principales navegadores web: Apple, Opera, Mozilla, Microsoft y Google.
- WML m
- Sigla de wireless markup languaje
- WURLF m
- Repositorio de información que permite identificar las capacidades y limitaciones de un dispositivo móvil a través de la metainformación de una petición.