Está en la página 1de 102

INSTITUTO TÉCNICO BRITÁNICO MERCANTIL “I.B.M.


CARRERA: SISTEMAS INFORMÁTICOS

RESOLUCIÓN
RATIFICADA N°
221/2012

“SISTEMA DE CONTROL DE STOCK, COMPRAS Y


VENTAS PARA LA FERRETERÍA ARDAYA”
Proyecto de grado para la obtención del Título Profesional en
Sistemas Informáticos a Nivel Técnico Superior

Postulante: Luis Fernando Iriarte Herbas


Tutor: Ing. Christopher Ryan Andrade
Reynoso

Cochabamba – Bolivia
2018
DEDICATORIA

A mi familia, docentes y en especial a mis


padres, por el apoyo incondicional durante estos
años de estudio recibido y también por el
esfuerzo realizado para poder salir adelante.
AGRADECIMIENTO

A Dios, por darme la sabiduría e inteligencia


para poder realizar este trabajo y permitir
culminar mis estudios, a mi tutor Ing.
Christopher Ryan Andrade Reynoso por
compartir su conocimiento y tener paciencia en

RESUMEN

En la actualidad las tecnologías de información han aumentado y evolucionado


rápidamente y esto conlleva a que toda entidad que haga manejo de una gran cantidad de
información tenga que encontrar la forma de organizarla y controlarla eficientemente.
Los sistemas de control de información han llegado a ser una herramienta indispensable
para estas entidades, por lo cual la mayor parte se inclina por hacer uso de un sistema
que logre la organización de su información.

En este caso se realizará un sistema de control de stock, compras y ventas para la


ferretería “Ardaya”. Los problemas en esta microempresa radicaban en que la gran
cantidad de información mal almacenada producía una gran pérdida de tiempo al
momento de dar reportes de las ventas realizadas, el control del stock parecía
interminable y mucho más al tener que hacer una facturación.

En el presente documento se dará una explicación de cómo se dará solución a los


problemas de esta microempresa, comenzando con la identificación de los problemas
principales. Una explicación de las herramientas a utilizarse y finalmente la forma en
que se hará uso de estas herramientas para lograr un sistema confiable y eficiente.

El resultado de este proyecto de implementación de un sistema será el de lograr que la


empresa logre una gran evolución en el ámbito de la información, todo esto repercutirá
para hacer que más empresas requieran de esta herramienta tan indispensable.

ÍNDICE
INTRODUCCIÓN..................................................................................................................1
CAPÍTULO I
PROBLEMA DE INVESTIGACIÓN....................................................................................3
1.1 Antecedentes............................................................................................................3

1.1.1 Antecedentes Organizacionales.............................................................................3

1.1.2 Antecedentes Tecnológicos....................................................................................4

1.2 El Problema..............................................................................................................5

1.2.1 Situación Problemática..........................................................................................5

1.2.2 Formulación del Problema.....................................................................................6

1.3 Objetivos..................................................................................................................6

1.3.1 Objetivo general.....................................................................................................6

1.3.2 Objetivos Específicos.............................................................................................6

1.4 Alcance.....................................................................................................................6

1.5 Limites......................................................................................................................7

1.6 Justificación..............................................................................................................7

1.6.1 Justificación económica.........................................................................................7

1.6.2 Justificación social.................................................................................................8

1.6.3 Justificación Tecnológica.......................................................................................8

1.7 Estudio de factibilidad..............................................................................................8

1.7.1 Factibilidad técnica................................................................................................8

1.7.2 Factibilidad económica..........................................................................................9

1.7.3 Factibilidad operacional.......................................................................................10

1.8 Enfoque metodológico...........................................................................................10

1.8.1 Método Descriptivo..............................................................................................10

1.8.2 Método Analítico.................................................................................................11

1.8.3 Métodos y Técnicas de Recolección de Información..........................................11

1.9 Metodología de desarrollo......................................................................................13

CAPÍTULO II
MARCO TEÓRICO..............................................................................................................16
2.1 Modelado de Negocio......................................................................................16

2.1.1 Técnicas de Elaboración de Modelado de Negocio.............................................16

2.2 tecnologías.......................................................................................................20

2.2.1 Código de barras..................................................................................................20

2.3 Ingeniería de Software.....................................................................................22

2.4 Metodología de Desarrollo de Software..........................................................23

2.4.1 Metodologías Tradicionales.................................................................................24

2.4.2 Metodologías Ágiles............................................................................................29

2.4.3 Selección de Metodología....................................................................................36

2.5 Arquitectura de Software.................................................................................37

2.5.1 Patrón de arquitectura de software MVC.............................................................38

2.6 Lenguaje de Modelado Unificado (UML).......................................................40

2.6.1 Actor.....................................................................................................................41

2.6.2 Diagrama de casos de uso....................................................................................42

2.6.3 Diagrama de colaboración...................................................................................44

2.6.4 Diagrama de clase................................................................................................44

2.7 Herramientas de Desarrollo.............................................................................45

2.7.1 Lenguaje de Programación...................................................................................46

2.7.2 Html5...................................................................................................................47

2.7.3 CSS3.....................................................................................................................48

2.7.4 JavaScript.............................................................................................................49

2.7.5 Ajax......................................................................................................................50

2.7.6 JQuery..................................................................................................................52
2.7.8 Bootstrap..............................................................................................................54
2.7.9 Plantilla Admin LTE............................................................................................56

2.7.10 Xampp................................................................................................................58

2.8 Sistema de Gestor de Base de Datos...............................................................60

2.8.1 Gestores de base de datos lado del servidor.........................................................61

2.8.2 Selección de DBMS para el sistema....................................................................66

2.9 Entorno de Desarrollo (IDE)...........................................................................67

2.9.1 NetBeans..............................................................................................................68

2.9.2 PHPStorm.............................................................................................................68

2.9.3 Eclipse..................................................................................................................68

2.9.4 Atom.....................................................................................................................69

2.9.5 Sublime Text 3.....................................................................................................69

2.9.6 Selección del Entorno de Desarrollo (IDE).........................................................71

CAPÍTULO III
MARCO PRÁCTICO...........................................................................................................73
3.1 Modelado de Negocio......................................................................................73

3.1.1 Modelado de Negocio Actual..............................................................................73

3.1.2 Modelado de Negocio Alternativo.......................................................................74

3.2 Desarrollo del Proyecto...................................................................................76

3.2.1 Método Iterativo e Incremental............................................................................76

BIBLIOGRAFÍA..................................................................................................................85
ANEXOS..............................................................................................................................88
ÍNDICE DE FIGURAS
Figura # 1: Diagrama de Flujo.........................................................................................16
Figura # 2: Modelado de Negocio....................................................................................18
Figura # 3: Capas de Ingeniería de software....................................................................22
Figura # 4: Dimensiones del Proceso unificado...............................................................25
Figura # 5: Modelo de equipo de MSF.............................................................................27
Figura # 6: Programación Extrema..................................................................................30
Figura # 7: Ciclo de vida AUP.........................................................................................32
Figura # 8: Modelo Incremental o Iterativo.....................................................................34
Figura # 9: Explicación de patrón MVC..........................................................................38
Figura # 10: Actor administrador del sistema..................................................................42
Figura # 11: Tipos de Relaciones de casos de uso...........................................................42
Figura # 12: Diagrama de clase........................................................................................45
Figura # 13: Sublime Text 3.............................................................................................69
Figura # 14: Modelado de Negocio Actual......................................................................74
Figura # 15: Modelado de Negocio Alternativo...............................................................75
Figura # 16: Base de Datos Relacional del Sistema.........................................................76
Figura # 17: Listado de Categorías...................................................................................77
Figura # 18: Nueva Categoría..........................................................................................77
Figura # 19: Listado de Artículos.....................................................................................77
Figura # 20: Nuevo Artículo............................................................................................78
Figura # 21: Listado de compras......................................................................................79
Figura # 22: Nueva Compra.............................................................................................79
Figura # 23: Listado de Proveedores................................................................................80
Figura # 24: Nuevo Proveedor.........................................................................................81
Figura # 25: Nuevo Proveedor Registrado.......................................................................81
Figura # 26: Listado de usuarios......................................................................................82
Figura # 27: Nuevo Usuario.............................................................................................83
Figura # 28: Nuevo Usuario Registrado...........................................................................83
Figura # 29: Inicio de Sesión............................................................................................84
Figura # 30: Vista Frontal de la Ferretería Ardaya..........................................................90
Figura # 31: Productos de la Ferretería Ardaya...............................................................91
Figura # 32: Mi persona en la Ferretería..........................................................................92
INTRODUCCIÓN
El desarrollo de un sistema web evoluciona continuamente para adaptarse a las
tecnologías de la información y las comunicaciones. El auge de internet y de la web ha
influido notablemente en el desarrollo de sistema Web durante los últimos años.
Actualmente la interfaz de los sistemas de información se implementa utilizando
tecnologías web que ofrecen numerosas ventajas tales como el uso de una interfaz
uniforme y la mejora del mantenimiento del sistema que ayuda a tener una mejor
experiencia al usuario.

El proyecto se centra en el trabajo realizado por el administrador, en el control de stock,


compra de productos, emisión de facturas al realizar la venta, quien, con la ayuda del
sistema web, podrá agilizar los procesos del administrador al realizar tanto las ventas de
los artículos como también la compra de estos.

El proyecto está dividido en tres capítulos que se mencionarán a continuación:

En el Capítulo I se desarrolla la descripción de la Ferretería, en la que se menciona su


situación y los procesos ineficientes en la gestión de compras, ventas y control del stock
de los productos, así también se hace referencia a los objetivos planteados para el
proyecto.

En el Capítulo II se proporciona el sustento del marco teórico, en el que se tiene la


información correspondiente a la ruta crítica, qué es, cómo hace, para que sirve.

El Capítulo III especifica la ingeniería del proyecto y la proyección del desarrollo del
Software en base a la metodología incremental, donde se describe el desarrollo de cada
incremento para la realización del proyecto.

1
CAPÍTULO I

2
PROBLEMA DE INVESTIGACIÓN
1.1 ANTECEDENTES
1.1.1 Antecedentes Organizacionales.
La Ferretería “Ardaya” está ubicado en Quillacollo - Cochabamba, dirección Av. Martin
Cárdenas entre la calle 18 de mayo y calle 12 de enero, no tiene sucursales, es
catalogado con el nivel de microempresa.

El tiempo de funcionamiento es de 10 años, son dos dueños encargados en la parte de


administración, el primer administrador es encargado de control de stock, el segundo
está encargado en el área de ventas y atención al cliente.

El control de stock se realiza con la verificación visual en el almacén de productos, el


que realiza el control es el primer administrador, al cual le toma un tiempo aproximado
de 30 hasta 60 minutos para verificar los productos en stock. Básicamente el registra
detalladamente todos los productos en un cuaderno, para después comprar los productos
que están agotados en stock.

La compra de productos de los proveedores es respaldada con nota de venta o factura, el


cual ayuda al administrador a determinar el costo de venta de cada producto.

Para determinar el costo de cada producto, el administrador procede a obtener el


contenido unitario de cajas, bolsas, paquetes, amarros, etc. Estimando con un cálculo
registrados en hojas de papel o mentalmente guarda los precios unitarios de los distintos
productos comprados.

Las ventas al contado de productos son para todo el público en general, la parte de
ventas está encargada por el segundo administrador.

Esta venta consta de las necesidades del cliente, el cual se aproxima a los ambientes de
la Ferretería. Para solicitar verbalmente los productos, el administrador procede a la
estimación de costo mental, cuando el cliente no solicita la nota de venta.

3
En caso de que el administrador no encuentra el producto que el cliente solicitó, el
cliente se retira de los ambientes de la Ferretería en busca de su producto. Los productos
que no existen en los ambientes de la Ferretería, no se determinan si fueron vendidos o
fueron robados.

Cuando el cliente solicita una nota de venta, se realiza el registro manualmente con el
nombre del cliente, fecha de venta, lista de productos que son: nombre producto,
cantidad del producto, precio y el total a pagar.

Para determinar las ganancias que tuvo la Ferretería durante el periodo de un mes, el
administrador realiza el cálculo respectivo de todas las ventas que se realizaron, esta
elaboración de cálculos puede tardar entre 2 a 3 horas en ser realizados.

La factura se utiliza para la venta de productos, este talonario de facturas es solicitado a


Impuestos Nacionales, el producto incrementa un 13%, el procedimiento del llenado es
manual, con el registro detallado de los siguientes datos que son: Señor, Número de
cedula, nombre producto, cantidad de producto, precio y total.

1.1.2 Antecedentes Tecnológicos.


En la actualidad existen varios programas de inventario que pueden adecuarse a la
Ferretería “Ardaya”. A continuación, se describirá dos softwares gratuitos.

1.1.2.1 Softwares Gratuitos.


 EGA Futura es un software empresarial para la administración y gestión de stock e
inventario, compras, ventas, clientes y proveedores, cuentas corrientes y facturación.
Este software ofrece una versión totalmente gratuita (de por vida) diseñada para
llevar el control en pequeñas y medianas empresas, aunque si las necesidades de tu
empresa son mayores también te ofrecen una versión Power y una versión
Enterprise, cada una con características especiales para diferentes tipos de empresas.

 CEYS software que tiene la facilidad de controlar las entradas, salidas de productos,
crédito. Es un sistema que puede adecuarse a diferentes Microempresas que quieran
controlar su inventario.
1.1.2.2 Softwares de Pago.
Existen empresas que se dedican a desarrollar programas que requiera el cliente, pero el
desarrollo de estos softwares es con un costo dependiendo de los módulos que requiera
el cliente. A continuación, se describirá las empresas de desarrollo de software que
existen en Cochabamba.

 Solusoft Solutions desarrolla el software y su costo de un sistema de inventario está


estimado en unos 350$, que tendrán los siguientes módulos: Stock, ventas al crédito,
cajeros.

 Zona Software es una empresa también desarrolla un sistema de inventario, el costo


de este sistema es de 400$, que tendrá los siguientes módulos: Stock, ventas al
crédito, cajeros, clientes, impresión de facturas.

1.2 EL PROBLEMA
A continuación, se definirá la situación problemática que se tiene para luego formular un
problema principal.

1.2.1 Situación Problemática.


 La insuficiente información exacta de productos agotados en stock provoca la
pérdida de clientes y descontento de los mismos.

 La mala información de las ventas no registradas provoca pérdida de mercadería y de


dinero.

 La realización de cálculos de ganancias que tuvo la Ferretería elaborados


manualmente demanda tiempo, errores de cálculos.

 El registro manual de la factura, al momento de realizar la venta provoca demora en


el tiempo de llenado y error de cálculos.

 El procedimiento manual al realizar el pedido de productos provoca información


extraviada y errónea.
1.2.2 Formulación del Problema.
Los procedimientos manuales aplicados en el control de stock, compras y ventas de
productos de la Ferretería “Ardaya” provocan demora en el llenado de la factura,
extravió de información y pérdidas económicas.

