3.1. Tecnologías Empleadas - diezMalena/api_FCTFiller GitHub Wiki
Tecnologías cliente
A continuación se nombrarán las tecnologías empleadas en la parte del cliente para el desarrollo de la aplicación.
Angular
Para el desarrollo en la parte de cliente ha sido utilizado el framework de Angular. Esto ha permitido el desarrollo de una SPA (Single Page Application) que nos permite la reutilización de componentes y la comunicación asíncrona con el servidor, lo que agiliza considerablemente la carga del contenido, pues solo carga los componentes necesarios utilizando lazy-loading.
Versión empleada: 13.0.3.
Librerías utilizadas
Bootstrap
Para la maquetación y estructura de la aplicación web ha sido empleado la biblioteca Bootstrap, esta permite la aplicación de estilos y de una maquetación limpia y estructurada de un modo sencillo. Esta permite la aplicación de estilos predefinidos para ciertos componentes de la aplicación permitiendo un gran ahorro de tiempo y obteniendo unos resultados óptimos.
Para el empleo de Bootstrap se utiliza la librería ng-bootstrap en su versión 12.0.0.
ngx-charts
Para la gestión y la muestra de gráficas se emplea ngx-charts en su versión 20.1.0.
Data-Tables
Para la muestra de tablas se ha utilizado la librería Data-Tables en su versión 13.0.1.
Signaturepad
Para la muestra de tablas se ha utilizado la librería angular2-signaturepad en su versión 4.0.2.
File-saver
Para la subida de ficheros de gran volumen de datos se ha emplea la librería File-saver en su versión 2.0.5.
ngx-dropzone
Para la subida de ficheros con sistema drag&drop se ha utiliza la librería ngx-dropzone en su versión 3.0.0.
ngx-toastr
Para la notificación con mensajes en pantalla se emplea la librería ngx-toastr en su versión 14.2.1.
popper.js
Para la notificación con mensajes en pantalla se emplea la librería popper.js en su versión 1.16.1.
Tecnologías servidor
Laravel
Para el desarrollo en del código del lado del servidor ha sido empleado el framework de Laravel. Este framework nos ayuda mediante su sistema de paquetes facilitando el trabajo del desarrollo con su MVC (Modelo Vista Controlador).
Versión empleada: 8.83.5.
PHP
El lenguaje empleado del lado de servidor ha sido PHP, en su versión 7_4_28.
Base de Datos
Para el almacenamiento de datos y la realización de consultas empleamos el gestor de base de datos MySQL en su versión [8.0.29-0ubuntu0.22.04.2].
Librerías utilizadas
DomPDF
DomPDF es empleado para la descarga de ficheros pdf mediante su generación a través de vistas en su versión 1.0.
Laravel-Cors
El paquete laravel-cors permite enviar encabezados de uso compartido de recursos de origen cruzado con la configuración de middleware de Laravel. La versión empleada ha sido la 2.2.0.
Guzzle
Como cliente HTTP se emplea la librería Guzzle en su versión 7.0.1.
JWT
Para la autenticación por token se emplea la librería JWT en su versión 4.0.
PhpSpreadsheet
PhpSpreadsheet es una biblioteca escrita en PHP puro y ofrece un conjunto de clases que le permiten leer y escribir varios formatos de archivo como .docx. Se ha empleado la versión 1.23.
PHPWord
PHPWord es una biblioteca escrita en PHP puro que proporciona un conjunto de clases para escribir y leer desde diferentes formatos de archivos de documentos. Se ha empleado en su versión 0.18.2.
Otras tecnologías empleadas:
SCRUM - Taiga
Para la realización del trabajo se ha seguido una metodología Scrum, se trata de un marco de trabajo para el desarrollo ágil, en este caso de software, porque es una metodología empleada en otras industrias. Esta metodología busca la aplicación de una serie de buenas prácticas para el trabajo colaborativo en equipo. Estas serían:
- Adoptar una estrategia de desarrollo incremental en lugar de una planificación y ejecución completa.
- Basar la calidad del resultado más en conocimiento tácito de las personas en equipos auto organizados, que en la calidad de los procesos empleados.
- Solapar las diferentes fases del desarrollo, en lugar de realizar una tras otra en un ciclo secuencial o en cascada.
Para ello se asignan roles a los diferentes actores del proyecto.
- Product Owner (o Propietario/a del producto)
- Scrum Master (o Facilitador/a)
- Desarrollador/es.
El flujo de trabajo se agiliza y gestiona de un modo más eficaz gracias a los Sprint
(periodos asignados para la realización de tareas), los Scrum Diarios
o Daily Standup en los que se todo el equipo comenta los posibles problemas y su planificación, las Revisiones del Sprint
y las Retorspectivas
.
Para la gestión de esta metodología de trabajo ha sido empleada la herramienta Taiga, un software libre y de código abierto, creado para gestionar y colaborar en proyectos ágiles.
Otra herramienta de utilidad ha sido Trello, una herramienta flexible para la gestión del trabajo, con la que los equipos pueden diseñar planes, colaborar en proyectos, organizar flujos de trabajo y hacer un seguimiento del progreso de una manera visual y productiva.
Balsamiq
Se trata de una herramienta para la creación de Wireframes de una forma muy sencilla y amigable. Se ha empleado para agilizar y favorecer la planificación de las diferentes partes del proyecto con respecto a su visualización. Los wireframes Balsamiq disponibles pueden verse en el apartado wireframes de esta wiki.
La versión empleada ha sido la 4.5.3.
Git & GitHub
Lo primero y más importante es diferenciar entre Git y GitHub,
- Git es una herramienta de código abierto que los desarrolladores instalan localmente para gestionar el código fuente.
- GitHub es un servicio en línea al que los desarrolladores que utilizan Git pueden conectarse y cargar o descargar recursos.
La versión de Git empleada ha sido la 2.35.1. En el caso de GitHub se ha utilizado la plataforma online existente.
Apache
El servidor HTTP Apache es un servidor web HTTP de código abierto, para plataformas Unix, Microsoft Windows, Macintosh y otras, que implementa el protocolo HTTP/1.1 y la noción de sitio virtual según la normativa RFC 2616. La versión empleada ha sido la 2.4.52 (Ubuntu).