graduado en ingeniería informáticaoa.upm.es/58164/1/tfg_jaime_jose_monjo_rodriguez.pdflas...

55
1 Graduado en Ingeniería Informática Universidad Politécnica de Madrid Escuela Técnica Superior de Ingenieros Informáticos TRABAJO FIN DE GRADO Diseño de un sistema de control de gerencia y de stock Autor: Jaime José Monjo Rodríguez Director: Tomás San Feliu Gilabert MADRID, ENERO 2020

Upload: others

Post on 24-Jul-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

1

Graduado en Ingeniería Informática

Universidad Politécnica de Madrid

Escuela Técnica Superior de Ingenieros Informáticos

TRABAJO FIN DE GRADO

Diseño de un sistema de control de gerencia y de stock

Autor: Jaime José Monjo Rodríguez

Director: Tomás San Feliu Gilabert

MADRID, ENERO 2020

Este Trabajo Fin de Grado se ha depositado en la ETSI Informáticos de la Universidad Politécnica de Madrid para su defensa.

Trabajo Fin de Grado Grado en Ingeniería Informática Título: Diseño de un Sistema de Control de Gerencia y de Stock Enero 2020

Autor: Jaime José Monjo Rodríguez Tutor:

Tomás San Feliu Gilabert Lenguajes y Sistemas Informáticos e Ingeniería de Software ETSI Informáticos Universidad Politécnica de Madrid

Agradecimientos:

A mis padres, por cuidarme desde el primer día. A mis hermanas, por estar siempre ahí.

A Tomás, por confiar en mí.

Gracias.

i

TABLA DE CONTENIDO

TABLA DE FIGURAS ................................................................................................iii

RESUMEN .................................................................................................................. vi

ABSTRACT ............................................................................................................... vii

1. INTRODUCCIÓN ................................................................................................. 1

1.1. Motivación...................................................................................................... 2

1.2. Objetivos ........................................................................................................ 2

2. TRABAJOS PREVIOS .......................................................................................... 4

2.1. PHP ................................................................................................................ 4

2.2. Laravel 5.8 ...................................................................................................... 5

2.3. Modelo Vista Controlador ............................................................................... 6

2.4. Interfaz de Programación de Aplicaciones....................................................... 7

3. DESARROLLO ..................................................................................................... 8

3.1. Definición de Requisitos ................................................................................. 8

3.1.1. Requisitos No Funcionales .......................................................................... 8

3.1.2. Requisitos Funcionales ................................................................................ 9

3.2. Estudio de Mercado ...................................................................................... 10

3.2.1. Opciones Núcleo ....................................................................................... 10

3.2.2. Selección Laravel 5.8 ................................................................................ 11

3.3. Sistema Actualización ................................................................................... 11

3.4. Módulo Recursos Humanos .......................................................................... 13

3.5. Módulo Stock ............................................................................................... 15

4. RESULTADOS ................................................................................................... 17

4.1. Pruebas Núcleo ............................................................................................. 17

4.2. Pruebas Sistema Actualización ...................................................................... 27

4.3. Pruebas Módulos Recursos Humanos y Stock ............................................... 29

5. CONCLUSIONES ............................................................................................... 35

5.1. Dificultades .................................................................................................. 35

5.2. Líneas Futuras .............................................................................................. 36

ii

6. BIBLIOGRAFÍA ................................................................................................. 38

iii

TABLA DE FIGURAS

Imagen 1 - ERP [3] ....................................................................................................... 1 Imagen 2 - Logo PHP [6] ............................................................................................. 4 Imagen 3 - Logo Laravel 5.8 [14] ................................................................................. 5 Imagen 4 - Arquitectura MVC [22] ............................................................................... 6 Imagen 5 – API [24] ..................................................................................................... 7 Imagen 6 - Sistema de Actualización ........................................................................... 12 Imagen 7 - Base de Datos RRHH ................................................................................ 14 Imagen 8 - Base de Datos Stock .................................................................................. 15 Imagen 9 - Prueba Registro Usuario ........................................................................... 18 Imagen 10 - Resultado Registro Usuario ..................................................................... 18 Imagen 11 - Prueba Registro Usuario Incorrecto ........................................................ 19 Imagen 12 - Resultado Registro Usuario Incorrecto .................................................... 19 Imagen 13 - Prueba Comprobar Disponibilidad de Nombre Ocupado......................... 20 Imagen 14 - Resultado Comprobar Disponibilidad de Nombre Ocupado .................... 20 Imagen 15 - Prueba Comprobar Disponibilidad de Correo Ocupado .......................... 21 Imagen 16 - Resultado Comprobar Disponibilidad de Correo Ocupado ...................... 21 Imagen 17 - Prueba Comprobar Disponibilidad de Nombre........................................ 22 Imagen 18 - Resultado Comprobar Disponibilidad de Nombre.................................... 22 Imagen 19 - Prueba Comprobar Disponibilidad de Correo ......................................... 23 Imagen 20 - Resultado Comprobar Disponibilidad de Correo ..................................... 23 Imagen 21 - Prueba Inicio de Sesión ........................................................................... 24 Imagen 22 - Resultado Inicio de Sesión ....................................................................... 24 Imagen 23 - Prueba Inicio de Sesión Incorrecto .......................................................... 25 Imagen 24 - Resultado Inicio de Sesión Incorrecto ...................................................... 25 Imagen 25 - Prueba Eliminar Usuario ........................................................................ 26 Imagen 26 - Resultado Eliminar Usuario .................................................................... 26 Imagen 27 - Prueba Eliminar Usuario Incorrecto ....................................................... 27 Imagen 28 - Resultado Eliminar Usuario Incorrecto ................................................... 27 Imagen 29 - Prueba Actualizar Núcleo ........................................................................ 28 Imagen 30 - Resultado Actualizar Núcleo.................................................................... 28 Imagen 31 - Prueba Actualizar Núcleo Incorrecto ...................................................... 29 Imagen 32 - Resultado Actualizar Núcleo Incorrecto .................................................. 29 Imagen 33 - Prueba Instalar Módulo .......................................................................... 30 Imagen 34 - Resultado Instalar Módulo ...................................................................... 30 Imagen 35 - Prueba Instalar Módulo Incorrecto ......................................................... 31 Imagen 36 - Resultado Instalar Módulo Incorrecto ..................................................... 31 Imagen 37 - Prueba Desinstalar Módulo ..................................................................... 32

