Los retos del desarrollo de aplicaciones móviles

Hoy en día es casi imposible imaginarse la vida sin las aplicaciones. Estas facilitan a los usuarios un acceso rápido y cómodo y un manejo intuitivo en cualquier sitio. ¿Cómo aprovecha estas posibilidades que ofrecen las aplicaciones dentro de la digitalización de sus procesos de negocio y en los servicios prestados al cliente? A este respecto, nos gustaría hacerle las siguientes preguntas:

  • ¿Pierde clientes que se van con la competencia, porque sus aplicaciones ofrecen funciones adicionales? ¿Sus clientes piden una aplicación, porque en la actualidad disponer de los servicios en el móvil es música para sus oídos?
  • ¿Ya tiene un sitio web móvil en el que presta servicios a sus clientes, pero sus grandes ideas de funciones nuevas no se pueden implementar, ya que necesitan acceso a los sensores del dispositivo final?
  • ¿Ya dispone de una aplicación, pero no está contento con el resultado porque recibe malas valoraciones en las tiendas online por tener demasiados fallos y caerse con frecuencia? ¿Es difícil actualizar su aplicación, porque en el desarrollo que se llevaba a cabo hasta ahora se centraban más en las funciones nuevas que en la calidad del código? ¿La interfaz de la aplicación no es llamativa y sus clientes tienen problemas al usarla porque hay funciones que no encuentran? ¿Hay distintos dispositivos finales o versiones actualizadas de los sistemas operativos que experimentan problemas recurrentes tanto en el uso como la estabilidad de la aplicación?
  • ¿Fabrica un producto de hardware y querrías ampliarlo con soluciones inteligentes de software? Por ejemplo, ¿le gustaría manejar con control remoto el producto?

Una aplicación puede marcar la diferencia para su cliente. Pero no todas las aplicaciones resuelven los problemas y requisitos igual de bien. Se encuentre en la situación que se encuentres de las que hemos descrito anteriormente, tenemos experiencia en solucionar esos problemas, por lo que estamos deseando ayudarle.

Las ventajas del desarrollo de aplicaciones móviles

¿Por qué tiene que desarrollar una aplicación móvil para sus clientes? ¿No basta con tener un sitio web móvil? ¿O una aplicación web? Creemos que obtendrá el mejor resultado si dispones de una aplicación móvil para su cliente.

¿Por qué creemos que es mejor una aplicación móvil?

  • Al contrario que con un sitio web móvil, con una aplicación móvil estará mucho más cerca del cliente, que verá muchas más veces al día el icono de la aplicación de su producto en la página de inicio y se lo recordará. Así usará más los servicios que ofrece.
  • La verdadera integración del sistema se consigue únicamente con las aplicaciones móviles, por ejemplo, los widgets, notificaciones push, aplicaciones del reloj o el uso offline.
  • Con las aplicaciones móviles se tiene acceso a todas las funciones del teléfono móvil, por ejemplo, el uso del GPS en segundo plano o el acceso a los sensores instalados.
  • Por medio de las tiendas de aplicaciones, aumentará la visibilidad de los servicios que ofrece, por ejemplo, con los app-charts. Además, conseguirá un canal de marketing adicional.
  • Con una aplicación móvil logrará un rendimiento que no se logra con los sitios web móviles ni con las aplicaciones web.

Como puede ver, hay numerosos motivos a favor de desarrollar una aplicación móvil. Y precisamente a eso es a lo que vamos a ayudarle. Gracias a nuestra iteración, siempre tendrá una vista general completa, independientemente de si quiere desarrollar una aplicación nueva con nosotros o de si vamos a crear una extensión de una aplicación. En la figura siguiente, se observan nuestro procedimiento y las tareas principales durante el desarrollo iterativo de aplicaciones móviles.

Tareas principales y temas

Desarrollo iterativo de aplicaciones móviles.Fuente: representación propia

Echemos un vistazo en detalle a las tareas principales y temas que desempeñan un papel importante en ello:

UI/UX

Empecemos. Las primeras características están ya a punto; en los primeros pasos, quedarán claros los conceptos y el diseño, dado que el diseño y la experiencia del usuario son esenciales para las aplicaciones móviles. La superficie de la pantalla es limitada y los usuarios no tienen mucho tiempo. Por eso, la información se tiene que transportar rápida y claramente. Dominamos las guías de usuario de iOS y Android y las nuevas tendencias, por lo que nuestro equipo interdisciplinar desarrollará las ideas con usted para satisfacer las necesidades de sus usuarios y surtir efecto en estos.

