Informe de proyecto ELO329: CalendaryAPP

Integrantes: Sergio Castro, Carlos Fernandez, Javier Ortiz
Fecha:28/08/2019

I)Descripción del problema.


EL problema que este grupo identifica es lo disperso que se encuentra mucha de la informacion sobre cosas cotidianas de la vida universitaria, dentro de las principales se identifica el horario de clases, la minuta de almuerzo del dia y los libros disponibles en la biblioteca, informacion que de tenerla disponible en un solo lugar aumentaria de gran manera la comodidad del esutdiante. La mejor manera que se identifica para poder centralizar estos datos es el poder acceder a ellos desde una aplicacion de celular el cual la gran mayoria de estudiantes portan consigo todos los dias. Por otro lado junto con la funcion horario el tener una alarma que alerte el comienzo de un bloque en especifico que sea de interes para el usuario es tambien una carencia identificada y que se puede abordar en una aplicacion movil.

II) Análisis del problema.


En estasección usted desarrolla y explica los elementos o entes que participan en el problema, define el sistema y sus interacciones con elmedio externo al sistema Como se menciono antes el problema se puede resumir en que la informacion util se encuentra disperso en distintas plataformas web, el horario en la plataforma SIGA, la minuta de almuerzo en la seccion de alimentacion de la pagina de la USM y la informacion de disponibilidad de los libros en la pagina de la biblioteca, por lo cual la aplicacion establece el acceso en una pantalla inicial mediante botones. El presionar en cada boton es detectado por el ceular el cual cambia de contexto(layout) y se accede a cada funcion. En el caso del horario se podria reconocer como actor a la base de datos cread, pero debido a que este solo interacctua en la funcion horio se considerara como parte del sistema.

III) Casos de uso.


Caso 1: Acceder horario y agregar nueva clase
Actor 1 (Usuario Aplicacion) Sistema (Software)
1. El usuario presiona boton para acceder al Horario 2. El sistema responde cambiando de contexto a otro en el que le pide seleccionar el dia de la semana del horario
3. El usuario selecciona dia de la semana del horario que desea visualizar 4. El sistema cambia de contexto accediendo a la base de datos para ver si existe alguna clase registrada en ese horario y mostrarla
5. El usuario desea agregar una nueva asignatura presionando el simbolo para esto 6. El sistema responde con un cambio de contexto a otro que le permite rellenar campos con la informacion de la asignatura a agregar
7. El usuario escribe el codigo de la clase, su nombre, la sala que le toca y determina el bloque horario finalmente acepta 9. El sistema vuelve al contexto anterior y guarda la nueva clase en su base de datos finalmente muestra la nueva clase.

Caso 2: Acceder a la minuta de almuerzo
Actor 1 (Usuario Aplicacion) Sistema (Software)
1. El usuario presiona boton para acceder a la minuta 2. El sistema responde cambiando de contexto a otro en el que le pide seleccionar el dia de la semana del que quiere consultar la minuta
3. El usuario selecciona dia de la semana de la minuta a visualizar 4. El sistema hace los requerimientos para consultar la minuta a la pagina web y mostrarla en pantalla

Caso 3: Acceder horario y eliminar una clase
Actor 1 (Usuario Aplicacion) Sistema (Software)
1. El usuario presiona boton para acceder al Horario 2. El sistema responde cambiando de contexto a otro en el que le pide seleccionar el dia de la semana del horario
3. El usuario selecciona dia de la semana del horario que desea visualizar 4. El sistema cambia de contexto accediendo a la base de datos para ver si existe alguna clase registrada en ese horario y mostrarla
5. El usuario desea eliminar una nueva asignatura barriendo con el dedo el item que representa esta clase 6. El sistema elimina de la base de datos el item seleccionado y actualiza la vista reacomodando otros objetos

IV)Funcionamiento aplicacion.


1.Funcion Horario.


