Metodología para desarrollo de soluciones móviles.



Para generar una solución móvil debemos elegir la metodología de desarrollo de software que nos garantice lograr en gran medida los alcances planteados en la estrategia y entregar una solución de altísima calidad. En la actualidad se cuenta con varias metodologías ampliamente usadas en la industria tales como RUP(Rational Unified Process), MSF(Microsoft Solutions Framework), Waterfall model entre otros, pero al momento de elegir la mejor para una solución móvil se debe tener en cuenta que los escenarios y los requerimientos cambian con respecto al desarrollo de software tradicional. Condiciones especiales tales como:
  • Canal radio: consideraciones tales como la disponibilidad, las desconexiones, la variabilidad del ancho de banda, la heterogeneidad de redes o los riesgos de seguridad han de tenerse especialmente en cuenta en este entorno de comunicaciones móviles. 
  • Movilidad: aquí influyen consideraciones como la migración de direcciones, alta latencia debido a cambio de estación base o la gestión de la información dependiente de localización. Sobre esta última, de hecho, se pueden implementar un sinfín de aplicaciones, pero la información de contexto asociada resulta muchas veces incompleta y varía frecuéntemente. 
  • Portabilidad: la característica portabilidad de los dispositivos terminales implica una serie de limitaciones físicas directamente relacionadas con el factor de forma de los mismos, como el tamaño de las pantallas (algo que ha variado sustancialmente con la popularización de las pantallas táctiles), o del teclado, limitando también el número de teclas y su disposición. 
  • Fragmentación de la industria: la existencia de una considerable variedad de estándares, protocolos y tecnologías de red diferentes añaden complejidad al escenario del desarrollo móvil. 
  • Capacidades limitadas de los terminales: aquí incluimos factores como la baja potencia de cálculo o gráfica, los riesgos en la integridad de datos, las interfaces de usuario poco funcionales en muchos aspectos, la baja capacidad de almacenamiento, la duración de las baterías o la dificultad para el uso de periféricos en movilidad. Factores todos que, por otro lado, están evolucionando en la dirección de la convergencia de los ultraportátiles (netbooks) con los dispositivos inteligentes (smartphones) constituyendo cada vez menos un elemento diferencial. 
  • Diseño: desde el punto de vista del desarrollo, el diseño multitarea y la interrupción de tareas es clave para el éxito de las aplicaciones de escritorio; pero la oportunidad y frecuencia de éstas es mucho mayor que en el software tradicional, debido al entorno móvil que manejan, complicándose todavía más debido a la limitación de estos dispositivos. 
  • Usabilidad: las necesidades específicas de amplios y variados grupos de usuarios, combinados con la diversidad de plataformas tecnológicas y dispositivos, hacen que el diseño para todos se convierta en un requisito que genera una complejidad creciente difícil de acotar. 
  • Time-to-market: en un sector con un dinamismo propio, dentro de una industria en pleno cambio, los requisitos que se imponen en términos de tiempo de lanzamiento son muy estrictos y añaden no poca dificultad en la gestión de los procesos de desarrollo. 
Bajo este escenario la industria de desarrollo móvil ha adoptado las metodologías ágiles como las apropiadas para ser aplicadas, esto debido a que las propiedades de la metodología ágil se alinean a las necesidades de la construcción de software móvil. Recordemos los pilares básicos de las metodologías ágiles:
  • El individuo y las interacciones del equipo de desarrollo están por encima del proceso y las herramientas. Construir un buen equipo y que éste configure su propio entorno de desarrollo en base a sus necesidades. 
  • Desarrollar software que funciona más que conseguir buena documentación. No producir documentos a menos que sean necesarios de una forma inmediata. Si el software no funciona, los documentos no valen de nada. 
  • La colaboración con el cliente es más importante que la negociación de contratos. Tiene que haber una interacción constante entre el cliente y el equipo de desarrollo. 
  • La respuesta ante el cambio es más importante que el seguimiento de un plan. La planificación no debe ser estricta sino flexible y abierta, la habilidad de responder a los cambios que surjan determina el éxito o fracaso del proyecto.

Dentro de la opciones de metodologías ágiles tenemos: 
Adaptative Software Development, Agile Modeling, Agile Model Driven Development , Agile Project Management, Agile UnifiedProcess, Crystal Methods, Dynamic Systems development methods, Feature driven development, Internet Speed Development, Lean development, Pragmatic programming, Scrum, Test Driven Development, XBreed, Extreme Programming, Win Win Spiral, Evolutionary Project Management, Story cards driven development, Agile Unified Process, Open Unified Process.
De las cuales para desarrollo móvil han sido acogidas: 
Agile Modeling, Scrum, Extreme Programming, Rapid Action Development Model (RAD), Mobile-D.
La propuesta de metodología Agile-SCRUM para desarrollo de soluciones móviles cumple con las propiedades necesarias para este tipo de soluciones. Consiste de diferentes fases llamadas:
Fase 1: Análisis de requerimientos.
Fase 2: Diseño y Desarrollo.
Fase 3:  Test y QA.
Fase 4: Aceptación del producto.
Fase 5: Publicación (Release to Market).

Cuando un cliente demanda una solución móvil, el concepto de App es madurado en la Fase 1. En esta fase se incorpora el análisis de mercado y análisis de restricciones físicas (arquitectura e ingeniería) de los dispositivos móviles. Estas fases son vitales para mitigar la incertidumbre y riesgos  a nivel técnico (prometer algo inalcanzable tecnológicamente). La fase 2 y 3 que corresponden al diseño, desarrollo y pruebas de calidad son ejecutadas bajo el marco propio de la metodología SCRUM a través de los Sprints y sus elementos principales (taskboard, Scrum diario, planificación de release, entre otros). Al mismo nivel de la fase 2 se conserva el concepto de Re-uso de componentes o integración a un set de librerías base. La fase 4 marca el cierre de cada Sprint y la retroalimentación o retrospectiva.  La fase 5 es un paso importante de validación en el cual se confirma la aceptación del producto. Si los requerimientos el cliente se han cumplido satisfactoriamente se lleva a cabo la publicación de la versión estable en las tiendas oficiales o internas. Si el producto no es aceptado se inicia una segunda iteración desde la fase 1 pasando por otro ciclo sprint.
Usar la metodología de desarrollo Agile-SCRUM no únicamente provee adaptabilidad y flexibilidad al cambio continuo de requerimientos si no también ofrece un modelo de trabajo estricto y programado para los equipos. Entre otras ventajas se tiene las siguientes acciones:
  • Minimizar los riesgos del proyecto.
  • Mejorar previsibilidad, flexibilidad y adaptabilidad.
  • Garantizar la producción de software de alta calidad.
  • Mejorar visibilidad del proyecto.
  • Generar versiones de la aplicación a tiempo (on-time).
Referencias:

Shakira Banu Kaleel, Ssowjanya Harishankar - Toronto Canadá.
- Paco Blanco, Julio Camarero, Antonio Fumero, Adam Werterski, Pedro Rodríguez - Madrid España

Thanks for your comment