Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 171

UNIVERSIDAD POLITÉCNICA DE

MADRID
Escuela Técnica Superior de Ingeniería de Sistemas Informáticos

MÁSTER EN INGENIERÍA WEB


Proyecto Fin de Máster
Análisis y Desarrollo de un Sistema Web para la
gestión Kardex de un almacén

Autor
Héctor Jahir Lozano Briones

Tutor
Francisco Javier Gil Rubio

1 de julio de 2017
Análisis y Desarrollo de un Sistema Web para la gestión Kardex de un almacén

AGRADECIMIENTOS

Agradezco primeramente a Dios quien me ha

iluminado en esta ardua trayectoria de mi vida y que

a pesar de muchas pruebas ha sabido guiarme hasta

lograr mi objetivo.

A mis Padres, por brindarme su incondicional

apoyo y a todas aquellas personas que, de alguna

forma, son parte de la culminación de esta etapa de

mi carrera. La concepción de este trabajo ha sido

posible gracias a ellos.

Héctor Jahir Lozano Briones


[UPM] Máster en Ingeniería Web

RESUMEN
Las nuevas tecnologías van incorporándose cada vez más rápidamente a las actividades
diarias que realizamos, permitiéndonos comunicarnos, informarnos y relacionarnos de
una manera más rápida y directa. El progreso tecnológico permite optimizar la realización
de múltiples acciones, mejorando las labores de gestión y alcanzando grados de eficacia
y eficiencia.

Se ha desarrollado un Sistema Web para la automatización del proceso de Kardex, que


facilite de una forma máxima la gestión del mismo en el almacén de una compañía como
proyecto final, con la intención de poner en práctica muchos de los conceptos aprendidos
en cada asignatura del Máster.

La implementación se basó en la metodología de desarrollo ágil Scrum y mediante el uso


de herramientas de libre distribución, tales como: Front-end: HTML5, Bootstrap, CSS3,
Jquery, Ajax y Back-end: PHP, Framework Symfony, Base de datos MySQL, Servidor
Web Apache, entre otras.

El Sistema maneja varios módulos, siendo los principales estos: Consulta de la


información de productos, solicitud de un producto para utilizarlo en una localidad,
gestión de registro de entrada y salida de la mercancía, obteniendo un mejor control de
inventario, stock, clasificación, precios entre otras características de los productos,
consulta de los movimientos realizados (entrada y salida) de los productos de una manera
rápida y precisa.

El resultado es un producto de software funcional, en cuyo desarrollo se pudo demostrar


la validez de la metodología aplicada siendo fuerte en la facilidad de implantación y
agilidad en cuanto a cambios, con lo cual se cumplió con los objetivos planteados en un
principio.

P ALABRAS CLAVE
Aplicación Web, Sistema, Automatizar, Kardex, Producto, Almacén, Consulta, Proceso,
Mercancía, Scrum, Metodología Ágil, Herramientas Open Source.
Análisis y Desarrollo de un Sistema Web para la gestión Kardex de un almacén

ABSTRACT
New technologies are increasingly being incorporated into the daily activities we carry
out, allowing us to communicate, inform and interact in a more rapid and direct way.
Technological progress allows the optimization of multiple actions, improving
management tasks and achieving efficiency and efficiency levels.

A Web System for the automation of the Kardex process has been developed, which will
facilitate the management of the same in the warehouse of a company as a final project,
with the intention of putting into practice many of the concepts learned in each subject of
the Master.

The implementation was based on the agile Scrum development methodology and
through the use of free distribution tools such as: Front-end: HTML5, Bootstrap, CSS3,
Jquery, Ajax and Back-end: PHP, Symfony Framework, Database MySQL, Apache Web
Server, among others.

The system handles several modules, the main ones being: Product information queries,
request of a product to be used in a locality, management of entry and exit of goods,
obtaining better control of inventory, stock, classification, Prices among other
characteristics of the products, consultation of the movements made (input and output) of
products in a fast and accurate.

The result is a functional software product, in whose development it was possible to


demonstrate the validity of the methodology applied being strong in the ease of
implementation and agility in terms of changes, which met the objectives set out in the
beginning.

K EYWORDS
Web Application, System, Automate, Kardex, Product, Warehouse, Query, Process,
Merchandise, Scrum, Agile Methodology, Open Source Tools.
[UPM] Máster en Ingeniería Web

TABLA DE CONTENIDOS

Contenido
Agradecimientos ............................................................................................................... 3
Resumen ........................................................................................................................... 4
Palabras clave ................................................................................................................... 4
Abstract............................................................................................................................. 5
Keywords .......................................................................................................................... 5
Tabla de Contenidos ......................................................................................................... 6
Introducción...................................................................................................................... 8
1. Objetivos y Alcance del Sistema ................................................................................... 9
1.1. OBJETIVOS.............................................................................................................. 9
1.2. ALCANCE DE LA APLICACIÓN ..................................................................... 10
2. Marco Teórico ............................................................................................................. 11
2.1. TENDENCIAS ACTUALES DE LAS TECNOLOGÍAS ................................... 11
2.2. TECNOLOGÍAS UTILIZADAS ......................................................................... 18
2.2.1 HERRAMIENTAS DE DESARROLLO FRONT-END ............................... 18
2.2.2 HERRAMIENTAS DE DESARROLLO BACK-END ................................. 25
2.2.3 FRAMEWORK ............................................................................................. 28
2.2.4. BASES DE DATOS ..................................................................................... 29
2.2.5. SERVIDORES WEB .................................................................................... 30
2.3. ARQUITECTURA REST ........................................................................................... 31
3. Metodología de desarrollo ......................................................................................... 34
3.1. METODOLOGÍA ÁGIL SCRUM ...................................................................... 34
3.2. PROCESO DE DESARROLLO.......................................................................... 39
3.2.1. INTRODUCCIÓN ........................................................................................ 39
3.2.2. PROCESO ITERATIVO E INCREMENTAL ............................................. 39
3.3. ETAPAS DEL PROCESO DE DESARROLLO ................................................. 40
3.3.1. PLANIFICACIÓN ........................................................................................ 40
3.3.2. ANÁLISIS Y DISEÑO................................................................................. 40
3.3.3. DESARROLLO ............................................................................................ 41
3.3.4. CIERRE ........................................................................................................ 42
3.4. HERRAMIENTAS .............................................................................................. 42
3.4.1. HISTORIAS DE USUARIOS ...................................................................... 42
3.4.2. PRODUCT BACKLOG ............................................................................... 43
3.4.3. SPRINT BACKLOG .................................................................................... 43
3.4.4. TAREAS ....................................................................................................... 44
Análisis y Desarrollo de un Sistema Web para la gestión Kardex de un almacén
4. Desarrollo de la Ingeniería .......................................................................................... 45
4.1. DESARROLLO DE LA INGENIERÍA .............................................................. 45
4.1.1. PLANIFICACIÓN INICIAL ........................................................................ 45
4.1.2. ANÁLISIS DEL SISTEMA ......................................................................... 46
4.1.3. DISEÑO DEL SISTEMA CON SCRUM .................................................... 51
4.1.4. PRUEBAS DEL SISTEMA ....................................................................... 149
5. Conclusiones y Posibles Ampliaciones ...................................................................... 155
Bibliografía .................................................................................................................... 157
Anexos .......................................................................................................................... 159
[UPM] Máster en Ingeniería Web

INTRODUCCIÓN
El proyecto descrito en este documento fue desarrollado con el propósito de optimizar el
proceso de Kardex de un almacén, abarcando de una manera práctica los procesos, las
metodologías y las pruebas que son empleadas en la construcción de aplicaciones web
para cumplir con los requerimientos planteados por parte del cliente.

A continuación un resumen del contenido del documento:

En el capítulo 1 se describen los objetivos con la finalidad de alcanzar el propósito


planteado. Además se expone el alcance de la aplicación, el cual indica los módulos
implementados a partir de los requerimientos del cliente.

En el capítulo 2 se detalla el marco teórico de las tecnologías usadas en el análisis, diseño


e implementación de la aplicación, en donde se reúne información documental para
confeccionar el diseño metodológico de la investigación, proporcionando un
conocimiento profundo de la teoría que le da significado a la misma. También se
especifica la Arquitectura de Software, en donde se define el diseño de la estructura de la
solución.

En el capítulo 3 se describe el proceso de desarrollo con sus diferentes etapas, la


metodología y las herramientas aplicadas. Esto comprende la documentación técnica de
los requerimientos realizados para resolver el problema mediante una aplicación web.

En el capítulo 4 se muestra el desarrollo de la aplicación implementada utilizando la


metodología seleccionada y entregada al cliente.

Finalmente se señalan las conclusiones y posibles ampliaciones, donde se puntualizan los


beneficios que generaron la implementación y las sugerencias para futuras mejoras de la
aplicación.

Página 8
Análisis y Desarrollo de un Sistema Web para la gestión Kardex de un almacén

1. OBJETIVOS Y ALCANCE DEL SISTEMA

1.1. OBJETIVOS

OBJETIVO GENERAL

Desarrollar un Sistema Web para la automatización del proceso de Kardex, que


facilite la gestión en el almacén de una compañía, negocio u empresa, con el
propósito de poner en práctica muchos de los conceptos aprendidos en cada
asignatura del Máster.
Con este fin se simplificará la ejecución de las tareas para lograr una optimización
de tiempos, recursos y acceso a información confiable, precisa y oportuna.

OBJETIVOS ESPECÍFICOS

 Determinar la arquitectura de la solución y las herramientas de desarrollo.


 Efectuar el registro de los productos, artículos o bienes que ingresan al
almacén.
 Facilitar la codificación de los productos, artículos o bienes registrados.
 Minimizar el tiempo de los diferentes procesos que realiza el almacén para
procesar la información.
 Desarrollar un sistema apoyado con la metodología de desarrollo ágil
SCRUM.
 Modelar una base de datos utilizando el esquema relacional para la solución
lógica de datos del software.
 Evaluar el funcionamiento del software mediante pruebas unitarias con
PHPUnit.

Héctor Jahir Lozano Briones Página 9


[UPM] Máster en Ingeniería Web

1.2. ALCANCE DE LA APLICACIÓN

El desarrollo del presente proyecto comprende la implementación de un sistema web


para la automatización del proceso Kardex, mediante el uso de herramientas de
software Open Source y utilizando la metodología de desarrollo ágil SCRUM con el
propósito de asegurar el cumplimiento de los requerimientos indicados y así ayudar
al almacén a la agilización de sus actividades.

La aplicación abarca el desarrollo de los módulos para gestionar el registro de


entrada y salida de los productos, artículos o bienes del almacén, obteniendo un
mejor control de inventario, stock, clasificación, precios entre otras características
de los productos.

El Sistema permitirá mostrar la información almacenada de los movimientos


realizados (entrada y salida) de los productos, una lista de todos o detalles de los
mismos por medio de consultas.

Adicionalmente se podrá solicitar un producto, el cual será notificado vía correo


electrónico al solicitante y al administrador para poder efectuar la salida del almacén,
se permitirá cancelar dicha solicitud en caso de no requerir el producto y por último
tenemos la gestión de listar, dar de alta y modificación de Usuarios, Clientes,
Proveedores, Categorías, Localidades y Unidades de Medidas.

Página 10
Análisis y Desarrollo de un Sistema Web para la gestión Kardex de un almacén

2. MARCO TEÓRICO
2.1. TENDENCIAS ACTUALES DE LAS TECNOLOGÍAS

Framework

El propósito de un Framework es mejorar la eficiencia de la creación de nuevos


programas informáticos. Los Frameworks pueden mejorar la productividad de los
desarrolladores y mejorar la calidad, confiabilidad y robustez del nuevo software. La
productividad del desarrollador se mejora al permitir a los desarrolladores centrarse
en los requisitos únicos de su aplicación en lugar de dedicar tiempo a la
infraestructura de aplicaciones. [1]

Framework es por lo tanto, un esquema o un esqueleto que los programadores


pueden utilizar, ampliar o personalizar para no tener que empezar desde cero las
implementaciones de las soluciones informáticas. Su utilización fomenta la
reutilización de código, promueve buenas prácticas y proporciona una reducción de
tiempo en los procesos de desarrollo.

Aplicaciones Web

Las aplicaciones web son populares debido a lo práctico del navegador


web como cliente ligero, a la independencia del sistema operativo, así como a la
facilidad para actualizar y mantener aplicaciones web sin distribuir e instalar
software a miles de usuarios potenciales. Existen aplicaciones como
los webmails, wikis, weblogs, tiendas en línea y la propia Wikipedia que son
ejemplos bastante conocidos de aplicaciones web.

En la Ingeniería de Software se denomina Aplicación Web a


aquellas herramientas que los usuarios pueden utilizar accediendo a un servidor
web a través de Internet o de una intranet mediante un navegador. En otras palabras,
es una aplicación software que se codifica en un lenguaje soportado por los
navegadores web en la que se confía la ejecución al navegador. [2]

Héctor Jahir Lozano Briones Página 11


[UPM] Máster en Ingeniería Web

Servidores Web

Los servidores web (también conocidos como servidores HTTP) son un tipo
de servidores utilizados para la distribución de contenido web en redes internas o en
Internet. Como parte de una red de ordenadores, un servidor web transfiere
documentos a los llamados clientes, por ejemplo, una página web a un explorador.

En general, la pregunta “qué es un servidor web” puede referirse a dos cosas: al


software del servidor (es decir, al programa en sí) y al equipo en el que el software
del servidor web se está ejecutando. Cuando se trata de este último, se habla del host,
en el cual se pueden alojar múltiples soluciones de software para servidores web. [3]

Los servidores web más difundidos a nivel mundial son Apache e Internet
Information Services (IIS).

Apache

El NCSA (del inglés, National Center for Super Computing Applications) creó en
1995 un servidor web, pero el principal desarrollador de servidores web del NCSA
abandonó el proyecto y este se vio notablemente afectado. Los que utilizaban el
servidor web de NCSA empezaron a intercambiar sus propios paquetes para el
servidor y pronto pensaron que era necesario un foro para gestionarlos, así nació
el grupo Apache, el grupo utilizaba el código del servidor Web de NCSA y dio
nacimiento a un nuevo servidor web llamado Apache.

El proyecto de servidor HTTP de Apache es un esfuerzo para desarrollar y mantener


un servidor HTTP de código abierto para sistemas operativos modernos incluyendo
UNIX y Windows. El objetivo de este proyecto es proporcionar un servidor seguro,
eficiente y extensible que proporcione servicios HTTP en sincronización con los
estándares HTTP actuales.

El servidor HTTP de Apache ("httpd") fue lanzado en 1995 y ha sido el servidor web
más popular en Internet desde abril de 1996. El Servidor Apache HTTP es un
proyecto de The Apache Software Foundation. [4]

Página 12
Análisis y Desarrollo de un Sistema Web para la gestión Kardex de un almacén

Entre las características principales de este servidor tenemos las siguientes:

 Es un potente, flexible, servidor web compatible con HTTP / 1.1.


 Implementa los protocolos más recientes, incluyendo HTTP / 1.1 (RFC2616).
 Es altamente configurable y extensible con módulos de terceros.
 Proporciona código fuente completo y viene con una licencia sin restricciones.
 Se ejecuta en Windows 2000, Netware 5.xy superior, OS / 2 y la mayoría de las
versiones de Unix, así como varios otros sistemas operativos.
 Ofrece alojamiento virtual masivo configurable dinámicamente.

IIS (Internet Information Services)

Internet Information Services o IIS es un servidor Web flexible, seguro y manejable


para alojar soluciones de software en la Web, este servicio convierte a un PC en un
servidor web para Internet o una intranet, es decir que en los ordenadores que tienen
este servicio instalado se pueden publicar páginas web tanto local como
remotamente. [5]

La arquitectura escalable y abierta de IIS está lista para manejar las tareas más
exigentes, en sus comienzos, IIS era una parte integral de los sistemas de Windows
Server, ahora, en caso de ser necesario, es posible instalar el programa en algunos
sistemas operativos Windows. Microsoft IIS solo puede ser utilizado en servidores
Windows.

Se basa en varios módulos que le dan capacidad para procesar distintos tipos de
páginas. Por ejemplo, Microsoft incluye los de Active Server Pages (ASP)
y ASP.NET. También pueden ser incluidos los de otros fabricantes,
como PHP o Perl.

Héctor Jahir Lozano Briones Página 13


[UPM] Máster en Ingeniería Web

Lenguajes de programación web

Un lenguaje de programación es un lenguaje diseñado para describir el conjunto de


acciones consecutivas que un equipo debe ejecutar, por lo tanto, es un modo práctico
para que los seres humanos puedan dar instrucciones a un equipo. [6] Desde los
inicios de Internet, fueron surgiendo diferentes demandas por los usuarios y se dieron
soluciones mediante lenguajes estáticos, a medida que pasa el tiempo, las tecnologías
fueron desarrollándose y surgieron nuevos problemas a dar solución. Esto dio lugar
a desarrollar lenguajes de programación dinámicos para la web, que permitieran
interactuar con los usuarios y utilizaran sistemas de Bases de Datos.

Actualmente existen numerosos lenguajes de programación web, los lenguajes de


programación del lado del cliente que indican al navegador donde colocar
cada texto, imagen o video y la forma que tendrán estos al ser colocados en la
página; y los lenguajes del lado del servidor ejecutados e interpretados por el propio
servidor y que se envían al cliente en un formato comprensible para él, permitiendo
que se muestre en la misma los datos deseados por el servidor.

Entre los lenguajes de programación web más utilizados en la actualidad se


encuentran PHP, Java, ASP.Net, JSP, Node Js por parte del servidor y por parte del
cliente tenemos JavaScript, VBScript, Flash, HTML5, entre otros.

Sistemas Gestores de Bases de Datos

Un Gestor de Base de Datos (DataBase Managenent System) es un sistema que


permite la creación, gestión y administración de bases de datos, así como la elección
y manejo de las estructuras necesarias para el almacenamiento y búsqueda de la
información del modo más eficiente posible.

En la actualidad, existe multitud de SGBD en la mayoría relacionales. Entre las bases


de datos de mayor uso en la actualidad podemos encontrar las que son gratuitas como
MySQL, PostgreSQL, SQLite y las que requieren pago de licencia como Oracle,
SQL Server, DB2. [7]

Página 14
Análisis y Desarrollo de un Sistema Web para la gestión Kardex de un almacén

Metodologías de Desarrollo de Software

En el desarrollo de software, una metodología hace cierto énfasis al entorno en el


cuál se plantea y estructura el desarrollo de un sistema. Existen una gran cantidad
de metodologías de la programación que se han utilizado desde los tiempos atrás y
que con el paso del tiempo han ido evolucionando.

Esto se debe principalmente a que no todos los sistemas de la información, son


compatibles con todas las metodologías, pues el ciclo de vida del software puede ser
variable. Por esta razón, es importante que dependiendo del tipo de software que se
vaya a desarrollar, se identifique la metodología para el diseño de software idónea.

Las Metodologías de Desarrollo de Software se pueden dividir en dos grupos:


metodologías ágiles y las metodologías tradicionales (no ágiles). Las metodologías
ágiles se centran en el uso de documentación mínima en el momento de desarrollar
las soluciones informáticas y a responder adecuadamente a los cambios de
requerimientos. En cuanto las metodologías tradicionales son poco flexibles y muy
cuadriculadas, estas consistían en una serie fundamentos y conceptos aplicados al
desarrollo de software, documentación, planificación y procesos. (Plantillas,
técnicas de administración, revisiones, etc.)

Extreme Programming (XP)

Esta metodología es posiblemente la más destacada de las metodologías ágiles y esto


se debe a su gran capacidad de adaptación ante cualquier tipo de imprevisto que
surja. Pues la idea no es mantener ciertos requisitos desde que se está elaborando el
proyecto, sino que durante el proceso, estos vayan cambiando o vayan
evolucionando gradualmente sin complicaciones. Básicamente los creadores de esta
metodología XP, consideran que es mejor adaptarte en el proceso a los requisitos
que vayan apareciendo, que iniciar con requisitos y desarrollar un proyecto en base
a eso.

Héctor Jahir Lozano Briones Página 15


[UPM] Máster en Ingeniería Web

Rational Unified Process (RUP)

El Proceso Unificado Racional (Rational Unified Process en inglés, habitualmente


resumido como RUP) es un proceso de desarrollo de software y junto con el
Lenguaje Unificado de Modelado UML, constituye la metodología estándar más
utilizada para el análisis, implementación y documentación de sistemas orientados
a objetos.

El RUP no es un sistema con pasos firmemente establecidos, sino un conjunto de


metodologías adaptables al contexto y necesidades de cada organización.

Scrum

Scrum es una metodología ágil de desarrollo de proyectos que toma su nombre y


principios de los estudios realizados sobre nuevas prácticas de producción por
Hirotaka Takeuchi e Ikujiro Nonaka a mediados de los 80.

Scrum es un proceso en el que se aplican de manera regular un conjunto


de buenas prácticas para trabajar colaborativamente, en equipo, y obtener el
mejor resultado posible de un proyecto. Estas prácticas se apoyan unas a otras y
su selección tiene origen en un estudio de la manera de trabajar de equipos
altamente productivos.

En Scrum se realizan entregas parciales y regulares del producto final, priorizadas


por el beneficio que aportan al receptor del proyecto. Por ello, Scrum está
especialmente indicado para proyectos en entornos complejos, donde se
necesita obtener resultados pronto, donde los requisitos son cambiantes o poco
definidos, donde la innovación, la competitividad, la flexibilidad y
la productividad son fundamentales.

Página 16
Análisis y Desarrollo de un Sistema Web para la gestión Kardex de un almacén

Arquitectura REST

REST (Representational State Transfer), es un tipo de arquitectura de desarrollo web


que se apoya totalmente en el estándar HTTP para obtener datos o indicar la
ejecución de operaciones sobre los datos, en cualquier formato (XML, JSON, etc.).

Nos permite crear servicios que pueden ser usadas por cualquier dispositivo o cliente
que entienda HTTP, por lo que es increíblemente más simple y convencional que
otras alternativas que se han usado en los últimos diez años como SOAP y XML-
RPC. El término fue introducido en la tesis doctoral de Roy Fielding en 2000, quien
es uno de los principales autores de la especificación de HTTP. [8]

Los Servicios Rest deben cumplir con las siguientes premisas:

 Un protocolo cliente/servidor sin estado: Cada solicitud del cliente al servidor


es completamente independiente de la siguiente, además debe contener toda la
información necesaria para comprender la solicitud, como resultado ni el cliente
ni el servidor necesitan recordar ningún estado de las comunicaciones entre
mensajes. Sin embargo, en la práctica, muchas aplicaciones basadas en HTTP
utilizan cookies y otros mecanismos para mantener el estado de la sesión.
También se define una interface de comunicación entre ambos, separando
completamente las responsabilidades entre ambas partes.

 Un conjunto de operaciones bien definidas que se aplican a todos los recursos de


información: HTTP en sí define un conjunto pequeño de operaciones, las más
importantes son POST, GET, PUT y DELETE. Con frecuencia estas operaciones
se equiparan a las operaciones CRUD en bases de datos que se requieren para la
persistencia de datos.

 Una sintaxis universal para identificar los recursos, donde cada recurso es
direccionable únicamente a través de su URI.

Héctor Jahir Lozano Briones Página 17


[UPM] Máster en Ingeniería Web

 El uso de hipermedios, tanto para la información de la aplicación como para las


transiciones de estado de la aplicación: la representación de este estado en un
sistema REST son típicamente HTML o XML. Como resultado de esto, es posible
navegar de un recurso REST a muchos otros, simplemente siguiendo enlaces sin
requerir el uso de registros u otra infraestructura adicional. [9]

2.2. TECNOLOGÍAS UTILIZADAS


2.2.1 HERRAMIENTAS DE DESARROLLO FRONT-END

AngularJS

AngularJS es un Framework estructural de código abierto para aplicaciones web


dinámicas, mantenido por Google, le permite usar HTML como su lenguaje de
plantilla y le permite extender la sintaxis de HTML para expresar los componentes
de su aplicación de forma clara y sucinta. El enlace de datos y la inyección de
dependencia de AngularJS eliminan gran parte del código que de otro modo tendría
que escribir.

Su objetivo es aumentar las aplicaciones basadas en navegador con capacidad


de Modelo Vista Controlador (MVC), en un esfuerzo para hacer que el desarrollo y
las pruebas sean más fáciles. El desajuste de impedancia entre aplicaciones
dinámicas y documentos estáticos a menudo se resuelve con:

Una biblioteca: Una colección de funciones útiles para escribir aplicaciones web,
donde su código está a cargo y llama a la biblioteca cuando lo crea conveniente. Por
ejemplo, jQuery. La biblioteca lee el HTML que contiene atributos de las etiquetas
personalizadas adicionales, entonces obedece a las directivas de los atributos
personalizados, y une las piezas de entrada o salida de la página a un modelo
representado por las variables estándar de JavaScript.

Página 18
Análisis y Desarrollo de un Sistema Web para la gestión Kardex de un almacén

AngularJS enseña la nueva sintaxis del navegador a través de una construcción que
llamamos directivas. Las directivas son marcas en los elementos del árbol DOM, en
los nodos del HTML, que indican al compilador de Angular que debe asignar cierto
comportamiento a dichos elementos según corresponda. Son útiles para definir
nuevos pedazos de código HTML, como botones, un footer, o para crear cosas más
complejas que incluyan funciones o variables dinámicas definidas directamente en
el DOM. [10]

Html5

HTML5 es un lenguaje markup usado para estructurar y presentar el contenido para


la web. Esta versión es la última evolución de este lenguaje, en el cual se introducen
nuevas características para ayudar a los autores de aplicaciones web, se introducen
nuevos elementos basados en la investigación de las prácticas de creación
predominantes y se ha prestado especial atención a definir criterios claros de
conformidad para los agentes usuarios en un esfuerzo por mejorar la
interoperabilidad. [11]

Con HTML5, los navegadores como Firefox, Chrome, Explorer, Safari y más
pueden saber cómo mostrar una determinada página web, saber dónde están los
elementos, dónde poner las imágenes, dónde ubicar el texto.

El lenguaje HTML funciona a través de marcas de sentido llamadas etiquetas. Las


etiquetas son la herramienta fundamental para que los navegadores puedan
interpretar el código y permitirnos ver imágenes, texto, párrafo, y estructuras.

Héctor Jahir Lozano Briones Página 19


[UPM] Máster en Ingeniería Web

Los navegadores vendrían a ser como “traductores” de las etiquetas, y con HTML5,
se agregan nuevas etiquetas para utilizar que nos ahorran el uso de otros productos
que se usaban para complementar y hacer cosas que con el simple HTML no se
podían hacer.

Esta nueva versión del lenguaje HTML, consta de nuevos elementos, atributos y
comportamientos, y un conjunto más amplio de tecnologías que permite sitios y
aplicaciones más diversas y potentes. HTML5 incorpora recursos, clasificados en
varios grupos basados en su función:

Semántica: Le permite describir con mayor precisión cuál es su contenido.


Conectividad: Le permite comunicarse con el servidor de manera innovadora.
Sin conexión y almacenamiento: Permite que las páginas web almacenen los datos
localmente en el cliente y funcionen de forma más eficiente.
Multimedia, Gráficos y efectos 2D / 3D
Rendimiento e integración: Proporciona una mayor optimización de la velocidad
y un mejor uso del hardware de la computadora.
Acceso al dispositivo: Permite el uso de varios dispositivos de entrada y salida.
Estilo: permite que los autores escriban temas más sofisticados. [12]

Css3

