³desarrollo de un sistema erp en la nube y encriptación de

90
UNIVERSIDAD POLITÉCNICA DE SINALOA PROGRAMA ACADÉMICO DE INGENIERÍA EN INFORMÁTICA Tesina Desarrollo de un sistema ERP en la nube y encriptación de sus datos para empresas tecnológicasAutor: Conrado Antonio Carrillo Rosales Asesor: M.S.I Rosa Karina González Trigueros Asesor OR: Ing. Ramón Israel Sánchez Cevallos Mazatlán, Sinaloa 15 de Diciembre de 2016

Upload: others

Post on 31-Jul-2022

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ³Desarrollo de un sistema ERP en la nube y encriptación de

UNIVERSIDAD POLITÉCNICA DE SINALOA

PROGRAMA ACADÉMICO DE INGENIERÍA EN INFORMÁTICA

Tesina

“Desarrollo de un sistema ERP en la nube y encriptación de sus datos para empresas

tecnológicas”

Autor:

Conrado Antonio Carrillo Rosales

Asesor:

M.S.I Rosa Karina González Trigueros

Asesor OR:

Ing. Ramón Israel Sánchez Cevallos

Mazatlán, Sinaloa 15 de Diciembre de 2016

Page 2: ³Desarrollo de un sistema ERP en la nube y encriptación de

1

Page 3: ³Desarrollo de un sistema ERP en la nube y encriptación de

2

Page 4: ³Desarrollo de un sistema ERP en la nube y encriptación de

3

Page 5: ³Desarrollo de un sistema ERP en la nube y encriptación de

4

Page 6: ³Desarrollo de un sistema ERP en la nube y encriptación de

5

Agradecimientos

Quiero agradecer a mis padres por haberme apoyado en todo

momento a lo largo de mi camino hasta el día de hoy, siendo ellos la razón de

querer ser alguien en la vida que sea capaz de desarrollar y llevar a cabo proyectos

personales de manera autónoma, a mis profesores que me ayudaron a resolver

cada una de mis dudas y por fomentarme una buena educación profesional.

También deseo agradecer a aquellas personas que perdí a lo largo de

mi camino como estudiante, ya que fueron por mucho tiempo mi motivo para querer

superarlos día con día y que hoy, aunque ya no estén más a mi lado, siguen

queriéndome hacer alguien competitivo.

Page 7: ³Desarrollo de un sistema ERP en la nube y encriptación de

6

Índice de contenido

Índice de figuras .......................................................................................................... 9

Índice de tablas ......................................................................................................... 11

Resumen ................................................................................................................... 12

Abstract ..................................................................................................................... 13

Introducción ............................................................................................................... 14

Capítulo I ................................................................................................................... 15

1.1 Planteamiento del problema ................................................................................ 16

1.2 Hipótesis .............................................................................................................. 17

1.3 Objetivos ............................................................................................................. 17

1.3.1 General ......................................................................................................... 17

1.3.2 Particulares ................................................................................................... 17

1.4 Importancia y/o Justificación del estudio ............................................................. 18

1.5 Limitaciones del estudio ...................................................................................... 19

1.6 Preguntas de investigación ................................................................................. 19

Capítulo II .................................................................................................................. 20

2.1 Introducción ......................................................................................................... 21

2.2 Descripción y análisis de investigaciones relacionadas ...................................... 22

2.2.1 Servidores y sitios web ................................................................................. 26

2.2.2 Bases de datos ............................................................................................. 27

2.2.3 MySQL .......................................................................................................... 28

2.2.4 Oracle Database ........................................................................................... 30

2.2.5 Encriptación de datos .................................................................................... 32

2.2.6 MD5 (Message-Digest Algorithm 5) .............................................................. 32

Page 8: ³Desarrollo de un sistema ERP en la nube y encriptación de

7

2.2.7 DES (Data Encryption Standard): ................................................................. 33

2.2.8 FrontEnd: ...................................................................................................... 34

2.2.9 HTML: ........................................................................................................... 34

2.2.10 CSS: ............................................................................................................ 35

2.2.11 JavaScript: .................................................................................................. 36

2.2.12 BackEnd ...................................................................................................... 37

2.2.13 PHP: ............................................................................................................ 38

2.2.14 Git ............................................................................................................... 41

2.2.15 Estándar de programación. ......................................................................... 42

2.2.16 Estándar de programación PSR-2 .............................................................. 42

2.2.17 Documentación ........................................................................................... 44

2.2.18 Diagramas de flujo: ..................................................................................... 44

2.2.19 Diccionario de datos: ................................................................................... 45

2.2.20 Modelado de datos: ..................................................................................... 46

Capítulo III ................................................................................................................. 48

3.1 Introducción ......................................................................................................... 49

3.2 Herramientas ....................................................................................................... 50

3.2.1 Materialize (Framework CSS): ...................................................................... 50

3.2.2 Laravel (Framework de PHP): ....................................................................... 51

3.2.3 jQuery (Librería de JavaScript): .................................................................... 52

3.2.4 Sublime Text ................................................................................................. 53

3.2.5 SQLyog ......................................................................................................... 54

3.2.6 Hostinger ....................................................................................................... 55

3.2.7FileZilla ........................................................................................................... 56

3.3 Procedimiento ..................................................................................................... 57

Page 9: ³Desarrollo de un sistema ERP en la nube y encriptación de

8

3.3.1 Subida de archivos al servidor por medio de FTP (FileZilla) ......................... 57

3.3.2 Validación de formularios .............................................................................. 58

3.3.3 Encriptamiento de datos ............................................................................... 61

3.3.4 Respaldo de proyectos con git ...................................................................... 66

Capítulo IV................................................................................................................. 73

4.1 Introducción ......................................................................................................... 74

4.2 Análisis de Datos ................................................................................................. 75

4.2.1 Capacitaciones .............................................................................................. 77

4.2.2 Futuras modificaciones ................................................................................. 77

4.2.3 Respaldo de base de datos .......................................................................... 78

Capítulo V.................................................................................................................. 79

5.1 Conclusiones ....................................................................................................... 80

5.2 Recomendaciones y/o sugerencias ..................................................................... 81

Definición de términos ............................................................................................... 82

Referencias Bibliográficas ......................................................................................... 84

Page 10: ³Desarrollo de un sistema ERP en la nube y encriptación de

9

Índice de figuras

FIGURA 1 VISTA BÁSICA DE UN SISTEMA “BOM” .............................................................. 22

FIGURA 2 REGISTRO DE MATERIALES EN UN SISTEMA “IMC” ............................................ 23

FIGURA 3 VISTA PARA GESTIONAR LOS MATERIALES DE UN SISTEMA “MRP” ...................... 24

FIGURA 4 LOGO DEL PAQUETE MICROSOFT OFFICE ........................................................ 25

FIGURA 5 DIAGRAMA BÁSICO DE LA RELACIÓN CLIENTE SERVIDOR .................................... 26

FIGURA 6 LOGO DEL SISTEMA GESTOR DE BASE DE DATOS MYSQL .................................. 28

FIGURA 7 LOGO DEL SISTEMA GESTOR DE BASE DE DATOS ORACLE DATABASE ................. 30

FIGURA 8 LOGO DE HTML5 .......................................................................................... 34

FIGURA 9 LOGO DE CSS3 ............................................................................................ 35

FIGURA 10 LOGO NO OFICIAL DE JAVASCRIPT ................................................................ 36

FIGURA 11 LOGO DE PHP ............................................................................................ 38

FIGURA 12 LOGO DE GIT .............................................................................................. 41

FIGURA 13 EJEMPLO DE CÓDIGO BAJO EL ESTÁNDAR PSR-2 ........................................... 43

FIGURA 14 EJEMPLO DE UN DIAGRAMA DE FLUJO ............................................................ 44

FIGURA 15 EJEMPLO DE UN DICCIONARIO DE DATOS. ...................................................... 45

FIGURA 16 EJEMPLO DE UN MODELADO DE DATOS .......................................................... 46

FIGURA 17 LOGO DE CSS3 .......................................................................................... 50

FIGURA 18 LOGO DEL FRAMEWORK LARAVEL ................................................................. 51

FIGURA 19 LOGO DE LA LIBRERÍA JQUERY ..................................................................... 52

FIGURA 20 LOGO DE SUBLIME TEXT .............................................................................. 53

FIGURA 21 LOGO DE SQLYOG ...................................................................................... 54

FIGURA 22 LOGO DE HOSTINGER .................................................................................. 55

FIGURA 23 LOGO DE FILEZILLA ..................................................................................... 56

FIGURA 24 CONFIGURACIÓN DE CONEXIÓN POR MEDIO DE FTP ....................................... 57

FIGURA 25 SUBIDA DE ARCHIVOS MEDIANTE FILEZILLA .................................................... 57

FIGURA 26 EJEMPLO DE UN FORMULARIO BÁSICO CON MATERIALIZE ................................ 58

FIGURA 27 EJEMPLO DE CÓDIGO PARA UN FORMULARIO BÁSICO USANDO MATERIALIZE ...... 59

FIGURA 28 EJEMPLO DE CÓDIGO PARA LA VALIDACIÓN DE UN FORMULARIO CON JQUERY ... 59

FIGURA 29 MENSAJE DE ERROR EN UN FORMULARIO ....................................................... 60

Page 11: ³Desarrollo de un sistema ERP en la nube y encriptación de

10

FIGURA 30 EFECTO VISUAL SOBRE ERROR EN EL FORMULARIO ........................................ 60

FIGURA 31ENCRIPTAMIENTO DE DATOS USANDO AES_ENCRYPT ................................. 61

FIGURA 32 DESENCRIPTAMIENTO DE DATOS USANDO AES_DECRYPT ........................... 61

FIGURA 33 COMPARACIÓN DE TEXTO PLANO Y ENCRIPTADO ............................................ 62

FIGURA 34 INSERCIÓN DE DATOS ENCRIPTADOS CON LARAVEL ........................................ 63

FIGURA 35 EXTRACCIÓN DE DATOS CON LARAVEL .......................................................... 63

FIGURA 36 FUNCIÓN DE UN MODELO DE LARAVEL ........................................................... 64

FIGURA 37 MANEJO DE DATOS DE UNA VISTA DE LARAVEL ............................................... 64

FIGURA 38 VISTA PARA EL USUARIO FINAL ...................................................................... 65

FIGURA 39 INICIALIZAR UN REPOSITORIO CON GIT ........................................................... 66

FIGURA 40 AGREGANDO ARCHIVOS AL “STAGING INDEX” CON EL COMANDO “ADD”.............. 67

FIGURA 41 EJEMPLO DE UN MENSAJE DESCRIBIENDO EL COMMIT ..................................... 68

FIGURA 42 REMOVIENDO UN ARCHIVO DEL STAGING INDEX .............................................. 69

FIGURA 43 DETALLES Y MENSAJES DE COMMIT MEDIANTE EL COMANDO LOG ..................... 70

FIGURA 44 CREACIÓN DE UNA RAMA CON EL COMANDO “BRANCH” .................................... 70

FIGURA 45 VER RAMAS CREADAS .................................................................................. 71

FIGURA 46 CAMBIAR ENTRE RAMAS ............................................................................... 71

FIGURA 47 RECUPERACIÓN DE VERSIONES ANTERIORES ................................................. 72

Page 12: ³Desarrollo de un sistema ERP en la nube y encriptación de

11

Índice de tablas

TABLA 1 VENTAJAS Y DESVENTAJAS DE MYSQL ............................................................. 29

TABLA 2 VENTAJAS Y DESVENTAJAS DE ORACLE DATABASE ............................................ 31

Page 13: ³Desarrollo de un sistema ERP en la nube y encriptación de

12

Resumen

En la presente tesina se podrá observar cómo desarrollar un sistema

ERP para empresas que se dedican al desarrollo de tecnologías de comunicación,

para poder ser utilizado desde un servidor web, siendo estos de gran utilidad dentro

de una empresa, ya que ayuda a la administración de sus diversos recursos

internos. Tal es la importancia de un sistema de este tipo que cubra sus

necesidades que resulta esencial y lógico el incluir medidas de seguridad en éste,

como el encriptamiento de datos a través de algoritmos modernos y potentes,

dejando de lado aquellos que resultan antiguos y altamente vulnerables, además

del uso de librerías y/o frameworks de diversos lenguajes de programación web

que brindan de forma predeterminada seguridad, garantizando al usuario final

conformidad de saber que los datos que manipula el sistema no podrán ser vistos

por personas no autorizadas.

Palabras clave: Sistema ERP, encriptamiento de datos, librerías y frameworks.

Page 14: ³Desarrollo de un sistema ERP en la nube y encriptación de

13

Abstract

In this thesis, it will explain how to develop an ERP system for

companies that develops communication technologies, for be used from a web

server, being these systems very useful within a company, because it helps to

manage different internal resources. The importance of this kind of system that

meets the needs of a company is so that is essential includes security measure

inside of it, like data encryption through stronger and modern algorithms, putting

away those that are elder and highly vulnerable, in addition of the use of libraries

and frameworks of many web programming languages that provides security,

ensuring compliance to the end user allowing him to know that the data handled by

the system won’t be seen by unauthorized persons.

Key words: ERP System, data encryption, libraries and frameworks.

Page 15: ³Desarrollo de un sistema ERP en la nube y encriptación de

14

Introducción

En esta tesina se muestra cómo llevar a cabo el desarrollo de un

sistema ERP para aquellas empresas que trabajen con tecnologías de

comunicación, utilizando lenguajes de programación web. La razón de ser de este

tipo de sistemas es mejorar las tareas diarias que se llevan a cabo de forma interna

en una empresa, permitiendo a sus empleados tener acceso a este desde cualquier

computadora o dispositivo móvil, llevando a cabo procesos administrativos como lo

son el control de control de proyectos y el inventario del equipo con el que se

trabaja, siendo este de vital importancia puesto que llevar un control sobre los

dispositivos y materiales que son usados por los empleados es necesario para tener

un registro de las tareas diarias que se realizan en la empresa. Es importante

también que se permita un control financiero, a través del registro de gastos de