Implantación

Una vez se hayan puesto los cimientos, hay que dar paso al desarrollo. ¿Qué puede esperar de nosotros? El diseño de una arquitectura sólida y duradera, así como una dilatada experiencia con todo tipo de desarrollo de aplicaciones. Tanto en el caso de los nativos con Swift y Kotlin, como con Crossplatform Frameworks, como por ejemplo, React Native, siempre tenemos en cuenta la tecnología más moderna. Para que el diseño de su proyecto sea lo más rentable y flexible posible, nuestros expertos en scrum titulados colaboran estrechamente con el equipo de desarrollo. Gracias a breves ciclos de retroalimentación, adaptamos la aplicación a sus desafíos actuales. Por medio de revisiones de código, nuestros desarrolladores garantizarán que se cumplen todos los requisitos de calidad, que el código es legible y se mantiene y que hemos empleado todo nuestro conocimiento en el proyecto. Y es que cuatro ojos ven más que dos.

Testeo

Sin embargo, ni de lejos terminamos con la implantación. Por supuesto, asumimos la garantía de calidad. Disfrute de nuestra experiencia en procesos innovadores para testar el funcionamiento, compatibilidad, rendimiento y seguridad; tanto el análisis estático de código como los tests automatizados en dispositivos reales. Así garantizaremos ciclos breves de desarrollo sin sorpresas desagradables.

CI/CD

Solo las funciones testadas pasan a manos del cliente. Para que todos los engranajes funcionen perfectamente apostamos por procesos automatizados de integración y distribución. Usamos infraestructuras CI/CD que garantizan estabilidad, optimizan el tiempo de desarrollo y ahorran costes. Con cada paso del desarrollo, la aplicación se somete a tests de distintos niveles. La retroalimentación se pasa directamente a los desarrolladores para que se tenga en cuenta lo antes posible. Incluso la distribución a los testers de la aplicación y la puesta en venta se efectúan por medio de procesos automatizados, lo que permite que el equipo de desarrollo se centre por completo en la ejecución de su aplicación.

Análisis

¿Se adoptará también la nueva función? Integraremos herramientas de monitorización, conforme a la legislación europea de protección de datos, para que pueda seguir el desarrollo del éxito de su aplicación. Recogeremos de forma anónima las cifras y factores de éxito más importantes. Incluso tras el lanzamiento, tendremos en mente siempre nuestros estándares de calidad. En caso de que haya problemas, reaccionaremos rápidamente concentrados en solucionarlos. Así podrá planificar pronto y al detalle los siguientes pasos: ¿será la función de comentarios o la integración de notificaciones push?

El funcionamiento del desarrollo de aplicaciones móviles

¿Cuáles son los aspectos fundamentales del desarrollo de aplicaciones? Para responder a esas preguntas, déjenos echar un vistazo a los ámbitos importantes del desarrollo de aplicaciones móviles.

Frameworks

La primera decisión de todas al desarrollar una aplicación es elegir el framework, que pone la primera piedra de la aplicación entera. Dentro de la jungla de frameworks, no es fácil decidirse, puesto que cada dos meses sale un nuevo producto prometedor al mercado. Unos confían ciegamente en el desarrollo nativo para crear la mejor aplicación posible. Otros creen claramente en las ventajas de la compilación cruzada, con la que las aplicaciones se podrán desarrollar para las dos plataformas líderes del mercado.

Pero, en general, no se ha encontrado la opción correcta o incorrecta: tanto el desarrollo nativo como la compilación cruzada tienen razón de ser con sus puntos fuertes y debilidades.

Native (Swift, Kotlin)
  • Aspecto y estilo nativos de la plataforma
  • El mejor rendimiento
  • Las nuevas funciones de la plataforma se podrán usar inmediatamente
Cross-Compiling (React-Native, Xamarin, Flutter, ...)
  • Ahorro de tiempo gracias a que la UI o la business logic
    se pueden reutilizar
  • Un equipo de desarrollo para ambas plataformas