1.3 OBJETIVOS
A continuación, se definirá el objetivo general del proyecto y posteriormente se
desglosará los objetivos específicos de manera detallada y comprensible.

1.3.1 Objetivo general.


Desarrollar un sistema web de control de stock, compras y ventas para la Ferretería
“Ardaya”.

1.3.2 Objetivos Específicos


 Diseñar el modelado de negocio actual y alternativo para el proceso de control de
stock y ventas de productos para la ferretería “Ardaya”.

 Desarrollar un módulo de control de stock de productos para tener la información


correcta acerca de las existencias.

 Programar un módulo de venta de productos para gestionar las ventas del sistema.

 Desarrollar un módulo de compras de productos para gestionar las compras del


sistema.

 Programar un módulo para la gestión de accesos de usuarios según el rol que ejerce.

 Implementar una base de datos única e integrada que permita almacenar la


información de todos los módulos del sistema.

1.4 ALCANCE
Los alcances del proyecto son:

 El sistema optimizará el proceso de control de stock de productos.

 El sistema registrará el ingreso de productos, también las ventas de productos.


 El sistema tendrá reportes del stock, ventas y compras de productos.

 La emisión de la factura solo se realizará en el sistema, al momento de realizar una


venta al cliente.

1.5 LIMITES
En la implementación del proyecto se toman en cuenta los siguientes límites:

 El sistema no contemplara apertura de caja para la parte de ventas.

 El sistema no contemplará ningún módulo de pedidos de productos.

 El sistema no podrá realizar ventas al crédito.

 El sistema no podrá realizar aperturas o cierres de inventario.

1.6 JUSTIFICACIÓN
El desarrollo del siguiente proyecto se justifica ampliamente tomando en consideración
los siguientes puntos de vista tales como:

1.6.1 Justificación económica.


Los problemas mencionados anteriormente hacen que en la ferretería haya inestabilidad
en el manejo de información que en este caso llega a ser un recurso económico de la
empresa, por lo cual el costo de desarrollo del software es bajo con relación a los
beneficios que obtendrá la empresa al implantarlo.

Este sistema reducirá los errores más comunes tanto en el llenado como en la
elaboración de informes, de esta manera se disminuirá los gastos destinados a los
materiales de escritorio, así como el tiempo que se emplea para su realización.

Además, se contará con el hardware necesario para implantar este sistema, por lo cual no
significará un problema.

La implementación del sistema se realizará con software libre, lo que reducirá el costo
de desarrollo notablemente, al no comprar licencias.
1.6.2 Justificación social.
Con el desarrollo de este proyecto, los empleados de la ferretería podrán realizar sus
tareas con mayor comodidad y facilidad, posibilitando una mayor eficiencia de estos.

Se pretende un crecimiento y consolidación de la ferretería “ARDAYA”, su fácil manejo


hará que haya una mejor comunicación entre los empleados, el personal operativo del
área de ventas no pasará mucho tiempo en trabajos tediosos y repetitivos. La
administración tendrá el beneficio de estar bien informado en el momento que desee
para así tomar decisiones oportunas.

La facilidad de consulta demandada de componentes beneficiara tanto al personal


operativo como ejecutivo, el mismo permitirá búsqueda de información rápida y
oportuna al momento que se la requiera.

1.6.3 Justificación Tecnológica.


Las Tecnologías de la Información y Comunicación (TIC) son incuestionables y están
ahí, forman parte de la cultura tecnológica que nos rodea y con la que debemos convivir.
Amplían nuestras capacidades físicas y mentales. Y las posibilidades de desarrollo
social. Sus principales aportaciones a las actividades humanas se concretan en una serie
de funciones que nos facilitan la realización de nuestros trabajos porque, sean éstos los
que sean, siempre requieren una cierta información para realizarlo, un determinado
proceso de datos y a menudo también la comunicación con otras personas; y esto es
precisamente lo que nos ofrecen las TIC.

Consideremos las actividades o tareas que un agente humano cualquiera llega a realizar:
buscar información de un tema determinado por un usuario, revisar el estatus de ventas,
generar una lista de los productos más requeridos por un cliente, entre muchas otras.
Todas estas tareas y muchas otras más pueden automatizarse de manera que se realicen
incluso sin interacción con los usuarios en ciertos casos.

1.7 ESTUDIO DE FACTIBILIDAD


1.7.1 Factibilidad técnica.
Para la realización de este sistema se tendrá las siguientes herramientas:
 LENGUAJE DE PROGRAMACIÓN PHP

 LENGUAJE DE MARCADO HTML5

 HOJAS DE ESTILO EN CASCADA CSS3

 GESTOR DE BASE DE DATOS MARIADB

 AJAX

 LIBRERÍA J QUERY

 ENTORNO DE DESARROLLO (IDE) SUBLIME TEXT 3

 SERVIDOR XAMPP

 FRAMEWORK BOOTSTRAP

 PLANTILLA ADMIN LTE

 JAVASCRIPT

Los requerimientos básicos de software para la utilización del sistema son:

 Un Navegador Web (Google Chrome, Fire Fox, Safari).

1.7.2 Factibilidad económica.


Todo el software de desarrollo para el sistema es de licencia libre, sin costo alguno por
que PHP y MARIDB son de código abierto como también lo son las herramientas ya
mencionadas anteriormente.

Sin embargo, se describen los precios del lector de código de barras y la impresora:

 Lector de código de barras 500 bs por unidad.

 Impresora de facturas 550 bs por unidad.

La Ferretería posee la facultad para adquirir los elementos necesarios para


implementación del proyecto siendo factible económicamente.
1.7.3 Factibilidad operacional.
El desarrollo del sistema cuenta con las interfaces entendibles para que el manejo sea
fácil y tengan comprensión de todas las funcionalidades permitiendo a los usuarios
utilizar de una manera menos dificultosa. Por lo tanto, el sistema ayuda en sus procesos
e inconvenientes que se tengan en la empresa.

El administrador del sistema también tendrá su capacitación con el control de stock,


inventarios y venta de productos.

Además de la debida capacitación, también se le entregará un manual de usuario, la cual


le servirá al cliente final como una guía del manejo respectivo del sistema, adjunto al
manual de usuario también se le facilitará al cliente un video tutorial donde se explicará
de manera muy clara y sencilla el manejo de todos y cada uno de los módulos que
conforman el sistema.

1.8 ENFOQUE METODOLÓGICO


1.8.1 Método Descriptivo
En este método se realiza una exposición narrativa, numérica y/o gráfica, bien detallada
y exhaustiva de la realidad que se estudia.

El método descriptivo busca un conocimiento inicial de la realidad que se produce de la


observación directa del investigador y del conocimiento que se obtiene mediante la
lectura o estudio de las informaciones aportadas por otros autores. Se refiere a un
método cuyo objetivo es exponer con el mayor rigor metodológico, información
significativa sobre la realidad en estudio con los criterios establecidos por la academia.

En adición al rigor, el método descriptivo demanda la interpretación de la información


siguiendo algunos requisitos del objeto de estudio sobre el cual se lleva a cabo la
investigación. Es una interpretación subjetiva, pero no es arbitraria. Es una información
congruente con los hechos, y la información obtenida es consistente con los
requerimientos de la disciplina metodológica.
1.8.2 Método Analítico
A partir del conocimiento general de una realidad realiza la distinción, conocimiento y
clasificación de los distintos elementos esenciales que forman parte de ella y de las
interrelaciones que sostienen entre sí.

Se fundamenta en la premisa de que a partir del todo absoluto se puede conocer y


explicar las características de cada una de sus partes y de las relaciones entre ellas.

El método analítico permite aplicar posteriormente el método comparativo, permitiendo


establecer las principales relaciones de causalidad que existen entre las variables o
factores de la realidad estudiada. Es un método fundamental para toda investigación
científica o académica y es necesario para realizar operaciones teóricas como son la
conceptualización y la clasificación.

1.8.3 Métodos y Técnicas de Recolección de Información


Todo investigador debe considerar que la selección y elaboración de técnicas e
instrumentos es esencial en la etapa de recolección de la información en el proceso
investigativo; pues constituye el camino para encontrar la información requerida que
dará respuesta al problema planteado. Las técnicas básicas para la recolección de
información, se puede definir cómo; el medio a través del cual el investigador se
relaciona con los participantes para obtener la información necesaria que le permita
alcanzar los objetivos planteados en la investigación.

Es esencial señalar, que el método de investigación elegido da la pauta para seleccionar


la técnica de recolección de datos. En este sentido, existe un amplio conjunto de técnicas
de recolección de información (primaria o secundaria) donde algunas son propias de las
investigaciones con tendencia cuantitativa y otros con orientación cualitativa

1.8.3.1 La Entrevista.
Es una técnica de recopilación de información mediante contacto directo con las
personas, a través de una conversación interpersonal, preparada bajo una dinámica de
preguntas y respuestas, donde se dialoga sobre un tópico relacionado con la
problemática de investigación. La interacción verbal es inmediata y personal, donde una
parte es el entrevistador, quien formula las preguntas, y la otra persona es el
entrevistado. La entrevista permite estar al tanto de la postura del o los informantes ante
una situación determinada (Bernal C, 2006, pág. 30).

INSTRUMENTOS

Existen diversos tipos de entrevista, entre las que se pueden citar: las de trabajo, de
selección de personal, las entrevistas periodísticas, entre otras. La entrevista, pensada
como una técnica de investigación ofrece información relevante para abordar un
problema y lograr los objetivos de la investigación. La clasificación más común refiere
las entrevistas estructuradas, semiestructuradas y las no estructuradas.

 Entrevistas estructuradas: El entrevistador realiza una serie de preguntas al


entrevistado, a partir de un cuestionario previamente preparado, bajo un guion de
preguntas cerradas, elaborado de forma secuenciada y dirigida. Las respuestas
del entrevistado deben ser concretas sobre lo que se le interroga.

 Entrevistas semiestructuradas: Se llevan a cabo a partir de un guion de


preguntas abiertas que se le formulan al entrevistado, sin obligar al entrevistado
que siga un orden determinado; dejando así lugar para la libre expresión.

 Entrevistas no estructuradas: el entrevistado no afronta un listado establecido


de preguntas y la entrevista se desenvuelve abiertamente con mayor flexibilidad
y libertad.

1.8.3.2 El Cuestionario.
El cuestionario es un instrumento básico de la observación en la encuesta y en la
entrevista. En el cuestionario se formula una serie de preguntas que permiten medir una
o más variables. Posibilita observar los hechos a través de la valoración que hace de los
mismos el encuestado o entrevistado, limitándose la investigación a las valoraciones
subjetivas de éste.

No obstante, a que el cuestionario se limita a la observación simple, del entrevistador o


el encuestado, éste puede ser masivamente aplicado a comunidades nacionales e incluso
internacionales, pudiéndose obtener información sobre una gama amplia de aspectos o
problemas definidos.

La estructura y el carácter del cuestionario lo definen el contenido y la forma de las


preguntas que se les formula a los interrogados. La pregunta en el cuestionario por su
contenido puede dividirse en dos grandes grupos: pregunta directa o indirecta.

La pregunta directa: coincide el contenido de la pregunta con el objeto de interés del


investigador. La formulación de la pregunta indirecta constituye uno de los problemas
más difíciles de la construcción de las encuestas.

1.8.3.3 Selección del Método.


La fase inicial de la recopilación de información y su sistematización es primordial para
alcanzar un resultado exitoso en un trabajo de investigación. Tener certeza en la
selección de la técnica de la recolección de los datos permitirá optimizar los
requerimientos, que serán fundamentales para el desarrollo del trabajo investigativo. En
consecuencia, es un requerimiento ineludible que el investigador conozca las diferentes
técnicas e instrumentos empleados para recabar sistemáticamente los datos requeridos en
su investigación, por esa razón fue empleada el método la entrevista con la cual se llevó
a recopilar toda la información necesaria para poder dar la solución al problema.

1.9 METODOLOGÍA DE DESARROLLO


La metodología se define como la disciplina que indicará qué métodos y técnicas hay
que usar en cada fase del ciclo de vida del desarrollo del proyecto (Fárias Paracín &
Honores, 2017).

Como se conoce hoy en día existen diversidad de metodologías para realizar un


proyecto, entre las cuales están las tradicionales que en la actualidad ya no son muy
recomendables tratándose de desarrollar productos de software, la razón, el hecho de
utilizar esta metodología significaría una pérdida de tiempo y dolores de cabeza, por
ende, resulta contraproducente.
Sin embargo, existen también las metodologías ágiles las cuales se enfocan más en la
realización del producto en un tiempo mucho más reducido, pero manteniendo la calidad
del producto.

Entre ellas tenemos XP, ESPIRAL, INCREMENTAL y otros.

Así mismo tratándose de un proyecto de software y las diversidades de metodologías


que existen para realizar un mismo producto, en este caso para la realización de este
proyecto se ha optado por la metodología INCREMENTAL, ya que las iteraciones se
pueden entender como mini proyectos, en las cuales se realiza repeticiones de procesos
de trabajo similares, con el cual se proporciona un resultado completo sobre el proyecto
final.

Los beneficios que nos proporciona esta metodología sería la gestión de las expectativas
del cliente de manera regular y tomar decisiones en cada iteración, realizando cambios a
corto plazo para cumplir con las peticiones del cliente.
CAPÍTULO II
MARCO TEÓRICO
2.1 MODELADO DE NEGOCIO
El modelo de negocios es el estudio de la organización.

Durante el proceso de modelado del negocio, se examinan la estructura de la


organización y se observan los roles en la compañía y como estos se relacionan.

También se examina el flujo de trabajo de la organización, los procesos principales


dentro de la compañía y como ellos trabajan. Además, se deben examinar las entidades
externas, cualquier individuo u otras compañías, y como interactúan con el negocio, y
observar las implicaciones de esas interacciones.

2.1.1 Técnicas de Elaboración de Modelado de Negocio.


En este apartado pasaremos a explicar dos notaciones de modelado de negocio
principales que son la notación del modelado de procesos de negocio (BPMN) y el
lenguaje de modelado unificado (UML).

2.1.1.1 Modelado de Negocio Usando Diagrama de Flujo.


La notación del modelado de procesos de negocio (BPMN) es un método de diagrama
de flujo que modela los pasos de un proceso de negocio planificado de principio a fin.
Un aspecto clave de la gestión de procesos de negocio (BPM) es que representa

Figura # 1: Diagrama de Flujo


visualmente una secuencia detallada de los flujos de información y las actividades
empresariales necesarias para finalizar un proceso

Su propósito es modelar formas de mejorar la eficiencia, representar nuevas


circunstancias u obtener ventaja sobre la competencia. Este método también ha
experimentado un empuje hacia la estandarización en los últimos años, y ahora su
nombre es un poco diferente: Notación y modelo de procesos de negocios, pero conserva
la sigla BPMN. Se diferencia de la creación de mapas de procesos de negocio, que
realiza diagramas de procesos actuales para propósitos tales como la estandarización, la
capacitación a empleados, el control de calidad y la conformidad de auditoría. BPMN
también es el equivalente empresarial del lenguaje unificado de modelado (UML)
empleado en el diseño de software.