proyecto, para poder determinar costos de una forma precisa.

Como bien se sabe, el mundo de la informática es enorme, y sigue creciendo día

con día. Los desarrolladores web deben de ser capaces de dominar el

autoaprendizaje, ya que día con día surgen nuevas tecnologías que se dedican a las

distintas partes y/o ramas de la informática. Es por ello que se mostrarán las

herramientas que al momento de la creación de este documento son las mejores

para desarrollar proyectos complejos, desde lenguajes de programación, pasando

por la documentación de un sistema hasta llegar a los métodos más populares y

seguros para el encriptamiento de datos, característica que debe de estar

fuertemente presente en la actualidad en los ERP.

Por último se encontrarán algunas sugerencias que pueden seguir tanto un líder de

proyecto, empresario y sobretodo desarrolladores para que puedan guiarse en el

diseño de sistemas ERP.

Page 16: ³Desarrollo de un sistema ERP en la nube y encriptación de

15

Capítulo I

Antecedentes y

planteamiento del

problema

Page 17: ³Desarrollo de un sistema ERP en la nube y encriptación de

16

1.1 Planteamiento del problema

México es un país que ha avanzado tecnológicamente en los últimos

años, estando actualmente en el puesto 63 en cuanto a la adaptación de

tecnología, avanzando 13 lugares con respecto al año 2012 [1], lo que significa que

se han ido desarrollando empresas que se dediquen a la innovación y al desarrollo

de la tecnología cada vez a un ritmo más acelerado.

En cada una de estas empresas existen tareas que son distintas entre cada

empresa, debido a que cada una de ellas cuenta con necesidades y normas

diferentes que las distinguen de las demás, independientemente del giro que estas

tengan. En ocasiones resulta tardado o incluso complicado manejar todos los

recursos que una empresa pueda tener, desde recursos financieros como

materiales y humanos, por lo que la creación de sistemas que faciliten la

administración de estos recursos resulta una necesidad más que vital para el

manejo de una empresa.

Para ayudar a la correcta administración de recursos, la implementación de un

sistema ERP personalizado en base a las necesidades de la misma resulta ser una

solución viable, debido a que estos ayudan a agilizar tareas básicas de la empresa

a través del control de sus proyectos y recursos internos, teniendo a la mano

reportes de gastos y permitiendo integridad y seguridad en los datos que el sistema

administrará con la ayuda de frameworks y librerías basadas en tecnologías web

Page 18: ³Desarrollo de un sistema ERP en la nube y encriptación de

17

1.2 Hipótesis

Un sistema ERP basado en tecnologías web mejora el rendimiento de

la administración de recursos de una empresa, acortando el tiempo en que se

realizan registros de proyectos y tareas, a la vez que proporciona seguridad

protegiendo los datos que maneja y permitiendo a todos aquellos usuarios

autorizados a acceder al sistema puedan entrar desde cualquier plataforma que

cuente con una conexión a internet.

1.3 Objetivos

1.3.1 General

Permitir un control óptimo de las actividades que realiza la empresa y

de sus distintos recursos de forma interna a través de tecnología web que permitan

seguridad e integridad de sus datos privados.

1.3.2 Particulares

Mejorar la administración de recursos humanos, materiales y

económicos

Asegurar la privacidad de la información interna de la empresa.

Reducir el tiempo en que se almacenan registros de proyectos.

Permitir un control estricto sobre la consulta de información

empresarial a los empleados de la institución.

Page 19: ³Desarrollo de un sistema ERP en la nube y encriptación de

18

1.4 Importancia y/o Justificación del estudio

Las empresas aunque tengan un mismo giro, es decir, que lleven a

cabo sus actividades empresariales sobre un mismo sector, tienen necesidades

distintas entre ellas. Existen muchas razones para que esto suceda, como el número

de trabajadores, si su capital proviene de gobierno, etc.

El desarrollar sistemas ERP no es algo nuevo, su origen es de la década de los 60

[2], sin embargo, no todos los sistemas llevan consigo medidas de seguridad que

garanticen la integridad de datos del sistema.

El desarrollo de algoritmos informáticos que permitan manipular textos planos para

que se conviertan en datos ilegibles tampoco es algo novedoso, ya que se han

implementado desde los años 70 [3]. Los sistemas que se desarrollan en México

comúnmente omiten la inclusión de este tipo de algoritmos, dejando de lado su

importancia.

Actualmente deben de considerarse estas medidas de seguridad, por lo que se

deben investigar qué algoritmos de encriptamiento son los más potentes para ser

implementados en una base de datos.

Pero, ¿Por qué es importante usar este tipo de medidas en estos sistemas? La razón

es que resulta prescindible proteger la información confidencial de una empresa

para evitar robo de datos de recursos materiales, de empleados e incluso de los

clientes de la empresa, pasando también por la privacidad de su información

financiera.

Page 20: ³Desarrollo de un sistema ERP en la nube y encriptación de

19

1.5 Limitaciones del estudio

Los sistemas ERP deben manejar niveles de usuario, es decir, que

cuente con diferentes tipos de permisos para todas las personas que contarán con

acceso a los datos que éste manipula, es decir, el sistema debe contar con

restricciones que validen qué tipo de información será visible para un tipo de usuario.

Un ejemplo práctico es contar con una cuenta de administrador que pueda manipular

los permisos de otros usuarios y contar con registros que graben la actividad de cada

usuario en el sistema.

Para el tema de esta tesina, se explicará cómo desarrollar un sistema ERP usando

tecnologías bajo licencias tipo OSL (Open Source License) y GNU/GPL (General

Public License), ya que nos ofrece la posibilidad de utilizar dichas tecnologías sin

ningún coste o restricción [4] [5].

1.6 Preguntas de investigación

1. ¿Qué tecnologías de desarrollo web son lo suficientemente fuertes y

extensas para cubrir las necesidades de la creación de un sistema tipo ERP?

2. ¿En qué medida son confiables los algoritmos de encriptamiento de datos?

3. ¿Es posible mantener conectado en todo momento un sistema basado en

tecnologías web?

Page 21: ³Desarrollo de un sistema ERP en la nube y encriptación de

20

Capítulo II

Marco referencial y

marco teórico

Page 22: ³Desarrollo de un sistema ERP en la nube y encriptación de

21

2.1 Introducción

Como bien es sabido, la historia del surgimiento de la informática es

enorme, existen muchos sucesos interesantes que pueden rescatarse en cada año

hasta el día de hoy. En este segundo capítulo se tomarán algunas de las maneras en

la cual las empresas resolvían sus necesidades administrativas, ya sea para

gestionar sus recursos materiales y humanos, bienes empresariales o simplemente

procesos internos. Toda esta información estará relacionada a antes de la llegada de

los sistemas tipo ERP como tal y la implementación de algoritmos especializados en

proteger los datos que este maneja.

Cabe recordar que conforme pasen los años, la forma en que se desarrollan estos

sistemas cambiará, así como cambiaron las tecnologías y metodologías que se

empleaban antes hasta llegar hoy en la actualidad.

Para tema de esta tesina en particular, solo se describirán las tecnologías que se

emplean en el mundo del desarrollo web, pasando por bases de datos, frameworks,

librerías hasta estándares de programación.

Page 23: ³Desarrollo de un sistema ERP en la nube y encriptación de

22

2.2 Descripción y análisis de investigaciones relacionadas

A pesar de que los sistemas ERP llevan casi 70 años siendo usados [2]

no es ninguna novedad el hecho de que se utilicen herramientas para la gestión de

recursos y tareas internas de una empresa. Una de las primeras formas en las que

las empresas tecnológicas empezaron a llevar registros para la administración de

recursos materiales internos de forma digital fueron los sistemas “BOM” cuyas siglas

significan Bills Of Materials (Por su traducción al inglés “Lista de Materiales”)

Figura 1 Vista básica de un sistema “BOM”

Fuente:

http://calculatelca.com/static-content/software/impact-estimator/help-files/reports/table_billOfMaterials.html

Estos sistemas surgieron alrededor de la década de los 60 y aunque eran en su

momento muy populares entre las compañías, fue en esta época en la que se

empezaron a contratar servicios de desarrolladores con el fin de adaptarlo a las

necesidades únicas de cada compañía. [6].

Page 24: ³Desarrollo de un sistema ERP en la nube y encriptación de

23

Posteriormente se emplearon los sistemas llamados IMC cuyas siglas significan

Inventory Management Control. Estos sistemas se emplearon junto con bases de

datos un poco más complejas que a su vez, podían ser modificadas hasta cierto

punto por parte de la empresa en función a sus necesidades. [2].

Figura 2 Registro de materiales en un sistema “IMC”

Fuente:

http://www.compusultsystems.com/fassetrack/fassetrack-ics

En la década de los 70 surgen los sistemas MRP, cuyas siglas significan

management resource planning (por su traducción al inglés “administración de la

planeación de recursos”). Estos sistemas eran distintos a los usados en décadas

anteriores, ya que estos eran capaces de controlar no solo dónde y cómo se usaban

los materiales de una empresa, sino además, de prever cuándo iban a ser

necesitados y en qué cantidad [7].

Concretamente este sistema trataba de cubrir 3 necesidades básicas [8]:

Asegurar materiales y productos que estén disponibles para la producción y

entrega de clientes.

Mantener los niveles de inventario adecuados para la operación.

.Planear las actividades de manufactura, horarios de entrega y actividades de

compra de recursos.

Page 25: ³Desarrollo de un sistema ERP en la nube y encriptación de

24

Figura 3 Vista para gestionar los materiales de un sistema “MRP”

Fuente: http://www.eflowsys.com/ERP/ERP/asp/features.asp

Es por esta razón que los sistemas MRP son considerados como los antecesores

más directos de los sistemas ERP, aunque estos se enfocaban más que nada en la

planificación y el control de la producción.

En la década de los 80 los sistemas MRP evolucionaron para poder adaptarse a las

necesidades que, por el pasar de los años, habían surgido, ya que en aquel entonces

ya no bastaba solo con gestionar recursos materiales, sino también otros aspectos

que habían surgido en cada una de las empresas [9].

Es así como surgió el sistema MRP-ll, cuyo fin era el administrar cómodamente

cuestiones de financiamientos del coste de mano de obra, logística, clientes, etc. [10]

Estos sistemas se convirtieron en una herramienta de alta prioridad para medianas y

grandes empresas, ya que permitían almacenar grandes cantidades de información

gracias al uso de bases de datos tales como MySQL y Oracle, dejando de lado

aquellas bases de datos basadas en registros.

Fue a partir de la década de los años 90 donde se empezaron a utilizar los sistemas

ERP tal y como los conocemos en la actualidad. Compañías como Sage, [11] se

dedicaron al desarrollo de este tipo de sistemas, siendo los suyos uno de los más

vendidos, puesto que fue en estos años cuando se dio el “boom” de la era

informática.

Page 26: ³Desarrollo de un sistema ERP en la nube y encriptación de

25

Cabe destacar que, además de todos estos sistemas que se han estado

mencionando a lo largo de este capítulo, el uso de herramientas de ofimática tales

como Microsoft Excel y Word, han sido empleadas desde los años 90, debido a su

facilidad y poco uso de recursos que se necesitaban para ser ejecutados en los

ordenadores de las empresas de aquella época [12].

Figura 4 Logo del paquete Microsoft Office

Fuente: https://www.office.com/

Programas con bases de datos Access fueron empleados para crear software que se

encargara de la administración de recursos empresariales, en especial aquellos que

eran escritos en el lenguaje de programación C#, debido a la compatibilidad entre

ambas herramientas, puesto que el desarrollador de ambas fue la compañía

Microsoft [13]

Fue alrededor de los años 90 en que el software se volvió cada vez más comercial

para las empresas, por lo que, en pleno boom de la informática, los desarrolladores

de aquella época se vieron forzados a crear algoritmos que se encargaran de

proteger los datos que se almacenaban en una base de datos, esto con el fin de

atraer mayores clientes y convencerlos de que sus productos eran los más confiables

del mercado en aquella época.

Page 27: ³Desarrollo de un sistema ERP en la nube y encriptación de

26

2.2.1 Servidores y sitios web

Un servidor, como la misma palabra indica, es un ordenador o máquina

informática que está al “servicio” de otras máquinas, ordenadores o personas

llamadas clientes y que le suministran a estos, todo tipo de información [14].

Figura 5 Diagrama básico de la relación cliente servidor

Fuente: https://es.wikipedia.org/wiki/Cliente-servidor

Por regla general, las máquinas servidoras suelen ser algo más potentes que un

ordenador normal. Sobre todo suelen tener más capacidad tanto de almacenamiento

de información como de memoria principal, ya que tienen que dar servicio a muchos

clientes. Pero como todo, también depende de las necesidades, ya que es posible

tener un servidor de menores prestaciones si se pretende tener pocos clientes

conectados, o si los servicios que se solicitan en el servidor no requieren una gran

capacidad servidora.

Generalmente se utilizan los servidores web para servir de sitios web. Un sitio web

es un conjunto de páginas web desarrolladas en código HTML, relacionadas a un

dominio de Internet el cual se puede visualizar en la World Wide Web (www)

mediante los navegadores web o también llamados browser como ser Chrome,

Firefox, Edge, Opera entre otros [15].

Para fin de esta tesina, se hará uso de un servidor web para poder hacer referencia a

la programación en la nube, es decir, el poder contar con un sistema ERP en internet

de tal forma que pueda ser gestionado por sus usuarios finales desde cualquier parte

del mundo a través de un dispositivo con conexión a internet.

Page 28: ³Desarrollo de un sistema ERP en la nube y encriptación de

27

2.2.2 Bases de datos

Conforme surgieron nuevos lenguajes de programación y sistemas

operativos, también se vio en la necesidad de crear nuevos motores gestores de

bases de datos.

Una base de datos o banco de datos es un conjunto de datos pertenecientes a un

mismo contexto y almacenados sistemáticamente para su posterior uso.

Actualmente, y debido al desarrollo tecnológico de campos como la informática y la

electrónica, la mayoría de las bases de datos están en formato digital, siendo este un