CSS sirve para definir la estética de un sitio web en un documento externo y eso
mismo permite que modificando ese documento (fichero CSS) podamos cambiar la
estética entera de un sitio web, ese es precisamente el poder de CSS.

Página 20
Análisis y Desarrollo de un Sistema Web para la gestión Kardex de un almacén

En otras palabras, 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,
ya con CSS3 se suman muchas nuevos efectos que harán de la que la parte visual de
nuestra página sea mucho más agradable y llamativa, como sombras,
transformaciones de figuras, gradientes, creación sencilla de bordes y efectos 3D.

La nueva versión de CSS nos va a permitir que el diseño de páginas web cambie por
completo, esta nueva versión nos va a permitir hacer cosas que antes eran
impensables, podremos incluso dibujar con CSS, hacer que nuestras webs cobren
vida, y otras muchas cosas.

Esto hará que los diseñadores que quieran mantenerse al día tenga que evolucionar,
tenga que cambiar el concepto de hacer diseños web como si fueran artistas y pasar
a hacer web como si fueran programadores haciendo uso de las nuevas herramientas
que nos ofrece CSS3. [13]

Bootstrap

Bootstrap es un Framework CSS desarrollado inicialmente (en el año 2011)


por Twitter que permite dar forma a un sitio web mediante librerías CSS que
incluyen tipografías, botones, cuadros, menús y otros elementos que pueden ser
utilizados en cualquier sitio web.

Aunque el desarrollo del Framework Bootstrap fue iniciado por Twitter, fue liberado
bajo licencia MIT en el año 2011 y su desarrollo continua en un repositorio de
GitHub.

Héctor Jahir Lozano Briones Página 21


[UPM] Máster en Ingeniería Web

Bootstrap es una excelente herramienta para crear interfaces de usuario limpias y


totalmente adaptables a todo tipo de dispositivos y pantallas, sea cual sea su tamaño.
Además, Bootstrap ofrece las herramientas necesarias para crear cualquier tipo de
sitio web utilizando los estilos y elementos de sus librerías. [14]

Ventajas de Usar Bootstrap

La ventaja 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. A
continuación se muestran más:

 Tener una web bien organizada de forma visual rápidamente: la curva de


aprendizaje hace que su manejo sea asequible y rápido.
 Permite utilizar muchos elementos web combinando HTML5, CSS y
JavaScript.
 El diseño será adaptable, no importa el dispositivo, la escala o resolución.
 El grid system: el maquetado por columnas es muy configurables.
 Se integra muy bien con las principales librerías JavaScript.
 El haber sido creado por Twitter nos da una comunidad muy activa creando,
arreglando cosas, ofreciendo plugins y mucho más.
 Cuenta con implementaciones externas para WordPress, Drupal, etc. [15]

JQuery

Es una biblioteca multiplataforma de JavaScript, creada para facilitar, el acceso a los


elementos del DOM, los efectos, interactuar con los documentos HTML, agregar
interacción con la tecnología AJAX a páginas web, entre otros. [16]

JQuery consiste en un único fichero JavaScript que contiene las funcionalidades


comunes de DOM, eventos, efectos y AJAX.

Página 22
Análisis y Desarrollo de un Sistema Web para la gestión Kardex de un almacén

Nos permite agregar efectos y funcionalidades complejas a nuestro sitio web, como
por ejemplo: galerías de fotos dinámicas y elegantes, validación de formularios,
calendarios, hacer aparecer y desaparecer elementos en nuestra página y muchas
otras poderosas opciones, sin preocuparnos de los detalles complejos de la
programación.

Se optó por utilizar jQuery, ya que cuenta con estandarización de código JavaScript,
y además, es un producto estable, bien documentado y con un gran equipo de
desarrolladores a cargo de la mejora y actualización del Framework.

Otra cosa muy interesante es la dilatada comunidad de creadores de plugins o


componentes, lo que hace fácil encontrar soluciones ya creadas en jQuery para
implementar asuntos como interfaces de usuario, galerías, votaciones, efectos
diversos, etc.

Ajax

Es un acrónimo de Asynchronous JavaScript + XML, que se puede traducir como


"JavaScript asíncrono + XML", es una técnica de desarrollo web para crear
aplicaciones interactivas o RIA (Rich Internet Applications).

AJAX permite mejorar completamente la interacción del usuario con la aplicación,


evitando las recargas constantes de la página y creando un elemento intermedio entre
el usuario y el servidor, ya que el intercambio de información con el servidor se
produce en un segundo plano, mejorando la interactividad, velocidad y usabilidad en
las aplicaciones.

Héctor Jahir Lozano Briones Página 23


[UPM] Máster en Ingeniería Web

La nueva capa intermedia de AJAX mejora la respuesta de la aplicación, ya que el


usuario nunca se encuentra con una ventana del navegador vacía esperando la
respuesta del servidor.

El término AJAX se presentó por primera vez en el artículo "Ajax: A New


Approach to Web Applications" publicado por Jesse James Garrett el 18 de
Febrero de 2005. Hasta ese momento, no existía un término normalizado que hiciera
referencia a un nuevo tipo de aplicación web que estaba apareciendo.

Ajax es una combinación de tecnologías ya existentes:

 XHTML y CSS, para crear una presentación basada en estándares.

 DOM, para la interacción y manipulación dinámica de la presentación.

 XML, XSLT y JSON, para el intercambio y la manipulación de información.

 XMLHttpRequest, para el intercambio asíncrono de información.

 JavaScript, para unir todas las demás tecnologías. [17]

WebStorm Framework

WebStorm es un IDE de JavaScript ligero y potente desarrollado por JetBrains,


puede manejar fácilmente el complejo desarrollo del lado del cliente y del servidor
con Node.js. [18]

Es compatible con una amplia gama de tecnologías modernas relacionadas con el


lenguaje de programación JavaScript, HTML y CSS, además ofrece la experiencia
completa para el desarrollo Web productivo.

Página 24
Análisis y Desarrollo de un Sistema Web para la gestión Kardex de un almacén

Este IDE ofrece diversas funcionalidades tales como, auto-completación de código,


detección de errores sobre la marcha, navegación poderosa y refactorizaciones
automatizadas. Tiene soporte de primera clase para AngularJS, ECMAScript 6, Compass
y mucho más, además de funcionar en cualquier sistema operativo como Windows, Mac OS
o Linux

WebStorm agiliza el flujo de trabajo mediante la integración con todo lo necesario


para el desarrollo productivo, desde analizar el depurador, VCS, terminales y otras
herramientas desde el IDE. [19]

2.2.2 HERRAMIENTAS DE DESARROLLO BACK-END

Php

PHP (siglas en inglés recurrentes para PHP: Hypertext Preprocessor) es un lenguaje


de programación de uso general de código abierto ampliamente utilizado que es
especialmente adecuado para el desarrollo web y puede ser incorporado en HTML.

PHP puede ser desplegado en la mayoría de los servidores web y en casi todos los
sistemas operativos y plataformas sin costo alguno. En lugar de un montón de
comandos para la salida de HTML (como se ve en C o Perl), las páginas PHP
contienen HTML con código incrustado que hace "algo".

El código PHP está incluido en instrucciones especiales de inicio y fin de


procesamiento <? php y ?> Que le permiten entrar y salir del "modo PHP". Lo que
distingue a PHP de algo así como JavaScript de cliente es que el código se ejecuta
en el servidor, generando HTML que luego se envía al cliente.

Héctor Jahir Lozano Briones Página 25


[UPM] Máster en Ingeniería Web

Lo mejor en el uso de PHP es que es extremadamente simple, pero ofrece muchas


características avanzadas para un programador profesional. Aunque el desarrollo de
PHP se centra en scripts de servidor, se pueden hacer mucho más cosas con él. [20]

El 13 de julio del 2004, se lanzó PHP 5, utilizando el motor Zend Engine 2.0. Incluye
todas las ventajas que provee el nuevo Zend Engine 2, como:

 Mejor soporte para la programación orientada a objetos


 Mejoras de rendimiento
 Mejor soporte para MySQL con extensión completamente reescrita
 Mejor soporte a XML (XPath, DOM, etc.)
 Soporte nativo para SQLite
 Soporte integrado para SOAP
 Iteradores de datos
 Manejo de excepciones
 Mejoras con la implementación con Oracle

NetBeans IDE

Es un entorno de desarrollo gratuito y de código abierto, una herramienta para que


los programadores puedan escribir, compilar, depurar y ejecutar programas. Sun
MicroSystems fundó el proyecto de código abierto NetBeans en junio 2000 y
continúa siendo el patrocinador principal de los proyectos.

Permite el uso de un amplio rango de tecnologías de desarrollo tanto para escritorio,


como aplicaciones Web, o para dispositivos móviles.

Página 26
Análisis y Desarrollo de un Sistema Web para la gestión Kardex de un almacén

Da soporte a las siguientes tecnologías como Java, PHP, Groovy, C/C++, HTML5,
entre otras, además puede instalarse en varios sistemas operativos: Windows, Linux,
Mac OS.

También está disponible NetBeans Platform; una base modular y extensible usada
como estructura de integración para crear grandes aplicaciones de escritorio.
Empresas independientes asociadas, especializadas en desarrollo de software,
proporcionan extensiones adicionales que se integran fácilmente en la plataforma y
que pueden también utilizarse para desarrollar sus propias herramientas y soluciones.

Características Principales

 Soporte a casi todas las novedades en el lenguaje Java, cualquier preview del
lenguaje es rápidamente soportada por NetBeans.

 Asistentes para la creación y configuración de distintos proyectos, incluida la


elección de algunos frameworks.

 Buen editor de código, multilenguaje, con el habitual coloreado y sugerencias de


código, acceso a clases pinchando en el código, control de versiones, localización
de ubicación de la clase actual, comprobaciones sintácticas y semánticas,
plantillas de código, herramientas de refactorización, entre otros.

 Simplifica la gestión de grandes proyectos con el uso de diferentes vistas,


asistentes de ayuda, y estructurando la visualización de manera ordenada.

Una vez que nos metemos en una clase, por poner un ejemplo, se nos mostrarán
distintas ventanas con el código, su localización en el proyecto, una lista de los
métodos y propiedades (ordenadas alfabéticamente).

También hay una vista que nos presenta las jerarquías que tiene nuestra clase y otras
muchas opciones, por supuesto personalizable según el gusto de cada usuario. [21]

Héctor Jahir Lozano Briones Página 27


[UPM] Máster en Ingeniería Web

2.2.3 FRAMEWORK

Symfony

Symfony es un conjunto de componentes de PHP, un marco de aplicaciones Web,


una filosofía y una comunidad de todos trabajando juntos en armonía. [22]

Es un Framework diseñado para optimizar el desarrollo de las aplicaciones web


basado en el patrón Modelo Vista Controlador. Separa la lógica de negocio, la lógica
de servidor y la presentación de la aplicación web. Proporciona varias herramientas
y clases encaminadas a reducir el tiempo de desarrollo de una aplicación web
compleja.

La primera versión de Symfony fue publicada en Octubre de 2005 por Fabien


Potencier, actual CEO de Sensio Labs, empleó un año entero para desarrollar el
núcleo de Symfony, basando su trabajo en el Framework Mojavi en el ORM de
Propel para el mapeo de objetos a bases de datos y el ayudante para realizar plantillas
de Ruby on Rails en sus plantillas.

Después de utilizar Symfony en algunos proyectos, Fabien decidió publicarlo bajo


una licencia de software libre. Symfony está desarrollado completamente
en PHP 5.3. Symfony es compatible con la mayoría de gestores de bases de datos,
como MySQL, PostgreSQL, Oracle y Microsoft SQL Server. Se puede ejecutar
tanto en plataformas *nix (Unix, Linux, etc.) como en plataformas Windows. [23]

Principales Características:

 Su código, y el de todos los componentes y librerías que incluye, se publican bajo


la licencia MIT de software libre.

Página 28
Análisis y Desarrollo de un Sistema Web para la gestión Kardex de un almacén

 Los componentes de Symfony son tan útiles y están tan probados, que proyectos
tan gigantescos como Drupal 8 están construidos con ellos.

 Para evitar el uso de contraseñas en archivos de configuración, Symfony permite


establecer los parámetros de configuración de las aplicaciones a través de
variables de entorno del propio servidor.

 La excelente herramienta Composer, que simplifica de forma radical la instalación


y gestión de las dependencias de las aplicaciones PHP, también ha sido creada por
varios miembros de la comunidad Symfony.

2.2.4. BASES DE DATOS

MySQL

MySQL es un sistema de gestión de base de datos relacional o SGBD. Este gestor


de base de datos es multihilo y multiusuario, lo que le permite ser utilizado por
varias personas al mismo tiempo, e incluso, realizar varias consultas a la vez, lo
que lo hace sumamente versátil.

Nació como una iniciativa de Software Libre y aún sigue ofreciéndose como tal,
para usuarios particulares. La mayor parte del código se encuentra escrito en
lenguaje C/C++ y la sintaxis de su uso es bastante simple, lo que permite crear bases
de datos simples o complejas con mucha facilidad. Además, es compatible con
múltiples plataformas informáticas y ofrece una infinidad de aplicaciones que
permiten acceder rápidamente a las sentencias del gestor de base de datos.

Héctor Jahir Lozano Briones Página 29


[UPM] Máster en Ingeniería Web

Utilidad de MySQL

Como comentábamos anteriormente este gestor de base de datos es muy


utilizado en desarrollo web, ya que permite a los desarrolladores,
realizar cambios en sus sitios de manera simple, con tan sólo cambiar un archivo,
evitando tener que modificar todo el código web. Esto se debe a que MySQL,
trabaja con un sistema centralizado de gestión de datos, que permite realizar
cambios en un solo archivo y que se ejecuta en toda la estructura de datos que se
comparte en la red.

Cuando se combina con PHP, se convierte en una mezcla poderosa, que siempre
es tomada en cuenta para realizar aplicaciones cliente/servidor, que requieran el
uso de una base de datos rápida, segura y potente.

2.2.5. SERVIDORES WEB

Un servidor web o servidor HTTP es un programa informático que procesa una


aplicación del lado del servidor, realizando conexiones bidireccionales o
unidireccionales y síncronas o asíncronas con el cliente y generando o cediendo una
respuesta en cualquier lenguaje o Aplicación del lado del cliente.

Apache

Apache es un servidor web HTTP de código abierto para plataformas Unix


(BSD, GNU/Linux, etc.), Windows, Macintosh y otras, que implementa el protocolo
HTTP/1.1 y la noción de sitio virtual.

Página 30
Análisis y Desarrollo de un Sistema Web para la gestión Kardex de un almacén

En sus inicios se basaba en el código de NCSA HTTPD 1.3, pero más tarde fue
reescrito por completo. Actualmente es el servidor web más usado en todo el
mundo, superando en 2009 los 100 millones de sitios web, el 70% del total. Está
desarrollado y mantenido por una comunidad de usuarios en torno a la Apache
Software Foundation.

El servidor web local apache es uno de los más utilizados en la actualidad en lo


que se refiere a la programación en conjunto con PHP y MySQL, debido a su
facilidad de configuración e instalación, es una herramienta muy útil en el
desarrollo de sistemas web, y al ser de licencia libre, es el conjunto perfecto para
programar junto a PHP y MySQL.

2.3. ARQUITECTURA REST

La Arquitectura del Software es el diseño de más alto nivel de la estructura de un


Sistema. Es el resultado de ensamblar un cierto número de elementos arquitectónicos
de forma adecuada para satisfacer la mayor funcionalidad y requerimientos de
desempeño de un sistema, así como los no funcionales.

Héctor Jahir Lozano Briones Página 31


[UPM] Máster en Ingeniería Web

Ventajas del Desarrollo basado en REST

1. Separación Cliente/Servidor

Al ser sistemas independientes (solo se comunican con un lenguaje de intercambio


como JSON) se pueden desarrollar los proyectos autónomos. Al cliente (front) le da
igual cómo está hecha la API y al servidor le da igual qué va a hacer con los datos
que le han proporcionado.

Si se necesita evolucionar/refactorizar el back o front, se puede hacer de manera


separada, siempre que se mantenga la interfaz del API. Puedes hacer varios front con
un único backend (no tiene por qué ser solo web, puede ser un app para Android otro
para un App iOS, etc.)

2. Independencia de Tecnologías/Lenguajes

Se Puede desarrollar en cualquier tipo de tecnología o lenguaje. Es indiferente que


en el futuro se cambien totalmente las tecnologías con las que está implementado el
API REST, siempre y cuando siga teniendo las mismas operaciones en el API y
hagan las mismas cosas que se supone que deben hacer.

3. Fiabilidad, escalabilidad, flexibilidad

Al final solo nos tenemos que preocupar que el nexo cliente / servidor esté correcto.
Escalabilidad porque se puede crecer todo lo que necesite en cada momento. El API
puede responder a otros tipos de operaciones o puede versionarse tanto como desee.

Página 32
Análisis y Desarrollo de un Sistema Web para la gestión Kardex de un almacén

A la hora de ejecutar la aplicación también tiene una flexibilidad mucho mayor, las
páginas del front las puede enviar desde unos servidores y las API pueden estar
alojadas en servidores independientes, tantos como necesite el desarrollador.

4. Experiencia de Usuario

Los sitios web basados en un API pueden dar mejor desempeño que uno tradicional.
En este tipo de aplicaciones web no se necesita recargar la página, aunque esto no es
una ventaja específica del desarrollo basado en REST, sino del uso de Ajax en
general, con el que podemos conseguir aplicaciones web que se asemejan más a
aplicaciones de escritorio.

Se utilizó Symfony como Framework de Desarrollo para crear el Api REST, donde
fue necesario instalar algunos componentes adicionales para su funcionamiento tales
como FOSRestBundle () y NelmioCorsBundle ().

Una API es un conjunto de funciones y procedimientos que cumplen una o muchas


funciones con el fin de ser utilizadas por otro software. Las siglas API vienen del
inglés Application Programming Interface. En español sería Interfaz de
Programación de Aplicaciones.

Con las tablas creadas en la Base de Datos se empleó Doctrine para generar las
entidades y trabajar con el modelo de datos. Doctrine es un (ORM) mapeador de
objetos-relacional escrito en PHP que proporciona una capa de persistencia para
objetos PHP, a partir de eso se crearon los Controladores respectivos de cada entidad
en Symfony, implementando los métodos y funciones de CRUD (Create, Read,
Update, Delete) que luego serán utilizados como Servicios Rest desde el Front-End.

Los servicios Rest serán consumidos desde el Front end, realizando peticiones
utilizando la Tecnología Ajax, los cuales devolverán las respuestas en JSON para
procesar dicha información y presentarla al usuario, donde se utilizó AngularJs como
Framework para el desarrollo de la aplicación del front-end.

Héctor Jahir Lozano Briones Página 33


[UPM] Máster en Ingeniería Web

3. METODOLOGÍA DE DESARROLLO
3.1. METODOLOGÍA ÁGIL SCRUM

Qué es SCRUM

Scrum es un marco de trabajo que nos permite encontrar prácticas emergentes en


dominios complejos, como la gestión de proyectos de innovación. Genera un
contexto relacional e iterativo, de inspección y adaptación constante para que los
involucrados vayan creando su propio proceso.

Scrum es un modelo de desarrollo ágil caracterizado por:

 Adoptar una estrategia de desarrollo incremental a través de iteraciones (Sprint)


y revisiones, en lugar de la planificación y ejecución completa del producto.

 Basar la calidad del resultado más en el conocimiento tácito de las personas en


equipos auto organizados, que en la calidad de los procesos empleados.

 Solapamiento de las diferentes fases del desarrollo, en lugar de realizar una tras
otra en un ciclo secuencial o de cascada.

Página 34
Análisis y Desarrollo de un Sistema Web para la gestión Kardex de un almacén

 Este modelo fue identificado y definido por Ikujiro Nonaka e Hirotaka Takeuchi
a principios de los 80, al analizar cómo desarrollaban los nuevos productos las
principales empresas de manufactura tecnológica: Fuji-Xerox, Canon, Honda,
Nec, Epson, Brother, 3M y Hewlett-Packard.

En su estudio, Nonaka y Takeuchi compararon la nueva forma de trabajo en equipo,


con el avance en formación de Scrum de los jugadores de Rugby, a raíz de lo cual
quedó acuñado el término “Scrum” para referirse a ella. [24]

Fuente: Essential Scrum: A Practical Guide to the Most Popular Agile Process. K.S.Rubin

Scrum es una metodología de desarrollo muy simple, que requiere trabajo duro
porque no se basa en el seguimiento de un plan, sino en la adaptación continúa a las
circunstancias de la evolución del proyecto.

Entre las Ventajas que ofrece esta metodología tenemos:


 Alineamiento entre cliente y equipo.
 Gestión regular de las expectativas del cliente.
 Resultados a corto plazo.
 Retorno de inversión (ROI). (Se hace lo importante).
 Equipo motivado y Calidad del producto final.
 Flexibilidad y adaptación a los cambios.

Héctor Jahir Lozano Briones Página 35


[UPM] Máster en Ingeniería Web

El Proceso

El equipo de desarrollo se encuentra apoyado en dos roles: el ScrumMaster y el


Product Owner. El ScrumMaster es quien vela por la utilización de Scrum, la
remoción de impedimentos y asiste al equipo a que logre su mayor nivel de
performance posible. Puede ser considerado un coach o facilitador encargado de
acompañar al equipo de desarrollo. El Product Owner es quien representa al negocio,
stakeholders, cliente y usuarios finales. Tiene la responsabilidad de conducir al
equipo de desarrollo hacia el producto adecuado.

El progreso de los proyectos que utilizan Scrum se realiza y verifica en una serie de
iteraciones llamadas Sprints. Estos Sprints tienen una duración fija, pre-establecida
de no más de un mes.

Al comienzo de cada Sprint el equipo de desarrollo realiza un compromiso de


entrega de una serie de funcionalidades o características del producto en cuestión.
Al finalizar el Sprint se espera que estas características comprometidas estén
terminadas, lo que implica su análisis, diseño, desarrollo, prueba e integración al
producto.

En Scrum, el equipo monitoriza la evolución de cada sprint en reuniones breves


diarias donde se revisa en conjunto el trabajo realizado por cada miembro el día
anterior, y el previsto para el día en curso. Esta reunión diaria es de tiempo prefijado
de 5 a 15 minutos máximo, se realiza de pie junto a un tablero o pizarra con
información de las tareas del sprint, y el trabajo pendiente en cada una.

Esta reunión se denomina “reunión de pie” o “Scrum diario” y si se emplea la


terminología inglesa: “stand-up meeting”, también: “daily Scrum” o “morning
rollcall”. El feedback obtenido en esta reunión puede ser incluido entre las
funcionalidades a construir en futuros Sprints. El proceso parte de la lista de
objetivos/requisitos priorizada del producto, que actúa como plan del proyecto. En
esta lista el cliente prioriza los objetivos balanceando el valor que le aportan respecto
a su coste y quedan repartidos en iteraciones y entregas.

Página 36
Análisis y Desarrollo de un Sistema Web para la gestión Kardex de un almacén

Las actividades que se llevan a cabo en Scrum son las siguientes:

Planificación de la iteración

El primer día de la iteración se realiza la reunión de planificación de la iteración.


Tiene dos partes:

 Selección de requisitos: El cliente presenta al equipo la lista de requisitos


priorizada del producto o proyecto. El equipo pregunta al cliente las dudas que
surgen y selecciona los requisitos más prioritarios que se compromete a completar
en la iteración, de manera que puedan ser entregados si el cliente lo solicita.

 Planificación de la iteración: El equipo elabora la lista de tareas de la iteración


necesarias para desarrollar los requisitos a que se ha comprometido. La estimación
de esfuerzo se hace de manera conjunta y los miembros del equipo se auto asignan
las tareas.

Ejecución de la iteración

Cada día el equipo realiza una reunión de sincronización, donde los miembros del
equipo inspecciona el trabajo que el resto está realizando (dependencias entre tareas,
progreso hacia el objetivo de la iteración, obstáculos que pueden impedir este
objetivo) para poder hacer las adaptaciones necesarias que permitan cumplir con el
compromiso adquirido. En la reunión cada miembro del equipo responde a tres
preguntas:
 ¿Qué he hecho desde la última reunión de sincronización?
 ¿Qué voy a hacer a partir de este momento?
 ¿Qué impedimentos tengo o voy a tener?

El Facilitador (Scrum Master) se encarga de que el equipo pueda cumplir con su


compromiso y de que no se merme su productividad.

Héctor Jahir Lozano Briones Página 37


[UPM] Máster en Ingeniería Web

 Elimina los obstáculos que el equipo no puede resolver por sí mismo.


 Protege al equipo de interrupciones externas que puedan afectar su compromiso o
su productividad.

Durante la iteración, el cliente junto con el equipo refinan la lista de requisitos para
prepararlos para las siguientes iteraciones y, si es necesario, cambian o replanifican
los objetivos del proyecto para maximizar la utilidad de lo que se desarrolla y
el retorno de inversión.

Inspección y adaptación

El último día de la iteración se realiza la reunión de revisión de la iteración. Tiene


dos partes:

 Demostración: El equipo presenta al cliente los requisitos completados en la


iteración, en forma de incremento de producto preparado para ser entregado con
el mínimo esfuerzo. En función de los resultados mostrados y de los cambios que
haya habido en el contexto del proyecto, el cliente realiza las adaptaciones
necesarias de manera objetiva, ya desde la primera iteración, re-planificando el
proyecto.

 Retrospectiva: El equipo analiza cómo ha sido su manera de trabajar y cuáles son


los problemas que podrían impedirle progresar adecuadamente, mejorando de
manera continua su productividad. [25]

Página 38
Análisis y Desarrollo de un Sistema Web para la gestión Kardex de un almacén
3.2. PROCESO DE DESARROLLO
3.2.1. INTRODUCCIÓN

Esta metodología nos permite realizar una evolución sostenida de la solución


prácticamente desde el primer momento, teniendo en cuenta que la solución
seleccionada, cubre gran parte de las necesidades actuales debido a la verticalización
de las aplicaciones. Durante las distintas iteraciones se va suministrando al cliente
funcionalidad adicional, construyendo así un entorno adecuado para el cumplimiento
de los requerimientos, en ocasiones cambiantes.

Se utiliza el proceso ágil iterativo e incremental que respeta las etapas


tradicionales de un proyecto que facilitan su gestión y control; ellas son:
planificación, análisis, diseño, desarrollo y cierre. Como el objetivo final de la
metodología es llegar al éxito del proyecto se definen, en forma clara, los
entregables de cada etapa y el alcance global, reflejando estos puntos en la
planificación de todas las tareas involucradas.

3.2.2. PROCESO ITERATIVO E INCREMENTAL

En un desarrollo iterativo e incremental el proyecto se planifica en diversos bloques


temporales (en el caso de Scrum de un mes natural o hasta de dos semanas, si así se
necesita) llamados iteraciones.

Las iteraciones se pueden entender como mini proyectos: en todas las iteraciones se
repite un proceso de trabajo similar para proporcionar un resultado completo
sobre producto final, de manera que el cliente pueda obtener los beneficios del
proyecto de forma incremental. Para ello, cada requisito se debe completar en una
única iteración: el equipo debe realizar todas las tareas necesarias para completarlo
(incluyendo pruebas y documentación) y que esté preparado para ser entregado al
cliente con el mínimo esfuerzo necesario. De esta manera no se deja para el final del
proyecto ninguna actividad arriesgada relacionada con la entrega de requisitos.

Un aspecto fundamental para guiar el desarrollo iterativo e incremental es


