Softphone para Android: tecnologías que utilizamos

El softphone para Android anunciado recientemente es un desarrollo lógico y una ampliación largamente esperada de nuestra gama de productos: ahora incluye no sólo soluciones Win y Mac sino también versiones móviles.

Mientras tanto, la lógica general sigue siendo la misma, es una arquitectura cliente-servidor de dos niveles. Tampoco hay cambios cruciales en cómo organizamos nuestro proceso de desarrollo: almacenamos y mantenemos el código, así como también probamos las compilaciones antes de los lanzamientos para garantizar la calidad.

Aquí hablamos de cómo van estos procesos en nuestro equipo.

Enfoque de desarrollo

Al trabajar en la aplicación Android, seguimos el método MVVM (Model-View-ViewModel) y separamos el desarrollo de una interfaz gráfica de usuario (GUI) del desarrollo de la lógica empresarial o lógica de back-end. Esto implica pruebas de módulos (pruebas unitarias), y esto es una gran ventaja. MVVM es reconocido como uno de los enfoques más populares para el diseño de aplicaciones cliente, especialmente en situaciones que sugieren Model-View-Controller (MVC) o Model-View-Presenter (MVP, no confundir con producto mínimo viable 🙂).

Esperemos que nuestros lectores nos perdonen si les contamos brevemente cuáles son los componentes y de qué son responsables.

Model:
La tarea clave es asumir el control del contenido y la lógica del negocio.

View:
Este componente es para la interacción con un usuario y la visualización del contenido mencionado anteriormente y proporcionado por el Model.

ViewModel:
Es un intermediario entre el Modelo y la Vista: transforma los datos del Modelo en formato para su posterior visualización en la Vista y maneja la interacción del usuario (los envía al Modelo).
Lea más aquí.

Ahora volvamos al tema.


Así es como se ve MVVM

Así es como se ve MVVM

En pocas palabras, el resultado es una mejor legibilidad del código y posibilidades de escalamiento, y es por eso que el enfoque MVVM se usa ampliamente para desarrollar programas con GUI, como aplicaciones web y aplicaciones de escritorio/móviles (¡nuestro caso!).

La parte de cliente, la parte de servidor

El lado cliente de Softphone.Pro está escrito en Kotlin. Es un lenguaje de programación orientado a objetos y de tipado estático que se ejecuta sobre una máquina virtual Java (JVM). Por lo tanto, Kotlin es totalmente compatible con Java; además, las clases Kotlin y Java pueden llevarse bien en un solo paquete, y eso es genial.

Un dato curioso: el lenguaje Kotlin recibe su nombre en honor a la isla Kotlin, situada en la bahía finlandesa. A nosotros, los verdaderos programadores, nos encantan los easter eggs como este (se dice que el lenguaje Java también recibió su nombre en honor a la isla homónima). Tal vez algún día exista una isla con nuestro nombre. ¿Por qué no? :)

En cuanto al lado del servidor, diríamos que hay dos... sí, puede sonar sorprendente. El problema es que, de hecho, el softphone requiere un despertador (PUSH) para activarse en el momento de la llamada entrante, de lo contrario, la llamada se pierde y no tiene sentido la movilidad en sí. Además, hay un panel de control para el supervisor (Team) donde pueden analizar las llamadas y monitorear lo que sucede en tiempo real.

Tanto Team como PUSH están escritos en Go (también conocido como GoLang, ¡no lo confundas con Go!), un lenguaje compilado y multiproceso desarrollado por Google. Go admite estilos funcionales y orientados a objetos. Nos gusta Go por su simplicidad, programación multiproceso, multiplataforma y rápida velocidad de compilación, y esto es lo que nos une con Uber, Dropbox, American Express, BBC... suficientes nombres importantes:)

En pocas palabras, el cliente y el servidor se pueden describir con unas pocas palabras: Java, Kotlin, Go. Suena como un lema que afirma la vida... y se ve bien.


Las Gracias. ¡Un gran clásico!

Las Gracias. ¡Un gran clásico!

Pruebas y mantenimiento

Ya hemos mencionado las pruebas de módulos en la primera parte del artículo. En nuestro caso, se ejecutan mediante el controlador WinAPI y scripts de Python. Se trata de un proceso de tres pasos: confirmación, pruebas automáticas y notificaciones.

Junto con esto se realizan las pruebas de regresión (para asegurarse de que todo sigue funcionando bien después de agregar una nueva característica o corregir un error). Y, por supuesto, también se aplican las pruebas de integración y las pruebas del sistema: las primeras son necesarias para verificar la interacción del módulo, las segundas para verificar cómo interactúa la aplicación con su entorno (sistema operativo, red, etc.).

Como el código de cualquier otro desarrollador, el nuestro parece un árbol en expansión: por supuesto, no podemos prescindir de un sistema de control de versiones. En nuestro caso, se trata de Git con una interfaz gráfica llamada TortoiseGit (aunque hay personas de la vieja escuela que prefieren bash). Para el almacenamiento, utilizamos Redis y PostgreSQL.

Como ves, la tecnología es valiosa, por lo que el producto también es bueno. Y, por cierto, está 100% listo para etiquetar: tu marca, tus colores, tu logotipo. Así que si buscabas un softphone Whitelabel para Android, ya lo tienes. Si lo necesitas, ya sabes qué hacer. (Solo tienes que avisarnos y enviarnos un mensaje a info@softphone.pro 😉)


Buen código para todos 📱

TAMBIÉN TE PUEDE INTERESAR

Blog Softphone para Android: ¿dejarlo dormir o no dormir?

Blog Softphone móvil apto para White Label: cómo lo hicimos

Blog Softphone en realidad: lo que dice la gente

Help How to improve SIP call quality


Últimos artículos