componente electrónico, por tanto se ha desarrollado y se ofrece un amplio rango de

soluciones al problema del almacenamiento de datos.

Existen programas denominados sistemas gestores de bases de datos, abreviado

SGBD (en inglés Database Management System o DBMS), que permiten almacenar

y posteriormente acceder a los datos de forma rápida y estructurada. [16]

Las propiedades de estos DBMS, así como su utilización y administración, se

estudian y emplean dentro del ámbito de la informática comúnmente para el

desarrollo de aplicaciones en una cantidad enorme de lenguajes de programación

que se encargue de manejar información y poder ser gestionada por los usuarios

finales de dicha aplicación.

Las aplicaciones más usuales son para la gestión de empresas e instituciones

públicas; También son ampliamente utilizadas en entornos científicos con el objeto

de almacenar la información experimental.

Los denominados sistemas gestores de bases de datos más populares son MySQL y

Oracle, y desde la década de los 70 han estado sujetos a cambios, incorporando

nuevos algoritmos de búsqueda, inserción de datos, consultas, etc. [17].

A continuación, se presenta un breve resumen de la historia de los motores de bases

de datos mencionados anteriormente:

Page 29: ³Desarrollo de un sistema ERP en la nube y encriptación de

28

2.2.3 MySQL

MySQL es un sistema de gestión de bases de datos relacional

desarrollado bajo licencia dual GPL/Licencia comercial por Oracle Corporation y está

considerada como la base datos open source más popular del mundo, y una de las

más populares en general junto a Oracle y Microsoft SQL Server, sobre todo para

entornos de desarrollo web.

Figura 6 Logo del sistema gestor de base de datos MySQL

Fuente: https://www.mysql.com/

MySQL fue inicialmente desarrollado por MySQL AB (empresa fundada por David

Axmark, Allan Larsson y Michael Widenius). MySQL A.B. fue adquirida por Sun

Microsystems en 2008, y ésta a su vez fue comprada por Oracle Corporation en

2010, la cual ya era dueña desde 2005 de Innobase Oy, empresa finlandesa

desarrolladora del motor InnoDB para MySQL.

MySQL es muy utilizado en aplicaciones web, como Joomla, Wordpress, Drupal o

phpBB, en plataformas (Linux/Windows-Apache-MySQL-PHP/Perl/Python), y por

herramientas de seguimiento de errores como Bugzilla. Su popularidad como

aplicación web está muy ligada a PHP, que a menudo aparece en combinación con

MySQL.

Page 30: ³Desarrollo de un sistema ERP en la nube y encriptación de

29

MySQL es una base de datos muy rápida en la lectura cuando utiliza el motor no

transaccional MyISAM, pero puede provocar problemas de integridad en entornos de

alta concurrencia en la modificación. En aplicaciones web hay baja concurrencia en

la modificación de datos y en cambio el entorno es intensivo en lectura de datos, lo

que hace a MySQL ideal para este tipo de aplicaciones.

Algunas de las características significativas que distinguen MySQL de otros sistemas

gestores de bases de datos son los siguientes:

- Permite la creación de tablas temporales.

- Es compatible con casi todos los lenguajes de programación.

- Tiene compatibilidad con Windows, Mac OS y Linux.

- Ofrece un sistema de contraseñas y privilegios seguro mediante verificación

basada en el host y el tráfico de contraseñas está cifrado al conectarse a un

servidor.

- Replicación de base de datos.

- Uso de claves foráneas

- Uso de transacciones para seguridad de datos

- Permite buscar por cualquier campo de una tabla.

Tabla 1 Ventajas y desventajas de MySQL

Ventajas Desventajas

- Es un software open source, por lo que cualquier

persona puede modificar su código fuente.

- Alto rendimiento en las operaciones.

- No necesita de muchos recursos para funcionar.

-Soporta gran variedad de Sistemas Operativos

- Es ideal para acceder bases de datos en internet

datos en Internet

- Permite el uso de triggers, funciones, vistas y

procedimientos almacenados

- Algunas funcionalidades de

MySQL no están

documentadas.

-No es del todo intuitivo como

otros sistemas gestores de

bases de datos.

Fuente: https://mysqldaniel.wordpress.com/ventajas-y-desventajas/

Page 31: ³Desarrollo de un sistema ERP en la nube y encriptación de

30

2.2.4 Oracle Database

Oracle Database es un sistema de gestión de base de datos de tipo

objeto-relacional (ORDBMS, por el acrónimo en inglés de Object-Relational Data

Base Management System), desarrollado por Oracle Corporation.

Se considera a Oracle Database como uno de los sistemas de bases de datos más

completos, destacando: soporte de transacciones, estabilidad, escalabilidad, y

soporte multiplataforma.

Figura 7 Logo del sistema gestor de base de datos Oracle Database

Fuente: https://learningdatabase.wordpress.com/category/taller-de-base-de-datos/

En la actualidad, Oracle (Nasdaq: ORCL) todavía encabeza la lista. La tecnología

Oracle se encuentra prácticamente en todas las industrias alrededor del mundo y en

las oficinas de 98 de las 100 empresas Fortune 100. Oracle es la primera compañía

de software que desarrolla e implementa software para empresas cien por ciento

activado por Internet a través de toda su línea de productos: base de datos,

aplicaciones comerciales y herramientas de desarrollo de aplicaciones y soporte de

decisiones. Oracle es el proveedor mundial líder de software para administración de

información, y la segunda empresa de software [18].

La primera versión “real” del sistema de gestión de bases de datos relacionales

Oracle fue Oracle 2. Este sistema admitía sólo las características básicas de SQL, y

estaba escrito en un lenguaje ensamblador.

Page 32: ³Desarrollo de un sistema ERP en la nube y encriptación de

31

Al año siguiente, y durante los próximos 10 años más o menos, Oracle Corporation

lanzó actualizaciones a su base de datos buque insignia. Probablemente una de las

razones por las que el sistema de gestión de bases de datos relacionales de Oracle

ha logrado permanecer en la cima sea gracias a sus actualizaciones de productos

que están estrechamente vinculados a los cambios en el mercado.

Palabras de moda de bases de datos tales como “escalable”, “programable”,

“distribuida”, y “portátil” también están vinculadas a la liberación de Oracle. Por

ejemplo, en 1985 se añadió soporte para un modelo cliente-servidor a la espera de

una aceptación cada vez mayor de la comunicación por red.

A medida que Internet allanó el camino para la era digital, el sistema de gestión de

bases de datos relacionales de Oracle se ha actualizado para incluir una máquina

virtual Java nativa (JVM) [19].

Algunas de las ventajas y desventajas de este sistema de gestión de base de datos

son:

Tabla 2 Ventajas y desventajas de Oracle Database

Ventajas Desventajas

- Comprime los datos en una red para

mejorar el rendimiento de consultas.

- Compatible con cualquier plataforma.

- Está orientado para bases de datos en

internet.

- Permite el almacenamiento de cualquier

tipo de dato.

- Permite la creación de triggers y

procedimientos almacenados.

- Tiene una licencia muy costosa.

- Generalmente sus versiones no son

estables hasta meses e incluso años

después de haber sido lanzadas.

- La mala instalación del software de

Oracle en un servidor puede provocar

un bajo rendimiento.

Fuente: http://oraclebddepn.blogspot.mx/2013/05/ventajas-y-desventajas.html

Page 33: ³Desarrollo de un sistema ERP en la nube y encriptación de

32

2.2.5 Encriptación de datos

Encriptación es el proceso mediante el cual cierta información o texto

sin formato es cifrado de forma que el resultado sea ilegible a menos que se

conozcan los datos necesarios para su interpretación. Es una medida de seguridad

utilizada para que al momento de almacenar o transmitir información sensible ésta no

pueda ser obtenida con facilidad por terceros.

Opcionalmente puede existir además un proceso de desencriptación a través del cual

la información puede ser interpretada de nuevo a su estado original, aunque existen

métodos de encriptación que no pueden ser revertidos.

Algunos de los usos más comunes de la encriptación son el almacenamiento y

transmisión de información sensible como contraseñas, números de identificación

legal, números de tarjetas de crédito, reportes administrativo-contables y

conversaciones privadas, entre otros.

Como es deducible, en sistemas complejos como los ERP, sistemas de tiempo real o

sistemas que hagan uso de la comunicación de datos, es de vital importancia

asegurar que la Información viaje segura, manteniendo su autenticidad, integridad,

confidencialidad y el no repudio de la misma entre otros aspectos [20].

Desde el surgimiento de las bases de datos, se han desarrollado distintos algoritmos

para el encriptamiento de datos, a continuación se muestra una breve descripción de

aquellos que son comúnmente más usados al momento de proteger datos sensibles

de un sistema debido a su fuerte seguridad y alto rendimiento en las operaciones que

realiza:

2.2.6 MD5 (Message-Digest Algorithm 5)

Es un algoritmo de reducción criptográfico de 128 bits ampliamente

usado. Uno de sus usos más comunes es el de comprobar que algún archivo no

haya sido modificado o para cifrar datos sencillos como urls, ids, etc. Una cualidad de

este algoritmo es que no es posible revertir el proceso de cifrado [21].

Page 34: ³Desarrollo de un sistema ERP en la nube y encriptación de

33

2.2.7 DES (Data Encryption Standard):

Es un algoritmo de cifrado, para ocultar información, escogido como un

estándar FIPS en los Estados Unidos en 1976, y cuyo uso se ha propagado

ampliamente por todo el mundo. El algoritmo fue controvertido al principio, con

algunos elementos de diseño clasificados, una longitud de clave relativamente corta,

y las continuas sospechas sobre la existencia de alguna puerta trasera para la

National Security Agency (NSA) [22].

Algoritmos como MD5 y DES se volvieron obsoletos e insuficientes para brindar

seguridad a los datos que manejaban los sistemas administrativos, por lo que

surgieron algoritmos fuertemente seguros como AES (Advanced Encription Standard)

que poco a poco fueron implementados en las bases de datos de estos sistemas,

debido a que esta nueva generación de algoritmos empleaban “palabras clave” para

encriptar textos y guardarlos ilegiblemente para cualquier usuario que no conociera

dicha palabra para poder revertir el proceso de encriptamiento [23].

Es así pues, que en esta tesina se hace énfasis sobre el uso de algoritmos fuertes y

confiables que, a pesar de haber sido desarrollados en décadas anteriores, han ido

mejorando o improvisando la forma en la que estos operan y su compatibilidad con

las diferentes bases de datos, en este caso MySQL.

La razón de implementar el algoritmo AES (Advanced Encriptation Standar) es

principalmente la seguridad que esta ofrece al desarrollador ya que incluye funciones

que solo necesitan ser llamadas a través de ciertos parámetros para poder proteger

datos y convertirlos en algo ilegible para cualquier persona que intente perturbar la

seguridad del sistema o filtrar información empresarial [24].

El uso de un lenguaje de programación web fuerte y extenso se vuelve indispensable

para la creación de un sistema que sea capaz de manejar integridad y seguridad en

sus datos, independientemente del tipo de base de datos que se implemente en el

mismo. La programación web se puede dividir en dos partes:

Page 35: ³Desarrollo de un sistema ERP en la nube y encriptación de

34

2.2.8 FrontEnd:

Se encarga de emplear aquellas tecnologías que corren del lado del

cliente, es decir, todas aquellas herramientas que corren del lado del navegador web.

A continuación se describirán los lenguajes que implementa esta parte del desarrollo

web:

2.2.9 HTML:

Es un lenguaje de marcado que se utiliza para el desarrollo de páginas

de Internet. Se trata de la sigla que corresponde a HyperText Markup Language, es

decir, Lenguaje de Marcas de Hipertexto, que podría ser traducido como Lenguaje de

Formato de Documentos para Hipertexto. Actualmente HTML 5 es la versión

estándar que es compatible con la mayoría de los navegadores más usados

incluyendo algunas versiones antiguas de Internet Explorer [25].

Figura 8 Logo de HTML5

Fuente: https://www.w3.org/html/logo/

HTML se encarga de desarrollar una descripción sobre los contenidos que aparecen

como textos y sobre su estructura, complementando dicho texto con diversos objetos

tales como fotografías, animaciones, etc. [26].

Este lenguaje se ha utilizado desde la década de los 90 y fue empleado en los

primeros proyectos ERP que surgieron en aquellos años.

Page 36: ³Desarrollo de un sistema ERP en la nube y encriptación de

35

2.2.10 CSS:

Es un lenguaje utilizado en la presentación de documentos HTML, por

lo que puede decirse que el lenguaje CSS sirve para organizar la presentación y

aspecto de un sitio web. Este lenguaje es principalmente utilizado por parte de los

navegadores web de internet y por los programadores web informáticos para elegir

multitud de opciones de presentación como colores, tipos y tamaños de letra, etc.

Actualmente CSS3 es la versión estándar y mayormente compatible por la mayoría

de los navegadores, sin embargo, muchos de los navegadores tales como Chrome y

Opera añaden un paquete de propiedades CSS adicionales que no son compatibles

con los demás navegadores [27].

Figura 9 Logo de CSS3

Fuente: http://wpguru.co.uk/2014/03/how-to-replace-and-add-html-text-elements-with-css/

CSS está diseñado principalmente para marcar la separación del contenido del

documento y la forma de presentación de este, características tales como las capas

(en inglés layouts), los colores y las fuentes. Esta separación busca mejorar la

accesibilidad del documento, proveer más flexibilidad y control en la especificación

de características presentacionales, permitir que varios documentos HTML

compartan un mismo estilo usando una sola hoja de estilos separada en un archivo

CSS, y reducir la complejidad y la repetición de código en la estructura del

documento.

Page 37: ³Desarrollo de un sistema ERP en la nube y encriptación de

36

2.2.11 JavaScript:

Es un lenguaje de programación, que se utiliza principalmente del lado

del cliente, es decir, se ejecuta del lado del ordenador del usuario y no en el servidor

del sitio web, permitiendo crear efectos atractivos y dinámicos en las páginas web.

Los navegadores modernos interpretan el código JavaScript integrado en las páginas

