Documentos de Académico
Documentos de Profesional
Documentos de Cultura
A 064 Germain Ramirez Cristal Esmeralda 7569
A 064 Germain Ramirez Cristal Esmeralda 7569
Tesina
“Desarrollo de aplicaciones web
utilizando JavaScript”
Autor:
Cristal Esmeralda Germain Ramírez
Asesor:
Dr. Rodolfo Ostos Robles
Asesor OR:
Brandon Aguilar Celis
1
2
3
4
5
AGRADECIMIENTOS
Considero que es importante reconocer el trabajo arduo y el esfuerzo de las
personas al lograr objetivos. Y considero que es igual de importante reconocer el
apoyo y los estímulos externos que favorecen el cumplimiento de metas; detrás del
logro de una persona y de su esfuerzo, existen pilares que le sostienen en momentos
difíciles o que le motivan para dar la mejor cara. Para mí, esos pilares fundamentales
son mis padres y mis amigos.
Mis padres se han esforzado, desde que tengo memoria, para darme todo lo
que necesito, procurando que no me falte nada. Durante la universidad, me apoyaron
aun cuando era difícil cubrir los gastos. Gracias a ellos, estoy donde estoy ahora
mismo. Agradezco profundamente su apoyo y su cuidado.
Mis amigos han sido mi fortaleza en los momentos más difíciles. Gracias al
apoyo emocional que me ofrecieron soy la persona que soy. He aprendido bastante
con las vivencias y experiencias junto a ellos.
6
ÍNDICE TEMÁTICO
Resumen ............................................................................................................................ 10
Abstract .............................................................................................................................. 10
CAPÍTULO 1 ....................................................................................................................... 11
1.1. Antecedentes ..................................................................................................................... 12
1.1.1. Localización ............................................................................................................... 13
1.1.2. Objetivos de la institución......................................................................................... 13
1.1.3. Misión ......................................................................................................................... 13
1.1.4. Visión.......................................................................................................................... 14
1.2. Planteamiento del problema ........................................................................................ 14
1.2.1. Propuesta de investigación ...................................................................................... 14
1.2.2. Objetivos .................................................................................................................... 15
1.2.3. Preguntas de investigación ...................................................................................... 15
1.2.4. Hipótesis .................................................................................................................... 15
1.2.5. Limitaciones y supuestos ......................................................................................... 16
1.2.6. Relevancia ................................................................................................................. 16
CAPÍTULO 2 ....................................................................................................................... 17
2.1. Marco conceptual............................................................................................................... 18
2.1.1. Sistema ERP ............................................................................................................... 18
2.1.2. Programación web ...................................................................................................... 22
2.1.3. Tipo de aplicaciones ................................................................................................... 26
2.1.4. Lenguajes de programación para desarrollo web .................................................... 29
CAPÍTULO 3 ....................................................................................................................... 44
3.1. Diseño ................................................................................................................................. 45
3.1.1. Enfoque........................................................................................................................ 45
3.1.2. Método de investigación............................................................................................. 45
3.1.3. Tecnologías ................................................................................................................. 46
3.2. Desarrollo ........................................................................................................................... 48
3.2.1. Herramientas y entorno .............................................................................................. 49
3.2.2. Estructura .................................................................................................................... 50
3.2.3. Funcionamiento y código ........................................................................................... 53
3.3. Resultados y discusión ...................................................................................................... 57
3.3.1. El sistema como aplicación web................................................................................ 57
7
3.3.2. Beneficios de una aplicación web ante una aplicación de escritorio ..................... 57
3.3.3. Beneficios de JavaScript en las aplicaciones web................................................... 58
3.3.4. Optimización ................................................................................................................ 59
3.4. Conclusiones ...................................................................................................................... 60
3.5. Bibliografía .......................................................................................................................... 63
3.6. Anexos ................................................................................................................................ 66
3.6.1. Glosario........................................................................................................................ 66
8
ÍNDICE DE IMÁGENES
CAPÍTULO 1
CAPÍTULO 2
CAPÍTULO 3
Imagen 3.1. Modelo de la interacción entre cliente y servidor mediante Internet. .................. 47
Imagen 3.2. Logo de Ant Design junto al logo de React JS...................................................... 48
Imagen 3.3. Conexión a la base de datos en la nube. .............................................................. 49
Imagen 3.4. Logo de Visual Studio Code. .................................................................................. 50
Imagen 3.5. Carpetas principales del proyecto del lado del cliente. ........................................ 51
Imagen 3.6. Contenido de la carpeta “src” en el lado del cliente.............................................. 51
Imagen 3.7. Carpetas principales del proyecto del lado del servidor. ...................................... 52
Imagen 3.8. Contenido de la carpeta “src” en el lado del servidor. .......................................... 52
Imagen 3.9. Flujo entre el lado del cliente y el lado del servidor. ............................................. 53
Imagen 3.10. Código para conectar la base de datos con el programa en JavaScript. ......... 54
Imagen 3.11. Creación del servicio http. ..................................................................................... 55
Imagen 3.12. Configuración de la conexión con la base de datos. .......................................... 56
Imagen 3.13. Rutas para consumir la API. ................................................................................. 56
Imagen 3.14. Pantalla del módulo de usuarios del sistema migrado. ...................................... 57
Imagen 3.15. Fragmento de código para realizar pruebas con React JS................................ 59
9
Resumen
En esta investigación, se plantea el tema del desarrollo web como alternativa
para los sistemas ERP de escritorio, ya que las aplicaciones web presentan muchas
ventajas sobre las aplicaciones de escritorio, dependiendo de los objetivos que se
tengan respecto al sistema deseado. Entonces, en esta investigación, se aborda el
uso de JavaScript como alternativa para el desarrollo de una aplicación web; esto bajo
una situación particular, donde se migra un sistema ERP de escritorio a una aplicación
web, manteniendo sus funcionalidades, pero optimizando la estructura para adaptar
el sistema a funcionalidades futuras.
De esta manera, se resaltan los beneficios que traen consigo las aplicaciones
web y el uso de JavaScript para desarrollarlas.
Abstract
In this research, the issue of web development is raised as an alternative to
desktop ERP systems, since web applications have many advantages over desktop
applications, depending on the objectives that are taken with respect to the desired
system. Therefore, in this research, the use of JavaScript is addressed as an
alternative for the development of a web application; this under a particular situation,
where a desktop ERP system is migrated to a web application, maintaining its
functionalities, but optimizing the structure to adapt the system to future functionalities.
In this way, the benefits of web applications and the use of JavaScript to develop
them are highlighted.
10
CAPÍTULO 1
Antecedentes y planteamiento del problema
11
1.1. Antecedentes
Bixdy es una empresa mexicana. Fue fundada por tres jóvenes talentosos:
Markos, Alexis y Brandon Aguilar. Los tres hermanos, originarios de la ciudad de
Mazatlán, se han desarrollado en el ámbito tecnológico desde 2012. Markos y
Brandon se especializan en el ámbito informático, ambos en desarrollo de software y,
en el caso de Markos, en administración de proyectos, mientras que Alexis se
desarrolla en el ámbito informático como ingeniero de software y en el ámbito de
electrónica como ingeniero en diseño de hardware.
Los tres jóvenes fundadores han sido proactivos desde muy temprana edad y,
a lo largo de su vida, han desarrollado proyectos personales y/o participado en
proyectos importantes de las empresas en las que han laborado.
12
De esta manera, los hermanos decidieron juntar sus conocimientos para
trabajar en proyectos con fines de marketing y/o ventas como un inicio. Sin embargo,
este fue el punto de partida, pues el enfoque que mantiene Bixdy es crear productos
que aporten utilidad y soluciones a la sociedad, creando e innovando con sus
conocimientos sobre el ámbito tecnológico.
1.1.1. Localización
1.1.3. Misión
13
tecnologías, como aplicaciones web, aplicaciones móviles, internet de las cosas (IoT),
optimización de redes, entre otras.
1.1.4. Visión
14
1.2.2. Objetivos
1.2.2.1. General
Iniciar el desarrollo de una aplicación web que cumpla con las funcionalidades
actuales del sistema de escritorio que Bixdy utiliza para administrarse
internamente.
1.2.2.2. Particulares
1.2.4. Hipótesis
15
cuestión. Además, el sistema como aplicación web tendrá muchas más ventajas que
como aplicación de escritorio, como el hecho de no necesitar instalación para ingresar
a él y el abrir paso a la modalidad home office.
Otra limitación es que, al tomar como base el sistema interno de Bixdy, se debe
respetar la privacidad de la empresa, por lo que es posible que se omita información
particular del sistema; se debe de tener cuidado en cuanto a contradecir la política de
privacidad de la misma.
1.2.6. Relevancia
16
CAPÍTULO 2
Estado del arte
17
2.1. Marco conceptual
2.1.1. Sistema ERP
Los Sistemas Integrados de Gestión (ERP) surgen en los años noventa como
una evolución de los existentes hasta la fecha: sistemas de gestión de inventarios y
planificación de la producción, en sus distintas dos versiones; la primera, Material
Requirements Planning (MRP) de los años setenta; la segunda, Manufacturing
Resources Planning (MRP II) de los años ochenta; programas de contabilidad;
aplicaciones de gestión de la facturación; etc.
Los sistemas ERP permiten integrar los flujos de información de los distintos
departamentos de la empresa y facilitan el seguimiento de las actividades que
constituyen la cadena de valor. Los modernos sistemas ERP incluyen el soporte y la
integración de las actividades de los proveedores y los distribuidores: SCM (Supply
Chain Management) y CRM (Customer Relationship Management). Por lo tanto,
podemos definir un sistema ERP como un sistema integrado de software de gestión
empresarial, compuesto por un conjunto de módulos funcionales (logística, finanzas,
recursos humanos, etc.) susceptibles de ser adaptados a las necesidades de cada
cliente [1].
Este tipo de software brinda todas las herramientas tecnológicas para gestionar
la información clave de una compañía. Según una encuesta de “Panorama Consulting”
de 2013, un 40% de las empresas que adquieren un ERP notan un aumento la
productividad. Un sistema ERP combina la funcionalidad de los distintos programas
de gestión en uno solo, basándose en una única base de datos centralizada. Esto
permite garantizar la integridad y unicidad de los datos a los que accede cada
departamento, evitando que éstos tengan que volver a ser introducidos en cada
aplicación o módulo funcional que los requiera (así, por ejemplo, si una factura ha sido
18
registrada en el módulo de clientes, ya no es necesario introducirla de nuevo en el
módulo de contabilidad y finanzas).
19
Un sistema ERP es una solución informática integral que está formada por
unidades interdependientes denominadas Módulos. Los primeros y fundamentales
son los denominados Módulos Básicos, de adquisición obligatoria, y alrededor de los
cuales se agregan los otros módulos opcionales, que no se adquieren
obligatoriamente y se agregan para incorporar nuevas funciones al sistema ERP.
También existen los llamados Módulos verticales y corresponden a módulos
opcionales diseñados específicamente para resolver las funciones y procesos del
negocio de un sector económico específico [3]. La estructura básica conlleva los
siguientes módulos:
Módulo de aprovisionamiento.
Módulo de producción
Módulo de ventas.
20
pedidos, la logística de distribución, la preparación de entregas, la expedición y el
transporte.
Módulo de finanzas.
21
prestar una especial atención a la participación y formación de los empleados de la
organización que se van a convertir en los principales usuarios del sistema.
HTML como lenguaje para crear los contenidos de la Web, basado en Standard
Generalized Markup Language (SGML).
HTTP como protocolo de comunicación entre los ordenadores de la Web,
encargado de la transferencia de las páginas web y demás recursos.
22
URL como medio de localización (direccionamiento) de los distintos
recursos en Internet.
El primer navegador web, que también era editor, fue programado por Tim
Berners- Lee a finales de 1990. Al principio lo llamó World Wide Web, pero después
cambió el nombre por Nexus, ya que empezaba a usarse World Wide Web para
referirse de forma genérica al sistema de comunicación que había ideado. Este primer
navegador se programó en Objective-C en un ordenador NeXT [5].
23
Lógica de presentación. Se encarga de la entrada y salida de la aplicación
con el usuario. Sus principales tareas son: obtener información del usuario,
enviar la información del usuario a la lógica de negocio para su procesamiento,
recibir los resultados del procesamiento de la lógica de negocio y presentar
estos resultados al usuario.
Lógica de negocio (o aplicación). Se encarga de gestionar los datos a nivel de
procesamiento. Actúa de puente entre el usuario y los datos. Sus principales
tareas son: recibir la entrada del nivel de presentación, interactuar con la lógica
de datos para ejecutar las reglas de negocio que tiene que cumplir la aplicación
(facturación, cálculo de nóminas, control de inventario, etc.) y enviar el
resultado del procesamiento al nivel de presentación.
Lógica de datos. Se encarga de gestionar los datos a nivel de almacenamiento.
Sus principales tareas son: almacenar los datos, recuperar los datos, mantener
los datos y asegurar la integridad de los datos.
El cliente
La parte cliente de las aplicaciones web suele estar formada por el código
HTML que forma la página web más algo de código ejecutable realizado en lenguaje
de script del navegador (JavaScript o VBScript) o mediante pequeños programas
(applets) realizados en Java. También se suelen emplear plugins que permiten
visualizar otros contenidos multimedia (como Macromedia Flash), aunque no se
encuentran tan extendidos como las tecnologías anteriores y plantean problemas de
incompatibilidad entre distintas plataformas. Por tanto, la misión del cliente web es
interpretar las páginas HTML y los diferentes recursos que contienen (imágenes,
sonidos, etc.).
Las tecnologías que se suelen emplear para programar el cliente web son:
HTML.
24
CSS.
DHTML.
Lenguajes de script: JavaScript, VBScript, etc. ActiveX.
Applets programados en Java.
Distintas tecnologías que necesitan la existencia de un plug-in en el navegador:
Adobe Acrobat Reader, Autodesk MapGuide, Live Picture PhotoVista,
Macromedia Flash, Macromedia Shockwave, Virtual Reality Modeling
Language (VRML), etc.
El servidor
25
Imagen 2.0.2. Relación entre cliente y servidor.
Fuente: [5].
26
Hay una gran variedad de ejemplos de aplicaciones de escritorio, ya que una
gran cantidad de productos utilizados en el día a día tiene una versión como sitio web,
como aplicación móvil y como aplicación de escritorio. Algunos ejemplos de
aplicaciones de escritorio son la paquetería de Office, aplicaciones de música como
Spotify, navegadores como Opera o Firefox, aplicaciones de streaming como Netflix,
entre muchos otros [6].
27
Otros tipos de servicios: gestión de inmuebles, comunidades de propietarios,
turismo, mapas, formación, colegios, tiendas y mucho más [7].
28
páginas estáticas o tecnología de generación dinámica de páginas (ASP, CGI,
etc.), datos almacenados en cheros o en un servidor de bases de datos, etc.
3. A continuación, se diseña la estructura lógica o de navegación del sitio web:
página inicial, página principal, empleo de marcos, los menús, división en
secciones, relación entre las distintas secciones, página de novedades, etc.
4. Se define la estructura física, que puede ser igual a la lógica o totalmente
independiente.
5. Se crean los contenidos del sitio web. Si se emplea una base de datos, se
realiza la carga de datos.
6. Se realiza el diseño gráfico y ergonómico: colores, montaje, tipografía, botones
de navegación, logotipos y demás elementos gráficos, etc.
7. Se crean las páginas estáticas y los elementos multimedia.
8. Desarrollo de los scripts y páginas dinámicas.
9. Por último, se verifica el correcto funcionamiento del sitio web: se comprueba
la conexión con la base de datos, se verifica que no existan enlaces rotos, se
confirma que todos los recursos empleados (imágenes, ficheros con código de
script, etc.) se encuentran en el sitio web y en su lugar correspondiente, etc.
Además, se comprueba el sitio web con distintos navegadores para asegurar
su compatibilidad. También se realizan pruebas de carga para evaluar el
rendimiento.
10. Puesta en marcha [5].
29
Imagen 2.0.3. Logo de PHP.
Fuente: [9].
Lo que distingue a PHP de algo del lado del cliente como JavaScript es que el
código es ejecutado en el servidor, generando HTML y enviándolo al cliente. El cliente
recibirá el resultado de ejecutar el script, aunque no se sabrá el código subyacente
que era. El servidor web puede ser configurado incluso para que procese todos los
ficheros HTML con PHP, por lo que no hay manera de que los usuarios puedan saber
qué se tiene debajo de la manga.
30
Fue originalmente diseñado en Perl, con base en la escritura de un grupo de
CGI binarios escritos en el lenguaje C por el programador danés-canadiense Rasmus
Lerdorf en el año 1994 para mostrar su currículum vítae y guardar ciertos datos, como
la cantidad de tráfico que su página web recibía. El 8 de junio de 1995 fue publicado
"Personal Home Page Tools" después de que Lerdorf lo combinara con su propio
Form Interpreter para crear PHP/FI.
PHP se utiliza principalmente para crear páginas web, para crear contenido
dinámico y para trabajar con bases de datos y HTML.
31
Capacidad de expandir su potencial utilizando módulos (llamados extensiones).
Posee una amplia documentación en su sitio web oficial, entre la cual se
destaca que todas las funciones del sistema están explicadas y ejemplificadas
en un único archivo de ayuda.
Es libre, por lo que se presenta como una alternativa de fácil acceso para todos.
Permite aplicar técnicas de programación orientada a objetos.
No requiere definición de tipos de variables, aunque sus variables se pueden
evaluar también por el tipo que estén manejando en tiempo de ejecución.
Tiene manejo de excepciones (desde PHP5).
Si bien PHP no obliga a quien lo usa a seguir una determinada metodología a
la hora de programar, aun haciéndolo, el programador puede aplicar en su
trabajo cualquier técnica de programación o de desarrollo que le permita
escribir código ordenado, estructurado y manejable. Un ejemplo de esto son
los desarrollos que en PHP se han hecho del patrón de diseño Modelo Vista
Controlador (MVC), que permiten separar el tratamiento y acceso a los datos,
la lógica de control y la interfaz de usuario en tres componentes
independientes.
Debido a su flexibilidad ha tenido una gran acogida como lenguaje base para
las aplicaciones WEB de manejo de contenido, y es su uso principal [10].
2.1.5.2. Python
32
El nombre del lenguaje proviene de la afición de su creador por los humoristas
británicos Monty Python.
33
Se pueden crear todo tipo de programas. No es un lenguaje creado
específicamente para la web, aunque entre sus posibilidades sí se encuentra
el desarrollo de páginas.
Hay versiones disponibles de Python en muchos sistemas informáticos
distintos. Originalmente se desarrolló para Unix, aunque cualquier sistema es
compatible con el lenguaje siempre y cuando exista un intérprete programado
para él.
Es interpretado, es decir, no se debe compilar el código antes de su ejecución.
Python dispone de un intérprete por línea de comandos en el que se pueden
introducir sentencias.
La programación orientada a objetos está soportada en Python y ofrece en
muchos casos una manera sencilla de crear programas con componentes
reutilizables.
Dispone de muchas funciones incorporadas en el propio lenguaje, para el
tratamiento de strings, números, archivos, etc.
Python tiene una sintaxis muy visual, gracias a una notación indentada (con
márgenes) de obligado cumplimiento. En muchos lenguajes, para separar
porciones de código, se utilizan elementos como las llaves o las palabras clave
begin y end. Para separar las porciones de código en Python se debe tabular
hacia dentro, colocando un margen al código que iría dentro de una función o
un bucle [13].
34
Imagen 2.0.6. Fragmento de código en Python.
Fuente: [14].
2.1.5.3. JavaScript
35
Imagen 2.0.8. Representación de los componentes en la programación web.
Fuente: [16].
36
JavaScript es un lenguaje creado por Netscape, la compañía propietaria de un
navegador con el mismo nombre hoy desaparecido, que fue precursor del actual
Firefox. Su lanzamiento se produjo en 1995 en la versión de Netscape 2.0. Su autor,
un programador llamado Brendan Eich, se dice que lo creó en el tiempo de una
semana.
37
abordar cualquiera de estas herramientas, y muchas otras, el aprendizaje sólido
JavaScript es un importante requisito [18].
React JS
38
Detectaron que el típico marco de binding y doble binding ralentizaba un poco
su aplicación, debido a la cantidad de conexiones entre las vistas y los datos. Como
respuesta crearon una nueva dinámica de funcionamiento, en la que optimizaron la
forma como las vistas se renderizan frente al cambio en los datos de la aplicación.
Sirve para desarrollar aplicaciones web de una manera más ordenada y con
menos código que si se usa JavaScript puro o librerías como jQuery centradas en la
manipulación del DOM. Permite que las vistas se asocien con los datos, de modo que,
si cambian los datos, también cambian las vistas.
A primera vista, esto suena como que fuera más lento que el enfoque
JavaScript habitual de actualización de cada elemento, según sea necesario. Detrás
de escena, sin embargo, React.js hace justamente eso: tiene un algoritmo muy
eficiente para determinar las diferencias entre la representación virtual de la página
actual y la nueva. A partir de esas diferencias, hace el conjunto mínimo de cambios
necesarios en el DOM.
Pues utiliza un concepto llamado el DOM virtual que hace selectivamente sub-
árboles de los nodos sobre la base de cambios de estado, desarrollando esto, con la
39
menor cantidad de manipulación DOM posible, con el fin de mantener los
componentes actualizados, estructurando sus datos [20].
Con respecto a librerías sencillas como jQuery, React aporta una serie de
posibilidades muy importantes. Al tener las vistas asociadas a los datos, no es
necesario escribir código para manipular la página cuando los datos cambian. Esta
parte en librerías sencillas es muy laboriosa de conseguir y es algo que React hace
automáticamente.
Node JS
40
Es lo que toma JavaScript y lo ejecuta mientras navega con Chrome). Este motor toma
el código JavaScript y lo convierte en un código de máquina más rápido. El código de
máquina es un código de nivel más bajo que la computadora puede ejecutar sin
necesidad de interpretarlo primero, ignorando la compilación y por lo tanto
aumentando su velocidad.
Axios
41
Ofrece una API unificada para las solicitudes Ajax
Está altamente pensado para facilitar el consumo de servicios web, API REST
que devuelvan datos JSON.
Es muy sencillo de usar y puede ser un complemento ideal para sitios web
convencionales, donde no se esté usando jQuery y aplicaciones frontend
modernas basadas en librerías como React o Polymer, que no disponen en su
"core" de mecanismos para hacer de cliente HTTP.
Tiene muy poco peso (13Kb minimizado y todavía menos si contamos que el
servidor lo envía comprimido), en unas pocas Kb nos ahorrará mucho trabajo
de codificación en las aplicaciones [23].
Express
42
sesiones, inicios de sesión de usuario, parámetros URL, datos POST, cabeceras de
seguridad y muchos más [25].
43
CAPÍTULO 3
Diseño y desarrollo
44
3.1. Diseño
3.1.1. Enfoque
45
codificar tanto el backend como el frontend. Previamente el encargado decidió, junto
con el equipo, las tecnologías a utilizar. De tal manera que el sistema será
desarrollado en JavaScript, mediante Node JS para el lado del servidor y React JS
para el lado del cliente.
3.1.3. Tecnologías
Ahora bien, hasta ahora se ha mencionado el lado del cliente y el lado del
servidor. En el capítulo anterior se analiza cómo funciona la programación web;
retomando esta parte, dichos términos tienen un origen: en la programación web hay
un cliente que realiza la petición de datos a un servidor y este último procesa tales
peticiones para emitir una respuesta; el procesamiento de peticiones no es automático
por sí solo, necesita ser programado y por este motivo existen lenguajes de
programación para el backend o para el lado del servidor; a su vez, los dispositivos
clientes son los que interactúan con el usuario, por lo que necesitan una interfaz
46
diseñada (programada, en este caso) para ser usados, por ello existen tecnologías
para el frontend o para el lado del cliente.
47
Imagen 3.0.2. Logo de Ant Design junto al logo de React JS.
Fuente: [27].
Ant Design ofrece una gran variedad de componentes para utilizar libremente,
los cuales admiten estilos de diseño propios. También, la librería ofrece íconos en
forma de componentes para facilitar su uso. Y, cabe destacar que la documentación
es bastante clara y amigable para el usuario, por lo que es muy sencillo encontrar la
usabilidad de los componentes y sus propiedades, así como ejemplos de utilización
de los mismos.
Ahora bien, para el diseño, se utilizará CSS3, combinando esto con la librería
de Ant Design.
3.2. Desarrollo
En esta sección se relata el desarrollo del proyecto desde los puntos más
importantes y sólo los esenciales; por cuestiones de privacidad y confidencialidad, no
es posible mostrar todo el proceso libremente con imágenes.
48
Cabe mencionar que en esta sección se hace uso del tiempo presente y
pasado, ya que las actividades mencionadas fueron finalizadas, pero el sistema en su
totalidad sigue en desarrollo, por lo que hay ciertos puntos que aún son válidos en el
presente de la creación del actual documento.
Para realizar pruebas durante el desarrollo del sistema, es necesario contar con
un gestor de base de datos. Para ello, se ha utilizado pgAdmin y, para ingresar a la
base de datos, se requieren los datos de conexión, como la dirección de host, el
puerto, el usuario, la contraseña, etc. Observe la imagen 3.3.
49
Para codificar, se ha manejado el editor de texto Visual Studio Code, pues los
snippets y extensiones disponibles hacen de la tarea más ágil. Hay algunos para
manejar colores de manera sencilla; otros, para autocompletar palabras; otros, para
cerrar etiquetas; otros, para indentar el código automáticamente, entre muchos otros.
Además, es muy óptimo en cuanto a rendimiento.
Por último, dado a que el proyecto fue creado por el encargado del proyecto,
para los desarrolladores sólo queda ejecutar el sistema y, para ello, es necesario
utilizar la consola. En este caso, se ha trabajado con Windows PowerShell. Este
detalle no es importante, cualquier consola es útil. Lo que sí es importante es ejecutar
los comandos correctos: para ejecutar el frontend se escribe “npm start”, mientras que
para ejecutar el backend se ha configurado un comando sólo para development “npm
run dev”. De esta manera, se montará el sistema y estará listo para probarse.
3.2.2. Estructura
La estructura del sistema es un punto muy importante, ya que aquí radica una
de las ventajas que tiene el migrar el sistema actual a una aplicación web.
50
Imagen 3.0.5. Carpetas principales del proyecto del lado del cliente.
Fuente: Autor.
51
Ahora, para el backend, la estructura es la siguiente (imagen 3.7):
Imagen 3.0.7. Carpetas principales del proyecto del lado del servidor.
Fuente: Autor.
52
3.2.3. Funcionamiento y código
Imagen 3.0.9. Flujo entre el lado del cliente y el lado del servidor.
Fuente: Autor.
53
este último se encuentran las queries necesarias para obtener o guardar información
en la base de datos.
Imagen 3.0.10. Código para conectar la base de datos con el programa en JavaScript.
Fuente: Autor.
54
Procurando la seguridad del sistema, se establecieron variables del entorno
que protegen las credenciales de la base de datos.
Para crear el servicio que permitirá consumir la API, se usó la librería Axios.
Esto es en el proyecto del frontend, con el fin de consumir el servicio brindado por el
proyecto del backend, utilizando Express. Para hacer uso de la librería y crear el
servicio se usó la siguiente sintaxis:
El URL al que el sistema debe conectarse es el URL para acceder al host donde
se encuentra el servicio (backend). En el caso de la imagen 3.11 se utilizó el servicio
en local, por lo que fue posible utilizar ese URL.
Ahora, por el lado del servidor, para crear el servicio HTTP con Express se
establecen el puerto y el host, para posteriormente hacer uso del servicio y las rutas:
55
Imagen 3.0.12. Configuración de la conexión con la base de datos.
Fuente: Autor.
Para establecer las rutas al usar la librería Express, se crearon rutas según el
módulo. La imagen 3.13 es un ejemplo (se cubrieron los nombres de las rutas reales):
56
De esta manera, se ofrece un servicio HTTP mediante el código del backend y
se crea un servicio para consumir API mediante el código del frontend. Esto, utilizando
React JS y Node JS.
La migración del sistema ha traído cinco módulos funcionales, listos para utilizarse. A
partir de la migración, surgen cambios inmediatos.
57
con certeza cada cambio a largo plazo, pero es pertinente mencionar los cambios
inmediatos que la migración del sistema trajo consigo.
Ahora bien, el usar JavaScript fue beneficioso para el sistema, ya que fue
posible utilizar un sólo lenguaje de programación para ambos lados (del servidor y del
cliente), lo cual facilita la estructuración del código.
58
3.3.4. Optimización
Imagen 3.15. Fragmento de código para realizar pruebas con React JS.
Fuente: Autor.
59
manejaban pruebas de manera formal y, mucho menos, documentadas. Ahora,
gracias a esta librería es posible realizar pruebas simultáneas al desarrollo del
sistema.
3.4. Conclusiones
Los sistemas ERP hasta hace pocos años solían ser aplicaciones de escritorio,
aprovechando así las funcionalidades nativas de los sistemas operativos. Sin
embargo, en algunas empresas las necesidades son diferentes y no es necesario
profundizar en lo que las aplicaciones de escritorio ofrecen y, por otro lado, a veces
es más conveniente trabajar en la web. De tal manera que en Bixdy se optó por migrar
el sistema ERP de escritorio a una aplicación web.
60
En el aspecto del fácil acceso al sistema claramente hubo una mejoría, ya que
no requiere instalación ni configuración para acceder a él ahora que se encuentra en
la web; basta con iniciar sesión con el usuario dado.
Era posible desarrollar el sistema en otro lenguaje como PHP y utilizar librerías
como JQuery para el frontend o bien algún framework como Angular, pero los
beneficios que trae Node JS en conjunto con React no sólo se nota en el
funcionamiento del sistema, también da paso al inicio de la documentación del sistema
y a la creación de librerías personalizadas, lo cual no era parte del plan inicial, pero
actualmente es posible debido a la sinergia de ambas tecnologías y la clara estructura
del proyecto.
Bajo este contexto, es posible mencionar que el objetivo general del actual
documento se logró junto a los objetivos particulares, los cuales implican un desarrollo
a mediano plazo para demostrar óptimos resultados. Se demostró que una aplicación
web es una alternativa que arroja resultados factibles para utilizar un sistema ERP y,
a su vez, se demostró que JavaScript es un lenguaje muy rentable para desarrollar
una aplicación web gracias a las tecnologías disponibles alrededor de este lenguaje.
Y, por tanto, las respuestas a las preguntas de investigación que fungieron como guía
para realizar la investigación fueron reflejadas al cumplir los objetivos particulares.
61
tecnología que se haya usado, pero la utilización de JavaScript trae consigo beneficios
como la optimización en la estructura del código y la facilidad para combinar
tecnologías para el desarrollo del lado del cliente y del lado del servidor, por lo que el
uso de tal lenguaje también arrojó resultados notorios.
62
3.5. Bibliografía
[1] «¿Qué es un sistema ERP y para qué sirve?,» 2018. [En línea]. Available:
https://www.ticportal.es/temas/enterprise-resource-planning/que-es-sistema-erp. [Último
acceso: 15 octubre 2020].
[2] «Evolución e historia del ERP. De la primera a la cuarta revolución industrial,» 11 ocutubre 2017.
[En línea]. [Último acceso: 15 octubre 2020].
[4] I. Rivera y M. D. R. Pérez Salazar, «Guía de selección de ERP en las pequeñas y medianas
empresas mexicanas,» Arbor, Vols. %1 de %2189-760, 2013.
[5] S. L. Mora, Programación de aplicaciones web. Historia, principios básicos y clientes web,
Alicante: Club Universitario de Alicante.
[6] B. Hussain, «Applications Platforms and different types of Software,» 26 marzo 2017. [En línea].
Available: https://medium.com/computing-technology-with-it-fundamentals/applications-
platforms-and-different-types-of-software-28f0fc1ef075. [Último acceso: 18 octubre 2020].
[7] «¿Qué es una Aplicación Web?,» 30 julio 2019. [En línea]. Available:
https://www.strappinc.com/blog/strapp-datos/que-es-una-aplicacion-web. [Último acceso: 19
octubre 2020].
[8] Mr Houston Tech Solutions, «Qué son las Aplicaciones Web,» 18 enero 2018. [En línea].
Available: https://mrhouston.net/blog/que-son-las-aplicaciones-web/. [Último acceso: 19
octubre 2020].
[9] T. Punt, «Contributing to PHP: How to Fix Bugs in the PHP Core,» 11 abril 2016. [En línea].
Available: https://www.sitepoint.com/contributing-to-php-how-to-fix-bugs-in-the-php-core/.
[Último acceso: 25 noviembre 2020].
[11] A. A. Solano, «Qué es PHP: Características y usos,» 1 enero 2019. [En línea]. Available:
https://openwebinars.net/blog/que-es-php/. [Último acceso: 25 octubre 2020].
63
[13] «Qué es Python,» 19 noviembre 2016. [En línea]. Available:
https://desarrolloweb.com/articulos/1325.php. [Último acceso: 25 octubre 2020].
[14] «Código de Python - Calcular el máximo común divisor de dos numeros,» 5 mayo 2015. [En
línea]. Available: https://www.lawebdelprogramador.com/codigo/Python/3152-Calcular-el-
maximo-comun-divisor-de-dos-numeros.html#v3174. [Último acceso: 25 noviembre 2020].
[20] Next U, «¿Qué es y como funciona React JS?,» 2019. [En línea]. Available:
https://www.nextu.com/blog/que-es-y-como-funciona-react-js/. [Último acceso: 3 noviembre
2020].
[21] «Qué es React. Por qué usar React,» 25 febrero 2019. [En línea]. Available:
https://desarrolloweb.com/articulos/que-es-react-motivos-uso.html. [Último acceso: 3
noviembre 2020].
[22] J. Lucas, «Qué es NodeJS y para qué sirve,» 4 septiembre 2019. [En línea]. Available:
https://openwebinars.net/blog/que-es-nodejs/. [Último acceso: 5 noviembre 2020].
[23] «Librería Axios: cliente HTTP para Javascript,» 14 septiembre 2018. [En línea]. Available:
https://desarrolloweb.com/articulos/axios-ajax-cliente-http-javascript.html. [Último acceso: 5
noviembre 2020].
[24] Express, «Express. Infraestructura web rápida, minimalista y flexible para Node.js,» [En línea].
Available: http://expressjs.com/es/. [Último acceso: 5 noviembre 2020].
64
[26] «Cliente-servidor,» 2019. [En línea]. Available: https://es.wikipedia.org/wiki/Cliente-servidor.
[Último acceso: 25 noviembre 2020].
[27] XTech, «Ant Design,» 2020. [En línea]. Available: https://ant.design/. [Último acceso: 5
noviembre 2020].
[28] J. Dugan, «Visual Studio Code vs. Sublime Text,» 3 noviembre 2015. [En línea]. Available:
https://john-dugan.com/visual-studio-code-vs-sublime-text/. [Último acceso: 26 noviembre
2020].
[29] L. Fischer, «Guía para principiantes de HTTP y REST,» 4 diciembre 2016. [En línea]. Available:
https://code.tutsplus.com/es/tutorials/a-beginners-guide-to-http-and-rest--net-16340. [Último
acceso: 25 noviembre 2020].
[30] P. Halliday, «Using TypeScript with React,» 11 febrero 2019. [En línea]. Available:
https://www.digitalocean.com/community/tutorials/react-typescript-with-react. [Último acceso:
25 noviembre 2020].
[31] C. Villafraz, «Configurando un proyecto con React y TypeScript,» 2019. [En línea]. Available:
https://platzi.com/blog/configurando-proyecto-con-react-y-typescript/. [Último acceso: 25
noviembre 2020].
65
3.6. Anexos
3.6.1. Glosario
Ajax
Acrónimo de Asynchronous JavaScript And XML, es una tecnología que permite hacer
peticiones de manera asíncrona al servidor desde el cliente (se ejecuta en el
navegador).
API
Backend
Es la parte de código que se encarga de los datos y la información en sí; en esta parte
se trabaja la funcionalidad y no la interacción con el usuario.
Código
Frontend
JQuery
66
Lenguaje de programación
Servidor
Es un ordenador remoto que provee los datos solicitados por parte de los navegadores
de otras computadoras. En redes locales se entiende como el software que configura
un PC como servidor para facilitar el acceso a la red y sus recursos.
Startup
Podría definirse como una empresa de nueva creación que presenta unas grandes
posibilidades de crecimiento. Aunque el término de startup puede referirse a
compañías de cualquier ámbito, normalmente suele utilizarse para aquellas que tienen
un fuerte componente tecnológico y que están relacionadas con el mundo de Internet
y las TICs.
67