iv

Imagen 38 - Resultado Desinstalar Módulo................................................................. 32 Imagen 39 - Prueba Desinstalar Módulo Incorrecto ................................................... 33 Imagen 40 - Resultado Desinstalar Módulo Incorrecto ............................................... 33 Imagen 41 - Prueba Dar Permisos Sobre Módulo ....................................................... 34 Imagen 42 - Resultado Dar Permisos Sobre Módulo ................................................... 34

vi

RESUMEN

Para que una empresa triunfe hoy en día es necesaria una correcta gestión tanto a nivel humano como a nivel material. A pesar de ser un principio común para una buena administración, muchas empresas no lo llevan a la práctica. Esto puede ser debido a un crecimiento repentino o a una descentralización de la empresa, por lo que la tarea se vuelve más complicada.

Este es el motivo por el cual este trabajo busca la creación de un sistema que permita controlar perfectamente los recursos de los que dispone una empresa. Se comenzará con la creación del propio sistema y con la inclusión de las herramientas necesarias para la gestión de recursos humanos y de materiales. Además, el sistema se dejará listo para que se pueda ampliar en un futuro sin mayores dificultades y sin perder la funcionalidad de la que se disponga hasta el momento.

Para tratar el problema tanto de la micro como de la macro gestión de una empresa, en el ámbito del control de la gerencia, se creará un núcleo de funcionamiento que permita el uso de módulos diferenciados, con un sistema de privilegios. Por otra parte, con vistas a que el sistema no quede desuso, se implementará un sistema de actualización de tal manera que el núcleo se pueda actualizar para su adaptación a posibles necesidades que surjan en un futuro.

El sistema cumplirá con los estándares de un sistema de planificación de recursos empresariales (ERP), los cuales se ocupan de la gestión interna de la empresa con personalización de la misma. La diferencia con el resto de sistemas de este tipo, será la de potenciar el uso del mismo reduciendo su necesidad de mantenimiento.

Por otra parte, a pesar de ser un sistema de gestión interna, al deber poder usarse por distintos usuarios en distintas zonas y al mismo tiempo, tendrá que adaptarse para su uso en red.

Resumiendo, este trabajo en concreto pretende gestionar: el sistema de almacenaje y stockage de una empresa, pudiendo así controlar a sus empleados, el stock, la cantidad de salidas y entradas de material, nóminas, entrada y salida de trabajadores, y coste y beneficio del almacenaje y venta.

vii

ABSTRACT

Nowadays, in order to get a business’ success, it is necessary a correct management in both levels: human and material. Despite the fact of being a common principle for a successful management, many enterprises, does not take it into account. This can happen because of a sudden increase of the business, or a decentralization of the company. As a result, the task becomes much more difficult to be done.

This is the reason why this project looks for the creation of a system that allows as to handle the resources available for a business. There will start by creating the own system, including in it the tools needed to manage both human resources and material ones. Moreover, the system will be prepared to be able to be widen in the future without loss of service.

To solve micro and macro management problems that might happen in this field, there will make a working nucleus that let us use different units, with a privileges system. Apart from that, the system will be uploaded, so it will never be useless. The nucleus will be adapted to every single necessity, which may arise in the future.

The system will accomplish the Enterprise Resource Planning (ERP) standards, which take responsibility from inner business management. The fact that will make this system different from others is that it will be able to develop its own use but reducing its maintaining necessity.

On the other hand, it is an internal management system, as it has to be used by different users, in different places and at the same time. It will need to be adapted to be used online.

Briefly, this projects aims at managing a business’ storage system, so bosses will be able to control: workers, stock products, materials, salaries and rewards.

1. INTRODUCCIÓNDiseño de un sistema de control de gerencia y de stock JJMR - TFG

1

1. INTRODUCCIÓN

La gestión de recursos de una empresa es una compleja tarea, pero cuando es llevada a cabo correctamente es una gran ayuda para el crecimiento de la misma. Se entiende como recurso un medio de cualquier clase que, en caso de necesidad, sirve para conseguir lo que se pretende [1]. Dentro de estos elementos se engloban recursos materiales, humanos, financieros y tecnológicos:

Recursos materiales: Bienes tangibles, propiedades de la empresa. Recursos humanos: Conjunto de empleados de la empresa. Recursos financieros: Dinero propio y ajeno de la empresa. Recursos tecnológicos: Herramientas e instrumentos de la empresa.

A raíz de la existencia de estos recursos y de la necesidad de gestión nacieron los sistemas de planificación de recursos empresariales (ERP), es decir, nacieron los sistemas de información gerenciales que integran y manejan los negocios asociados a las operaciones de producción y los aspectos de distribución de la producción de bienes y servicios [2]. Administran temas como la producción, el inventario y/o los recursos humanos de una forma modular.

Imagen 1 - ERP [3]

Las características fundamentales que hacen a los ERP diferentes en comparación con otros softwares empresariales de gestión son [4]:

Flexibilidad: Adaptación a las transformaciones de la empresa. Modularidad: Módulos abiertos, creación sin afectar al resto. Comprensibilidad: Dinero propio y ajeno de la empresa. Conectividad: Herramientas e instrumentos de la empresa.

1. INTRODUCCIÓNDiseño de un sistema de control de gerencia y de stock JJMR - TFG

2

Por encima de todas, su gran característica es el ser modular, ya que permite la actualización del sistema de una forma poco costosa ya que no interfiere en el uso de los módulos previamente instalados, de tal manera que se puedan añadir funcionalidades.

1.1. Motivación

Una vez conocido el gran problema que ocasiona el ámbito de control de gerencia de una empresa, podemos compartir la principal finalidad del proyecto, la creación de un ERP propio que permita el uso de módulos diferenciados, con un sistema de roles bien definido y preparado para actualizaciones potenciales.

Dentro del sistema, se va a buscar que la configuración de los módulos, sea simple consiguiendo así que los usuarios encargados de la gestión de los mismos puedan utilizarlos de una manera sencilla e intuitiva. Por ejemplo, que el encargado del módulo de Recursos Humanos (RRHH) pueda determinar el rol del resto de usuarios dependiendo de su puesto.