web [28].

Figura 10 Logo no oficial de JavaScript

Fuente: http://www.lslutnfra.com/curso-javascript

Todos los navegadores modernos interpretan el código JavaScript integrado en las

páginas web. Para interactuar con una página web se provee al lenguaje JavaScript

de una implementación del Document Object Model (DOM) [29].

DOM es simplemente una interfaz que proporciona los elementos que representan

una página web. A través del DOM, los programas pueden acceder y modificar el

contenido, estructura y estilo de los documentos HTML y XML, que es para lo que se

diseñó principalmente.

Generalmente la persona encargada del FrontEnd, se dedica solo a estas tres

tecnologías, debido a que se encarga de estilizar la página de tal manera que la ésta

pueda quedar cómoda para la persona que la ve, preferentemente esta persona

debe de conocer técnicas de “User Experience”, técnicas que consisten en dar una

experiencia de usuario ergonómica y satisfactoria.

Page 38: ³Desarrollo de un sistema ERP en la nube y encriptación de

37

Así mismo debe de saber de diseño de Interacción para que sepa colocar las cosas

de tal manera que el usuario las pueda ubicar de manera rápida, intuitiva y cómoda

de navegar, existen muchas tecnologías relacionadas a estos tres lenguajes que se

utilizan en el FrontEnd, los ejemplos anteriormente mencionados no son más que los

lenguajes y frameworks más comunes usados para esta parte de desarrollo.

2.2.12 BackEnd

Se encarga de emplear tecnologías que se encuentran del lado del

servidor, las más comunes suelen ser lenguajes como PHP, Python, .Net, y Java, sin

embargo, para fines de esta tesina, solo se pondrá PHP como ejemplo de tecnología

funcional para el diseño de BackEnd.

El programador de BackEnd es aquel que se encarga de interactuar con bases de

datos, verificar manejos de sesiones de usuarios, montar la página en un servidor, y

desde este “proporcionar” todas las vistas que el FrontEnd crea [30].

En otras palabras, este se encarga más que nada de la manipulación de los datos,

que en muchas ocasiones suele ser lo más tedioso dependiendo del sitio o sistema

que se esté desarrollando.

Sin embargo, un BackEnd no sirve de mucho si no existe un FrontEnd de por medio

que se haya encargado de que la página luzca estética e intuitiva, por lo que el

programador de BackEnd normalmente debe de conocer bases de datos,

frameworks y librerías que le permitan desenvolverse mejor en la manera en la que

sirve las páginas, ya que este lado del desarrollo web es quien se va a encargar de

que todos los datos que llegan desde el FrontEnd lleguen a una base de datos, por

tanto, debe de conocer un poco de seguridad, para mantener los datos cuidados y

tratar de protegerse de todo tipo de inyecciones que se puedan tratar de hacer al

servidor para que no sea vulnerable, así mismo, se encarga de crear API’s [31] para

que sus datos puedan consumirse de manera cómoda para el FrontEnd y que pueda

mejorar la experiencia del usuario, teniendo en cuenta los cuidados necesarios que

debe considerar para que su servidor pueda mantenerse seguro.

Page 39: ³Desarrollo de un sistema ERP en la nube y encriptación de

38

A continuación se dará una breve descripción de un ejemplo de tecnología y su

respectivo framework empleada en el BackEnd:

2.2.13 PHP:

PHP es el acrónimo recursivo de PHP Hypertext Preprocessor, siendo

este un lenguaje de código abierto muy popular especialmente adecuado para el

desarrollo web y que puede ser incrustado en HTML [32].

Figura 11 Logo de PHP

Fuente: https://www.quora.com/What-font-is-the-php-logo

Descrito de una forma más extensa, consiste en un lenguaje de programación de uso

general de código del lado del servidor, originalmente diseñado para el desarrollo

web de contenido dinámico. Fue uno de los primeros lenguajes de programación del

lado del servidor que se podían incorporar directamente en el documento HTML en

lugar de llamar a un archivo externo que procese los datos [33].

Desde su surgimiento, se volvió altamente popular entre los desarrolladores,

especialmente aquellos que realizaban sistemas en la nube debido a su facilidad de

implementación y excelente documentación.

Con el desarrollo de sistemas ERP siempre se tienen que manejar múltiples

tecnologías que, en su conjunto, permitan a los usuarios finales de estos poder

manejar información a la cual se tiene permiso y acceder al sistema desde cualquier

dispositivo electrónico, con la condición única de que este cuente con acceso a

internet y un navegador web.

Page 40: ³Desarrollo de un sistema ERP en la nube y encriptación de

39

Lenguajes como PHP y JavaScript son compatibles con los modelos de base de

datos actuales, convirtiéndolos en candidatos ideales para servir como intermediarios

de un ERP.

Ahora que ya se ha explicado un poco sobre la historia de los ERP, sus bases de

datos y las tecnologías bajo las que se desarrollan, es necesario abordar algunos

temas que resultan importantes para proyectos de este estilo. Generalmente, los

sistemas ERP son complejos, extensos, desarrollados por un equipo de trabajo y, lo

más común, suelen estar sujetos a cambios, tanto en la etapa desarrollo como en su

faceta de implementación, es decir, cuando un sistema ya está siendo usado de

manera convencional, las necesidades de la empresa suelen cambiar, esto, como ya

se ha explicado anteriormente, es debido a múltiples factores como el número de

empleados y/o clientes, el surgimiento de nuevos departamentos en la empresa o la

creación de un nuevo producto y/o servicio que pretende ser vendido.

Con todo lo anterior dicho cabe preguntarse:

1.- ¿Qué tipo de servidores deben ser considerados como opción viable al momento

de implementar sistemas en la nube?

2.- ¿Qué tipos de ataques y/o fallas sufren los servidores web?

3.- ¿Qué herramientas son las más eficientes para crear respaldos de proyectos tan

grandes como un ERP?

4.- ¿Es importante documentar un proyecto?

5.- ¿Qué nomenclatura debe de ser implementada en el código?

Todas estas preguntas serán respondidas en las siguientes páginas de este capítulo

con la finalidad de entender la complejidad y la importancia de contar con

herramientas que nos faciliten el desarrollo de proyectos tan extensos.

Como desarrolladores, no solo es importante crear algoritmos que resuelvan un

Page 41: ³Desarrollo de un sistema ERP en la nube y encriptación de

40

problema, sino también se debe de contar con respaldos de seguridad de nuestros

proyectos en caso de algún imprevisto.

Por ejemplo si se está trabajando subiendo los cambios de un proyecto a un servidor

online, se corre el riesgo de que este sufra algún tipo de fallo. A continuación se

enlistan los más comunes junto con una breve descripción:

- Ataques de autenticación:

Este tipo de ataque tiene como objetivo engañar al sistema de la víctima para

ingresar al mismo. Generalmente este engaño se realiza tomando las

sesiones ya establecidas por la víctima u obteniendo su nombre de usuario y

contraseña [34].

- Denial of Service (Dos):

Los protocolos existentes actualmente fueron diseñados para ser hechos en

una comunidad abierta y con una relación de confianza mutua. La realidad

indica que es más fácil desorganizar el funcionamiento de un sistema que

acceder al mismo; así los ataques de Negación de Servicio tienen como

objetivo saturar los recursos de la víctima de forma tal que se inhabilita los

servicios brindados por la misma [35].

- Modificación (daño): la modificación o daño se puede dar como:

Alteración o corrompimiento de datos: Esta categoría se refiere a la

modificación desautorizada de los datos o el software instalado en el sistema

víctima (incluyendo borrado de archivos).

Borrado de Huellas: El borrado de huellas es una de las tareas más

importantes que debe realizar el intruso después de ingresar en un sistema,

ya que, si se detecta su ingreso, el administrador buscará como conseguir

"tapar el hueco" de seguridad, evitar ataques futuros e incluso rastrear al

atacante.

Page 42: ³Desarrollo de un sistema ERP en la nube y encriptación de

41

2.2.14 Git

Con tantas posibles formas de atacar un servidor online, el desarrollo

de proyectos pueden verse retrasadas de manera indefinidas bloqueando el acceso

a archivos o corrompiendo sus archivos por lo que es importante el manejo de las

herramientas que nos ayudan a la creación de respaldos, la más popular entre los

programadores (sin importar su rama) es Git.

Git es un software de control de versiones diseñado por Linus Torvalds, pensando en

la eficiencia y la confiabilidad del mantenimiento de versiones de aplicaciones o

programas cuando éstas tienen un gran número de archivos de código fuente. [36]

Figura 12 Logo de Git

Fuente: https://git-scm.com/downloads/logos

Su historia, como muchas de las grandes cosas en esta vida, comenzó con un poco

de destrucción creativa y encendida polémica. El núcleo de Linux es un proyecto de

software de código abierto con un alcance bastante grande.

Durante la mayor parte del mantenimiento del núcleo de Linux, los cambios en el

software se pasaron en forma de parches y archivos. En 2002, el proyecto del núcleo

de Linux empezó a usar un DVCS propietario llamado BitKeeper.

Page 43: ³Desarrollo de un sistema ERP en la nube y encriptación de

42

Algunos de los objetivos del nuevo sistema fueron los siguientes:

- Velocidad

- Diseño sencillo

- Fuerte apoyo al desarrollo no lineal (miles de ramas paralelas)

- Completamente distribuido

- Capaz de manejar grandes proyectos (como el núcleo de Linux) de manera

eficiente (velocidad y tamaño de los datos)

Desde su nacimiento en 2005, Git ha evolucionado y madurado para ser fácil de usar

y aún conservar estas cualidades iniciales. Es tremendamente rápido, muy eficiente

con grandes proyectos, y tiene un increíble sistema de ramificación (branching) para

desarrollo no lineal [37].

2.2.15 Estándar de programación.

Es importante como desarrollador, independientemente de la rama en la

que te desempeñes, contar con un estándar de programación, es decir, un estilo en

escribir código. A día de hoy existe una gran cantidad de estándares, como simple

motivo de ejemplo se describirá uno de los más populares en el mundo del desarrollo

web:

2.2.16 Estándar de programación PSR-2

Este estándar está orientado a dar formato al código PHP. Su objetivo

es reducir la dificultad cuando se lee código de diferentes autores.

Algunas de las reglas que deben seguirse son [38]:

Page 44: ³Desarrollo de un sistema ERP en la nube y encriptación de

43

- El código debe usar 4 espacios como indentación, no tabuladores

- No debe haber espacios en blanco al final de las líneas que no estén vacías.

- Pueden añadirse líneas en blanco para mejorar la lectura del código y para

indicar bloques de código que estén relacionados.

- No debe haber más de una sentencia por línea.

- Las llaves de apertura de las clases deben ir en la línea siguiente, y las llaves

de cierre deben ir en la línea siguiente al cuerpo de la clase.

- En la lista de argumentos no debe haber un espacio antes de cada coma y

debe haber un espacio después de cada coma.

Figura 13 Ejemplo de código bajo el estándar PSR-2

Fuente: https://github.com/jatubio/5minutos_laravel/wiki/Estandares-de-programacion.-PSR-2

Page 45: ³Desarrollo de un sistema ERP en la nube y encriptación de

44

2.2.17 Documentación

Aprender a documentar un proyecto es uno de las fases más

importantes en el desarrollo del mismo, debido a que este será el primer elemento al

que recurran futuros desarrolladores del proyecto con el fin de entender la

funcionalidad de este y poder observar los elementos, librerías, estándares de

programación y bases de datos empleadas. Las formas más comunes de

documentar son las siguientes:

2.2.18 Diagramas de flujo:

El diagrama de flujo o diagrama de actividades es la representación

gráfica del algoritmo o proceso. Se utiliza en disciplinas como programación para

fines de documentación o para dar paso a la creación de pseudocódigo y código.

En Lenguaje Unificado de Modelado (UML), un diagrama de actividades representa

los flujos de trabajo paso a paso de negocio y operacionales de los componentes en

un sistema. Un diagrama de actividades muestra el flujo de control general.

Figura 14 Ejemplo de un diagrama de flujo

Fuente: https://es.wikipedia.org/wiki/Diagrama_de_flujo#/media/File:DiagramaFlujoLampara.svg

Page 46: ³Desarrollo de un sistema ERP en la nube y encriptación de

45

2.2.19 Diccionario de datos:

Un diccionario de datos es un conjunto de metadatos que contiene las

características lógicas y puntuales de los datos que se van a utilizar en el sistema

que se programa, incluyendo nombre, descripción, alias, contenido y organización.

Es un catálogo, un depósito, de los elementos en un sistema. Como su nombre lo

sugiere, estos elementos se centran alrededor de los datos y la forma en que están

estructurados para satisfacer los requerimientos de los usuarios y las necesidades de

la organización. En un diccionario de datos se encuentra la lista de todos los

elementos que forman parte del flujo de datos en todo el sistema. Los elementos más

importantes son flujos de datos, almacenes de datos y procesos. El diccionario

guarda los detalles y descripciones de todos estos elementos [39].

Figura 15 Ejemplo de un diccionario de datos.

Si los analistas desean conocer cuántos caracteres abarca un determinado dato o

qué otros nombres recibe en distintas partes del sistema, o dónde se utiliza,

encontrarán las respuestas en un diccionario de datos desarrollado en forma

apropiada [40].

El diccionario se desarrolla durante el análisis de flujo de datos y auxilia a los

analistas que participan en la determinación de los requerimientos de sistemas.

Page 47: ³Desarrollo de un sistema ERP en la nube y encriptación de

46

2.2.20 Modelado de datos:

El modelado de datos es el proceso de documentar un diseño de

sistema de software complejo como un diagrama de fácil comprensión, usando texto

y símbolos para representar la forma en que los datos necesitan fluir. El diagrama se

puede utilizar como un mapa para la construcción de un nuevo software o para la

reingeniería de una aplicación antigua [41].

Figura 16 Ejemplo de un modelado de datos

Fuente: https://inventario-symfony.kenai.com/

Un modelo de datos puede ser pensado como un diagrama de flujo que ilustra las