Para que se haga a la idea de a qué cuestiones nos enfrentamos al desarrollar una aplicación móvil, a continuación, compararemos algunos frameworks importantes. También le mostraremos las ventajas e inconvenientes de los distintos tipos de desarrollo de aplicaciones, así como sus principales usos. Por supuesto, no se trata de una lista completa de todos los frameworks disponibles ni del análisis de las características. Pero sí podrá ver lo importante que es elegir el framework correcto para usted.

Comparativa de frameworks

Desarrollador
Google

Características

+ Desarrollo rápido sin conocimientos previos disponible en iOS y Android
+ Aspecto y estilo propios fáciles de implantar
+ Desarrollo rápido de aplicación para iOS y Android

– Sin UI nativo

Uso
Desarrollo de aplicaciones para principiantes.

 

Desarrollador
JetBrains

Características

+ Rendimiento nativo sin exceder el tiempo de ejecución
+ Unión de las aplicaciones nativas disponibles en una base de código conjunta
+ La lógica de negocio implementada funcionará en iOS y Android
+ Aspecto y estilo nativos de la plataforma

– Solo se utilizarán componentes compatibles con KMM

Uso
Ya existe una aplicación nativa en Android y ahora se necesita usar la plataforma iOS. Reutilización de la lógica de negocio existente.

 

Desarrollador
Apple/Google

Características

+ Aspecto y estilo nativos de la plataforma
+ El mejor rendimiento
+ Las funciones nuevas de la plataforma se podrán usar inmediatamente (Watch-Apps, widgets, etc.)
+ Acceso rápido a tecnología de terceros
+ Seguridad para el futuro

– Costoso, si se tuviera que desarrollar para ambas plataformas

Uso
Libertad máxima para cualquier tipo de caso de uso, incluida la integración profunda en el ecosistema correspondiente.

 

Desarrollador
Facebook

Características

+ Aspecto y estilo propios fáciles de implantar
+ Desarrollo rápido de la aplicación para iOS y Android
+ Gran selección de frameworks porque se permite el uso compartido de web-frameworks
+ Reutilización de sitios web, siempre que se hayan implantado en React

– La lógica de negocio funciona en un motor JavaScript, por lo que los algoritmos largos no pueden aprovecharse del rendimiento
– Instalación complicada

Uso
Creación de un aplicación compleja con diseño propio.

 

Desarrollador
Microsoft

Características

+ Amplia difusión de C# y del ecosistema de Microsoft
+ Desarrollo rápido sin conocimientos previos disponible en iOS y Android

– Opciones limitadas en las UI y acceso a las API
– Las dependencias podrían no ser compatibles con la actualización de Xamarin

Uso
Los desarrolladores de aplicaciones se sienten como en casa con C#/Microsoft.

 

Para decidir cuál es el framework correcto, no solo hay que atender a las ventajas y desventajas técnicas. Como mínimo son igual de importantes las condiciones marco y los requisitos de la aplicación. ¿Ya hay una aplicación web? ¿La aplicación necesita un diseño personalizado? ¿Se requerirá el acceso a nuevas funciones de la plataforma? Nos basaremos en todo esto para tomar la decisión y elegiremos con usted el mejor framework posible con el procedimiento adecuado.

Arquitectura

El lenguaje de programación, la tecnología y los requisitos de la aplicación influyen al elegir la arquitectura. Y el diseño de la arquitectura correcta es la disciplina reina de la creación de software. Ocurre lo mismo con el desarrollo de aplicaciones móviles, aunque al diseño de la arquitectura lo caracteriza la implantación de nuevas funciones y el mantenimiento de la aplicación durante muchos años. Al elegir el framework se dan ciertos modelos de arquitectura que se podrán emplear. En el entorno React Native, por ejemplo, se utiliza mucho Redux. Con Redux se puede implantar una arquitectura reactiva. «Reactiva» significa que los datos fluyen de forma asincrónica y que los objetos pueden reaccionar a ese flujo de datos. Esto genera un flujo de datos unidireccional por toda la aplicación.

Flujo de datos en una arquitectura reactiva.Fuente: representación propia

Un proceso como ese se podrá representar, por ejemplo, con los pasos siguientes que se ven en la gráfica de arriba:

  1. Acción: El usuario pulsa el botón de inicio de sesión
  2. Efecto: La lógica de negocio establece la comunicación con el servidor para acceder a los datos de usuario
  3. Cambio de estado: La lógica de negocio guarda datos de usuario en el modelo
  4. Representación: El cambio de estado produce la navegación a una página indicada