la priorización de los objetivos/requisitos en función del valor que aportan al cliente.
[26]

Héctor Jahir Lozano Briones Página 39


[UPM] Máster en Ingeniería Web

A continuación detallamos las etapas por las cuales transita nuestro proceso de
desarrollo y la combinación de herramientas utilizadas en él.

3.3. ETAPAS DEL PROCESO DE DESARROLLO


3.3.1. PLANIFICACIÓN

Es la fase inicial en la que se intenta comprender el caso de negocio con la finalidad


de tomar decisiones que agreguen valor al producto

Las tareas que se realizan en esta etapa son las siguientes:

 Definición en forma general del alcance del proyecto


 Determinación de la fecha de entrega y la funcionalidad de una o más
versiones.
 Selección del equipo o equipos para desarrollar la nueva versión.
 Evaluación y control adecuado de los riesgos.
 Estimación del coste de la versión, incluyendo desarrollo, material,
marketing, formación y despliegue.
 Conformidad de la dirección y financiación del proyecto.

Una vez que se tiene el definido el proyecto con las funcionalidades, es necesario
establecer criterios para hacer pequeñas entregas del producto y así obtener su valor
y un feedback temprano.

3.3.2. ANÁLISIS Y DISEÑO

En esta etapa se obtienen todas las definiciones y especificaciones funcionales para


poder llevar adelante las fases de Diseño y Construcción

El Backlog no es más que una lista de todo lo que debe hacerse para convertir la
visión en realidad. Esta lista existe y evoluciona a lo largo del proceso, es el mapa o
la hoja de ruta del producto. En cualquier momento del proyecto, la lista de objetivos
pendientes es la única y definitiva vista panorámica de todo lo que el equipo podría
hacer, por orden de prioridades.

Página 40
Análisis y Desarrollo de un Sistema Web para la gestión Kardex de un almacén

Se debe consultar con todos los interesados y con el equipo para asegurarse de que
representan tanto lo que quiere el cliente como lo que es factible construir.

Las tareas que se realizan en esta etapa son las siguientes:

 Identificación de los cambios necesarios para implementar el Backlog.


 Análisis del dominio para incluir los requisitos que incluye el desarrollo mejora o
actualización.
 Acotar la arquitectura del sistema para apoyar el nuevo contexto y necesidades.
 Identificar problemas del desarrollo o modificaciones.
 Reunión de revisión de diseño, donde cada equipo presenta los cambios para
implementar los elementos del Backlog, e identificar posibles reasignaciones.

3.3.3. DESARROLLO

La fase de desarrollo es un ciclo de trabajo repetitivo. La gestión determina el


cumplimiento de los tiempos, funcionalidad y calidad.

El desarrollo consiste en los siguientes macro-procesos:

 Reunión con los equipos para revisar los planes de lanzamiento de versión.
 Distribución, revisión y ajuste de los estándares de conformidad para el
producto.
 Sprints iterativos hasta que el producto se considera listo para su distribución.

Un Sprint es un conjunto de actividades de desarrollo llevado a cabo durante un


periodo predefinido, por lo general entre unas y cuatro semanas. Duración basada en
la complejidad del producto. Cada sprint consiste en uno o varios equipos realizando:

 Desarrollo: Definición de los cambios necesarios para la implementación de los


requisitos del Backlog en módulos, la apertura de los módulos, análisis del
dominio, diseño, desarrollo, implementación, cierre y documentación de los
cambios.

Héctor Jahir Lozano Briones Página 41


[UPM] Máster en Ingeniería Web

 Envoltura: Cierre de los módulos, creación de una versión ejecutable con los
cambios que implementas los requisitos del Backlog.
 Revisión: Reunión de todos los equipos para presentar el trabajo y revisar el
progreso, identificando y resolviendo posibles cuestiones y añadiendo nuevos
elementos al Backlog.
 Ajuste: Consolidación de la información de la revisión de los módulos
afectados.

3.3.4. CIERRE

El entregable principal es el incremento de software funcionando.

Cuando el equipo de gestión siente que las variables de tiempo, parte completada,
requisitos, coste y calidad están alineadas para producir una nueva versión, declaran
cerrada la versión, dando paso a esta fase.

En esta fase se prepara el producto generado para producir una nueva versión. Entre
las tareas de cierre se encuentran: integración, pruebas del sistema, documentación
de usuario, preparación del material de formación y marketing.

3.4. HERRAMIENTAS
3.4.1. HISTORIAS DE USUARIOS

Es un elemento especial del product Backlog, porque en ellos se proporciona


información sobre cómo debe ser el comportamiento del requerimiento que se está
trabajando. De igual manera, proporciona información directa del cliente en caso de
existir algún cambio. Generalmente estos sí son tomados como requerimientos
oficiales y se definen de la siguiente manera:

Historias de usuario
Yo como<rol>
Quiero/deseo/necesito <funcionalidad>
Para<beneficio del negocio>

Página 42
Análisis y Desarrollo de un Sistema Web para la gestión Kardex de un almacén
3.4.2. PRODUCT BACKLOG

La pila del producto es un listado priorizado de mayor a menor importancia de los


requisitos o funcionalidades del sistema por realizar, en el cual se organizan las
características de entrada por riesgo técnico o valor de negocio, se recogen las
características pendientes de implementación y permanece constante evolución. Los
requisitos y prioridades se revisan y ajustan durante el curso del proyecto a intervalos
regulares.

Aunque suele estar formado por requisitos funcionales, puede haber también otro
tipo de tareas como: cambios solicitados por el cliente, tareas de resolución de
riesgos técnicos, errores a corregir, etc.

3.4.3. SPRINT BACKLOG

Es el conjunto de elementos tomados del Product Backlog que fueron priorizados,


medidos y aceptados en las reuniones de Sprint Planning. Estos, en conjunto con sus
respectivas Historias de Usuarios forman oficialmente los requerimientos a elaborar
en cada uno de los Sprints que tendrá el proyecto.

El equipo transforma el “qué tengo que hacer” en “cómo hacerlo”, estima el coste
de la a historia y si el coste de realizar una historia es muy elevado, esta debe
dividirse en tareas más pequeñas, además de tener en cuenta que ninguna tarea debe
superar una jornada de trabajo.

Se definen reuniones que se deben realizar utilizando el método Scrum, para llevar
acabo el Sprint:

 Planeación del Sprint (Scrum Planning), con la ayuda del Product Owner y el
Scrum Master, el equipo se compromete con las actividades que se deben realizar
de la Pila del Producto. Es decir se seleccionan actividades prioritarias y
relacionadas y con la restricción del tiempo existente, para que estas formen parte
de la siguiente iteración.

Héctor Jahir Lozano Briones Página 43


[UPM] Máster en Ingeniería Web

 Reunión Diario de Scrum (Daily Scrum), esta actividad se lleva a cabo todos
los días, donde cada miembro del equipo debe comunicar al resto del equipo y al
Scrum Master, tres ítems indicados en la tabla de tareas: lo que se realizó, lo que
se va realizar el día de hoy, y si existe algún impedimento para llevar a cabo el
trabajo. Cada tarea debe evolucionar desde Por hacer (To Do), En Progreso (In
Progress), Realizadas (Done).

 Revision del Sprint (Sprint Review). Al final del sprint se muestra a los clientes
y al dueño del Producto el sprint terminado, luego el cliente provee del feedback
necesario y pueden tener o no la necesidad de otro Sprint para mejorar el
producto. Esto ayuda a crear el software con los requerimientos exactos del cliente
y permite que el equipo sea más eficaz.

 Retrospectiva del Sprint (Sprint Retrospective). Esta reunión también se lleva


al final del Sprint, donde se evalúan los aciertos y desaciertos del equipo en la
realización de sus tareas. Y se proveen técnicas para reducir los errores, como
pruebas de testing, ayuda de logística.

3.4.4. TAREAS

El panel de tareas muestra todas y cada una de las tareas que tienen asignados cada
uno de los miembros del equipo. Esta tabla se divide en tres columnas que
representan el estado de la tarea: Por hacer, Haciendo, Terminado.

Al inicio del Sprint todas están en la primera columna y cuando se pase una tarea a
la columna número dos, el equipo indicará al Scrum Master y al Product Owner qué
se está haciendo y cuánto tiempo lleva trabajando en dicha tarea para la consecución
de las historias de usuario asignadas al sprint. Al finalizar la tarea, esta debe
cambiarse a la última columna.

Las tareas, según el esfuerzo estimado se pueden encajar en uno de los siguientes
grupos de horas necesarias: 1, 2, 4, 8, las cuales incluirán tareas de diseño,
codificación y pruebas y al final del proceso de codificación y pruebas se debe
presentar un “entregable” o “incremento”.

Página 44
Análisis y Desarrollo de un Sistema Web para la gestión Kardex de un almacén

4. DESARROLLO DE LA INGENIERÍA
4.1. DESARROLLO DE LA INGENIERÍA
4.1.1. PLANIFICACIÓN INICIAL

Solicitud del Proyecto

El proyecto descrito en este documento aparece como tema para la implementación


del Trabajo Final de Máster, el cual dará lugar a la obtención del título de Máster
Universitario en Ingeniería Web en la Universidad Politécnica de Madrid.

Donde el procedimiento del desarrollo de software, se basa desde la recogida de


requisitos, pasando por las pruebas, la implementación, y llevado a cabo en acorde a
la metodología de ejecución para lograr el producto software deseado.

Evaluación de la información deseada

Luego de definir la solicitud del proyecto, se determinan las funcionalidades que


tendrá la aplicación web y se establecen los aspectos, lo cual es esencial porque crea
condiciones del proyecto por medio de la definición de lo que se debe realizar en el
proyecto y lo que no.

La aplicación debe hacer lo siguiente:

 Registrar los productos que ingresan al almacén.


 Listar todos los productos almacenados.
 Permitir visualizar los productos o bienes almacenados, por nombre.
 Gestionar las órdenes de ingreso al almacén de los productos, en las cuales se
definirá precio, cantidad, proveedor, entre otros datos.
 Solicitar el producto que saldrá del almacén a otras localidades u oficinas de la
compañía.
 Notificar al administrador la solicitud de un producto por medio de mail.
 Cancelar la solicitud del producto en caso de no requerir el producto.
 Gestionar las órdenes de egreso de los productos, a localidades u oficinas de la
compañía.
 Permitir visualizar el Kardex del centro, el cual consta de los ingresos y egresos
que ha recibido un producto o bien.
Héctor Jahir Lozano Briones Página 45
[UPM] Máster en Ingeniería Web

 Administrar Clientes, Proveedores, Categorías, Localidades, Unidades de


Medida y Usuarios o Administradores, donde se permite el alta y la
modificación de los mismos.
 Manejar inicio de sesión mediante Log in.
 Permitir una interfaz fácil de usar

4.1.2. ANÁLISIS DEL SISTEMA

Modelo del negocio

El modelo de negocio de este sistema tiene como objetivo comprender el proceso de


Kardex de un almacén, como paso previo a establecer los requisitos del sistema a
desarrollar.

Durante el proceso de modelado de negocio, se examina la estructura, el flujo de


trabajo y el proceso principal del almacén, los roles y como estos se relacionan,
también permite al analista identificar qué está dentro del alcance del sistema
propuesto y qué módulos se implementarán.

Por el hecho de que el modelo de negocio normalmente es más amplio que la parte
de sistema computacional, los procesos muestran las actividades que deben ser
realizadas para alcanzar una meta explícita, a través de sus relaciones con los
recursos que participan en el proceso.

Es posible construir un modelo mediante la conexión de elementos de análisis,


definiendo así la trazabilidad de la aplicación, permitiendo al analista definir el
objetivo del proceso, las entradas y salidas específicas, las secuencias de las
actividades y los eventos que dirigen el proceso.

A continuación se muestra un diagrama representando la funcionalidad del sistema


en el proceso Kardex del almacén. En esta representación se pueden visualizar los
objetivos más importantes que la aplicación puede realizar, donde cada uno de ellos
serán descompuestos en sub-objetivos más específicos para un análisis detallado.

Página 46
Análisis y Desarrollo de un Sistema Web para la gestión Kardex de un almacén

Objetivos Principales Sub-objetivos Procesos

Registrar productos en almacén.


Automatizar la Solicitar productos ingresados.
Cumplir con requisitos
gestión de la Registrar órdenes de ingreso y
principales
información egreso de productos.
Cancelar solitud de producto.

Optimizar el manejo Minimizar


Consultar productos por nombre
de la información del tiempos al ralizar
Listar información almacenada.
almacén. búsquedas

Permitir el acceso a
Reporte de Consultar movimientos de los
información confiable,
Kardex productos (Kardex)
precisa y oportuna.

Para llegar a obtener un listado exhaustivo de los requerimientos iniciales del


sistema comenzaremos identificando las Historias de Usuarios, se adoptó la
utilización de las mismas porque en la metodología utilizada se considera que
aportan una forma sencilla entender los procesos que se realiza en un almacén.

Actores del Sistema

Usuario: Actor con ciertas restricciones dentro del sistema, toma el nombre de
cliente dentro de un restaurante.

Administrador: Actor sin restricciones sobre las funcionalidades del sistema.

Héctor Jahir Lozano Briones Página 47


[UPM] Máster en Ingeniería Web

DEFINICIÓN DE LAS HISTORIAS DE USUARIO

Historia Usuario 1 (HU01) - Alta Producto


Como administrador
Quiero poder dar de alta productos
Para poder disponer de ellos en el Sistema

Historia Usuario 2 (HU02) – Email de confirmación - Solicitar Producto


Como Usuario
Necesito poder recibir y enviar al administrador un email de confirmación
Para poder verificar que se realizó correctamente la solicitud de producto

Historia Usuario 3 (HU03) - Login


Como administrador
Quiero poder tener un login
Para poder restringir el acceso a las personas no autorizadas

Historia Usuario 4 (HU04) - Alta Cliente


Como administrador
Quiero poder dar de alta clientes
Para poder disponer de ellos cuando realice las órdenes de egresos de productos a
las localidades u oficinas de la compañía

Historia Usuario 5 (HU05) - Modificar Cliente


Como administrador
Necesito poder modificar clientes
Para actualizar sus datos cuando cambien

Historia Usuario 6 (HU06) - Alta Proveedor


Como administrador
Quiero poder dar de alta proveedores
Para poder disponer de ellos cuando realice las ordenes de ingreso de productos en
el almacén

Página 48
Análisis y Desarrollo de un Sistema Web para la gestión Kardex de un almacén

Historia Usuario 7 (HU07) - Modificar Proveedor


Como administrador
Necesito poder modificar proveedores
Para actualizar sus datos cuando cambien

Historia Usuario 8 (HU08) - Alta Categoría


Como administrador
Quiero poder dar de alta categorías
Para poder disponer de ellas cuando realice el ingreso de productos en el almacén

Historia Usuario 9 (HU09) - Modificar Categoría


Como administrador
Necesito poder modificar categorías
Para actualizar sus datos cuando cambien

Historia Usuario 10 (HU10) - Alta Localidad


Como administrador
Quiero poder dar de alta localidades
Para poder disponer de ellas cuando el usuario solicite productos en el almacén

Historia Usuario 11 (HU11) - Modificar Localidad


Como administrador
Necesito poder modificar localidad
Para actualizar sus datos cuando cambien

Historia Usuario 12 (HU12) - Solicitar Producto


Como usuario
Quiero poder solicitar un producto
Para poder disponer de el en mi oficina o localidad

Historia Usuario 13 (HU13) - Alta Usuario/Administrador


Como administrador
Quiero poder dar de alta Usuarios/Administradores
Para poder permitirles acceder al sistema

Héctor Jahir Lozano Briones Página 49


[UPM] Máster en Ingeniería Web

Historia Usuario 14 (HU14) - Cancelar Solicitud de Producto


Como usuario
Quiero poder cancelar mi solicitud de producto
Para no disponer del producto en mi oficina o localidad

Historia Usuario 15 (HU15) - Alta Unidad de Medida


Como administrador
Quiero poder dar de alta unidades de medidas
Para poder disponer de ellas cuando realice el ingreso de productos en el almacén

Historia Usuario 16 (HU16) - Modificar Unidad de Medida


Como administrador
Necesito poder modificar unidades de medida
Para actualizar sus datos cuando cambien

Historia Usuario 17 (HU17) - Registrar Orden de Ingreso


Como administrador
Quiero poder registrar las órdenes de ingreso
Para poder controlar el stock del almacén y las entradas de los productos al almacén.

Historia Usuario 18 (HU18) - Modificar Usuario/Administrador


Como administrador
Necesito poder modificar Usuarios/Administradores
Para actualizar sus datos cuando cambien

Historia Usuario 19 (HU19) - Registrar Orden de Egreso


Como administrador
Quiero poder registrar las órdenes de egreso
Para poder controlar el stock del almacén y las salidas de los productos a otros
departamentos u localidades.

Historia Usuario 20 (HU20) - Búsqueda de Producto


Como administrador/usuario
Quiero poder buscar un producto
Para poder acceder a sus datos

Página 50
Análisis y Desarrollo de un Sistema Web para la gestión Kardex de un almacén

Historia Usuario 21 (HU21) - Listar Productos


Como administrador/usuario
Quiero poder listar todos los productos
Para poder saber la cantidad de productos que dispongo en el almacén.

Historia Usuario 22 (HU22) - Consultar Movimiento de Producto


Como administrador
Quiero poder listar todos los movimientos de entrada y salida de los productos
Para poder llevar un mejor control de caja y stock del almacén.

Historia Usuario 23 (HU23) - Diseñar Interfaz Principal


Como Administrador/Usuario
Quiero poder tener una interfaz fácil de usar
Para poder acceder con rapidez a todas las opciones del Sistema

4.1.3. DISEÑO DEL SISTEMA CON SCRUM

DEFINICIÓN DEL PRODUCT BACKLOG

En esta etapa el proyecto se encuentra en condiciones de comenzar con el


desarrollo del mismo utilizando Scrum.

El primer paso es comenzar a armar el Product Backlog, inicialmente


colocamos en él los requerimientos de la etapa de investigación, que será la
primera que llevaremos a cabo, luego colocamos los requerimientos que fueron
identificados a partir de las Historias de Usuario en la planificación inicial del
proyecto que forma parte del análisis y que luego fueron priorizados por el cliente.

Héctor Jahir Lozano Briones Página 51


[UPM] Máster en Ingeniería Web

Identificador Alias Enunciado de la Historia de Usuario Dimensión / Prioridad / Sprint


(ID) de la Esfuerzo Importancia
Historia
HU01 Alta Producto Como administrador 8 Muy Alta #1
Quiero poder dar de alta productos
Para poder disponer de ellos en el Sistema

HU17 Registrar Orden de Como administrador 8 Muy Alta #1


Ingreso Quiero poder registrar las órdenes de ingreso
Para poder controlar el stock del almacén y las
entradas de los productos al almacén.

HU20 Búsqueda de Producto Como administrador/usuario 4 Muy Alta #1


Quiero poder buscar un producto
Para poder acceder a sus datos

HU12 Solicitar Producto Como usuario 8 Muy Alta #2


Quiero poder solicitar un producto
Para poder disponer de el en mi oficina o
localidad

Página 52
Análisis y Desarrollo de un Sistema Web para la gestión Kardex de un almacén

HU19 Registrar Orden de Como administrador 8 Muy Alta #2


Egreso Quiero poder registrar las órdenes de egreso
Para poder controlar el stock del almacén y las
salidas de los productos a otros departamentos u
localidades

HU21 Listar Productos Como administrador/usuario 4 Muy Alta #2


Quiero poder listar todos los productos
Para poder saber la cantidad de productos que
dispongo en el almacén

HU22 Consultar Movimiento Como administrador 8 Muy Alta #3


de Producto Quiero poder listar todos los movimientos de
entrada y salida de los productos
Para poder llevar un mejor control de caja y
stock del almacén.

HU23 Diseñar Interfaz Como Administrador/Usuario 4 Alta #3


Principal Quiero poder tener una interfaz fácil de usar
Para poder acceder con rapidez a todas las
opciones del Sistema

HU14 Cancelar Solicitud de Como usuario 4 Alta #3


Producto Quiero poder cancelar mi solicitud de producto
Para no disponer del producto en mi oficina u
localidad

Héctor Jahir Lozano Briones Página 53


[UPM] Máster en Ingeniería Web

HU04 Alta Cliente Como administrador 4 Alta #3


Quiero poder dar de alta clientes
Para poder disponer de ellos cuando realice las
órdenes de egresos de productos a las
localidades u oficinas de la compañía

HU06 Alta Proveedor Como administrador 4 Alta #4


Quiero poder dar de alta proveedores
Para poder disponer de ellos cuando realice las
ordenes de ingreso de productos en el almacén

HU08 Alta Categoría Como administrador 4 Alta #4


Quiero poder dar de alta categorías
Para poder disponer de ellas cuando realice el
ingreso de productos en el almacén

HU10 Alta Localidad Como administrador 4 Alta #4


Quiero poder dar de alta localidades
Para poder disponer de ellas cuando el usuario
solicite productos en el almacén

HU15 Alta Unidad de Medida Como administrador 4 Alta #4


Quiero poder dar de alta unidades de medidas
Para poder disponer de ellas cuando realice el
ingreso de productos en el almacén

Página 54
Análisis y Desarrollo de un Sistema Web para la gestión Kardex de un almacén

HU05 Modificar Cliente Como administrador 4 Media #4


Necesito poder modificar clientes
Para actualizar sus datos cuando cambien

HU02 Email de confirmación Como Usuario 8 Media #5


Solicitar Producto Necesito poder recibir y enviar al administrador
un email de confirmación
Para poder verificar que se realizó
correctamente la solicitud de producto

HU07 Modificar Proveedor Como administrador 4 Media #5


Necesito poder modificar proveedores
Para actualizar sus datos cuando cambien

HU09 Modificar Categoría Como administrador 4 Media #5


Necesito poder modificar categorías
Para actualizar sus datos cuando cambien

HU11 Modificar Localidad Como administrador 4 Media #5


Necesito poder modificar localidad
Para actualizar sus datos cuando cambien

HU16 Modificar Unidad de Como administrador 4 Media #6


Medida Necesito poder modificar unidades de medidas
Para actualizar sus datos cuando cambien

Héctor Jahir Lozano Briones Página 55


[UPM] Máster en Ingeniería Web

HU13 Alta Como administrador 4 Media #6


Usuario/Administrador Quiero poder dar de alta
Usuarios/Administradores
Para poder permitirles acceder al sistema

HU18 Modificar Como administrador 4 Media #6


Usuario/Administrador Necesito poder modificar
Usuarios/Administradores
Para actualizar sus datos cuando cambien

HU03 Login Como administrador 8 Media #6


Quiero poder tener un login
Para poder restringir el acceso a las personas no
autorizadas

Página 56
Análisis y Desarrollo de un Sistema Web para la gestión Kardex de un almacén

Los requerimientos colocados en el Backlog de Producto se van pasando a los


Backlogs de Sprints y las tareas detalladas en éstos se re-estiman diariamente. Por lo
tanto, se irán presentando de esta manera las variaciones del Backlog de Producto y
de los Backlogs de Sprints.

DEFINICIÓN DEL SPRINT BACKLOG

Como se puede observar a continuación se definen los Sprints con sus tareas
definidas y estimadas en unidades, las cuales se estimarán en horas a posterior, vale
aclarar que es la estimación inicial y varían entre 20 unidades cada uno.

Antes de empezar a implementar los Sprints se procedió a configurar el entorno de


trabajo, el cual llevo a cabo las siguientes tareas:

 Instalar NetBeans como IDE de desarrollo Back-end.


 Instalar Symfony y configurar el IDE para arrancar el Framework.
 Instalar módulos adicionales en Symfony para implementar el API REST.
 Configurar NetBeans para ejecutar las pruebas con PhpUnit.
 Instalar WebStorm como IDE de desarrollo Front-end.
 Instalar AngularJS y configurar IDE para arrancar el Framework.

Backlog Primer Sprint

En las siguientes tablas se presenta el desarrollo del primer Sprint con


sus tareas definidas y estimadas en horas, la estimación inicial de este Sprint es de 7
días laborales con 45 horas de trabajo.

El alcance abarca el Alta de Producto, Registro de Orden de Ingreso y Búsqueda de


Producto previo al desarrollo del software.

Héctor Jahir Lozano Briones Página 57


[UPM] Máster en Ingeniería Web

Tareas - Historia HU01

Identificador de la Historia HU01


Alias Alta Producto
ID Tarea: T01.01
Tarea 1 Definir y diseñar una estructura de almacenamiento de
la información, (Base de Datos).
ID Tarea: T01.02
Tarea 2 Desarrollo de Tests
ID Tarea: T01.03
Tarea 3 Implementar método en el Back-end para crear el
Servicio REST de listar todas las categorías.
ID Tarea: T01.04
Tarea 4 Implementar método en el Back-end para crear el
Servicio REST de listar todas las unidades de medida.
ID Tarea: T01.05
Tarea 5 Implementar método en el Back-end para crear el
Servicio REST de alta de producto.
ID Tarea: T01.06
Tarea 6 Implementar método en el Front-end para consumir el
Servicio REST de listar todas las categorías.
ID Tarea: T01.07
Tarea 7 Implementar método en el Front-end para consumir el
Servicio REST de listar todas las unidades de medida.
ID Tarea: T01.08
Tarea 8 Implementar método en el Front-end para consumir el
Servicio REST de alta de producto.
ID Tarea: T01.09
Tarea 9 Implementar la interfaz web (formulario) para ingresar
la información necesaria y enviarla al Back-end.

Página 58
Análisis y Desarrollo de un Sistema Web para la gestión Kardex de un almacén

Tareas - Historia HU17

Identificador de la Historia HU17


Alias Registrar Orden de Ingreso
ID Tarea: T17.01
Tarea 1 Definir y diseñar una estructura de almacenamiento de
la información, (Base de Datos).
ID Tarea: T17.02
Tarea 2 Desarrollo de Tests
ID Tarea: T17.03
Tarea 3 Implementar método en el Back-end para crear el
Servicio REST de alta de orden de ingreso de un
producto.
ID Tarea: T17.04
Tarea 4 Implementar método en el Back-end para crear el
Servicio REST de listar todos los productos.
ID Tarea: T17.05
Tarea 5 Implementar método en el Back-end para crear el
Servicio REST de listar todos los proveedores.
ID Tarea: T17.06
Tarea 6 Implementar método en el Front-end para consumir el
servicio REST de listar todos los productos.
ID Tarea: T17.07
Tarea 7 Implementar métodos del Front-end para consumir el
servicio REST de listar todos los proveedores.

ID Tarea: T17.08
Tarea 8 Implementar métodos del Front-end para consumir el
servicio REST de alta de orden de ingreso.
ID Tarea: T17.09
Tarea 9 Implementar la interfaz web (formulario) para ingresar
la información necesaria y enviarla al Back-end.

Héctor Jahir Lozano Briones Página 59


[UPM] Máster en Ingeniería Web

Tareas - Historia HU20

Identificador de la Historia HU20


Alias Búsqueda de Producto
ID Tarea: T20.01
Tarea 1 Desarrollo de Tests
ID Tarea: T20.02
Tarea 2 Implementar método en el Back-end para crear el
Servicio REST de buscar producto por nombre.
ID Tarea: T20.03
Tarea 3 Implementar método en el Front-end para consumir el
servicio REST de buscar producto por nombre.
ID Tarea: T20.04
Tarea 4 Implementar la interfaz web (formulario de búsqueda)
para obtener la información del producto.

Ficha de Tareas Del Primer Sprint