Muchos de los sistemas de gestión actuales no son modulares. De tal manera que al querer realizar una actualización es necesario la modificación y parada de todo el sistema. Esto se soluciona en los ERP, ya que, al ser los módulos diferentes y exclusivos, al querer mejorar uno o lanzar uno nuevo, solo se tiene riesgo de perder la funcionalidad del módulo que se está modificando en cada momento.

La principal mejoría que se busca llevar a cabo respeto al resto de sistemas ERP, es la reducción de la necesidad del mantenimiento. De esta manera, una vez entregado el servicio al cliente este podrá ser capaz de gestionarlo y mejorarlo siempre que tenga una base de conocimientos.

1.2. Objetivos

El proyecto tiene como principal objetivo la creación de un sistema que facilite la gestión de almacenaje y stockage de una empresa, de tal manera que se mejore el método actual que muchas veces lleva a gastos o inversiones, que no son necesarias, simplemente por el hecho de no conocer de los recursos de los que la empresa dispone en ese momento.

Para garantizar la consecución de este objetivo se ha desglosado en subjetivos:

1. INTRODUCCIÓNDiseño de un sistema de control de gerencia y de stock JJMR - TFG

3

Análisis del mercado y las necesidades del proyecto para la elección de lenguaje de programación que se adapte a las plataformas de despliegue.

Desarrollo de un núcleo funcional y seguro para el control de los distintos roles.

Desarrollo de un sistema de módulos que permita actualizarse e implementar estos de terceros si así se desea.

Desarrollo de un módulo de gestión de RRHH con: o Gestión de entrada y salida de empleados. o Gestión de nóminas de empleados. o Designación de limitaciones o control sobre módulo o tarea que se

especifique. Desarrollo de un módulo de gestión de stock con:

o Control de material existente en la ubicación. o Gestión de ubicaciones y subdivisiones de la misma. o Control de salida y entrada de material. o Coste y beneficio del almacenaje y venta.

Creación de un despliegue en multiplataforma con salida en red.

Por lo tanto, este trabajo busca el solventar los problemas de la micro y de la macro gestión de una empresa, en el ámbito del control de la gerencia. Por supuesto, una vez finalizado será funcional y preparado para la inclusión de nuevas funcionalidades a partir de la creación de nuevos módulos.

2. TRABAJOS PREVIOSDiseño de un sistema de control de gerencia y de stock JJMR - TFG

4

2. TRABAJOS PREVIOS

En este capítulo se describirá el lenguaje (PHP con Laravel 5.8) utilizado para el desarrollo del proyecto, así como la arquitectura Modelo Vista Controlador (MVC) y la interfaz de programación de aplicaciones (API) usada para el mismo.

2.1. PHP

PHP (acrónimo recursivo de PHP: Hypertext Preprocessor) es un lenguaje de código abierto muy popular especialmente adecuado para el desarrollo web y que puede ser incrustado en HTML [5].

Imagen 2 - Logo PHP [6]

El uso de PHP está extendido principalmente en tres campos [7]:

Scripts del lado del servidor. Scripts desde la línea de comandos. Escribir aplicaciones de escritorio.

El campos más tradicional es en el lado del servidor, donde se pueden realizar acciones como recopilar datos de formularios, generar páginas con contenidos dinámicos, o enviar y recibir cookies [7].

Cuando se usa PHP del lado del cliente, el código realmente es ejecutado en el servidor, generando HTML y enviándolo al solicitante. De esta forma se gana en seguridad, ya que el cliente recibe el resultado sin conocer el código. Por otra parte, el servidor se puede configurar para procesar ficheros HTML con PHP, de tal manera que posibles atacantes no sepan cómo está programado realmente el servidor [5].

2. TRABAJOS PREVIOSDiseño de un sistema de control de gerencia y de stock JJMR - TFG

5

Para ejecutar los scripts en Linux o en Windows, únicamente hace falta tener el analizador de PHP configurado, por lo que lo convierte en una posibilidad bastante simple de ejecutar tareas con regularidad. Además que PHP puede emplearse en todos los sistemas operativos principales, admitiendo la mayoría de servidores web [7].

A la hora de desarrollar aplicaciones de escritorio que sean totalmente independientes de una plataforma se posiciona como una alternativa PHP-GTK [8], una versión avanzada de PHP que facilita la creación de interfaces gráficas de usuario [7].

PHP fue creado en 1994, como un conjunto simple de ficheros binarios Common Gateway Interface (CGI) escritos en el lenguaje de programación C [9]. Sin embargo, no fue hasta junio de 1995, cuando el código fuente de PHP Tools se publicó. En este momento, tanto desarrolladores como usuarios trabajaron para la mejoría del mismo.

2.2. Laravel 5.8

Laravel [10] es un framework de código abierto para desarrollar aplicaciones y servicios web con PHP. Fue creado en 2011 y tiene gran influencia de frameworks como Ruby on Rails [11], Sinatra [12], y ASP.NET MVC [13].

Imagen 3 - Logo Laravel 5.8 [14]

Las características más destacables de Laravel son [10]:

Sistema de ruteo, RESTful [15]. Blade, motor de plantillas [16]. Peticiones Fluent [17]. Eloquent ORM [18]. Soporte para MVC. Uso de componentes de Symfony [19].

2. TRABAJOS PREVIOSDiseño de un sistema de control de gerencia y de stock JJMR - TFG

6

Laravel es un framework muy flexible que se adapta perfectamente a los

proyectos con arquitectura Modelo Vista Controlador. Por otra parte, es sencillo de entender y con gran funcionalidad de forma que facilita la modularidad.

A la hora de interactuar con bases de datos nos permite modificarlas sin

dependencia de la plataforma en la que se encuentren. Por lo que, en caso de necesidad de añadir más campos, se puede realizar de una forma sencilla. Además, las consultas a las diferentes bases de datos se realizan con un estándar unificado.

En concreto, una de las grandes ventajas del uso de Laravel 5.8 [18] es que es

una versión estable en la que se incluyen funcionalidades muy útiles a lo largo del proyecto como es el uso de Eloquent ORM [19], que trata a la base de datos de una forma orientada a objetos, y los componentes de Symfony [20].

2.3. Modelo Vista Controlador

El Modelo Vista Controlador (MVC) es un tipo de arquitectura software que utilizando 3 componentes, Vistas Modelos y Controladores, separa la lógica de la aplicación de la vista de una aplicación [21].

Imagen 4 - Arquitectura MVC [22]