2.1.1.2 Modelado de Negocio usando UML


Este apartado describe cómo modelar los procesos de negocio con UML empleando una
extensión adaptada del UML usar definida por Hans-Erik Eriksson y Magnus Penker en
el modelado de negocio. Se explica tanto la notación como el proceso de aplicarla para
capturar y refinarlos modelos de proceso de negocio.

Introducción al UML

El Lenguaje Unificado de Modelado (UML) es, tal como su nombre lo indica, un


lenguaje de modelado y no un método o un proceso. El UML está compuesto por una
notación muy específica y por las reglas semánticas relacionadas para la construcción de
sistemas de software. El UML en sí mismo no prescribe ni aconseja cómo usar esta
notación en el proceso de desarrollo o como parte de una metodología de diseño
orientada a objetos.

El UML soporta un conjunto rico en elementos de notación gráficos. Describe la


notación para clases, componentes, nodos, actividades, flujos de trabajo, casos de uso,
objetos, estados y cómo modelar la relación entre esos elementos. El UML también
soporta la idea de extensiones personalizadas a través elementos estereotipados.
El UML provee beneficios significativos para los ingenieros de software y las
organizaciones al ayudarles a construir modelos rigurosos, trazables y mantenibles, que
soporten el ciclo de vida de desarrollo de software completo.

La metodología se define como la disciplina que indicará qué métodos y técnicas hay
que usar en cada fase del ciclo de vida del desarrollo del proyecto (Booch & Jacobson,
2004).

Modelando el Proceso de Negocio

Modelar el proceso de negocio es una parte esencial de cualquier proceso de desarrollo


de software. Permite al analista capturar el esquema general y los procedimientos que
gobiernan el negocio. Este modelo provee una descripción de dónde se va a ajustar el
sistema de software considerado dentro de la estructura organizacional y de las
actividades habituales. También provee la justificación para la construcción del sistema
de software al capturar las actividades manuales y los procedimientos automatizados
habituales que se incorporarán en nuevo sistema, con costos y beneficios asociados.

Figura # 2: Modelado de Negocio


Como un modelo preliminar del negocio, permite al analista capturar los eventos, las
entradas, los recursos y las salidas más importantes vinculadas con el proceso de
negocio.

Es posible construir un modelo completamente trazable mediante la posterior conexión


de elementos de diseño (tales como los casos de uso) al modelo de negocio a través de
conectores de implementación, desde la generalidad del proceso de negocio a los
requisitos funcionales y eventualmente a los artefactos de software que se construirán
realmente.

Por el hecho de que el modelo de procesos de negocio normalmente es más amplio que
la parte de sistema computacional considerada también permite al analista identificar
claramente qué está dentro del alcance del sistema propuesto y qué se implementará de
otras formas (por ejemplo: un proceso manual).

Notación del Modelado de Proceso

Un modelo de proceso de negocio típicamente define los siguientes elementos:

El Objetivo o el motivo del proceso

Las Entradas especificas

Las Salidas especificas

Los Recursos consumidos

La secuencia de las Actividades; y

Los Eventos que dirigen el

proceso El proceso de negocio:

Puede afectar a más de una unidad

organizacional. Tiene un impacto horizontal en la

organización.

Crea algún tipo de valor para el cliente. Los clientes pueden ser internos o externos.
2.1.1.3 Elección del Modelado de Negocio.
Para la realización del modelado de negocio se ha optado por los diagramas de flujo, en
su plenitud, es un lenguaje gráfico muy completo con el cual se puede construir
numerosos tipos de diagramas las cuales serán empleados en el proyecto y su correcta
utilización.

2.2 TECNOLOGÍAS
2.2.1 Código de barras
Los códigos de barras y el sistema estándar GS1 de identificación y transmisión de datos
mediante códigos de barras, supone en hoy en día una herramienta básica para poder
operar logística y comercialmente con los interlocutores comerciales, ya sean
proveedores o clientes.

El código de barras consta de dos partes diferenciadas: el código y el símbolo.

 La Codificación: consiste en la asignación de una serie de caracteres


numéricos o alfanuméricos a una unidad. En el caso de realizar una
codificación basada en el estándar GS1, la codificación va a constar en una
serie de números únicos, globales y no ambiguos.

 La Simbología: consiste en un método específico de representar caracteres


numéricos o alfabéticos en forma de códigos de barras.

Codificación

La Normativa GS1 de codificación se basa en el principio de no-ambigüedad que


establece que cada variante de artículo debe tener un código único que lo
identifique siempre que la variación sea evidente y significativa a cualquier
interlocutor de la cadena de suministro, principalmente el consumidor final.

El código que va a identificar los diferentes formatos y agrupaciones de unidades


comerciales se le conoce como código GTIN (Global Trade Ítem Number) o Número
Global de Identificación de Artículo.
El código GTIN (Global Trade Identificación Number) o Número Global de
Identificación de Artículo es una numeración única, universal y no ambigua usada para
identificar cualquier unidad comercial de la que hay necesidad de recuperar información
predefinida y puede ser valorada, pedida o facturada en cualquier punto de la cadena de
suministro.

Mediante los estándares GS1 de codificación también es posible identificar


localizaciones de almacén, facturas, albaranes, pedidos, personas, etc.

NOTA: Dos unidades comerciales distintas no pueden identificarse con el mismo código
GTIN y una misma unidad no puede identificarse con más de un GTIN.

ATENCIÓN: El responsable de asignar el código GTIN a un producto es el propietario


de la marca comercial del mismo.

Simbología

Simbolizar es representar gráficamente, en barras y espacios o mediante códigos


bidimensionales, el código GTIN asignado al producto. De las correctas características
del símbolo dependerá la eficacia de la lectura. A continuación, se indican las
simbologías estándar GS1 existentes:

 Simbología GTIN-13

 Simbología GTIN-14

 Simbología GS1-128

 Simbología GS1 Datamatrix

2.2.1.1 JsBarcode.
JsBarcode es un generador de código de barras escrito en JavaScript. Admite múltiples
formatos de código de barras y funciona en navegadores y con Node.js. No tiene
dependencias cuando se usa para la web, pero funciona con jQuery si estas familiarizado
con este.
Este Plugin será aplicado y utilizado dentro del desarrollo del sistema para facilitar el
proceso de lectura de datos al momento de realizar las ventas de los artículos.

2.3 INGENIERÍA DE SOFTWARE


Según el autor Sommerville (2005), en su libro la ingeniería de software manifiesta, que
es una disciplina de la Ingeniería que se interesa por todos los aspectos de la producción
de software, desde las primeras etapas de la especificación del sistema hasta el
mantenimiento del sistema después de que se pone en operación. También manifiesta,
que la Ingeniería de software busca apoyar el desarrollo profesional, en lugar de la
programación individual. Incluye técnicas que apoyan la especificación, el diseño y la
evolución del programa, ninguno de los cuales son normalmente relevantes para el
desarrollo de software personal.

Sin embargo, Pressman, afirma que la ingeniería de software es una tecnología con
varias capas. Como se aprecia en la figura #3, cualquier enfoque de Ingeniería (incluso
la de software) debe basarse en un compromiso organizacional con la calidad.

Figura # 3: Capas de Ingeniería de software

El proceso de software es el aglutinante que une las capas de la tecnología y permite el


desarrollo racional y oportuno del software de cómputo. El proceso de software forma la
base para el control de la administración de proyectos de software, y establece el
contexto en el que se aplican métodos técnicos, se generan producto del trabajo
(modelos, documentos, datos, reportes, formatos, etc.), se establecen puntos de
referencia, se asegura la calidad y se administra el cambio de manera apropiada.

Herramientas: Proporcionan un apoyo automatizado o semiautomatizado para el


proceso y los métodos. Cuando se integran las herramientas de modo que la información
creada por una puesta ser utilizada por otra, queda establecido un sistema llamado
Ingeniería de software por computadora que apoya el desarrollo de software.

Métodos: Incluye un conjunto amplio de tareas, como comunicación análisis de los


requerimientos, modelación de diseño, construcción del programa, pruebas y apoyo. Los
métodos son basados en un conjunto de principios fundamentales que gobiernan cada
área de la tecnología e incluyen actividades de modelación y otras técnicas descriptivas.

Proceso: Es un conjunto de actividades, acciones y tareas que ejecutan cuando va a


crearse algún producto del trabajo.

Compromiso con la calidad: Esto implica un programa de calidad organizacional como


el enfoque de la administración total de la calidad.

2.4 METODOLOGÍA DE DESARROLLO DE SOFTWARE


Existe la creencia extendida de que los programas software tienen que ver solamente con
los ordenadores y las grandes computadoras.

Sin embargo, la ingeniería del software va mucho más allá. Se trata del proceso cuya
finalidad es desarrollar productos o soluciones para un cliente o mercado en particular,
teniendo en cuenta factores como los costes, la planificación, la calidad y las dificultades
asociadas. A todo esto, es a lo que denominamos metodologías de desarrollo de
software. Es decir, se trata del proceso que se suele seguir a la hora de diseñar una
solución o un programa específico. Tiene que ver, por tanto, con la comunicación, la
manipulación de modelos y el intercambio de información y datos entre las partes
involucradas. O para ser más precisos, las metodologías de desarrollo de software son
enfoques de carácter estructurado y estratégico que permiten el desarrollo de programas
con base a modelos de sistemas, reglas, sugerencias de diseño y guías. Las
metodologías de desarrollo se pueden dividir en dos grupos de acuerdo con sus
características y los objetivos que persiguen: ágiles y robustas.

2.4.1 Metodologías Tradicionales


Al inicio el desarrollo de software era artesanal en su totalidad, la fuerte necesidad
de mejorar el proceso y llevar los proyectos a la meta deseada, tuvieron que importarse
la concepción y fundamentos de metodologías existentes en otras áreas y adaptarlas al
desarrollo de software. Esta nueva etapa de adaptación contenía el desarrollo dividido
en etapas de manera secuencial que de algo mejoraba la necesidad latente en el campo
del software. Entre las principales metodologías tradicionales tenemos los ya tan
conocidos RUP y MSF entre otros, que centran su atención en llevar una
documentación exhaustiva de todo el proyecto y centran su atención en cumplir con un
plan de proyecto, definido todo esto, en la fase inicial del desarrollo del proyecto. Otra
de las características importantes dentro de este enfoque tenemos los altos
costos al implementar un cambio y al no ofrecer una buena solución para proyectos
donde el entorno es volátil. Las metodologías tradicionales (formales) se focalizan en
documentación, planificación y procesos. (Plantillas, técnicas de administración,
revisiones, etc.), a continuación, se detalla RUP uno de los métodos más usados
dentro de los métodos tradicionales.
2.4.1.1 Proceso Racional Unificado (RUP).

Figura # 4: Dimensiones del Proceso unificado

RUP es un proceso formal: Provee un acercamiento disciplinado para asignar tareas y


responsabilidades dentro de una organización de desarrollo. Su objetivo es asegurar la
producción de software de alta calidad que satisfaga los requerimientos de los usuarios
finales (respetando cronograma y presupuesto). Fue desarrollado por Rational Software,
y está integrado con toda la suite Rational de herramientas. Puede ser adaptado y
extendido para satisfacer las necesidades de la organización que lo adopte.
(Customización). Es guiado por casos de uso y centrado en la arquitectura, y utiliza

UML como lenguaje de notación.

Fases

Las cuatro fases del ciclo de vida son:

 Concepción

 Elaboración
 Construcción

 Transición

Ventajas

 Evaluación en cada fase que permite cambios de objetivos

 Funciona bien en proyectos de innovación.

 Es sencillo, ya que sigue los pasos intuitivos necesarios a la hora de desarrollar el


software.

 Seguimiento detallado en cada una de las fases.

Desventajas

 La evaluación de riesgos es compleja

 Excesiva flexibilidad para algunos proyectos

 Estamos poniendo a nuestro cliente en una situación que puede ser muy incómoda
para él.

 Nuestro cliente deberá ser capaz de describir y entender a un gran nivel de detalle
para poder acordar un alcance del proyecto con él.

2.4.1.2 Microsoft Solution Framework (MSF)


MSF es un compendio de las mejores prácticas en cuanto a administración de
proyectos se refiere. Más que una metodología rígida de administración de
proyectos, MSF es una serie de modelos que puede adaptarse a cualquier proyecto de
tecnología de información.

Todo proyecto es separado en cinco principales fases:

 Visión y Alcances.

 Planificación.
 Desarrollo.

 Estabilización.

 Implantación.

Figura # 5: Modelo de equipo de MSF

Visión y Alcances: La fase de visión y alcances trata uno de los requisitos más
fundamentales para el éxito del proyecto, la unificación del equipo detrás de una
visión común. El equipo debe tener una visión clara de lo que quisiera lograr para el
cliente y ser capaz de indicarlo en términos que motivarán a todo el equipo y al cliente.
Se definen los líderes y responsables del proyecto, adicionalmente se identifican las
metas y objetivos a alcanzar; estas últimas se deben respetar durante la ejecución del
proyecto en su totalidad, y se realiza la evaluación inicial de riesgos del proyecto.

Planificación: Es en esta fase es cuando la mayor parte de la planeación para el


proyecto es terminada. El equipo prepara las especificaciones funcionales, realiza el
proceso de diseño de la solución, y prepara los planes de trabajo, estimaciones
de costos y cronogramas de los diferentes entregables del proyecto.
Desarrollo: Durante esta fase el equipo realice la mayor parte de la construcción de
los componentes (tanto documentación como código), sin embargo, se puede
realizar algún trabajo de desarrollo durante la etapa de estabilización en respuesta a
los resultados de las pruebas. La infraestructura también es desarrollada durante
esta fase.

Estabilización: En esta fase se conducen pruebas sobre la solución, las pruebas de esta
etapa enfatizan el uso y operación bajo condiciones realistas. El equipo se enfoca
en priorizar y resolver errores y preparar la solución para el lanzamiento.

Implantación: Durante esta fase el equipo implanta la tecnología base y los


componentes relacionados, estabiliza la instalación, traspasa el proyecto al personal
soporte y operaciones, y obtiene la aprobación final del cliente. Modelo de roles.