Ficha de Tareas - Historia HU01

Identificador de la HU01
Historia
Alias Alta Producto
Historia de Usuario Como administrador
Quiero poder dar de alta productos
Para poder disponer de ellos en el Sistema
ID Tarea: T01.01
Tarea 1 Definir y diseñar una estructura de almacenamiento de la
información, (Base de Datos).
Descripción Se procedió a analizar los requerimientos obtenidos por el
cliente, para definir el diseño de la estructura de
almacenamiento, para esto se creó una base de datos con
las tablas: producto, categoria y unidad_medida
definiendo sus respectivos campos con la información
analizada.
Prioridad Alta
Dimensión / 2 Unidades
Esfuerzo
Tiempo estimado 1 Hora
Tiempo dedicado 2 Horas

Página 60
Análisis y Desarrollo de un Sistema Web para la gestión Kardex de un almacén
Comentarios Diseño:

ID Tarea: T01.02
Tarea 2 Desarrollo de Tests
Descripción Utilizando PhpUnit, se implementó el método
testPostProducts() enviando los datos por medio de
request para guardar la información en la base de datos y
dar de alta un producto. Además se implementaron los
métodos testGetAllCategories(), testGetAllMeasures()
para listar todos sus registros de las tablas
correspondientes y ser utilizados cuando se guarde la
información del producto.
Prioridad Alta
Dimensión / 4 Unidades
Esfuerzo
Tiempo estimado 3 Horas
Tiempo dedicado 4 Horas
Comentarios Código implementado:
Fichero:
apiKardex/tests/AppBundle/Controller/ProductControllerTest
apiKardex/tests/AppBundle/Controller/CategoryControllerTest
apiKardex/tests/AppBundle/Controller/MeasureUnitControllerTest

Método:
testGetAllCategories()
testGetAllMeasures()
testPostProducts()
ID Tarea: T01.03
Tarea 3 Implementar método en el Back-end para crear el Servicio
REST de listar todas las categorías.

Héctor Jahir Lozano Briones Página 61


[UPM] Máster en Ingeniería Web

Descripción Se implementó el método getAllCategoriesAction()


utilizando el Framework Symfony con lenguaje PHP para
listar todas las categorías almacenadas en la Base de
Datos.
Prioridad Alta
Dimensión / 1 Unidad
Esfuerzo
Tiempo estimado 2 Horas
Tiempo dedicado 1 Hora
Comentarios Código implementado:
Fichero:
apiKardex/src/AppBundle/Controller/CategoryController

Método:
getAllCategoriesAction()
ID Tarea: T01.04
Tarea 4 Implementar método en el Back-end para crear el Servicio
REST de listar todas las unidades de medida.
Descripción Se implementó el método getAllMeasuresAction()
utilizando el Framework Symfony con lenguaje PHP para
listar todas las unidades de medida almacenadas en la
Base de Datos.
Prioridad Alta
Dimensión / 1 Unidad
Esfuerzo
Tiempo estimado 2 Horas
Tiempo dedicado 1 Hora
Comentarios Código implementado:
Fichero:
apiKardex/src/AppBundle/Controller/MeasureUnitController

Método:
getAllMeasuresAction()
ID Tarea: T01.05
Tarea 5 Implementar método en el Back-end para crear el Servicio
REST de alta de producto.
Descripción Se implementó el método addProductAction() utilizando
el Framework Symfony con lenguaje PHP para ingresar
la información en la Base de Datos enviada por medio de
un formulario web desde el Front-end.
Prioridad Alta
Dimensión / 2 Unidades
Esfuerzo

Página 62
Análisis y Desarrollo de un Sistema Web para la gestión Kardex de un almacén
Tiempo estimado 2 Horas
Tiempo dedicado 2 Horas

Comentarios Código implementado:


Fichero:
apiKardex/src/AppBundle/Controller/ProductController

Método:
addProductAction()
ID Tarea: T01.06
Tarea 6 Implementar método en el Front-end para consumir el
servicio REST de listar todas las categorías.
Descripción Se implementó el controlador CtrlProduct utilizando el
Framework Angularjs, Jquery y Ajax para consumir el
servicio REST de listar todas las categorías y poder
utilizarlas desde el Front-end.
Prioridad Alta
Dimensión / 1 Unidad
Esfuerzo
Tiempo estimado 2 Horas
Tiempo dedicado 1 Hora
Comentarios Código implementado:
Fichero:
kardexWeb/app/js/angular_script/kardex_controller.js

Método:
Controlador: CtrlProduct, init function()

ID Tarea: T01.07
Tarea 7 Implementar método en el Front-end para consumir el
servicio REST de listar todas las unidades de medida.
Descripción Se implementó el controlador CtrlProduct utilizando el
Framework Angularjs, Jquery y Ajax para consumir el
servicio REST de listar todas las unidades de medida y
poder utilizarlas desde el Front-end.
Prioridad Alta
Dimensión / 1 Unidad
Esfuerzo
Tiempo estimado 2 Horas
Tiempo dedicado 1 Hora

Héctor Jahir Lozano Briones Página 63


[UPM] Máster en Ingeniería Web

Comentarios Código implementado:


Fichero:
kardexWeb/app/js/angular_script/kardex_controller.js

Método:
Controlador: CtrlProduct, init function()

ID Tarea: T01.08
Tarea 8 Implementar método en el Front-end para consumir el
servicio REST de alta de producto.
Descripción Se implementó el controlador CtrlProduct utilizando el
Framework Angularjs, Jquery y Ajax para consumir el
servicio REST de alta de producto.
Prioridad Alta
Dimensión / 2 Unidades
Esfuerzo
Tiempo estimado 2 Horas
Tiempo dedicado 2 Horas
Comentarios Código implementado:
Fichero:
kardexWeb/app/js/angular_script/kardex_controller.js

Método:
Controlador: CtrlProduct, addProduct function()
ID Tarea: T01.09
Tarea 9 Implementar la interfaz web (formulario) para ingresar la
información necesaria y enviarla al Back-end.
Descripción Se implementó la página web con un formulario
utilizando el Framework Angularjs, HTML para ingresar
la información del producto y enviarla al Back-end y ser
almacenada. Adicional se configuró el archivo de rutas de
Angularjs para re-direccionar a la página solicitada.
Prioridad Alta
Dimensión / 1 Unidad
Esfuerzo
Tiempo estimado 2 Horas
Tiempo dedicado 1 Hora
Comentarios Código implementado:
Fichero:
kardexWeb/app/js/angular_script/kardex_routes.js
kardexWeb/app/templates/product/addProduct.html

Método:
appKardex.config()

Página 64
Análisis y Desarrollo de un Sistema Web para la gestión Kardex de un almacén

Ficha de Tareas - Historia HU17

Identificador de la Historia HU17


Alias Registrar Orden de Ingreso
Historia de Usuario Como administrador
Quiero poder registrar las órdenes de ingreso
Para poder controlar el stock del almacén y las
entradas de los productos al almacén
ID Tarea: T17.01
Tarea 1 Definir y diseñar una estructura de almacenamiento de
la información, (Base de Datos)
Descripción Se procedió a analizar los requerimientos obtenidos por
el cliente, para definir el diseño de la estructura de
almacenamiento, para esto se crearon las tablas:
orden_ingreso, proveedor definiendo sus respectivos
campos con la información analizada.
Prioridad Alta
Dimensión / Esfuerzo 2 Unidades
Tiempo estimado 1 Hora
Tiempo dedicado 2 Horas
Comentarios Diseño:

ID Tarea: T17.02
Tarea 2 Desarrollo de Tests
Descripción Utilizando PhpUnit, se implementó el método
testPostEntryOrder() enviando los datos por medio de
request para guardar la información en la base de datos
y dar de alta una orden de ingreso.

Héctor Jahir Lozano Briones Página 65


[UPM] Máster en Ingeniería Web

Además se implementaron los métodos


testGetAllProviders(), testGetAllProducts() para listar
todos sus registros de las tablas correspondientes y
seleccionar uno cuando se guarde la información de la
orden.
Prioridad Alta
Dimensión / Esfuerzo 4 Unidades
Tiempo estimado 3 Horas
Tiempo dedicado 4 Horas
Comentarios Código implementado:
Fichero:
apiKardex/tests/AppBundle/Controller/EntryOrderControllerTest
apiKardex/tests/AppBundle/Controller/ProviderControllerTest
apiKardex/tests/AppBundle/Controller/ProductControllerTest

Método:
testPostEntryOrder()
testGetAllProviders()
testGetAllProducts()

ID Tarea: T17.03
Tarea 3 Implementar método en el Back-end para crear el
Servicio REST de alta de orden de ingreso de un
producto.

Descripción Se implementó el método addEntryOrderAction()


utilizando el Framework Symfony con lenguaje PHP
para poder ingresar la información en la Base de Datos
enviados por medio de un formulario web desde el
Front-end.

Prioridad Alta
Dimensión / Esfuerzo 2 Unidades
Tiempo estimado 2 Horas
Tiempo dedicado 3 Horas
Comentarios Código implementado:
Fichero:
apiKardex/src/AppBundle/Controller/EntryOrderController

Método:
addEntryAction()

ID Tarea: T17.04
Tarea 4 Implementar método en el Back-end para crear el
Servicio REST de listar todos los productos.

Página 66
Análisis y Desarrollo de un Sistema Web para la gestión Kardex de un almacén
Descripción Se implementó el método getAllProductsAction()
utilizando el Framework Symfony con lenguaje PHP
para poder listar todos los productos almacenados en la
Base de Datos.

Prioridad Alta
Dimensión / Esfuerzo 1 Unidad
Tiempo estimado 2 Horas
Tiempo dedicado 1 Hora

Comentarios Código implementado:


Fichero:
apiKardex/src/AppBundle/Controller/ProductController

Método:
getAllProductsAction()
ID Tarea: T17.05
Tarea 5 Implementar método en el Back-end para crear el
Servicio REST de listar todos los proveedores.
Descripción Se implementó el método getAllProvidersAction()
utilizando el Framework Symfony con lenguaje PHP
para poder listar todos los proveedores almacenados en
la Base de Datos.
Prioridad Alta
Dimensión / Esfuerzo 1 Unidad
Tiempo estimado 2 Horas
Tiempo dedicado 1 Hora
Comentarios Código implementado:
Fichero:
apiKardex/src/AppBundle/Controller/ProviderController

Método:
getAllProvidersAction()
ID Tarea: T17.06
Tarea 6 Implementar método en el Front-end para consumir el
servicio REST de listar todos los productos.

Descripción Se implementó el controlador CtrlEntryOrder


utilizando el Framework Angularjs, Jquery y Ajax para
poder consumir el servicio REST de listar todos los
productos y poder ser utilizados desde el Front-end.

Prioridad Alta
Dimensión / Esfuerzo 1 Unidad

Héctor Jahir Lozano Briones Página 67


[UPM] Máster en Ingeniería Web

Tiempo estimado 2 Horas


Tiempo dedicado 2 Horas
Comentarios Código implementado:
Fichero:
kardexWeb/app/js/angular_script/kardex_controller.js

Método:
Controlador: CtrlEntryOrder, init function()

ID Tarea: T17.07
Tarea 7 Implementar métodos del Front-end para consumir el
servicio REST de listar todos los proveedores.
Descripción Se implementó el controlador CtrlEntryOrder
utilizando el Framework Angularjs, Jquery y Ajax para
poder consumir el servicio REST de listar todos los
proveedores y poder ser utilizados desde el Front-end.
Prioridad Alta
Dimensión / Esfuerzo 1 Unidad
Tiempo estimado 1 Hora
Tiempo dedicado 2 Horas
Comentarios Código implementado:
Fichero:
kardexWeb/app/js/angular_script/kardex_controller.js

Método:
Controlador: CtrlEntryOrder, init function()
ID Tarea: T17.08
Tarea 8 Implementar métodos del Front-end para consumir el
servicio REST de alta de orden de ingreso.
Descripción Se implementó el controlador CtrlEntryOrder
utilizando el Framework Angularjs, Jquery y Ajax para
poder consumir el servicio REST de alta de orden de
ingreso de un producto.
Prioridad Alta
Dimensión / Esfuerzo 2 Unidades
Tiempo estimado 1 Hora
Tiempo dedicado 2 Horas
Comentarios Código implementado:
Fichero:
kardexWeb/app/js/angular_script/kardex_controller.js

Método:
Controlador: CtrlEntryOrder, addEntryOrder function()

Página 68
Análisis y Desarrollo de un Sistema Web para la gestión Kardex de un almacén
ID Tarea: T17.09
Tarea 9 Implementar la interfaz web (formulario) para ingresar
la información necesaria y enviarla al Back-end.
Descripción Se implementó la página web con un formulario
utilizando el Framework Angularjs, HTML para poder
ingresar la información de la orden de ingreso del
producto y enviarla al Back-end, para ser almacenada.
Adicional se configuró el archivo de rutas de Angularjs
para re-direccionar a la página solicitada.

Prioridad Alta
Dimensión / Esfuerzo 1 Unidad
Tiempo estimado 2 Horas
Tiempo dedicado 2 Horas

Comentarios Código implementado:


Fichero:
kardexWeb/app/js/angular_script/kardex_routes.js
kardexWeb/app/templates/entryOrder/entryOrder.html

Método:
appKardex.config()

Ficha de Tareas - Historia HU20

Identificador de la Historia HU20


Alias Búsqueda de Producto
Historia de Usuario Como administrador
Quiero poder registrar las órdenes de ingreso
Para poder controlar el stock del almacén y las
entradas de los productos al almacén.
ID Tarea: T20.01
Tarea 1 Desarrollo de Tests
Descripción Utilizando PhpUnit, se implementó el método
testGetProductsByName() para buscar productos por su
nombre.

Prioridad Alta
Dimensión / Esfuerzo 4 Unidades
Tiempo estimado 4 Horas
Tiempo dedicado 4 Horas

Héctor Jahir Lozano Briones Página 69


[UPM] Máster en Ingeniería Web

Comentarios Código implementado:


Fichero:
apiKardex/tests/AppBundle/Controller/ProductControllerTest

Método:
testGetProductsByName()

ID Tarea: T20.02
Tarea 2 Implementar método en el Back-end para crear el
Servicio REST de buscar producto por nombre.
Descripción Se implementó el método getProductByNameAction()
utilizando el Framework Symfony con lenguaje PHP
para poder buscar un producto y mostrar su información
por medio de un formulario web desde el Front-end.

Prioridad Alta
Dimensión / Esfuerzo 2 Unidades
Tiempo estimado 1 Hora
Tiempo dedicado 2 Horas
Comentarios Código implementado:
Fichero:
apiKardex/src/AppBundle/Controller/ProductController

Método:
getProductByNameAction()

ID Tarea: T20.03
Tarea 3 Implementar método en el Front-end para consumir el
servicio REST de buscar producto por nombre.
Descripción Se implementó el controlador CtrlProduct utilizando el
Framework Angularjs, Jquery y Ajax para poder
consumir el servicio REST búsqueda de productos y
presentar la información desde el Front-end.

Prioridad Alta
Dimensión / Esfuerzo 2 Unidades
Tiempo estimado 2 Horas
Tiempo dedicado 2 Horas
Comentarios Código implementado:
Fichero:
kardexWeb/app/js/angular_script/kardex_controller.js

Método:
Controlador: CtrlProduct, findProduct function()

Página 70
Análisis y Desarrollo de un Sistema Web para la gestión Kardex de un almacén
ID Tarea: T20.04
Tarea 4 Implementar la interfaz web (formulario de búsqueda)
para obtener la información del producto.
Descripción Se implementó el formulario Web de búsqueda, y una
tabla con paginación utilizando el Framework
Angularjs, HTML para poder consultar la información
del producto a buscar y presentar su información.
Adicional se configuró el archivo de rutas de Angularjs
para re-direccionar a la página solicitada.
Prioridad Alta
Dimensión / Esfuerzo 2 Unidades
Tiempo estimado 2 Horas
Tiempo dedicado 3 Horas
Comentarios Código implementado:
Fichero:
kardexWeb/app/js/angular_script/kardex_routes.js
kardexWeb/app/templates/product/findProduct.html

Método:
appKardex.config()

Héctor Jahir Lozano Briones Página 71


[UPM] Máster en Ingeniería Web

Burndown Chart del Primer Sprint

Días Horas Horas


Restantes Restantes
(Estimadas) (Dedicadas)
1 43 45
2 38 38
3 31 30
4 26 25
5 19 17
6 14 12
7 6 7

Sprint 1
50
45
40
35
30
25
20
15
10
5
0
1 2 3 4 5 6 7 8

Horas Estimadas Horas Dedicadas

Gráfico de Tarea Ideal

Página 72
Análisis y Desarrollo de un Sistema Web para la gestión Kardex de un almacén

Backlog Segundo Sprint

En las siguientes tablas se presenta el desarrollo del segundo Sprint con


sus tareas definidas y estimadas en horas, la estimación inicial de este Sprint es de 7
días laborales con 40 horas de trabajo.

El alcance abarca el Solicitar Producto, Registro de Orden de Egreso y Listar


Producto previo al desarrollo del software.

Tareas - Historia HU12

Identificador de la Historia HU12


Alias Solicitar Producto
ID Tarea: T12.01
Tarea 1 Definir y diseñar una estructura de almacenamiento de
la información, (Base de Datos)
ID Tarea: T12.02
Tarea 2 Desarrollo de Tests
ID Tarea: T12.03
Tarea 3 Implementar método en el Back-end para crear el
Servicio REST de alta de solicitud de producto.
ID Tarea: T12.04
Tarea 4 Implementar método en el Back-end para crear el
Servicio REST de listar todas las localidades.
ID Tarea: T12.05
Tarea 5 Implementar métodos en el Front-end para consumir el
servicio REST de solicitar producto.
ID Tarea: T12.06
Tarea 6 Implementar método en el Front-end para consumir el
servicio REST de listar todas las localidades.
ID Tarea: T12.07
Tarea 7 Implementar método en el Front-end para consumir el
servicio REST de listar todos los productos.
ID Tarea: T12.08
Tarea 8 Implementar la interfaz web (formulario) para ingresar
la información necesaria y enviarla al Back-end.

Héctor Jahir Lozano Briones Página 73


[UPM] Máster en Ingeniería Web

Tareas - Historia HU19

Identificador de la Historia HU19


Alias Registrar Orden de Egreso
ID Tarea: T19.01
Tarea 1 Definir y diseñar una estructura de almacenamiento de
la información, (Base de Datos)
ID Tarea: T19.02
Tarea 2 Desarrollo de Tests
ID Tarea: T19.03
Tarea 3 Implementar método en el Back-end para crear el
Servicio REST de alta de orden de egreso de un
producto.
ID Tarea: T19.04
Tarea 4 Implementar método en el Back-end para crear el
Servicio REST de listar todas las solicitudes de
productos.
ID Tarea: T19.05
Tarea 5 Implementar método en el Back-end para crear el
Servicio REST de listar todos los clientes o encargados.
ID Tarea: T19.06
Tarea 6 Implementar método en el Front-end para consumir el
servicio REST de listar todas las solicitudes de
productos.
ID Tarea: T19.07
Tarea 7 Implementar método en el Front-end para consumir el
servicio REST de listar todos los clientes o encargados.
ID Tarea: T19.08
Tarea 8 Implementar método en el Front-end para consumir el
servicio REST de alta de orden de egreso.
ID Tarea: T19.09
Tarea 9 Implementar la interfaz web (formulario) para ingresar
la información necesaria y enviarla al Back-end.

Página 74
Análisis y Desarrollo de un Sistema Web para la gestión Kardex de un almacén

Tareas - Historia HU21

Identificador de la Historia HU21


Alias Listar Productos
ID Tarea: T21.01
Tarea 1 Implementar métodos en el Front-end para consumir el
servicio REST de listar productos.
ID Tarea: T21.02
Tarea 2 Implementar la interfaz web para obtener la
información de todos los productos.

Ficha de Tareas del Segundo Sprint

Ficha de Tareas - Historia HU12

Identificador de la Historia HU12


Alias Solicitar Producto
Historia de Usuario Como usuario
Quiero poder solicitar un producto
Para poder disponer de el en mi oficina o
localidad
ID Tarea: T12.01
Tarea 1 Definir y diseñar una estructura de almacenamiento de
la información, (Base de Datos)
Descripción Se procedió a analizar los requerimientos obtenidos por
el cliente, para definir el diseño de la estructura de
almacenamiento, para esto se crearon las tablas
solicitud_producto, localidad definiendo sus
respectivos campos con la información analizada.
Prioridad Alta
Dimensión / Esfuerzo 2 Unidades
Tiempo estimado 2 Horas
Tiempo dedicado 2 Horas

Héctor Jahir Lozano Briones Página 75


[UPM] Máster en Ingeniería Web

Comentarios Diseño:

ID Tarea: T12.02
Tarea 2 Desarrollo de Tests
Descripción Utilizando PhpUnit, se implementó el método
testPostRequestProduct() enviando los datos por medio
de request para guardar la información en la base de
datos y poder solicitar un producto. Además se
implementó el método testGetAllLocations para listar
todos sus registros de las tablas correspondientes y ser
utilizados cuando se guarde la información de la
solicitud.

Prioridad Alta
Dimensión / Esfuerzo 4 Unidades
Tiempo estimado 4 Hora
Tiempo dedicado 3 Horas
Comentarios Código implementado:
Fichero:
apiKardex/tests/AppBundle/Controller/ProductControllerTest
apiKardex/tests/AppBundle/Controller/LocationControllerTest

Método:
testPostRequestProduct()
testGetAllLocations()

ID Tarea: T12.03
Tarea 3 Implementar método en el Back-end para crear el
Servicio REST de alta de solicitud de producto.

Página 76
Análisis y Desarrollo de un Sistema Web para la gestión Kardex de un almacén
Descripción Se implementó el método requestProductAction()
utilizando el Framework Symfony con lenguaje PHP
para poder ingresar la información en la Base de Datos
enviados por medio de un formulario web desde el
Front-end.
Prioridad Alta
Dimensión / Esfuerzo 4 Unidades
Tiempo estimado 3 Hora
Tiempo dedicado 3 Horas
Comentarios Código implementado:
Fichero:
apiKardex/src/AppBundle/Controller/ProductController

Método:
requestProductAction()

ID Tarea: T12.04
Tarea 4 Implementar método en el Back-end para crear el
Servicio REST de listar todas las localidades.
Descripción Se implementó el método getAllLocations() utilizando
el Framework Symfony con lenguaje PHP para listar
todos las localidades almacenadas en la Base de Datos.
Prioridad Alta
Dimensión / Esfuerzo 1 Unidad
Tiempo estimado 1 Hora
Tiempo dedicado 1 Hora
Comentarios Código implementado:
Fichero:
apiKardex/src/AppBundle/Controller/LocationController

Método:
getAllLocationsAction()

ID Tarea: T12.05
Tarea 5 Implementar método en el Front-end para consumir el
servicio REST de solicitar producto.
Descripción Se implementó el controlador CtrlRequestProduct
utilizando el Framework Angularjs, Jquery y Ajax para
consumir el servicio REST de solicitar producto desde
el Front-end.
Prioridad Alta
Dimensión / Esfuerzo 2 Unidades
Tiempo estimado 1 Hora
Tiempo dedicado 2 Horas

Héctor Jahir Lozano Briones Página 77


[UPM] Máster en Ingeniería Web

Comentarios Código implementado:


Fichero:
kardexWeb/app/js/angular_script/kardex_controller.js

Método:
Controlador: CtrlRequestProduct, requestProduct function()
ID Tarea: T12.06
Tarea 6 Implementar método en el Front-end para consumir el
servicio REST de listar todas las localidades.
Descripción Se implementó el controlador CtrlRequestProduct
utilizando el Framework Angularjs, Jquery y Ajax para
consumir el servicio REST de listar localidades y poder
utilizarlas desde el Front-end.
Prioridad Alta
Dimensión / Esfuerzo 1 Unidad
Tiempo estimado 1 Hora
Tiempo dedicado 1 Hora
Comentarios Código implementado:
Fichero:
kardexWeb/app/js/angular_script/kardex_controller.js

Método:
Controlador: CtrlRequestProduct, init function()
ID Tarea: T12.07
Tarea 7 Implementar método en el Front-end para consumir el
servicio REST de listar todos los productos.
Descripción Se implementó el controlador CtrlRequestProduct
utilizando el Framework Angularjs, Jquery y Ajax para
poder consumir el servicio REST de listar productos y
poder utilizarlos desde el Front-end.

Prioridad Alta
Dimensión / Esfuerzo 2 Unidades
Tiempo estimado 3 Horas
Tiempo dedicado 2 Horas
Comentarios Código implementado:
Fichero:
kardexWeb/app/js/angular_script/kardex_controller.js

Método:
Controlador: CtrlRequestProduct, init function()
ID Tarea: T12.08
Tarea 8 Implementar la interfaz web (formulario) para ingresar
la información necesaria y enviarla al Back-end.

Página 78
Análisis y Desarrollo de un Sistema Web para la gestión Kardex de un almacén
Descripción Se implementó la página web con un formulario
utilizando el Framework Angularjs, HTML para poder
ingresar la información de la solicitud del producto y
enviarla al Back-end, para ser almacenada. Adicional se
configuró el archivo de rutas de Angularjs para re-
direccionar a la página solicitada.

Prioridad Alta
Dimensión / Esfuerzo 2 Unidades
Tiempo estimado 1 Hora
Tiempo dedicado 2 Horas
Comentarios Código implementado:
Fichero:
kardexWeb/app/js/angular_script/kardex_routes.js
kardexWeb/app/templates/product/requestProduct.html

Método:
appKardex.config()

Ficha de Tareas - Historia HU19

Identificador de la Historia HU19


Alias Registrar Orden de Egreso
Historia de Usuario Como administrador
Quiero poder registrar las órdenes de egreso
Para poder controlar el stock del almacén y las
salidas de los productos a otras localidades.
ID Tarea: T19.01
Tarea 1 Definir y diseñar una estructura de almacenamiento de la
información, (Base de Datos)
Descripción Se procedió a analizar los requerimientos obtenidos por
el cliente, para definir el diseño de la estructura de
almacenamiento, para esto se crearon las tablas:
orden_egreso y cliente definiendo sus respectivos
campos con la información analizada.
Prioridad Alta
Dimensión / 2 Unidades
Esfuerzo
Tiempo estimado 2 Horas
Tiempo dedicado 2 Horas

Héctor Jahir Lozano Briones Página 79


[UPM] Máster en Ingeniería Web

Comentarios Diseño:

ID Tarea: T19.02
Tarea 2 Desarrollo de Tests
Descripción Utilizando PhpUnit, se implementó el método
testPostOutputOrder() enviando los datos por medio de
request para guardar la información en la base de datos y
dar de alta una orden de ingreso. Además se
implementaron los métodos testGetAllRequest(),
testGetAllClients() para listar todos sus registros de las
tablas correspondientes y ser utilizados cuando se guarde
la información de la orden.
Prioridad Alta
Dimensión / 4 Unidades
Esfuerzo
Tiempo estimado 3 Horas
Tiempo dedicado 4 Horas
Comentarios Código implementado:
Fichero:
apiKardex/tests/AppBundle/Controller/OutputOrderControllerTest
apiKardex/tests/AppBundle/Controller/ProductControllerTest
apiKardex/tests/AppBundle/Controller/ClientControllerTest

Método:
testPostOutputOrder()
testGetAllRequest()
testGetAllClients()
ID Tarea: T19.03
Tarea 3 Implementar método en el Back-end para crear el
Servicio REST de alta de orden de egreso de un producto.

