Proyecto AppInventor

De Wiki Tecnologías de Inteligencia de Negocio.
Saltar a: navegación, buscar
Proyecto AppInventor
Proyecto AppInventor
Miembros Óscar Delgado Miranda
Kevin Jesús Valle Gómez
Curso Académico 2015/2016
Keywords Pentaho, Android

Resumen

App Inventor es un entorno de desarrollo de aplicaciones para dispositivos Android. Para desarrollar aplicaciones con App Inventor sólo necesitas un navegador web y un dispositivo con Android (si no lo tienes tendrás que probar tus aplicaciones en un emulador). App Inventor se basa en un servicio web que te permitirá almacenar tu trabajo y te ayudará a realizar un seguimiento de sus proyectos.

Se trata de una herramienta de desarrollo visual muy fácil de usar, con la que incluso los no programadores podrán desarrollar sus aplicaciones.

Al construir las aplicaciones para Android trabajarás con dos herramientas: App Inventor Designer y App Inventor Blocks Editor. En Designer construirás el Interfaz de Usuario, eligiendo y situando los elementos con los que interactuará el usuario y los componentes que utilizará la aplicación. En el Blocks Editor definirás el comportamiento de los componentes de tu aplicación.

Slides de presentación del proyecto: Archivo:DummyDSL.pdf

Proceso de Desarrollo

El desarrollo de este proyecto ha sido posible siguiendo una metodología SCRUM. Planificando varios "sprint" abarcamos todas las tareas necesarias para llegar al estado final del proyecto. Esta planificación ha sido desarrollada con el objetivo de cumplir los plazos de entrega establecidos en la asignatura Tecnologías de Inteligencia de Negocio, contemplando con tiempo suficiente la prueba y mejora de las distintas partes del proyecto. En el siguiente diagrama de Gantt puede verse la planificación acordada teniendo en cuenta las limitaciones establecidas y las reuniones necesarias.

GanttAPP.PNG

  • Se contemplan reuniones necesarias pero sin fecha.
  • Se realizará una reunión del grupo obligatoria todos los viernes a las 10:00h, si fuese necesario reunirse fuera de este horario se comunicaría con antelación a todo el grupo.

Asignación de tareas

Al ser un grupo compuesto de solo dos personas, ambos miembros están comprometidos con el desarrollo completo del proyecto, ayudándose con cualquier problema que surja. No obstante, esta es la asignación inicial de tareas:

  • Óscar: Coordinación de proyecto y análisis de modelo de datos.
  • Kevin: Desarrollo del ETL y cubos OLAP.

Las tareas de Cuadros de Mandos e Informes se repartirán equitativamente teniendo en cuenta los conocimientos de cada integrante.

Análisis de requisitos

Necesidades

Los datos están extraídos directamente de las bases de datos de APP Inventor. APP Inventor es una utilidad que permite crear aplicaciones para la plataforma Android sin necesidad de grandes conocimientos técnicos, sirviendo además como primera toma de contacto con la lógica seguida en la programación en general.

Con los datos extraídos se pretende generar informes que muestren información estadística -necesidad actualmente no cubierta-, como pueden ser: módulos más utilizados por los usuarios, rango de edad de usuarios activos, cantidad de aplicaciones media por usuario, etc.


Arquitectura del proyecto

ArquitecturaAPPInventor.png


Modelo de datos de origen

ModeloOrigen.png


Modelo de datos de destino

ModeloDestino.png


Métricas a analizar

Métrica 1: Dado un usuario, queremos conocer los proyectos en los que se encuentre implicados y los elementos del mismo (pantallas, bloques y componentes)

Métrica 2: Dado una pantalla de un proyecto determinado y un tipo de bloque, queremos conocer cuántos bloques de ese tipo contiene.

Métrica 3: Dado una pantalla de un proyecto determinado, y un componente, queremos conocer el número de veces que aparece ese componente en esa pantalla del proyecto.

Documentación Técnica

En esta sección se incluirá toda la documentación asociada al ciclo de vida de desarrollo del proyecto: diseño, implementación, pruebas e instrucciones de despliegue/uso.


Ejecución del Job

En este trabajo, vamos a realizar una llamada secuencial a todas nuestras transformaciones: EjecucionTotal.PNG

Creación del data warehouse

En esta transformación, vamos a comprobar si las tablas de nuestra base de datos existen (tanto las tablas de dimensiones como las tablas de hechos), en el caso de que alguna no existiera, se hará una llamada al script SQL correspondiente para crearla. CargaDW.PNG

ETL de la tabla de tiempos

En esta transformación se realiza la carga de la tabla de la dimensión tiempo.

CargaTablaTiempo.PNG

ETL de la tabla usuarios

En esta transformación se realiza la carga de la tabla de la dimensión usuario. Gracias a un servicio web, se hace la petición, seleccionamos los atributos deseados de los usuarios y los introducimos en su correspondiente tabla del data warehouse.

Usuarios.PNG

ETL de la tabla proyectos

En esta transformación se realiza la carga de la tabla de la dimensión proyecto. Mediante un servicio web que nos proporcionaba todos los proyectos del sistema, adquirimos todos sus atributos, seleccionamos los deseados y los insertamos en su tabla correspondiente.

Proyectos.PNG

ETL de los proyectos de los usuarios

En esta transformación se establece la relación entre usuario/proyecto gracias a un servicio web, el cual en su url recibe como parámetro la id del usuario y nos devuelve sus proyectos.

ProyectoUsuario.PNG

ETL de la tabla pantallas

