scieee AI-readable full text Open interactive document viewer

Desarrollo de una aplicación y un portal web para la gestión y evaluación del rendimiento de explotaciones ganaderas

Ortiz Iniesta, Javier; Utrilla Olivera, Jorge; Tanarro de las Heras, David

Abstract

El proyecto consistirá en el desarrollo del sistema GesGan, para la gestión de explotaciones ganaderas, compuesto por una aplicación desarrollada a medida y por un portal web. La aplicación permitirá la gestión de explotaciones ganaderas, abarcando la trazabilidad de todos los animales, los servicios prestados de veterinarios, proveedores y transportistas. Aportará indicadores de costes, rendimiento y viabilidad de la explotación. El portal web aportará información de la empresa, permitirá el acceso a la aplicación a los usuarios autorizados y ofrecerá servicios como una tienda, un chat de contacto, acceso a redes sociales, etc.

Full text

Desarrollo de una aplicación y un portal web para la gestión y evaluación del rendimiento de explotaciones ganaderas TRABAJO DE FIN DE GRADO Curso académico: 2018-2019 Director: Santiago Domínguez Salamanca UNIVERSIDAD COMPLUTENSE DE MADRID GRADO DE INGENIERÍA INFORMÁTICA JAVIER ORTIZ INIESTA JORGE UTRILLA OLIVERA DAVID TANARRO DE LAS HERAS 1 Contenido Resumen ................................................................................................................ 5 Palabras clave ........................................................................................................ 5 Abstract ................................................................................................................... 6 Key words ............................................................................................................... 6 1. Introducción ..................................................................................................... 7 1.1. Introducción .............................................................................................. 7 1.2. Motivación ................................................................................................. 7 1.3. Estructura del documento ........................................................................ 8 1. Introduction .................................................................................................... 10 1.1. Introduction ............................................................................................. 10 1.2. Motivation ................................................................................................ 10 1.3. Structure of the document ...................................................................... 10 2. Descripción general ....................................................................................... 12 2.1. Mejoras respecto al sistema tradicional ................................................. 12 2.2. Funcionalidades del sistema de información ......................................... 13 3. Estado del arte ............................................................................................... 16 3.1. Introducción ............................................................................................ 16 3.2. Aplicaciones analizadas ......................................................................... 17 3.2.1. Tambero ........................................................................................... 17 3.2.2. Control Ganadero ............................................................................ 19 3.2.3. Bov Control....................................................................................... 21 3.3. Cuadro resumen de calificaciones ......................................................... 23 3.3.1. Requisitos de la aplicación .............................................................. 23 3.3.2. Requisitos de la interfaz web ........................................................... 23 3.3.3. Conclusiones .................................................................................... 24 2 4. Planteamiento de la solución ........................................................................ 25 4.1. Alternativas ............................................................................................. 25 4.2. Valoración y selección ............................................................................ 25 Alternativa 1 ................................................................................................... 26 Alternativa 2 ................................................................................................... 26 Conclusión ..................................................................................................... 26 4.3. Evaluación de gestores de contenidos .................................................. 26 4.4. Selección del gestor de contenidos ....................................................... 29 5. Descripción de la solución ............................................................................ 30 5.1. Portal web ............................................................................................... 30 5.2. Aplicación a medida................................................................................ 32 Herramientas de desarrollo ........................................................................... 34 Ciclo de Desarrollo con Google Drive y Maven............................................ 36 Proceso Unificado de Desarrollo (RUP) ....................................................... 36 6. Desarrollo de la solución ............................................................................... 39 6.1. Desarrollo del portal web ........................................................................ 39 6.1.1. Contenido estático ........................................................................... 40 6.1.2. Tienda online .................................................................................... 41 6.1.3. Posicionamiento SEO ...................................................................... 42 6.1.4. Redes sociales ................................................................................. 42 6.1.5. Contacto ........................................................................................... 43 6.1.6. Acceso a la aplicación ..................................................................... 43 6.2. Desarrollo de la aplicación a medida ..................................................... 43 6.2.1. Construcción de prototipos interactivos .......................................... 43 6.2.2. Arquitectura ...................................................................................... 44 6.2.3. Diseño de la base de base de datos ............................................... 45 6.2.4. Modelado de la aplicación ............................................................... 48 3 6.2.5. Capa del Modelo .............................................................................. 53 6.2.6. Capa de la Vista ............................................................................... 54 6.2.7. Capa del Controlador ....................................................................... 55 6.2.8. Autorización y autenticación ............................................................ 56 6.2.9. Hosting ............................................................................................. 57 7. Sistema desarrollado ..................................................................................... 58 7.1. Desarrollo del portal web ........................................................................ 58 7.1.1. Contenido estático ........................................................................... 58 7.1.2. Tienda online .................................................................................... 61 7.1.3. Posicionamiento SEO ...................................................................... 62 7.1.4. Redes sociales ................................................................................. 63 7.1.5. Contacto ........................................................................................... 63 7.1.6. Acceso a la aplicación ..................................................................... 64 7.2. Desarrollo de la aplicación a medida ..................................................... 65 7.2.1. Registro ............................................................................................ 65 7.2.2. Inicio sesión...................................................................................... 66 7.2.3. Perfil ................................................................................................. 66 7.2.4. Vista empresario .............................................................................. 67 7.2.5. Vista empleado ................................................................................ 74 7.2.6. Vista veterinario ............................................................................... 74 7.2.7. Vista transportista ............................................................................ 76 8. Contribución de los participantes .................................................................. 77 8.1. Contribución de David Tanarro de las Heras ........................................ 77 8.2. Contribución de Javier Ortiz Iniesta ....................................................... 79 8.3. Contribución de Jorge Utrilla Olivera ..................................................... 81 9. Conclusiones ................................................................................................. 85 9. Conclusions ................................................................................................... 87 4 ❖ Anexos ........................................................................................................... 88 ➢ Portal Web .................................................................................................. 88 ➢ Aplicación Web ........................................................................................... 88 ➢ Código fuente ............................................................................................. 88 ➢ Mockups ..................................................................................................... 88 ➢ Modelado de la aplicación ......................................................................... 88 ➢ Proyecto de modelado ............................................................................... 88 ➢ Plan de proyecto ........................................................................................ 89 ➢ SRS ............................................................................................................ 89 ❖ Bibliografía y referencias ............................................................................... 90 5 Resumen El proyecto consistirá en el desarrollo del sistema GesGan, para la gestión de explotaciones ganaderas, compuesto por una aplicación desarrollada a medida y por un portal web. La aplicación permitirá la gestión de explotaciones ganaderas, abarcando la trazabilidad de todos los animales, los servicios prestados de veterinarios, proveedores y transportistas. Aportará indicadores de costes, rendimiento y viabilidad de la explotación. El portal web aportará información de la empresa, permitirá el acceso a la aplicación a los usuarios autorizados y ofrecerá servicios como una tienda, un chat de contacto, acceso a redes sociales, etc. Palabras clave • GesGan. • Sistema de información. • Aplicación. • Portal web. • Explotación ganadera. • Tienda. 6 Abstract The project will focus on the development of an information system, which will record an application and a web interface. The application will enable the management of livestock farms, covering the traceability of all animals, the services provided by veterinarians, suppliers and transporters. It will provide indicators of costs, performance and viability of the exploitation. In the web interface you will be able to find information about the company and the application, allow access to authorised users and offer services such as a store, a contact chat, access to social networks, etc. Key words • GesGan. • Information system. • Application. • Web portal. • Livestock farm. • Shop. 7 1. Introducción 1.1. Introducción El objetivo de este trabajo de fin de grado es elaborar una aplicación web que gestione empresas ganaderas usando un sistema de información que implemente las funcionalidades requeridas por los responsables de una explotación ganadera para gestionar de las actividades de la empresa y facilitar la comercialización de sus productos a través de una tienda online. Esta aplicación principalmente va dirigida para aquellos usuarios que tengan la necesidad de realizar una gestión de explotaciones de diferentes características y no tengan los medios necesarios para comercializar sus productos de manera directa. Para desarrollar esta aplicación se recabará información de todos los técnicos especialistas que intervienen de alguna manera en la gestión de una explotación ganadera. 1.2. Motivación La idea del desarrollo de una aplicación de estas características nació gracias a algunos de nuestros familiares que nos transmitieron la necesidad de disponer de algún tipo de herramienta informática que les ayudara a llevar a cabo la gestión de las distintas actividades de una empresa de este tipo, ya que por sus especiales características, no existen en el mercado herramientas que cubran todo el espectro de funciones requeridas. Se tuvo en cuenta que el sector ganadero es un sector en el que la brecha tecnológica se muestra de una forma más acusada, lo que supone un aumento de costes de gestión con respecto a otras empresas de otros sectores. Además, en la carrera hemos aprendido muchas técnicas sobre desarrollos de aplicaciones, construcción de portales web y gestión de proyectos software y consideramos que ésta podía ser una buena oportunidad para ponerlas en práctica. Las razones expuestas anteriormente, unidas a nuestra intención de realizar una aplicación web como trabajo fin de grado dio lugar a este proyecto. 8 1.3. Estructura del documento Este documento tiene los siguientes apartados: • Introducción: Se introduce el tema y la estructura del proyecto. • Descripción general: Se describe lo que se pretende desarrollar y las funcionalidades necesarias para ello. • Estado del arte: Se realizará un estudio de mercado de las aplicaciones similares disponibles actualmente. • Planteamiento de la solución: Se evalúa una serie de alternativas basadas en el desarrollo de una solución como respuesta. • Descripción de la solución: Se describe cómo se va a llevar a cabo el desarrollo de cada uno de los componentes principales del sistema de información. • Desarrollo de la solución: Se describirá el proceso seguido de la implementación de la solución. • Sistema desarrollado: Breve descripción del sistema, incluyendo algunos pantallazos. • Conclusiones: Se terminará explicando las deducciones obtenidas en la elaboración del proyecto. Los anexos de este documento son los siguientes: • URL del portal web y URL de la aplicación web: Enlaces web donde se localizan el portal y la aplicación web. • Enlace a código fuente: Enlace a un repositorio de Google Drive donde estará disponible el código fuente de la aplicación. • Enlace al proyecto de modelado: Enlace a un repositorio de Google Drive donde estará disponible el proyecto de modelado de la aplicación. • Plan de proyecto: Se determinará la estimación de esfuerzos, el equipo de trabajo, la planificación de actividades, administración y asignación de recursos, el seguimiento efectuado y la gestión del riesgo. 15 o Gestión de usuarios: Permitirá dar de alta o baja usuarios con sus respectivos roles. Además de los módulos anteriores, se tendrá en cuenta la velocidad de carga de los distintos contenidos de la web, ya que esto podría ocasionar una pesada navegación por la interfaz web, lo que puede suponer una significativa pérdida de clientes. Con el fin de facilitar la utilización de este sistema por los distintos tipos de usuarios de la aplicación, muchos de los cuales son los trabajadores de la empresa que no están habituado a la utilización de sistemas informáticos para su trabajo habitual, la interfaz web del sistema de información deberá ser clara e intuitiva. La interfaz será amigable y flexible para facilitar el uso de la aplicación. Por otro lado, se realizarán periódicamente copias de seguridad de forma automática para poder restaurar el sistema de información en el momento que crea oportuno la empresa que lo haya implantado. Por último, el sistema de información dispondrá de un soporte que permita resolver en tiempo real cualquier tipo de incidencia. Este además estará disponible en varios lenguajes. 16 3. Estado del arte 3.1. Introducción En este apartado se van a analizar distintas aplicaciones existentes en el mercado que para determinar en qué grado estas herramientas cubren las funcionalidades requeridas por empresas ganaderas especificadas anteriormente. Se llevará a cabo un estudio de las principales aplicaciones que se utilizan en este sector para valorar si la implantación del sistema de información GesGan es lo suficientemente competente e innovador. Para cada una de las aplicaciones se evaluarán los siguientes aspectos: • Funcionalidad: Se asignará una nota de 0 a 10 en función del alcance de la funcionalidad de cada uno de los módulos que se han identificado. • Interfaz web: Se valorará las siguientes características: • Tienda: Servicio que consideramos crucial para que la empresa pueda distribuir sus productos. • Contenido: Es uno de los elementos más importante del portal, ya que le aporta calidad en la temática del sitio web. Este debe de ser claro, conciso y concreto. • Diseño / Usabilidad: Debe existir un equilibrio entre ambos elementos con el fin de que el sistema de información sea amigable con el usuario. • Velocidad de carga: Se comprobará la velocidad de carga de los distintos contenidos de la web. • Resolución de incidencias: Es imprescindible que exista una página de contacto donde poder solucionar cualquier incidencia en el portal. • Redes Sociales: Para la visión empresarial es necesario que el portal web cuente con acceso a las redes sociales. • Multilenguaje: El portal deberá de estar disponible en varios lenguajes. 17 3.2. Aplicaciones analizadas En este apartado se realizará un análisis de las aplicaciones que actualmente se encuentran en el mercado y que tienen alguna funcionalidad similar a las que tendrá el sistema de información GesGan. El mercado de este tipo de aplicaciones es reducido y no existe ninguna aplicación que satisfaga todas las funcionalidades descritas en su totalidad. A continuación, se citan las aplicaciones que han sido seleccionadas: • Tambero: Se seleccionó por ser la aplicación más difundida en el sector ganadero y por contener parte de las funcionalidades básicas descritas anteriormente. • Control Ganadero: Se seleccionó por ser una de las mejores aplicaciones en reportar la producción ganadera y por contener la interfaz web que más se asemeja a las características describimos. • Bov Control: Se seleccionó por ser la aplicación que más se está expandiendo en el mercado al aumentar el desarrollo de sus funcionalidades en estos últimos años. 3.2.1. Tambero Interfaz web • Aspectos desarrollados: • Multilenguaje. • Contacto. • Aspectos que mejorar: • Diseño / Usabilidad. o Velocidad de carga. • Aspectos por desarrollar: o Tienda o Redes Sociales. o Contenido. 18 Funcionalidades de la aplicación • Funcionalidades desarrolladas: • Gestión de usuarios. o Gestión de empleados o Gestión de animales. o Control sanitario. • Funcionalidades por mejorar: • Gestión de explotaciones. o Gestión alimentaria. • Funcionalidades por desarrollar: • Gestión de transportes o Gestión financiera. o Gestión veterinaria. o Calendario de eventos Evaluación Esta aplicación es soportada en múltiples plataformas (ordenador, tablet, teléfono), además proporciona una gestión del ganado y explotaciones en la que ayudan a alcanzar el nivel aceptable. Una de las desventajas de esta aplicación es que la versión gratuita se encuentra limitada, por lo que para obtener mayor funcionalidad habría que hacerse con una cuenta Premium, la cual no aporta mejoras relevantes, una de ellas es que no te limita el número de animales y explotaciones a gestionar. Esta aplicación no cuenta con la planificación de tareas al no interactuar con diferentes tipos de usuarios en la plataforma. Por ello tampoco implementa la concertación de citas con veterinarios o transportistas. Otra desventaja que hemos detectado es la ausencia de una gestión sobre la contabilidad de la empresa, la cual ahorraría tiempo a la empresa a la hora de obtener un resumen financiero de esta. La interfaz web de esta aplicación quizás es la que menos se ajusta a lo que debe recoger. Aunque esta tenga una página de contacto y aplique multilenguaje, el objetivo principal no se alcanza al no poder contar con una tienda la empresa y no tener visibilidad en redes sociales. 19 Se considera que no satisface las características de contenido, diseño y usabilidad propia de la interfaz web por las carencias en la elección de la estructura, dificultad en la navegación y comprensión del contenido. Por último, la velocidad de carga no está optimizada por lo que se deduce que está alojada en un hosting de bajo rendimiento. 3.2.2. Control Ganadero Interfaz web • Aspectos desarrollados: • Contacto. • Aspectos que mejorar: o Contenido o Diseño / Usabilidad. o Velocidad de carga. o Multilenguaje. • Aspectos por desarrollar: o Tienda o Redes Sociales. Funcionalidades de la aplicación • Funcionalidades desarrolladas o Gestión de animales o Gestión de usuarios o Gestión de empleados • Funcionalidades por mejorar • Calendario de eventos • Control sanitario. • Funcionalidades por desarrollar • Gestión de explotaciones o Gestión alimentaria o Gestión veterinaria. o Gestión de transportes o Gestión financiera 20 Evaluación La interfaz web de esta aplicación ofrece una asistencia en línea a través de Whatsapp lo que le satisface un requerimiento imprescindible. En cambio, aunque se asemeja a lo que se pretende elaborar, tiene detalles que pulir como es el contenido mostrado dado a que este no llega a ser demasiado relevante, el diseño podría mejorar por llegar a ser una temática monótona. Además, se aplica multilenguaje, aunque solo aplicable a tres idiomas e incorpora una página de contacto que deja mucho que desear al ser poco amigable. La velocidad de carga del contenido se considera mejorable. Cabe destacar, que no interviene ninguna red social ni incorpora una tienda online lo que se considera imprescindible para el sistema de información que se pretende desarrollar, ya que sin estas características la empresa no podrá atraer a nuevos clientes mediante las redes sociales ni distribuir sus productos. La aplicación permite manejar el ganado de fincas exclusivamente de leche o de carne. También, aporta información sobre el seguimiento del animal como la producción, vacunas, crías y pesos. Por último, permite tratar con algunos tipos de usuarios como son el empleado, el veterinario y el empresario. Como aspectos a mejorar, la aplicación no efectúa un control sanitario completo por no automatizar el seguimiento de los tratamientos con citas veterinarias relacionadas en la aplicación ni aparece la información del veterinario que ha tratado al animal. Además, el calendario de eventos de la aplicación no permite planificar citas con los veterinarios, sólo se ciñe a las tareas de los empleados. En contraposición, no implementa funcionalidades fundamentales como lo son la gestión de diferentes explotaciones, ni el seguimiento sobre la gestión alimentaria, ni una gestión de transportes efectuados en animales, ni ningún tipo de indicador de control financiero sobre la explotación. Tampoco existe ningún tipo de gestión veterinaria por no poder concertar citas. Tiene dos versiones habilitadas: Versión Lite: El empresario sólo puede registrar hasta 20 animales, contiene publicidad y la versión escritorio no está enlazada con la web. Versión PRO: Conlleva un pago de 100$ anuales. No tiene límite de registros de animales y no tiene publicidad. Sólo permite un máximo de dos explotaciones. 21 En la web, el usuario puede subir animales, generar reportes y editar información de los animales. Esta versión da acceso a través de un PC o desde a la App. 3.2.3. Bov Control Interfaz web • Aspectos desarrollados: • Diseño / Usabilidad. o Contenido. • Aspectos que mejorar: • Velocidad de carga. • Contacto. • Multilenguaje. • Aspectos por desarrollar: o Tienda o Redes Sociales. Funcionalidades de la aplicación • Funcionalidades desarrolladas • Gestión de animales. • Funcionalidades por mejorar o Gestión de explotaciones. • Funcionalidades por desarrollar • Gestión de usuarios. o Gestión alimentaria. o Gestión de empleados. • Gestión veterinaria. o Control sanitario. • Calendario de eventos. o Gestión de transportes o Gestión financiera. 22 Evaluación En esta interfaz web nos encontramos una estructura innovadora, en la ofrece visualmente un diseño correcto y una usabilidad cómoda. La diversidad de contenido (slides, videos…) induce a que se delegan funciones entre diferentes tipos de usuarios de la gestión de contenido. Además, ofrece al usuario la posibilidad de contacto con los responsables del soporte, dónde incluso pueden llegar a enviar documentos, no obstante, no es un chat, aunque lo aparente. Por otro lado, la velocidad de carga en la navegación resulta mejorable en ocasiones y solo hay tres tipos de lenguajes disponibles. Sin embargo, como carencias notables, cabe destacar que no se conecta a ninguna red social ni implementa una tienda online, lo que ocasiona pérdida de clientes potenciales y la incapacidad para poder distribuir los productos de la empresa. Aplicación que recolecta y analiza datos del ganado para optimizar la producción de diferentes tipos de explotación. Dispone de dos versiones: • Plan profesional 1: Esta versión es gratuita, por lo que solo permite trabajar con una explotación e informes personalizados de los animales. • Plan Profesional 2: Esta versión es de pago, por lo que además de los beneficios del plan profesional 1, el empresario podrá anotar tareas de empleados y anotar vacunas pasadas por los animales registrados. Ninguna de las dos versiones abarcaría la mayoría de las funcionalidades básicas que se desean implementar. No aplica una gestión entre diferentes tipos de usuario, ya que se solo permite un usuario por explotación. Al no contar con diferentes tipos de usuarios no se puede realizar una gestión de empleados, de veterinarios ni de transportistas, por ello que tampoco consta de un calendario de eventos que proporcione una planificación eficiente de tareas, de citas o de transportes en la explotación. Además, la ficha de cada animal recoge la información sanitaria de manera muy deficiente. Tampoco efectúa un control sobre los alimentos consumidos por la explotación. 23 Por último, destacamos que esta aplicación tampoco cuenta con una gestión financiera, lo que provoca el desconocimiento sobre la viabilidad de la explotación. 3.3. Cuadro resumen de calificaciones 3.3.1. Requisitos de la aplicación Funcionalidad \ Aplicación Tambero Control ganadero Bov control Gestión de usuarios 5 7 0 Gestión de explotaciones 3 0 3 Gestión de animales 7 7 5 Control sanitario 5 3 2 Gestión de empleados 6 6 0 Gestión alimentaria 4 0 0 Calendario de eventos 0 4 0 Gestión veterinaria 0 0 0 Gestión de transportes 0 0 0 Gestión financiera 0 0 0 3.3.2. Requisitos de la interfaz web Funcionalidad \ Web Tambero Control ganadero Bov control Tienda 0 0 0 Contenido 2 4 7 Diseño / Usabilidad 2 5 7 Velocidad de carga 3 4 4 Contacto 5 7 4 Redes Sociales 0 0 0 Multilenguaje 8 3 4 24 3.3.3. Conclusiones Después de realizar el análisis de las aplicaciones que en principio cubrirían el espacio que queremos ocupar, observamos que ninguna implementa la tienda aspecto que es considerado fundamental para poder dar la capacidad a empresas con pocos medios para vender directamente sus productos. Relacionado con la tienda, está el hecho de disponer de un servicio de gestión de redes sociales que permita a la empresa darse más a conocer y de este modo captar clientes. Esta característica no es implementada por ninguna de las aplicaciones evaluadas. Otro aspecto fundamental, la velocidad de carga en las aplicaciones evaluadas es mejorable, ya que la navegación por ellas ocasiona interrupciones, además la amigabilidad de la interfaz web en dos de ellas es deficiente y limitada. En cuanto a la funcionalidad abarcada por las aplicaciones es menor que la que nosotros queremos implementar. Podemos destacar que funcionalidades fundamentales son deficientes y mejorables. En concreto la gestión de usuarios en dos de las aplicaciones es pobre y escasa. En cuanto a la gestión de explotaciones no cubre más de una explotación o no diferencia varios tipos de explotaciones. Además, el control sanitario no llega a recoger todos los contenidos necesarios, ya que en la ficha del animal no queda reflejada información básica, como puede ser la del veterinario que lo ha tratado, y la presentación de la información que recoge es insuficiente. De las funcionalidades restantes, observamos que no son implementadas o lo de forma muy reducida por tomar poca o nula relevancia para sus aplicaciones. De lo anterior se deduce que ninguna aplicación satisface las funcionalidades descritas anteriormente. Nuestra aplicación va a cubrir un espacio que abarca y mejora las funcionalidades implementadas por estas aplicaciones, además de añadir otras que cubren las necesidades reales y expresadas por los responsables de explotaciones ganaderas. 31 • Contenido estático. Estará disponible toda la información de la empresa que decida implantar este sistema de información en su explotación ganadera. • Tienda online. Este servicio es fundamental para nuestro sistema de información. Los usuarios externos al sistema de información podrán realizar compras, consultar productos…, en cuanto a los usuarios de este sistema de información podrán registrar productos, tanto si son productos propios como de proveedores, tendrán en todo momento el control de stock de la tienda y podrán obtener la información financiera de esta. Además, permitirá varios tipos de usuarios. • Posicionamiento SEO. Gracias a la utilización de WordPress se dotará a la tienda de un buen posicionamiento SEO lo que puede ocasionar un aumento de visitas al portal web y captar clientes. • Redes Sociales. El portal permitirá visualizar las redes sociales de la empresa, con ello se pretende que la empresa pueda captar clientes y mejorar la opinión que tengan de ella. • Contacto. El portal dispondrá de dos modalidades de contacto. o Soporte Online. Esta modalidad de soporte es importante para poder solucionar los problemas en el portal lo más rápido posible y así poder mejorar la experiencia de los usuarios. o Página de contacto. Además de la modalidad anterior, el portal constará de una página de contacto para en caso de no estar disponible el soporte online poder ponerse en contacto con el equipo de resolución de incidencias. • Acceso a la aplicación. Además de todo lo anterior, el portal dará acceso a la aplicación a los usuarios que hayan implantado este sistema de información en su explotación ganadera. El dominio lo aporta el web hosting y, al utilizar WordPress, debemos buscar web hosting que permitan su uso. Hemos elegido 000webhost por precio y porque cubre nuestras necesidades. 32 Por último, se precisa utilizar un servicio de web hosting que ponga a disposición un sitio donde se instale WordPress, ya que este es el gestor de contenidos elegido como se ha explicado en puntos anteriores. Para ello, se utilizará 000webhost como hosting. Esta elección viene determinada por garantizar un óptimo funcionamiento con WordPress al precisar de velocidad, a su vez es barato el servicio (gratuito si se desea realizar pruebas) y por cumplir con nuestras necesidades en almacenamiento en disco y ancho de banda. 5.2. Aplicación a medida Funcionalidades de la aplicación La aplicación contendrá las siguientes funcionalidades: • Gestión de explotaciones: Se encargará de mantener el control de una explotación. Esta funcionalidad permite la creación de nuevas explotaciones sus respectivos datos, la edición y la eliminación de esta explotación. Al eliminar una explotación se eliminarán todos los datos que hagan referencia a esta. Esta funcionalidad es exclusiva para el empresario. • Gestión de animales: Se encargará del control de los animales que pertenecen a una explotación. Esta funcionalidad permite dar de alta animales en la explotación en la que se esté trabajando. Al añadir un animal se generará automáticamente una ficha con los datos del animal, tratamientos y revisiones por parte del veterinario, estado del animal…. Además, se permite la edición de estos datos y la eliminación del animal en caso de error. A esta funcionalidad podrá acceder los empresarios, que podrán modificar todos los datos, los empleados, que podrán modificar algunos datos, y los veterinarios, que podrán modificar el estado sanitario del animal. • Control sanitario: Esta modalidad permite tener actualizado el estado sanitario de los animales. La información del control sanitario aparecerá en la ficha del animal como se ha mencionado en la gestión de animales. Esta funcionalidad podrán utilizarla tanto el empresario como el veterinario. 33 • Gestión de empleados: Permite dar de alta o baja a un empleado en una explotación o en varias. Por otra parte, permite asignar tareas a los empleados para mejorar su planificación y realizar diferentes operaciones. Permite asignar y planificar tareas a empleados y realizar diferentes operaciones sobre una explotación. • Gestión alimentaria: Proporciona la información sobre la alimentación de los animales, estado del inventario, reflejar las compras de alimentos…. • Calendario de eventos: El calendario de eventos refleja los eventos de una explotación, estos pueden ser las tareas programadas para los empleados, revisiones de veterinarios…Esta funcionalidad puede ser accedida por todos los usuarios, pero estará personalizada para cada uno dependiendo del rol del usuario. • Gestión veterinaria: Permite planificar citas para un determinado conjunto de animales. Estas citas las realiza el empresario a un veterinario que debe tener previamente dado de alta en la explotación en la que esté trabajando. Al realizar la cita primero se realiza una petición al veterinario que debe ser aceptada por este. El estado de la cita queda reflejado en todo momento en la aplicación. • Gestión de transportes: Permite organizar y asignar un transporte para un determinado conjunto de animales. Igual que la gestión veterinaria, el empresario realiza una petición a un transportista que previamente debe tener registrado en la explotación, esta petición queda en espera hasta el que transportista acepta la cita. El estado de la cita queda reflejado en todo momento en la aplicación. • Gestión financiera: Muestra un resumen financiero de la explotación y lleva a cabo un cierto análisis sobre la contabilidad de las explotaciones. De este modo el empresario puede saber en todo momento el estado financiero de la explotación ganadera. • Gestión de usuarios: Permitirá dar de alta o baja usuarios con sus respectivos roles. Estos roles son los distintos puestos de trabajo que desempeñará en la explotación. 34 Herramientas de desarrollo Cada puesto de desarrollo deberá contar con una instalación completa de las siguientes herramientas: JDK, Eclipse, Tomcat, Maven, H2 y Notedpad++. La instalación de Eclipse incluye varios plugins que permiten extraer métricas calidad del código fuente mediante Sonar e integrar el proyecto con Maven. Entorno compartido de desarrollo Bases de Datos Servidor de Integración Continua (IC) Repositorio SVN Bases de Datos HERRAMIENTAS DEL ENTORNO DE DESARROLLO COMPARTIDAS (INTRANET) A continuación, se describen brevemente las principales herramientas mencionadas en el apartado anterior: 1. El JDK es el Java Development Kit (Herramientas de desarrollo para Java), aquí nos encontraremos con el compilador javac que es el encargado de convertir nuestro código fuente (.java) en bytecode (.class), el cual posteriormente será interpretado y ejecutado con la JVM (Máquina Java Virtual), también dentro de estas herramientas encontramos los siguientes programas, javadoc (encargado de generar la documentación de nuestro código), el jvisualvm (muestra información a detalle sobre las aplicaciones que están corriendo actualmente en la JVM), entre muchas otras. 2. Eclipse es una plataforma de desarrollo de código abierto basada en Java. Por si misma, es simplemente un marco de trabajo y un conjunto de servicios para la construcción del entorno de desarrollo de los componentes de entrada. Afortunadamente, Eclipse tiene un conjunto de complementos, incluidas las Herramientas de Desarrollo de Java (JDT). 35 3. Maven es una herramienta open-source que simplifica los procesos de construcción y gestión de los ficheros de instalación de las aplicaciones y servicios (.war), a partir del código fuente. Entre las principales características de Maven, destacan las siguientes: • Estandarización de la estructura interna del proyecto (carpetas de código fuente, ubicación de ficheros) • Simplificación de la gestión de las librerías comunes (esto se denomina “gestión de dependencias”). Las librerías se descargan desde repositorios públicos accesibles por Internet. • Automatización de tareas rutinarias, como la compilación y generación de ficheros de despliegue (.war) • Cada proyecto tiene un fichero pom.xml con la configuración utilizada por Maven • Se invoca por la línea de comandos o desde el menú de Eclipse 4. Google Drive es una herramienta que utilizaremos para el control de versiones del código fuente que se basa en el uso de un repositorio cuyo funcionamiento se asemeja enormemente al de un sistema de ficheros. 5. SonarQube es una plataforma de código abierto para el análisis de la calidad de código usando diversas herramientas de análisis estático de código fuente como Checkstyle, PMD o FindBugs para obtener métricas que pueden ayudar a mejorar la calidad del código de un programa. También pertenece al conjunto de herramientas de análisis de código estático. Es una herramienta esencial para nuestra fase de testing y auditoria de código dentro de nuestro ciclo de desarrollo de nuestra aplicación. Existen muchos problemas que se pueden encontrar en un código. Las reglas difieren y pueden clasificarse en 5 grupos según su severidad: Bloqueador, crítico, grave, menor e informativo. Así que, si hay un bug o un bug potencial, va a ser clasificado como problema bloqueador o crítico. 6. H2 Database Engine es una herramienta visual de diseño de bases de datos que integra desarrollo de software, Administración de bases de datos, diseño 36 de bases de datos, gestión y mantenimiento para el sistema de base de datos H2. 7. IBM Rational Software Architect es una herramienta de modelado y desarrollo de software. En ella puedes diseñar y analizar arquitecturas para aplicaciones web. 8. Balsamiq Mockup es una herramienta para la creación de prototipos de aplicaciones webs y aplicaciones móviles. Ciclo de Desarrollo con Google Drive y Maven El siguiente diagrama resume el ciclo de desarrollo de las aplicaciones y servicios utilizando las herramientas mencionadas previamente: • Cada desarrollador trabaja desde su ordenador y accede al repositorio de Google Drive para cargar y/o descargar el código fuente, así siempre podremos trabajar en la versión más actualizada y a la vez recuperar anteriores en caso de fallos. • Las librerías utilizadas por los proyectos son gestionadas automáticamente por Maven, que se encarga de descargarlas bajo demanda desde los repositorios públicos Local Intranet Check-in (commit) Repositorio SVN Repositorio local (caché) Repositorio privado Repositorios publicos Proyecto librerías (dependencias) pom.xml Check-out descargar descargar CICLO DE DESARROLLO EN EL ENTORNO COMPARTIDO Proceso Unificado de Desarrollo (RUP) El modelo de proceso que utilizaremos será el Proceso Unificado de Desarrollo. RUP define claramente quien, cómo, cuándo y qué debe hacerse en el proyecto. Por tanto, RUP se encarga de unificar nuestro equipo técnico, además de optimizar la organización y la comunicación. Cada miembro del proyecto lleva a 37 cabo una aproximación al desarrollo de software con una base de conocimiento de acuerdo con las necesidades específicas. También, permite gestionar el control de cambios y mantener al equipo trabajando en los mismos artefactos en cualquier momento del desarrollo. Se utiliza de RUP como metodología para guiar el proceso de desarrollo por ser un proyecto complejo y de larga duración. En esencia, esta metodología genera la documentación imprescindible para desarrollar el proyecto. FUENTE: http://trimestrevpstiixavierarias.blogspot.com/2013/10/metologia-ruprational-unified-process.html Se plantea qué metodología se va a aplicar para poner en común la interfaz de la aplicación. Esto es un problema dado a que no es sencillo ni intuitivo. Por ello, se considera conveniente y oportuno realizar construcción de prototipos. El desarrollo de este fotomontaje permite crear una idea visual del diseño y estructura del front-end de la aplicación. Este desarrollo se llevará a cabo con Balsamiq Mockup. FUENTE: HTTP://MVC-SERVLETS.APPSPOT.COM/MVC.PNG 38 Como propuesta a la solución seleccionada en el apartado anterior, esta consta de lo siguiente: • El back-end será desarrollado en Spring Boot. Este se trata de un framework de java para el desarrollo de aplicaciones web. Se ha decidido utilizar este framework por la experiencia ganada sobre este durante los últimos años, además de proporcionar una gran seguridad, que permite utilizar diferentes roles para usuarios de forma sencilla e intuitiva. La integración con la base de datos se realiza con una dependencia de Maven por ser lo más utilizado actualmente. En cuanto a la base de datos, se han descartado las NoSQL por no ser escalables y no existir relaciones entre tablas. Entre las bases de datos relacionales, se ha elegido H2 por ser una base de datos popular entre los desarrolladores web de Java. Además, se caracteriza por ser su desarrollo en código abierto. La velocidad y el pequeño tamaño la hacen ideal y manipulable para la aplicación web que se desea implantar. • El front-end se realizará en Java Server Page (JSP), que es una tecnología que ayuda a los desarrolladores de software a crear páginas web dinámicas basadas en HTML, XML, CSS, entre otros tipos de documentos. JSP es similar a PHP, pero usa el lenguaje de programación Java. Además, ofrece características como la utilización de código abierto, es robusto y multiplataforma. El rendimiento mejora porque JSP permite utilizar elementos dinámicos en páginas HTML. 39 6. Desarrollo de la solución El desarrollo de la solución se dividirá en varios puntos a tratar. Por un lado, está el desarrollo del portal web y por otro el desarrollo de la aplicación. Ambos desarrollos se llevarán a cabo en paralelo. 6.1. Desarrollo del portal web Se va a utilizar WordPress, el cual se instalará en el servidor de dominios que ofrece 000webhost. En primera instancia, cabe mencionar que el tema elegido de WordPress es Septera por su diseño limpio y elegante. Después se procede a su configuración, esta se divide en las diferentes secciones que encontramos en el portal web, como pueden ser la página de inicio, la cabecera, el pie de página, menús, entradas, widgets y redes sociales. De esta manera, modificaremos el formato en función de cómo deseamos visualizar y realizar la navegación en el portal web. En el portal, se darán a conocer las funcionalidades de nuestra aplicación, dará soporte técnico para poder resolver incidencias y habrá disponible un acceso a la web de la aplicación. También ofreceremos una tienda online donde los usuarios de la aplicación puedan disponer de los suministros que necesiten. Para todo ello, se utiliza los siguientes plugins: • WooCommerce: Plugin de eCommerce que nos permite la venta de productos. Aquí subiremos los productos relacionados que ofrecen los proveedores de nuestros usuarios. • WooCommerce Services: Calcula automáticamente impuestos y tarifas de envío, además incorpora una configuración de pago más sencilla. • WooCommerce PayPal: Permite aceptar pagos de tarjetas de crédito en la tienda. • WooCommerce Stripe: Permite aceptar pagos de tarjetas de crédito en la tienda. • Yoast SEO: Nos ayuda a apuntar a los tops superiores en los resultados de búsqueda. 40 • Serious Slider: Permite el control deslizante de imágenes y además es muy eficiente con las políticas friendly de SEO. • JivoChat: Ayuda a los agentes de soporte a manejar chats todos los días y aumentar las ventas al ofrecer la mejor atención al cliente. Esta es un widget conectada con una aplicación de escritorio o móvil y redes sociales. • GTranslate: Hace multilenguaje todo el contenido del portal web. • All-in-One WP Migration: Nos permite realizar backups de nuestro portal, previniendo perdidas del desarrollo ante cualquier error del hosting. • GDPR Cookie Consent: Mostramos a los usuarios que nuestro sitio cumple con la ley europea de cookies. • Jetpack: Permite obtener estadísticas ideales para realizar publicaciones dirigidas en redes sociales. • Under Construction: Permite ocultar el portal web detrás de una página de aterrizaje. Esta muestra que la página se encuentra en modo de mantenimiento, en construcción o próximamente disponible. 6.1.1. Contenido estático Se comienza por la configuración del tema, este permite a modificar la identidad del sitio, la cabecera y el pie de página. En la identidad del sitio, se muestra el logotipo, el título y una descripción corta. En la cabecera, establecemos de fondo una imagen. En la parte superior izquierda, se muestra el nombre de la empresa y, en la parte superior derecha, un el menú principal que contendrá las siguientes secciones: • Mi cuenta: Mostrará el perfil del usuario conectado si ha iniciado sesión. En caso contrario, le pedirá registrarse o iniciar sesión. • Tienda: Mostrará los productos disponibles. • Carrito: Mostrará la lista de productos de desea comprar. Contiene en un submenú la opción de “Finalizar compra”. 47 ILUSTRACIÓN 3 48 Como podemos observar, intervienen 11 tablas de datos relacionales. Cada una representa una entidad de datos con la que trabaja la aplicación. • Usuario: Se encarga de almacenar la información relacionada a un usuario registrado en la aplicación. Cabe destacar el rol asociado por ser el determinante en el acceso de la aplicación. La clave primaria de esta tabla es el correo electrónico y la contraseña se encontrará cifrada mediante el algoritmo BCrypt. • Explotación: Guarda la información de cada explotación registrada en la aplicación. • Trabaja: Relaciona los usuarios con la explotación en la que trabajan. Su clave primaria está compuesta por el IdUsuario y el IdExplotacion. • Tarea: Describe el tipo de tarea que se le ha asignado a un empleado de una explotación. • Alimentación: Registro de todos los productos comprados para una explotación. • Contabilidad: Registra las contabilidades de todos los años de cada explotación y de usuarios. • Animal: Contiene toda la información acerca de un animal. • Relación Animal-Evento: Relaciona las tablas Animal y Evento. Mediante esta tabla se construye el control sanitario y de transporte de los animales. • Evento: Almacena la información más relevante acerca de un evento. • Cita: Añade información adicional al evento cuando se trata de una cita veterinaria. • Transporte: Añade información adicional al evento cuando se trata del transporte de un animal. 6.2.4. Modelado de la aplicación El análisis y diseño se ha elaborado a través de un proyecto de modelado denominado GesGan realizado con el programa IBM Rational Software Architect. 49 El proyecto ha sido realizado en su totalidad y está disponible en el anexo “Proyecto de modelado” y se encuentra explicado en detalle en el anexo “Modelado de la aplicación”. No obstante, se estructura de la siguiente manera: • Modelo de requisitos está formado por: o Un paquete con el Modelo del dominio. o Un paquete con los actores que intervienen o Un paquete por cada módulo, y dentro de cada módulo un paquete por cada requisito funcional. Cada uno, recogerá su diagrama de caso de uso y de actividad. Entre todos ellos, destacamos como ejemplo los siguientes: ILUSTRACIÓN 3: CASO DE USO ILUSTRACIÓN 4: DIAGRAMA DE ACTIVIDAD 50 ILUSTRACIÓN 5: CASO DE USO ILUSTRACIÓN 6: DIAGRAMA DE ACTIVIDAD ILUSTRACIÓN 7: CASO DE USO 51 • Modelo de diseño: Este paquete está estructurado en dos capas, la cuales son: o Arquitectura: Contiene el diagrama de clases que divide controladores, servicios y repositorios. También contiene el diagrama de componentes que ilustra el patrón MVC aplicado. o Requisitos funcionales: Contiene los diagramas de secuencia, se ilustrará algunos ejemplos. ILUSTRACIÓN 8: DIAGRAMA DE ACTIVIDAD 52 ILUSTRACIÓN 9: DIAGRAMA DE SECUENCIA ILUSTRACIÓN 10: DIAGRAMA DE SECUENCIA 53 • Modelo de despliegue: Este paquete muestra en que entornos puede ejecutarse la aplicación como también los artefactos que lo componen. ILUSTRACIÓN 11: DIAGRAMA DE DESPLIEGUE 6.2.5. Capa del Modelo La capa del modelo se diseña en función de: • Service: La aplicación consta de 9 clases de este tipo. Estas clases tiene la notación @Service para diferenciar su comportamiento de otras. Esta notación es dada por Spring boot. Las clases Service constan de varios métodos que realizan operaciones sobre los distintos repositorios. • Repository: La aplicación implementa 12 clases de este tipo. Estas contienen la notación @Repository, esta notación es la más adecuada para hacer referencia a los DAO. 54 • Domian: Por último, la aplicación implementa 12 clases. Estas contienen las notaciones de @Entity, @Table, @Column, @ManyToMany @ManyToOne, @JoinColumn que utiliza hibernate para establecer las relaciones de la base de datos. Para el desarrollo del back-end, nos hemos apoyado en diferentes herramientas para su composición. Hibernate (JPA) es una herramienta de mapeo objeto-relacional para la plataforma Java que nos facilita el mapeo de atributos entre la base de datos relacional y el modelo de objetos de la aplicación. Esto lo realiza mediante las anotaciones anteriormente nombradas en los beans de las entidades que permiten establecer las relaciones de la base de datos. Hemos elegido JPA en vez JDBC por permitirnos trabajar con la base de datos por medio de entidades en vez de querys. Además, se caracteriza por ser orientado a objetos y elimina errores en tiempo de ejecución. Lombok es una librería Java que realiza la auto implementación de los métodos getters y setters en tiempo de compilación de los atributos de las clases que tengan la notación @Data. 6.2.6. Capa de la Vista Para el desarrollo del front-end, generaremos páginas usando HTML5 por permitirnos incrustar elementos computacionales y scripts (Java Server Pages, JavaScript, CSS). Particularmente, para el desarrollo del estilo de la aplicación, nos apoyaremos en plantillas estándar de Bootstrap 4. Estas plantillas tienen un diseño que es adaptable, ya que no importa el dispositivo, la escala ni la resolución. Además, se ha utilizado JSTL que es un componente de Java EE el cual nos proporciona bibliotecas de etiquetas a JSP que hemos utilizado para dinamizar el contenido de las páginas web. La maquetación de la vista de la aplicación se compone por las siguientes secciones: • Cabecera o Header: Contiene la información principal y se encuentra en la parte superior de la web. Sus elementos son el logo de la empresa que redirecciona al índice de la web, un botón para visualizar el perfil del 55 usuario, otro botón para contactar con el soporte que redirigirá al Portal Web, el nombre del usuario y un botón para cerrar la sesión si esta se encuentra activa. • Menú de navegación: Estructura el contenido de la web en diferentes secciones y se encuentra en la parte izquierda de la web. Este puede estar compuesto hasta de cuatro elementos (explotaciones, veterinarios, empleados y contabilidad), variará según el usuario que se encuentre conectado. • Cuerpo o Body: Contiene la información que se desea consultar y se encuentra en la parte central de la web. Uno de los elementos es el título de la sección donde se encuentre el usuario o, si se encuentra en una subsección, un hilo con las secciones de la que depende (técnica breadcrumb). Debajo de este, se muestran diferentes tipos de contenidos como pueden ser listados detallados o formularios. • Pie de página o Footer: Contiene información poco relevante sobre la empresa y se encuentra en la parte inferior de la web. 6.2.7. Capa del Controlador Esta capa es la encargada de capturar las peticiones realizadas por el usuario, consta de 9 clases. Estas clases contienen las notaciones: • @Controller: esta notación permite que Spring la detecte como un controlador cuando realiza el escaneo de componentes. • @RequestMapping: con esta notación se especifica la ruta que tendrá el controlador o el método al que hace referencia. • @Autowired: A través de esta anotación Spring será capaz de llevar a cabo la inyección de dependencias sobre el atributo marcado. • @PathVariable: Sirve para indicar con qué variable de la url se relaciona el parámetro. • @ModelAttribute: Instancia un atributo del modelo y luego lo expone a una vista. 56 6.2.8. Autorización y autenticación Para implementar la seguridad de nuestra aplicación utilizaremos Spring Security, ya que nos permite gestionar desde la autenticación y la autorización de usuarios hasta determinar los roles de usuarios. Este es un framework de Java dependiente de Spring Boot. La autorización HTTP de las URL de solicitud web mediante selección de rutas de acceso FUENTE: HTTPS://RBPAONLINE.COM/WP-CONTENT/UPLOADS/2018/09/SPRINGSECURITY-AUTHENTICATION-AUTHORIZATION-USING-DATABASE.JPG Además, Spring Security aporta notaciones como: • @PreAuthorize: Proporciona seguridad a nivel de método, esto quiere decir que comprueba si el usuario conectado está autorizado para realizar las acciones del método al que hace referencia antes de realizarlo. • @PostAuthorize: Proporciona seguridad a nivel de método, la diferencia con @PreAuthorize es que realiza la comprobación de la autorización después de realizar el método. 63 7.1.4. Redes sociales En la ilustración 12, la ilustración de la pantalla principal, se puede visualizar todos los accesos a las redes sociales y las últimas publicaciones en Twitter. 7.1.5. Contacto La página de contacto a la aplicación tiene este aspecto: ILUSTRACIÓN 19 El chat de contacto siempre se encuentra disponible y visible en todas las pantallas. Tiene el siguiente aspecto: ILUSTRACIÓN 20 64 7.1.6. Acceso a la aplicación La página de acceso a la aplicación tiene este aspecto: ILUSTRACIÓN 21 65 7.2. Desarrollo de la aplicación a medida 7.2.1. Registro Formulario a completar con los datos del usuario que va a ser registrado. ILUSTRACIÓN 22 ILUSTRACIÓN 23 66 7.2.2. Inicio sesión Deberá introducirse en correo y contraseña del usuario para tener acceso a la aplicación. ILUSTRACIÓN 24 7.2.3. Perfil Se permitirá editar el perfil del usuario registrado rellenando un formulario con los correspondientes datos. ILUSTRACIÓN 25 67 7.2.4. Vista empresario 7.2.4.1. Añadir explotación Permite añadir una determinado a ese usuario registrado como “Empresario”. ILUSTRACIÓN 26 Una vez creada la explotación, podrán ser consultadas desde el menú vertical. ILUSTRACIÓN 27 El menú vertical dispone de más funcionalidades si accedemos a una explotación: 68 ILUSTRACIÓN 28 Ganado: Permite ver un listado con los animales de la explotación, así como añadir un nuevo animal. ILUSTRACIÓN 29 69 Alimentación: Permite ver un listado de la alimentación que se encuentra en stock, así como agregar un nuevo pedido. ILUSTRACIÓN 30 Empleados: Permite ver un listado de los empleados, así como agregar un nuevo empleado. ILUSTRACIÓN 31 70 Veterinarios: Permite ver un listado de los veterinarios, así como agregar uno nuevo a la explotación. ILUSTRACIÓN 32 Transportes: Permite ver un listado de los transportistas y agregar un nuevo transportista a la explotación. ILUSTRACIÓN 33 71 Calendario eventos: Contiene dos tablas en las que se indican los eventos que tiene una determinada explotación, tanto las citas sanitarias como las citas para un determinado transporte. ILUSTRACIÓN 34 Resumen financiero: Muestra el balance económico de una determinada explotación, incluyendo los gastos e ingresos de todos los eventos asociados a esa explotación. ILUSTRACIÓN 35 72 7.2.4.2. Añadir veterinario a explotación Podrá solicitarse a un veterinario la posibilidad de formar parte de esa explotación, la oferta quedará en espera hasta que el veterinario correspondiente haya aceptado la solicitud. ILUSTRACIÓN 36 7.2.4.3. Añadir empleado a explotación Podrá contratarse a un usuario como empleado de la explotación (ese empleado tendrá que estar previamente registrado con el ‘Rol Empleado’). La oferta quedará en espera hasta que el veterinario correspondiente haya aceptado la solicitud. 7.2.4.4. Añadir transportista a explotación Podrá solicitarse a un transportista la posibilidad de formar parte de esa explotación, la oferta quedará en espera hasta que el veterinario correspondiente haya aceptado la solicitud. 79 los que consideramos que se adecuaban para el portal web, obtener un gran conocimiento sobre su configuración óptima. El desarrollo de la aplicación web me ha resultado muy útil para ampliar mis conocimientos sobre Java. Lo había utilizado en algunas asignaturas del grado, pero no a tan alto nivel técnico. Nos hemos apoyado mucho en la experiencia de Jorge en este lenguaje. Los apartados finales de la memoria los hicimos conjuntamente para ofrecer una única visión de cómo se había efectuado el desarrollo del sistema de información. Para finalizar, me gustaría que quedase constancia que ha habido una distribución equitativa de las cargas de trabajo. A lo largo del proyecto hemos ido distribuyendo las tareas con diversa intensidad pero la suma total de los esfuerzos individuales ha sido similar. Por último, querría destacar que ha contribuido a la consecución de los objetivos marcados el buen ambiente que ha existido entre los integrantes del equipo, apoyándonos en la resolución de los problemas y coordinándonos en las diversas etapas del proyecto. También hemos tenido la suerte de haber podido contar con un magnífico director que nos ha guiado y nos ha fijado las pautas a seguir en todo momento. 8.2. Contribución de Javier Ortiz Iniesta Describiré la secuencia de actuaciones realizada, destacando mis contribuciones al proyecto. Comenzamos acordando la estructura que debía seguir el documento y comenzamos a elaborar los apartados “Introducción”, “Descripción” y “Estado del arte”. El trabajo fue realizado por todos los miembros del grupo para fijar las ideas principales del proyecto. Después, comenzamos a plasmar en prototipos las ideas iniciales de la aplicación realizando “Mockups”. Comenzamos con las primeras pantallas, trabajo que realizamos el grupo, para tener claro el esquema de los prototipos. Después, repartimos las funcionalidades, yo realicé la gestión de animales y la 80 vista de veterinarios. Una vez finalizados, nos juntamos para dar coherencia a las pantallas y comprobar que no faltaban funcionalidades ni había errores. Seguidamente, comenzamos a realizar los puntos 4 y 5 de la memoria. Después de muchas dudas y muchas correcciones conseguimos acordar la estructura correcta de estos puntos gracias a la ayuda de nuestro director Santiago. En este momento vimos que el proyecto iba tomando forma, lo que nos sirvió como motivación. El Plan de proyectolo comenzamos a realizar conjuntamente y cuando teníamos fijados los conceptos nos repartimos el resto de apartadosYo realicé el apartado de Estrategia de Gestión y Metodología. Después, como durante todo el proceso, realizamos correcciones conjuntas para aclarar dudas y corregir errores. La elaboración del documento de Especificación de Requisitos, la repartimos entre todos nosotros por funcionalidades. A continuación, realizamos el Proyecto de Modelado, en el que usamos el programa IBM-Rational Software Architect, que todos los integrantes del grupo habíamos usado en asignaturas como “Ingeniería del Software”. Repartimoalgunos los requisitos para poder adelantar (ya que no siempre podíamos reunirnos). Finalmente, fue completado por todo el equipo. A partir de ahí, construimos el documento Modelado de la Aplicación entre David y yo, siendo supervisado y finalizado por Jorge. De ahí pasamos a construir el portal web. Elegimos Wordpress por sus prestaciones y también porque ya habíamos trabajado en Software Corporativo con él. La elección de un Hostinger gratuito nos supuso problemas a la hora de subir contenido, ya que nos limitaba el rendimiento y nos hacía perder mucho tiempo. Ahí, tengo que agradecer a David la paciencia que tuvo para finalizarlo. Entre todos decidimos el tema, así como el enfoque que íbamos a dar el contenido y los plugins que íbamos a utilizar. A continuación, comenzamos a construir la aplicación web. Al haber dado prácticas en empresa y asignaturas como Tecnología de la Programación o Programación Evolutiva, pudimos darle un enfoque más realista y usar un framework como Spring que no habíamos aprendido en la carrera. He de agradecer a Jorge que nos ayudó cuando tuvimos algún problema, ya que él ha 81 trabajado con esta herramienta. Dado que los tres teníamos conocimientos avanzados en Java tampoco tuvimos muchos problemas, la programación fue realizada el grupo y algunos módulos fueron repartidos, fui el encargado de realizar la vista del transportista y la gestión de transporte en la vista del Empresario. Finalizamos la memoria, realizando los siguientes apartados: “Desarrollo de la solución” y “Sistema desarrollado”. Fueron realizados de manera conjunta, explicando detalladamente el desarrollo de la aplicación, así como mostrando mediante imágenes cual es el resultado del trabajo. Por último, comenzamos a realizar y preparar la exposición. Quería agradecer a nuestro director de proyecto Santiago por guiarnos y ayudarnos, así como a mis compañeros de equipo David y Jorge por su compañerismo y apoyo en los momentos difíciles. 8.3. Contribución de Jorge Utrilla Olivera Quiero resaltar que la distribución del trabajo llevado a cabo para la realización de este Trabajo de Fin de Grado (TFG), ha sido equitativa y que mis compañeros han tenido una gran predisposición para resolver los problemas que han ido surgiendo y conseguir sobradamente los objetivos que nos marcamos. A continuación, se van a explicar mis contribuciones en este proyecto. En primer lugar, me documenté sobre los posibles frameworks que podrían servir para la realización del trabajo, así como los servidores donde poder alojarlo ya que, nuestra idea era su desarrollo en Java. Después de tener la primera reunión con el profesor y director del TFG, se comenzaron a realizar los diferentes apartados de la memoria, como son la “Introducción”, “Descripción” y “Estado del arte”. Para su desarrollo se hicieron varias reuniones para fijar las bases del proyecto. Una vez finalizados, tuvimos una visión global del TFG y así, poder comenzar con el desarrollo de un prototipo de la aplicación, con la herramienta Balsamiq Mockups. Para llevar a cabo estos prototipos comencé junto a David a efectuar las pantallas comunes para, posteriormente, poder reutilizarlas. Del mismo modo, se desarrolló el primer módulo, de registro e inicio de sesión. 82 Una vez acabado, y teniendo las plantillas para la realización de las diferentes pantallas de los mockups, se decidió dividir el trabajo para poder ejecutarlo de manera más rápida. Por ello, me dispuse a elaborar los siguientes módulos: • Jefe - Módulo veterinario. • Jefe - Módulo contabilidad. • Veterinario - Módulo explotación. • Veterinario - Módulo ofertas. • Veterinario - Módulo contabilidad. Una vez finalizado, todos los integrantes del grupo tuvimos una reunión para revisar los mockups y realizar las correcciones oportunas. A continuación, seguimos elaborando la memoria, más concretamente los apartados “Planteamiento de la solución” y “Descripción de la solución”. Éstos son los que más tiempo dedicamos ya que, en ellos, se incrementa el nivel de detalle de la redacción y se describen aspectos más técnicos. Para llevarlo a cabo, tuvimos varias reuniones y correcciones por parte del profesor, al cual agradecer su paciencia, sobre todo en este apartado, ya que no conseguíamos un resultado óptimo. Una vez finalizados, y con toda la información anterior, se decidió desarrollar el documento de “Especificación de Requisitos”, donde tuvimos una primera reunión en la que se estructuró. En éste, me encargué de realizar el apartado de “Introducción” y colaboré en la elaboración de “Requisitos específicos”. Posteriormente, nos reunimos para la puesta en común, revisar el documento y realizar las correcciones necesarias. Por otra parte, para la elaboración del “Plan de proyecto” tuvimos una reunión inicial, en la cual se estructuró el documento y se realizó el apartado “Introducción”, además de repartir los restantes entre los integrantes del equipo. Me encargué de la realización de la sección de “Estimaciones del proyecto”. Para finalizar, se mantuvo una reunión en la cual se unieron todas las partes, se corrigieron y se realizaron los apartados “Organización del equipo” y “Mecanismos de seguimiento y control”. 83 Finalizado lo anterior, se comenzó con el desarrollo del “Proyecto de Modelado”, el cual fue desarrollado con la herramienta IBM-Rational Software Architect. Se utilizó ésta por la experiencia que teníamos con ella, ya que la usamos en la asignatura Ingeniería del Software. En el “Proyecto de Modelado” se repartieron las tareas. Las que me asignaron fueron la realización de los módulos “Animales”, “Empleo” y “Alimentación” del modelo de diseño. La Arquitectura del “Modelo de diseño” así como el “Modelo de despliegue” se realizó en equipo. Al acabar, mis compañeros se encargaron de su documentación. En cuanto al portal web, ha sido un trabajo de equipo. Se comenzó analizando los diferentes hostings gratuitos, para decidir en cuál alojaríamos el portal web. El principal problema que encontramos fue el rendimiento que el hosting nos ofrecía a la hora de subir contenido, ya que al realizar varias subidas simultáneamente, se producían pérdidas de conexión con la base de datos y el portal quedaba off-line durante unos minutos. Por este motivo, se decidió no trabajar sobre éste de forma simultánea. Esto nos llevó a crear nuestros entornos de prueba en local, antes de subir contenido o investigar sobre los plugins que podríamos instalar en el portal. Al trabajar cada uno en entornos de prueba, se pudo profundizar en la investigación y configuración de estos plugins, sin miedo a que el hosting se quedara inoperativo durante un tiempo. Por otra parte, el desarrollo de la aplicación Java lo comencé con el objetivo de poder dar una estructura al proyecto y así, facilitar el trabajo a mis compañeros. Además, al haber trabajado con Spring Boot, que es framework elegido para el desarrollo de la parte del back-end, pude encargarme de su configuración y seguridad que, desde mi punto de vista, es lo más complicado. Una vez la aplicación Java constaba de una estructura y de la seguridad necesaria, realicé el módulo de registro e inicio de sesión para, posteriormente, enseñar a mis compañeros como trabajar con Spring Boot, debido a que ellos nunca habían trabajado con éste. En cuanto a la parte del front-end, la realizamos en JSP y me encargué del desarrollo de las primeras vistas de la aplicación, ya que tengo 84 conocimientos mínimos sobre esta tecnología para, posteriormente, poder guiar al resto de los miembros del grupo. Cabe destacar que en la realización de la aplicación he profundizado en los conocimientos que tenía sobre Spring Boot e incrementado los que tenía sobre JSP y JSTL. Una vez que mis compañeros obtuvieron las nociones básicas para poder desarrollarla, se reparti el desarrollo de los módulos que la componen. Al concluir el desarrollo de la aplicación Java y del portal web, ya teníamos los contenidos necesarios para continuar con la elaboración de la memoria, en concreto los apartados “Desarrollo de la solución” y “Sistema desarrollado”. Como se ha dicho anteriormente, cabe destacar que la carga de trabajo de los integrantes del TFG ha sido equitativa y que el desarrollo de este TFG ha sido posible gracias al buen ambiente y predisposición de todos los integrantes, además de tener un gran director, que nos ha ayudado y guiado en todo momento. 85 9. Conclusiones Una vez concluido el proyecto, la mejor forma de tomar conciencia sobre todo el trabajo realizado es comparar la idea inicial del proyecto que queríamos desarrollar con el resultado de este TFG. Nuestra idea era hacer una aplicación que facilitara la gestión de una explotación y lo hemos conseguido sobradamente. Hemos abordado un conjunto de funcionalidades relevantes de cualquier explotación, dotándola de una gran flexibilidad para ser utilizada en explotaciones de diferentes características. El hecho de haber mantenido numerosas reuniones con los técnicos especialistas que intervienen de alguna manera en la gestión de una explotación ganaderas nos ha permitido desarrollar una aplicación que está teniendo actualmente un uso real, esto nos permitirá ampliar nuestro conocimiento del sector y ampliar las funcionalidades de la aplicación. Ninguno de los integrantes del grupo había realizado un proyecto de tal magnitud de forma completa. La gestión de riesgos y planificación ha sido un factor fundamental para garantizar el éxito del proyecto. Asimismo, se han debido integrar diferentes tecnologías algunas de las cuales novedosas para nosotros. Consideramos que este aprendizaje nos va a resultar de gran utilidad en nuestra trayectoria profesional. Un aspecto relevante de este proyecto es la realización de una tienda que facilitará la comercialización de los productos de las explotaciones del empresario. La tienda implementada se integra con la base de datos de productos de nuestra aplicación y con la contabilidad de la empresa. Dispone de un conjunto de módulos que permite la realización de pagos por diversos medios, así como la contratación de servicios externos como envíos urgentes de productos frescos. Estamos valorando la posibilidad de ofrecer a las empresas un servicio integral de la gestión de la aplicación que contemple el alojamiento, mantenimiento, resolución de incidencias y gestión de redes sociales. Todo esto lo demostramos con el completo funcionamiento del portal como la aplicación web, las cuales están alojadas y disponibles en sus respectivos host. 86 Además, añadimos los documentos que demuestran que hemos aplicado técnicas de ingeniería software como el plan de proyecto, la especificación de requisitos y el proyecto de modelado. Todo ello se encuentra disponible en los anexos. Por último, este trabajo de fin de grado nos ha aportado una gran experiencia en los procedimientos y pasos a seguir en futuros proyectos, además de aprender nuevas tecnologías que actualmente se están utilizando en el mercado laboral pero que no habíamos podido aprender durante el grado. 87 9. Conclusions Once the project is finished, the best way to become aware of all the work done is to compare the initial idea of the project we wanted to develop with the result of this TFG. Our original idea was to creat a web interface that would facilitate the management of a livestock farm and we have surpassed our expectations. In addition, our main idea arose from the need of one of our relatives to manage a livestock farm, so our application has a real use. At the beginning of the development of the application, the opinions of potential users of this application were taken into account, as well as the experience of technical specialists who intervene in some way in the management of a livestock farm, which gave us a global vision of what our application and what functionalities should contain. None of the members of tour team had ever done such an enormous project or undertaken such an amount of research. We feel that the everything we have learnt will serve us for the future. A relevant aspect of this project is the realization of a store that facilitates the commercialization of products of exploitations of employer. The store implemented is integrated with the product database of our application and with the company's accounting. A set of modules has been implemented that allow payments to be made through various means, as well as the contracting of external services such as urgent shipments of fresh products. We are evaluating the possibility of offering companies a comprehensive service of application management that includes hosting, maintenance, resolution of incidents and management of social networks. In addition, we add the documents that have been applied engineering techniques such as the project plan, the requirements specification and the modeling project. Everything is available in the annexes. Finally, this end-of-degree project has given us a great experience in the procedures and steps to follow in future projects, as well as learning new technologies that are currently being used in the labour market but that we had not been able to learn during the degree. 88 ❖ Anexos ➢ Portal Web El portal web está disponible a través del siguiente enlace: https://gesgan.000webhostapp.com/ ➢ Aplicación Web La aplicación web está disponible a través del siguiente enlace: http://gesgan.jelastic.cloudhosted.es ➢ Código fuente El código de fuente de la aplicación está accesible en: https://drive.google.com/file/d/1Yv3l1fW86GBRGhBCybmJGxLDqsR4S6x/view?usp=sharing ➢ Mockups Los Prototipos de la aplicación están disponibles tanto en PDF como en el proyecto de Balsamiq. https://drive.google.com/file/d/1nPgfjYhRAfMD05VZu-MCpiAhQftiD1n/view?usp=sharing ➢ Modelado de la aplicación Este documento contiene toda la información del modelado de la aplicación, como son diagramas de caso de uso, de actividad, de secuencia… https://drive.google.com/file/d/1lDcnQtJK02j7nEOVwADkcqPmhKN7Wvca/view ?usp=sharing ➢ Proyecto de modelado Todos los diagramas pueden consultarse directamente en formato imagen en las carpetas del siguiente enlace, sin necesidad de importar el proyecto. No obstante, también se encuentran los archivos del proyecto a través de este enlace: https://drive.google.com/file/d/1_COKC1EQpfjGo4_ZLrXxK9wK4WodsD9/view?usp=sharing