El modelo de equipos de MSF (MSF team model) fue desarrollado para compensar
algunas de las desventajas impuestas por las estructuras jerárquicas de los equipos en
los proyectos tradicionales. Los equipos organizados bajo este modelo son pequeños y
multidisciplinarios, en los cuales los miembros comparten responsabilidades y
balancean las destrezas del equipo para mantenerse enfocados en el proyecto
que están desarrollando. Comparten una visión común del proyecto y se enfocan en
implementar la solución, con altos estándares de calidad y deseos de aprender. El
modelo de equipos de MSF tiene seis roles que corresponden a las metas
principales de un proyecto y son responsables por las mismas. Cada rol puede
estar compuestos por una o más personas, la estructura circular del modelo, con óvalos
del mismo tamaño para todos los roles, muestra que no es un modelo jerárquico y que
cada todos los roles son igualmente importantes en su aporte al proyecto. Aunque los
roles pueden tener diferentes niveles de actividad durante las diversas etapas del
proyecto, ninguno puede ser omitido. La comunicación se pone en el centro del
círculo para mostrar que está integrada en la estructura y fluye en todas direcciones. El
modelo apoya la comunicación efectiva y es esencial para el funcionamiento de este.
2.4.2 Metodologías Ágiles
Luego de varias opiniones tanto a favor como en contra de las metodologías
tradicionales se genera un nuevo enfoque denominado, métodos ágiles, que
nace como respuesta a los problemas detallados anteriormente y se basa en dos
aspectos puntuales, el retrasar las decisiones y la planificación adaptativa; permitiendo
potencia aún más el desarrollo de software a gran escala.

Como resultado de esta nueva teoría se crea un Manifiesto Ágil cuyas principales ideas
son:

 Los individuos y las interacciones entre ellos son más importantes que las
herramientas y los procesos empleados.

 Es más importante crear un producto software que funcione que escribir


documentación exhaustiva.

 La colaboración con el cliente debe prevalecer sobre la negociación de


contratos.

 La capacidad de respuesta ante un cambio es más importante que el seguimiento


estricto de un plan.

Entre los principales métodos ágiles tenemos el XP (eXtreme Programming),


Scrum, AUP entre otras.

Estas metodologías ponen de relevancia que la capacidad de respuesta a un cambio es


más importante que el seguimiento estricto de un plan. Nos lo proponen porque para
muchos clientes esta flexibilidad será una ventaja competitiva y porque estar
preparados para el cambio significar reducir su coste.

2.4.2.1 Programación Extrema (XP)


Figura # 6: Programación Extrema

Es la más destacada de los procesos ágiles de desarrollo de software formulada por


Kent Beck. La programación extrema se diferencia de las metodologías
tradicionales principalmente en que pone más énfasis en la adaptabilidad que en
la previsibilidad.

Los defensores de XP consideran que los cambios de requisitos sobre la marcha


son un aspecto natural, inevitable e incluso deseable del desarrollo de proyectos.
Creen que ser capaz de adaptarse a los cambios de requisitos en cualquier punto
de la vida del proyecto es una aproximación mejor y más realista que intentar definir
todos los requisitos al comienzo del proyecto e invertir esfuerzos después en
controlar los cambios en los requisitos.

Las características fundamentales del método son:


 Desarrollo iterativo e incremental: pequeñas mejoras, unas tras otras.

 Pruebas unitarias continuas, frecuentemente repetidas y automatizadas,


incluyendo pruebas de regresión. Se aconseja escribir el código de la prueba antes
de la codificación.

 Programación por parejas: se recomienda que las tareas de desarrollo se lleven


a cabo por dos personas en un mismo puesto. Se supone que la mayor calidad del
código escrito de esta manera -el código es revisado y discutido mientras se
escribe- es más importante que la posible pérdida de productividad inmediata.

 Frecuente interacción del equipo de programación con el cliente o


usuario. Se recomienda que un representante del cliente trabaje junto al
equipo de desarrollo.

 Corrección de todos los errores antes de añadir nueva funcionalidad. Hacer entregas
frecuentes.

 Refactorización del código, es decir, reescribir ciertas partes del código para
aumentar su 6 Extreme Porgramming (XP). Disponible en
www.XProgramming.comlegibilidad y mantenibilidad, pero sin modificar su
comportamiento. Las pruebas han de garantizar que en la refactorización no se
ha introducido ningún fallo.

 Propiedad del código compartida: en vez de dividir la responsabilidad en el


desarrollo de cada módulo en grupos de trabajo distintos, este método
promueve el que todo el personal pueda corregir y extender cualquier parte del
proyecto. Las frecuentes pruebas de regresión garantizan que los posibles errores
serán detectados.

 Simplicidad en el código: es la mejor manera de que las cosas funcionen. Cuando


todo funcione se podrá añadir funcionalidad si es necesario. La programación
extrema apuesta que en más sencillo hacer algo simple y tener un poco de
trabajo extra para cambiarlo si se requiere, que realizar algo complicado y
quizás nunca utilizarlo.

La simplicidad y la comunicación son extraordinariamente complementarias. Con más


comunicación resulta más fácil identificar qué se debe y qué no se debe hacer. Mientras
más simple es el sistema, menos tendrá que comunicar sobre este, lo que lleva a una
comunicación más completa, especialmente si se puede reducir el equipo de
programadores.

2.4.2.2 Proceso Unificado Ágil (AUP)

Figura # 7: Ciclo de vida AUP

El Proceso Unificado Ágil (AUP, del inglés Agile Unified Process) es una versión
simplificada del Proceso Unificado de Rational (Rational Unified Process, RUP)
desarrollada por Scott Ambler, que describe una aproximación al desarrollo de
aplicaciones que combina conceptos propios del proceso unificado tradicional con
técnicas ágiles, con el objetivo de mejorar la productividad.

En general, el Proceso Unificado Ágil supone un enfoque intermedio entre XP (eXtreme


Programming) y el Proceso Unificado de Rational, y tiene la ventaja de ser un proceso
ágil que incluye explícitamente actividades y artefactos a los que la mayoría de los
desarrolladores ya están, de alguna manera, acostumbrados. Muchas organizaciones
recelan de XP porque les parece demasiado ligero: XP no especifica cómo crear algunos
de los artefactos que los gestores necesitan, lo cual es en cierta manera una contrariedad
porque XP se considera, en general, un buen proceso ágil.

En el otro lado está el Proceso Unificado de Rational, cuya gestión resulta realmente
sencilla pero que los desarrolladores suelen temer debido al gran número de artefactos
que requiere. Esto también resulta desafortunado porque el Proceso Unificado tiene
mucho que ofrecer, y puede ser adaptado y recortado hasta conseguir algo más o menos
práctico (que es exactamente lo que IBM Rational recomienda). El Proceso Unificado
Ágil, pues, se haya entre ambos, adoptando algunas de las técnicas ágiles de XP y otros
procesos ágiles, pero reteniendo parte de la formalidad del Proceso Unificado de
Rational.

El Proceso Unificado Ágil consta de cuatro fases que el proyecto atraviesa de forma
secuencial. Dichas fases son, al igual que en el Proceso Unificado de Rational:

 Iniciación. El objetivo de esta fase es identificar el alcance inicial del proyecto,


una arquitectura potencial para el sistema y obtener, si procede, financiación para
el proyecto y la aceptación por parte de los promotores del sistema.

 Elaboración. Mediante esta fase se pretende identificar y validar la arquitectura


del sistema.

 Construcción. El objetivo de esta fase consiste en construir software desde un


punto de vista incremental basado en las prioridades de los participantes.

 Transición. En esta fase se valida y despliega el sistema en el entorno de


producción.
2.4.2.3 Incremental o Iterativo.
El modelo incremental de gestión de proyectos tiene como objetivo un crecimiento
progresivo de la funcionalidad. Es decir, el producto va evolucionando con cada una de
las entregas previstas hasta que se amolda a lo requerido por el cliente o destinatario.

Este enfoque, que se usó inicialmente para proyectos de software, aunque más tarde se
aplicó a otros sectores, establece entregas parciales mediante un calendario de plazos. En
cada una de ellas, el producto debe mostrar una evolución con respecto a la fecha
anterior; nunca puede ser igual.

Una de las claves para que esto se haga efectivo es la evaluación de las etapas. Los
responsables del proyecto deben analizar si los resultados parciales son los esperados y
si, sobre todo, apuntan al objetivo principal. De no ser así, deberán intervenir en él e

Figura # 8: Modelo Incremental o Iterativo


implementar las soluciones que la situación requiera.

Una forma de reducir el riesgo es desarrollar el sistema de forma incremental. Esto es:
dividir el proyecto en fases y desarrollar una parte de los requerimientos en cada fase
(Tapias, 2014).

El modelo incremental fue propuesto por Harlan Mills en el año 1980. Surgió el enfoque
incremental de desarrollo como una forma de reducir la repetición del trabajo en el
proceso de desarrollo y dar oportunidad de retrasar la toma de decisiones en los
requisitos hasta adquirir experiencia con el sistema. Este modelo se conoce también bajo
las siguientes denominaciones:

Método de las comparaciones limitadas sucesivas.

Ciencia de salir del paso.

Método de atacar el problema por ramas.

Fases del modelo incremental

El modelo de gestión incremental no es un modelo necesariamente rígido, es decir, que


puede adaptarse a las características de cualquier tipo de proyecto, existen al menos 7
fases que debemos tener en cuenta a la hora de implementarlo:

Requerimientos: son los objetivos centrales y específicos que persigue el proyecto.

Definición de las tareas y las iteraciones: teniendo en cuenta lo que se busca, el siguiente
paso es hacer una lista de tareas y agruparlas en las iteraciones que tendrá el proyecto.
Esta agrupación no puede ser aleatoria. Cada una debe perseguir objetivos específicos
que la definan como tal.

Diseño de los incrementos: establecidas las iteraciones, es preciso definir cuál será la
evolución del producto en cada una de ellas. Cada iteración debe superar a la que le ha
precedido. Esto es lo que se denomina incremento.
Desarrollo del incremento: posteriormente se realizan las tareas previstas y se
desarrollan los incrementos establecidos en la etapa anterior.

Validación de incrementos: al término de cada iteración, los responsables de la gestión


del proyecto deben dar por buenos los incrementos que cada una de ellas ha arrojado. Si
no son los esperados o si ha habido algún retroceso, es necesario volver la vista atrás y
buscar las causas de ello.

Integración de incrementos: una vez son validados, los incrementos dan forma a lo que
se denomina línea incremental o evolución del proyecto en su conjunto. Cada
incremento ha contribuido al resultado final.

Entrega del producto: cuando el producto en su conjunto ha sido validado y se


confirma su correspondencia con los objetivos iniciales, se procede a su entrega final.

Ventajas

Entre las ventajas que puede proporcionar un modelo de este tipo encontramos las
siguientes:

 Mediante este modelo se genera software operativo de forma rápida y en etapas


tempranas del ciclo de vida del software.

 Es un modelo más flexible, por lo que se reduce el coste en el cambio de alcance y


requisitos.

 Es más fácil probar y depurar en una iteración más pequeña.

 Es más fácil gestionar riesgos.

 Cada iteración es un hito gestionado fácilmente

2.4.3 Selección de Metodología


El proceso unificado no es una buena opción, para el presente proyecto debido a que
exige desde un principio definir la totalidad de requerimientos funcionales, sin embargo,
para los usuarios es una tarea difícil de cumplir y además que es recomendable usar en
proyectos pequeños.

La Programación Extrema tampoco se implementará al proyecto debido a que requiere


una amplia experiencia en el análisis y evaluación de riesgos, por lo cual prolongar el
tiempo del proyecto.

Por lo tanto, en el presente proyecto se utilizará el modelo INCREMENTAL, porque


permite fácil administración de las tareas en cada iteración, es un modelo propicio a
cambios o modificaciones, además es un modelo más flexible por lo tanto reduce los
costes, así se realicen cambios durante su desarrollo.

2.5 ARQUITECTURA DE SOFTWARE


En la actualidad, el software está presente en gran cantidad de objetos que nos rodean:
desde los teléfonos y otros dispositivos que llevamos con nosotros de forma casi
permanente, hasta los sistemas que controlan las operaciones de organizaciones de toda
índole o los que operan las sondas robóticas que exploran otros planetas. Uno de los
factores clave del éxito de los sistemas es su buen diseño; de manera particular, el diseño
de lo que se conoce como arquitectura de software.

Este concepto, al cual está dedicado el presente libro, ha cobrado una importancia cada
vez mayor en la última década (Velasco Elizondo, 2015).

Una arquitectura de software describe los componentes básicos de un sistema de


software y su combinación interna.

Arquitectura de software en el proceso de desarrollo.

En el marco del desarrollo de software, la arquitectura de software representa la decisión


de diseño más temprana. Es determinada básicamente por criterios de calidad como la
modificabilidad, mantenibilidad, seguridad y el rendimiento. Una arquitectura de
software una vez establecida es modificable más tarde solo con gran esfuerzo. La
decisión acerca de su diseño es por eso uno de los puntos más críticos e importantes en
el proceso de desarrollo de un software.
Características de una arquitectura de software exitosa.

Para poder funcionar con éxito, la arquitectura de software debe ser sintonizada con los
restantes factores del proyecto de software. Una arquitectura de software bien
configurada facilita a los usuarios y desarrolladores la comprensión del sistema. Factores
importantes que influyen la aptitud de la arquitectura de software son la planificación de
proyectos, el análisis de riesgo, la organización, el proceso de desarrollo, los ciclos de
trabajo, el hardware, la garantía de calidad y los requerimientos.

2.5.1 Patrón de arquitectura de software MVC


El patrón Modelo Vista Controlador está compuesto de otros patrones para lograr su
propósito y resolver los requerimientos y restricciones que impone el contexto de las
aplicaciones interactivas. Son varios los patrones que aparecen en torno a MVC, y cada
uno de ellos surge por diferentes necesidades que plantean los sistemas interactivos.
Estos patrones pueden pertenecen a la familia de los patrones de diseño e
implementación, que en este caso se encontrarán en una estrecha relación de
colaboración, y tendrán entre toda una misma intención: la de resolver el problema de la
interactividad entre usuario y sistema (valdecantos, 2010).

Entender el patrón arquitectónico MVC en su forma clásica para poder realizar una
aplicación del mismo resulta, entre otras cosas, de entender los patrones que lo
componen El MVC o Modelo-Vista-Controlador es un patrón de arquitectura de
software que, utilizando 3 componentes (Vistas, Modelos y Controladores) separa la
lógica de la aplicación de la lógica de la vista en una aplicación. Es una arquitectura

Figura # 9: Explicación de patrón MVC


importante puesto que se utiliza tanto en componentes gráficos básicos hasta sistemas
empresariales; la mayoría de los frameworks modernos utilizan MVC (o alguna
adaptación del MVC) para la arquitectura, entre ellos podemos mencionar a Ruby on
Rails, Django, AngularJS y muchos otros más. En este pequeño artículo intentamos
introducirte a los conceptos del MVC.

Una analogía.

Una que me gusta mucho es la de la televisión. En tu televisión puedes ver distintos


canales distribuidos por tu tu proveedor de cable o televisión (que representa al modelo),
todos los canales que puedes ver son la vista, y tú cambiando de canal, controlando qué
ves representas al controlador.

La explicación

Los puntos anteriores so sólo para proveer background, y que ojalá puedas utilizar las
referencias ahora que vamos a explicar qué es.