La ventaja de la arquitectura reactiva es que la interfaz de la aplicación está desprovista de cualquier lógica. La interfaz solo se encarga de ejecutar acciones o responder a cambios de estado asincrónicos de la aplicación. Esto permite, por ejemplo, que los componentes de la UI se reutilicen fácilmente. Además, el flujo de datos unidireccional evita que los estados de la aplicación y de la UI sean diferentes entre sí: la UI representará siempre el estado de la aplicación y no podrá modificarse directamente por medio de acciones. Asimismo, la arquitectura reactiva facilita también el testeo, porque los componentes no dependen recíprocamente. Esto permite cargar todo tipo de datos en las interfaces dentro de los tests de interfaz de usuario.

No obstante, establecer dicha arquitectura requiere la correspondiente experiencia. Para tomar las decisiones correctas, consideraremos con usted las características importantes que influyan en la arquitectura implementada:

  • La primera información la da el futuro entorno de la aplicación: ¿la aplicación administra una lista sencilla de tareas pendientes o se trata de una aplicación grande de un banco?
  • ¿Con qué claridad se separan las competencias necesarias de los componentes? Dicha separación permite el testeo independiente, por lo que es indispensable para la cobertura con tests unitarios.
  • ¿Hay solo un flujo de datos unidireccional de introducción de datos del usuario, lógica de negocio, comunicación con el servidor y pantalla del usuario? En este caso, no se podrán recuperar los componentes anteriores, lo que facilitará la conservación de la aplicación.
  • ¿Las funciones se separan en vertical de las otras? Si no fuera el caso, al añadir una nueva función quizás haya que ajustar una función existente.
  • ¿La aplicación necesita un estado central? Si se trata de una aplicación compleja, el estado central suele facilitar trabajar con ella. Si son aplicaciones simples, podría bastar con una arquitectura con componentes independientes.

En general, hay que andarse con buen ojo al elegir la arquitectura y poner en una balanza las ventajas y los inconvenientes. Hablaremos con usted sobre las cuestiones importantes para que esté contento con la arquitectura que escoja.

Testeo

Para desarrollar con rapidez, pero sin menoscabar la calidad, nos hemos orientado por la clásica pirámide de testeo. Seguimos el credo: «muchos tests rápidos y pocos tests lentos». Tratamos las diferentes fuentes de errores con cuatro tipos distintos de tests.

Pirámide de testeo en desarrollo de aplicaciones móviles.Fuente: representación propia

La base de nuestro procedimiento de testeo son las pruebas unitarias, que son rápidas, por lo que se llevan a cabo masivamente. Las pruebas se pueden escribir desde un enfoque TDD ante el código real y advertirán desde el desarrollo de que no hay errores. El alcance de la prueba es la lógica de negocio sin la interfaz de usuario, por ejemplo, el cálculo correcto del precio de un contrato.

 

Otro aspecto que tener en cuenta de las aplicaciones es la interfaz de usuario o la UI. Con las pruebas de instantánea se fotografiará una referencia de la UI como captura de pantalla. En cada ejecución se revisará si la UI actualizada se corresponde con la referencia y si se van a llevar a cabo ajustes, se podrán aplicar las referencias nuevas. Así se descubren los cambios involuntarios: la actualización de un framework que cambia el color de fondo o simplemente una persona del equipo de desarrollo que ha cometido un error. Con las herramientas que usamos tomaremos decisiones en cuestión de segundos para que no haya errores.

 

Para testar la interacción de todas las partes en un dispositivo se efectuarán tests de interfaz de usuario. Estas pruebas navegan en el dispositivo por medio de la aplicación y comprueban las opiniones de si hubo información definida previamente. El número es limitado, ya que tardan demasiado y la posibilidad de errores es alta. Con los tests de interfaz de usuario se garantizará que la aplicación se inicia o que se pueda acceder a los datos del servidor.

 

Para que el desarrollo sea ágil y rápido, hemos añadido los tests de exploración a nuestra estrategia de testeo. Al contrario que en el resto de tests, en este caso no se trata de una hoja de ruta exacta, sino de un evento que tendrá lugar con regularidad. A este acudirá un número limitado de asistentes que interviene en el desarrollo del producto para inspeccionar la aplicación, dentro de un periodo de tiempo determinado. Esto nos ayuda a encontrar fallos imprevisibles.