Página 80
Análisis y Desarrollo de un Sistema Web para la gestión Kardex de un almacén
Descripción Se implementó el método addOutputOrderAction()
utilizando el Framework Symfony con lenguaje PHP
para poder ingresar la información en la Base de Datos
enviados por medio de un formulario web desde el Front-
end.

Prioridad Alta
Dimensión / 4 Unidades
Esfuerzo
Tiempo estimado 2 Horas
Tiempo dedicado 4 Horas
Comentarios Código implementado:
Fichero:
apiKardex/src/AppBundle/Controller/OutputOrderController

Método:
addOutputOrderAction()

ID Tarea: T19.04
Tarea 4 Implementar método en el Back-end para crear el
Servicio REST de listar todas las solicitudes de
productos.
Descripción Se implementó el método getAllRequestProductAction()
utilizando el Framework Symfony con lenguaje PHP
para poder listar todas las solicitudes almacenadas en la
Base de Datos.
Prioridad Alta
Dimensión / 2 Unidades
Esfuerzo
Tiempo estimado 2 Horas
Tiempo dedicado 2 Horas
Comentarios Código implementado:
Fichero:
apiKardex/src/AppBundle/Controller/ProductController

Método:
getAllRequestProductAction()
ID Tarea: T19.05
Tarea 5 Implementar método en el Back-end para crear el
Servicio REST de listar todos los clientes o encargados.
Descripción Se implementó el método getAllClientsAction()
utilizando el Framework Symfony con lenguaje PHP
para poder listar todos los clientes o encargados
almacenados en la Base de Datos.

Héctor Jahir Lozano Briones Página 81


[UPM] Máster en Ingeniería Web

Prioridad Alta
Dimensión / 1 Unidad
Esfuerzo
Tiempo estimado 1 Hora
Tiempo dedicado 1 Hora
Comentarios Código implementado:
Fichero:
apiKardex/src/AppBundle/Controller/ClientController

Método:
getAllClientsAction()
ID Tarea: T19.06
Tarea 6 Implementar método en el Front-end para consumir el
servicio REST de listar todas las solicitudes de
productos.
Descripción Se implementó el controlador CtrlOutputOrder
utilizando el Framework Angularjs, Jquery y Ajax para
poder consumir el servicio REST de listar todas las
solicitudes de productos y poder utilizarlas desde el
Front-end.
Prioridad Alta
Dimensión / 2 Unidades
Esfuerzo
Tiempo estimado 2 Horas
Tiempo dedicado 2 Horas
Comentarios Código implementado:
Fichero:
kardexWeb/app/js/angular_script/kardex_controller.js

Método:
Controlador: CtrlOutputOrder, init function()

ID Tarea: T19.07
Tarea 7 Implementar método en el Front-end para consumir el
servicio REST de listar todos los clientes o encargados.
Descripción Se implementó el controlador CtrlOutputOrder
utilizando el Framework Angularjs, Jquery y Ajax para
poder consumir el servicio REST de listar todos los
clientes o encargados y poder utilizarlos desde el Front-
end.

Prioridad Alta
Dimensión / 1 Unidad
Esfuerzo

Página 82
Análisis y Desarrollo de un Sistema Web para la gestión Kardex de un almacén
Tiempo estimado 1 Hora
Tiempo dedicado 1 Hora
Comentarios Código implementado:
Fichero:
kardexWeb/app/js/angular_script/kardex_controller.js

Método:
Controlador: CtrlOutputOrder, init function()

ID Tarea: T19.08
Tarea 8 Implementar método en el Front-end para consumir el
servicio REST de alta de orden de egreso.

Descripción Se implementó el controlador CtrlOutputOrder


utilizando el Framework Angularjs, Jquery y Ajax para
poder consumir el servicio REST de alta de orden de
egreso de un producto.

Prioridad Alta
Dimensión / 2 Unidades
Esfuerzo
Tiempo estimado 1 Hora
Tiempo dedicado 2 Horas
Comentarios Código implementado:
Fichero:
kardexWeb/app/js/angular_script/kardex_controller.js

Método:
Controlador: CtrlOutputOrder, addOutputOrder function()

ID Tarea: T19.09
Tarea 9 Implementar la interfaz web (formulario) para ingresar la
información necesaria y enviarla al Back-end.

Descripción Se implementó la página web con un formulario


utilizando el Framework Angularjs, HTML para poder
ingresar la información de la orden de egreso y enviarla
al Back-end, para ser almacenada. Adicional se
configuró el archivo de rutas de Angularjs para re-
direccionar a la página solicitada.

Prioridad Alta

Héctor Jahir Lozano Briones Página 83


[UPM] Máster en Ingeniería Web

Dimensión / 2 Unidades
Esfuerzo
Tiempo estimado 2 Horas
Tiempo dedicado 2 Horas
Comentarios Código implementado:
Fichero:
kardexWeb/app/js/angular_script/kardex_routes.js
kardexWeb/app/templates/outputOrder/OutputOrder.html

Método:
appKardex.config()

Ficha de Tareas - Historia HU21

Identificador de la Historia HU21


Alias Listar Productos
Historia de Usuario Como usuario
Quiero poder solicitar un producto
Para poder disponer de el en mi oficina o
localidad
ID Tarea: T21.01
Tarea 1 Implementar métodos en el Front-end para consumir el
servicio REST de listar productos.
Descripción Se implementó el controlador CtrlProduct utilizando el
Framework Angularjs, Jquery y Ajax para poder
consumir el servicio REST de listar todos los productos.

Prioridad Alta
Dimensión / Esfuerzo 2 Unidades
Tiempo estimado 2 Horas
Tiempo dedicado 2 Horas
Comentarios Código implementado:
Fichero:
kardexWeb/app/js/angular_script/kardex_controller.js

Método:
Controlador: CtrlProduct, listProducts function()

ID Tarea: T21.02
Tarea 2 Implementar la interfaz web para obtener la
información de todos los productos.

Página 84
Análisis y Desarrollo de un Sistema Web para la gestión Kardex de un almacén
Descripción Se implementó la interfaz Web utilizando el Framework
Angularjs, HTML para poder consultar la información
de todos los productos. Adicional se configuró el
archivo de rutas de Angularjs para re-direccionar a la
página solicitada.

Prioridad Alta
Dimensión / Esfuerzo 2 Unidades
Tiempo estimado 1 Hora
Tiempo dedicado 2 Horas
Comentarios Código implementado:
Fichero:
kardexWeb/app/js/angular_script/kardex_routes.js
kardexWeb/app/templates/product/listProduct.html

Método:
appKardex.config()

Héctor Jahir Lozano Briones Página 85


[UPM] Máster en Ingeniería Web

Burndown Chart del Segundo Sprint

Días Horas Horas


Restantes Restantes
(Estimadas) (Dedicadas)
1 35 40
2 32 36
3 26 31
4 21 26
5 14 16
6 11 11
7 6 5

Sprint 2
45
40
35
30
25
20
15
10
5
0
1 2 3 4 5 6 7 8

Horas Estimadas Horas Dedicadas

Gráfico de Tarea Ideal

Página 86
Análisis y Desarrollo de un Sistema Web para la gestión Kardex de un almacén

Backlog Tercer Sprint

En las siguientes tablas se presenta el desarrollo del tercer Sprint con


sus tareas definidas y estimadas en horas, la estimación inicial de este Sprint es de 8
días laborales con 48 horas de trabajo.

El alcance abarca Consultar Movimiento de Producto, Diseño de la Interfaz


Principal, Cancelar Solicitud de Producto y Alta de Cliente previo al desarrollo del
software.

Tareas - Historia HU22

Identificador de la Historia HU22


Alias Consultar Movimiento de Producto
ID Tarea: T22.01
Tarea 1 Desarrollo de Tests
ID Tarea: T22.02
Tarea 2 Implementar método en el Back-end para crear el
Servicio REST de buscar los movimientos de entrada
por código de producto.
ID Tarea: T22.03
Tarea 3 Implementar método en el Back-end para crear el
Servicio REST de buscar los movimientos de salida por
código de producto.
ID Tarea: T22.04
Tarea 4 Implementar método en el Back-end para crear el
Servicio REST de buscar producto por código.
ID Tarea: T22.05
Tarea 5 Implementar método en el Front-end para consumir el
servicio REST de buscar los movimientos de entrada
por código de producto.

ID Tarea: T22.06
Tarea 6 Implementar método en el Front-end para consumir el
servicio REST de buscar los movimientos de salida por
código de producto.
ID Tarea: T22.07
Tarea 7 Implementar método en el Front-end para consumir el
servicio REST de buscar producto por código

Héctor Jahir Lozano Briones Página 87


[UPM] Máster en Ingeniería Web

ID Tarea: T22.08
Tarea 8 Implementar la interfaz web para buscar y presentar la
información de los movimientos de un producto.

Tareas - Historia HU26

Identificador de la Historia HU23


Alias Diseñar Interfaz Principal
ID Tarea: T23.01
Tarea 1 Diseñar la estructura de la Interfaz de la aplicación
ID Tarea: T23.02
Tarea 2 Implementar página principal de la aplicación
ID Tarea: T23.03
Tarea 3 Implementar menú con las opciones del sistema.

Tareas - Historia HU14

Identificador de la Historia HU14


Alias Cancelar Solicitud de Producto
ID Tarea: T14.01
Tarea 1 Desarrollo de Tests
ID Tarea: T14.02
Tarea 2 Implementar método en el Back-end para crear el
Servicio REST de buscar solicitud de producto por id.
ID Tarea: T14.03
Tarea 3 Implementar método en el Back-end para actualizar el
estado de la solicitud para cancelarla.
ID Tarea: T14.04
Tarea 4 Implementar método en el Front-end para consumir el
servicio REST de buscar solicitud de producto por id.
ID Tarea: T14.05
Tarea 5 Implementar método en el Front-end para consumir el
servicio REST de actualizar el estado de la solicitud
para cancelarla.
ID Tarea: T14.06
Tarea 6 Implementar la interfaz web para buscar la solicitud,
presentar la información de la misma y poder
cancelarla.

Página 88
Análisis y Desarrollo de un Sistema Web para la gestión Kardex de un almacén

Tareas - Historia HU04

Identificador de la Historia HU04


Alias Alta Cliente
ID Tarea: T04.01
Tarea 1 Desarrollo de Tests
ID Tarea: T04.02
Tarea 2 Implementar método en el Back-end para crear el
Servicio REST de alta de cliente.
ID Tarea: T04.03
Tarea 3 Implementar método en el Front-end para consumir el
servicio REST de alta de cliente.
ID Tarea: T04.04
Tarea 4 Implementar la interfaz web (formulario) para ingresar
la información necesaria y enviarla al Back-end.

Ficha de Tareas del Tercer Sprint

Ficha de Tareas - Historia HU22

Identificador de la HU22
Historia
Alias Consultar Movimientos de Productos
Historia de Usuario Como administrador
Quiero poder listar todos los movimientos de entrada
y salida de los productos
Para poder llevar un mejor control de caja y stock
del almacén.
ID Tarea: T22.01
Tarea 1 Desarrollo de Tests
Descripción Utilizando PhpUnit, se implementaron los métodos:
testGetEntryMovementByProduct() para buscar los
movimientos de entrada de un producto por su código,
testGetOutputMovementByProduct() para buscar los
movimientos de salida de un producto por su código,
testGetProductByCode() para buscar un producto por su
código.
Prioridad Alta

Héctor Jahir Lozano Briones Página 89


[UPM] Máster en Ingeniería Web

Dimensión / 4 Unidades
Esfuerzo
Tiempo estimado 5 Horas
Tiempo dedicado 4 Horas
Comentarios Código implementado:
Fichero:
apiKardex/tests/AppBundle/Controller/EntryOrderControllerTest
apiKardex/tests/AppBundle/Controller/OutputOrderControllerTest
apiKardex/tests/AppBundle/Controller/ProductControllerTest

Método:
testGetEntryMovementByProduct ()
testGetOutputMovementByProduct ()
testGetProductByCode ()

ID Tarea: T22.02
Tarea 2 Implementar método en el Back-end para crear el
Servicio REST de buscar los movimientos de entrada por
código de producto.

Descripción Se implementó el método


getEntryMovementByProductAction() utilizando el
Framework Symfony con lenguaje PHP para buscar los
movimientos de entrada de un producto y mostrar su
información por medio de un formulario web desde el
Front-end.

Prioridad Alta
Dimensión / 2 Unidades
Esfuerzo
Tiempo estimado 3 Horas
Tiempo dedicado 2 Horas
Comentarios Código implementado:
Fichero:
apiKardex/src/AppBundle/Controller/EntryOrderController

Método:
getEntryMovementByProductAction ()

ID Tarea: T22.03
Tarea 3 Implementar método en el Back-end para crear el
Servicio REST de buscar los movimientos de salida por
código de producto.

Página 90
Análisis y Desarrollo de un Sistema Web para la gestión Kardex de un almacén
Descripción Se implementó el método
getOutputMovementByProductAction() utilizando el
Framework Symfony con lenguaje PHP para buscar los
movimientos de salida de un producto y mostrar su
información por medio de un formulario web desde el
Front-end.
Prioridad Alta
Dimensión / 2 Unidades
Esfuerzo
Tiempo estimado 3 Horas
Tiempo dedicado 2 Horas
Comentarios Código implementado:
Fichero:
apiKardex/src/AppBundle/Controller/OutputOrderController

Método:
getOutputMovementByProductAction()

ID Tarea: T22.04
Tarea 4 Implementar método en el Back-end para crear el
Servicio REST de buscar producto por código.
Descripción Se implementó el método getProductByCodeAction()
utilizando el Framework Symfony con lenguaje PHP
para buscar un producto por su código y mostrar su
información por medio de un formulario web desde el
Front-end.

Prioridad Alta
Dimensión / 2 Unidades
Esfuerzo
Tiempo estimado 2 Horas
Tiempo dedicado 2 Horas
Comentarios Código implementado:
Fichero:
apiKardex/src/AppBundle/Controller/ProductController

Método:
getProductByCodeAction ()

ID Tarea: T22.05
Tarea 5 Implementar método en el Front-end para consumir el
servicio REST de buscar los movimientos de entrada por
código de producto.

Héctor Jahir Lozano Briones Página 91


[UPM] Máster en Ingeniería Web

Descripción Se implementó el controlador CtrlKardexConsult


utilizando el Framework Angularjs, Jquery y Ajax para
consumir el servicio REST de buscar los movimientos de
entrada por código de producto y presentar la
información desde el Front-end.
Prioridad Alta
Dimensión / 2 Unidades
Esfuerzo
Tiempo estimado 2 Horas
Tiempo dedicado 2 Horas
Comentarios Código implementado:
Fichero:
kardexWeb/app/js/angular_script/kardex_controller.js

Método:
Controlador: CtrlKardexConsult, searchMovement function()

ID Tarea: T22.06
Tarea 6 Implementar método en el Front-end para consumir el
servicio REST de buscar los movimientos de salida por
código de producto.

Descripción Se implementó el controlador CtrlKardexConsult


utilizando el Framework Angularjs, Jquery y Ajax para
consumir el servicio REST de buscar los movimientos de
salida por código de producto y presentar la información
desde el Front-end.

Prioridad Alta
Dimensión / 2 Unidades
Esfuerzo
Tiempo estimado 2 Horas
Tiempo dedicado 2 Horas
Comentarios Código implementado:
Fichero:
kardexWeb/app/js/angular_script/kardex_controller.js

Método:
Controlador: CtrlKardexConsult, searchMovement function()

ID Tarea: T22.07
Tarea 7 Implementar método en el Front-end para consumir el
servicio REST de buscar producto por código.

Página 92
Análisis y Desarrollo de un Sistema Web para la gestión Kardex de un almacén
Descripción Se implementó el controlador CtrlKardexConsult
utilizando el Framework Angularjs, Jquery y Ajax para
poder consumir el servicio REST búsqueda de producto
por código y presentar la información desde el Front-end.
Prioridad Alta
Dimensión / 2 Unidades
Esfuerzo
Tiempo estimado 1 Hora
Tiempo dedicado 2 Horas
Comentarios Código implementado:
Fichero:
kardexWeb/app/js/angular_script/kardex_controller.js

Método:
Controlador: CtrlKardexConsult, searchMovement function()
ID Tarea: T22.08
Tarea 8 Implementar la interfaz web para buscar y presentar la
información de los movimientos de un producto.
Descripción Se implementó el formulario Web de búsqueda, y una
tabla con paginación utilizando el Framework
Angularjs, HTML para poder presentar la información
consultada del producto y sus movimientos de entrada y
salida. Adicional se configuró el archivo de rutas de
Angularjs para re-direccionar a la página solicitada.
Prioridad Alta
Dimensión / 4 Unidades
Esfuerzo
Tiempo estimado 3 Horas
Tiempo dedicado 4 Horas
Comentarios Código implementado:
Fichero:
kardexWeb/app/js/angular_script/kardex_routes.js
kardexWeb/app/templates/product/kardexConsult.html

Método:
appKardex.config()

Héctor Jahir Lozano Briones Página 93


[UPM] Máster en Ingeniería Web

Ficha de Tareas - Historia HU23

Identificador de la Historia HU23


Alias Diseñar Interfaz Principal
Historia de Usuario Como Administrador/Usuario
Quiero poder tener una interfaz fácil de usar
Para poder acceder con rapidez a todas las
opciones del Sistema
ID Tarea: T23.01
Tarea 1 Diseñar la estructura de la Interfaz de la aplicación.
Descripción Se procedió a instalar la librería de Bootstrap para
definir la estructura en la plantilla HTML de la cual
extenderán todas las páginas de la aplicación.
Prioridad Alta
Dimensión / Esfuerzo 2 Unidades
Tiempo estimado 2 Horas
Tiempo dedicado 2 Horas
Comentarios Código implementado:
No aplica
ID Tarea: T23.02
Tarea 2 Implementar página principal de la aplicación
Descripción Diseñar e implementar la página principal, la cual es la
página de bienvenida al momento de hacer login.

Prioridad Alta
Dimensión / Esfuerzo 1 Unidad
Tiempo estimado 1 Hora
Tiempo dedicado 1 Hora
Comentarios Código implementado:
Fichero:
kardexWeb/app/js/angular_script/kardex_routes.js
kardexWeb/app/templates/home.html

Método:
appKardex.config()

ID Tarea: T23.03
Tarea 3 Implementar menú con las opciones del sistema.
Descripción Diseñar e implementar la interfaz web que permita
disponer de un menú para acceder a las distintas partes
de la aplicación.

Página 94
Análisis y Desarrollo de un Sistema Web para la gestión Kardex de un almacén
Prioridad Alta
Dimensión / Esfuerzo 2 Unidades
Tiempo estimado 1 Hora
Tiempo dedicado 2 Horas
Comentarios Código implementado:
Fichero:
kardexWeb/app/templates/index.html

Ficha de Tareas - Historia HU14

Identificador de la Historia HU14


Alias Cancelar Solicitud de Producto
Historia de Usuario Como usuario
Quiero poder cancelar mi solicitud de producto
Para no disponer del producto en mi oficina u
localidad
ID Tarea: T14.01
Tarea 1 Desarrollo de Tests
Descripción Utilizando PhpUnit, se implementaron los métodos:
testGetRequestById() para buscar una solicitud de
producto por id, testCancelRequest() para cancelar una
solicitud de producto.
Prioridad Alta
Dimensión / Esfuerzo 4 Unidades
Tiempo estimado 4 Horas
Tiempo dedicado 4 Horas
Comentarios Código implementado:
Fichero:
apiKardex/tests/AppBundle/Controller/ProductControllerTest

Método:
testGetRequestById()
testCancelRequest()

ID Tarea: T14.02
Tarea 2 Implementar método en el Back-end para crear el
Servicio REST de buscar solicitud de producto por id.
Descripción Se implementó el método getRequestByIdAction()
utilizando el Framework Symfony con lenguaje PHP
para poder buscar una solicitud de producto por id y
mostrar su información por medio de un formulario
web desde el Front-end.

Héctor Jahir Lozano Briones Página 95


[UPM] Máster en Ingeniería Web

Prioridad Alta
Dimensión / Esfuerzo 2 Unidades
Tiempo estimado 3 Horas
Tiempo dedicado 2 Horas
Comentarios Código implementado:
Fichero:
apiKardex/src/AppBundle/Controller/ProductController

Método:
getRequestByIdAction()
ID Tarea: T14.03
Tarea 3 Implementar método en el Back-end para actualizar el
estado de la solicitud para cancelarla.
Descripción Se implementó el método cancelRequestAction()
utilizando el Framework Symfony con lenguaje PHP
para cancelar la solicitud de un producto.
Prioridad Alta
Dimensión / Esfuerzo 2 Unidades
Tiempo estimado 2 Horas
Tiempo dedicado 2 Horas
Comentarios Código implementado:
Fichero:
apiKardex/src/AppBundle/Controller/ProductController

Método:
cancelRequestAction()
ID Tarea: T14.04
Tarea 4 Implementar método en el Front-end para consumir el
servicio REST de buscar solicitud de producto por id.
Descripción Se implementó el método en el controlador
CtrlRequestProduct utilizando el Framework
Angularjs, Jquery y Ajax para consumir el servicio
REST de solicitud de producto por id y presentar la
información desde el Front-end.
Prioridad Alta
Dimensión / Esfuerzo 2 Unidades
Tiempo estimado 1 Hora
Tiempo dedicado 2 Horas
Comentarios Código implementado:
Fichero:
kardexWeb/app/js/angular_script/kardex_controller.js

Método:
Controlador: CtrlRequestProduct, findRequest function()

Página 96
Análisis y Desarrollo de un Sistema Web para la gestión Kardex de un almacén
ID Tarea: T14.05
Tarea 5 Implementar método en el Front-end para consumir el
servicio REST de actualizar el estado de la solicitud
para cancelarla.
Descripción Se implementó el método en el controlador
CtrlRequestProduct utilizando el Framework
Angularjs, Jquery y Ajax para consumir el servicio
REST de cancelar la solicitud de un producto.

Prioridad Alta
Dimensión / Esfuerzo 2 Unidades
Tiempo estimado 1 Hora
Tiempo dedicado 2 Horas
Comentarios Código implementado:
Fichero:
kardexWeb/app/js/angular_script/kardex_controller.js

Método:
Controlador: CtrlRequestProduct, cancelRequest function()

ID Tarea: T14.06
Tarea 6 Implementar la interfaz web para buscar y presentar la
información de la solicitud de un producto.
Descripción Se implementó el formulario Web de búsqueda
utilizando el Framework Angularjs, HTML para poder
presentar la información consultada de la solicitud de
producto, para luego poder ser cancelada. Adicional se
configuró el archivo de rutas de Angularjs para re-
direccionar a la página solicitada.

Prioridad Alta
Dimensión / Esfuerzo 4 Unidades
Tiempo estimado 2 Horas
Tiempo dedicado 4 Horas
Comentarios Código implementado:
Fichero:
kardexWeb/app/js/angular_script/kardex_routes.js
kardexWeb/app/templates/product/cancelRequest.html

Método:
appKardex.config()

Héctor Jahir Lozano Briones Página 97


[UPM] Máster en Ingeniería Web

Ficha de Tareas - Historia HU04

Identificador de la Historia HU04


Alias Alta Cliente
Historia de Usuario Como administrador
Quiero poder dar de alta clientes
Para poder disponer de ellos cuando realice las
órdenes de egresos de productos a las
localidades u oficinas de la compañía.
ID Tarea: T04.01
Tarea 1 Desarrollo de Tests
Descripción Utilizando PhpUnit, se implementó el método
testPostClient() enviando los datos por medio de request
para guardar la información en la base de datos y dar de
alta un cliente.
Prioridad Alta
Dimensión / Esfuerzo 4 Unidades
Tiempo estimado 2 Horas
Tiempo dedicado 2 Horas
Comentarios Código implementado:
Fichero:
apiKardex/tests/AppBundle/Controller/ClientControllerTest

Método:
testPostClient()
ID Tarea: T04.02
Tarea 2 Implementar método en el Back-end para crear el
Servicio REST de alta de cliente.
Descripción Se implementó el método addClientAction() utilizando
el Framework Symfony con lenguaje PHP para ingresar
la información en la Base de Datos enviada por medio
de un formulario web desde el Front-end.
Prioridad Alta
Dimensión / Esfuerzo 2 Unidad
Tiempo estimado 2 Horas
Tiempo dedicado 2 Horas
Comentarios Código implementado:
Fichero:
apiKardex/src/AppBundle/Controller/ClientController

Método:
addClientAction()

Página 98
Análisis y Desarrollo de un Sistema Web para la gestión Kardex de un almacén
ID Tarea: T04.03
Tarea 3 Implementar método en el Front-end para consumir el
servicio REST de alta de cliente.
Descripción Se implementó el controlador CtrlClient utilizando el
Framework Angularjs, Jquery y Ajax para consumir el
servicio REST de alta de cliente.
Prioridad Alta
Dimensión / Esfuerzo 2 Unidades
Tiempo estimado 1 Hora
Tiempo dedicado 2 Horas
Comentarios Código implementado:
Fichero:
kardexWeb/app/js/angular_script/kardex_controller.js

Método:
Controlador: CtrlClient, addClient function()

ID Tarea: T04.04
Tarea 4 Implementar la interfaz web (formulario) para ingresar
la información necesaria y enviarla al Back-end.
Descripción Se implementó la página web con un formulario
utilizando el Framework Angularjs, HTML para poder
ingresar la información del cliente y enviarla al Back-
end, para ser almacenada. Adicional se configuró el
archivo de rutas de Angularjs para re-direccionar a la
página solicitada.
Prioridad Alta
Dimensión / Esfuerzo 1 Unidad
Tiempo estimado 2 Horas
Tiempo dedicado 1 Hora
Comentarios Código implementado:
Fichero:
kardexWeb/app/js/angular_script/kardex_routes.js
kardexWeb/app/templates/product/addClient.html

Método:
appKardex.config()

Héctor Jahir Lozano Briones Página 99


[UPM] Máster en Ingeniería Web

Burndown Chart del Tercer Sprint

Días Horas Horas


Restantes Restantes
(Estimadas) (Dedicadas)
1 45 48
2 40 43
3 36 37
4 32 31
5 25 25
6 21 20
7 15 12
8 8 6

Sprint 3
60

50

40

30

20

10

0
1 2 3 4 5 6 7 8 9

Horas Estimadas Horas Dedicadas

Gráfico de Tarea Ideal

Página 100
Análisis y Desarrollo de un Sistema Web para la gestión Kardex de un almacén

Backlog Cuarto Sprint

En las siguientes tablas se presenta el desarrollo del cuarto Sprint con


sus tareas definidas y estimadas en horas, la estimación inicial de este Sprint es de 6
días laborales con 46 horas de trabajo.

El alcance abarca Alta de Proveedores, Alta de Categorias, Alta de Localidad, Alta


de Unidad de Medida y Modificar Clientes previo al desarrollo del software.

Tareas - Historia HU06

Identificador de la Historia HU06


Alias Alta Proveedor
ID Tarea: T06.01
Tarea 1 Desarrollo de Tests
ID Tarea: T06.02
Tarea 2 Implementar método en el Back-end para crear el
Servicio REST de alta de proveedores.
ID Tarea: T06.03
Tarea 3 Implementar método en el Front-end para consumir el
servicio REST de alta de proveedores.
ID Tarea: T06.04
Tarea 4 Implementar la interfaz web (formulario) para ingresar
la información necesaria y enviarla al Back-end.

Tareas - Historia HU08