El Modelo que muestra el área lógica, la Vista que presenta la interfaz de usuario y el Controlador que maneja los cambios de Vista [22].

2. TRABAJOS PREVIOSDiseño de un sistema de control de gerencia y de stock JJMR - TFG

7

El Modelo es la capa donde se trabaja con los datos, contiene los mecanismos para acceder y actualizar la información. Las Vistas contienen el código que va a producir la visualización de las interfaces de usuario, únicamente se encuentran los códigos que nos permite mostrar la salida. Los Controladores son el enlace entre las Vistas y los Modelos, de tal forma que contienen el código necesario para responder a las acciones requeridas [23].

2.4. Interfaz de Programación de Aplicaciones

Una interfaz de Programación de Aplicaciones (API) es un conjunto de definiciones y protocolos que se utiliza para desarrollar e integrar el software de las aplicaciones. Con su uso se simplifica el desarrollo de aplicaciones, ya que permite la comunicación entre productos y servicios sin necesidad de saber cómo se encuentran implementados [24].

Imagen 5 – API [24]

Las APIs permiten habilitar el acceso a recursos de una organización, manteniendo la seguridad y el control [24]. Una API no tiene por qué ser de acceso público, sino que puede servir para facilitar el acceso a datos únicamente a las personas interesadas y qué veamos oportunas.

En conclusión, las API son un medio simplificado para conectar la infraestructura de una empresa a través del desarrollo de aplicaciones nativas en la nube, permitiendo además el compartir los datos con clientes y usuarios externos [24].

3. DESARROLLO Diseño de un sistema de control de gerencia y de stock JJMR - TFG

8

3. DESARROLLO

3.1. Definición de Requisitos

En el proyecto se fijaron unos requisitos los cuales se debían de cumplir para el correcto desarrollo del mismo. Los requisitos, detallados a continuación, son tanto funcionales como no funcionales.

3.1.1. Requisitos No Funcionales

El sistema debería de cumplir los siguientes requisitos no funcionales:

Lenguaje modular Modelo Vista Controlador (MVC) Funcional en distintas plataformas Núcleo capaz de dar servicio a distintos clientes Conectividad entre todos sus componentes Sistema seguro

El primer requisito, lenguaje modular, se impuso de manera que se pudieran realizar futuras ampliaciones del sistema sin realizar grandes modificaciones en el código, ya que se encuentra en estado funcional.

El Modelo Vista Controlador, se impuso de manera que se separasen los componentes del sistema de forma que estuviese todo más estructurado.

Los requisitos de que fuese un sistema funcional en distintas plataformas y de que el núcleo fuese capaz de dar servicio a distintos clientes va de la mano. Es decir, la idea del proyecto es la creación de un sistema de gestión capaz de adaptarse a distintos entornos en los que se pueda requerir. La innovación con respecto a otros sistemas de este tipo es precisamente esto el ser multiplataforma.

Lógicamente al ser un sistema que muchas veces va a funcionar en remoto es necesario la conectividad entre todos sus componentes. De esta forma, garantizamos que múltiples usuarios puedan darle uso simultáneamente.

Por último, se quiere un sistema seguro. Hoy en día, es una de las características que más se prima en un sistema. La salvaguarda de los datos y el difícil acceso a ellos por personas ajenas a la organización es algo esencial.

3. DESARROLLO Diseño de un sistema de control de gerencia y de stock JJMR - TFG

9

3.1.2. Requisitos Funcionales

El proyecto está dividido en tres módulos. Cada módulo cumplirá los requisitos funcionales detallados a continuación:

Módulo núcleo

Registro de usuarios Login de usuarios Control de usuarios Modificación de usuarios Subidas de módulos externos Gestión de módulos Gestión de privilegios

Módulo RRHH

Control horario Nómina Control de futuros empleados Histórico personal de usuario Histórico laboral de usuario

Módulo STOCK

Material existente y ubicación Localización de productos en las ubicaciones Control de ventas y compras Coste de almacenaje Beneficio de ventas

El módulo núcleo es el cerebro del sistema. A él, solo tienen acceso los usuarios con privilegios que serán los encargados de la administración del resto de usuarios que necesiten interactuar con el resto de módulos. El núcleo conocerá toda la información del sistema en relación al resto de módulos y datos.

Los módulos RRHH y STOCK son dos ejemplos implementados de módulos que puede tener el sistema. Se ha decidido crear estos dos debido a ser muy genéricos debido a que cualquier empresa siempre va a tener trabajadores y recursos que administrar.

3. DESARROLLO Diseño de un sistema de control de gerencia y de stock JJMR - TFG

10

Al ser un trabajo con vistas a futuro, en caso de querer añadir más módulos simplemente habría que disponer de conocimientos técnicos para su desarrollo. El núcleo está pensado para poder añadir más módulos sin pérdida de servicio y por consecuencia más funcionalidades.

3.2. Estudio de Mercado

Tras la definición de los requisitos y en base a ellos había que decidir cómo se iba a implementar el sistema. Para el desarrollo del proyecto se buscaba un lenguaje modular, es decir, un lenguaje con el que se pudieran realizar futuras ampliaciones sin grandes modificaciones en el código que ya se encuentra en estado funcional.

Al trabajar con un lenguaje modular, el programa se puede dividir en distintos módulos pasando a ser más legible y manipulable. Al ser más manipulable nos da la libertad de poder integrar otros módulos funcionales externos en futuras versiones.

Además, se ha buscado un lenguaje con fácil adaptación al Modelo Vista Controlador (MVC). De tal manera, que se pudiese extender a distintas plataformas sin necesidad de modificar el núcleo, el cual podrá dar servicio a distintos clientes.

3.2.1. Opciones Núcleo

La primera decisión a tomar era la elección de framework para el núcleo. La primera idea fue usar JavaEE 8 [25] con el framework Hibernate [26]. Sin embargo, se descartó debido a que al ser Java un lenguaje compilado sería muy costoso el desarrollo de la parte modular y el manejo de futuras actualizaciones del software.

Se barajó también la idea de un lenguaje interpretado como Python [27]. La idea era usarlo con el framework Django [28], pero se descartó por la imposibilidad de un MVC funcional que asegurase mantener su estado funcional en todos los sistemas operativos.

Dentro de PHP, otro lenguaje interpretado, se valoraron las ideas de usar el framework PDO [29] o Laravel. PDO se descartó debido a los altos tiempos que había que dedicar al desarrollo del sistema de rutas y conectividad, además de los posibles fallos de seguridad que podían surgir en relación a este desarrollo.