relaciones entre los datos. A pesar de que la captura de todas las posibles relaciones

en un modelo de datos puede consumir mucho tiempo, es un paso importante que no

debería ser apresurado.

Los modelos de datos físicos, lógicos y conceptuales bien documentados permiten

que las partes interesadas identifiquen errores y hagan cambios antes de que

cualquier código de programación se haya escrito.

Page 48: ³Desarrollo de un sistema ERP en la nube y encriptación de

47

En resumen, la rama de la programación web abarca una gran cantidad de

lenguajes, tecnologías y estándares, lo que la hace una gran opción al momento de

querer desarrollar proyectos tan amplios como los ERP. Es importante como

desarrolladores aprender a usar herramientas que nos permitan crear soluciones a

través del desarrollo web.

Una de las grandes ventajas de desarrollar estos sistemas con este tipo de

programación es que no se tiene la necesidad de instalar ningún programa adicional,

o realizar configuraciones en las computadoras de los usuarios (lado del cliente),

debido a que solo es necesario el contar con un navegador web para poder visualizar

el sistema y el contar con una conexión a internet.

Page 49: ³Desarrollo de un sistema ERP en la nube y encriptación de

48

Capítulo III

Metodología

Page 50: ³Desarrollo de un sistema ERP en la nube y encriptación de

49

3.1 Introducción

En este tercer capítulo se describirán los pasos necesarios a seguir y

cómo emplear algunas herramientas que utilizan tecnologías descritas en el capítulo

anterior para el desarrollo de un sistema ERP.

Además, se pondrán ejemplos algunas imágenes de cómo deberían de lucir las

vistas más comunes en este tipo de proyectos, pasando también ejemplos de

consultas de datos encriptados, cómo poder respaldar el proyecto para cambios

futuros y como documentar de forma correcta las funciones principales básicas del

ERP.

Es importante que destacar que cada una de estas herramientas es completamente

compatible entre ellas, independientemente de las funciones que se manejen.

Los ejemplos presentados de los pasos que deben seguirse en este capítulo varían

poco o nada entre versiones y además las herramientas presentadas emplean

licencias GPL y Open Source, por lo que no se necesita comprar el código y permite

a los desarrolladores modificar sus funciones de forma personalizada con la única

condición de que éste no intente comercializar con dicho código.

Se hará énfasis también en las dos caras del desarrollo web: FrontEnd y BackEnd.

Cada lado cuenta con herramientas y procedimientos distintos, y cada programador

debe ser capaz de poder dominar ambas partes, por ejemplo, si un desarrollador de

FrontEnd desea manejar los datos de un servidor, éste debe saber exactamente

cómo manejarlos para poder mostrárselos al usuario final de manera elegante e

intuitiva.

Page 51: ³Desarrollo de un sistema ERP en la nube y encriptación de

50

3.2 Herramientas

A continuación se describirán las herramientas necesarias para el

desarrollo de un sistema ERP, pasando por librerías y frameworks, hasta software

gratuito bajo el uso de licencias GPL:

3.2.1 Materialize (Framework CSS):

Es un Framework CSS que te permite crear sitios y aplicaciones web

con los principios básicos que google ha ido implementando, es decir, hacer uso de

diseños elegantes, diseños responsivos y el empleo de nuevas tecnologías para dar

una presentación altamente agradable al usuario final [42].

La versión estándar contiene CSS y JavaScript y trae los CSS listos para trabajar.

Figura 17 Logo de CSS3

Fuente: http://materializecss.com/

El framework incluye múltiples componentes:

Grids: el framework emplea diseño responsive grid, manejando 3 tamaños de

pantalla estándar: pequeñas hasta 600px, medianas hasta 992px y grandes,

mayores de 992px [43].

Algunas de las ventajas de emplear Materialize son [44]:

- Admite la compatibilidad de CSS entre múltiples navegadores.

- Agiliza el proceso de desarrollo de un sitio web.

- Permite el diseño responsivo.

Page 52: ³Desarrollo de un sistema ERP en la nube y encriptación de

51

3.2.2 Laravel (Framework de PHP):

Es un framework de código abierto para desarrollar aplicaciones y

servicios web con PHP 5. Su filosofía es desarrollar código PHP de forma elegante y

simple, evitando el "código espagueti", es decir, aquel código que resulta complejo e

incomprensible de leer.

Fue creado en 2011 y tiene una gran influencia de frameworks como Ruby on Rails,

Sinatra y ASP.NET MVC [45].

Figura 18 Logo del framework Laravel

Fuente: https://laravel.com/

Laravel, propone una forma de desarrollar aplicaciones web de un modo mucho más

ágil. En este framework opcionalmente podemos usar el patrón de diseño MVC

(Modelo-Vista-Controlador) tradicional, donde al igual que otros frameworks PHP, el

controlador es programado como una clase.

El patrón de diseño MVC propone la construcción de tres componentes distintos que

son el modelo, la vista y el controlador, es decir, por un lado define componentes

para la representación de la información, y por otro lado para la interacción del

usuario [46].

Para tema de esta tesina, se utilizará la metodología que ofrece este framework para

el desarrollo de las vistas del sistema, consultas de bases de datos, etc.

Page 53: ³Desarrollo de un sistema ERP en la nube y encriptación de

52

3.2.3 jQuery (Librería de JavaScript):

Es una librería creada inicialmente por John Resig, que permite

simplificar la manera de interactuar con los documentos HTML, manipular el árbol

DOM, manejar eventos en una página web, desarrollar animaciones y agregar

interacción con la técnica Asynchronous Javascript and XML (AJAX) [47], es decir,

JavaScript y XML Asíncrono a páginas web, la cual consiste básicamente en

intercambiar información entre el servidor y el cliente (navegador) sin necesidad de

recargar la página.

jQuery es la biblioteca de JavaScript más utilizada a nivel mundial por su gran

facilidad de uso y su excelente documentación de sus funciones y plugins.

Figura 19 Logo de la librería jQuery

Fuente: http://jquery.com/

jQuery es software libre y de código abierto, posee un doble licenciamiento bajo la

Licencia MIT y la Licencia Pública General de GNU, permitiendo su uso en proyectos

libres y privados [48].

jQuery, al igual que otras bibliotecas, ofrece una serie de funcionalidades basadas en

JavaScript que de otra manera requerirían de mucho más código, es decir, con las

funciones propias de esta biblioteca se logran grandes resultados en menos tiempo y

espacio.

La característica principal de la biblioteca es que permite cambiar el contenido de

una página web sin necesidad de recargarla, mediante la manipulación del árbol

DOM y peticiones AJAX.

Page 54: ³Desarrollo de un sistema ERP en la nube y encriptación de

53

3.2.4 Sublime Text

Sublime Text es un editor de texto y editor de código fuente está escrito

en C++ y Python para los plugins. Desarrollado originalmente como una extensión de

Vim, con el tiempo fue creando una identidad propia, por esto aún conserva un modo

de edición tipo vi llamado Vintage mode [49].

Figura 20 Logo de Sublime Text

Fuente: https://www.sublimetext.com/

Algunas de las características que lo diferencian del resto de editores de texto son:

- Minimapa: consiste en una previsualización de la estructura del código.

- Multicursor: Crea cursores con los que podemos escribir texto de forma arbitraria en

diferentes posiciones del archivo.

- Soporte nativo para infinidad de lenguajes: Soporta de forma nativa 43 lenguajes de

programación y texto plano.

- Búsqueda Dinámica: Se puede hacer búsqueda de expresiones regulares o por

archivos, proyectos, directorios, una conjunción de ellos o todo a la vez.

- Auto completado y marcado de llaves: Se puede ir a la llave que cierra o abre un

bloque de una forma sencilla.

Para tema de esta tesina, se empleará este editor de texto para el desarrollo de

código del sistema.

Page 55: ³Desarrollo de un sistema ERP en la nube y encriptación de

54

3.2.5 SQLyog

SQLyog es una excelente interfaz gráfica diseñada especialmente para

trabajar de forma más rápida y cómoda con el servidor de base de datos MySQL. El

programa está orientado a usuarios que ya tienen ciertos conocimientos de SQL y

necesitan un intérprete gráfico sin excesivas florituras, ágil y funcional [50].

Permite administrar usuarios y permisos, y realizar múltiples peticiones a base de

datos. También permite insertar fácilmente, mediante plantillas, peticiones que

realices con frecuencia, como por ejemplo creación de tablas. Otras opciones son la

exportación de datos en formato CSV, HTML y XML, la optimización de bases de

datos, la posibilidad de guardar scripts de SQL como favoritos [51].

Figura 21 Logo de SQLyog

Fuente: https://codigosimportantes.blogspot.mx/2012/09/sqlyog.html

El uso de esta herramienta es indispensable para poder realizar consultas a la base

de datos a la que se conecta el sistema ERP, y aunque existen muchas otras

interfaces para manejar bases de datos MySQL, SQLyog resulta la mejor entre

todas, debido a que es una herramienta gratuita y permite conectarse a un servidor a

través de una conexión personalizada.

Page 56: ³Desarrollo de un sistema ERP en la nube y encriptación de

55

3.2.6 Hostinger

Es una empresa que ofrece servicios de hosting en distintos niveles,

permitiendo contratar planes gratuitos y empresariales en plazos anuales.

En sus servicios, entrega un espacio de 2GB y transferencia de hasta 1000GB lo que

lo convierte en una excelente opción para comenzar mantener un sitio, aplicaciones y

sistemas web grandes.

Figura 22 Logo de Hostinger

Fuente: https://www.hostinger.mx/

Su principal particularidad es que con la opción gratuita puedes alojar ilimitado

número de sitios web con el mismo espacio y transferencia de forma mensual [52].

Hostinger admite una gran cantidad de tecnologías y lenguajes en diferentes

versiones como PHP, MySQL, Python, Java, tecnologías de Intel, etc. Además,

contiene una gran variedad de herramientas y opciones que facilitan el trabajo de los

desarrolladores web como los administradores de archivos, subida de archivos por

medio de FTP, respaldo de bases de datos programados y muchas otras

herramientas más [53].

A pesar de que existen muchos otros servicios de hosting, ninguno muestra tanta

flexibilidad como éste, por lo que resulta conveniente para hospedar los archivos de

un sistema ERP.

Page 57: ³Desarrollo de un sistema ERP en la nube y encriptación de

56

3.2.7FileZilla

FileZilla es un cliente FTP multiplataforma de código abierto y software

libre, licenciado bajo la Licencia Pública General de GNU. Soporta los protocolos

FTP, SFTP y FTP sobre SSL/TLS (FTPS). [54]

Figura 23 Logo de FileZilla

Fuente: https://filezilla-project.org/translations.php

Para el desarrollo de un proyecto ERP en la nube es necesario contar con una

herramienta que permita administrar los recursos de un servidor online, esto con la

finalidad de actualizar archivos en tiempo real y agregar nuevas funcionalidades al

sistema.

Algunas de sus características más destacables de FileZilla son [55]:

- Permite a un usuario crear una lista de sitios FTP o SFTP4 (estableciendo una

conexión cifrada que utiliza el protocolo SSH) con sus datos de conexión, como el

número de puerto a usar, o si se utiliza inicio de sesión normal o anónima.

- Cola de transferencia: situada en la parte inferior de la ventana, muestra en tiempo

real el estado de cada transferencia activa o en cola.

Vista de archivo y carpeta: Los usuarios pueden navegar por las carpetas, ver y

alterar sus contenidos tanto en la máquina local como en la remota, utilizando una

interfaz de tipo árbol de exploración.

Page 58: ³Desarrollo de un sistema ERP en la nube y encriptación de

57

3.3 Procedimiento

3.3.1 Subida de archivos al servidor por medio de FTP (FileZilla)

Como se ha ido mencionando a lo largo de la tesina, el subir archivos a

un servidor online es sumamente importante, para realizar esta acción se necesita

hacer uso del software FileZilla. Primeramente se necesita configurar una conexión al

servidor al cuál deseamos acceder, para ello, se necesita proporcionar la información

que se muestra a continuación:

Figura 24 Configuración de conexión por medio de FTP

Fuente: https://filezilla-project.org/

El siguiente paso es pulsar el botón de conexión rápida e inmediatamente se

mostrarán en pantalla los archivos que se encuentran actualmente en el servidor,

además de una pequeña sección donde se muestren los archivos del ordenador en

el que se encuentra ejecutándose FileZilla actualmente.

Ahora, para subir uno o varios archivos al servidor, solo se necesita seleccionar los

elementos deseados a mover, pulsar clic derecho y seleccionar la opción que diga

“subir”, tal y como se muestra a continuación:

Figura 25 Subida de archivos mediante FileZilla

Fuente: https://filezilla-project.org/

Así de sencillo es poder subir archivos a un servidor mediante el software FileZilla,

cada vez que se requieran hacer cambios al proyecto, basta con seguir los pasos

anteriormente descritos independientemente del tipo de archivo que sea.

Page 59: ³Desarrollo de un sistema ERP en la nube y encriptación de

58

3.3.2 Validación de formularios

La integridad de datos es uno de los factores más importantes en un

sistema, ya que los datos que este maneja son la fuente con la que éste trabaja. Si

no se tiene cuidado de que los datos ingresados sean correctos, es decir, que

correspondan a lo que realmente se espera recibir, se producirán errores tarde o

temprano. Por ejemplo si un formulario pide que se ingrese un correo electrónico,

entonces el sistema debe ser capaz de revisar el dato capturado por el usuario para

comprobar que realmente se introdujo un correo válido, cumpliendo con un formato

que cumpla con las características de un correo. A tema de ejemplo de esta tesina,

se muestra a continuación los pasos a seguir para la validación de un email.

Primeramente se debe crear un formulario para la entrada de datos, para ello se hará

uso de HTML y CSS con la ayuda del framework Materialize, la figura siguiente

muestra la estructura de un formulario sencillo:

Figura 26 Ejemplo de un formulario básico con Materialize

Fuente: Propio

Un ejemplo de código HTML para un formulario se muestra en la siguiente figura:

Page 60: ³Desarrollo de un sistema ERP en la nube y encriptación de