Identificador de la Historia HU08


Alias Alta Categoría
ID Tarea: T08.01
Tarea 1 Desarrollo de Tests
ID Tarea: T08.02
Tarea 2 Implementar método en el Back-end para crear el
Servicio REST de alta de categoría.
ID Tarea: T08.03
Tarea 3 Implementar método en el Front-end para consumir el
servicio REST de alta de categoría.

Héctor Jahir Lozano Briones Página 101


[UPM] Máster en Ingeniería Web

ID Tarea: T08.04
Tarea 4 Implementar la interfaz web (formulario) para ingresar
la información necesaria y enviarla al Back-end.

Tareas - Historia HU10

Identificador de la Historia HU10


Alias Alta Localidad
ID Tarea: T10.01
Tarea 1 Desarrollo de Tests
ID Tarea: T10.02
Tarea 2 Implementar método en el Back-end para crear el
Servicio REST de alta de localidad.
ID Tarea: T10.03
Tarea 3 Implementar método en el Front-end para consumir el
servicio REST de alta de localidad.
ID Tarea: T10.04
Tarea 4 Implementar la interfaz web (formulario) para ingresar
la información necesaria y enviarla al Back-end.

Tareas - Historia HU15

Identificador de la Historia HU15


Alias Alta Unidad de Medida
ID Tarea: T15.01
Tarea 1 Desarrollo de Tests
ID Tarea: T15.02
Tarea 2 Implementar método en el Back-end para crear el
Servicio REST de alta de unidad de medida.
ID Tarea: T15.03
Tarea 3 Implementar método en el Front-end para consumir el
servicio REST de alta de unidad de medida.
ID Tarea: T15.04
Tarea 4 Implementar la interfaz web (formulario) para ingresar
la información necesaria y enviarla al Back-end.

Página 102
Análisis y Desarrollo de un Sistema Web para la gestión Kardex de un almacén

Tareas - Historia HU05

Identificador de la Historia HU05


Alias Modificar Cliente
ID Tarea: T05.01
Tarea 1 Desarrollo de Tests
ID Tarea: T05.02
Tarea 2 Implementar método en el Back-end para crear el
Servicio REST de buscar cliente por DNI.
ID Tarea: T05.03
Tarea 3 Implementar método en el Back-end para crear el
Servicio REST de modificar cliente.
ID Tarea: T05.04
Tarea 4 Implementar método en el Front-end para consumir el
servicio REST de listar todos los clientes.
ID Tarea: T05.05
Tarea 5 Implementar método en el Front-end para consumir el
servicio REST de buscar cliente por id.
ID Tarea: T05.06
Tarea 6 Implementar método en el Front-end para consumir el
servicio REST de modificar cliente.
ID Tarea: T05.07
Tarea 7 Implementar la interfaz web para listar todos los
clientes almacenados en el Sistema.
ID Tarea: T05.08
Tarea 8 Implementar la interfaz web (formulario) para editar la
información necesaria del cliente y enviarla al Back-
end.

Ficha de Tareas del Cuarto Sprint

Ficha de Tareas - Historia HU06

Identificador de la Historia HU06


Alias Alta Proveedor
Historia de Usuario Como administrador
Quiero poder dar de alta proveedores
Para poder disponer de ellos cuando realice las
ordenes de ingreso de productos en el almacén.

Héctor Jahir Lozano Briones Página 103


[UPM] Máster en Ingeniería Web

ID Tarea: T06.01
Tarea 1 Desarrollo de Tests
Descripción Utilizando PhpUnit, se implementó el método
testPostProvider() enviando los datos por medio de
request para guardar la información en la base de datos
y dar de alta un proveedor.
Prioridad Alta
Dimensión / Esfuerzo 4 Unidades
Tiempo estimado 2 Horas
Tiempo dedicado 2 Horas
Comentarios Código implementado:
Fichero:
apiKardex/tests/AppBundle/Controller/ProviderControllerTest

Método:
testPostProvider()
ID Tarea: T06.02
Tarea 2 Implementar método en el Back-end para crear el
Servicio REST de alta de proveedor.
Descripción Se implementó el método addProviderAction()
utilizando el Framework Symfony con lenguaje PHP
para poder ingresar la información en la Base de Datos
enviada por medio de un formulario web desde el Front-
end.
Prioridad Alta
Dimensión / Esfuerzo 2 Unidad
Tiempo estimado 1 Hora
Tiempo dedicado 1 Hora
Comentarios Código implementado:
Fichero:
apiKardex/src/AppBundle/Controller/ProviderController

Método:
addProviderAction()

ID Tarea: T06.03
Tarea 3 Implementar método en el Front-end para consumir el
servicio REST de alta de proveedor.
Descripción Se implementó el controlador CtrlProvider utilizando el
Framework Angularjs, Jquery y Ajax para consumir el
servicio REST de alta de proveedor.
Prioridad Alta
Dimensión / Esfuerzo 2 Unidades
Tiempo estimado 2 Horas

Página 104
Análisis y Desarrollo de un Sistema Web para la gestión Kardex de un almacén
Tiempo dedicado 2 Horas
Comentarios Código implementado:
Fichero:
kardexWeb/app/js/angular_script/kardex_controller.js

Método:
Controlador: CtrlProvider, addProvider function()

ID Tarea: T06.04
Tarea 4 Implementar la interfaz web (formulario) para ingresar
la información necesaria y enviarla al Back-end.
Descripción Se implementó la página web con un formulario
utilizando el Framework Angularjs, HTML para
ingresar la información del proveedor y enviarla al
Back-end, para ser almacenada. Adicional se configuró
el archivo de rutas de Angularjs para re-direccionar a la
página solicitada.
Prioridad Alta
Dimensión / Esfuerzo 1 Unidad
Tiempo estimado 1 Hora
Tiempo dedicado 1 Hora
Comentarios Código implementado:
Fichero:
kardexWeb/app/js/angular_script/kardex_routes.js
kardexWeb/app/templates/product/addProvider.html

Método:
appKardex.config()

Ficha de Tareas - Historia HU08

Identificador de la Historia HU08


Alias Alta Categoría
Historia de Usuario Como administrador
Quiero poder dar de alta categorías
Para poder disponer de ellas cuando realice el
ingreso de productos en el almacén
ID Tarea: T08.01
Tarea 1 Desarrollo de Tests
Descripción Utilizando PhpUnit, se implementó el método
testPostCategory() enviando los datos por medio de
request para guardar la información en la base de datos
y dar de alta una categoría.

Héctor Jahir Lozano Briones Página 105


[UPM] Máster en Ingeniería Web

Prioridad Alta
Dimensión / Esfuerzo 2 Unidades
Tiempo estimado 2 Horas
Tiempo dedicado 2 Horas
Comentarios Código implementado:
Fichero:
apiKardex/tests/AppBundle/Controller/CategoryControllerTest

Método:
testPostCategory()
ID Tarea: T08.02
Tarea 2 Implementar método en el Back-end para crear el
Servicio REST de alta de categoría.
Descripción Se implementó el método addCategoryAction()
utilizando el Framework Symfony con lenguaje PHP
para poder ingresar la información en la Base de Datos
enviada por medio de un formulario web desde el Front-
end.
Prioridad Alta
Dimensión / Esfuerzo 1 Unidad
Tiempo estimado 2 Horas
Tiempo dedicado 1 Hora
Comentarios Código implementado:
Fichero:
apiKardex/src/AppBundle/Controller/CategoryController

Método:
addCategoryAction()
ID Tarea: T08.03
Tarea 3 Implementar método en el Front-end para consumir el
servicio REST de alta de categoría.
Descripción Se implementó el controlador CtrlCategory utilizando
el Framework Angularjs, Jquery y Ajax para consumir
el servicio REST de alta de categoría.
Prioridad Alta
Dimensión / Esfuerzo 2 Unidades
Tiempo estimado 2 Horas
Tiempo dedicado 2 Horas
Comentarios Código implementado:
Fichero:
kardexWeb/app/js/angular_script/kardex_controller.js

Método:
Controlador: CtrlCategory, addCategory function()

Página 106
Análisis y Desarrollo de un Sistema Web para la gestión Kardex de un almacén
ID Tarea: T08.04
Tarea 4 Implementar la interfaz web (formulario) para ingresar
la información necesaria y enviarla al Back-end.
Descripción Se implementó la página web con un formulario
utilizando el Framework Angularjs, HTML para poder
ingresar la información de la categoría y enviarla al
Back-end, para ser almacenada. Adicional se configuró
el archivo de rutas de Angularjs para re-direccionar a la
página solicitada.
Prioridad Alta
Dimensión / Esfuerzo 1 Unidad
Tiempo estimado 1 Hora
Tiempo dedicado 1 Hora
Comentarios Código implementado:
Fichero:
kardexWeb/app/js/angular_script/kardex_routes.js
kardexWeb/app/templates/category/addCategory.html

Método:
appKardex.config()

Ficha de Tareas - Historia HU10

Identificador de la Historia HU10


Alias Alta Localidad
Historia de Usuario Como administrador
Quiero poder dar de alta localidades
Para poder disponer de ellas cuando el usuario
solicite productos en el almacén.
ID Tarea: T10.01
Tarea 1 Desarrollo de Tests
Descripción Utilizando PhpUnit, se implementó el método
testPostLocation() enviando los datos por medio de
request para guardar la información en la base de datos
y dar de alta una localidad.

Prioridad Alta
Dimensión / Esfuerzo 2 Unidades
Tiempo estimado 2 Horas
Tiempo dedicado 2 Horas

Héctor Jahir Lozano Briones Página 107


[UPM] Máster en Ingeniería Web

Comentarios Código implementado:


Fichero:
apiKardex/tests/AppBundle/Controller/LocationControllerTest

Método:
testPostLocation()
ID Tarea: T10.02
Tarea 2 Implementar método en el Back-end para crear el
Servicio REST de alta de categoría.
Descripción Se implementó el método addLocationAction()
utilizando el Framework Symfony con lenguaje PHP
para poder ingresar la información en la Base de Datos
enviada por medio de un formulario web desde el Front-
end.

Prioridad Alta
Dimensión / Esfuerzo 1 Unidad
Tiempo estimado 2 Horas
Tiempo dedicado 1 Hora
Comentarios Código implementado:
Fichero:
apiKardex/src/AppBundle/Controller/LocationController

Método:
addLocationAction()

ID Tarea: T10.03
Tarea 3 Implementar método en el Front-end para consumir el
servicio REST de alta de localidad.

Descripción Se implementó el controlador CtrlLocation utilizando el


Framework Angularjs, Jquery y Ajax para consumir el
servicio REST de alta de localidad.
Prioridad Alta
Dimensión / Esfuerzo 2 Unidades
Tiempo estimado 2 Horas
Tiempo dedicado 2 Horas
Comentarios Código implementado:
Fichero:
kardexWeb/app/js/angular_script/kardex_controller.js

Método:
Controlador: CtrlLocation, addLocation function()

Página 108
Análisis y Desarrollo de un Sistema Web para la gestión Kardex de un almacén
ID Tarea: T10.04
Tarea 4 Implementar la interfaz web (formulario) para ingresar
la información necesaria y enviarla al Back-end.
Descripción Se implementó la página web con un formulario
utilizando el Framework Angularjs, HTML para poder
ingresar la información de la localidad y enviarla al
Back-end, para ser almacenada. Adicional se configuró
el archivo de rutas de Angularjs para re-direccionar a la
página solicitada.
Prioridad Alta
Dimensión / Esfuerzo 1 Unidad
Tiempo estimado 2 Horas
Tiempo dedicado 1 Hora
Comentarios Código implementado:
Fichero:
kardexWeb/app/js/angular_script/kardex_routes.js
kardexWeb/app/templates/category/addLocation.html

Método:
appKardex.config()

Ficha de Tareas - Historia HU15

Identificador de la Historia HU15


Alias Alta Unidad de Medida
Historia de Usuario Como administrador
Quiero poder dar de alta localidades
Para poder disponer de ellas cuando el usuario
solicite productos en el almacén.
ID Tarea: T15.01
Tarea 1 Desarrollo de Tests
Descripción Utilizando PhpUnit, se implementó el método
testPostMeasureUnit() enviando los datos por medio de
request para guardar la información en la base de datos y
dar de alta una unidad de medida.

Prioridad Alta
Dimensión / 2 Unidades
Esfuerzo
Tiempo estimado 2 Horas
Tiempo dedicado 2 Horas

Héctor Jahir Lozano Briones Página 109


[UPM] Máster en Ingeniería Web

Comentarios Código implementado:


Fichero:
apiKardex/tests/AppBundle/Controller/MeasureUnitControllerTest

Método:
testPostMeasureUnit()
ID Tarea: T15.02
Tarea 2 Implementar método en el Back-end para crear el
Servicio REST de alta de unidad de medida.
Descripción Se implementó el método addMeasureUnitAction()
utilizando el Framework Symfony con lenguaje PHP para
poder ingresar la información en la Base de Datos
enviada por medio de un formulario web desde el Front-
end.
Prioridad Alta
Dimensión / 1 Unidad
Esfuerzo
Tiempo estimado 2 Horas
Tiempo dedicado 1 Hora
Comentarios Código implementado:
Fichero:
apiKardex/src/AppBundle/Controller/MeasureUnitController

Método:
addMeasureUnitAction()

ID Tarea: T15.03
Tarea 3 Implementar método en el Front-end para consumir el
servicio REST de alta de unidad de medida.
Descripción Se implementó el controlador CtrlMeasureUnit
utilizando el Framework Angularjs, Jquery y Ajax para
consumir el servicio REST de alta de unidad de medida.
Prioridad Alta
Dimensión / 2 Unidades
Esfuerzo
Tiempo estimado 2 Horas
Tiempo dedicado 2 Horas
Comentarios Código implementado:
Fichero:
kardexWeb/app/js/angular_script/kardex_controller.js

Método:
Controlador: CtrlMeasureUnit, addMeasureUnit function()

Página 110
Análisis y Desarrollo de un Sistema Web para la gestión Kardex de un almacén
ID Tarea: T15.04
Tarea 4 Implementar la interfaz web (formulario) para ingresar la
información necesaria y enviarla al Back-end.
Descripción Se implementó la página web con un formulario
utilizando el Framework Angularjs, HTML para poder
ingresar la información de la unidad de medida y enviarla
al Back-end, para ser almacenada. Adicional se configuró
el archivo de rutas de Angularjs para re-direccionar a la
página solicitada.
Prioridad Alta
Dimensión / 1 Unidad
Esfuerzo
Tiempo estimado 2 Horas
Tiempo dedicado 1 Hora
Comentarios Código implementado:
Fichero:
kardexWeb/app/js/angular_script/kardex_routes.js
kardexWeb/app/templates/measureUnit/addMeasureUnit.html

Método:
appKardex.config()

Ficha de Tareas - Historia HU05

Identificador de la Historia HU05


Alias Modificar Cliente
Historia de Usuario Como administrador
Necesito poder modificar clientes
Para actualizar sus datos cuando cambien
ID Tarea: T05.01
Tarea 1 Desarrollo de Tests
Descripción Utilizando PhpUnit, se implementaron los métodos
testPutClient(), testGetClientByDni().
Prioridad Alta
Dimensión / Esfuerzo 4 Unidades
Tiempo estimado 3 Horas
Tiempo dedicado 4 Horas
Comentarios Código implementado:
Fichero:
apiKardex/tests/AppBundle/Controller/ClientControllerTest

Método:
testPutClient()
testGetClientByDni()

Héctor Jahir Lozano Briones Página 111


[UPM] Máster en Ingeniería Web

ID Tarea: T05.02
Tarea 2 Implementar método en el Back-end para crear el
Servicio REST de buscar cliente por DNI.
Descripción Se implementó el método getClientByDniAction()
utilizando el Framework Symfony con lenguaje PHP
para buscar la información en la Base de Datos de un
cliente mediante su DNI.
Prioridad Alta
Dimensión / Esfuerzo 1 Unidad
Tiempo estimado 1 Hora
Tiempo dedicado 1 Hora
Comentarios Código implementado:
Fichero:
apiKardex/src/AppBundle/Controller/ClientController

Método:
getClientByDniAction()
ID Tarea: T05.03
Tarea 3 Implementar método en el Back-end para crear el
Servicio REST de modificar cliente.
Descripción Se implementó el método editClientAction() utilizando
el Framework Symfony con lenguaje PHP para editar la
información de un cliente en la Base de Datos enviada
por medio de un formulario web desde el Front-end.
Prioridad Alta
Dimensión / Esfuerzo 2 Unidades
Tiempo estimado 1 Hora
Tiempo dedicado 2 Horas
Comentarios Código implementado:
Fichero:
apiKardex/src/AppBundle/Controller/ClientController

Método:
editClientAction()
ID Tarea: T05.04
Tarea 4 Implementar método en el Front-end para consumir el
servicio REST de listar todos los clientes.
Descripción Se implementó el controlador CtrlClient utilizando el
Framework Angularjs, Jquery y Ajax para consumir el
servicio REST de listar clientes.
Prioridad Alta
Dimensión / Esfuerzo 1 Unidad
Tiempo estimado 1 Hora
Tiempo dedicado 1 Hora

Página 112
Análisis y Desarrollo de un Sistema Web para la gestión Kardex de un almacén
Comentarios Código implementado:
Fichero:
kardexWeb/app/js/angular_script/kardex_controller.js

Método:
Controlador: CtrlClient, listClients function()
ID Tarea: T05.05
Tarea 5 Implementar método en el Front-end para consumir el
servicio REST de buscar cliente por DNI.
Descripción Se implementó el controlador CtrlClient utilizando el
Framework Angularjs, Jquery y Ajax para consumir el
servicio REST de buscar cliente por id.
Prioridad Alta
Dimensión / Esfuerzo 1 Unidad
Tiempo estimado 1 Hora
Tiempo dedicado 1 Hora
Comentarios Código implementado:
Fichero:
kardexWeb/app/js/angular_script/kardex_controller.js

Método:
Controlador: CtrlClient, findClient function()
ID Tarea: T05.06
Tarea 6 Implementar método en el Front-end para consumir el
servicio REST de modificar cliente.
Descripción Se implementó el controlador CtrlClient utilizando el
Framework Angularjs, Jquery y Ajax para consumir el
servicio REST de modificar cliente.

Prioridad Alta
Dimensión / Esfuerzo 1 Unidad
Tiempo estimado 2 Horas
Tiempo dedicado 1 Hora
Comentarios Código implementado:
Fichero:
kardexWeb/app/js/angular_script/kardex_controller.js

Método:
Controlador: CtrlClient, editClient function()

ID Tarea: T05.07
Tarea 7 Implementar la interfaz web para listar todos los
clientes almacenados en el Sistema.

Héctor Jahir Lozano Briones Página 113


[UPM] Máster en Ingeniería Web

Descripción Se implementó la página web utilizando el Framework


Angularjs, HTML para poder listar la información de
todos los clientes almacenados. Adicional se configuró
el archivo de rutas de Angularjs para re-direccionar a la
página solicitada.

Prioridad Alta
Dimensión / Esfuerzo 2 Unidades
Tiempo estimado 1 Hora
Tiempo dedicado 2 Horas
Comentarios Código implementado:
Fichero:
kardexWeb/app/js/angular_script/kardex_routes.js
kardexWeb/app/templates/client/listClients.html

Método:
appKardex.config()
ID Tarea: T05.08
Tarea 8 Implementar la interfaz web (formulario) con la
información del cliente, lista para editarla si es
necesario y enviarla al Back-end.
Descripción Se implementó la página web con un formulario
utilizando el Framework Angularjs, HTML para editar
la información del cliente y enviarla al Back-end, para
ser almacenada. Adicional se configuró el archivo de
rutas de Angularjs para re-direccionar a la página
solicitada.
Prioridad Alta
Dimensión / Esfuerzo 2 Unidades
Tiempo estimado 2 Horas
Tiempo dedicado 2 Horas
Comentarios Código implementado:
Fichero:
kardexWeb/app/js/angular_script/kardex_routes.js
kardexWeb/app/templates/client/editClient.html

Método:
appKardex.config()

Página 114
Análisis y Desarrollo de un Sistema Web para la gestión Kardex de un almacén

Burndown Chart del Cuarto Sprint

Días Horas Horas


Restantes Restantes
(Estimadas) (Dedicadas)
1 41 38
2 36 33
3 33 29
4 29 24
5 23 20
6 15 14
7 10 9
8 5 5

Sprint 4
45
40
35
30
25
20
15
10
5
0
1 2 3 4 5 6 7 8 9

Horas Estimadas Horas Dedicadas

Gráfico de Tarea Ideal

Héctor Jahir Lozano Briones Página 115


[UPM] Máster en Ingeniería Web

Backlog Quinto Sprint

En las siguientes tablas se presenta el desarrollo del quinto Sprint con


sus tareas definidas y estimadas en horas, la estimación inicial de este Sprint es de
10 días laborales con 50 horas de trabajo.

El alcance abarca Email de confirmación en Solicitar Producto, Modificar


Proveedor, Modificar Categoría, Modificar Localidad previo al desarrollo del
software.

Tareas - Historia HU02

Identificador de la Historia HU02


Alias Email de confirmación - Solicitar Producto
ID Tarea: T02.01
Tarea 1 Configurar Framework Symfony para envío de mails.
ID Tarea: T02.02
Tarea 2 Desarrollo de Tests
ID Tarea: T02.03
Tarea 3 Implementar método en el Back-end para crear el
Servicio REST de enviar email.

Tareas - Historia HU07

Identificador de la Historia HU07


Alias Modificar Proveedor
ID Tarea: T07.01
Tarea 1 Desarrollo de Tests
ID Tarea: T07.02
Tarea 2 Implementar método en el Back-end para crear el
Servicio REST de buscar proveedor por id.
ID Tarea: T07.03
Tarea 3 Implementar método en el Back-end para crear el
Servicio REST de modificar proveedor.
ID Tarea: T07.04
Tarea 4 Implementar método en el Front-end para consumir el
servicio REST de listar todos los proveedores.

Página 116
Análisis y Desarrollo de un Sistema Web para la gestión Kardex de un almacén
ID Tarea: T07.05
Tarea 5 Implementar método en el Front-end para consumir el
servicio REST de buscar proveedor por id.
ID Tarea: T07.06
Tarea 6 Implementar método en el Front-end para consumir el
servicio REST de modificar proveedor.
ID Tarea: T07.07
Tarea 7 Implementar la interfaz web para listar todos los
proveedores almacenados en el Sistema.
ID Tarea: T07.08
Tarea 8 Implementar la interfaz web (formulario) para editar la
información necesaria del proveedor y enviarla al Back-
end.

Tareas - Historia HU09

Identificador de la Historia HU09


Alias Modificar Categoría
ID Tarea: T09.01
Tarea 1 Desarrollo de Tests
ID Tarea: T09.02
Tarea 2 Implementar método en el Back-end para crear el
Servicio REST de buscar categoría por id.
ID Tarea: T09.03
Tarea 3 Implementar método en el Back-end para crear el
Servicio REST de modificar categoría.
ID Tarea: T09.04
Tarea 4 Implementar método en el Front-end para consumir el
servicio REST de listar todas las categorías.
ID Tarea: T09.05
Tarea 5 Implementar método en el Front-end para consumir el
servicio REST de buscar categoría por id.
ID Tarea: T09.06
Tarea 6 Implementar método en el Front-end para consumir el
servicio REST de modificar categoría.
ID Tarea: T09.07
Tarea 7 Implementar la interfaz web para listar todas las
categorías almacenadas en el Sistema.
ID Tarea: T09.08
Tarea 8 Implementar la interfaz web (formulario) para editar la
información necesaria de la categoría y enviarla al
Back-end.

Héctor Jahir Lozano Briones Página 117


[UPM] Máster en Ingeniería Web

Tareas - Historia HU11

Identificador de la Historia HU11


Alias Modificar Localidad
ID Tarea: T11.01
Tarea 1 Desarrollo de Tests
ID Tarea: T11.02
Tarea 2 Implementar método en el Back-end para crear el
Servicio REST de buscar localidad por id.
ID Tarea: T11.03
Tarea 3 Implementar método en el Back-end para crear el
Servicio REST de modificar localidad.
ID Tarea: T11.04
Tarea 4 Implementar método en el Front-end para consumir el
servicio REST de listar todas las localidades.
ID Tarea: T11.05
Tarea 5 Implementar método en el Front-end para consumir el
servicio REST de buscar localidad por id.
ID Tarea: T11.06
Tarea 6 Implementar método en el Front-end para consumir el
servicio REST de modificar localidad.
ID Tarea: T11.07
Tarea 7 Implementar la interfaz web para listar todas las
localidades almacenadas en el Sistema.
ID Tarea: T11.08
Tarea 8 Implementar la interfaz web (formulario) para editar la
información necesaria de la localidad y enviarla al
Back-end.

Página 118
Análisis y Desarrollo de un Sistema Web para la gestión Kardex de un almacén

Ficha de Tareas del Quinto Sprint

Ficha de Tareas - Historia HU02

Identificador de la Historia HU02


Alias Email de confirmación - Solicitar Producto
Historia de Usuario Como Usuario
Necesito poder recibir y enviar al
administrador un email de confirmación
Para poder verificar que se realizó
correctamente la solicitud de producto.
ID Tarea: T02.01
Tarea 1 Configurar Framework Symfony para envío de mails.
Descripción Utilizando el Framework Symfony, se procedió a
instalar el Bundle SwiftmailerBundle y configurar el
fichero parameters.yml para el envío de correos.

Prioridad Alta
Dimensión / Esfuerzo 4 Unidades
Tiempo estimado 3 Horas
Tiempo dedicado 4 Horas
Comentarios Código implementado:
Fichero:
apiKardex/app/appKernel.php
apiKardex/app/config/parameters.yml

ID Tarea: T02.02
Tarea 2 Desarrollo de Tests
Descripción Utilizando PhpUnit, se implementó el método
testSendEmail().

Prioridad Alta
Dimensión / Esfuerzo 4 Unidades
Tiempo estimado 2 Horas
Tiempo dedicado 2 Horas
Comentarios Código implementado:
Fichero:
apiKardex/tests/AppBundle/Controller/ProductControllerTest

Método:
testSendEmail()

Héctor Jahir Lozano Briones Página 119


[UPM] Máster en Ingeniería Web

ID Tarea: T02.03
Tarea 3 Implementar método en el Back-end para crear el
Servicio REST de enviar email.
Descripción Se implementó el método sendEmailAction() utilizando
el Framework Symfony con lenguaje PHP para realizar
las pruebas correspondientes, para luego incluir el
código implementado en el método de Solicitar
Producto requestProductAction().
Prioridad Alta
Dimensión / Esfuerzo 2 Unidades
Tiempo estimado 2 Horas
Tiempo dedicado 2 Horas
Comentarios Código implementado:
Fichero:
apiKardex/src/AppBundle/Controller/ProductController

Método:
sendEmailAction()
requestProductAction()

Ficha de Tareas - Historia HU07

Identificador de la Historia HU07


Alias Modificar Proveedor
Historia de Usuario Como administrador
Necesito poder modificar proveedores
Para actualizar sus datos cuando cambien
ID Tarea: T07.01
Tarea 1 Desarrollo de Tests
Descripción Utilizando PhpUnit, se implementaron los métodos
testPutProvider(), testGetProviderById().
Prioridad Alta
Dimensión / Esfuerzo 4 Unidades
Tiempo estimado 3 Horas
Tiempo dedicado 4 Horas
Comentarios Código implementado:
Fichero:
apiKardex/tests/AppBundle/Controller/ProviderControllerTest