Por lo tanto, se optó por el framework Laravel ya que cumplía todos los requisitos expuestos anteriormente sin ningún problema adicional. Como una primera opción, se barajó la versión 5.2 [30] debido a su gran estabilidad, pero se acabó

3. DESARROLLO Diseño de un sistema de control de gerencia y de stock JJMR - TFG

11

seleccionando la versión 5.8. A pesar de que la 5.8 no dispone de la misma estabilidad, también es alta, y se decidió primar la seguridad, ya que está última disponía de actualizaciones de seguridad no presentes en la anterior. De esta manera además se ganó tiempo de vida del núcleo sin necesidad de mantenimiento.

3.2.2. Selección Laravel 5.8

Finalmente se seleccionó PHP con Laravel 5.8. Este framework se eligió por dos funcionalidades integradas como son Simfony y Eloquent. A pesar de que son también frameworks de PHP, todas sus funcionalidades se encuentran disponibles en Laravel.

Simfony se engloba en Laravel como su núcleo de funcionamiento, aportando su sistema de rutas, de tal forma que se puede controlar los tipos de acceso y destinos, que cada cliente quiera llevar a cabo, gracias a su middleware. En otras palabras, un GET irá a una clase distinta que un POST, de tal manera que se podrá aumentar la seguridad siendo más estrictos con los POST, debido a que modificarán la base de datos. Los middlewares serán los encargados de la seguridad entre las distintas peticiones que se produzcan.

Eloquent, por su parte, es importarte a la hora de realizar las conexiones a la base de datos ya que estandariza todos los lenguajes de bases de datos. Por lo que independientemente de tener clientes que trabajen con distintas bases de datos como pueden ser MySQL o MariaDB, no se necesitaría realizar ninguna modificación en el núcleo, ya que está pensado para permitir cualquier tipo de BBDD relacional.

Además, otra característica importante a destacar es la devolución de datos de Laravel. Ya que, tras procesar las peticiones, la información la devuelve en formato JSon. Por lo que, a la hora de mostrarse al cliente, se procesará para devolverla en el formato requerido por el mismo. Eso sí, se realizará con ayuda del sistema de plantillas Blade, integrado en Laravel, para un despliegue de datos correcto y seguro.

3.3. Sistema Actualización

Uno de los fundamentos básicos del proyecto era la creación de un sistema actualizable, es decir, un sistema el cual se pudiera mejorar añadiendo nuevas funcionalidades.

Por otro lado, para mantener la seguridad a lo largo del tiempo se quería que en caso de que se encontrase algún problema de seguridad, se pudiese solucionar lanzando

3. DESARROLLO Diseño de un sistema de control de gerencia y de stock JJMR - TFG

12

una nueva versión que fuese fácilmente descargable y configurable por parte de los potenciales clientes que tuviesen en producción el sistema.

Sin embargo, esto no se puede realizar de cualquier manera ya que los clientes lo pueden estar usando como entorno productivo y pueden estar almacenando bastantes datos que se quieran conservar.

Aparte, hay que recordar, que uno de los pilares del proyecto es que los clientes puedan ampliándolo a gusto personal añadiendo y eliminando módulos según se desee por lo que había que garantizar que tampoco se tocasen.

Por lo tanto, en base a estas restricciones, había que pensar el sistema de actualización de manera que los datos del cliente y los módulos distintos al núcleo en ningún momento se viesen afectados por estas actualizaciones. Para ello se decidió crear un sistema de módulos que al actualizarse lo único que modificase fuese el núcleo.

Imagen 6 - Sistema de Actualización

3. DESARROLLO Diseño de un sistema de control de gerencia y de stock JJMR - TFG

13

A través de la función upgrade, se solicitará la versión que se quiere obtener, para que no haya problemas con los decimales se pasa multiplicada por 100, es decir, si queremos la versión 0.6 tendremos que pasar como parámetro el valor 60.

Siempre y cuando esa versión se encuentre disponible en el servidor se descargará y se descomprimirá en la carpeta del núcleo de manera que esté quedará actualizado con la versión deseada.

La forma de funcionamiento del método nos permite tanto subir de versión como bajarla, esto se ha realizado así de manera que un cliente pueda probar la nueva versión y en caso de desear volver a la anterior, por cualquier motivo, únicamente tenga que realizar una nueva llamada al método cambiando el parámetro de entrada y vuelva todo tal y como estaba previamente de manera que no tenga mayor repercusión en su sistema.

Como ya hemos comentado previamente, ningún módulo externo al núcleo se vería afectado en esta actualización y los datos se mantendrían exactamente igual por muchas actualizaciones que se realizasen, de manera que no habría en ningún momento pérdida de información.

3.4. Módulo Recursos Humanos

El primer módulo completamente independiente del núcleo que se desarrolló fue el de Recursos Humanos. Se decidió incluir este módulo debido a que cualquier empresa sin importar su tamaño siempre va a tener empleados y por lo tanto va a necesitar llevar un control de los mismos.

3. DESARROLLO Diseño de un sistema de control de gerencia y de stock JJMR - TFG

14

Imagen 7 - Base de Datos RRHH

Este módulo, junto a su base de datos, será el encargado de guardar toda la información relativa a los trabajadores de la empresa. En un principio los datos que se almacenarán serán los mostrados en la imagen ya que se cree que con esos se obtiene toda la información que se necesita para una correcta gestión de los recursos humanos.

De esta manera se podremos detectar anomalías en trabajadores que no estén realizando las horas estipuladas por contrato o en caso de necesidad de repasar el historial técnico de un trabajador tendremos fácil acceso al mismo.

3. DESARROLLO Diseño de un sistema de control de gerencia y de stock JJMR - TFG

15

3.5. Módulo Stock

El segundo módulo completamente independiente del núcleo que se desarrolló fue el de Stock. Se decidió incluir este módulo debido a que se pensó el cliente objetivo como una empresa logística la cuál tuviera varias sedes repartidas en distintos puntos geográficos.

Imagen 8 - Base de Datos Stock

Este módulo, junto a su base de datos, será el encargado de guardar toda la información relativa a los materiales de los que dispone la empresa. En un principio con estos datos almacenados se optimizaría la retención de material y se tendrían localizados todos los recursos de los cuales dispone la empresa.