En esta transformación se realiza la carga de la tabla de la dimensión pantalla. Para poder acceder a los atributos de las pantallas en su correspondiente servicio web, se necesita la id del usuario (las cuales ya tenemos de una transformación anterior en sus correspondiente tabla), para formar la url del servicio web mediante el cual acceder a los proyectos de un determinado usuario. Y una vez que tenemos las id's de los usuarios con sus proyectos podemos construir las urls del servicio web donde acceder a la información de las pantallas.

Pantallas.PNG

ETL de la tabla bloques

En esta transformación se realiza la carga de la tabla de la dimensión bloques. Funciona de manera análoga a la transformación para cargar la tabla pantalla, exceptuando al final, donde se accede a los datos específicos de los bloques.

Bloques.PNG

ETL de la tabla categorías

En esta transformación se realiza la carga de la tabla de la dimensión categorías de los bloques. En esta transformación accedemos a una hoja de calculo en formato .xls, del cual leemos las 2 columnas que poseen el tipo de los bloques y a la categoría a la que pertenecen.

Componentes xls.PNG

ETL de la tabla componentes

En esta transformación se realiza la carga de la tabla de la dimensión componentes. Para poder acceder a los atributos de los componentes en su correspondiente servicio web (que es el mismo servicio web de que utilizamos en la dimensión de las pantallas), se necesita la id del usuario (las cuales ya tenemos de una transformación anterior en sus correspondiente tabla), para formar las urls del servicio web mediante el cual acceder a los proyectos de un determinado usuario. Y una vez que tenemos las id's de los usuarios con sus proyectos podemos construir las urls del servicio web donde acceder a la información de las pantallas. Una vez que hemos accedido a las pantallas, podemos obtener los datos de los componentes, los cuales guardaremos en su tabla correspondiente.

Componentes.PNG

ETL de la tabla de hechos

En esta transformación se realiza la carga de las diferentes tablas de hechos de nuestro data warehouse, extrayendo los datos necesarios de las diferentes tablas de dimensiones implicadas, se procesan de la manera deseada y se guardan en su correspondiente tabla de hechos.

CargaTablaHechos.PNG

Dashboards

En el siguiente cuadro de mando, podemos seleccionar el usuario que deseemos, y podremos ver de todos sus proyectos el número de bloques, pantallas y componentes utilizados en dichos proyectos.

Cuadro1.PNG


En el siguiente cuadro de mando, podemos seleccionar el proyecto que deseemos, y podremos ver los tipos de bloques utilizados y cuantos. Y un poco más abajo, se podrá ver de ese mismo proyecto, que componentes y cuantos se han utilizado por pantalla.

Cuadro2.PNG

Reports

En el siguiente tipo de informe, dado un proyecto determinado, mostrar el tipo de componentes y cuantos utilizados en cada pantalla del proyecto.

Informe1.PNG

En el siguiente tipo de informe, dado un usuario determinado, mostrar de cada proyecto, el número total de bloques, pantallas y componentes utilizados.

Informe2APPInventor.PNG

Y en este ultimo tipo de informe, dado un proyecto determinado, mostrar de cada tipo de bloque, cuantos se han utilizado en total en el proyecto.

Informe3APPInventor.PNG

Pruebas

Se han realizado una serie de comprobaciones para ver que el funcionamiento del proceso es el correcto.

  • Se ha comprobado que las tablas se han creado correctamente en la base de datos tras la transformación correspondiente.
  • Se ha comprobado que la formación de URL en los procesos ETL se corresponde con las URL necesarias.
  • Se ha comprobado que la transformación de los datos recibidos se realiza de manera correcta.
  • Se ha comprobado que los datos recibidos desde los servicios web se corresponden con lo esperado.
  • Se ha comprobado en los cuadros de mando, además de que la información es correcta, que las gráficas se corresponden con los datos que se representan.
  • Se ha comprobado que la navegación entre cuadros de mandos se realiza correctamente.
  • Se ha comprobado en los informes que ninguno de los valores es erróneo, así como que se muestran todos los datos correctamente.
  • Se ha comprobado que toda la información resulta fácilmente legible.
  • Se ha comprobado que el funcionamiento de las variables en las consultas es el correcto.
  • Se ha comprobado que todos los componentes pueden ser desplegados sin realizar más configuración que la indicada.

Instrucciones de despliegue y uso

Para desplegar el presente proyecto, es necesario cumplir una serie de requisitos mínimos:

- Java versión 7 o superior

- Sistema de gestión de bases de datos (recomendado XAMPP)

- Suite Pentaho Community Edition 6.1 (No compatible con 6.0.1)

- Plugin Saiku


En primer lugar, es necesario descargar todo el contenido del repositorio GitHub mencionado en esta página.

Una vez haya desplegado todas las herramientas que ha descargado, será necesario crearse una base de datos vacía que se llame, "proyectotin".

Cuando iniciemos "Spoon", hay que definir la variable de entorno con el puerto en el que tenemos corriendo la base de datos del localhost, esto se hace en Edit -> Set environment variable y ahí definimos la variable "puerto" (por ejemplo, MySQL por defecto corre por el puerto 3306)

Y finalmente habra que ejecutar el Trabajo "EjecucionTotal", que se encargará de crear y cargar todas las tablas del data warehouse.

Aparte, se puede cargar en biserver los ficheros de Cuadros de Mando y los cubos Saiku, que funcionarán de inmediato. Así como los reportes con pdi-ce, con solo abrirlos y pulsar "Ejecutar" podrá ver toda la información que necesite.

Descargas

MySQL Connector

XAMPP

Kettle

Report Designer

BI Server

Enlaces externos

Repositorio en Github del proyecto: APP Inventor