Cuando hablamos de apps móviles reconocemos que es la tendencia en cuanto a desarrollo. En la actualidad, el mercado de móviles crece de forma exponencial, y va de la mano con etapas anteriores, según estadísticas 60% en 2018. Sin embargo, no todas las apps funcionan de forma correcta (problemas con el UI, el uso de ciertas funcionalidades) por ello el mercado demanda la mejor mano de obra posible y en este blog les explicaremos los aspectos más importantes a considerar antes de desarrollar un app móvil.
El primer punto aplica para cualquier proyecto web o móvil y si eres una empresa de desarrollo de software debes definir por lo menos una. Definir el planning del desarrollo o la metodología que utilizará durante el proyecto es básico. Entre las metodologías más utilizadas está el modelo SCRUM, realizando reuniones de forma periódica, desde el SetUp del proyecto; esto permite estar conectado con el cliente, definiendo los entregables y las líneas de tiempo en cada punto de proyecto.
Este aspecto es fundamental si quieres sacarle el máximo provecho a tu app movil, se debe tomar en cuenta el sistema operativo. Lo que diferencia Android e IOS es la utilización del recurso que te ofrece el SO, por ejemplo, si desarrollamos una app nativa tendrás todo el abanico de posibilidades y funciones que te ofrece Android y IOS, cómo usar la cámara, manejar archivos, entre otros aspectos relacionados al SO o el Hardware.
Pero cuidado, esto no quiere decir que una app híbrida no lo pueda hacer, tenemos el caso de Instagram que es una app totalmente híbrida y utiliza todos estos recursos; simplemente hará el proceso de desarrollo más largo y tedioso, la recomendación es elegir lo que mejor se adapte a los requerimientos y si se puede hacer nativa pues mejor.
Este punto va relacionado al anterior, una vez elegida la plataforma sobre la que trabajaremos, se debe seleccionar el lenguaje o frameworks que a utilizar. En el caso de IOS tenemos que recomendar Swift (si se desarrollará una app nativa) porque se ha convertido en el lenguaje oficial para desarrollar aplicaciones en iOS.
Por otro lado, en Android, tenemos Kotlin, un lenguaje de programación que corre sobre Java y que también puede ser compilado a código fuente de JavaScript. Y ¿Por qué se recomienda desarrollar sobre Kotlin? Debido que la tendencia es utilizar este lenguaje y no Java como tradicionalmente se venía haciendo, además que que hace unos años Google lo nombró lenguaje oficial para SO Android por lo que puede suceder el mismo caso de Swift.
¿Apps híbridas? Además de otros factores como la lógica de negocios y el budget para desarrollar una app, seguramente querrás que tu app se hibrida. Aqui si hay mucho de donde escoger, uno de los favoritos de la comunidad son los frameworks como React Native, Ionic, Xamarin hasta Flutter, en este caso el desarrollador se inclinara por el tipo de proyecto que se le presente y la framework que mejor le permita trabajar.
Este es un punto de lo más controversial e importante a la hora de desarrollar un app, por lo que no es entendible que muchas agencias omitan este punto simplemente para no tomarse el tiempo de bosquejar cada una de las pantallas que conformará la app. El proceso es sencillo:
- Primero, con lápiz y papel diseñar cada una de las ventanas de la app.
- Segundo, con Adobe Photoshop u otra app, plasmar el diseño.
- Por último, el workflow + diseño, definiendo color diseño, estilo y forma de cada pantalla.
Esto es muy importante porque agilizar el proceso de desarrollo, el developer solo se tendrá que preocupar por replicar el diseño de wireframe y luego tocar la lógica del negocio. Este proceso lo lleva a cabo un diseñador gráfico, especialista en desarrollo de páginas web o apps móviles.
Otra opción que te ayudará a ahorrar mucho tiempo existe Balsamiq Wireframe, que es una app de escritorio que te permite crear wireframe geniales de forma sencilla, omitiendo un proceso algo anticuado. La gran ventaja de utilizar herramientas como esta, es que agrupará tus templates genéricos en una sola plataforma, sin mencionar de los miles de opciones que te ofrece la comunidad.
Definir la arquitectura en Android es muy importante, para desarrollo de apps existen varias, desde la MVC, MVVM, hasta la MVP. Básicamente, esta es la razón de ser de tu aplicación móvil, aquí defines como se van a comportar los objetos, los tipos de vistas que estarán disponibles, el modelo de negocios y cómo se comunican las diferentes componentes o capas dentro de la app.
Modelo Vista Controlador (MVC) esta arquitectura separa los datos de una aplicación, la interfaz de usuario, y la lógica de control en tres componentes distintos.
- El Modelo que contiene una representación de los datos que maneja el sistema, su lógica de negocio, y sus mecanismos de persistencia.
- La Vista, o interfaz de usuario, que compone la información que se envía al cliente y los mecanismos interacción con éste.
- El Controlador, que actúa como intermediario entre el Modelo y la Vista, gestionando el flujo de información entre ellos y las transformaciones para adaptar los datos a las necesidades de cada uno.
Modelo Vista Presentador (MVP) es similar al patrón MVC. Se deriva del patrón MVC, en el que el controlador es reemplazado por el presentador.
- El Modelo representa un conjunto de clases que describen la lógica y los datos del negocio. También define reglas de negocio para los medios de los datos cómo los datos pueden ser cambiados y manipulados.
- La Vista es un componente que interactúa directamente con el usuario como XML, Actividad, fragmentos. No contiene ninguna lógica implementada.
- El Presentador recibe las entradas de los usuarios a través de la vista y a continuación, procesa los datos del usuario con la ayuda del modelo y devuelve los resultados a la vista. El presentador se comunica con la vista a través de la interfaz. La interfaz se define en la clase de presentador, a la que pasa los datos requeridos.
Modelo Vista Vista Modelo (MVVM) esta arquitectura separa el UI de la lógica de negocio. En la imagen podemos ver las tres partes en las que se divide esta arquitectura:
- El Modelo es la parte donde vamos a ver todo lo que serían las lógicas de los datos.
- La Vista Modelo que va a ser la encargada de interactuar tanto con el modelo como con la vista.
- La Vista que va a ser la parte visual.
Elegir la arquitectura es de suma importancia, y todas tiene su parecido, la diferencia radica en la forma en la que se comunican las capas que la integran entre sí. Elegir la arquitectura definirá como organizaras el código, para evitar manejar las clases juntas.
En este caso particular, no hay un modelo específico para cada SO, todo depende de lo que necesites y definir un modelo puede ayudar bastante para entregar el proyecto de forma correcta, sin embargo, la tendencia es utilizar la arquitectura MVP.
¡Y ya está! Esto son 5 aspectos que debes (si o si) tomar en cuenta antes de desarrollar un app, es muy importante en caso de que estés buscando una agencia para desarrollar tu app, como Rootstack, plantearse todo este panorama, recordando que cada proyecto suele ser diferente y estamos seguros que con los tips brindados en este post podrás elegir con más facilidad.