3. DESARROLLO Diseño de un sistema de control de gerencia y de stock JJMR - TFG

16

Lo ideal de este módulo sería complementarlo con un módulo dedicado a la gestión de recursos económicos, es decir, un módulo el cual nos ayudase a tener un control sobre los ingresos y gastos actuales y de las fechas más recientes. De esta forma se podría realizar una compra en base a la disponibilidad del stock y la previsión de venta que se puede tener en los próximos meses.

4. RESULTADOS Diseño de un sistema de control de gerencia y de stock JJMR - TFG

17

4. RESULTADOS

En este capítulo, se adjuntan las distintas pruebas que se han realizado para demostrar el correcto funcionamiento del sistema. Las pruebas se han dividido en las realizadas al núcleo, al sistema de actualización, al módulo de RRHH y al módulo de Stock.

Para cada prueba se aportarán dos imágenes, en la primera se podrá observar los parámetros de entrada y en la segunda el resultado obtenido. Además, todas las pruebas irán acompañadas de una pequeña explicación.

4.1. Pruebas Núcleo

A continuación, se detallan las pruebas llevadas a cabo para comprobar el correcto funcionamiento del núcleo.

Prueba 1: Registro de un usuario. El usuario a registrar aportará todos los valores correctamente por lo que el resultado debe ser correcto.

4. RESULTADOS Diseño de un sistema de control de gerencia y de stock JJMR - TFG

18

Imagen 9 - Prueba Registro Usuario

Imagen 10 - Resultado Registro Usuario

4. RESULTADOS Diseño de un sistema de control de gerencia y de stock JJMR - TFG

19

Prueba 2: Registro de un usuario. El usuario a registrar aportará todos los valores. Sin embargo, tanto el nombre de usuario como el correo ya estará en uso por lo que el resultado debe ser incorrecto.

Imagen 11 - Prueba Registro Usuario Incorrecto

Imagen 12 - Resultado Registro Usuario Incorrecto

4. RESULTADOS Diseño de un sistema de control de gerencia y de stock JJMR - TFG

20

Prueba 3: Comprobar Disponibilidad de Nombre Ocupado. Se quiere registrar a un nuevo usuario con un determinado nombre de usuario. Se comprobará si ya existe un usuario registrado con ese nombre. El nombre de usuario ya estará en uso por lo que el sistema nos avisará.

Imagen 13 - Prueba Comprobar Disponibilidad de Nombre Ocupado

Imagen 14 - Resultado Comprobar Disponibilidad de Nombre Ocupado

Prueba 4: Comprobar Disponibilidad de Correo Ocupado. Se quiere registrar a un nuevo usuario con un determinado correo. Se comprobará si ya existe un usuario registrado que esté usando ese correo. El correo ya estará en uso por lo que el sistema nos avisará.

4. RESULTADOS Diseño de un sistema de control de gerencia y de stock JJMR - TFG

21

Imagen 15 - Prueba Comprobar Disponibilidad de Correo Ocupado

Imagen 16 - Resultado Comprobar Disponibilidad de Correo Ocupado

Prueba 5: Comprobar Disponibilidad de Nombre. Se quiere registrar a un nuevo usuario con un determinado nombre de usuario. Se comprobará si ya existe un usuario registrado con ese nombre. El nombre de usuario estará disponible por lo que el sistema nos avisará de que podemos usarlo.

4. RESULTADOS Diseño de un sistema de control de gerencia y de stock JJMR - TFG

22

Imagen 17 - Prueba Comprobar Disponibilidad de Nombre

Imagen 18 - Resultado Comprobar Disponibilidad de Nombre

Prueba 6: Comprobar Disponibilidad de Correo. Se quiere registrar a un nuevo usuario con un determinado correo. Se comprobará si ya existe un usuario registrado con ese correo. El correo estará disponible por lo que el sistema nos avisará de que podemos usarlo.

4. RESULTADOS Diseño de un sistema de control de gerencia y de stock JJMR - TFG

23

Imagen 19 - Prueba Comprobar Disponibilidad de Correo

Imagen 20 - Resultado Comprobar Disponibilidad de Correo

Prueba 7: Inicio de Sesión. Un usuario ya registrado querrá iniciar sesión aportando todos los valores de forma correcta por lo que el inicio de sesión debe ser satisfactorio.

4. RESULTADOS Diseño de un sistema de control de gerencia y de stock JJMR - TFG

24

Imagen 21 - Prueba Inicio de Sesión

Imagen 22 - Resultado Inicio de Sesión

Prueba 8: Inicio de Sesión Incorrecto. Un usuario ya registrado querrá iniciar sesión aportando todos los valores, pero fallará al introducir la clave por lo que el inicio de sesión debe ser incorrecto.

4. RESULTADOS Diseño de un sistema de control de gerencia y de stock JJMR - TFG

25

Imagen 23 - Prueba Inicio de Sesión Incorrecto

Imagen 24 - Resultado Inicio de Sesión Incorrecto

Prueba 9: Eliminar Usuario. Se eliminará un usuario que exista en el sistema se aportarán todos los valores correctamente por lo que el resultado debe ser correcto.

4. RESULTADOS Diseño de un sistema de control de gerencia y de stock JJMR - TFG

26

Imagen 25 - Prueba Eliminar Usuario

Imagen 26 - Resultado Eliminar Usuario

Prueba 10: Eliminar Usuario Incorrecto. Se intentará eliminar un usuario que no exista en el sistema se aportará un nombre de usuario inexistente por lo que el resultado debe ser incorrecto.

4. RESULTADOS Diseño de un sistema de control de gerencia y de stock JJMR - TFG

27

Imagen 27 - Prueba Eliminar Usuario Incorrecto

Imagen 28 - Resultado Eliminar Usuario Incorrecto

4.2. Pruebas Sistema Actualización

A continuación, se detallan las pruebas llevadas a cabo para comprobar el correcto funcionamiento del núcleo.

Prueba 11: Actualizar Núcleo. Se quiere instalar la nueva versión del núcleo, la versión es correcta y se actualiza el sistema correctamente.

4. RESULTADOS Diseño de un sistema de control de gerencia y de stock JJMR - TFG

28

Imagen 29 - Prueba Actualizar Núcleo

Imagen 30 - Resultado Actualizar Núcleo

