Implementación

image post

La arquitectura del sistema está sostenida en la utilización de un servidor que posea el servicio de transferencia de archivos mediante ssh, con autentificacion por contraseña. La aplicación está desarrollada por completo en el lado del host. La principal característica es que el usuario no necesita preocuparce de su servidor pues en apariencia la información es enviada directametne de host a host.

Host

     
     El software desarrollado para el host consta de 3 pilares fundamentales.

GUI: La interfaz gráfica es la encargada de interectuar con el usuario, perminitendole revisar su lista de contactos o configurar su cuenta en el servidor utilizado. Está interfaz tambien posee un sistema de notificacines en la barra de tareas, enviando un mensaje al usuario cada vez que se ha efectuado correctamente una sincornización.

Agenda: Es un programa open-source utilizado por la GUI para mostrar los contactos de la agenda telefónica.

Cliente SSH: Programa open-source para windows encargado de enviar y recivir arrchivos desde y hacia el servidor cuando se requiere.

Arquitectura de Programación

image post

El sistema está programado en C++ utilizando las librerias de QT4, que implementan una interfaz de usuario atendida por eventos, así  la ejecución de cada evento es manejada por funciones independientes de forma análoga a una interrupción.

 La ejecución inicial despliega una imagen (splash) publicitaria, lugo el sistema se separa en 3 hebras que tienen por funcion:

Hebra principal: Manejo del GUI

Hebra servidor: Revisa constantemente en busca de cambios en el sistema de archivos en caso de necesitar enviar/recivir hacia/desde el servidor genera un nuevo proceso con la indicaciones necesarias para que el cliente ssh efectue la transferencia con el servidor.

Hebra de notificación: Es la encargada de desplegar los mensajes informativos en la barra de tareas. 

¿Por qué lenguaje QT?     

Las librerías de QT permiten manejar de forma simple interfaces gráficas atractivas, ya que posee caracteristicas de manejo 3D y mucha libertad de desarrollo. El lenguaje de programación es C++ por lo que continua siendo muy cercano y no requiere de mucho tiempo de entrenamiento.

 Finalmente la decisión fue tomada por que genera código nativo para multiples plataformas sin hacer ningún cambio, permitiendo asi tener aplicaciones orientadas a objetos mucho más eficientes en tiempo de ejecución y sin restricciones de estructura.