Por ejemplo, las animaciones que tiemblan al cambiar de vista o datos del usuario bloqueados en caso de mala conexión a Internet.

 

Pipeline de CI/CD

Al automatizarse los tests, la ejecución de la pirámide de testeo debería integrarse prácticamente sin problemas en el proceso de desarrollo. Para automatizar estos y otros pasos del proceso confeccionaremos un pipeline de CI/CD a medida del proyecto, con el fin de que el equipo se concentre totalmente en el desarrollo.

Pipeline de CI/CD para desarrollo de aplicaciones móviles de iOS.Fuente: representación propia

Para implantar el pipeline se combinarán herramientas y servicios de CI/CD para el desarrollo móvil, como Fastlane o Bitrise, con un repositorio git. El siguiente pipeline, con el que se publicará en la iOS AppStore, se implanta de esta forma sin problemas.

Observemos cada uno de los pasos al detalle en el gráfico

Una vez que el equipo haya terminado el proceso de revisión, la nueva función estará lista para su publicación. Así se iniciará automáticamente el pipeline.

 

La aplicación se creará con ayuda de Xcode y se firmará con el certificado de la AppStore y Provisioning Profile. La firma de código es un paso indispensable para lanzar una aplicación en la AppStore que garantiza que la aplicación no se ha cambiado tras la firma.

 

Se realizarán todos los tests automatizados, como los tests unitarios, tests de instantánea y tests de interfaz de usuario. Se podrán seguir usando los servicios mientras los tests se realizan al mismo tiempo en diferentes dispositivos. Estos son los posibles proveedores: AWS Device Farm o Visual Studio App Center.

 

Para detectar problemas pronto, hay que testar la aplicación minuciosamente antes de ponerla a la venta en la AppStore. Para eso, la aplicación se subirá a Testflight, donde hay testers de prestigio. Estos recibirán una notificación por cada nueva versión que podrán instalar en su dispositivo con la aplicación de Testflight.

 

Antes del lanzamiento de la aplicación en la AppStore, se podrá actualizar otra información, por ejemplo, la descripción, las notas de la versión y las claves. A continuación, se elegirá la versión que se quiera en Testflight y se iniciará el pipeline para el lanzamiento.

 

En este paso, se ejecutará una función sumamente útil: la creación automática de capturas de pantalla. En concreto, si la aplicación se ofrece en diferentes idiomas y en muchos dispositivos distintos, el número de capturas de pantalla aumentará considerablemente, incluso hasta cientos. Tras su creación automatizada, la aplicación estará disponible para descargarse de la AppStore.

 

Gracias a este grado de automatización podremos actualizar con regularidad su aplicación y reaccionar con flexibilidad. También estableceremos pipelines de CI/CD para la plataforma Android con el fin de optimizar todos los procesos: tanto guardar los certificados con seguridad como distribuir la aplicación a sus clientes. Disfrute de nuestra experiencia y conocimientos para automatizar estos procesos complejos con el fin de que usted se concentre en los requisitos de sus clientes y el equipo de desarrollo trabaje eficaz y eficientemente en las siguientes funciones importantes.

Nuestros servicios en el sector del desarrollo de aplicaciones móviles

¿Quiere desarrollar una aplicación nueva y necesita asesoramiento? ¿La aplicación que tiene ya se ha quedado obsoleta y quiere adaptarla a la nueva tecnología? ¿O necesita experiencia en determinados sectores como el testeo o CI/CD?

Estaremos encantados de ayudarle con su proyecto:

  1. En una primera reunión o taller, trataremos primero conjuntamente lo que solicita y las condiciones marco de la aplicación; a continuación, trazaremos la hoja de ruta.
  2. Seguidamente, idearemos la arquitectura y elegiremos los frameworks y tecnología adecuados para satisfacer sus necesidades.
  3. Por último, implantaremos su proyecto. Partiremos de un enfoque iterativo para mantener una estrecha y ágil colaboración con usted. Gracias al conocimiento que hemos adquirido desde el principio, este modelo le permitirá también encauzar la dirección del proyecto durante la realización.

Deje boquiabiertos a sus clientes con la aplicación perfecta. Estaremos encantados de ayudarle a conseguirlo.

Your direct contact

Novatec_Markus-Mueller

Markus Müller

Director Digital Product Development
Table of contents
Su persona de contacto Markus Müller Director Digital Product Development
Novatec_Markus-Mueller