Antes que nada, me gustaría mencionar por qué se utiliza el MVC, la razón es que nos
permite separar los componentes de nuestra aplicación dependiendo de la
responsabilidad que tienen, esto significa que cuando hacemos un cambio en alguna
parte de nuestro código, esto no afecte otra parte del mismo. Por ejemplo, si
modificamos nuestra Base de Datos, sólo deberíamos modificar el modelo que es quién
se encarga de los datos y el resto de la aplicación debería permanecer intacta. Esto
respeta el principio de la responsabilidad única. Es decir, una parte de tu código no debe
de saber qué es lo que hace toda la aplicación, sólo debe de tener una responsabilidad.

En web, el MVC funcionaría así. Cuando el usuario manda una petición al navegador,
digamos quiere ver el curso de AngularJS, el controlador responde a la solicitud, porque
él es el que controla la lógica de la app, una vez que el controlador nota que el usuario
solicitó el curso de Angular, le pide al modelo la información del curso.

El modelo, que se encarga de los datos de la app, consulta la base de datos y digamos,
obtiene todos los vídeos del curso de AngularJS, la información del curso y el título, el
modelo responde al controlador con los datos que pidió (nota como en la imagen las
flechas van en ambos sentidos, porque el controlador pide datos, y el modelo responde
con los datos solicitados).

Una vez el controlador tiene los datos del curso de AngularJS, se los manda a la vista, la
vista aplica los estilos, organiza la información y construye la página que vez en el
navegador.

Resumamos entonces los conceptos.

Modelo

Se encarga de los datos, generalmente (pero no obligatoriamente) consultando la base de


datos. Actualizaciones, consultas, búsquedas, etc. todo eso va aquí, en el modelo.

Controlador

Se encarga de... controlar, recibe las órdenes del usuario y se encarga de solicitar los
datos al modelo y de comunicárselos a la vista.

Vistas

Son la representación visual de los datos, todo lo que tenga que ver con la interfaz
gráfica va aquí. Ni el modelo ni el controlador se preocupan de cómo se verán los datos,
esa responsabilidad es únicamente de la vista.

2.6 LENGUAJE DE MODELADO UNIFICADO (UML)


El Lenguaje Unificado de Modelado, según el autor Booch es un lenguaje de modelado
visual de propósito general que se utiliza para especificar, visualizar, construir y
documentar los artefactos de un sistema de software. Se usa para comprender, diseñar,
ojear, configurar, mantener y controlar la información sobre tales sistemas y también
incluye conceptos semánticos, notación y principios generales. Está pensado para ser
apoyado por herramientas de modelado visuales e interactivas que dispongan de
generadores, tanto de código, como de informes.
UML 2.0 realiza muchos cambios sintácticos a UML 1.0, lo bueno es que los principios
fundamentales permanecen más o menos igual, y cuenta con varios tipos de diagramas,
los cuales muestran diferentes aspectos de las entidades representadas.

Para realizar el análisis y diseño de un sistema es conveniente considerar los siguientes


elementos:

2.6.1 Actor
Booch, menciona que un Actor es una idealización de un rol desempañado por una
persona externa, un proceso o cosa que interactúe con el sistema, subsistemas o clase.
Un actor caracteriza la interacción que una clase de usuarios externos puede tener con el
sistema.

Cada actor participa en uno o más casos de uso. Interactúa con el caso de uso (con el
sistema o clase que posee el caso de uso) mediante el intercambio de mensajes.

Y sin embargo para Podeswa, describe al Actor como usuarios y sistemas externos que
van a interactuar con el sistema informático propuesto.

Tanto Booch, consideran al actor como aquel elemento que va a interactuar con el
sistema.

A continuación, se muestra en la figura #11 un ejemplo de un administrador de micro


merado, el cual está reflejado en un actor.
Figura # 10: Actor administrador del sistema

2.6.2 Diagrama de casos de uso


El diagrama de casos de uso se utiliza para la representación de lo que será la
funcionalidad del sistema, así se puede verificar funciona respectivamente como se
describió en el diagrama de casos de uso.

Según Pressman, menciona que el diagrama de casos de uso ayuda a determinar la


funcionalidad y característica del software desde la perspectiva del usuario. Para
proporcionar una aproximación a la manera en la que funcionara el Software. [10]

Sin embargo, el autor Booch dice que lo diagramas de caso de uso modelan la
funcionalidad del Software tal como lo perciben los agentes externos, denominados
actores, que interactúan con el Software desde un punto de visa particular. Un caso de
uso es una unidad de funcionalidad expresada como una transacción entre los actores y
el Software. El comportamiento de los casos de uso se expresa mediante las vistas
dinámicas, especialmente la vista de interacción.

A continuación, en la Figura #12 se muestra los tipos de relaciones que tienen los casos

Figura # 11: Tipos de Relaciones de casos de uso

de uso, que son utilizados.


Luego de conocer los tipos de relaciones para los casos de uso, en la figura #12 se
muestra un diagrama de casos de uso para el ejemplo el administrador del Micro
mercado, que está encargado de gestionar el stock de productos comprados.

Figura #13: Diagrama de caso de uso (ejemplo: control de stock)


2.6.3 Diagrama de colaboración
Shcmulller dice que los diagramas de colaboración son otro tipo de diagramas de
interacción, que contiene la misma información que los diagramas de secuencia, solo
que se centran en las responsabilidades de cada objeto, en lugar del tiempo en que los
mensajes son enviados. También describe en forma de un grafo el comportamiento de
sistemas, subsistemas y operaciones representando los objetos que intervienen, así como
los mensajes que intercambian, enumerados en el tiempo.

Este diagrama es de interacción cuyo objetivo es describir el comportamiento dinámico


del sistema de información mostrando cómo interactúan los objetos entre sí.

El propósito es de:

 Manejar la comunicación entre los elementos del sistema.

 Mostrar cómo será implementada una operación.

 Indicar como deben colaborar los objetos del sistema para llevar a cabo una
operación.

2.6.4 Diagrama de clase


Somerville, afirma que los diagramas de clase pueden usarse cuando se desarrolla un
modelo de sistema orientado a objetos para mostrar las clases en un sistema y las
asociaciones entre dichas clases.

También menciona que, de manera holgada, una clase de objeto se considera como una
definición general de un tipo de objeto del Sistema. Una asociación es un vínculo entre
clases, que indica que hay una relación entre dichas clases. En consecuencia, cada clase
puede tener algún conocimiento de esta clase asociada.

Para el autor Booch el Diagrama de clases es una representación gráfica de la vista


estática que muestra una colección de elementos declarativos (estáticos) del modelo,
como clases, tipos y sus contenidos y relaciones. A demás puede mostrar una vista de un
paquete y puede contener símbolos para los paquetes anidados.
Figura # 12: Diagrama de clase

A continuación, se muestra en la figura #12 un ejemplo de Diagramas de clases.

Las clases se pueden describir con distintos niveles de detalle y de concreción. En las
primeras etapas del diseño, el modelo captura los aspectos más lógicos del problema. En
las últimas etapas, el modelo también captura las decisiones de diseño y los detalles de
implementación.

2.7 HERRAMIENTAS DE DESARROLLO


Al momento de definir software podríamos verlo como una herramienta que nos sirve
para agilizar nuestro trabajo, en los juegos que usamos en Facebook, las aplicaciones de
nuestro smartphone, todo lo que usamos en la computadora fue creado por un equipo de
desarrollo, pequeño, grande, distribuido o local, pero la pregunta que nos plantearemos
es: Que hay detrás de este herramienta, como se construyó esta aplicación Es claro que
hay un gran trabajo detrás de cada botón, detrás de cada información que mandamos a
guardar.
Como todo proyecto el software tiene un ciclo para desarrollarse y consta de una serie de
pasos que se van completando en diferentes tiempo; este ciclo de desarrollo de software
depende directamente de la metodología que utilizamos para este desarrollo, y no es más
que una serie de pasos/tareas que tenemos que seguir como en cualquier otro proyecto,
no hay nada escondido, nada mágico excepto la gran mente del equipo de desarrollo y
las creaciones para tener una experiencia única al utilizar la aplicación o el paquete de
software.

2.7.1 Lenguaje de Programación


Actualmente existen diferentes lenguajes de programación para desarrollar aplicaciones
web, estos han ido surgiendo debido a las tendencias y necesidades de las plataformas.

A continuación, se definirán algunos conceptos de lenguajes de desarrollo de


aplicaciones web.

2.8.1.1 Preprocesador de hipertexto (PHP)


Es un lenguaje de programación de uso general de código del lado del servidor.
Originalmente fue diseñado para el desarrollo Web de contenido dinámico. Esta
actualmente entre los proyectos de código abierto más populares (gracias en parte a la
similitud de su sintaxis con lenguaje C). El código es interpretado por un servidor Web
con un módulo procesador de PHP que genera la página Web resultante.

La palabra “hipertexto” significa que PHP realiza cambios antes de que el contenido
(como la página HTML) es creado. Esto permite a desarrolladores crear potentes
aplicaciones que publiquen blogs, controlen hardware remotamente o ejecuten potentes
sitios Web.

2..8.1.2 Java
El lenguaje de programación en Java es un lenguaje orientada a objeto, de una
plataforma independiente, y tiene muchas similitudes con el lenguaje C y C++.

Es una tecnología similar a los Servlets que ofrece una conveniente forma de agregar
contenido dinámico a un archivo HTML por utilizar código escrito en Java dentro del
archivo utilizando tags especiales que son procesados por el servidor Web antes de
enviarlos al cliente. La posibilidad de usar APIs de Java hacen de JSP una poderosa
herramienta de desarrollo ya que se obtiene la ventaja de la programación orientada al
objeto como creación de clases especiales llamadas componente o Java Beans,
independencia de la plataforma propia de la programación en Java, etc.

2.8.1.3 C#
Microsoft C# es un lenguaje de programación diseñado para crear un amplio número de
aplicaciones empresariales, que se ejecutan en .NET Framework. Supone una evolución
de Microsoft C y Microsoft C++, es sencillo, moderno, proporciona seguridad de tipos y
está orientado a objetos. El código creado mediante C# se compila como código
administrado, lo cual significa que se beneficia de los servicios de Common Language
Runtime. Estos servicios incluyen interoperabilidad entre lenguajes, recolección de
elementos no utilizados, mejora de la seguridad y mayor compatibilidad entre versiones.

C# se presenta como Visual C# en el conjunto de programas Visual Studio .NET Visual


C# utiliza plantillas de proyectos, diseñadores, páginas de propiedades, asistentes de
código, un modelo de objetos y otras características del entorno de desarrollo. La
biblioteca para programar en Visual C# es .NET Framework.

2.8.1.4 Selección de lenguaje de programación


En el presente proyecto, se decidió utilizar el lenguaje de programación PHP, porque su
herramienta de trabajo es sencilla de usar, facilita el uso de diseños e interfaces
dinámicas, también permite el uso de patrones tales como MVC, lo cual ayuda al
sistema con el rendimiento, tiene una estructura de las clases con sus objetos, que se
pueden manejar como clases públicas o privadas, y es completamente compatible con el
gestor de base de datos más popular del desarrollo web MARIADB.

2.7.2 Html5
Definiéndolo de forma sencilla, "HTML es el lenguaje que se utiliza para crear las
páginas web a las que se accede mediante internet". Más concretamente, HTML es el
lenguaje con el que se "escriben" la mayoría de las páginas web.
Los diseñadores utilizan el lenguaje HTML para crear páginas web, los programas que
se emplean generan páginas escritas en HTML y los navegadores que utilizamos (por
ejemplo, Google Chrome, Opera o Mozilla Firefox) muestran las páginas web después
de leer e interpretar su contenido HTML.

Aunque HTML es un lenguaje que utilizan los ordenadores y los programas de diseño de
páginas web, es muy fácil de entender y escribir por parte de las personas. En realidad,
HTML son las siglas de HyperText Markup Language y más adelante se verá el
significado de cada una de estas palabras. El lenguaje HTML es un estándar reconocido
en todo el mundo y cuyas normas define un organismo sin ánimo de lucro llamado
World Wide Web Consortium, más conocido como W3C. Como se trata de un estándar
reconocido por todas las empresas relacionadas con el mundo de internet, una misma
página escrita en HTML se visualizará de forma muy similar en cualquier navegador
bajo distintos sistemas operativos.

El propio W3C define el lenguaje HTML como "un lenguaje reconocido universalmente
y que permite publicar información de forma global". Desde su creación, el lenguaje
HTML ha pasado de ser un lenguaje utilizado exclusivamente para crear documentos
electrónicos a emplearse en diversas aplicaciones electrónicas especializadas como
buscadores, tiendas "en línea" y banca electrónica.

2.7.3 CSS3
El nombre hojas de estilo en cascada viene del inglés Cascading Style Sheets, del que
toma sus siglas. CSS es un lenguaje usado para definir la presentación de un documento
estructurado escrito en HTML o XML (y por extensión en XHTML). El W3C (World
Wide Web Consortium) es el encargado de formular la especificación de las hojas de
estilo que servirán de estándar para los agentes de usuario o navegadores.

La idea que se encuentra detrás del desarrollo de CSS es separar la estructura de un


documento de su presentación.
La información de estilo puede ser adjuntada como un documento separado o en el
mismo documento HTML. En este último caso podrían definirse estilos generales en la
cabecera del documento o en cada etiqueta particular mediante el atributo "<style>".

¿Para qué sirve el css3?

El CSS sirve para definir la estética de un sitio web en un documento externo y eso
mismo permite que modificando ese documento (la hoja CSS) podamos cambiar la
estética entera de un sitio web, el mismo sitio web puede variar totalmente de estética
cambiando solo la CSS, sin tocar para nada los documentos HTML o jsp o asp que lo
componen.