Método:
testPutProvider()
testGetProviderById()

Página 120
Análisis y Desarrollo de un Sistema Web para la gestión Kardex de un almacén
ID Tarea: T07.02
Tarea 2 Implementar método en el Back-end para crear el
Servicio REST de buscar proveedor por id.
Descripción Se implementó el método getProviderByIdAction()
utilizando el Framework Symfony con lenguaje PHP
para buscar la información en la Base de Datos de un
proveedor mediante su id.

Prioridad Alta
Dimensión / Esfuerzo 1 Unidad
Tiempo estimado 1 Hora
Tiempo dedicado 1 Hora
Comentarios Código implementado:
Fichero:
apiKardex/src/AppBundle/Controller/ProviderController

Método:
getProviderByIdAction()
ID Tarea: T07.03
Tarea 3 Implementar método en el Back-end para crear el
Servicio REST de modificar proveedor.

Descripción Se implementó el método editProviderAction()


utilizando el Framework Symfony con lenguaje PHP
para poder editar la información de un proveedor en la
Base de Datos enviada por medio de un formulario web
desde el Front-end.

Prioridad Alta
Dimensión / Esfuerzo 2 Unidades
Tiempo estimado 1 Hora
Tiempo dedicado 2 Horas
Comentarios Código implementado:
Fichero:
apiKardex/src/AppBundle/Controller/ProviderController

Método:
editProviderAction()
ID Tarea: T07.04
Tarea 4 Implementar método en el Front-end para consumir el
servicio REST de listar todos los proveedores.

Héctor Jahir Lozano Briones Página 121


[UPM] Máster en Ingeniería Web

Descripción Se implementó el controlador CtrlProvider utilizando el


Framework Angularjs, Jquery y Ajax para consumir el
servicio REST de listar proveedores.

Prioridad Alta
Dimensión / Esfuerzo 1 Unidad
Tiempo estimado 1 Hora
Tiempo dedicado 1 Hora
Comentarios Código implementado:
Fichero:
kardexWeb/app/js/angular_script/kardex_controller.js

Método:
Controlador: CtrlProvider, listProviders function()

ID Tarea: T07.05
Tarea 5 Implementar método en el Front-end para consumir el
servicio REST de buscar proveedor por id.
Descripción Se implementó el controlador CtrlProvider utilizando el
Framework Angularjs, Jquery y Ajax para consumir el
servicio REST de buscar proveedor por id.

Prioridad Alta
Dimensión / Esfuerzo 1 Unidad
Tiempo estimado 1 Hora
Tiempo dedicado 1 Hora
Comentarios Código implementado:
Fichero:
kardexWeb/app/js/angular_script/kardex_controller.js

Método:
Controlador: CtrlProvider, findProvider function()

ID Tarea: T07.06
Tarea 6 Implementar método en el Front-end para consumir el
servicio REST de modificar proveedor.
Descripción Se implementó el controlador CtrlProvider utilizando el
Framework Angularjs, Jquery y Ajax para consumir el
servicio REST de modificar proveedor.

Prioridad Alta
Dimensión / Esfuerzo 1 Unidad
Tiempo estimado 2 Horas
Tiempo dedicado 1 Hora

Página 122
Análisis y Desarrollo de un Sistema Web para la gestión Kardex de un almacén
Comentarios Código implementado:
Fichero:
kardexWeb/app/js/angular_script/kardex_controller.js

Método:
Controlador: CtrlProvider, editProvider function()
ID Tarea: T07.07
Tarea 7 Implementar la interfaz web para listar todos los
proveedores almacenados en el Sistema.
Descripción Se implementó la página web utilizando el Framework
Angularjs, HTML para poder listar la información de
todos los proveedores almacenados. Adicional se
configuró el archivo de rutas de Angularjs para re-
direccionar a la página solicitada.
Prioridad Alta
Dimensión / Esfuerzo 2 Unidades
Tiempo estimado 1 Hora
Tiempo dedicado 2 Horas
Comentarios Código implementado:
Fichero:
kardexWeb/app/js/angular_script/kardex_routes.js
kardexWeb/app/templates/provider/listProviders.html

Método:
appKardex.config()
ID Tarea: T07.08
Tarea 8 Implementar la interfaz web (formulario) con la
información del proveedor, lista para editarla si es
necesario y enviarla al Back-end.
Descripción Se implementó la página web con un formulario
utilizando el Framework Angularjs, HTML para poder
editar la información del proveedor consultado y
enviarla al Back-end, para ser almacenada. Adicional se
configuró el archivo de rutas de Angularjs para re-
direccionar a la página solicitada.
Prioridad Alta
Dimensión / Esfuerzo 2 Unidades
Tiempo estimado 2 Horas
Tiempo dedicado 2 Horas
Comentarios Código implementado:
Fichero:
kardexWeb/app/js/angular_script/kardex_routes.js
kardexWeb/app/templates/provider/editProvider.html

Método:
appKardex.config()

Héctor Jahir Lozano Briones Página 123


[UPM] Máster en Ingeniería Web

Ficha de Tareas - Historia HU09

Identificador de la Historia HU09


Alias Modificar Categoría
Historia de Usuario Como administrador
Necesito poder modificar categorías
Para actualizar sus datos cuando cambien
ID Tarea: T09.01
Tarea 1 Desarrollo de Tests
Descripción Utilizando PhpUnit, se implementaron los métodos
testPutCategory(), testGetCategoryById().

Prioridad Alta
Dimensión / Esfuerzo 4 Unidades
Tiempo estimado 3 Horas
Tiempo dedicado 4 Horas
Comentarios Código implementado:
Fichero:
apiKardex/tests/AppBundle/Controller/CategoryControllerTest

Método:
testPutCategory()
testGetCategoryById()

ID Tarea: T09.02
Tarea 2 Implementar método en el Back-end para crear el
Servicio REST de buscar categoría por id.
Descripción Se implementó el método getCategoryByIdAction()
utilizando el Framework Symfony con lenguaje PHP
para buscar la información en la Base de Datos de una
categoría mediante su id.

Prioridad Alta
Dimensión / Esfuerzo 1 Unidad
Tiempo estimado 1 Hora
Tiempo dedicado 1 Hora
Comentarios Código implementado:
Fichero:
apiKardex/src/AppBundle/Controller/CategoryController

Método:
getCategoryByIdAction()

Página 124
Análisis y Desarrollo de un Sistema Web para la gestión Kardex de un almacén
ID Tarea: T09.03
Tarea 3 Implementar método en el Back-end para crear el
Servicio REST de modificar categoría.
Descripción Se implementó el método editCategoryAction()
utilizando el Framework Symfony con lenguaje PHP
para poder editar la información de una categoría en la
Base de Datos enviada por medio de un formulario web
desde el Front-end.
Prioridad Alta
Dimensión / Esfuerzo 2 Unidades
Tiempo estimado 1 Hora
Tiempo dedicado 2 Horas
Comentarios Código implementado:
Fichero:
apiKardex/src/AppBundle/Controller/CategoryController

Método:
editCategoryAction()
ID Tarea: T09.04
Tarea 4 Implementar método en el Front-end para consumir el
servicio REST de listar todas las categorías.
Descripción Se implementó el controlador CtrlCategory utilizando
el Framework Angularjs, Jquery y Ajax para consumir
el servicio REST de listar categorías.
Prioridad Alta
Dimensión / Esfuerzo 1 Unidad
Tiempo estimado 1 Hora
Tiempo dedicado 1 Hora
Comentarios Código implementado:
Fichero:
kardexWeb/app/js/angular_script/kardex_controller.js

Método:
Controlador: CtrlCategory, listCategories function()

ID Tarea: T09.05
Tarea 5 Implementar método en el Front-end para consumir el
servicio REST de buscar categoría por id.
Descripción Se implementó el controlador CtrlCategory utilizando
el Framework Angularjs, Jquery y Ajax para consumir
el servicio REST de buscar categoría por id.
Prioridad Alta
Dimensión / Esfuerzo 1 Unidad
Tiempo estimado 1 Hora
Tiempo dedicado 1 Hora

Héctor Jahir Lozano Briones Página 125


[UPM] Máster en Ingeniería Web

Comentarios Código implementado:


Fichero:
kardexWeb/app/js/angular_script/kardex_controller.js

Método:
Controlador: CtrlCategory, findCategory function()
ID Tarea: T09.06
Tarea 6 Implementar método en el Front-end para consumir el
servicio REST de modificar categoría.
Descripción Se implementó el controlador CtrlCategory utilizando
el Framework Angularjs, Jquery y Ajax para consumir
el servicio REST de modificar categoría.
Prioridad Alta
Dimensión / Esfuerzo 1 Unidad
Tiempo estimado 2 Horas
Tiempo dedicado 1 Hora
Comentarios Código implementado:
Fichero:
kardexWeb/app/js/angular_script/kardex_controller.js

Método:
Controlador: CtrlCategory, editCategory function()
ID Tarea: T09.07
Tarea 7 Implementar la interfaz web para listar todas las
categorías almacenadas en el Sistema.
Descripción Se implementó la página web utilizando el Framework
Angularjs, Html para poder listar la información de
todas las categorías almacenadas. Adicional se
configuró el archivo de rutas de Angularjs para re-
direccionar a la página solicitada.
Prioridad Alta
Dimensión / Esfuerzo 2 Unidades
Tiempo estimado 1 Hora
Tiempo dedicado 2 Horas
Comentarios Código implementado:
Fichero:
kardexWeb/app/js/angular_script/kardex_routes.js
kardexWeb/app/templates/provider/listCategories.html

Método:
appKardex.config()
ID Tarea: T09.08
Tarea 8 Implementar la interfaz web (formulario) con la
información de la categoría, lista para editarla si es
necesario y enviarla al Back-end.

Página 126
Análisis y Desarrollo de un Sistema Web para la gestión Kardex de un almacén
Descripción Se implementó la página web con un formulario
utilizando el Framework Angularjs, HTML para editar
la información de la categoría consultada y enviarla al
Back-end, para ser almacenada. Adicional se configuró
el archivo de rutas de Angularjs para re-direccionar a la
página solicitada.
Prioridad Alta
Dimensión / Esfuerzo 2 Unidades
Tiempo estimado 2 Horas
Tiempo dedicado 2 Horas
Comentarios Código implementado:
Fichero:
kardexWeb/app/js/angular_script/kardex_routes.js
kardexWeb/app/templates/provider/editCategory.html

Método:
appKardex.config()

Ficha de Tareas - Historia HU11

Identificador de la Historia HU11


Alias Modificar Localidad
Historia de Usuario Como administrador
Necesito poder modificar localidad
Para actualizar sus datos cuando cambien
ID Tarea: T11.01
Tarea 1 Desarrollo de Tests
Descripción Utilizando PhpUnit, se implementaron los métodos
testPutLocation(), testGetLocationById().

Prioridad Alta
Dimensión / Esfuerzo 4 Unidades
Tiempo estimado 3 Horas
Tiempo dedicado 4 Horas
Comentarios Código implementado:
Fichero:
apiKardex/tests/AppBundle/Controller/LocationControllerTest

Método:
testPutLocation()
testGetLocationById()

Héctor Jahir Lozano Briones Página 127


[UPM] Máster en Ingeniería Web

ID Tarea: T11.02
Tarea 2 Implementar método en el Back-end para crear el
Servicio REST de buscar localidad por id.

Descripción Se implementó el método getLocationByIdAction()


utilizando el Framework Symfony con lenguaje PHP
para buscar la información en la Base de Datos de una
localidad mediante su id.

Prioridad Alta
Dimensión / Esfuerzo 1 Unidad
Tiempo estimado 1 Hora
Tiempo dedicado 1 Hora
Comentarios Código implementado:
Fichero:
apiKardex/src/AppBundle/Controller/LocationController

Método:
getLocationByIdAction()
ID Tarea: T11.03
Tarea 3 Implementar método en el Back-end para crear el
Servicio REST de modificar localidad.
Descripción Se implementó el método editLocationAction()
utilizando el Framework Symfony con lenguaje PHP
para poder editar la información de una localidad en la
Base de Datos enviada por medio de un formulario web
desde el Front-end.
Prioridad Alta
Dimensión / Esfuerzo 2 Unidades
Tiempo estimado 1 Hora
Tiempo dedicado 2 Horas
Comentarios Código implementado:
Fichero:
apiKardex/src/AppBundle/Controller/LocationController

Método:
editLocationAction()
ID Tarea: T11.04
Tarea 4 Implementar método en el Front-end para consumir el
servicio REST de listar todas las localidades.
Descripción Se implementó el controlador CtrlLocation utilizando el
Framework Angularjs, Jquery y Ajax para consumir el
servicio REST de listar localidades.
Prioridad Alta

Página 128
Análisis y Desarrollo de un Sistema Web para la gestión Kardex de un almacén
Dimensión / Esfuerzo 1 Unidad
Tiempo estimado 1 Hora
Tiempo dedicado 1 Hora
Comentarios Código implementado:
Fichero:
kardexWeb/app/js/angular_script/kardex_controller.js

Método:
Controlador: CtrlLocation, listLocations function()
ID Tarea: T11.05
Tarea 5 Implementar método en el Front-end para consumir el
servicio REST de buscar localidad por id.
Descripción Se implementó el controlador CtrlLocation utilizando el
Framework Angularjs, Jquery y Ajax para consumir el
servicio REST de buscar localidad por id.
Prioridad Alta
Dimensión / Esfuerzo 1 Unidad
Tiempo estimado 1 Hora
Tiempo dedicado 1 Hora
Comentarios Código implementado:
Fichero:
kardexWeb/app/js/angular_script/kardex_controller.js

Método:
Controlador: CtrlLocation, findLocation function()
ID Tarea: T11.06
Tarea 6 Implementar método en el Front-end para consumir el
servicio REST de modificar localidad.
Descripción Se implementó el controlador CtrlLocation utilizando el
Framework Angularjs, Jquery y Ajax para consumir el
servicio REST de modificar localidad.
Prioridad Alta
Dimensión / Esfuerzo 1 Unidad
Tiempo estimado 2 Horas
Tiempo dedicado 1 Hora
Comentarios Código implementado:
Fichero:
kardexWeb/app/js/angular_script/kardex_controller.js

Método:
Controlador: CtrlLocation, editLocation function()
ID Tarea: T11.07
Tarea 7 Implementar la interfaz web para listar todas las
localidades almacenadas en el Sistema.

Héctor Jahir Lozano Briones Página 129


[UPM] Máster en Ingeniería Web

Descripción Se implementó la página web utilizando el Framework


Angularjs, HTML para listar la información de todas las
localidades almacenadas. Adicional se configuró el
archivo de rutas de Angularjs para re-direccionar a la
página solicitada.
Prioridad Alta
Dimensión / Esfuerzo 2 Unidades
Tiempo estimado 1 Hora
Tiempo dedicado 2 Horas
Comentarios Código implementado:
Fichero:
kardexWeb/app/js/angular_script/kardex_routes.js
kardexWeb/app/templates/location/listLocations.html

Método:
appKardex.config()
ID Tarea: T11.08
Tarea 8 Implementar la interfaz web (formulario) con la
información de la localidad, lista para editarla si es
necesario y enviarla al Back-end.
Descripción Se implementó la página web con un formulario
utilizando el Framework Angularjs, Html para editar la
información de la localidad consultada y enviarla al
Back-end, para ser almacenada. Adicional se configuró
el archivo de rutas de Angularjs para re-direccionar a la
página solicitada.
Prioridad Alta
Dimensión / Esfuerzo 2 Unidades
Tiempo estimado 2 Horas
Tiempo dedicado 2 Horas
Comentarios Código implementado:
Fichero:
kardexWeb/app/js/angular_script/kardex_routes.js
kardexWeb/app/templates/location/editLocation.html

Método:
appKardex.config()

Página 130
Análisis y Desarrollo de un Sistema Web para la gestión Kardex de un almacén

Burndown Chart del Quinto Sprint

Días Horas Horas


Restantes Restantes
(Estimadas) (Dedicadas)
1 43 50
2 40 46
3 35 41
4 31 36
5 30 32
6 23 27
7 19 22
8 14 17
9 10 12
10 5 6

Sprint 5
60

50

40

30

20

10

0
1 2 3 4 5 6 7 8 9 10 11

Horas Estimadas Horas Dedicadas

Gráfico de Tarea Ideal

Héctor Jahir Lozano Briones Página 131


[UPM] Máster en Ingeniería Web

Backlog Sexto Sprint

En las siguientes tablas se presenta el desarrollo del sexto Sprint con


sus tareas definidas y estimadas en horas, la estimación inicial de este Sprint es de 7
días laborales con 54 horas de trabajo.

El alcance abarca Modificar Unidades de Medidas, Alta Usuario/Administrador,


Modificar Usuario/Administrador y Login previo al desarrollo del software.

Tareas - Historia HU16

Identificador de la Historia HU16


Alias Modificar Unidades de Medidas
ID Tarea: T16.01
Tarea 1 Desarrollo de Tests
ID Tarea: T16.02
Tarea 2 Implementar método en el Back-end para crear el
Servicio REST de buscar unidad de medida por id.

ID Tarea: T16.03
Tarea 3 Implementar método en el Back-end para crear el
Servicio REST de modificar unidad de medida.

ID Tarea: T16.04
Tarea 4 Implementar método en el Front-end para consumir el
servicio REST de listar todas las unidades de medidas.
ID Tarea: T16.05
Tarea 5 Implementar método en el Front-end para consumir el
servicio REST de buscar unidad de medida por id.

ID Tarea: T16.06
Tarea 6 Implementar método en el Front-end para consumir el
servicio REST de modificar unidad de medida.
ID Tarea: T16.07
Tarea 7 Implementar la interfaz web para listar todas las
unidades de medidas almacenadas en el Sistema.
ID Tarea: T16.08
Tarea 8 Implementar la interfaz web (formulario) para editar la
información necesaria de la unidad de medida y enviarla
al Back-end.

Página 132
Análisis y Desarrollo de un Sistema Web para la gestión Kardex de un almacén

Tareas - Historia HU13

Identificador de la Historia HU13


Alias Alta Usuario/Administrador
ID Tarea: T13.01
Tarea 1 Definir y diseñar una estructura de almacenamiento de
la información, (Base de Datos)
ID Tarea: T13.02
Tarea 2 Desarrollo de Tests
ID Tarea: T13.03
Tarea 3 Implementar método en el Back-end para crear el
Servicio REST de listar todas los roles.
ID Tarea: T13.04
Tarea 4 Implementar método en el Back-end para crear el
Servicio REST de alta de usuario.
ID Tarea: T13.05
Tarea 5 Implementar método en el Front-end para consumir el
servicio REST de listar todas los roles.
ID Tarea: T13.06
Tarea 6 Implementar método en el Front-end para consumir el
servicio REST de alta de usuario.
ID Tarea: T13.07
Tarea 7 Implementar la interfaz web (formulario) para ingresar
la información necesaria y enviarla al Back-end.

Tareas - Historia HU18

Identificador de la Historia HU18


Alias Modificar Usuario/Administrador
ID Tarea: T18.01
Tarea 1 Desarrollo de Tests
ID Tarea: T18.02
Tarea 2 Implementar método en el Back-end para crear el
Servicio REST de buscar usuario por id.
ID Tarea: T18.03
Tarea 3 Implementar método en el Back-end para crear el
Servicio REST de modificar usuario.
ID Tarea: T18.04
Tarea 4 Implementar método en el Front-end para consumir el
servicio REST de listar todos los usuarios.

Héctor Jahir Lozano Briones Página 133


[UPM] Máster en Ingeniería Web

ID Tarea: T18.05
Tarea 5 Implementar método en el Front-end para consumir el
servicio REST de buscar usuarios por id.
ID Tarea: T18.06
Tarea 6 Implementar método en el Front-end para consumir el
servicio REST de modificar usuario.
ID Tarea: T18.07
Tarea 7 Implementar la interfaz web para listar todos los
usuarios almacenados en el Sistema.
ID Tarea: T18.08
Tarea 8 Implementar la interfaz web (formulario) para editar la
información necesaria del usuario y enviarla al Back-
end.

Tareas - Historia HU03

Identificador de la Historia HU03


Alias Login
ID Tarea: T03.01
Tarea 1 Configurar Framework Symfony para el manejo de la
seguridad con Tokens.
ID Tarea: T03.02
Tarea 2 Desarrollo de Tests
ID Tarea: T03.03
Tarea 3 Implementar método en el Back-end para crear el
Servicio REST de authentication.

Ficha de Tareas del Sexto Sprint

Ficha de Tareas - Historia HU16

Identificador de la HU16
Historia
Alias Modificar Unidades de Medidas
Historia de Usuario Como administrador
Necesito poder modificar unidades de medidas
Para actualizar sus datos cuando cambien
ID Tarea: T16.01
Tarea 1 Desarrollo de Tests
Descripción Utilizando PhpUnit, se implementaron los métodos
testPutMeasureUnit(), testGetMeasureUnitById().
Prioridad Alta

Página 134
Análisis y Desarrollo de un Sistema Web para la gestión Kardex de un almacén
Dimensión / 4 Unidades
Esfuerzo
Tiempo estimado 3 Horas
Tiempo dedicado 4 Horas
Comentarios Código implementado:
Fichero:
apiKardex/tests/AppBundle/Controller/MeasureUnitControllerTest

Método:
testPutMeasureUnit()
testGetMeasureUnitById()
ID Tarea: T16.02
Tarea 2 Implementar método en el Back-end para crear el
Servicio REST de buscar unidad de medida por id.
Descripción Se implementó el método getMeasureUnitByIdAction()
utilizando el Framework Symfony con lenguaje PHP
para buscar la información en la Base de Datos de una
unidad de medida mediante su id.

Prioridad Alta
Dimensión / 1 Unidad
Esfuerzo
Tiempo estimado 1 Hora
Tiempo dedicado 1 Hora
Comentarios Código implementado:
Fichero:
apiKardex/src/AppBundle/Controller/MeasureUnitController

Método:
getMeasureUnitByIdAction()

ID Tarea: T16.03
Tarea 3 Implementar método en el Back-end para crear el
Servicio REST de modificar unidad de medida.
Descripción Se implementó el método editMeasureUnitAction()
utilizando el Framework Symfony con lenguaje PHP
para poder editar la información de una unidad de medida
en la Base de Datos enviada por medio de un formulario
web desde el Front-end.
Prioridad Alta
Dimensión / 2 Unidades
Esfuerzo
Tiempo estimado 2 Horas
Tiempo dedicado 2 Horas

Héctor Jahir Lozano Briones Página 135


[UPM] Máster en Ingeniería Web

Comentarios Código implementado:


Fichero:
apiKardex/src/AppBundle/Controller/ MeasureUnitController

Método:
editMeasureUnitAction()
ID Tarea: T16.04
Tarea 4 Implementar método en el Front-end para consumir el
servicio REST de listar todas las unidades de medida.
Descripción Se implementó el controlador CtrlMeasureUnit
utilizando el Framework Angularjs, Jquery y Ajax para
consumir el servicio REST de listar unidades de medida.
Prioridad Alta
Dimensión / 1 Unidad
Esfuerzo
Tiempo estimado 1 Hora
Tiempo dedicado 1 Hora
Comentarios Código implementado:
Fichero:
kardexWeb/app/js/angular_script/kardex_controller.js

Método:
Controlador: CtrlMeasureUnit, listMeasuresUnit function()
ID Tarea: T16.05
Tarea 5 Implementar método en el Front-end para consumir el
servicio REST de buscar unidad de medida por id.
Descripción Se implementó el controlador CtrlMeasureUnit
utilizando el Framework Angularjs, Jquery y Ajax para
consumir el servicio REST de buscar unidad de medida
por id.
Prioridad Alta
Dimensión / 1 Unidad
Esfuerzo
Tiempo estimado 1 Hora
Tiempo dedicado 1 Hora
Comentarios Código implementado:
Fichero:
kardexWeb/app/js/angular_script/kardex_controller.js

Método:
Controlador: CtrlMeasureUnit, findMeasureUnit function()
ID Tarea: T16.06
Tarea 6 Implementar método en el Front-end para consumir el
servicio REST de modificar unidad de medida.

Página 136
Análisis y Desarrollo de un Sistema Web para la gestión Kardex de un almacén
Descripción Se implementó el controlador CtrlMeasureUnit
utilizando el Framework Angularjs, Jquery y Ajax para
consumir el servicio REST de modificar unidad de
medida.

Prioridad Alta
Dimensión / 1 Unidad
Esfuerzo
Tiempo estimado 2 Horas
Tiempo dedicado 1 Hora
Comentarios Código implementado:
Fichero:
kardexWeb/app/js/angular_script/kardex_controller.js

Método:
Controlador: CtrlMeasureUnit, editMeasureUnit function()

ID Tarea: T16.07
Tarea 7 Implementar la interfaz web para listar todas las unidades
de medida almacenadas en el Sistema.
Descripción Se implementó la página web utilizando el Framework
Angularjs, Html para listar la información de todas las
unidades de medida almacenadas. Adicional se configuró
el archivo de rutas de Angularjs para re-direccionar a la
página solicitada.

Prioridad Alta
Dimensión / 2 Unidades
Esfuerzo
Tiempo estimado 1 Hora
Tiempo dedicado 2 Hora
Comentarios Código implementado:
Fichero:
kardexWeb/app/js/angular_script/kardex_routes.js
kardexWeb/app/templates/measureUnit/listMeasuresUnit.html

Método:
appKardex.config()

ID Tarea: T16.08
Tarea 8 Implementar la interfaz web (formulario) con la
información de la unidad de medida, lista para editarla si
es necesario y enviarla al Back-end.

Héctor Jahir Lozano Briones Página 137


[UPM] Máster en Ingeniería Web

Descripción Se implementó la página web con un formulario


utilizando el Framework Angularjs, Html para editar la
información de la unidad de medida consultada y enviarla
al Back-end, para ser almacenada. Adicional se configuró
el archivo de rutas de Angularjs para re-direccionar a la
página solicitada.
Prioridad Alta
Dimensión / 2 Unidades
Esfuerzo
Tiempo estimado 2 Horas
Tiempo dedicado 2 Horas
Comentarios Código implementado:
Fichero:
kardexWeb/app/js/angular_script/kardex_routes.js
kardexWeb/app/templates/ measureUnit/editMeasureUnit.html

Método:
appKardex.config()

Ficha de Tareas - Historia HU13

Identificador de la Historia HU13


Alias Alta Usuario/Administrador
Historia de Usuario Como administrador
Quiero poder dar de alta
Usuarios/Administradores
Para poder permitirles acceder al sistema
ID Tarea: T13.01
Tarea 1 Definir y diseñar una estructura de almacenamiento de
la información, (Base de Datos).
Descripción Se procedió a analizar los requerimientos obtenidos por
el cliente, para definir el diseño de la estructura de
almacenamiento, para esto se crearon las tablas: usuario
y rol definiendo sus respectivos campos con la
información analizada.
Prioridad Alta
Dimensión / Esfuerzo 2 Unidades
Tiempo estimado 1 Hora
Tiempo dedicado 2 Horas

Página 138
Análisis y Desarrollo de un Sistema Web para la gestión Kardex de un almacén
Comentarios Diseño:

ID Tarea: T13.02
Tarea 2 Desarrollo de Tests
Descripción Utilizando PhpUnit, se implementó el método
testPostUser() enviando los datos por medio de request
para guardar la información en la base de datos y dar de
alta un usuario. Además se implementó el método
testGetAllRol() para listar todos sus registros y
seleccionar uno cuando se guarde la información del
usuario.