Prueba 12: Actualizar Núcleo Incorrecto. Se quiere instalar la nueva versión del núcleo, la versión no es correcta y el sistema no se actualiza.

4. RESULTADOS Diseño de un sistema de control de gerencia y de stock JJMR - TFG

29

Imagen 31 - Prueba Actualizar Núcleo Incorrecto

Imagen 32 - Resultado Actualizar Núcleo Incorrecto

4.3. Pruebas Módulos Recursos Humanos y Stock

Prueba 13: Instalar Módulo. Se quiere instalar un nuevo módulo, se pasan todos los parámetros correctamente por lo que el resultado es satisfactorio.

4. RESULTADOS Diseño de un sistema de control de gerencia y de stock JJMR - TFG

30

Imagen 33 - Prueba Instalar Módulo

Imagen 34 - Resultado Instalar Módulo

Prueba 14: Instalar Módulo Incorrecto. Se quiere instalar un nuevo módulo, se pide por parámetro un módulo que no existe por lo que el resultado es incorrecto.

4. RESULTADOS Diseño de un sistema de control de gerencia y de stock JJMR - TFG

31

Imagen 35 - Prueba Instalar Módulo Incorrecto

Imagen 36 - Resultado Instalar Módulo Incorrecto

Prueba 15: Desinstalar Módulo. Se quiere desinstalar un módulo, se pasan todos los parámetros correctamente por lo que el resultado es satisfactorio.

4. RESULTADOS Diseño de un sistema de control de gerencia y de stock JJMR - TFG

32

Imagen 37 - Prueba Desinstalar Módulo

Imagen 38 - Resultado Desinstalar Módulo

Prueba 16: Desinstalar Módulo Incorrecto. Se quiere instalar la nueva versión del núcleo, la versión no es correcta y el sistema no se actualiza.

4. RESULTADOS Diseño de un sistema de control de gerencia y de stock JJMR - TFG

33

Imagen 39 - Prueba Desinstalar Módulo Incorrecto

Imagen 40 - Resultado Desinstalar Módulo Incorrecto

Prueba 17: Dar Permisos Sobre Módulo. Se quieren dar permisos sobre un módulo a un usuario, se pasan todos los parámetros correctamente por lo que el resultado es satisfactorio.

4. RESULTADOS Diseño de un sistema de control de gerencia y de stock JJMR - TFG

34

Imagen 41 - Prueba Dar Permisos Sobre Módulo

Imagen 42 - Resultado Dar Permisos Sobre Módulo

5. CONCLUSIONESDiseño de un sistema de control de gerencia y de stock JJMR - TFG

35

5. CONCLUSIONES

En este trabajo se ha resumido el diseño de un sistema de control de gerencia y de stock, con el cuál se ha buscado el plantear una solución al problema de gestión de cualquier empresa.

En primer lugar, se empezó estableciendo los requisitos que tenía que cumplir el sistema para dar su desarrollo como satisfactorio. Para cumplir tantos los requisitos funcionales como los no funcionales había que establecer el software con el que se iba a implementar el sistema. Esta fue una de las partes más complicada debido a tener que valorar desde una opinión objetiva lo que mejor se adaptaba a la idea.

Posteriormente se comenzó con el desarrollo del propio sistema. El núcleo, el centro del proyecto, fue la parte más costosa y se dedicó más tiempo del previsto inicialmente, de forma que se asegurase el no tener más complicaciones una vez que se diese por finalizado. El resto del desarrollo se llevó a cabo sin mayores complicaciones, pero si un poco más justos de tiempo.

Los resultados obtenidos, a pesar de ser en un entorno simulado, resultan prometedores. A pesar de no haberse podido probar en un entorno real dan esperanza a que el propio sistema, con escasas modificaciones podría aplicarse a un entorno productivo sin ningún tipo de problema.

A nivel personal, es un trabajo que creo que ayuda bastante a crecer a nivel académico. Esto es debido a que aparte de la realización del mismo hay que ir documentándolo a lo cual muchas veces no estamos acostumbrados.

5.1. Dificultades

Durante la realización del mismo se han ido encontrado distintas dificultades que de una manera u otra se han ido superando.

La primera que se encontró fue el decidir el lenguaje en el que realizarlo ya que normalmente siempre se nos ha restringido a una opción y había que desarrollarlo sin poder valorar distintas opciones por lo que era una tarea totalmente nueva a realizar.

A raíz de la decisión del lenguaje, PHP con Laravel 5.8, se encontró la de enfrentarse a un lenguaje nuevo el cual no se ha tocado prácticamente nada a lo largo de la carrera. Sin embargo, se decidió continuar con él debido a ser el que más se adaptaba

5. CONCLUSIONESDiseño de un sistema de control de gerencia y de stock JJMR - TFG

36

a los requisitos y que no se veía del todo complicado. Aun así, la falta de familiarización con el mismo paso factura.

Por otra parte, las tareas de desarrollo software siempre las he visto que es necesario mínimo un equipo de dos personas. De tal manera que se pueda avanzar de una manera simultánea o que se puedan desarrollar las pruebas a la par que el desarrollo de una forma eficiente. En concreto, en este trabajo lo he notado en algunas partes de bloqueo ya que se perdía tiempo por no ver la solución a problemas simples que quizás con un equipo mayor se hubiese evitado estos parones.

Por último, y muchas veces principal dificultad es la falta de tiempo. Debido a tener que compaginar el desarrollo del proyecto a la par que el resto de vida académica y sumado a la laboral y personal. Lógicamente es algo a lo que muchas veces todos tenemos que enfrentarnos, sin embargo, me hubiese gustado disponer de mayor tiempo de forma que se hubiese podido desarrollar las ideas que fueron surgiendo durante el desarrollo del mismo.

5.2. Líneas Futuras

A pesar de que el trabajo finalice aquí, el proyecto todavía tiene mucho camino por recorrer. Esto es debido a las restricciones de tiempo que se tienen para el desarrollo del mismo y el no poder haberlo aplicado en un entorno productivo real.

Cómo ya se ha comentado previamente, el proyecto está pensado para la personalización por parte del cliente de tal manera que según necesite se puedan ir añadiendo o eliminando módulos. Actualmente, sólo se dispone de los de Recursos Humanos y de Stock por lo que la línea de futuro más evidente es la creación de más módulos.