CSS es un lenguaje utilizado para dar estética a un documento HTML (colores, tamaños
de las fuentes, tamaños de elemento, con css podemos establecer diferentes reglas que
indicarán como debe presentarse un documento. Podemos indicar propiedades como el
color, el tamaño de la letra, el tipo de letra, si es negrita, si es itálica, también se puede
dar forma a otras cosas que no sean letras, como colores de fondo de una página,
tamaños de un elemento (por ejemplo, el alto y el ancho de una tabla.

2.7.4 JavaScript
JavaScript un lenguaje de programación que comenzó a ser utilizado para dar
dinamismo a las páginas web, era un lenguaje sencillo. Cuando hablábamos de
JavaScript, hace un par de años pensábamos en usarlo solo para dar efectos a nuestra
web, validar formularios, manipular los elementos HTML y estilos CSS como nosotros
quisiéramos, hoy en día tenemos JavaScript para muchas cosas.

Con JS, podemos desarrollar sitios web, video juegos, aplicaciones de escritorio,
aplicaciones móviles, domótica. Podemos usar JS para abarcar muchas necesidades de
algún desarrollo de software que tengamos en mente.

Cabe mencionar que, Java y JavaScript no es lo mismo. Son dos lenguajes de


programación totalmente diferentes. Además, JavaScript ejecuta código de lado del
cliente, para hacerlo de lado del server hay que usar tecnologías como NodeJS, etc.
¿Cómo funciona JavaScript?

Como ya se mencionó, este lenguaje de programación, función del lado del cliente.
JavaScript sirve especialmente para las mejoras en las interfaces de usuario y, para la
implementación en páginas web dinámicas.

Por otro lado, en el uso de aplicaciones externas como por ejemplo documentos PDF, JS,
es un lenguaje muy importante. Además de lado del servidor, otras tecnologías como
AJAX, permite que se trabaje muy bien.

Lo mejor de todo es que JavaScript en cada uno de estos ambientes sigue siendo el
mismo JavaScript, la sintaxis es la igual implementada en cada ambiente de desarrollo.
Así mismo, JavaScript nos proporciona muchos paradigmas de programación es decir
muchas maneras de escribir código.

2.7.5 Ajax
En la actualidad, la navegación por la red ha cambiado bastante y ahora cuando se
realiza una solicitud, el cliente no debe esperar a que ésta termine para seguir operando,
es decir, se reproduce de manera asíncrona. Es a partir de este concepto de donde nace
las siglas de AJAX, o JavaScript y XML Asíncrono. Con esta tecnología podemos
cargar en segundo plano varias solicitudes, como comentaba, sin que afecten a la
visualización ni comportamiento de la página.

AJAX, la tecnología líder en el front-end web

Antes de indagar un poco más en todo esto, debemos entender cómo funciona la
comunicación entre un cliente y un servidor web. En nuestras máquinas, el navegador
actúa como un cliente en una tienda, haciendo peticiones a quien nos atiende para cubrir
una necesidad que tengamos. El dependiente en cuestión sería el servidor web.
Imaginemos ahora esta situación de un modo más tecnológico y cercano al uso diario.
Tomemos por ejemplo Facebook o Instagram. ¿Lo visualizáis? Bien, como ya sabemos,
en estas redes sociales hay galerías de fotos, las cuales se cargan únicamente en un
porcentaje de su total; en esta situación, sin AJAX, cada vez que queremos ver más
fotos, el servidor debería mandarnos toda la página de nuevo para cargarla en nuestro
navegador. Es evidente que esto es una práctica incorrecta e innecesaria: estamos
solicitando más recursos de los que necesitamos ya que la gran mayoría los tenemos ya
con nosotros. Con AJAX lo que logramos es que se mande únicamente lo que estamos
pidiendo, de forma totalmente independiente al resto de la página, es por eso que
podemos ver cómo se van cargando las fotos a medida que hacemos scroll, por ejemplo.
Esto se observa también con los posts de un blog, y en realidad en cualquier ámbito web
actual.

Sabiendo esto ya podemos comprender qué significa asíncrono, y es que el cliente puede
hacer peticiones al servidor sin necesidad de recargar. Se acabó eso de machacar el F5
para saber si hay cambios nuevos como sucedía antaño. Esto puede ser disparado por un
evento, tal como presionar un botón, pasar el ratón por encima de una miniatura de una
galería, ponernos encima de un texto...lo que nosotros deseemos. Pero ¿necesitamos un
lenguaje para programar esto, ¿verdad? Aquí entra JavaScript, el lenguaje web de moda,
usado para bases de datos, actividad en servidores o realizar peticiones asíncronas. JS
realiza la petición a través de una tecnología llamada XHR, o XMLHttpRequest...vale,
no se ha entendido, ¿verdad? Digamos que es un idioma usado entre JavaScript y el
servidor para indicarle que necesitamos algo. Es por ello por lo que, por lo general,
aparte de nuestro código html, lo tenemos todo bien identificado para poder pasar estos
parámetros a un script que posteriormente realiza los cambios necesarios. Sin este enlace
por identificadores no sería posible hacer todos estos cambios en caliente.

Como podemos observar aquí hay varios agentes involucrados: XML, JavaScript, XHR,
la navegación web por HTML... ¿por qué? AJAX es un conjunto de tecnologías
trabajando de forma cooperativa para hacer las páginas dinámicas, y cualquier web
moderna necesita de ello para operar. Tal es la situación que frameworks de desarrollo
de aplicaciones lo usan, como Apache Córdova, IONIC o incluso Appcelerator. Pensad
que sin las respuestas asíncronas muchas de nuestras operaciones diarias con la
tecnología sería un dolor de cabeza. Imaginad tener que recargar cada vez que hacéis
scroll hasta el final de la página de Facebook...un momento, pero eso ya ocurre en
algunas webs, ¿no? ¿Alguna vez en una tienda online se os ha dividido el stock por
páginas? Eso es debido a que AJAX no está presente para cargar los productos, de lo
contrario podríamos lograr cargar todos los productos a medida que hacemos scroll,
como ocurre con las galerías en Tumblr.

En resumen, si hacemos un poco de sumario nos encontramos que:

 AJAX es un conjunto de tecnologías para el desarrollo web

 Gracias a estas tecnologías somos capaces de solicitar contenido en nuestro


navegador de forma independiente, una vez ya hemos cargado la web

 AJAX es usado, no sólo en navegación de escritorio, también en


frameworks móviles como Córdova

De modo que, si deseamos ser desarrolladores web, AJAX es algo que debemos tener en
nuestro arsenal para poder tener más cartas en nuestra manga a la hora de presentarnos
en alguna empresa.

2.7.6 JQuery
jQuery nos da la posibilidad de añadir funcionalidades complejas y dinamismo a nuestra
web de una manera muy sencilla.

¿Qué es jQuery?

jQuery es una biblioteca de JavaScript, es decir, un conjunto de implementaciones


funcionales ya definidas, desarrolladas y probadas que están listas para utilizar. jQuery
fue creada inicialmente por John Resig y permite simplificar la manera de interactuar
con los documentos HTML. En otras palabras, con las funciones propias de jQuery, al
igual que con otras bibliotecas, se logran grandes resultados en menos tiempo y espacio.

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 v2, permitiendo su uso en
proyectos libres y privativos.

¿Qué puedo hacer con jQuery?


jQuery nos permite agregar efectos y funcionalidades complejas a nuestras aplicaciones
web. A través de esta maravillosa librería de JavaScript podemos ocular, mostrar,
arrastrar y hacer prácticamente lo que deseemos con los elementos DOM de nuestra
página web, así como sus especificaciones CSS. Algunas aplicaciones comunes de
JavaScript son: galerías de fotos dinámicas, validación de formularios, calendarios y en
general, multitud de efectos dinámicos. Además de todo esto, nos permite trabajar con
AJAX de forma sencilla y también permite agregar nuevas funciones a través de plugins,
facilitando su ampliación.

¿Por qué utilizar jQuery?

jQuery es una librería ampliamente utilizada, con una gran aceptación y con una gran
comunidad de usuarios activos. Esto permite que exista un gran soporte y mucha
información sobre la misma. Además, esa amplia comunidad hace que haya muchos
desarrolladores dedicados a la creación de plugins para esta librearía, los que nos
permitirá añadir funcionalidades como galerías dinámicas, calendarios, sistemas de
votación y muchas otras de forma sencilla.

Otra razón importante es que es gratuita y de código abierto, con lo que puede ser
modificada y adaptada a nuestras necesidades, siempre teniendo en cuenta y respetando
las políticas de las licencias.

2.8.7 Xampp

XAMPP es un servidor independiente de plataforma de código libre. Te permite instalar


de forma sencilla Apache en tu propio ordenador, sin importar tu sistema operativo
(Linux, Windows, MAC o Solaris). Y lo mejor de todo es que su uso es gratuito.

XAMPP incluye además servidores de bases de datos como MySQL y SQLite con sus
respectivos gestores phpMyAdmin y phpSQLiteAdmin. Incorpora también el intérprete
de PHP, el intérprete de Perl, servidores de FTP como ProFTPD o FileZilla FTP Serve,
etc. entre muchas cosas más.
Si alguna vez has intentado instalar Apache, sabes que no es una tarea fácil, sin
embargo, con XAMPP todo es diferente. Una de las ventajas de usar XAMPP es que su
instalación es de lo más sencilla, basta descargarlo, extraerlo y comenzar a usarlo.

¿Para qué sirve?

Como ya lo debes haber deducido, XAMPP es una herramienta de desarrollo que te


permite probar tu trabajo (páginas web o programación, por ejemplo) en tu propio
ordenador sin necesidad de tener que accesar a internet.

Si eres un desarrollador que recién está comenzando, tampoco debes preocuparte sobre
las configuraciones ya que XAMPP te provee de una configuración totalmente funcional
desde el momento que lo instalas (básicamente lo extraes). Sin embargo, es bueno acotar
que la seguridad de datos no es su punto fuerte, por lo cual no es suficientemente seguro
para ambientes grandes o de producción.

Paquetes que vienen con XAMPP

Paquetes básicos:

 Apache, el servidor Web más famoso.

 MySQL, una excelente base de datos de código libre.

 PHP y Perl: lenguajes de programación.

 ProFTPD: un servidor FTP..

 OpenSSL: para soporte a la capa de sockets segura.

2.7.8 Bootstrap
Es un framework desarrollado y liberado por Twitter que tiene como objetivo facilitar el
diseño web. Permite crear de forma sencilla webs de diseño adaptable, es decir, que se
ajusten a cualquier dispositivo y tamaño de pantalla y siempre se vean igual de bien. Es
Open Source o código abierto, por lo que lo podemos usar de forma gratuita y sin
restricciones.
¿Por qué nos gusta?

Pues porque el resultado gusta a clientes/as y usuarios/as, ni más ni menos. A la gran


mayoría de personas que nos contratan les preocupa que visitar su web sea una
experiencia agradable y atractiva, sea desde un ordenador o desde un móvil o tableta.
Con Bootstrap se consigue esto, además de que la carga de la web sea rápida y que la
navegación sea fluida e intuitiva. Además, facilita mucho la construcción de una página,
que siempre viene bien.

Ventajas de usar Bootstrap

La más genérica es que permite simplificar el proceso de maquetación, sirviéndonos de


guía para aplicar las buenas prácticas y los diferentes estándares. Aquí van unos cuantos
pros más:

 Puedes tener una web bien organizada de forma visual rápidamente: la curva de
aprendizaje hace que su manejo sea asequible y rápido si ya sabes maquetar.

 Permite utilizar muchos elementos web: desde iconos a desplegables, combinando


HTML5, CSS y JavaScript.

 Sea lo que sea que creemos, el diseño será adaptable, no importa el dispositivo, la
escala o resolución.

 El grid system: maquetar por columnas nunca fue tan fácil. Además, son muy
configurables.

 Se integra muy bien con las principales librerías Javascript.

 El haber sido creado por Twitter nos da ciertas garantías: está muy pensado y hay
mucho trabajo ya hecho. Por lo tanto, hay una comunidad muy activa creando,
arreglando cosas, ofreciendo plugins y mucho más...

 Cuenta con implementaciones externas para WordPress, Drupal, etc.

 Nos permite usar Less, para enriquecer aún más los estilos de la web.
2.7.9 Plantilla Admin LTE
Se que la mayoría de los desarrolladores web en algún momento necesita algún tipo de
template para un dashboard o un sistema de gestión que esté basado en bootstrap y sobre
todo que sea gratuito y sin restricciones de ningún tipo. Bueno en esta ocasión te
presento un template que me ha gustado mucho y no sólo por el diseño que está bastante
agradable, sino porque contiene muchas características importantes y que siempre
buscamos.

El template es AdminLTE y cuenta con las siguientes características:

1. Licenciamiento

Esta es una de las mejores características ya que como lo menciona en su


documentación, el proyecto es open source y está disponible bajo la licencia MIT lo que
te permite hacer casi cualquier cosa como por ejemplo modificarlo, usarlo para fines
comerciales, etc., claro está que es deseable que se mencione la atribución al que lo
desarrolló. Este tipo de licencia es la misma utilizada por grandes proyectos open source
como JQuery, Angularjs, etc.

2. Archivos fuente.

Algo sumamente interesante es que el template nos ofrece la descarga con los archivos
fuente, esto significa que tendremos disponible los archivos LESS para que podamos
modificar el diseño de forma estructurada y ordenada. La carpeta que se descarga
contiene el siguiente árbol de archivos.

3. Skins.

El template viene con la posibilidad de utilizar 12 tipos de skins, lo cual nos permitirá
customizar de forma rápida con estilos predeterminados.

Los skins son:

 skin-blue

 skin-blue-light
 skin-yellow

 skin-yellow-light

 skin-green

 skin-green-light

 skin-purple

 skin-purple-light

 skin-red

 skin-red-light

 skin-black

 skin-black-light

4. Basado en bootsrap.

¿Quién no conoce bootstrap? creo que está demás explicar la ventaja de este punto, sin
embargo, hago la mención ya que vale la pena que sepas que está basado en el sistema
de grid que maneja Bootstrap y todos sus componentes, estilos y js.

La versión de Bootstrap que utiliza es la 3, si aún no conoces este maravilloso


framework de diseño puedes darte una vuelta por su sitio oficial.

5. Plugins precargados.

Este template contiene una serie de plugins js ya "precargados" que puedes utilizar desde
que descargas, eso nos reduce el tiempo de búsqueda de plugins para acciones genéricas
como validaciones de formularios, calendario, etc.

6. Documentación.
AdminLTE contiene una documentación bastante buena en donde te explica de forma
detallada cómo empezar y cómo hacer las configuraciones necesarias para que puedas
implementar en tu sitio.

7. Ejemplos

AdminLTE nos ofrece muchos HTML de ejemplo que se descargan junto con la plantilla
así que podrás ver como se utilizan todos los plugins que trae y además de que puedes
tomarlos como ejemplo para aprender a maquetar con Bootstrap.

Para mí AdminLTE es uno de los mejores templetes open source que he probado ya que
te da mucha flexibilidad en cuanto a personalización y sobre todo por que integra la
tecnología LESS que permite tener todo el estilo en orden y sobre todo permite agilizar
cualquier cambio que se requiera.

2.7.10 Xampp
Xampp es un paquete de instalación de software libre que consiste en un sistema de
gestión de base de datos MARIADB y de servidor Apache, así como de intérpretes de
lenguajes PHP y Perl. De ahí que el nombre sea un acrónimo de X (refiriéndose a todos
los lenguajes), Apache, MariaDB, PHP y Perl.

Xampp es un servidor independiente de plataforma de código libre. Te permite instalar


de forma sencilla Apache en tu propio ordenador, sin importar tu sistema operativo
(Linux, Windows, MAC o Solaris). Y lo mejor de todo es que su uso es gratuito.

Si alguna vez has intentado instalar Apache, sabes que no es una tarea fácil, sin
embargo, con XAMPP todo es diferente. Una de las ventajas de usar XAMPP es que su
instalación es de lo más sencilla, basta descargarlo, extraerlo y comenzar a usarlo.

¿Para qué sirve?

Xampp es una herramienta de desarrollo que te permite probar tu trabajo (páginas web o
programación, por ejemplo) en tu propio ordenador sin necesidad de tener que acceder a
internet.
En resumen, es una herramienta idónea para convertir nuestro pc en un servidor Apache
y MariaDB, convirtiendo nuestro equipo en un componente perfecto para el desarrollo
de páginas web, o para la ejecución de cualquier software que requiera cualquiera de los
componentes mencionados en las líneas anteriores.

El programa está liberado bajo la licencia GNU y actúa como un servidor Web libre,
fácil de usar y capaz de interpretar páginas dinámicas.

Paquetes que vienen con XAMPP

Paquetes básicos:

Apache, el servidor Web más famoso.

MariaDB, una excelente base de datos de código libre.

PHP y Perl: lenguajes de programación.

ProFTPD: un servidor FTP.

OpenSSL: para soporte a la capa de sockets segura.

Paquetes gráficos:

GD (Graphics Draw): la librería de dibujo de

gráficos. libpng: la librería oficial de referencia de

PNG. libpeg: la librería oficial de referencia de JPEG.

ncurses: la librería de gráficos de caracteres.

Paquete de bases de datos:

gdbm: la implementación GNU de la librería standard dbm de UNIX.

SQLite: un motor de base de datos SQL muy pequeño y cero configuraciones.

FreeTDS: una librería de base de datos que da a los programas de Linux y UNIX la
habilidad de comunicarse con Microsoft SQL y Sybase.
Paquetes XML:

expat: una librería parser de XML.

Salbotron: una toolkit de XML.

libxml: un parser C de XML y un toolkit para GNOME.

Paquetes PHP:

PEAR: la librería de PHP.

Una clase pdf que genera documentos PDF dinámicos con

PHP. TURCK MMCache: un potenciador de la performance de

PHP. Otros paquetes:

zlib: una librería de compresión.

mod_perl: empotra un intérprete de Perl en Apache.

gettext: un conjunto de herramientas que asiste a los paquetes GNU para producir
mensajes multilinguales.

mcrypt: un programa de encriptación.

Ming: una librería de salida en Flash.

2.8 SISTEMA DE GESTOR DE BASE DE DATOS


Un Sistema de Gestión de Bases de Datos (SGBD) o DBMS (Data Base Management
System) es una colección de programas cuyo objetivo es servir entre la base de datos, el
usuario y las aplicaciones.

Se compone de un lenguaje de consulta, Un SGBD permiten definir los datos a distintos


niveles de abstracción y manipular dichos datos, garantizando la seguridad e integridad
de los mismo.
Un SGBD permite:

 Definir una base de datos: especificar tipos estructuras y restricciones de datos.

 Construir la base de datos: guardar los datos en algún medio controlado por el
mismo SGBD.

 Manipular la base de datos: realizar consultas, actualizarla, generar informes.

2.8.1 Gestores de base de datos lado del servidor


A continuación, se describen tres diferentes gestores de base de datos lado del servidor:

 DBMS MARIADB

¿Qué es MariaDB?

MariaDB es un sistema gestor de bases de datos (SGBD), es decir, un conjunto de


programas que permiten modificar, almacenar, y extraer información de una base de
datos. Disponiendo de otro tipo de funcionalidades como la administración de usuarios,
y recuperación de la información si el sistema se corrompe, entre otras.

MariaDB surge a raíz de la compra, de la compañía desarrolladora de otro (SGBD)


llamado MySQL, por la empresa Sun Microsystems. El desarrollador original, decide
tomar el código fuente original de MySQL y genera un derivado con mejoras y cambios
a los que llama MariaDB. Permitiendo así la existencia de una versión de este producto
con licencia GPL (General Public License).

¿Mejoras de MariaDB sobre MySQL?

Estas son las mejoras que añade MariaDB sobre MySQL:

Mecanismos de almacenamiento

Amplian los paquetes binarios y fuentes, no solo con los mecanismos de


almacenamiento standard (CSV, Blackhole, MyISAM …) sino que añade los siguientes:
 Aria (alternativa a MyISAM resistente a caídas)

 XtraDB (reemplazo directo de InnoDB)

 PBXT (en MariaDB 5.1, 5.2 y 5.3. Deshabilitada en 5.5)

 FederatedX (reemplazo directo de Federated)

 OQGRAPH (nuevo en 5.2)

 SphinxSE (nuevo en 5.2)

 IBMDB2I Eliminada por Oracle de MySQL 5.1.55 pero se incluye en el código


de MariaDB hasta la versión 5.5.

 TokuDB (Motor de almacenamiento de alto rendimiento basado en indexación


de árboles fractales).

 Cassandra, en MariaDB 10.0 (otros mecanismos no-sql se incluirán en


MariaDB)

 CONNECT (MariaDB 10.0)

 Sequence (10.0.3)

 Spider (MariaDB 10.0)

Mejoras de velocidad

Se completan mejoras que aumentan la velocidad y el rendimiento, eliminando


conversiones de caracteres innecesarias, uso del motor Aria que permite hacer consultas
complejas con mayor rapidez. Mejoras sobre la tabla de chequeo de redundancia,
replicación más rápida y segura.

Mejoras en las pruebas

Reducen en la medida de lo posible el número de alertas del compilador y también


mejoran el código de programación evitando introducción de nuevos errores o bugs.

Facilidad de uso
Mejora la facilidad de uso e introduce actualizaciones del progreso en acciones como
ALTER TABLE y LOAD DATA INFILE. Comandos como FLUSH y SHOW disponen
de opciones para identificar la causa en la carga del SGBD. Y columnas dinámicas, que
proporcionan al usuario columnas virtuales en las tablas.

 DBMS PostgreSQL

PostgreSQL es una de las opciones más interesantes en bases de datos relacionales open-
source. Michael Stonebraker inició el proyecto bajo el nombre Post Ingres a mediados
de los 80’s con la idea de solucionar problemas existentes en las bases de datos en esa
época.

Es gratuito y libre, además de que hoy nos ofrece una gran cantidad de opciones
avanzadas. De hecho, es considerado el motor de base de datos más avanzado en la
actualidad.

Una característica interesante de PostgreSQL es el control de concurrencias


multiversión; o MVCC por sus siglas en inglés. Este método agrega una imagen del
estado de la base de datos a cada transacción. Esto nos permite hacer transacciones
eventualmente consistentes, ofreciéndonos grandes ventajas en el rendimiento.

En Postgres no se requiere usar bloqueos de lectura al realizar una transacción lo que nos
brinda una mayor escalabilidad. También PostgreSQL tiene Hot-Standby. Este permite
que los clientes hagan búsquedas (sólo de lectura) en los servidores mientras están en
modo de recuperación o espera. Así podemos hacer tareas de mantenimiento o
recuperación sin bloquear completamente el sistema.

PostgreSQL aporta mucha flexibilidad a nuestros proyectos. Por ejemplo, nos permite
definir funciones personalizadas por medio de varios lenguajes. Algunos son:

 PL/pgSQL

 PL/Tcl

 PL/Perl
 PL/Python

 PL/PHP

 PL/Ruby

 PL/Java

Otra ventaja de PostgreSQL es que está disponible para muchas plataformas y ofrece el
código fuente desde el sitio oficial. Algunos de los builds oficiales son:

 Mac OS X

 Windows

 Solaris

 Red Hat

 Debian

 Ubuntu

pgAdmin es la herramienta oficial para administrar nuestras bases de datos en


PostgreSQL. Nos permite desde hacer búsquedas SQL hasta desarrollar toda nuestra
base de datos de forma muy fácil e intuitiva; directamente desde la interfaz gráfica.

Una herramienta muy útil de pgAdmin es el Query Tool. Este te permite ejecutar
comandos SQL y además nos da la opción de analizar nuestra base de datos de forma
gráfica.

 DBMS SQL Server

Microsoft SQL Server es un sistema de manejo de bases de datos relacionales que le


permitirá programar en entornos híbridos, ya sea de forma local o en la nube de
Microsoft. En combinación con Microsoft Azuze, los elementos incorporados a SQL
Server le proporcionan una fácil creación de soluciones ante problemas con las
revisiones, los desastres y las copias de seguridad. Podrá, además, transferir bases de
datos de una forma muy sencilla e intuitiva entre su entorno local y la nube.

Es considerada como una de las bases de datos más seguras del mundo, por no decir la
mejor, y su sistema de almacenamiento permite un rendimiento en las consultas muy
superior al habitual. Todos los procesos de análisis, consulta, limpieza, formateo de
datos y acceso se realizan a una velocidad que le sorprenderá.

La edición Enterprise le permitirá aprovechar absolutamente todas las ventajas de la


herramienta. Tendrá acceso a todas las funcionalidades del centro de datos, pudiendo
satisfacer así los requisitos de cualquier base de datos.

Si adquiere la edición Business Intelligence, su organización podrá compilar e


implementar soluciones corporativas seguras, escalables y administrables.

Con la edición Standard podrá cubrir todas las necesidades que surjan al trabajar en un
servidor con menos prestaciones. Tendrá acceso a las funciones Business Intelligence y
a una administración de datos básica, que requieran de pocos recursos TI.

También dispondrá de una edición gratuita, llamada Express. Con ella podrá desarrollar
e impulsar aplicaciones de web y de escritorio, así como otras sencillas de servidor.

Funciones de Microsoft SQL Server

Entre otras, podrá encontrar las siguientes:

 Respaldos y recuperaciones: se pueden configurar de antemano, lo que provoca


que se ejecuten y lleven a cabo de forma sencilla.

 Compresión: compresión extrema de tablas e índices. Ahorro.

 Alta disponibilidad: el tiempo de inactividad causado por actualizaciones y


revisiones desaparece o se minimiza, a fin de garantizar una disponibilidad casi
permanente, exigida por el modelo de negocio global que impera hoy en día. Dichas
disponibilidades y estados de mantenimiento de las bases de datos se podrán
comprobar de forma sencilla con un panel muy visual.
 Programar tareas: con antelación se pueden programar tareas, que se ejecutarán
automáticamente.

Características principales de Microsoft SQL Server

 Rendimiento mejorado gracias a la funcionalidad in-memory para procesamiento


de transacciones y mejoras del almacenamiento de datos.

 Certificación SAP, lo que garantiza éxito en el trabajo con cargas muy pesadas.

 Tiempo de disponibilidad muy elevado y posibilidad de hacerlo en un entorno


híbrido con máquinas virtuales de Microsoft Azure.

 Cifrado de datos transparente, auditorías, administración de claves extensibles y


copias de seguridad cifradas para proteger así los datos en las cargas de trabajo
críticas.

 Máxima flexibilidad para que pueda trabajar tanto en la nube como en un entorno
local. El paso de uno a otro se da de una manera realmente sencilla, para que
pueda aprovechar todas las ventajas de ambos ámbitos de trabajo.

Además de las comentadas, Microsoft SQL Server dispone de un sinfín de


peculiaridades que lo convierten en el sistema de gestión de bases de datos más seguro y
potente del mundo.

2.8.2 Selección de DBMS para el sistema


En el presente proyecto se utiliza como gestor de base de datos MARIADB. Por qué
permite trabajar cómodamente con el lenguaje de programación seleccionado PHP y
además que ofrece una comunicación de Cliente/Servidor, presentando mejoras de
velocidad sobre todo en consultas complejas cuando se usa el motor de almacenamiento
Aria, ya que Aria cachea los datos de tablas temporales en memoria, lo que supone un
rendimiento frente al uso del disco duro (que es lo que emplea MyISAM).

Se añaden nuevas tablas de sistema (INFORMATION_SCHEMA) para almacenar


estadísticas que nos pueden ayudar a optimizar las bases de datos.
El sistema para manejar las conexiones se ha mejorado, ya que implementa el sistema
pool-of-threads de MySQL 6.0 con el que podemos tener más de 200.000 conexiones a
MariaDB.

En general cumple con los requerimientos para mejorar el rendimiento, velocidad e


incluso implementar características nuevas.

2.9 ENTORNO DE DESARROLLO (IDE)


La programación es un animal extraño. El código, los símbolos e instrucciones que
dictan cómo se va a comportar una máquina al ejecutar un programa, puede ser un dolor
de cabeza para cualquiera que no tenga conocimientos y se enfrente a un fragmento
cualquiera. Puede serlo hasta para los programadores experimentados (esa fea costumbre
de no comentar el código...).

Preparar el código de forma correcta para ejecutarlo en un entorno seguro requiere de un


ritual propio. Los sistemas operativos ya cuentan con editores de texto preinstalados,
pero sus capacidades son muy limitadas. Es importante tener claro que elegir un editor
adecuado es crucial a la hora de programar, así como que no todos son aconsejables para
todos los niveles.

Aun así, el mundo de los editores de texto es una enorme jungla. Algunos cuentan con
interfaces gráficas elaboradas, que resultan más intuitivas y que permiten trabajar en
grandes proyectos (aquí entrarían los grandes entornos de desarrollo integrado o IDEs).
Por otra parte, hay otros que son minimalistas y básicos en su concepción, que
recompensarán a aquellos que tengan la paciencia de vérselas con una curva de
aprendizaje elevada.

Algunos de estos editores están dirigidos a plataformas y lenguajes específicos (como


por ejemplo Swift e iOS), mientras que otros tienen un propósito más general cuyas
funcionalidades se pueden ampliar mediante plugins que aumentan su capacidad de
trabajo.

A continuación, se dará a conocer algunos entornos de desarrollo y editores de textos


sofisticados de entre las cuales se optará por uno para realizar este proyecto.
2.9.1 NetBeans
Miles de programadores coinciden en destacar a NetBeans como el mejor IDE para
PHP. Tiene un gran número de funciones, es gratuito y tiene soporte para idiomas como
el inglés, el japonés, el ruso, el portugués brasileño y el chino simplificado. La versión
gratuita de NetBeans data del año 2010, después de que Sun Microsystems, la lanzara en
código abierto. Cuenta con una de las mayores comunidades de desarrolladores que
trabajan en un entorno de desarrollo integrado de código abierto. Cabe destacar que se
puede utilizar con frameworks como Zend, Doctrine, Smarty y Symfony2. Algunas de
las características principales son las plantillas de código, el autocompletado inteligente,
sugerencias, arreglos rápidos y refactorización.

2.9.2 PHPStorm
Si no es considerado el número 1 de la lista es principalmente porque muchas de sus
utilidades son de pago. La versión gratuita, aun así, es una herramienta con enorme
potencial. Desarrollado por JetBrains, PHPStorm funciona muy bien con los principales
frameworks (Symfony, Zend Framework, Yii, CakePHP, Laravel) y con los principales
sistemas CMS como Drupal, Magento y Wordpress. Pero no solo destaca en la parte
back. Este IDE ofrece edición en directo con tecnologías como CSS, HTML5,
JavaScript o TypeScript. La popularidad de PHPStorm se puede medir por el hecho de
que grandes marcas como Expedia, Yahoo, Cisco, Salesforce y wikipedia también
utilizan PHPStorm como su editor de código.

2.9.3 Eclipse
Eclipse PDT (PHP Development Tools) es otra de las opciones open source con mayor
recorrido y fiabilidad. Posee una enorme comunidad de desarrolladores que trabajan en
todo tipo de plugins necesarios para poner a Eclipse a la altura de otros IDE de primera
clase como PHPStorms, NetBeans y Zend studio. La configuración inicial no es sencilla,
por lo que habrá que dedicarle tiempo para configurarlo al gusto de cada usuario. Como
aspecto negativo, hay que destacar que algunos desarrolladores se quejan de que es
lento. Sin embargo, esto ha dejado de ser un problema, ya que los ordenadores con los
que se trabaja en estos días son suficientemente potentes como para no notar diferencia
de rendimiento con otros IDE’s. Algunas de las características clave incluyen el
resaltado de sintaxis, ayuda de código, formateador de código, refactorización, plantillas

de código, navegación de código, depuración de PHP, validación de sintaxis, además de

Figura # 13: Sublime Text 3

la gran comunidad de usuarios.

2.9.4 Atom
La gran sorpresa de los últimos tiempos y el editor favorito para cada vez más usuarios.
Su diseño sencillo y su gran potencial hace que el IDE de Github vaya ganando adeptos
a pasos agigantados. Cuenta con una gran comunidad detrás de él y cientos de
complementos y paquetes disponibles para ampliar su funcionalidad. Atom es hackable,
por lo que lo puedes convertir en tu editor perfecto gracias a la capacidad de
personalización. Para convertir Atom en un verdadero editor de PHP, puedes buscar los
hyperclick-php, php-cs-fixer, php-integrador-base, linter-php, atom-autocomplete-php,
entre otros.

2.9.5 Sublime Text 3


Un editor todoterreno que no debe faltar en el disco duro del ordenador de un
programador es Sublime Text 3. Este IDE soporta una enorme cantidad de lenguajes y
tiene gran capacidad de adaptación a cada uno de ellos. Es ligero, cuenta con multitud de
funciones y es compatible con Windows, OSX y Linux. Su principal poder reside en la
potencia de sus plugins y paquetes. Actualmente cuenta con muchos paquetes de PHP
disponibles que ayudan a transformar este elegante editor en un gran Sublime PHP IDE.
Algunos de los paquetes más útiles y notables para este propósito incluyen el control de
paquetes, el cliente xDebug, el CodeBug, PHPCS, CodIntel, Simple PHPUnit y
PHPDoc. Una vez configurado para PHP, Sublime Text 3 no tiene nada que envidiar a
editores incluso con versiones de pago.

Sublime Text es un editor de código multiplataforma, ligero y con pocas concesiones a


las florituras. Es una herramienta concebida para programar sin distracciones. Su
interfaz de color oscuro y la riqueza de coloreado de la sintaxis, centra nuestra atención
completamente.

Sublime Text permite tener varios documentos abiertos mediante pestañas, e incluso
emplear varios paneles para aquellos que utilicen más de un monitor. Dispone de modo
de pantalla completa, para aprovechar al máximo el espacio visual disponible de la
pantalla.

El programa cuenta “de serie” con 22 combinaciones de color posibles, aunque se


pueden conseguir más. Para navegar por el código cuenta con Minimap, un panel que
permite moverse por el código de forma rápida.

El sistema de resaltado de sintaxis de Sublime Text soporta un gran número de lenguajes


(C, C++, C#, CSS, D, Erlang, HTML, Groovy, Haskell, HTML, Java, JavaScript,
LaTeX, Lisp, Lua, Markdown, Matlab, OCaml, Perl, PHP, Python, R, Ruby, SQL, TCL,
Textile and XML).

El programa dispone de autoguardado, muchas opciones de personalización, cuenta con


un buen número de herramientas para la edición del código y automatización de tareas.
Soporta macros, Snippets y auto completar, entre otras funcionalidades. Algunas de sus
características son ampliables mediante plugins.

Sublime Text es un programa de pago, aunque se puede descargar una versión de


prueba, plenamente funcional y sin limitación de tiempo. La licencia individual cuesta
59 dólares. Cada programador es un pequeño maniático con sus credos y sus fobias
respecto de las herramientas que emplea, pero si lo que quieres es centrarte únicamente
en el código, tal vez deberías probar Sublime Text. La aplicación está disponible para
OS X, Linux y Windows.

2.9.6 Selección del Entorno de Desarrollo (IDE)


Como podemos apreciar existen diferentes entornos de desarrollo y editores de texto que
muy fácilmente pueden acomodarse al proyecto, pero cada uno tiene herramientas
diferentes, unos mejores que otros eso está claro y no por ello son menos importantes.

En el presente proyecto se utiliza como entorno de desarrollo Sublime Text 3. Porque es


entorno de desarrollo multiplataforma y gratuito, de esta manera se puede trabajar en
cualquier sistema operativo, es muy ligero lo cual lo hace muy manejable y ejecutable en
cualquier ordenador con un hardware básico, es escalable mediante plugins lo cual hace
que nunca hagas falta de otros editores, es totalmente personalizable ya que Sublime
Text pone a disposición del cliente los archivos de configuración del editor, de tal forma
que si lo deseas, puedes utilizar Python para programar diferentes funciones en la capa
de lógica o presentación del programa y por ultimo cuenta con una gran comunidad que
constantemente están creando nuevos plugins que seguramente serán muy útiles para el
desarrollo.
CAPÍTULO III
MARCO PRÁCTICO
3.1 MODELADO DE NEGOCIO
El modelado de Negocio presenta los procesos actual y alternativo, en la cual se muestra
todo el proceso que realiza la ferretería actualmente para poder vender sus productos al
cliente, de la misma manera se presenta el proceso que la ferretería realiza las ventas con
la implantación del sistema de control de stock compras y ventas, de tal manera que la
ferretería sea la parte que se lleve el beneficio de poder automatizar sus tareas.

3.1.1 Modelado de Negocio Actual


Para poder comprender y apreciar el proceso de negocio, la forma de trabajo que
actualmente se desarrolla dentro de la ferretería, se utilizará diagramas de flujo por lo
cual se puede apreciar la secuencia de acciones empleadas, en el proceso de las
diferentes actividades realizado por los encargados o responsables dentro del negocio.

A continuación, como se muestra en la figura #14 se dará a conocer el modelado de


negocio actual de los procesos que se realiza dentro de la ferretería.
Figura # 14: Modelado de Negocio Actual

3.1.2 Modelado de Negocio Alternativo


Una vez presentado el análisis del proceso actual de la ferretería en cuanto a la gestión
de sus productos, a través de la entrevista del con el personal involucrado, se propone el
proceso del modelado de negocio alternativo, el cual realiza nuevos procedimientos con
el uso del sistema.

Para una mejor gestión de de la ferretería, el sistema agilizara y automatizara todas las
tareas que se presentan dentro del negocio.
Figura # 15: Modelado de Negocio Alternativo
3.2 DESARROLLO DEL PROYECTO
3.2.1 Método Iterativo e Incremental
3.2.1.1 Primer Incremento
Para el desarrollo del primer incremento o iteración se determinaron las siguientes
tareas:

 Diseño e implementación de la base de datos en donde se guardarán todos los

Figura # 16: Base de Datos Relacional del Sistema

datos de los módulos existentes del sistema.


 Gestión del módulo de Categorías para poder listar categorías, crear nuevas
categorías, actualizar y eliminarlas.

Figura # 17: Listado de Categorías

Figura # 18: Nueva Categoría


 Gestión del módulo de Categorías para poder listar artículos, crear nuevos

Figura # 19: Listado de Artículos

77
artículos, actualizarlas y eliminarlas.

Figura # 20: Nuevo Artículo

3.1.1.2 Segundo Incremento


Para el desarrollo del segundo incremento o iteración se determinaron las siguientes
tareas:

 Gestión del módulo de compras para poder listar las compras, crear nuevas
compras, visualizarlas y anularlas.

78
Figura # 21: Listado de compras

Figura # 22: Nueva Compra

 Gestión del módulo de proveedores para poder listar los proveedores, crear
nuevos proveedores, actualizarlas y eliminarlas.

79
Figura # 23: Listado de Proveedores
Figura # 24: Nuevo Proveedor

Figura # 25: Nuevo Proveedor Registrado


3.1.1.2 Tercer Incremento
Para el desarrollo del tercer incremento o iteración se determinaron las
siguientes tareas:

 Gestión del módulo de usuarios para poder gestionar los accesos y permisos de
usuario, realizando el listado de usuarios, crear nuevos usuarios, actualizarlas y
eliminarlas.

Figura # 26: Listado de usuarios


Figura # 27: Nuevo Usuario

Figura # 28: Nuevo Usuario Registrado

83
 Gestión del acceso de usuarios al sistema, verificando los permisos y los tipos
de roles que existen, con los cuales se realizará el Inicio de Sesión.

Figura # 29: Inicio de Sesión

84
BIBLIOGRAFÍA
Abrue, J. L. (Diciembre 2014). El Método de la Investigación.

Booch, G., & Jacobson, I. (2004). El Lenguaje Unificado de Modelado.

Fárias Paracín, J. L., & Honores, S. E. (2017). Metodología de Desarrollo de Software.


Chimbote.

Ríos, S. S. (2011). Metodología de Analisis y Diseño - Modelado de Negocio.

Sommerville, I. (2005). Ingeniería de Software. Madrid: Pearson.

Tapias, D. (2014). Proyectos de Desarrollo de Software. Madrid.

valdecantos, H. A. (2010). Principios y patrones de diseño de software Modelo Vista


Controlador (MVC).

Velasco Elizondo, P. (2015). Arquitectura de Software: Conceptos y ciclos de


Desarrollo. Zacatecas.

BIBLIOGRAFÍA WEB
Albert Miró. (2017). JavaScript asíncrono y XML (AJAX). Deusto Formación.

Recuperado de https://www.deustoformacion.com/blog/programacion-diseno-

web/que-es-para-que-sirve-ajax

Cacharreros de la web. Lenguaje de Programación JavaScript. Recuperado de

https://cacharrerosdelaweb.com/2018/02/que-es-javascript-y-para-que-

sirve.html
Carlos Costa. (2013). Librería JQuery. Agencia la nave. Recuperado de

https://blog.agencialanave.com/jquery-que-es-y-para-que-sirve/

F. Manuel. (2012). Editor de Código Sublime Text 3. Gembeta. Recuperado de

https://www.genbeta.com/herramientas/sublime-text-un-sofisticado-editor-de-

codigo-multiplataforma

Mantenimiento de una PC. (2011). Servidor XAMPP. Recuperado de

https://mantenimientosdeunapc.blogspot.com/2011/11/que-es-xampp-y-

para- que-sirve.html

María F. (2016). Framework de Diseño Web Bootstrap. Punto Abierto. Recuperado de

https://puntoabierto.net/blog/que-es-bootstrap-y-cuales-son-sus-ventajas

MetoDeLaInv, (2014). Técnicas De Recolección De Información. Recuperado de


http://metodelainv.blogspot.es/

Obs-edu. Metodologías de Desarrollo de Software. Recuperado de https://www.obs-

edu.com/es/blog-project-management/metodologia-agile/que-son-las-

metodologias-de-desarrollo-de-software

Roberth Figueroa. (2017). Metodologías Tradicionales y Agiles. ResearchGate.

https://www.researchgate.net/publication/299506242_METODOLOGIAS_TRA

DICIONALES_VS_METODOLOGIAS_AGILES

Sergio Agudo. (2017). Genbeta. Entornos De Desarrollo de Software. Recuperado de

https://www.genbeta.com/a-fondo/ides-y-editores-que-diferencias-hay-entre-

ellos-a-la-hora-de-escribir-codigo
Sergio Ríos. (2011). Modelado De Negocio (BPMN). SlideShare. Recuperado de
https://www.slideshare.net/SergioRios/unidad-3-modelo-de-negocio

Soporte Nerion. Gestor de Base de Datos Relacional MariaDB. Recuperado de

https://www.nerion.es/soporte/tutoriales/que-es-mariadb-y-mejoras-sobre-mysql/

Ubscode. Código De Barras. Recuperado de https://www.ubscode.com/es-mx/how-to-do-

it/6/codigos-de-barras

Uriel Hernández. (2015). Patrón de Arquitectura Modelo Vista Controlador (MVC).

Codigofacilito. Recuperado de https://codigofacilito.com/articulos/mvc-model-

view-controller-explicado
ANEXOS
ENTREVISTA

Entrevistada: Sra. Odalis Ardaya

Cargo: Administradora de la ferretería Ardaya

Lugar: Ambientes de la ferretería Ardaya

OBJETIVO:

La presente entrevista tiene como objetivo conocer de parte del propietario de la


Ferretería “Ardaya”, cuales son los mecanismos y procedimientos del manejo de
información durante el proceso de control de stock, compras y ventas de productos, para
determinar cuales son sus necesidades y requerimientos de automatización.
Figura # 30: Vista Frontal de la Ferretería Ardaya

1) Cuantos años de funcionamiento tiene la ferretería actualmente?

La ferretería tiene alrededor de 10 años de funcionamiento hasta la actualidad.

2) ¿Cuál es la forma o manera en que se maneja la información del control de las ventas
en la ferretería?