Prioridad Alta
Dimensión / Esfuerzo 2 Unidades
Tiempo estimado 1 Hora
Tiempo dedicado 2 Horas
Comentarios Código implementado:
Fichero:
apiKardex/tests/AppBundle/Controller/UserControllerTest

Método:
testPostUser()
testGetAllRol()

ID Tarea: T13.03
Tarea 3 Implementar método en el Back-end para crear el
Servicio REST de listar todos los roles.

Descripción Se implementó el método getAllRolAction() utilizando


el Framework Symfony con lenguaje PHP para poder
listar todos los roles almacenados en la Base de Datos.

Prioridad Alta
Dimensión / Esfuerzo 2 Unidades

Héctor Jahir Lozano Briones Página 139


[UPM] Máster en Ingeniería Web

Tiempo estimado 1 Hora


Tiempo dedicado 2 Horas
Comentarios Código implementado:
Fichero:
apiKardex/src/AppBundle/Controller/UserController

Método:
getAllRolAction()
ID Tarea: T13.04
Tarea 4 Implementar método en el Back-end para crear el
Servicio REST de alta de usuario.
Descripción Se implementó el método addUserAction() utilizando el
Framework Symfony con lenguaje PHP para ingresar la
información en la Base de Datos enviada por medio de
un formulario web desde el Front-end.
Prioridad Alta
Dimensión / Esfuerzo 1 Unidad
Tiempo estimado 1 Hora
Tiempo dedicado 1 Hora
Comentarios Código implementado:
Fichero:
apiKardex/src/AppBundle/Controller/UserController

Método:
addUserAction()

ID Tarea: T13.05
Tarea 5 Implementar método en el Front-end para consumir el
servicio REST de listar todos los roles.
Descripción Se implementó el controlador CtrlUser utilizando el
Framework Angularjs, Jquery y Ajax para consumir el
servicio REST de listar todos los roles y poder ser
utilizadas desde el Front-end.
Prioridad Alta
Dimensión / Esfuerzo 1 Unidad
Tiempo estimado 1 Hora
Tiempo dedicado 1 Hora
Comentarios Código implementado:
Fichero:
kardexWeb/app/js/angular_script/kardex_controller.js

Método:
Controlador: CtrlUser, init function()

Página 140
Análisis y Desarrollo de un Sistema Web para la gestión Kardex de un almacén
ID Tarea: T13.06
Tarea 6 Implementar método en el Front-end para consumir el
servicio REST de alta de usuario.
Descripción Se implementó el controlador CtrlUser utilizando el
Framework Angularjs, Jquery y Ajax para consumir el
servicio REST de alta de usuario.

Prioridad Alta
Dimensión / Esfuerzo 1 Unidad
Tiempo estimado 1 Hora
Tiempo dedicado 1 Hora
Comentarios Código implementado:
Fichero:
kardexWeb/app/js/angular_script/kardex_controller.js

Método:
Controlador: CtrlUser, addUser function()

ID Tarea: T13.07
Tarea 7 Implementar la interfaz web (formulario) para ingresar
la información necesaria y enviarla al Back-end.
Descripción Se implementó la página web con un formulario
utilizando el Framework Angularjs, HTML para
ingresar la información del usuario y enviarla al Back-
end, para ser almacenada. Adicional se configuró el
archivo de rutas de Angularjs para re-direccionar a la
página solicitada.

Prioridad Alta
Dimensión / Esfuerzo 1 Unidad
Tiempo estimado 1 Hora
Tiempo dedicado 1 Hora
Comentarios Fichero:
kardexWeb/app/js/angular_script/kardex_routes.js
kardexWeb/app/templates/user/addUser.html

Método:
appKardex.config()

Héctor Jahir Lozano Briones Página 141


[UPM] Máster en Ingeniería Web

Ficha de Tareas - Historia HU18

Identificador de la Historia HU18


Alias Modificar Usuario/Administrador
Historia de Usuario Como administrador
Necesito poder modificar
Usuarios/Administradores
Para actualizar sus datos cuando cambien
ID Tarea: T18.01
Tarea 1 Desarrollo de Tests
Descripción Utilizando PhpUnit, se implementaron los métodos
testPutUser(), testGetUserById().
Prioridad Alta
Dimensión / Esfuerzo 2 Unidades
Tiempo estimado 2 Horas
Tiempo dedicado 2 Horas
Comentarios Código implementado:
Fichero:
apiKardex/tests/AppBundle/Controller/UserControllerTest

Método:
testPutUser()
testGetUserById ()
ID Tarea: T18.02
Tarea 2 Implementar método en el Back-end para crear el
Servicio REST de buscar usuario por id.
Descripción Se implementó el método getUserByIdAction()
utilizando el Framework Symfony con lenguaje PHP
para buscar la información en la Base de Datos de un
usuario mediante su id.
Prioridad Alta
Dimensión / Esfuerzo 1 Unidad
Tiempo estimado 2 Horas
Tiempo dedicado 1 Hora
Comentarios Código implementado:
Fichero:
apiKardex/src/AppBundle/Controller/UserController

Método:
getUserByIdAction()
ID Tarea: T18.03
Tarea 3 Implementar método en el Back-end para crear el
Servicio REST de modificar usuario.

Página 142
Análisis y Desarrollo de un Sistema Web para la gestión Kardex de un almacén
Descripción Se implementó el método editUserAction() utilizando
el Framework Symfony con lenguaje PHP para editar la
información de un usuario en la Base de Datos enviada
por medio de un formulario web desde el Front-end.

Prioridad Alta
Dimensión / Esfuerzo 2 Unidades
Tiempo estimado 1 Hora
Tiempo dedicado 2 Horas
Comentarios Código implementado:
Fichero:
apiKardex/src/AppBundle/Controller/UserController

Método:
editUserAction()

ID Tarea: T18.04
Tarea 4 Implementar método en el Front-end para consumir el
servicio REST de listar todos los roles.
Descripción Se implementó el controlador CtrlUser utilizando el
Framework Angularjs, Jquery y Ajax para consumir el
servicio REST de listar usuarios.

Prioridad Alta
Dimensión / Esfuerzo 1 Unidad
Tiempo estimado 1 Hora
Tiempo dedicado 1 Hora
Comentarios Código implementado:
Fichero:
kardexWeb/app/js/angular_script/kardex_controller.js

Método:
Controlador: CtrlUser, listUsers function()

ID Tarea: T18.05
Tarea 5 Implementar método en el Front-end para consumir el
servicio REST de buscar usuario por id.
Descripción Se implementó el controlador CtrlUser utilizando el
Framework Angularjs, Jquery y Ajax para consumir el
servicio REST de buscar usuario por id.
Prioridad Alta
Dimensión / Esfuerzo 1 Unidad
Tiempo estimado 1 Hora
Tiempo dedicado 1 Hora

Héctor Jahir Lozano Briones Página 143


[UPM] Máster en Ingeniería Web

Comentarios Código implementado:


Fichero:
kardexWeb/app/js/angular_script/kardex_controller.js

Método:
Controlador: CtrlUser, findUser function()
ID Tarea: T18.06
Tarea 6 Implementar método en el Front-end para consumir el
servicio REST de modificar usuario.
Descripción Se implementó el controlador CtrlUser utilizando el
Framework Angularjs, Jquery y Ajax para consumir el
servicio REST de modificar usuario.
Prioridad Alta
Dimensión / Esfuerzo 1 Unidad
Tiempo estimado 1 Hora
Tiempo dedicado 1 Hora
Comentarios Código implementado:
Fichero:
kardexWeb/app/js/angular_script/kardex_controller.js

Método:
Controlador: CtrlUser, editUser function()

ID Tarea: T18.07
Tarea 7 Implementar la interfaz web para listar todos los
usuarios almacenados en el Sistema.
Descripción Se implementó la página web utilizando el Framework
Angularjs, HTML para poder listar la información de
todos los usuarios almacenados. Adicional se configuró
el archivo de rutas de Angularjs para re-direccionar a la
página solicitada.

Prioridad Alta
Dimensión / Esfuerzo 2 Unidades
Tiempo estimado 1 Hora
Tiempo dedicado 2 Horas
Comentarios Código implementado:
Fichero:
kardexWeb/app/js/angular_script/kardex_routes.js
kardexWeb/app/templates/user/listUsers.html

Método:
appKardex.config()

Página 144
Análisis y Desarrollo de un Sistema Web para la gestión Kardex de un almacén
ID Tarea: T18.08
Tarea 8 Implementar la interfaz web (formulario) con la
información del usuario, lista para editarla si es
necesario y enviarla al Back-end.
Descripción Se implementó la página web con un formulario
utilizando el Framework Angularjs, Html para editar la
información del usuario consultado y enviarla al Back-
end, para ser almacenada. Adicional se configuró el
archivo de rutas de Angularjs para re-direccionar a la
página solicitada.
Prioridad Alta
Dimensión / Esfuerzo 2 Unidades
Tiempo estimado 2 Horas
Tiempo dedicado 2 Horas
Comentarios Código implementado:
Fichero:
kardexWeb/app/js/angular_script/kardex_routes.js
kardexWeb/app/templates/user/editUser.html

Método:
appKardex.config()

Ficha de Tareas - Historia HU03

Identificador de la Historia HU03


Alias Login
Historia de Usuario Como administrador
Quiero poder tener un login
Para poder restringir el acceso a las personas
no autorizadas
ID Tarea: T03.01
Tarea 1 Configurar Framework Symfony para el manejo de la
seguridad con Tokens.
Descripción Utilizando el Framework Symfony, se procedió a
instalar el Bundle JWTAuthenticationBundle y
configurar los ficheros: parameters.yml y config.yml
para el manejo de la seguridad con Tokens del Api Rest.
Prioridad Alta
Dimensión / Esfuerzo 4 Unidades
Tiempo estimado 4 Horas
Tiempo dedicado 6 Horas

Héctor Jahir Lozano Briones Página 145


[UPM] Máster en Ingeniería Web

Comentarios Código implementado:


Fichero:
apiKardex/app/AppKernel.php
apiKardex/app/config/parameters.yml
apiKardex/app/config/config.yml

ID Tarea: T03.02
Tarea 2 Desarrollo de Tests
Descripción Utilizando PhpUnit, se implementó el método
testAuthentication().
Prioridad Alta
Dimensión / Esfuerzo 4 Unidades
Tiempo estimado 3 Horas
Tiempo dedicado 4 Horas
Comentarios Código implementado:
Fichero:
apiKardex/tests/AppBundle/Controller/TokenControllerTest

Método:
testAuthentication()

ID Tarea: T03.03
Tarea 3 Implementar método en el Back-end para crear el
Servicio REST de authentication.

Descripción Se implementó el método tokenAuthentication()


utilizando el Framework Symfony con lenguaje PHP
para realizar la autenticación del usuario mediante su
usuario y password, el cual si son correctos devuelve un
token con los datos del usuario encriptados.
Prioridad Alta
Dimensión / Esfuerzo 4 Unidades
Tiempo estimado 5 Horas
Tiempo dedicado 3 Horas
Comentarios Código implementado:
Fichero:
apiKardex/src/AppBundle/Controller/TokenController

Método:
tokenAuthentication()

Página 146
Análisis y Desarrollo de un Sistema Web para la gestión Kardex de un almacén

Burndown Chart del Sexto Sprint

Días Horas Horas


Restantes Restantes
(Estimadas) (Dedicadas)
1 43 51
2 38 48
3 35 42
4 31 36
5 26 30
6 22 26
7 16 20
8 13 14
9 10 10
10 4 5

Sprint 6
60

50

40

30

20

10

0
1 2 3 4 5 6 7 8 9 10 11

Horas Estimadas Horas Dedicadas

Gráfico de Tarea Ideal

Héctor Jahir Lozano Briones Página 147


[UPM] Máster en Ingeniería Web

Modelo de Datos

Página 148
Análisis y Desarrollo de un Sistema Web para la gestión Kardex de un almacén

4.1.4. PRUEBAS DEL SISTEMA

Test Unitarios con PhpUnit

En este apartado se muestra las pruebas o tests unitarios realizados a los


controladores de la aplicación mediante la herramienta PhpUnit.

Symfony nos proporciona la herramienta de tests que en conjunto con PhpUnit se


encarga de ejecutar los tests de la aplicación y nos muestra los resultados en
pantalla de manera muy amigable.

Se muestra las imágenes de los tests realizados a los controladores.

Test CategoryController

Héctor Jahir Lozano Briones Página 149


[UPM] Máster en Ingeniería Web

Test ClientController

Test EntryOrderController

Página 150
Análisis y Desarrollo de un Sistema Web para la gestión Kardex de un almacén

Test LocationController

Test MeasureUnitController

Héctor Jahir Lozano Briones Página 151


[UPM] Máster en Ingeniería Web

Test OutputOrderController

Test ProductController

Página 152
Análisis y Desarrollo de un Sistema Web para la gestión Kardex de un almacén

Test ProviderController

Test TokenController

Héctor Jahir Lozano Briones Página 153


[UPM] Máster en Ingeniería Web

Test UserController

Página 154
Análisis y Desarrollo de un Sistema Web para la gestión Kardex de un almacén

5. CONCLUSIONES Y POSIBLES
AMPLIACIONES

CONCLUSIONES

Como resultado de la investigación y desarrollo presentado, es posible concluir que al


aplicar Scrum como metodología ágil obtuve una experiencia muy enriquecedora ya que
es muy fuerte en la facilidad de implantación y agilidad en cuanto a cambios. La
implementación de pruebas sobre el desarrollo del producto me ayudó a ir sobre seguro
para comprobar la calidad durante todo el proceso.

Por otro lado se realizó la entrega de los seis Sprints en el desarrollo de la Metodología
Scrum, implicando el seguimiento del desarrollo del Sistema que garantizó que se
cumplió a cabalidad todas las expectativas sobre el mismo.

El haber obtenido un proyecto terminado y funcionando, aplicando los conocimientos


adquiridos durante el máster muestra que los objetivos planteados en un principio se
cumplieron, pero lo más importante, es que se incrementaron los conocimientos al
estudiar e investigar más sobre el manejo de muchas herramientas que existen para
el desarrollo web, significando una satisfacción personal.

Utilizar Symfony como Framework para el desarrollo ayudo a realizar el proyecto de una
manera mucho más rápida y ordenada. Concluyendo que este es uno de los frameworks
de menor dificultad para el inicio en el conocimiento y desarrollo de aplicaciones web
por parte de programadores.

Aplicar REST como la arquitectura del Sistema promueve la separación en dos


componentes: la lógica de negocio (servidor) y la lógica de presentación (cliente). Esto
permite que la capa de presentación, las vistas, puedan modificarse independientemente
de la lógica de negocio y el resultado es que los costes de mantenimiento del sistema son
menores ya que cuando se necesite evolucionar o corregir el sistema se puede hacer por
partes.

Héctor Jahir Lozano Briones Página 155


[UPM] Máster en Ingeniería Web

POSIBLES AMPLIACIONES

Gracias al avance en la tecnología y de nuevos frameworks de programación se puede


desarrollar software de calidad, el producto final que se entregó admite nuevos
requerimientos en el diseño y estructura de la aplicación, para implementar nuevos
módulos en el futuro.

Se podría ampliar este proyecto implementando un módulo de Reportes, donde se podrán


realizar consultas personalizadas sobre la información almacenada, exportando dichos
resultados en formato PDF y Excel.

Debido a que la arquitectura REST promueve la separación en dos componentes, se


podría utilizar la parte del servidor, el api Rest, para el desarrollo, ya que podría ser
accedido no solo desde una página web, sino también desde una App para móvil o desde
una aplicación de otro tipo, tales como iOS, Android, Windows Phone y tantos como
vengan a encajar con la estrategia del negocio.

Por otra parte una posible ampliación para este proyecto podría ser la
implementación de un módulo Contable, incluyendo Compras, Ventas, Facturación y
Cotización de Productos, además de incluir los asientos en caja, creados al momento de
finalizar Ventas u Órdenes de Compra que involucren pago en efectivo.,

Página 156
Análisis y Desarrollo de un Sistema Web para la gestión Kardex de un almacén

BIBLIOGRAFÍA

[1] G. ARANGUREN, «Ingenieria de Software,» [En línea]. Available:


https://ingsoftwarei2014.wordpress.com/category/framework-de-desarrollo-de-software/. [Último acceso: 29
Mayo 2017].

[2] Colaboradores de Wikipedia, «Aplicación web,» Wikipedia, La enciclopedia libre., 8 Mayo 2017. [En línea].
Available: https://es.wikipedia.org/wiki/Aplicaci%C3%B3n_web. [Último acceso: 25 Mayo 2017].

[3] 1&1 Digital Guide, «1&1 Digital Guide,» 25 Octubre 2016. [En línea]. Available:
https://www.1and1.es/digitalguide/servidores/know-how/servidor-web-definicion-historia-y-programas/. [Último
acceso: 25 Mayo 2017].

[4] Apache, «Apache HTTP Server Project,» Apache, [En línea]. Available:
https://httpd.apache.org/ABOUT_APACHE.html. [Último acceso: 25 Mayo 2017].

[5] Microsoft, «IIS,» 2017. [En línea]. Available: https://www.iis.net/. [Último acceso: 25 Mayo 2017].

[6] CCM, «CCM,» 27 Marzo 2017. [En línea]. Available: http://es.ccm.net/contents/304-lenguajes-de-


programacion. [Último acceso: 25 Mayo 2017].

[7] J. Iruela, «Revista Digital Inesem,» Gestores de Bases de Datos, 19 Enero 2016. [En línea]. Available:
https://revistadigital.inesem.es/informatica-y-tics/los-gestores-de-bases-de-datos-mas-usados/. [Último acceso: 25
Mayo 2017].

[8] B. Sun, «IBM developerWorks,» 3 Octubre 2011. [En línea]. Available:


https://www.ibm.com/developerworks/ssa/library/wa-aj-multitier/. [Último acceso: 29 Mayo 2017].

[9] colaboradores de Wikipedia, «Transferencia de Estado Representacional,» 23 Mayo 2017. [En línea].
Available: https://es.wikipedia.org/wiki/Transferencia_de_Estado_Representacional. [Último acceso: 29 Mayo
2017].

[10] Google, «AngularJs,» 20 Octubre 2010. [En línea]. Available: https://docs.angularjs.org/guide/introduction.


[Último acceso: 26 Mayo 2017].

[11] W3C, «W3C,» 28 Octubre 2014. [En línea]. Available: https://www.w3.org/TR/html5/. [Último acceso: 26
Mayo 2017].

[12] MDN, «MDN,» 28 Abril 2017. [En línea]. Available: https://developer.mozilla.org/en-


US/docs/Web/Guide/HTML/HTML5. [Último acceso: 26 Mayo 2017].

[13] A. Criollo, «Prezi,» El poder de HTML5 Y CCS3, 5 Febrero 2015. [En línea]. Available:
https://prezi.com/5pa2ucuodgr_/el-poder-de-html5-y-ccs3/. [Último acceso: 26 Mayo 2017].

[14] A. Fontela, «raiolanetworks,» [En línea]. Available: https://raiolanetworks.es/blog/que-es-bootstrap/.


[Último acceso: 26 Mayo 2017].

[15] Punto Abierto, «PuntoAbierto,» 3 Agosto 2016. [En línea]. Available: http://puntoabierto.net/blog/que-es-
bootstrap-y-cuales-son-sus-ventajas. [Último acceso: 30 Mayo 2017].

[16] jQuery, «jQuery,» [En línea]. Available: http://jquery.com/. [Último acceso: 27 Mayo 2017].

[17] LibrosWeb, «LibrosWeb,» [En línea]. Available: http://librosweb.es/libro/ajax/capitulo_1.html. [Último


acceso: 27 Mayo 2017].

[18] Jetbrains, «Jetbrains,» IntelliJ IDEA, [En línea]. Available: https://www.jetbrains.com/webstorm/. [Último
acceso: 27 Mayo 2017].

[19] CompraSoft, «CompraSoft,» Sparket, 2017. [En línea]. Available:


https://comprasoft.com/jetbrains/webstorm. [Último acceso: 27 Mayo 2017].

[20] PHP Group, «PHP,» 2017. [En línea]. Available: http://php.net/manual/en/intro-whatis.php. [Último acceso:
27 Mayo 2017].

[21] NetBeans, «NetBeans,» 2017. [En línea]. Available: https://netbeans.org/index_es.html. [Último acceso: 27
Mayo 2017].

[22] SensioLabs, «Symfony,» SensioLabs, [En línea]. Available: https://symfony.com/what-is-symfony. [Último


acceso: 25 Mayo 2017].

[23] Colaboradores de Wikipedia, «Symfony,» Wikipedia, La enciclopedia libre, 10 Marzo 2017. [En línea].
Available: https://es.wikipedia.org/wiki/Symfony. [Último acceso: 25 Mayo 2017].

Héctor Jahir Lozano Briones Página 157


[UPM] Máster en Ingeniería Web

[24] A. Menzinsky, G. López y J. Palacio, «Scrum Manager,» Julio 2016. [En línea]. Available:
http://www.scrummanager.net/files/sm_proyecto.pdf. [Último acceso: 28 Mayo 2017].

[25] proyectosagiles.org, «Proyectos Agiles,» [En línea]. Available: https://proyectosagiles.org/que-es-scrum/.


[Último acceso: 28 Mayo 2017].

[26] proyectosagiles.org, «Proyectos Agiles,» [En línea]. Available: https://proyectosagiles.org/desarrollo-


iterativo-incremental/. [Último acceso: 28 Mayo 2017].

[27] M. Clifton, «Code Project,» 3 Noviembre 2003. [En línea]. Available:


https://www.codeproject.com/Articles/5381/What-Is-A-Framework. [Último acceso: 25 Mayo 2017].

[28] colaboradores de Wikipedia, «Wikipedia,» MySql, 22 Mayo 2017. [En línea]. Available:
https://es.wikipedia.org/wiki/MySQL. [Último acceso: 27 Mayo 2017].

[29] Platzi, «Platzi,» Etapas del Proceso, [En línea]. Available: https://platzi.com/blog/guia-scrum/. [Último acceso:
28 Mayo 2017].

[30] scrummanager.net, «ScrumManager,» Etapas del Proceso, [En línea]. Available:


https://www.scrummanager.net/bok/index.php?title=Modelo_original_de_Scrum_para_desarrollo_de_software.
[Último acceso: 28 Mayo 2017].

[31] Espol, «Blog Espol,» Proceso de Desarrollo, [En línea]. Available: http://blog.espol.edu.ec/elpoli/scrum-
metodologia-de-desarrollo-de-solftware-agil/. [Último acceso: 28 Mayo 2017].

[32] w. Modelo Vista Controlador, «www.wikipedia.org,» Wikipedia, [En línea]. Available:


http://es.wikipedia.org/wiki/Modelo_Vista_Controlador. [Último acceso: 10 Noviembre 2012].

[33] Andrzej, «Kolab,» Ferrier Pearce (Digital) Ltd trading as Kolab, 4 Abril 2016. [En línea]. Available:
https://kolabdigital.com/lab-time/symfony-json-web-tokens-authentication-guard. [Último acceso: 17 Mayo 2017].

[34] J. Núñez Berrocoso, «Atomic Post,» 28 Julio 2016. [En línea]. Available: http://atomicposts.com/symfony-
autenticacion-json-web-token/. [Último acceso: 17 Mayo 2017].

Página 158
Análisis y Desarrollo de un Sistema Web para la gestión Kardex de un almacén

ANEXOS
El Sistema, aplicación que ha sido desarrollada en una plataforma web, donde puede ser
accedida por el personal desde cualquier computador o dispositivo con acceso a internet,
conservando los datos actualizados.

En este apartado se describe:

Dependencia del Software

La aplicación sigue el modelo de Arquitectura Rest, por lo tanto es necesario tener algunas
dependencias tanto del lado del cliente como del lado del servidor.

Software del Cliente

Especificaciones técnicas necesarias para el computador:


Sistema Operativo: Cualquier tipo de Sistema Operativo.
Navegador web: Firefox 53.0 o superior, Chrome 58.0 o superior.

Software del Servidor

Especificaciones técnicas necesarias para el servidor:


Servidor Web Apache 2.4 o superior.
Módulo PHP 7 Apache habilitado para conexión con interprete PHP.
Motor de Base de Datos MySQL 5.3.1 o superior.
Interprete PHP 7 o superior
Extensiones PHP-PEAR, PHP-JSON, PHP-XML, CURL, PECL.

Héctor Jahir Lozano Briones Página 159


[UPM] Máster en Ingeniería Web

Datos sobre el Servidor Actual

La aplicación web corre sobre XAMPP, el cual es un paquete de instalación independiente


de plataforma, software libre, que consiste principalmente en el sistema de gestión de
bases de datos MySQL, el servidor web Apache y los intérpretes para lenguajes de
script: PHP y Perl.

Detalles Técnicos

Los datos técnicos para acceder al Host son los siguientes:


Para poder acceder al Api es necesario usar una herramienta de servicios Web RestFul,
que nos faciliten el trabajo con peticiones Web que encajan con este tipo de arquitecturas,
tales como Chrome Rest, Postman, entre otras.

Dirección Url del API:


http://localhost/apiKardex/web/app_dev.php/api/”nombre_recurso”

Dirección Url del Sistema:


http://localhost/kadexWeb/app/index.html

Acceso a la Base de Datos


Nombre de la base de datos: db_Kardex
Username: root
Password: “” => Sin password

Página 160
Análisis y Desarrollo de un Sistema Web para la gestión Kardex de un almacén

Imágenes de la Aplicación

Página de Log-In

Página Principal de Bienvenida

Héctor Jahir Lozano Briones Página 161


[UPM] Máster en Ingeniería Web

Administración de Cliente

 Lista de Clientes

 Registro de nuevo Cliente

 Modificar Cliente

Página 162
Análisis y Desarrollo de un Sistema Web para la gestión Kardex de un almacén

Administración de Proveedor

 Lista de Proveedores

 Registro de nuevo Proveedor

 Modificar Proveedor

Héctor Jahir Lozano Briones Página 163


[UPM] Máster en Ingeniería Web

Administración de Categorías

 Lista de Categorías

 Registro de nueva Categoría

 Modificar Categoría

Página 164
Análisis y Desarrollo de un Sistema Web para la gestión Kardex de un almacén

Administración de Localidades

 Lista de Localidades

 Registro de nueva Localidad

 Modificar Localidad

Héctor Jahir Lozano Briones Página 165


[UPM] Máster en Ingeniería Web

Administración de Unidad de Medida

 Lista de Unidades de Medida

 Registro de nueva Unidad de Medida

 Modificar Unidad de Medida

Página 166
Análisis y Desarrollo de un Sistema Web para la gestión Kardex de un almacén

Administración de Usuarios

 Lista de Usuarios

 Registro de nueva Usuario

 Modificar Usuario

Héctor Jahir Lozano Briones Página 167


[UPM] Máster en Ingeniería Web

Administración de Productos

 Lista de Productos

 Registro de nuevo Producto

 Búsqueda de Productos

Página 168
Análisis y Desarrollo de un Sistema Web para la gestión Kardex de un almacén

 Solicitar Producto

 Cancelar Solicitud de Producto

Héctor Jahir Lozano Briones Página 169


[UPM] Máster en Ingeniería Web

Administración de Movimientos

 Registrar Orden de Ingreso de Producto

 Registrar Orden de Egreso de Producto

Página 170
Análisis y Desarrollo de un Sistema Web para la gestión Kardex de un almacén

 Consulta de Movimientos de Producto

Héctor Jahir Lozano Briones Página 171

También podría gustarte