Además, hay que recordar que se desarrolló un sistema de actualización de manera que lo ideal sería ir mejorando el núcleo con nuevas actualizaciones. Preferiblemente lo suyo sería ir añadiendo tanto parches de seguridad como nuevas funcionalidades en el núcleo, además como ya hemos dicho estas actualizaciones son totalmente independientes del resto de módulos, por lo que nunca habría pérdida de datos.

Por otro lado, algo que hubiese gustado, pero por falta de tiempo no se ha podido realizar es el añadir una interfaz gráfica. De tal manera, que con el correcto desarrollo de la misma se facilite el uso del sistema por parte de los usuarios.

5. CONCLUSIONESDiseño de un sistema de control de gerencia y de stock JJMR - TFG

37

El sistema se ha desarrollado para adaptarse sin ningún problema al multilenguaje, actualmente los resultados de los métodos se pueden obtener tanto en español como en inglés. Sin embargo, la idea es seguir añadiendo idiomas al sistema de manera que el idioma nunca sea una limitación a la hora de la utilización del mismo.

Finalmente, se buscaría la aplicación del sistema a entornos reales. Se ha echado en falta el poder realizar pruebas en varios entornos productivos reales, ya fuese de pequeñas o medianas empresas, con diferentes características. Esta hubiese sido la forma más eficaz de asegurar que el sistema se adapta sin problemas a entornos dispares entre sí.

6. BIBLIOGRAFÍA Diseño de un sistema de control de gerencia y de stock JJMR - TFG

38

6. BIBLIOGRAFÍA

[1] RAE, «Diccionario de la lengua española,» Noviembre 2019. [En línea]. Available: https://dle.rae.es/?w=recurso.

[2] «Wikipedia,» Noviembre 2019. [En línea]. Available: https://es.wikipedia.org/wiki/Sistema_de_planificaci%C3%B3n_de_recursos_empresariales.

[3] «ERP Imagen,» Noviembre 2019. [En línea]. Available: https://tecnologia-informatica.com/wp-content/uploads/2018/11/word-image-1.jpeg.

[4] «Tecnología informática,» Noviembre 2019. [En línea]. Available: https://tecnologia-informatica.com/erp-que-es/.

[5] «PHP Web,» Noviembre 2019. [En línea]. Available: https://www.php.net/manual/es/intro-whatis.php.

[6] «Wikipedia,» Noviembre 2019. [En línea]. Available: https://upload.wikimedia.org/wikipedia/commons/thumb/2/27/PHP-logo.svg/711px-PHP-logo.svg.png.

[7] «PHP Web,» Noviembre 2019. [En línea]. Available: https://www.php.net/manual/es/intro-whatcando.php.

[8] «PHP-GTK Web,» Noviembre 2019. [En línea]. Available: http://gtk.php.net/.

[9] «PHP Web,» Noviembre 2019. [En línea]. Available: https://www.php.net/manual/es/history.php.php.

[10] «Wikipedia,» Noviembre 2019. [En línea]. Available: https://es.wikipedia.org/wiki/Laravel.

[11] «RubyOnRails,» Noviembre 2019. [En línea]. Available: https://rubyonrails.org/.

[12] «Sinatra,» Noviembre 2019. [En línea]. Available: http://sinatrarb.com/.

[13] «ASP.NET MVC Web,» Noviembre 2019. [En línea]. Available: https://dotnet.microsoft.com/apps/aspnet/mvc.

6. BIBLIOGRAFÍA Diseño de un sistema de control de gerencia y de stock JJMR - TFG

39

[14] «Laravel News,» Noviembre 2019. [En línea]. Available: https://i0.wp.com/wp.laravel-news.com/wp-content/uploads/2019/02/laravel-5.8.png?resize=2200%2C1125.

[15] «Laravel Book,» Diciembre 2019. [En línea]. Available: https://richos.gitbooks.io/laravel-5/content/capitulos/chapter9.html.

[16] «Laravel Book,» Diciembre 2019. [En línea]. Available: https://richos.gitbooks.io/laravel-5/content/capitulos/chapter10.html.

[17] «Laravel Documentation,» Diciembre 2019. [En línea]. Available: https://laravel.com/api/5.8/Illuminate/Support/Fluent.html.

[18] «Laravel Web,» Noviembre 2019. [En línea]. Available: https://laravel.com/docs/5.8.

[19] «Eloquent Web,» Noviembre 2019. [En línea]. Available: https://laravel.com/docs/5.8/eloquent.

[20] «Symfony Web,» Noviembre 2019. [En línea]. Available: https://symfony.es/.

[21] «Codigo Facilito,» Noviembre 2019. [En línea]. Available: https://codigofacilito.com/articulos/mvc-model-view-controller-explicado.

[22] «Science Direct,» Novimebre 2019. [En línea]. Available: https://www.sciencedirect.com/science/article/pii/S1877050919310683.

[23] «Desarrollo Web,» Noviembre 2019. [En línea]. Available: https://desarrolloweb.com/articulos/que-es-mvc.html.

[24] «Red Hat,» Noviembre 2019. [En línea]. Available: https://www.redhat.com/es/topics/api/what-are-application-programming-interfaces.

[25] «Java Web,» Noviembre 2019. [En línea]. Available: https://javaee.github.io/javaee-spec/javadocs/.

[26] «Hibernate Web,» Noviembre 2019. [En línea]. Available: https://hibernate.org/.

[27] «Python Web,» Noviembre 2019. [En línea]. Available: https://www.python.org/.

[28] «Django Web,» Noviembre 2019. [En línea]. Available:

6. BIBLIOGRAFÍA Diseño de un sistema de control de gerencia y de stock JJMR - TFG

40

https://www.djangoproject.com/.

[29] «PHP Web,» Noviembre 2019. [En línea]. Available: https://www.php.net/manual/es/book.pdo.php.

[30] «Laravel Web,» Noviembre 2019. [En línea]. Available: https://laravel.com/docs/5.2.

Este documento esta firmado porFirmante CN=tfgm.fi.upm.es, OU=CCFI, O=Facultad de Informatica - UPM,

C=ES

Fecha/Hora Tue Jan 14 21:22:12 CET 2020

Emisor delCertificado

[email protected], CN=CA Facultad deInformatica, O=Facultad de Informatica - UPM, C=ES

Numero de Serie 630

Metodo urn:adobe.com:Adobe.PPKLite:adbe.pkcs7.sha1 (AdobeSignature)