Actualmente la información de las ventas se maneja de manera manual a través de notas


de ventas.

3) ¿Sabe usted con cuantos proveedores cuenta la ferretería?

No, porque son varios proveedores y no se cuántos son en realidad.


4) ¿Cómo se realiza el proceso de control de stock de los productos dentro de la
ferretería?

Se realiza de manera manual revisando la cantidad de productos que se encuentran

Figura # 31: Productos de la Ferretería Ardaya

organizados por secciones.

5) ¿Cuenta con personal de trabajo en la ferretería?

Sí, con un ayudante.

6) ¿Algunos problemas con los clientes en cuanto a las ventas?

A veces los clientes se acercan a comprar su producto y se encuentran con que el


producto ya no hay en la ferretería o que voy a buscar el producto y resulta que se
acabaron.
7) ¿Sabe usted cuantos clientes atiende en promedio diariamente?

No, no sabría decir cuantos son exactamente, pero son varios.

8) ¿Cuánto tiempo invierte en las verificaciones periódicas de modo manual del stock de
los productos y las condiciones en que se encuentra?

Normalmente me lleva alrededor de 30, 40 minutos hasta una hora muchas veces, ya que

Figura # 32: Mi persona en la Ferretería

son varios productos dentro de la ferretería.

9) ¿Considera necesario e importante para su ferretería que cuente con un sistema


informático que automatice los procesos de facturación, control de stock y comprobantes
de venta?

Sí, porque así podría ofrecer una mejor atención a mis clientes ofreciéndoles los
productos que realmente tengo en la ferretería y mejorar mis ventas sin problemas.
10) ¿Cree usted que automatizando el sistema le permitirá obtener información
actualizada sobre la gestión de compras, ventas y control de stock de los productos
mejorando la atención ágil y eficiente a sus clientes?

Si, para mí y mi negocio es muy importante tener toda la información bajo control tanto
de las ventas, las compras y la cantidad de productos que tengo en el momento.

También podría gustarte