59

Figura 27 Ejemplo de código para un formulario básico usando Materialize

Fuente: Propio

Una vez se obtiene el diseño de un formulario, el siguiente paso es, como se

mencionó anteriormente, validar que sus datos sean correctos. Para ello se hará uso

de la librería jQuery, empleando su sintáxis para comprobar la veracidad de los datos

introducidos en el formulario, en este caso un email. En la siguiente figura se puede

observar un ejemplo de código para realizar dicha acción.

Figura 28 Ejemplo de código para la validación de un formulario con jQuery

Fuente: Propio

Page 61: ³Desarrollo de un sistema ERP en la nube y encriptación de

60

El código anterior utiliza una expresión regular llamada “regExprEmail”, la cual

consiste en una cadena que valida el texto introducido para el email. Al pulsar el

botón de enviar verifica que el dato sea correcto, de ser así los datos se envían

satisfactoriamente al servidor, caso contrario se le notificará al usuario un error

pidiendo que corrija el email, tal y como se muestra en la siguiente figura.

Figura 29 Mensaje de error en un formulario

Fuente: Propio

Además del mensaje de error, el código mostrado en la figura 28 añade efectos

sobre el formulario para notificar al usuario el campo que debe de corregir para poder

continuar, tal y como se muestra en la siguiente figura:

Figura 30 Efecto visual sobre error en el formulario

Fuente: Propio

Como se puede apreciar, resulta bastante sencillo poder cuidar la integridad de los

datos de un sistema a través de estas herramientas, sin mencionar que el código

resultante es mínimo e intuitivo por los programadores.

Page 62: ³Desarrollo de un sistema ERP en la nube y encriptación de

61

3.3.3 Encriptamiento de datos

Una vez se haya verificado que los datos enviados al servidor mediante

formularios o cualquier otro método de entrada del sistema, es necesario protegerlos

con el uso de algoritmos de encriptamiento de datos. Regularmente los únicos datos

que utilizan estos algoritmos son contraseñas e información financiera, sin embargo,

los métodos empleados son completamente obsoletos. Para el desarrollo de un

sistema ERP es importante emplear algoritmos fuertes y actualizados que brinden

seguridad a los mismos, para ejemplo de esta tesina, se muestra la forma de

encriptar un correo electrónico empleando las funciones AES_DECRYPT y

AES_ENCRYPT, ambas nativas de MySQL, tal y como puede observarse en las

siguientes figuras:

Figura 31 Encriptamiento de datos usando AES_ENCRYPT

Fuente: Propio

Como puede apreciarse en la figura anterior, la función AES_ENCRYPT recibe dos

argumentos, siendo el primero el texto a “encriptar” y el segundo una palabra clave,

la cual se encarga de convertir dicha cadena a una serie de caracteres ilegibles para

cualquier persona que tenga acceso visual al texto resultante en cuestión.

Para poder revertir el proceso, se emplea la función AES_DECRYPT, la cual recibe

los mismos parámetros que su función opuesta. Un ejemplo de su uso se muestra a

continuación.

Figura 32 Desencriptamiento de datos usando AES_DECRYPT

Fuente: Propio

Page 63: ³Desarrollo de un sistema ERP en la nube y encriptación de

62

Un factor sumamente importante de aclarar es que para poder desencriptar una

cadena mediante la función AES_DECRYPT, la palabra clave debe ser exactamente

la misma que se empleó para encriptar el texto, en caso contrario, el resultado será

un texto vacío o sin sentido, quedando el dato ilegible.

Un ejemplo de una cadena encriptada mediante la función AES_ENCRYPT puede

ser apreciada en la siguiente figura, mostrando la cadena desencriptada y

encriptada:

Figura 33 Comparación de texto plano y encriptado

Fuente: Propio

Como puede observarse en la figura anterior, el texto encriptado usualmente es 2 e

incluso hasta 3 veces más grande que el texto original, esto es debido a que los

caracteres empleados para encriptar tienen un mayor espacio en memoria que los

introducidos originalmente.

Cabe destacar que mientras más extensa sea la palabra clave o más difícil de

adivinar más seguro resultará el encriptamiento de datos, pues que, como se dijo

anteriormente, solo con la palabra clave es posible volver a desencriptar los datos de

forma que sean legible para cualquier persona.

Para implementar las siguientes funciones en el framework de Laravel, es necesario

crear una función que sea capaz de enviar y extraer el contenido de la base de datos

cada que vez que el usuario así lo requiera.

En las siguientes imágenes se muestran las funciones adaptadas a la sintaxis de

Laravel:

Page 64: ³Desarrollo de un sistema ERP en la nube y encriptación de

63

Figura 34 Inserción de datos encriptados con Laravel

Fuente: Propio

En la función mostrada en la figura anterior puede apreciarse que se hace el uso de

la función AES_ENCRYPT, sin embargo, por temas de seguridad, también se hace el

uso del método de “bindeo” de datos con un arreglo, esto consiste en proteger una

consulta de MySQL contra la inyección de código, es decir, que no se permita poner

código SQL malintencionado que haga operaciones no deseadas como borrar una

tabla, cambiar registros, e incluso eliminar la base de datos completa.

En la siguiente figura se muestra cómo extraer los datos desencriptados a través de

Laravel:

Figura 35 Extracción de datos con Laravel

Fuente: Propio

La anterior figura muestra claramente el uso del estilo de programación Modelo Vista

Controlador, ya que la función que se observa se encuentra en un archivo

Controlador que a su vez manda a llamar una función de otro archivo (Modelo), para

posteriormente almacenar el resultado de la función en una variable, en este caso

“usuarios” para finalmente mandar dicha variable a la vista que se muestra en la ruta

“Administrador/Usuarios/Permisos”.

Page 65: ³Desarrollo de un sistema ERP en la nube y encriptación de

64

Un ejemplo de una función de un modelo de Laravel puede ser apreciado en la

siguiente figura:

Figura 36 Función de un modelo de Laravel

Fuente: Propio

Finalmente solo queda mostrar los datos a la vista del usuario, esto puede ser

logrado a través de múltiples formas, las más comunes son tablas y listas. En las

siguientes dos figuras puede observarse cómo manejar los datos en una vista de

Laravel y cómo se muestran al usuario Final.

Figura 37 Manejo de datos de una vista de Laravel

Fuente: Propio

Page 66: ³Desarrollo de un sistema ERP en la nube y encriptación de

65

Figura 38 Vista para el usuario final

Fuente: Propio

Siguiendo este procedimiento, es posible crear múltiples vistas al usuario

permitiéndole manejar los datos del sistema a través de algoritmos, funciones y

métodos que nos ofrece Laravel, Materialize y MySQL en conjunto.

Cabe aclarar que aunque Laravel maneja diversas formas de obtener datos, la forma

que se muestra en esta tesina es tan solo un ejemplo de muchos, la razón de

mostrar esta en específico es debido a su seguridad e integridad de datos, ya que

evita los fallos más comunes en un sistema como la inyección de código SQL,

introducción de datos erróneos, etc.

Page 67: ³Desarrollo de un sistema ERP en la nube y encriptación de

66

3.3.4 Respaldo de proyectos con git

Mantener respaldos de un proyecto tan extenso como un ERP es

siempre importante, las razones, como ya han sido mencionadas anteriormente,

pueden ser debido a que los fallos de servidores son muy comunes, retrasando el

desarrollo de un proyecto o porque múltiples programadores trabajan en conjunto

para el desarrollo del mismo sistema.

A continuación se explicará cómo utilizar la herramienta git para poder realizar

versiones del proyecto, a fin de evitar problemas futuros.

Al usar git, el primer paso a seguir siempre será la creación de un repositorio, en la

siguiente figura puede apreciarse el comando “init” para inicializar un repositorio

vacío.

Figura 39 Inicializar un repositorio con git

Fuente: https://www.youtube.com/watch?v=QGKTdL7GG24

Como se observa en el código de la figura anterior, es necesario posicionarse o crear

una carpeta nueva en donde se requiera que esté el repositorio, y ejecutando el

comando “init” automáticamente se creará una nueva carpeta con la extensión “.git”.

Esta carpeta se mantendrá oculta si se utiliza cualquier sistema operativo de Linux,

sin embargo, si se utiliza un sistema operativo de Windows o de Mac OS X, es muy

probable que se mantenga visible, por lo que es recomendable no modificar ni mover

la carpeta, debido a que el más mínimo cambio a su contenido de forma manual de

parte del usuario podría dejar inutilizable dicha carpeta.

Page 68: ³Desarrollo de un sistema ERP en la nube y encriptación de

67

Una vez creado el repositorio de trabajo (es importante recordar que el repositorio de

trabajo se crea en la misma ruta donde se ha ejecutado el comando “init”) se debe

empezar a trabajar como normalmente se haría en cualquier proyecto, ya sea

añadiendo código o realizando cambios. Por ejemplo, si se tuvieran varios archivos

que se desean subir al repositorio de trabajo para guardarlos se deben agregarlos al

“staging index”, el cual es un área temporal donde se añaden archivos cuyos

cambios se requieren ser guardados posteriormente en el repositorio de trabajo.

Para agregar un archivo al “staging index” se utiliza el comando “add” seguido del

nombre del archivo que se desea agregar. La siguiente figura muestra un ejemplo de

dicho comando.

Figura 40 Agregando archivos al “staging index” con el comando “add”

Fuente: https://www.youtube.com/watch?v=QGKTdL7GG24

Como puede apreciarse en la imagen, también se puede hacer uso del comando

“status” con el fin de poder ver los archivos que se encuentran actualmente en el

“staging index” para ser agregados posteriormente al repositorio de trabajo.

Page 69: ³Desarrollo de un sistema ERP en la nube y encriptación de

68

Una vez que se agregan los archivos al “staging index” es necesario ejecutar el

comando “commit” para poder guardar los archivos en el repositorio de trabajo, e

inmediatamente se abrirá el editor de texto predeterminado del sistema operativo en

el que se esté trabajando actualmente, esto con la finalidad de que se guarde un

mensaje que describa dicho commit y que en un futuro cualquier persona que desee

ver los detalles del mismo pueda saber de forma rápida en qué consisten los

cambios y el autor que lo realizó. En las siguientes dos figuras se aprecia un ejemplo

del uso del comando git seguido de un ejemplo de un mensaje de la acción en un

editor de texto.

Figura 41 Ejemplo de un mensaje describiendo el commit

Fuente: https://www.youtube.com/watch?v=QGKTdL7GG24

Una vez realizado un commit, es posible acceder a ellos para ser trabajados, pero en

ocasiones, suele suceder que se agregan archivos al “staging index” de forma

errónea, por ejemplo cuando se agrega un archivo que ha sido movido a otra carpeta

o porque simplemente el archivo dejó de ser importante para el proyecto en sí y no

es necesario enviarlo en un commit, por lo que para remover un archivo del “staging

index” es necesario ejecutar el comando “reset HEAD” seguido del nombre del

archivo a remover.

Page 70: ³Desarrollo de un sistema ERP en la nube y encriptación de

69

En la siguiente imagen se muestra un ejemplo de este comando.

Figura 42 Removiendo un archivo del staging index

Fuente: https://www.youtube.com/watch?v=QGKTdL7GG24

Como puede observarse en la figura anterior, se hace uso del comando “status” para

corroborar que el archivo “main.c” ha sido descartado del staging index, por lo que en

el siguiente commit dicho archivo no se guardará en el repositorio de trabajo.

Una vez realizado un commit, se pueden ver los cambios que ha estado teniendo el

repositorio de trabajo empleando el comando “log”.

Una vez ejecutado el comando, se mostrarán todos los commit realizados en el

repositorio de trabajo junto con sus mensajes. En la siguiente figura puede

observarse un ejemplo de lo mencionado anteriormente.

Page 71: ³Desarrollo de un sistema ERP en la nube y encriptación de

70

Figura 43 Detalles y mensajes de commit mediante el comando log

Fuente: https://www.youtube.com/watch?v=QGKTdL7GG24

El principal flujo de trabajo de Git son las ramas. Una rama es una línea de desarrollo

donde un commit sigue al anterior, que sigue a un commit anterior y así hasta que se

llame a un commit que sigue al primer commit de todos.

Las ramas resultan convenientes cuando varios programadores se encuentran

desarrollando un mismo proyecto, ya que si estos se encuentran trabajando en la

misma rama, habría conflictos al momento de realizar commits, puesto que estarían

modificando los mismos archivos (lo cual no es correcto) [56].

Para crear una nueva rama se ejecuta el comando “branch” seguido del nombre de la

rama. En la siguiente figura se aprecia el uso de este comando.

Figura 44 Creación de una rama con el comando “branch”

Fuente: https://www.youtube.com/watch?v=QGKTdL7GG24

Page 72: ³Desarrollo de un sistema ERP en la nube y encriptación de

71

Para ver todas las ramas creadas de un repositorio simplemente se usa el mismo

comando sin especificar un nombre tal y como se muestra en la siguiente figura.

Figura 45 Ver ramas creadas

Fuente: https://www.youtube.com/watch?v=QGKTdL7GG24

Para cambiar de una rama a otra se utiliza el comando “checkout” seguido del

nombre de la rama a la que se desea cambiar.

Figura 46 Cambiar entre ramas

Fuente: https://www.youtube.com/watch?v=QGKTdL7GG24

Una vez realizados los cambios necesarios a dos ramas, es conveniente fusionar los

cambios en las ramas, por lo que se accede a la rama de destino para finalmente

ejecutar el comando “merge” indicando la rama de origen de la cual se quieren

mezclar datos.

Page 73: ³Desarrollo de un sistema ERP en la nube y encriptación de

72

Por último, si por alguna razón se realizaron cambios en el proyecto que provocaron

bugs o cambios que se mandaron en un commit y se desea volver a alguna versión

anterior en el sistema es necesario utilizar el comando “checkout” seguido del código

o etiqueta del commit, esto lleva a una versión anterior del proyecto y permite

trabajar con esta normalmente. La siguiente figura muestra un ejemplo de la acción

descrita anteriormente.

Figura 47 Recuperación de versiones anteriores

