Hola Comunidad,

Tal y como les comenté en el evento de lanzamiento de la comunidad MUGVenezuela, hace varias semanas estaba pensando en construir un proyecto comunitario, donde puedan (y lo deseen :)) intervenir miembros activos de la comunidad, para juntos poder desarrollar aplicaciones que tuvieran uso cotidiano no comercial y que fueran de alcance local/regional. Sobre esta base, y aprovechando el momento que esta viviendo America Latina por la "Copa America Argentina 2011", me decidí por proponer desarrollar una aplicación de tipo móvil, que consumiera servicios de datos estándares en la nube (XML / JSON y preferiblemente en Windows Azure) para que estos servicios pudieran ser utilizados ademas por otras plataformas móviles (Android / IPhone). Además, una de las visiones iniciales del proyecto es que también se desarrollen servicios para que la data pueda ser actualizada, previa validación de credenciales y seguridad, desde una interfaz simple como Microsoft Excel, utilizando servicios OAuth / OData para tal fin.

Dada la visión anterior, a continuación expongo los siguientes supuestos (premisas) sobre los cuáles la aplicación deberá desarrollarse:

  1. La aplicación tendrá 4 componentes físicos: a) cliente móvil, b) componentes del servidor (librerias), c) componentes de seguridad (cliente y servidor) y, d) base de datos (servidor)
  2. La aplicación cliente móvil solo consumirá datos. No procesará información (procesamiento local).
  3. La aplicación deberá mantener un bajo consumo de procesamiento gráfico (optimizar el rendimiento de la aplicación)
  4. La aplicación cliente móvil almacenará información recibida en su inicio para configuración y carga de los torneos.
  5. La aplicación solicitará configuración (selección inicial) del equipo a seguir (equipo favorito de fútbol)
  6. La aplicación validará que el dispositivo tiene capacidades de conexión de datos. Si la validación es positiva, la aplicación se comunicará con el servidor. Si la validación es negativa la aplicacíón utilizará la data almacenada previamente (configuración inicial)
  7. La aplicación será diseñada para ser multi-lenguaje (utilización de recursos)
  8. La aplicación asume que el servidor siempre tendrá la data actualizada, por lo tanto, si la validación de red se confirma como positiva, la aplicación intentará conectarse con el servidor para actualizar los datos almacenados
  9. El modelo de datos deberá diseñ*** de manera tal que puedan consultarse tanto el torneo actual como torneos anteriores (Apertura / Clausura / Copa Venezuela)
  10. El modelo de datos deberá diseñ*** para ser óptimo en rápidez de respuesta.

(Creo que no me falta nada :) - de todas formas, si desean agregar premisas sobre estas suposiciones iniciales, me escriben!!)

Ahora, sobre las premisas iniciales, diseñe este modelo simple para poder proporcionar una base inicial de arquitectura:

El diseño lo hice simple para que se comprendiera la naturaleza del proyecto. Ahora bien, como se observa en el diseño y basado en las premisas, tenemos dos (2) clases de componentes: a) componentes del cliente móvil y b) componentes del lado del servidor. Hablemos un poco sobre esto. Básicamente, lo que se requiere para este proyecto es que: a) el dispositivo pueda almacenar y recuperar información que será accesada mediante un conjunto de servicios en la nube, b) que el dispositivo pueda validar la información que almacenó o que esta recuperando desde los servicios en la nube y, c) que el servidor pueda conectarse y recuperar datos desde una base de datos (puede ser local o remota). Para esto, cree un diagrama de secuencia simple:

Ahora bien, este diagrama presenta el intercambio de mensajes (llamadas) que deberían existir entre los componentes físicos.Sin embargo, nos falta ahora entender como debemos arquitectar los componentes entre sí (no voy a aplicar el uso de patrones en esta primera etapa, ya que quiero hacerlo con la comunidad para mejorarlo en una segunda versión). Básicamente, me imagino los sigiuentes componentes a desarrollar para esta aplicación:

Con esta idea inicial, podemos comenzar a crear prototipos sobre como lucirá la aplicación en el disposito móvil. Para eso utilizaré el proyecto SketchFlow Template for Windows Phone. Pero eso lo haremos en la próxima parte.

Estamos en contacto!

Nestor Guadarrama

Gerente de Programas para Empresas de Desarrollo de Software