Para la funcion de horario se aplico elemento de arquitectura de aplicaciones que promueve google para realizar App's que sean robustas y persistentes(que el estado de la aplicacion quee almacenado). En la imagen adjunta se puede observar el esquema implementado. En este esquema se identifican cada elemento los cuales tienen tareas especificas, dese el fondo en el que se implementa una base de datos para la persistencia de los datos, hasta el modelview que es el encargado de modelar el objeto que posee la informacion de las clases, pasando por un repositorio que hace la traduccion desde el modelo a la base de datos y vice versa. Dentro del ViewModel se incluyen objetos LiveData los cuales son observables pudiendo raccionar cuando estos cambien.

Center

Al acceder a la aplicacion el usuario se encontrara con la panatalla de inicio:

Pantalla inicial

En esta seccion se elige la funcion horario y se pasa a la seleccion del dia de la semana en el cual se indica la fecha de cada dia en la semana actual:

Pantalla inicial

Al seleccionar el dia de la semana se pasa a la pantalla que muestra el horario de la semana, si se quiere agregar una nueva clase se seleccion el simbolo '+':

Pantalla inicial

Al seleccionar para agregar una nueva clase se pasa a otra pantalla para ingresar los datos de cada clase que al rellenarlo los agrega a la base de datos:

Pantalla inicial

Se actualiza la pantalla anterior mostrando la nueva clase:

Pantalla inicial

2.Minuta.


Uno de los usos de esta aplicación es la consulta de la minuta del almuerzo en la universidad de manera simple y rapida, solo presionando el botón "Minuta Almuerzo" accederemos a un menú con botones para los 5 dias de la semana, que al presionar muestra el almuerzo, menú dieta y vegetariano del respectivo día de la siguiente manera:
Minuta Almuerzo
El objeto "CalendarioMinuta" que contiene toda la información al respecto está alojada en una pagina web en formato JSON, por lo que si queremos actualizar la información semanalmente, solo hay que actualizar el codigo alojado en vez de tener que estar modificando directamente el código, facilitando su mantención.

3.Consulta de libros.


La consulta de libros en biblioteca es para facilitar el saber de antemano si hay disponilididad de algun libro particular en la biblioteca de casa central. Al acceder a esta funcion se carga una lista de libros donde pueden seleccionarse el que se esta buscando o utilizar el buscador integrado en la aplicacion. La ventana emergente muestra la informacion del libro (titulo, autor y cantidad disponible en biblioteca). La informacion esta contenida en strings y son parte de los recursos de la aplicacion. Ese recurso puede ser actualizado para renovar el catalogo y disponibilidad de los libros.

IV) Diagrama De clases


A continuacion se muestra el diagrama de clases del proyecto realizado:

Pantalla inicial

Se muestra a continuacion de igual manera el diagrama de secuencia que resulta de la accion de eliminar una clase de la base de datos:

Pantalla inicial

IV) Dificultades


Una de las dificultades respecto a la creación de la Minuta era que, en primera intención se deseaba realizar un "Parse" directamente a la pagina de minuta usm, sin embargo tras varios intentos fallidos se encontró una solución semejante, la cual consiste en continuar con la idea de extraer la información de internet sin embargo la web de la que se extrae la información está escrita en un formato que al realizar el "Parse" nos devuelve directamente el objeto con todos los datos requeridos, para esto se ocupan la librería "Volley" y "GSON" que Android Studio, la librería Volley nos permite realizar la petición de información a la página web donde están los datos,y la librería GSON nos permite deserializar el codigo y transformalo de formato JSON a objeto de java. La URL donde está alojado los datos es de caracter público, por lo que si contamos con un servidor para alojar nuestro objeto en formato JSON podriamos editarlo constantemente sin necesidad de tener que actualizar el código de la aplicación. Una de las dificultades de la creacion de la seccion de biblioteca fue la falta de acceso a una base de datos de esta. Para hacer la demostracion se creo una lista demo en la cual se agregaron libros elegidos por el grupo. Si hubiese acceso a esta base de datos deberia extraerse la lista de libros y sus datos para ser transformados en strings y descargados a la aplicacion.

V) Arhivos Fuente del proyecto


Archivos Fuente comprimidos