Fuente: https://www.youtube.com/watch?v=QGKTdL7GG24

Con este último paso se concluye el procedimiento en que un proyecto puede ser

respaldado por uno o más desarrolladores conservando múltiples versiones y ramas

que pueden ser modificadas o recuperadas por estos mismos en cualquier momento.

Page 74: ³Desarrollo de un sistema ERP en la nube y encriptación de

73

Capítulo IV

Resultados

Page 75: ³Desarrollo de un sistema ERP en la nube y encriptación de

74

4.1 Introducción

En este penúltimo capítulo se hablará acerca de los resultados que se

obtienen al implementar un sistema ERP de forma exitosa siguiendo la metodología

descrita en páginas anteriores, mencionando además las acciones que deben

realizarse una vez implementado el sistema para su correcto desempeño en las

empresas.

Es importante tener en cuenta que los requisitos de un sistema siempre varían en la

etapa de desarrollo, por lo que los resultados esperados al principio del análisis de

requerimientos en la mayoría de los casos serán distintos a los obtenidos en la etapa

de la implementación del sistema.

Las capacitaciones también deben de tomarse en cuenta a la hora de entregar un

sistema al cliente, ya que esta puede ser el paso final para que el uso de un sistema

ERP sea todo un éxito en las empresas, ya que, cómo se ha mencionado en

capítulos anteriores, los empleados son los usuarios finales de un sistema.

Por último también se mencionan varios puntos que destacan las ventajas y

beneficios que puede tener un sistema ERP, tales como aumentar la competitividad

empresarial, contar con un registro de materiales, contar con la administración de

recursos financieros, etc.

Las empresas que no cuentan con estas herramientas de forma interna, pueden ver

desacelerado su crecimiento debido a que, en el caso de empresas pequeñas, no se

cuenta con suficiente personal como para administrar tantas tareas en tan poco

tiempo.

Page 76: ³Desarrollo de un sistema ERP en la nube y encriptación de

75

4.2 Análisis de Datos

La implementación de un sistema ERP en las empresas con un giro

tecnológico conlleva a grandes ventajas. Por ejemplo, si una empresa comienza a

crecer de forma que pasa de pequeña empresa (lo equivalente a tener entre 11 y 50

empleados) a ser una mediana empresa (entre 51 y 200 empleados) [57] es evidente

que los métodos y herramientas tradicionales (por ejemplo las herramientas

ofimáticas como Word y Excel) para el manejo de todo tipo de recursos

empresariales se vuelve insuficiente, debido a que no se cuenta en si con una base

de datos para el respaldo de información personal de la empresa [58].

Al tener un sistema personalizado acorde a sus necesidades, no solo se cuenta con

dicha base de datos que resguarde su información, si no que a su vez ésta se

encuentra de forma disponible en la nube las 24 horas, por lo que cualquier

empleado que tenga acceso a dicho sistema puede manejar y dar de alta datos al

ERP.

Por ejemplo, si un cliente que se encuentra fuera del país trabajando bajo un

proyecto y se viera obligado a dar de alta el reporte de sus gastos estando allá, si se

cuenta con un módulo de reporte de gastos el empleado podría acceder fácilmente

desde cualquier plataforma de su gusto, ya sea su computadora personal, Tablet o

incluso su teléfono móvil, por lo que estaría al corriente día con día registrando los

gastos correspondientes de su estancia en el extranjero.

Las ventajas más destacables de contar con un sistema ERP se enlistan a

continuación:

1. Un ERP aporta mayor eficiencia

Al tener todas las operaciones de la empresa contenidas en un mismo sistema, es

posible obtener importantes mejoras en eficiencia automatizando tareas

administrativas. Los procesos operativos de cualquier empresa llevan siempre

asociados la generación de documentos como reportes, gráficas, etc. además de la

necesaria ejecución de los procedimientos que garantizan una colaboración fluida.

Page 77: ³Desarrollo de un sistema ERP en la nube y encriptación de

76

Un buen ERP ha de ser capaz de automatizar parte de esos procesos y ayudar a

mejorar la seguridad de los mismos. Además, evitan la inserción de datos duplicados

y los errores asociados, ahorrando una gran cantidad de horas de trabajo. Por otro

lado, el disponer de un único depósito de datos fácilmente accesible reduce el

esfuerzo necesario para acceder a la información [59].

2. Mayor control y trazabilidad

Un ERP es básicamente un sistema transaccional, esto significa que se encarga de

recoger y reflejar una gran cantidad de cambios que tienen lugar en la organización

como consecuencia de su actividad. Esto permite tener un mayor control sobre todas

las operaciones realizadas de forma interna.

3. Un ERP aumenta la capacidad operativa

Una mejora interna en la eficiencia empresarial puede ser utilizada para atender a

más clientes, fabricar más productos u ofrecer más servicios, según sea el giro de la

empresa. Esto depende de la estrategia u orientación de la misma, pero es siempre

un paso imprescindible para todas las organizaciones que quieren crecer.

En resumen, son muchos los beneficios en la implementación de un ERP, tal como la

reducción del tiempo en que se administra la información privada, contar con un

historial de actividades internas e información financiera.

Finalmente solo cabe mencionar que el sistema ERP en cuestión se encuentra

abierto a poder integrar nuevas funcionalidades conforme crece la empresa y/o

institución debido a que, como se crean bajo tecnologías web y herramientas de

creación de versiones del proyecto como git, es fácil integral nuevas funcionalidades

por parte de los autores originales del sistema u otros programadores que trabajen

en este.

Page 78: ³Desarrollo de un sistema ERP en la nube y encriptación de

77

4.2.1 Capacitaciones

Concluido con el desarrollo y la implementación del sistema, lo

siguiente es dar capacitaciones a todos aquellos empleados que harán uso del

mismo. Aunque el sistema sea intuitivo y se encuentre validado para preservar la

integridad de sus datos, es importante dar una formación a los usuarios finales y

crear documentación tal como manuales de usuario y guías técnicas.

Cuando se implementa un Sistema ERP, inevitablemente se afectará a todas las

áreas de la empresa, desde administración hasta producción, pasando por recursos

humanos, financieros y marketing [60].

Las capacitaciones regularmente abarcan un periodo de 2 a 4 semanas,

dependiendo de la complejidad de cada uno de los módulos, teniendo una duración

de al menos 1 hora por día.

En el mundo de la informática es muy común ver la colaboración como método de

trabajo. Llevar esto a la empresa mediante el ERP, hacer que el usuario se

identifique con su tarea, que se sienta seguro, que sepa que tiene el apoyo de la

empresa proveedora del sistema, que es escuchado (aunque no siempre sugiera

algo útil) , necesariamente va a contribuir con un éxito de la implementación menos

accidentada.

4.2.2 Futuras modificaciones

No obstante cabe recalcar que se tiene que tener en cuenta que en un

futuro puede llegar otro programador a modificar el sistema, por lo que es importante

dejar dos versiones de este: una para desarrollo, la cual consiste en documentar por

medio de comentarios en cada archivo del sistema (únicamente aquellos que son

programados desde cero como el caso de vistas, controladores y modelos), crear

diagramas de flujo, diagramas de entidad relación y diccionario de datos.

Page 79: ³Desarrollo de un sistema ERP en la nube y encriptación de

78

La segunda versión del sistema es la comercial, la cual consiste en comprimir en

una sola única línea de código los archivos de JavaScript, HTML y CSS, con el fin

de reducir el tiempo de carga del sistema.

4.2.3 Respaldo de base de datos

Una base de datos de un ERP puede ser poblada fácilmente en

cuestión de meses, por lo que el rendimiento en el manejo de datos del sistema se

ve afectado siempre negativamente, tardando más en el cargado de registros o la

modificación de datos.

Es por ello que es necesario contar con copias de seguridad de la base de datos

cada cierto tiempo, siendo lo recomendable al menos una vez a la semana. Sin

embargo, el restablecimiento de una base de datos desde cero, debe de darse al

menos una vez al año, guardando copias de los registros, ya que a final de cuentas

sirven de historial y resulta información valiosa para la empresa. Si no se

restableciera una base de datos de forma regular, el sistema terminaría con un muy

bajo rendimiento, independientemente del tipo de servidor o hosting que se tenga

contratado para el ERP.

Page 80: ³Desarrollo de un sistema ERP en la nube y encriptación de

79

Capítulo V

Discusión

Page 81: ³Desarrollo de un sistema ERP en la nube y encriptación de

80

5.1 Conclusiones

Como se pudo observar a lo largo de toda esta tesina, se puede

apreciar que el uso de un sistema ERP conlleva una gran cantidad de procesos para

poder llevarse a cabo correctamente, empezando por reunir los requerimientos que

deberá cumplir el sistema para que la empresa pueda aprovechar el uso de esta

herramienta tan poderosa.

Cada día más y más compañías empiezan a ver el poder de internet, por lo que

resulta interesante que surja un gran mercado al que pueden orientarse los

desarrolladores, debido a la gran cantidad de oportunidades que puede existir en

cada una de estas empresas, independientemente de si son pequeñas o medianas.

Como desarrolladores, es indispensable que se pueda tener gusto por el

autoaprendizaje, ya que el mundo de la informática es extremadamente amplio, y

actualmente surgen nuevas metodologías, librerías, frameworks y programas que

son más competentes que sus antecesores por lo que mantenerse actualizado al día

es sin duda un factor importante que distingue a un buen programador de los demás.

Saber escuchar al cliente también es importante. Planear entrevistas o reuniones

para conocer sus necesidades para que formen parte de los requerimientos de un

sistema que pueda solucionar y cubrir las actividades y recursos que se emplean a

diario en los distintos departamentos de una empresa.

Page 82: ³Desarrollo de un sistema ERP en la nube y encriptación de

81

5.2 Recomendaciones y/o sugerencias

- Conocer y dominar las herramientas necesarias para el desarrollo web.

- Contar con medidas de seguridad para el manejo de versiones de un proyecto.

- Seguir un estándar de programación durante todo el periodo de desarrollo del

sistema.

- Entregar avances del desarrollo del proyecto al cliente cada cierto periodo de

tiempo no mayor a 2 semanas para que éste pueda determinar si su progreso es el

deseado.

- Adquirir un servicio de hosting para la implementación del sistema.

- Contar con un plan de emergencia en caso de que el servidor que hospeda el

sistema ERP sufra de fallos o ataques, al tratarse de un servicio externo de la

empresa, esta no tiene el control sobre su rendimiento en la nube.

- Manejar funciones nativas a nivel base de datos para el encriptamiento de datos.

- Realizar documentación del sistema ERP.

- Otorgar cursos de capacitación a los usuarios finales del sistema.

- Manejar dos versiones del sistema ERP: Versión de desarrollo y versión de

producción.

Page 83: ³Desarrollo de un sistema ERP en la nube y encriptación de

82

Definición de términos

Sistema ERP: Son aquellos sistemas que integran y manejan negocios,

compañías y/o empresas asociados con las operaciones de producción y

servicios y que permiten la administración de sus recursos.

Lenguaje de programación web: Es un lenguaje formal que se utiliza para

desarrollar aplicaciones que se ejecutan desde servidores localizados en el

internet.

Proceso administrativo: Es un conjunto de fases o etapas sucesivas a

través de las cuales se efectúa la administración, mismas que se

interrelacionan y forman un proceso integral.

Encriptamiento: Es una medida de seguridad que se emplea para transferir

o almacenar datos de forma que sean solo legibles a través de ciertos

procedimientos.

Librería: Es un conjunto de implementaciones funcionales, codificadas en un

lenguaje de programación, que ofrece una interfaz bien definida para la

funcionalidad que se invoca.

Framework: Es un conjunto estandarizado de conceptos, prácticas y criterios

para enfocar un tipo de problemática particular que sirve como referencia,

para enfrentar y resolver nuevos problemas de índole similar.

Laravel: Es un framework de código abierto para desarrollar aplicaciones y

servicios web con PHP 5. Su filosofía es desarrollar código PHP de forma

elegante y simple, evitando el "código espagueti". Fue creado en 2011 y tiene

una gran influencia de frameworks como Ruby on Rails, Sinatra y ASP.NET

MVC.

Internet: Es la unión de todas las redes y computadoras distribuidas por todo

el mundo, siendo una red global en la que se conjuntan todas las redes que

utilizan protocolos TCP/IP y que son compatibles entre sí.

Page 84: ³Desarrollo de un sistema ERP en la nube y encriptación de

83

Integridad de datos: Se refiere a la forma de almacenar datos de forma

correcta y comprobar que cada uno de estos sean válidos, por ejemplo, si un

correo electrónico está bien escrito, o si un número de teléfono no contiene

caracteres no permitidos como letras.

Algoritmo: Conjunto ordenado de operaciones sistemáticas que permite

hacer un cálculo y hallar la solución de un tipo de problemas.

Informática: Conjunto de conocimientos técnicos que se ocupan del

tratamiento automático de la información por medio de computadoras.

Page 85: ³Desarrollo de un sistema ERP en la nube y encriptación de

84

Referencias Bibliográficas

[1] Mexired, «http://www.mexired.com,» 20 Marzo 2015. [En línea]. Available:

http://www.mexired.com/blog/el-avance-tecnologico-en-mexico. [Último acceso: 12 Octubre

2016].

[2] Dataprix, «http://www.dataprix.com,» 12 Marzo 2014. [En línea]. Available:

http://www.dataprix.com/articulo/erp/cual-origen-erp-invento-militar-software-

imprescindible-las-empresas. [Último acceso: 08 Octubre 2016].

[3] Wikipedia, «https://es.wikipedia.org,» 12 Octubre 2016. [En línea]. Available:

https://es.wikipedia.org/wiki/Criptograf%C3%ADa. [Último acceso: 15 Octubre 2016].

[4] L. Rosen, «http://rosenlaw.com,» 08 Enero 2007. [En línea]. Available:

http://rosenlaw.com/OSL3.0-explained.htm. [Último acceso: 12 Octubre 2016].

[5] B. D. Software, «http://web.archive.org,» 2015 Noviembre 23. [En línea]. Available:

http://web.archive.org/web/20130717084243/http://osrc.blackducksoftware.com/data/licens

es/index.php. [Último acceso: 13 Octubre 2016].

[6] P. R. Croll, «http://www.crosstalkonline.org,» 05 Abril 2011. [En línea]. Available:

http://static1.1.sqspcdn.com/static/f/702523/17039817/1331310005287/201203-

Croll.pdf?token=acTfdr9%2BKBInAN6QGz%2Fl9DgX7n0%3D. [Último acceso: 27 10 2016].

[7] F. R. Jacobs, 06 Diciembre 2006. [En línea]. Available:

http://orennahum.dyndns.org/PDFs/ERP/Enterprise%20resource%20planning%20(ERP)%20-

%20A%20brief%20history.pdf. [Último acceso: 20 10 2016].

[8] U. A. D. NORESTE, «http://www.monografias.com/,» Monografías.com, 23 Marzo 2007. [En

línea]. Available: http://www.monografias.com/trabajos23/planeacion-

requerimientos/planeacion-requerimientos.shtml. [Último acceso: 18 10 2016].

[9] G. Martínez, «http://es.slideshare.net/Gabitamv/mrp-y-mrp-ii,» 12 Octubre 2013. [En línea].

Available: http://es.slideshare.net/Gabitamv/mrp-y-mrp-ii. [Último acceso: 12 10 2016].

[10] M. D. W. y. B. P. J. NARASIMHAM Seetharama L., «Planeación de la producción y control de

inventarios,» de Qué es MRP II, Planificación de los Recursos de Manufactura, Chicago,

GestioPolis, 2001, p. 431.

[11] Sage, «http://www.sage.es,» 12 Noviembre 2000. [En línea]. Available:

http://www.sage.es/cabecera/sobre-sage/la-empresa. [Último acceso: 25 Octubre 2016].

Page 86: ³Desarrollo de un sistema ERP en la nube y encriptación de

85

[12] http://www.thocp.net, «http://www.thocp.net,» 14 Marzo 2013. [En línea]. Available:

http://www.thocp.net/companies/microsoft/microsoft_company_part2.htm. [Último acceso:

28 Octubre 2016].

[13] Wikipedia, «https://es.wikipedia.org,» 22 Noviembre 2016. [En línea]. Available:

https://es.wikipedia.org/wiki/Microsoft_Access. [Último acceso: 2016 Noviembre 23].

[14] M. Sierra, «http://www.aprenderaprogramar.com,» 12 Marzo 2015. [En línea]. Available:

http://www.aprenderaprogramar.com/index.php?option=com_content&view=article&id=542:

que-es-un-servidor-y-cuales-son-los-principales-tipos-de-servidores-proxydns-webftppop3-y-

smtp-dhcp&catid=57:herramientas-informaticas&Itemid=179. [Último acceso: 20 Noviembre

2016].

[15] L. Pairuna., «http://www.codedimension.com.ar,» 2016 Abril 13. [En línea]. Available:

http://www.codedimension.com.ar/noticias-sobre-tecnologia/noticias/-que-es-y-para-que-

sirve-un-sitio-web-/1. [Último acceso: 2016 Noviembre 21].

[16] D. Mozilla, «http://www.dmoz.org,» 08 Enero 2015. [En línea]. Available:

http://www.dmoz.org/Computers/Data_Formats/Database/. [Último acceso: 10 Noviembre

2016].

[17] U. P. d. Valencia, «http://histinf.blogs.upv.es,» 04 Enero 2011. [En línea]. Available:

http://histinf.blogs.upv.es/2011/01/04/historia-de-las-bases-de-datos/. [Último acceso: 23

Noviembre 2016].

[18] Wikipedia, «https://es.wikipedia.org,» 27 Abril 2007. [En línea]. Available:

https://es.wikipedia.org/wiki/Oracle_Database. [Último acceso: 16 Noviembre 2016].

[19] U. Blogs, «https://basededatosunounivia.wordpress.com/,» 13 Marzo 2015. [En línea].

Available: https://basededatosunounivia.wordpress.com/2015/03/13/oracle-vs-mysql-vs-sql-

server-una-comparacion-. [Último acceso: 28 Noviembre 2016].

[20] Gabriel, «http://encripdedatos.blogspot.mx/,» 20 Septiembre 2007. [En línea]. Available:

http://encripdedatos.blogspot.mx/. [Último acceso: 19 Noviembre 2016].

[21] M. T. Abzug, «http://userpages.umbc.edu,» 02 Diciembre 2000. [En línea]. Available:

http://userpages.umbc.edu/~mabzug1/cs/md5/md5.html. [Último acceso: 20 Noviembre

2016].

[22] J. Gilmore, «http://web.archive.org,» 1999 18 Enero. [En línea]. Available:

http://web.archive.org/web/20010818144309/www.eff.org/Privacy/Crypto_misc/DESCracker/

. [Último acceso: 22 Noviembre 2016].

Page 87: ³Desarrollo de un sistema ERP en la nube y encriptación de

86

[23] J. W. &. Sons, APPLIED CRYPTOGRAPHY, Nueva York: 2nd Edition Bruce Schneier, 1996.

[24] Redeszone, «http://www.redeszone.net,» 04 Noviembre 2010. [En línea]. Available:

http://www.redeszone.net/2010/11/04/criptografia-algoritmos-de-cifrado-de-clave-

simetrica/. [Último acceso: 24 10 2016].

[25] S. L. Mora, «http://desarrolloweb.dlsi.ua.es,» 12 Julio 2012. [En línea]. Available:

http://desarrolloweb.dlsi.ua.es/cursos/2012/nuevos-estandares-desarrollo-sitios-

web/compatibilidad-. [Último acceso: 16 Noviembre 2016].

[26] J. P. P. y. A. Gardey, «http://definicion.de,» 12 Octubre 2012. [En línea]. Available:

http://definicion.de/html/. [Último acceso: 19 Noviembre 2016].

[27] D. R. Baral, «http://stackoverflow.com,» 15 Octubre 2015. [En línea]. Available:

http://stackoverflow.com/questions/18083056/css-what-are-moz-and-webkit. [Último acceso:

21 Noviembre 2016].

[28] E. González, «http://aprenderaprogramar.com,» 13 Enero 2016. [En línea]. Available:

http://aprenderaprogramar.com/index.php?option=com_content&view=article&id=590:ique-

es-y-para-que-. [Último acceso: 15 Noviembre 2016].

[29] Wikipedia, «https://es.wikipedia.org,» 20 Octubre 2016. [En línea]. Available:

https://es.wikipedia.org/wiki/Document_Object_Model. [Último acceso: 24 Noviembre 2016].

[30] I. A. Diaz, «http://serprogramador.es,» 12 Abril 2014. [En línea]. Available:

http://serprogramador.es/que-es-frontend-y-backend-en-la-programacion-web/. [Último

acceso: 23 Noviembre 2016].

[31] M. Merino, «http://www.ticbeat.com,» 2014 Julio 12. [En línea]. Available:

http://www.ticbeat.com/tecnologias/que-es-una-api-para-que-sirve/. [Último acceso: 2016

Noviembre 21].

[32] PHP, «http://php.net,» 09 Octubre 2008. [En línea]. Available: http://php.net/manual/es/intro-

whatis.php. [Último acceso: 12 Noviembre 2016].

[33] W. Archive, «http://web.archive.org,» 26 Febrero 2006. [En línea]. Available:

http://web.archive.org/web/20071030180009/http://es2.php.net/history. [Último acceso: 02

Noviembre 2016].

[34] W. Archive, «http://web.archive.org,» 13 Marzo 2009. [En línea]. Available:

http://web.archive.org/web/20090313075416/http://professional-

hacker.org/temporal/ataquemitm.htm. [Último acceso: 20 Noviembre 2016].

Page 88: ³Desarrollo de un sistema ERP en la nube y encriptación de

87

[35] M. Rouse, «http://searchsecurity.techtarget.com,» 23 Mayo 2013. [En línea]. Available:

http://searchsecurity.techtarget.com/definition/distributed-denial-of-service-attack. [Último

acceso: 19 Octubre 2015].

[36] Wikipedia, «https://es.wikipedia.org,» 18 Noviembre 2016. [En línea]. Available:

https://es.wikipedia.org/wiki/Git. [Último acceso: 09 Octubre 2016].

[37] Git, «https://git-scm.com/,» 27 Febrero 2014. [En línea]. Available: https://git-scm.com/about.

[Último acceso: 20 Octubre 2016].

[38] J. A. Tubio, «https://github.com,» 23 Mayo 2015. [En línea]. Available:

https://github.com/jatubio/5minutos_laravel/wiki/Estandares-de-programacion.-PSR-2.

[Último acceso: 26 Octubre 2016].

[39] Wikipedia, «https://es.wikipedia.org,» 13 Octubre 2015. [En línea]. Available:

https://es.wikipedia.org/wiki/Diccionario_de_datos. [Último acceso: 03 Noviembre 2016].

[40] D. G. H. Robles, «http://katyygaby.blogspot.mx,» 10 Enero 2012. [En línea]. Available:

http://katyygaby.blogspot.mx/p/diccionario-de-datos.html. [Último acceso: 20 Octubre 2016].

[41] M. Rose, «http://searchdatacenter.techtarget.com,» 14 Abril 2009. [En línea]. Available:

http://searchdatacenter.techtarget.com/es/definicion/Modelado-de-datos. [Último acceso: 12

Noviembre 2016].

[42] «http://www.vbote.com/,» 02 Diciembre 2014. [En línea]. Available:

http://www.vbote.com/vbote-solutions-academy-blog/130-materialize-el-framework-con-

principios-de-. [Último acceso: 10 Octubre 2016].

[43] A. C. A. M. K. L. Alvin Wang, «http://materializecss.com/,» 20 Octubre 2016. [En línea].

Available: http://materializecss.com/about.html. [Último acceso: 02 Noviembre 2016].

[44] A. Informativa, «http://blog.aulaformativa.com,» 11 Agosto 2014. [En línea]. Available:

http://blog.aulaformativa.com/principales-ventajas-y-desventajas-de-emplear-una-

framework-css/. [Último acceso: 16 Octubre 2016].

[45] Patricio, «http://desarrollandowebsdinamicas.blogspot.mx,» 21 Marzo 2013. [En línea].

Available: http://desarrollandowebsdinamicas.blogspot.mx/2013/03/que-es-laravel.html.

[Último acceso: 06 Noviembre 2016].

[46] Wikipedia, «https://es.wikipedia.org,» 14 Octubre 2016. [En línea]. Available:

https://es.wikipedia.org/wiki/Modelo%E2%80%93vista%E2%80%93controlador. [Último

acceso: 30 Octubre 2016].

Page 89: ³Desarrollo de un sistema ERP en la nube y encriptación de

88

[47] E. F. Cases, «http://www.ibrugor.com,» 31 Octubre 2013. [En línea]. Available:

http://www.ibrugor.com/blog/que-es-ajax-para-que-sirve/. [Último acceso: 04 Noviembre

2016].

[48] jQuery, «http://jquery.com/,» 26 Septiembre 2015. [En línea]. Available: http://jquery.com/.

[Último acceso: 16 Noviembre 2016].

[49] Wikipedia, «https://es.wikipedia.org,» 27 Septiembre 2016. [En línea]. Available:

https://es.wikipedia.org/wiki/Sublime_Text. [Último acceso: 07 Noviembre 2016].

[50] Softonic, «https://sqlyog-community-edition.softonic.com,» 10 Noviembre 2015. [En línea].

Available: https://sqlyog-community-edition.softonic.com/descargar. [Último acceso: 25

Octubre 2016].

[51] Webyog, «https://www.ecured.cu,» 21 Enero 2014. [En línea]. Available:

https://www.ecured.cu/SQLyog. [Último acceso: 24 Noviembre 2016].

[52] G. Oliveira, «http://www.gianoliveira.com,» 11 Octubre 2013. [En línea]. Available:

http://www.gianoliveira.com/hosting-gratis.html. [Último acceso: 18 Noviembre 2016].

[53] Hostinger, «https://www.hostinger.mx/,» 14 Septiembre 2015. [En línea]. Available:

https://www.hostinger.mx/. [Último acceso: 13 Noviembre 2016].

[54] FileZilla, «https://filezilla-project.org,» 12 Enero 2014. [En línea]. Available: https://filezilla-

project.org/translations.php. [Último acceso: 16 Noviembre 2016].

[55] Wikipedia, «https://es.wikipedia.org,» 24 Octubre 2016. [En línea]. Available:

https://es.wikipedia.org/wiki/FileZilla. [Último acceso: 09 Octubre 2016].

[56] R. Dudler, «http://rogerdudler.github.io,» 29 Julio 2015. [En línea]. Available:

http://rogerdudler.github.io/git-guide/index.es.html. [Último acceso: 28 Octubre 2016].

[57] INEGI, «http://www.inegi.org.mx/,» 17 Julio 2009. [En línea]. Available:

http://www.inegi.org.mx/est/contenidos/espanol/proyectos/censos/ce2009/pdf/RD09-

resumen.pdf. [Último acceso: 14 Noviembre 2016].

[58] Rashid, «http://www.yourerpsoftware.com,» 23 Abril 2009. [En línea]. Available:

http://www.yourerpsoftware.com/content/27-ventajas-e-inconvenientes-de-los-sistemas-erp.

[Último acceso: 18 Noviembre 2016].

[59] O. Golive, «http://onegolive.com/,» 29 Agosto 2015. [En línea]. Available:

http://onegolive.com/es/faq/guia-practica-sobre-erp/ventajas-de-un-erp. [Último acceso: 17

Noviembre 2016].

Page 90: ³Desarrollo de un sistema ERP en la nube y encriptación de

89

[60] E. ERP, «http://www.evaluandoerp.com,» 11 Noviembre 2008. [En línea]. Available:

http://www.evaluandoerp.com/capacitacion-en-el-uso-del-erp-una-clave-vital-para-el-exito-

de-la-implementacion/. [Último acceso: 10 Noviembre 2016].