Por:
Andrés José Guzmán Meléndez
INFORME DE PASANTÍA
Presentado ante la Ilustre Universidad Simón Bolı́var
como requisito parcial para optar al tı́tulo de
Ingeniero de la Computación
Por:
Andrés José Guzmán Meléndez
INFORME DE PASANTÍA
Presentado ante la Ilustre Universidad Simón Bolı́var
como requisito parcial para optar al tı́tulo de
Ingeniero de la Computación
RESUMEN
ÍNDICE
RESUMEN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . v
ÍNDICE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vi
LISTA DE TABLAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . viii
LISTA DE FIGURAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix
LISTA DE ABREVIACIONES . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi
INTRODUCCIÓN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Antecedentes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Planteamiento del problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Objetivo general . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Objetivos especı́ficos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Justificación e importancia . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1 ENTORNO EMPRESARIAL . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.1 Descripción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2 Historia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3 Misión . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.4 Visión . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.5 Estructura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.6 Ubicación del pasante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2 MARCO TEÓRICO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.1 Aplicación Web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.2 IDE Integrated Development Environment . . . . . . . . . . . . . . . . . . . 6
2.3 Manejador de base de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.4 Control de versiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.5 PaaS Platform-as-a-Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.6 Sistemas de información gerencial . . . . . . . . . . . . . . . . . . . . . . . . 7
2.7 Parte Diario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3 MARCO TECNOLÓGICO . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.1 Javascript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
vii
3.2 SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.3 JQuery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.4 HTML Lenguaje de marcado de hipertexto . . . . . . . . . . . . . . . . . . . 8
3.5 CSS Hojas de Estilo en Cascada . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.6 Manejadores de Base de Datos . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.6.1 SQLite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.6.2 Postgresql . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.7 NodeJs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.8 Express Js . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.9 Programas para control de versiones . . . . . . . . . . . . . . . . . . . . . . . 10
3.9.1 Git . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.9.2 GitHub . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.10 Cloud9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.11 Heroku . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.12 Microsoft Azure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.13 Selenium . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.14 HandleBars . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
4 MARCO METODOLÓGICO . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4.1 Historias de usuario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4.2 Desarrollo guiado por pruebas . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4.2.1 TDD Test-Driven Development . . . . . . . . . . . . . . . . . . . . . 12
4.2.2 ATDD Acceptance Test Driven Development . . . . . . . . . . . . . . 13
4.2.3 BDD Behaviour Driven Development . . . . . . . . . . . . . . . . . . 13
4.3 Scrum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
4.3.1 Equipo Scrum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
4.3.2 Eventos Scrum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4.3.3 Artefactos Scrum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4.3.4 Principios Scrum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
5 DESARROLLO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
5.1 Desarrollo Suradem Datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
5.2 Sprint 1: 28 Enero - 22 Febrero . . . . . . . . . . . . . . . . . . . . . . . . . 17
5.2.1 Vistas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
viii
CONCLUSIONES Y RECOMENDACIONES . . . . . . . . . . . . . . . . . . 33
Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Recomendaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
REFERENCIAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
APÉNDICES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
A MANUAL DE USUARIO SURADEM DATOS . . . . . . . . . . . . . . . . . . . 38
B MANUAL DE USUARIO SURADEM HORAS HOMBRE . . . . . . . . . . . . . 100
ix
LISTA DE TABLAS
LISTA DE FIGURAS
LISTA DE ABREVIACIONES
• Capı́tulo 5 Desarrollo.
Antecedentes
donde se ha desempeñado el trabajador ni los cargos ocupados en estas. De igual forma los
empleados que ya no están en la compañı́a no se mantienen en el sistema. Para consultar
estos datos se deben revisar los expedientes o nóminas pasadas.
Al ser una empresa de construcción Suradem contrata una gran cantidad de empleados
los cuales pueden ser asignados a distintas obras y en distintos cargos. Esto hace necesario
tener una manera de consultar datos de los empleados como su estado (activo, de vacaciones,
ex-empleado), cargos-salarios que ha tenido, obras donde participa o ha participado, ası́
como observaciones y consideraciones especiales.
Objetivo general
Diseñar, desarrollar y probar dos aplicaciones web, una que permita una consulta fácil y
rápida sobre algún trabajador/obra especı́fica o un grupo de ellos ası́ como generar reportes y
estadı́sticas de los mismos (Suradem Datos). Otra que permita llevar el control de los partes
diarios y horas hombre ejecutadas en las obras y pueda sacar estadı́sticas como horas hombre
necesarias por fase de construcción (Suradem Horas Hombre).
Objetivos especı́ficos
Justificación e importancia
Suradem considera importante contar con una herramienta donde se puedan realizar
consultas sobre datos de los trabajadores como obras y proyectos donde ha participado,
estado trabajador (activo, vacaciones, ex-empleado, etc.), cargos desempeñados en la
empresa y salario asociado, observaciones y datos personales. Esto permitirá agilizar los
procesos de búsqueda de información del personal de recursos humanos y puede servir de
ayuda para el departamento de construcción al obtener referencias más rápidas sobre los
participantes en las diferentes obras. También permite al personal de recursos humanos
tener datos estadı́sticos actualizados sobre los trabajadores ya sea de datos personales
como edad, sexo, estado de salud; o de datos laborales como empleados por departamento,
observaciones, participaciones en obras, entre otros.
1.1 Descripción
Proyectos Suradem C.A. es una contratista general de construcción que posee una fábrica
de estructuras metálicas que participa activamente en la industria venezolana desde hace más
de 50 años. Su trayectoria y crecimiento están estrechamente asociados al desarrollo del paı́s,
estando presente como contratista de las obras de mayor relevancia, tanto de infraestructura
como de desarrollo eléctrico e industrial, acometidas por el sector público y privado.[1]
1.2 Historia
En 1995 el grupo ABB (Asea Brown Boveri S.A) adquiere la compañı́a y lleva a
cabo importantes obras hasta el año 2006 que como parte de su estrategia global decide
desincorporar este negocio en Venezuela. De esta forma en marzo del año 2006, nace
Suradem, quién adquiere esta división de negocios de ABB en Venezuela, manteniendo activa
su participación en proyectos del área de la construcción y desarrollo eléctrico e industrial.[1]
1.3 Misión
1.4 Visión
Ser una empresa lı́der en el sector eléctrico reconocida por la calidad de nuestro trabajo
y compromiso con el desarrollo social y sustentable del paı́s.[1]
1.5 Estructura
En este capı́tulo se presentan los aspectos teóricos que sustentan y respaldan el desarrollo
del proyecto de pasantı́a. A continuación se describen los conceptos que permiten explicar el
problema planteado.
Es un programa de software que corre en un servidor web por lo cual se debe acceder a ella
a través de un navegador web. Una de las ventajas es que puede utilizarse desde cualquier
plataforma con capacidades de navegación sin importar su sistema operativo.[2]
El parte diario es un sumario de los eventos realizados en el dı́a de trabajo de una obra.
Es un registro de los trabajadores/empleados, equipo utilizado, tiempo y horas de trabajo,
accidentes, entre otros. [9]
CAPÍTULO 3
Marco tecnológico
En este capı́tulo se describen los aspectos tecnológicos relevantes para la comprensión del
proyecto, ası́ como las herramientas utilizadas durante la pasantı́a.
3.1 Javascript
3.2 SQL
3.3 JQuery
Hojas de Estilo en Cascada CSS (Cascading Style Sheets), es un lenguaje de diseño gráfico
para definir y crear la presentación de un documento estructurado escrito en un lenguaje de
marcado. Es muy usado para establecer el diseño visual de los documentos web, e interfaces
de usuario escritas en HTML o XHTML.[14]
3.6.1 SQLite
3.6.2 Postgresql
3.7 NodeJs
3.8 Express Js
3.9.1 Git
3.9.2 GitHub
GitHub es una plataforma en lı́nea para desarrolladores que sirve como alojamiento de
repositorios (carpeta que contiene los archivos de interés para realizar el control de versiones)
de Git.[20, p.195]
3.10 Cloud9
3.11 Heroku
Heroku es una plataforma como servicio (PaaS) que funciona como contenedor de
sistemas con servicios de datos integrados. Esto permite desplegar y correr aplicaciones
web desde su plataforma donde ofrecen soporte para diversos lenguajes y herramientas para
desarrolladores.[22]
Microsoft Azure ofrece una plataforma en lı́nea (PaaS) para el despliegue y hospedaje de
aplicaciones web. Con compatibilidad para .NET, Java, Node.js, PHP, Python y Ruby. La
plataforma está totalmente administrada para realizar tareas de aplicación de revisiones del
sistema operativo, aprovisionamiento de capacidad, servidores y equilibrio de carga. [23]
11
3.13 Selenium
Selenium es una herramienta que permite automatizar las acciones del navegador web.
Permite crear y ejecutar script de pruebas de ejecución y regresión que corren de forma
automatizada en el navegador.[24]
3.14 HandleBars
Para especificar los requerimientos del software se debe contar con un mecanismo que
nos permita convertir los requerimientos en algo más detallado que facilite trasladarlos al
desarrollo. Las historias especifican desde el punto de vista del usuario qué funcionalidad
necesita del sistema mediante una descripción corta donde se incluye el rol del usuario, qué
quiere realizar y para qué.[26]
• Escribir una prueba con alguna tarea que se requiera del programa.
• Escribir el código necesario y lo más simple posible hasta que pase la prueba.
• Refactorizar el código.
La práctica TDD permite reemplazar el ciclo de ejecutar el código y luego probar por otro
donde primero se escribe la prueba y luego el código que la cumpla. [27, 28]
13
4.3 Scrum
El Equipo Scrum está formado por las personas involucradas en el desarrollo del producto,
las cuales se dividen en los siguientes roles:
• Dueño producto: Es el responsable del producto, debe ser una sola persona y es la
encargada de manejar la lista de requerimientos del producto y asegurar que se lleve a
cabo.
Los eventos scrum son los que estructuran el tiempo de desarrollo del producto y aseguran
que no se desperdicie. Los eventos scrum son:
• Sprint: Ciclo básico del Scrum donde se completa una versión usable y entregable del
producto.
• Scrum diario: Evento diario donde se evalúa qué se hizo ese dı́a y cómo contribuye
al desarrollo del sprint. Permite un seguimiento diario para encontrar y solucionar
posibles problemas que incluso pueden llevar a una reestructuración de las tareas o del
sprint.
• Pila del sprint (Sprint Backlog): lista de requerimientos de la pila del producto a
culminar durante el sprint. También puede incluir las tareas necesarias para cumplir
cada requerimiento.
La metodologı́a Scrum requiere que los siguientes principios estén presentes en todos los
procesos del desarrollo.
• Inspección: Se debe estar en contante revisión, para corregir y conocer el estado real
del desarrollo. De allı́ la importancia de los scrum diarios y las revisiones y retrospectiva
de los sprints.
El desarrollo fue divido en 2 grandes partes, una para cada aplicación. Ambas partes se
realizaron siguiendo como guı́a la metodologı́a Scrum y las prácticas de desarrollo guiado
por pruebas TDD, ATDD y BDD.
Aunque la metodologı́a Scrum este diseñada para el desarrollo en equipo [31] se puede
adaptar a una sola persona que adquiere los roles de los miembros del equipo. En este caso
el pasante adquirió los roles de:
Las prácticas de desarrollo guiado por pruebas (TDD, ATDD y BDD) se usaron
adaptando la lista de requerimientos de Scrum y dividiéndolas en tareas que luego se pasaron
a pruebas.
• Cloud9: Se utilizó para poder programar y probar desde diferentes sitios (oficina y
hogar) sin tener que configurar el entorno de desarrollo.
• Heroku: Se utilizó como servidor para probar y luego desplegar las aplicaciones.
• La aplicación debe permitir consultar un histórico del empleado (cargos, salarios, obras
y observaciones).
• La aplicación debe permitir descargar reportes PDF y Excel de los datos de los
empleados y obras.
El desarrollo guiado por pruebas TDD y ATDD verifica el estado del sistema y sirve para
guiar que el desarrollo de una tarea cumpla un requerimiento (pasando una prueba unitaria
o de aceptación). Mientras BDD se encarga de definir el comportamiento que debe tener
el sistema y cómo puede probarse de forma automatizada [29]. Teniendo esto en cuenta
se decidió como estrategia crear historias de usuario de los requerimientos y a partir de
estas diseñar las pruebas BDD con el comportamiento que se debe seguir. Para cumplir las
pruebas BDD se deben cumplir una serie de tareas más pequeñas las cuales se desarrollan
siguiendo ATDD o TDD dependiendo de la complicación de la tarea y cómo realizar su
prueba.
5.2.1 Vistas
Se diseñaron las vistas de la aplicación teniendo en mente que la aplicación debe tener una
interfaz que permita la navegabilidad y el acceso a la información de forma fácil e intuitiva.
Se utilizó como motor de plantillas Handlebars (hbs) lo que permitió tener plantillas HTML
que se adapten al tipo de usuario y datos suministrados. Por ejemplo la plantilla de listas de
empleados y obras son las mismas que las de resultados de sus búsquedas pero a una se le
pasa un arreglo completo (listados) y a la otra uno filtrado según los criterios de búsqueda.
• Principal:
• Empleados:
– Lista empleados.
– Detalle empleado.
– Agregar y editar empleados.
• Obras:
– Lista obras.
– Detalle obra.
– Agregar y editar obra.
– Agregar y editar participación empleado en obra.
Se decidió realizar la base de datos en SQLite debido a las facilidades para el desarrollo
y capacidad de realizar backups. Teniendo en cuenta que no se necesita una concurrencia
elevada según los requerimientos de la aplicación. De acuerdo a dichos requerimientos y a
las historias de usuario se realizó el primer diseño de la base de datos con 6 tablas:
• Salarios: Datos sobre monto salario y cargo de los empleados (Identificado por entero
autoincrementado).
Se crearon las historias de usuario a partir de los requerimientos y se tomaron como base
para las pruebas BDD. En este primer sprint se completaron las siguientes historias de usuario
(con sus respectivas pruebas asociadas):
Al finalizar el sprint se realizó una reunión con los clientes donde se presentó la aplicación
con las historias de usuario desarrolladas hasta el momento de la cual surgieron las siguientes
observaciones:
• Agregar campos a empleado (email, número de seguro social, banco, tipo y número de
cuenta, condición de salud).
Figura 5.1: Diagrama ERM primer diseño Base de datos - Suradem Datos
• Referencias deben poder ser asociadas o no a una obra, datos supervisor deben estar
en referencia.
• Agregar cargo a la participación del empleado en obra, teniendo en cuenta que puede
ser diferente al que desempeña en la empresa y hasta tener varios a lo largo de la obra.
Uno de los requerimientos era el establecimiento de roles para los usuarios según el cual
podı́an o no realizar ciertas acciones en la aplicación. Para esto se decidió establecer los
siguientes roles:
• Inválido: Usuario registrado pero que no puede iniciar sesión hasta ser validado por
un SuperUsuario.
• Básico: Usuario validado con capacidad de consultar toda la información de las obras
y empleados excepto la relativa a los salarios. Sólo puede agregar observaciones y
referencias pero no puede editarlas, ni eliminarlas.
Se registra desde una dirección que se debe escribir directamente y se autentifica con
una clave especial.
Para diferenciar el rol de los usuarios se utilizan los campos de usuario admin (1
administrador, 0 caso contrario), válido (1 validado, 0 caso contrario) y el ucargo (cargo
de usuario debe ser superUsuario cuando sea su rol). Al momento de mostrar las vistas al
usuario se pasa como argumento el rol del mismo lo cual permite que la plantilla hbs de la
vista muestre la información correspondiente (opciones de menú, botones de edición, entre
otras).
• Lista Empleados: Accesibles desde la lista de empleados, muestra los datos del
empleado como código, nombres, apellidos, salarios, entre otros. Estos datos se pueden
escoger en el selector de descarga, al igual que el orden en que se muestran los empleados
y alguna condición por la cual se quieran filtrar como estado del trabajador, salud o
que tenga observaciones.
• Lista Obras: Accesibles desde la lista de obras, muestra los datos de la obra como
código, nombre, cliente, fechas (inicio, fin) y observaciones. Estos datos se pueden
escoger en el selector de descarga, al igual que el orden en que se muestran las obras.
• Detalle Empleado: Accesibles desde detalle empleado, muestra los datos del
empleado divididos en 6 secciones (datos personales, datos de empresa, observaciones,
referencias, histórico salarios-cargo, histórico obras). Estas secciones se pueden
descargar por separado o crear un reporte con la combinación de secciones que se
deseen.
24
• Detalle Obra: Accesibles desde detalle obra, muestra los datos de la obra divididos en
4 secciones (datos obra, empleados que participan/participaron, referencias empleados
hechas en la obra). Estas secciones se pueden descargar por separado o crear un reporte
con la combinación de secciones que se deseen.
Todos los reportes se pueden descargar en 2 formatos: PDF y CSV (Comma separated
values, valores separados por coma). Adicionalmente a estos 4 tipos de reportes se agregaron
los reportes del módulo estadı́sticas desarrollado en el siguiente sprint donde también se
cambia el formato CSV a Microsoft Excel.
• Cambio de CSV a archivos Excel, esto debido al paso adicional que significaba para
el usuario cambiar el formato de archivo al momento de subir datos o descargar un
reporte. Este cambio generó nuevas historias de usuario/pruebas a realizar.
• Calendario: Muestra un calendario que permite ver las fechas de interés como ingresos,
egresos, observaciones y cumpleaños. También permite agregar observaciones a un
empleado en una fecha determinada.
25
Al término del sprint anterior y realizando las pruebas en el servidor de producción hubo
problemas con la generación de archivos PDF en el servidor elegido para llevar a producción
(Microsoft Azure). La librerı́a utilizada para generar los reportes (node-html-pdf) no puede
ejecutarse adecuadamente en los entornos de ejecución y máquinas virtuales que ofrece
Microsoft Azure. Esto debido a que tiene problemas de permisologı́a al generar las imágenes
para crear los PDF, problema que se repite en otras librerı́as como Syncfusion, Siberix,
Spire.PDF y wkhtmltopdf.[32]
• Se agrega a la base datos 2 campos a la tabla usuarios: reset (código de reinicio) y reset
time (tiempo en que el código de reinicio es válido).
• El servidor Heroku ofrece SSL para sus aplicaciones pero su uso en la aplicación no es
obligatorio. Por esto se decidió usar la librerı́a heroku-ssl-redirect para forzar el uso de
SSL en la navegación.
• Las claves de los usuarios son pre-procesadas por el navegador antes de enviarlas (en
registro y login) creando un hash. Este hash funciona como la verdadera clave del
usuario y es lo que recibe el servidor. De este modo la aplicación nunca recibe la clave
original ingresada por el usuario. El algoritmo hash utilizado era md5 pero este ya no
es recomendado como medida de seguridad (puede ser descifrado fácilmente) por lo cual
se cambió a sha256. El pre-procesar la clave no sirve para proteger la aplicación ante
una captura del hash en tránsito (ya que la clave que utiliza la aplicación al momento
de validar es dicho hash). Solo evita que si el hash es capturado el atacante pueda
descifrar la clave original y ası́ obtener información que pueda ser usada en caso de que
el usuario utilice la misma clave en otros lugares.
• Las claves se procesan con la librerı́a Bcrypt (Blowfish-based crypt) al momento de ser
verificadas o guardadas en la base de datos, esto permite proteger las claves ante una
captura de la base de datos.
• Datos como las credenciales de conexión a la base de datos PostgreSQL, las credenciales
a la aplicación de correo electrónico y la clave especial de superUsuario se cambiaron a
variables de entorno para que no estuvieran escritas en el código de la aplicación.
• Se utilizan captchas para evitar que se usen scripts automáticos y se sature la base de
datos con nuevos registros o se sobrepase el lı́mite de envı́o de correos en el proceso de
recuperación de clave. Sin embargo estos captchas podrı́an ser reconocidos mediante el
uso de herramientas especializadas.
Tipo Descripción #
Requerimiento Sprint
Inicial Permitir ingresar/editar y consultar los datos de 1
los empleados.
Inicial Permitir ingresar/editar y consultar obras donde 1y2
trabajan/trabajaban los empleados.
Inicial Permitir ingresar/editar y consultar observaciones 1
y referencias de los empleados.
Inicial Permitir consultar un histórico del empleado 1
(cargos, salarios, obras y observaciones).
Inicial Permitir descargar reportes PDF y Excel de los 1y2
datos de los empleados y obras.
Inicial Debe alimentarse de los datos del sistema de 2
nómina.
o
1 Revisión Empleado debe contar con los datos: email, 1
número de seguro social, banco, tipo y número de
cuenta, condición de salud.
1o Revisión Permitir agregar observaciones negativas o 1
positivas y separadas de referencias.
o
2 Revisión Permitir buscar y filtrar empleados por tipo de 2
observaciones, condición de salud y departamento.
o
2 Revisión Participación del empleado en obra debe contar 2
con un cargo asignado.
2o Revisión Usuario debe poder ver la información según su rol 2
(básico, administrador, superUsuario).
o
3 Revisión SuperUsuario puede consultar y validar usuarios, 3
administrar roles y descargar base de datos.
o
3 Revisión Aplicación debe contar con manuales de usuario 3
para los diferentes roles (básico, administrador,
superUsuario).
o
3 Revisión Permitir ver las fechas importantes como 3
ingresos, egresos, observaciones, cumpleaños
en un calendario.
o
3 Revisión Permitir ver estadı́sticas de los empleados y las 3
obras.
4o Revisión Permitir descargar reportes en PDF (servidor de 4
producción).
o
4 Revisión Permitir cambiar de clave en caso de olvido/ 4
pérdida.
o
4 Revisión Permitir descargar resumen de la base de datos en 4
Excel.
4o Revisión Permitir agregar observación a un empleado desde 4
el calendario.
Tabla 5.2: Resumen requerimientos y sprints Suradem Datos
28
Además se reutilizó y reestructuró gran parte del código ya realizado en dicha aplicación.
Utilizando el mismo módulo y estructura de: manejo de usuarios (login, registro,
administración usuarios, recuperación clave), obras (listado, creación, edición, eliminación y
detalle), calendario e información.
Se decidió que la aplicación se concentrara en los datos de las horas diarias realizadas
por los trabajadores y su tipo (normal, extra diurna, extra nocturna) ya que eran los datos
necesarios para el cálculo de las horas hombre. Dejando para futuras actualizaciones la
posibilidad de agregar observaciones adicionales como equipos, costos, inconvenientes y otro
tipo de datos que se pueden recopilar en un parte diario de trabajo. De este modo los
requerimientos iniciales fueron:
• La aplicación debe permitir consultar reportes sobre estadı́sticas de horas por fase.
Con esto se realizó el diseño inicial de interfaces, base de datos y creación de historias
de usuarios en que basar las pruebas BDD. A continuación se presentan algunas de las
actividades de interés desarrolladas.
5.6.1 Interfaces
• Principal:
• Partes Diarios: Cargar Datos (Seleccionar obra-fecha), Detalle Parte Diario, Agregar
Trabajador a Parte Diario.
• Calendario.
• Información.
30
Los partes diarios son la base de la aplicación ya que su carga y distribución son los datos
de interés de la misma. Se accede desde el botón cargar datos (seleccionando obra y fecha),
desde el calendario o desde el detalle de la obra (sección partes semanales). Consisten en
la distribución de horas trabajadas por cada empleado en la obra indicando el dı́a de la
semana, el tipo de hora (normal, extra diurna, extra nocturna) y la fase-etapa de la obra.
Para su carga se decidió utilizar un selector de fecha y obra que permite acceder o crear
(si no existe) el parte semanal de la fecha y obra escogida. Desde el parte semanal se deberá
agregar los trabajadores que participan en los trabajos de la semana. Luego de que aparezcan
en la lista de parte semanal se pueden agregar horas mediante un formulario indicando la
fase-etapa y el tipo de horas. Las horas se pueden agregar y editar por cada trabajador o
para todos al mismo tiempo. También se da la opción de eliminar etapas, colocar las horas
a 0 y eliminar trabajadores del parte semanal. En la figura 5.4 se puede ver el parte semanal
(visto por un usuario administrador).
Figura 5.4: Vista de Parte Semanal - Usuario Administrador - Suradem Horas Hombre
Se utilizó el mismo manejo de usuarios que la aplicación Suradem Datos teniendo los
siguientes tipos de usuario:
• Inválido: Usuario registrado pero que no puede iniciar sesión hasta ser validado por
32
un SuperUsuario.
• Básico: Usuario validado con capacidad de consultar toda la información de las obras
y partes diarios (No puede agregar, editar o eliminar información).
5.7 Reportes
• Resumen de Partes Semanales de una obra: Muestra por cada parte semanal
de la obra la distribución de horas hombre por los dı́as de la semana y tipo de hora
(normales, extra diurnas, extra nocturnas).
• Reporte de obra: Permite descargar los datos de la obra (nombre, código, cliente,
fecha) y combinarla con los otros 2 reportes de obra: resumen de partes semanales y
resumen por fase-etapa.
Con esto se culmina la aplicación Suradem Horas Hombre la cual se coloca en producción
en un servidor Heroku.
CONCLUSIONES Y RECOMENDACIONES
Conclusiones
Recomendaciones
datos activos y modificables y SQLite para datos históricos que no requieran modificación.
De esta manera si se produce un gran aumento en la cantidad de datos a almacenar se
pueden mantener en la aplicación para su consulta (estáticos y dinámicos) y modificación
(dinámicos).
REFERENCIAS
[8] Laudon, K. C. and Laudon, J. P., Sistemas de información gerencial. Pearson Educación,
12 ed., 2012.
[20] Chacon, Scott and Straub, Ben, Pro Git. Apress, 2 ed., 2014.
[28] Forrest Shull and Grigori Melnik and Burak Turhan and Lucas Layman and Madeline
Diep and Hakan Erdogmus, “What Do We Know about Test-Driven Development?,”
IEEE Software, vol. 27, 2010.
[29] Carlos Solis and Xiaofeng Wang, “A Study of the Characteristics of Behaviour Driven
Development,” 37th EUROMICRO Conference on Software Engineering and Advanced
Applications, Noviembre 2011.
37
[30] Ken Schwaber and Jeff Sutherland, “The scrum guide.” https://www.scrumguides.
org/scrum-guide.html, 2018. Consultado el 23/06/2019.
APÉNDICE A
Manual de Usuario Suradem Datos
Manual de usuario
Tabla de contenidos
• Resumen Aplicación
• Tipos de Usuario
o Inválido
o Básico
o Administrador
o SuperUsuario
• Registro
• Inicio Sesión
• Cambio Clave - Contraseña
• Navegación
o Menú
o Barra de navegación
o Botón Regresar
o Botón Logo Suradem
• Empleados
o Lista Empleados
Diálogo Resumen Empleado
Descargar Lista Empleados
o Ver detalle empleado
Descargar información empleado
Datos Personales
Datos Empresa
Observaciones
Referencias
Hist. Salarios/Cargos
Hist. Obras
o Agregar empleado
o Editar empleado
o Eliminar empleado
o Observaciones Empleado
Agregar observación
Editar observación
Eliminar observación
Descargar observaciones
o Referencias Empleado
Agregar referencia
Editar referencia
Eliminar referencia
Descargar referencias
o Salarios Empleado
Agregar salario
Editar salario
Eliminar salario
Descargar salarios
o Buscar Empleado
Por CI, nombre, código o cargo.
Búsqueda Avanzada
• Obras
o Lista Obras
Diálogo Información Obra
Descargar Lista Obras
o Ver detalle Obra
Descargar información Obra
Datos Obra
Empleados Obra
Referencias Obra
o Agregar Obra
o Editar Obra
o Eliminar Obra
o Empleado en Obra
Seleccionar Empleado para Agregar a Obra
Agregar empleado a obra
Editar participación empleado en obra
Eliminar participación empleado en obra
Descargar Participación Empleados en Obra
Agregar referencia empleado en obra
Editar referencia empleado en obra
Eliminar referencia empleado en obra
Descargar Referencias Empleados en Obra
o Buscar Obra
• Cargar Datos
o Cargar datos empleados (Excel)
• Estadísticas
• Calendario
• Administración Aplicación
o Registro SuperUsuario
o Lista Usuarios
Validar / Invalidar Usuario
Agregar / Remover Rol Administrador
Descargar Base de Datos (Excel - SQLITE)
Eliminar usuario
o Información Técnica
Resumen Aplicación
Suradem Datos es una aplicación web que permita consultar, modificar y agregar datos sobre los
trabajadores de la empresa y las obras en las que trabajan o han trabajado. Su objetivo es permitir
una consulta fácil y rápida sobre algún trabajador/obra específica o un grupo de ellos.
La aplicación permite consultar y modificar diferentes datos de los empleados como datos
personales, el histórico de obras y salarios de los trabajadores, así como agregar y consultar
observaciones y referencias de los mismos.
Para el ingreso y actualización de datos se cuenta con un módulo de carga de datos que permite
ingresar datos a través de archivos Excel.
Tipos de Usuario
Los usuarios de la aplicación se dividen en los siguientes roles:
• Inválido: Usuario registrado pero que no puede iniciar sesión hasta ser validado por un
SuperUsuario.
• Básico: Usuario validado con capacidad de consultar toda la información de las obras y
empleados excepto la relativa a los salarios. Sólo puede agregar observaciones y
referencias pero no puede editarlas, ni eliminarlas.
• Administrador: Usuario con capacidad de agregar/modificar y eliminar todos los datos de
los empleados y las obras. Puede ver/editar la información relativa a los salarios. Puede
utilizar el módulo de carga de datos para ingresar información desde un archivo Excel.
• SuperUsuario: Usuario que puede realizar las acciones de administrador y además tiene
capacidad de:
o Validar/invalidar a los usuarios que se registran.
o Agregar/remover rol de admin.
o Eliminar usuarios
Registro
Para ingresar en la aplicación se debe contar con un usuario validado y su clave asociada.
Luego del registro debe esperar a ser validado por algún administrador del sitio para poder iniciar
sesión. Para más información acerca de validar usuarios ir a Validar / Invalidar Usuario
Inicio Sesión
Luego del registro y ser validado por un administrador podrá iniciar sesión ingresando su usuario y
contraseña en la sección Identifíquese y haciendo clic en Login.
Al iniciar sesión se le mostrará el menú principal y la barra de navegación con las opciones
disponibles dependiendo del tipo de usuario.
Los usuarios que hayan olvidado su contraseña pueden solicitar un cambio de clave haciendo click
en olvido su contraseña en la sección de Login (inicio sesión)
Se les pedirá nombre de usuario y llenar un captcha.
Luego se le enviará un correo (puede caer en la carpeta SPAM de su email) donde se le indica la
dirección a la cual debe acceder y colocar el código de reinicio y la fecha límite.
En la página cambio de clave colocará su usuario, la nueva clave y el código de reinicio.
Menú
El menú principal muestra una serie de botones para acceder a las diferentes secciones de la
aplicación.
-Básico:
• Cargar Datos: Permite acceder a la sección de carga de datos desde la cual se puede subir
un archivo Excel con los datos a ingresar/actualizar. Ver Cargar Datos
• Estadísticas: Permite acceder a la sección estadísticas donde se presenta información
sobre los empleados registrados. Ver Estadísticas
Barra Navegación
Barra superior con vínculos para acceder a diferentes secciones de la página.
-Básico y Administradores:
Empleados
Lista Empleados
Permite consultar la lista de empleados ingresados al sistema. Muestra una tabla con los datos de
los mismos:
• # (Código)
• Nombres
• Apellidos
• CI
• Cargo
• Departamento
Además permite ver un diálogo-recuadro con un resumen del empleado, y acceder al detalle del
empleado.
-Administrador y SuperUsuario:
Mismas funciones que usuario básico y adicionalmente botón para agregar un nuevo
empleado.
Diálogo Resumen Empleado
o Nombres
o Apellidos
o CI
o Código
o Estado Trabajador
o Cargo
o Departamento
o Salario
o Contrato
o Condición Salud
El recuadro vacío indica
que el empleado no
presenta condiciones
especiales de salud.
Un asterisco indica que el
empleado presenta
condiciones especiales de
salud que se pueden
observar en su detalle.
o Observaciones
o Positivas
Filtros:
Departamento: Se listarán los
empleados que tengan el dpto. elegido
Estado Trabajador: Se listarán los
empleados con el estado elegido
Condición de salud:
• Sin: Se listarán los empleados que
NO tengan una condición especial de
salud
• Con: Se listarán los empleados que
tengan una condición especial de
salud
Observaciones:
S/ Neg: (Sin Negativas) Se listarán los empleados que NO tengan observaciones negativas
C/ Neg: (Con Negativas) Se listarán los empleados que tengan observaciones negativas
C/ Pos: (Con Positivas) Se listarán los empleados que tengan observaciones positivas
Formato:
Muestra una vista con toda la información del empleado dividida en varias secciones.
o PDF (.pdf)
o Excel (.xlsx) Las secciones ocupan c/u una hoja de cálculo (Datos personales,
Observaciones, Salarios, Referencias y Obras)
Datos Personales
Nombres, Apellidos, CI, Sexo, Edad, Fecha Nac, Est. Civil, Teléfono #1, Teléfono #2, Dirección,
Estado, Municipio, Parroquia, Email, Num Seg. Social, Banco, Num. Cuenta, Condición de Salud.
Botones de descarga: Permite descargar la información de los datos personales en PDF (Solo datos
personales) o en Excel (Datos personales y relativos a empresa).
Datos Empresa
Observaciones
observación)
-Administrador y SuperUsuario:
-Detalle Observación:
• Tipo:
• Fecha
• Autor
• Observación
Referencias
Referencias que se le hagan al empleado, las cuales están asociadas al cargo desempeñado.
También pueden estar asociadas a una obra si el cargo es desempeñado en la misma.
o Fecha
o Período
o Cargo
o Ver
(Botón detalle
referencia)
-Administrador y SuperUsuario:
-Opciones de referencia:
Detalle Referencia:
• Fecha
• Período
• Fortalezas
• Debilidades
• Cargo
• Supervisor
• En Obra: Solo si referencia
está asociada a obra
o Ver Obra: Botón ir a
detalle de obra
asociada
• Observaciones Supervisor
• Objetivos Propuestos
Sección muestra el histórico de salarios del empleado y cargo asociado. Sólo puede ser vista por
administradores. (Usuarios básicos ven Hist. cargos sin salarios y sin opciones de edición-creación)
o Fecha
o Monto
o Cargo
Hist. Obras
Sección muestra una lista de las obras donde el empleado ha estado y los datos asociados a su
participación.
• Nombres
(Obligatorio)
• Apellidos
(Obligatorio)
• CI
(Obligatorio)
• CI Nacionalidad
o Selector V
(venezolana) , E
(extranjero)
• Sexo
o Selector Hombre-
Mujer
• Estado Civil
o Selector soltero(a),
casado(a),
divorciado(a),
viudo(a),
concubino(a)
• Edad
• Fecha Nacimiento
o Selector calendario, se puede ingresar manualmente en formato dd/mm/aaaa
• Tlf 1
• Tlf 2
• Email (Si se ingresa debe ser un email válido)
• Dirección
• Estado
• Municipio
• Parroquia
• Código Empleado
• Ult. Salario
• Ocupación
• Cargo
• Contrato
• Departamento
• Estado Trab.
• Fecha Ingreso
o Selector calendario, se puede ingresar manualmente en formato dd/mm/aaaa
• Fecha Egreso
o Selector calendario, se puede ingresar manualmente en formato dd/mm/aaaa
• N. Seguro Social (Número Seguro Social)
• Banco
• Num. Cta
o Si se ingresa debe ser una secuencia de 20 números
• Tipo
o Selector Ahorro (A), Corriente (C)
• Condición de Salud
o Si se coloca el check significa que empleado tiene una condición especial de salud.
Se habilita el campo especificar para ingresar la condición que tiene el empleado.
• Especificar
• Observaciones
Observaciones Empleado
Las observaciones del empleado permiten ingresar información adicional de interés sobre el mismo
permitiendo almacenar la fecha, el autor y el tipo de observación.
Positivas
Negativas
Otro
Agregar observación
Muestra un formulario para agregar una observación del empleado. Se puede acceder desde detalle
empleado, sección Observaciones con el botón agregar.
Y desde Calendario al seleccionar una fecha, elegir un empleado y pulsar crear Observación
En él se solicitan los siguientes datos:
• Tipo
o Selector iconos
Buena (Positiva)
Mala (Negativa)
Otro
• Fecha
• Hecha por (Autor)
• Descripción (Obligatorio)
Se puede acceder desde detalle empleado, sección Observaciones con el botón del lápiz (Modificar)
en las opciones de la observación.
Se accede desde detalle empleado, sección Observaciones con el botón de la papelera (Eliminar) en
las opciones de la observación.
Referencias Empleado
Las referencias del empleado permiten ingresar información del empleado asociada a su
desempeño en un cargo específico. También pueden estar asociadas a una obra si el cargo es
desempeñado en la misma.
Agregar Referencia
- Detalle empleado, tabla Hist. Obras con el botón + en las opciones de los datos de
participación en la obra.
- Detalle obra, sección empleados con el botón +Ref en las opciones de los datos de
participación en la obra.
• Fecha
o Si se agrega desde una obra este
campo ya viene con la fecha de
ingreso al cargo en la obra.
• Período
• Cargo (Obligatorio)
o Si se agrega desde una obra este
campo ya viene con el cargo de
la obra.
• Obra Asociada
o Selector que muestra las obras y
cargo que ha desempeñado
empleado en ellas.
- Detalle empleado, sección Referencias con el botón del lápiz (Modificar) en las opciones
de la referencia
- Detalle obra, sección Referencias con el botón del lápiz (Modificar) en las opciones de
la referencia
Descargar Referencias
asociados a la obra)
• Detalle Obras, botón Descargar Información obra (referencias
asociadas obra)
La aplicación permite almacenar y llevar un histórico de los salarios de los empleados junto con el
cargo asociado y la fecha del mismo.
Pueden ser vistas en una tabla en el detalle empleado, en la sección Hist. Salarios.
Se puede acceder desde detalle empleado, sección Salarios con el botón agregar
En él se solicitan los siguientes datos:
• Fecha
(Obligatorio)
o Selector calendario, se
puede ingresar
manualmente en
formato dd/mm/aaaa
• Cargo
(Obligatorio)
• Monto Salario
(Obligatorio)
Se puede acceder desde detalle empleado, sección Hist. Salarios con el botón del lápiz (Modificar)
Se accede desde detalle empleado, sección Hist. Salarios con el botón de la papelera (Eliminar) en
las opciones del salario.
Buscar Empleado
Se pueden realizar búsqueda de los empleados por Cédula de identidad, Código, Nombre, Cargo y
Avanzada.
Desde la página principal en el cuadro búsqueda empleado se puede buscar un empleado por CI,
nombre, código o cargo (del empleado o desempeñado en obra) ingresando el texto y haciendo clic
en el botón buscar de acuerdo al criterio de búsqueda que se quiera.
Se mostrará una tabla con la lista de los empleados resultado de la búsqueda.
Búsqueda Avanzada
Se muestra una tabla con todos los empleados y opciones para filtrarlos de acuerdo a diversos
criterios:
Condición Salud
• Sin
o Se listarán los empleados que NO tengan una condición
especial de salud
• Con
o Se listarán los empleados que tengan una condición
especial de salud
Observaciones
• Sin Negativas
o Se listarán los empleados que NO tengan
observaciones negativas
• Con Negativas
o Se listarán los empleados que tengan observaciones
negativas
• Con Positivas
o Se listarán los empleados que tengan observaciones
positivas
Departamento: Se listarán los empleados que tengan el dpto. elegido
Estado: Se listarán los empleados con el estado elegido
Luego de seleccionarlos debe utilizar el botón Filtrar para realizar la búsqueda. Para
También se puede utilizar la opción de búsqueda de texto y ordenar la tabla por los campos de la
misma.
Obras
En la aplicación se almacena información relacionada a las obras como nombre, fecha de inicio,
fecha de finalización, estado, observaciones y empleados que trabajan en ella.
Lista Obras
Permite consultar la lista de obras ingresadas al sistema. Muestra una tabla con los datos de las
mismas:
• # Código
• Nombre
• Opciones
o Botón Ver
o Botón Detalle
-Administrador y SuperUsuario:
o Nombre
o Código
o Fecha Ini (Fecha inicio obra)
o Fecha Ult (Fecha finalización)
o Estado (Estado Obra)
o Observaciones
Si no selecciona ninguno se
mostrarán todos:
Formato:
Puede elegir el formato en que
descargar el listado
Al darle al botón del formato elegido se descargará un archivo de ese formato con
la información elegida.
PDF (.pdf)
Excel (.xlsx)
Muestra una vista con toda la información de la obra dividida en varias secciones.
-Administrador y superUsuario:
o PDF (.pdf)
o Excel (.xlsx) Las secciones ocupan c/u una hoja de cálculo (Datos obra, Empleados
y Referencias)
Datos Obra
Empleados
Muestra en una tabla la lista de empleados que han participado en la obra, con los datos de
participación del empleado en la misma.
Tabla empleados:
o CI
o Nombres
o Apellidos
o Datos participación
• FechaIn: Fecha ingreso
• FechaEg: Fecha Egreso
• Cargo: Cargo en Obra
o Nombres
o Apellidos
o CI
o Código
o Estado Trabajador
o Cargo
o Departamento
o Salario
o Contrato
o Condición Salud
El recuadro vacío indica que el empleado no presenta condiciones
especiales de salud.
Un asterisco indica que el empleado presenta condiciones especiales de
o Positivas
Referencias
o Empleado
Nombre y
apellidos
empleado
o CI
o Fecha
o Cargo (Cargo
desempeñado en obra)
o Detalle Empleado
o Opciones (Administradores)
-Detalle Referencia:
• Fecha
• Período
• Fortalezas
• Debilidades
• Cargo
• Supervisor
• Observaciones
Supervisor
• Objetivos Propuestos
Agregar Obra (Administradores y SuperUsuario)
Muestra un formulario para ingresar la información de una nueva obra. Se accede desde lista de
• Nombre
• Código Obra
o No debe contener espacios en blanco o símbolos
como “;” o “|”
• Fecha Inicial
o Selector calendario, se puede ingresar
manualmente en formato dd/mm/aaaa
• Fecha Ult. (Fecha finalización)
o Selector calendario, se puede ingresar
manualmente en formato dd/mm/aaaa
• Estado Obra
• Observaciones
Al darle al botón Agregar se verifica la información ingresada y si los datos son válidos la obra es
agregada al sistema y se redirige al usuario a la lista de obras ya actualizada. De lo contrario se
muestra un mensaje de error.
Muestra un formulario para editar la información de una obra. Se accede desde detalle obra botón
Editar.
El formulario es el mismo de Agregar Obra pero con la información que ya está ingresada en el
sistema colocada en los campos correspondientes.
Se pueden cambiar todos los campos excepto el código ya que es el identificador de la obra.
Al darle al botón Editar se verifica la información ingresada y si los datos son válidos la obra es
agregada al sistema y se redirige al usuario a la lista de obras ya actualizada. De lo contrario se
muestra un mensaje de error.
Eliminar Obra (Administradores y SuperUsuario)
Permite eliminar una obra del sistema, si se hace se borrarán adicionalmente todas las
participaciones de empleados en la obra.
Empleado en Obra
Los empleados se relacionan con las obras a través de su participación en ellas. Estas participaciones
guardan la información asociada a ellas como:
CI empleado
Código Obra
Cargo en Obra
Fecha Ingreso / Inicial
Fecha Egreso / Fin
Se pueden ver las participaciones de los empleados en las obras en:
Se muestra una tabla con una lista como la de búsqueda avanzada de empleado, desde aquí se
puede filtrar y seleccionar el empleado que se quiere agregar a la obra (haciendo click en + Agregar).
Agregar empleado a obra (Administradores y SuperUsuario)
Muestra un formulario para agregar una participación de un empleado a obra. Se accede desde la
lista de Seleccionar Empleado a Obra haciendo clic en el botón Agregar del empleado que se quiere.
• CI empleado
o CI del empleado escogido,
solo se puede verificar
• Código Obra
o Código obra en la que se
quiere agregar empleado,
solo se puede verificar
• Fecha Inicial
• Fecha Egreso
• Cargo Obra
Se pueden descargar las participaciones de los empleados en la obra en formato PDF o EXCEL desde:
-Detalle obra, sección empleados con el botón +Ref en las opciones de los datos de participación en
la obra. (Datos de obra se agregan a formulario referencia)
-Detalle empleado, tabla Hist. Obras con el botón + en las opciones de los datos de participación en
la obra. (Datos de obra se agregan a formulario referencia)
-Detalle empleado, sección Referencias con el botón agregar. (Se debe elegir la obra en la sección
obra asociada)
Más información en Agregar Referencia.
• Detalle obra, sección Referencias con el botón del lápiz (Modificar) en las opciones de la
referencia.
• Detalle empleado, sección Referencias con el botón del lápiz (Modificar) en las opciones de
la referencia.
-Detalle obra, sección Referencias con el botón de la papelera (Eliminar) en las opciones de la
referencia
-Detalle empleado, sección Referencias con el botón de la papelera (Eliminar) en las opciones de la
referencia
asociados a la obra)
• Detalle Obras, botón Descargar Información obra. (Referencias asociadas obra)
Buscar Obra
Desde la página principal en el cuadro búsqueda obra se puede buscar un empleado por Código o
nombre ingresando el texto y haciendo clic en el botón buscar de acuerdo al criterio de búsqueda
que se quiera. Se mostrará una tabla con la lista de las obras resultado de la búsqueda.
Cargar Datos
Se puede acceder desde el menú principal haciendo clic en el botón cargar datos.
Se debe hacer clic en seleccionar archivo y buscar el documento Excel (.xlsx)
FILA EMPLEADO:
Si se selecciona el check editar empleados los datos del archivo que se suba actualizarán/
sobrescribirán los guardados en el sistema si el empleado ya está en el sistema.
o N°empleados a ingresar:
o N°empleados ingresados:
o N°empleados actualizados:
No implementado
No implementado
Estadísticas (Administradores y SuperUsuario)
Permite acceder a la sección calendario, donde se pueden ver fechas de interés como ingresos,
egresos, observaciones y cumpleaños.
Se presenta un calendario interactivo en el cual se pueden ver las fechas de interés, ir al detalle del
empleado asociado al evento y agregar una observación a una fecha en particular.
Los eventos se muestran con cuadros de colores y con el nombre del empleado asociado
y al hacer clic sobre estos se muestra un diálogo-cuadro con la información
referente al mismo y con un botón para acceder al detalle del empleado asociado.
Los colores indican el tipo de evento: Cumpleaños, Observaciones, Egresos e Ingresos.
Registro SuperUsuario
- [dirección servidor]/registroSuperUsuario
Se muestra un formulario con los datos del registro normal más el campo de clave Especial (esta
clave verifica la identidad del superUsuario)
Vista que muestra una tabla con los usuarios registrados en la aplicación con la información y
opciones de los mismos.
Se puede acceder desde la página principal, haciendo clic en el icono Admin de la barra de
navegación.
• Usuario
• Nombre
• Cargo
Permite validar / invalidar a los usuarios desde la lista de usuarios. Esto permite que el usuario pueda
o no iniciar sesión.
La acción se realiza haciendo clic en el botón validar / invalidar en las opciones del usuario
respectivo.
Permite hacer / remover rol admin a los usuarios desde la lista de usuarios. Esto permite que el
usuario pueda agregar/editar y eliminar información.
La acción se realiza haciendo clic en el botón hacer/remover admin en las opciones del usuario
respectivo.
Permite descargar la base de datos actual en un archivo Excel (Cada tabla es una hoja). Se puede
acceder desde la Lista de Usuarios. (Dependiendo de la versión la descarga puede ser el Excel o la
base de datos SQLITE)
La acción se realiza haciendo clic en el botón Descargar Base Datos (Excel o SQlite)
Eliminar Usuario (SuperUsuario)
Información Técnica
La aplicación utiliza Javascript en las vistas para realizar muchas funciones por lo cual debe estar
habilitado en los navegadores para poder utilizar la aplicación.
• Sistema de base de datos relacional de código abierto, con una arquitectura que goza de
buena reputación gracias a su confiabilidad e integridad de los datos. Puede ser implantada
en la mayoría de los sistemas operativos y soporta claves foráneas, conjunciones, vistas,
triggers, procedimientos y la mayoría de los tipos de datos. Para el manejo de la base de
datos desde la aplicación se utiliza la librería Pg-promise que permite un fácil manejo de las
conexiones, operaciones y consultas a la base de datos. Adicionalmente puede ser
descargado el contenido de la base de datos en un archivo excel desde la sección Admin –
Descargar base de datos.
• También se implentó otra versión de la aplicación cuya única diferencia es la base de datos
SQLite, que podría ser puesta en producción dependiendo de los requerimientos. SQLITE es
un sistema de gestión de bases de datos relacional compatible con ACID. Ofrece como
ventaja que el conjunto de la base de datos (definiciones, tablas, índices, y los propios datos)
son guardados como un sólo archivo (al contrario de PostgreSQL).
SQLite es un sistema de gestión de bases de datos relacional compatible con ACID. Ofrece
como ventaja que el conjunto de la base de datos (definiciones, tablas, índices, y los propios
datos) son guardados como un sólo archivo). En la aplicación la base de datos se encuentra
en el directorio raíz (nomina.db) y puede ser descargada desde la sección Admin.
Las vistas son plantillas (templates) HTML procesados con Handlebars (.hbs). Lenguaje de plantillas
que permite mostrar diferentes contenidos en el HTML dependiendo de los datos pasados junto a
la plantilla.
Las claves de los usuarios son pre-procesadas por el navegador antes de enviarlas (en registro y
login) creando un hash sha256. Este hash funciona como la verdadera clave del usuario y es lo que
recibe el servidor.
De este modo la aplicación nunca recibe la clave original ingresada por el usuario.
Esto no sirve para proteger la aplicación ante una captura de la clave. Solo evita que si la clave es
capturada el atacante pueda descifrar la clave original. Además de esto las claves se procesan con
la librería Bcrypt (Blowfish-based crypt) al momento de ser verificadas o guardadas en la base de
datos, esto permite proteger las claves ante una captura de la base de datos.
Para el manejo de la sesión se utiliza la librería express-session, esta permite a través de una cookie
identificar al usuario y guardar sus datos en una sesión creada en el servidor.
Para la creación de los archivos pdf se utiliza la librería node-html-pdf y para los documentos Excel
(lectura y escritura) se utiliza exceljs.
APÉNDICE B
Manual de Usuario Suradem Horas Hombre
Información Suradem Horas Hombre
(/)
Documentación de la Aplicación
Actualizada: 20 de Junio, 2019
Documentación
A continuación se presenta la documentación/manual de la aplicación Suradem Horas Hombre, la cual es una
aplicación web que permite la carga de los partes diarios (horas hombre) de los trabajadores indicando el
día, obra, fase-etapa de construcción y las horas normales y extras (diurnas y nocturnas) ejecutadas. Con
estos datos permite sacar estadísticas como horas hombre necesarias por fase de construcción, total de
horas hombre y distribución semanal.
Tabla de contenidos
Resumen Aplicación
Tipos de Usuario
Inválido
Básico
Administrador
SuperUsuario
Registro
Inicio Sesión
Cambio Clave - Contraseña
Navegación
Menú
Barra Navegación
Botón Regresar
Botón Logo Suradem
Obras
Lista Obras
Diálogo Información obra
Descargar Lista obras
Detalle obra
Descargar información Obra
Datos Obras
Partes Semanales
Horas por Fase
Opciones obra
Agregar obra
Editar obra
Eliminar obra
Búsqueda obra
Parte Diario
Cargar Datos
Detalle Parte Diario
Parte Semanal
Resumen Semanal
Horas por Trabajador
Horas por Fase
Agregar Trabajador
Agregar Horas
Agregar Horas Todos
Editar Horas
Eliminar Horas Etapa
Horas 0
Eliminar Trabajador
Eliminar Todos los Trabajadores
Calendario
Administración Aplicación
Registro SuperUsuario
Lista Usuarios
Validar / Invalidar Usuario
Agregar / Remover Rol Administrador
Descargar Base de Datos (Excel)
Eliminar Usuario
Información Técnica
Resumen Aplicación
Suradem Horas Hombre es una aplicación web que permite la carga de los partes diarios (horas hombre) de
los trabajadores indicando el día, obra, fase-etapa de construcción y las horas normales y extras (diurnas y
nocturnas) ejecutadas. Con estos datos permite sacar estadísticas como horas necesarias por fase de
construcción, total de horas y distribución semanal.
La aplicación permite crear, consultar, modi car y eliminar diferentes datos de las obras como cliente,
fecha inicio, fecha n y estado
La aplicación permite crear, consultar, modi car y eliminar los partes diarios de los trabajadores
indicando la obra y fecha
La aplicación permite cargar/editar horas trabajadores en el Parte Semanal indicando el trabajor, día
semana, fase-etapa y tipo de horas
La aplicación permite ver resumen de distribución de horas por Fase-Etapa y trabajador en una Parte
Semanal
La aplicación permite ver y acceder a los partes semanales y las obras asociadas desde un calendario
Tipos de Usuario
Los usuarios de la aplicación se dividen en los siguientes roles:
Inválido
Usuario registrado pero que no puede iniciar sesión hasta ser validado por un SuperUsuario.
Básico
Usuario validado con capacidad de consultar toda la información de las obras y partes diario (No puede
agregar, editar o eliminar información).
Administrador
Usuario con capacidad de agregar/modi car y eliminar todos los datos de los trabajadores, partes diarios y
obras.
SuperUsuario
Usuario que puede realizar las acciones de administrador y además tiene capacidad de:
Registro
Para ingresar en la aplicación se debe contar con un usuario validado y su clave asociada.
Para registrarse en la aplicación debe acceder a la sección de registro. Puede hacerlo:
Si los datos son correctos se registrará el usuario de lo contrario se mostrará un mensaje de error.
Luego del registro debe esperar a ser validado por algún administrador (SuperUsuario) del sitio para poder
iniciar sesión.
Para más información acerca de validar usuarios ir a Validar / Invalidar Usuario
Inicio Sesión
Luego del registro y ser validado por un administrador podrá iniciar sesión ingresando su usuario y
contraseña en la sección Identifíquese y haciendo clic en Login.
Al iniciar sesión se le mostrará el menú principal y la barra de navegación con las opciones disponibles
dependiendo del tipo de usuario.
Navegación
Menú
El menú principal muestra una serie de botones para acceder a las diferentes secciones de la aplicación.
Lista Obras: Permite ver un listado con las obras. Ver Lista Obras
Cargar Datos: Permite elegir obra y fecha para cargar/editar o consultar datos de parte semanal Ver
Cargar Datos
Cuadro de Búsqueda Obra: Muestra opciones de búsqueda para obra por Código o Nombre. Ver
Búsqueda Obra
Calendario: Permite acceder a la sección calendario, donde se pueden ver las semanas trabajadas en
las obras y aceder a sus partes semanales o al detalle de la obra. Ver Calendario
Barra Navegación
Barra superior con vínculos para acceder a diferentes secciones de la página.
-Básico y Administradores:
Icono Casa: Ir a página principal.
Obras: Permite ver un listado con las obras. Ver Lista Obras
-SuperUsuario:
Mismo menú pero con la opción de vista Admin
Botón Regresar
(Atrás navegador - No actualiza o refresca página)
Imagen circular presente en la mayoría de las vistas de la aplicación y que al hacer clic
lleva al usuario a la página principal.
Obras
En la aplicación se almacena información relacionada a las obras como nombre, fecha de inicio, fecha de
nalización, estado, observaciones y los partes semanales trabajados en ella.
Lista Obras
Permite consultar la lista de obras ingresadas al sistema. Muestra una tabla con los datos de las mismas:
# Código
Nombre
Opciones
Botón Ver
Ver Resumen Obra
Botón Detalle
Detalle Obra
-Administradores:
Mismas funciones que usuario básico y adicionalmente botón para agregar una nueva obra.
Nombre
Código
Observaciones
Formato:
Puede elegir el formato en que descargar el
listado (PDF o Excel)
Formato PDF:
-Administradores:
Mismas funciones e información además de:
Datos Obra
Nombre, # Código, Fecha Inicio,
Fecha Fin, Estado de la obra,
Observaciones
Partes Semanales
Datos de los partes semanales:
Fecha y Horas Hombre por día de
semana.
Horas Etapas
Datos de horas por fase-etapa:
Nombre fase-etapa, Cantidad de
semanas, Fechas semanas y
totales de horas.
Formato:
Puede elegir el formato en que descargar el
listado (PDF o Excel)
Formato Excel: (.xlsx) Las secciones ocupan c/u una hoja de cálculo
Datos Obras
Se muestran los datos de la obra:
Nombre, # Código, Fecha Inicio, Fecha Fin, Estado de la obra, Cliente y Observaciones
-Botones de descarga: Permite descargar la información de los datos de la obra en PDF o en Excel (Solo
datos obra).
Partes Semanales
Muestra en una tabla los partes semanales de la obra
-Botones de descarga: Permite descargar la información de los partes semanales en PDF o en Excel (Solo
partes semanales)
Fecha
Semana
Fase-Etapa
Código Etapa
Ver (Botón Detalle Parte)
-Botones de descarga: Permite descargar la información en PDF o en Excel (Solo horas por fase).
-Datos Fase: Muestra el nombre de la fase-etapa, su código, las semanas que se trabajó en la fase-etapa y las
fechas de las mismas.
También muestra el total de horas hombre y como se distribuyen:
Total Horas
Total H. Semana (lunes a viernes)
Horas (horario normal)
H. Extra Diurnas
H. Extra Nocturnas
Nombre
Fecha Inicial
Selector calendario, se puede ingresar
manualmente en formato dd/mm/aaaa
Estado Obra
Observaciones
El formulario es el mismo de Agregar Obra pero con la información que ya está ingresada en el sistema
colocada en los campos correspondientes. Se pueden cambiar todos los campos excepto el código ya que es
el identi cador de la obra. Al darle al botón Editar se veri ca la información ingresada y si los datos son
válidos la obra es agregada al sistema y se redirige al usuario a la lista de obras ya actualizada. De lo
contrario se muestra un mensaje de error.
Búsqueda Obra
Parte Diario
Los partes diarios son la base de la aplicación ya que su carga y distribución son los datos de interés de la
misma. Se accede desde el botón cargar datos (seleccionando obra y fecha), desde el calendario o desde el
detalle de la obra (sección partes semanales). Consisten en la distribución de horas trabajadas por cada
empleado en la obra indicando el día de la semana, el tipo de hora (normal, extra diurna, extra nocturna) y la
fase-etapa de la obra.
Cargar Datos
Permite acceder al parte semanal para cargar datos (o consultar). Ver Detalle Parte
Debe seleccionarse la obra y la fecha que se quiere cargar o acceder. De no estar la obra debe agregarla
antes en lista de obras Agregar Obra. Ver Agregar Obra
Fecha: Selector calendario para fecha, también puede introducirse manualmente con el formato
dd/mm/yyyy
Semana: Texto con la fecha de inicio y n de la semana de acuerdo a la fecha ingresada. (No se puede
editar, se calcula automáticamente con la fecha)
Inicio: Fecha de inicio de semana escogida (No se puede editar, se calcula automáticamente con la
fecha)
Parte Semanal
Resumen Semanal
Horas por Trabajador
Horas por Fase
Parte Semanal
Se muestran el parte semanal en una tabla con los días de la semana, trabajadores y las opciones para
agregar, editar y eliminar información:
-Botón Agregar Trabajador: Permite agregar trabajador al parte semanal mediante un formulario. Ver
Agregar Trabajador
-Botón Códigos Fases Etapas: Muestra un diálogo-cuadro con los codigos de las etapas de construcción
-Botón Horas Cero: Permite colocar las horas de todos los trabajadores del parte semanal en 0 (eliminarlas).
-Botón Eliminar TODOS: Permite eliminar todos los trabajadores del parte semanal.
-Tabla semana: tabla muesta los trabajadores y los días de la semana con las opciones de c/u.
Muestra Ficha (Ficha identi cación del trabajador), Nombre (trabajador) y días de la semana
-Botón Agregar Horas Todos: Permite agregar horas a todos los trabajadores en ese día de la semana. Ver
Agregar Horas Todos
-Tabla Parte Diario: Tabla interna que muestra las horas de cada etapa el día de la semana.
Horas Normales
Resumen
Muestra en una tabla un resumen de las horas hombre realizadas en la semana
-Botón Códigos Fases Etapas: Muestra un diálogo-cuadro con los codigos de las etapas de construcción
-Tabla Parte Diario: Tabla interna que muestra las horas de cada etapa el día de la semana.
Horas Normales
Código Etapa
-Tabla Total: Última la de tabla resumen que muestra el total de las horas de cada día.
-Botones de descarga: Permite descargar la información en PDF o en Excel (Solo horas por trabajador).
-Tabla: Muestra la cha del trabajador, su nombre y CI, así como el total de horas hombre y como se
distribuyen:
Total Horas
Total H. Semana (lunes a viernes)
Horas (horario normal)
H. Extra Diurnas
H. Extra Nocturnas
Total Horas
Total Semana (lunes a viernes)
Horas (horario normal)
H. Extra Diurnas
H. Extra Nocturnas
Agregar Trabajador
Muestra un formulario para ingresar un trabajador al parte semanal en la obra.
Se accede desde parte semanal con el botón agregar.
Nombre Trabajador
Agregar Horas
Muestra un cuadro diálogo para agregar las horas realizadas por el trabajador en un día y etapa especí ca.
especí ca. Se accede desde el botón +todos al lado del nombre del día de interés.
Editar Horas
Muestra un cuadro diálogo para editar horas realizadas por el trabajador en un día y etapa especí ca. Se
accede desde el botón con el código de la etapa en la tabla interna del día de interés
Horas
NOTA: Si se quiere colocar las horas en 0 sin borrar la etapa se puede utlizar el botón horas cero, o editar las
horas manualmente a 0.
Ver Editar Horas
Ver Horas Cero
Horas Cero
Muestra un cuadro diálogo para con rmar si colocan en 0 todas las horas de todos los trabajadores del
parte semanal. Se accede desde el botón horas cero en el parte semanal Ver Parte
Semanal
Si se responde Si se eliminan todas las horas del parte semanal, quedando los trabajadores con sus
etapas vacías.
Eliminar Trabajador
Muestra un cuadro diálogo para con rmar si desea eliminar trabajador del parte semanal. Esto eliminará
todas sus horas del parte. Se accede desde el icono de papelera en en el parte semanal Ver Parte
Semanal
Si se responde Si se eliminan TODOS los trabajadores y sus horas del parte semanal.
Calendario
Permite acceder a la sección calendario, donde se pueden ver las fechas de los partes semanales de las obras
y acceder al detalle de los partes o la obra. Se accede desde el botón Calendario del menú principal.
Los partes se muestran con cuadros de colores y con el nombre de la obra asociada ocupando el largo de la
semana
y al hacer clic sobre estos se muestra un diálogo-cuadro con la información referente al mismo y con un
botón para acceder al detalle del parte y la obra asociada.
Los colores indican la obra:
Registro SuperUsuario
CLAVE ESPECIAL
Si los datos son correctos se registrará el usuario como superUsuario e iniciará sesión automáticamente
redirigiéndolo a la página principal.
El superusuario puede realizar diversas funciones como ver la lista de usuario y realizar acciones sobre ellos,
como validarlos/invalidarlos, otorgar/remover rol administrador, entre otras.
Usuario
Nombre
Cargo
Admin
Válido
Información Importante
La acción se realiza haciendo clic en el botón validar / invalidar en las opciones del usuario respectivo.
La acción se realiza haciendo clic en el botón hacer/remover admin en las opciones del usuario respectivo.
Eliminar Usuario
Permite eliminar un usuario de la aplicación.
-Se puede acceder desde la Lista de Usuarios. Haciendo Clic en el botón Eliminar con el icono de papelera
Información Técnica
La aplicación está desarrollada en el lenguaje JavaScript para Node.js, utilizando el framework Express JS
(Infraestructura web rápida, minimalista y exible para Node.js). La aplicación utiliza Javascript en las vistas
para realizar muchas funciones por lo cual debe estar habilitado en los navegadores para poder utilizar la
aplicación. Por defecto la aplicación se ejecuta en el puerto de nido en la variable ‘process.env.PORT’ o en el
puerto 8080.
Sistema de base de datos relacional de código abierto, con una arquitectura que goza de buena
reputación gracias a su con abilidad e integridad de los datos. Puede ser implantada en la mayoría de
los sistemas operativos y soporta claves foráneas, conjunciones, vistas, triggers, procedimientos y la
mayoría de los tipos de datos. Para el manejo de la base de datos desde la aplicación se utiliza la
librería Pg-promise que permite un fácil manejo de las conexiones, operaciones y consultas a la base
de datos. Adicionalmente puede ser descargado el contenido de la base de datos en un archivo excel
desde la sección Admin.
Ver Descargar Base de Datos (Excel)
Las vistas son plantillas (templates) HTML procesados con Handlebars (.hbs). Lenguaje de plantillas que
permite mostrar diferentes contenidos en el HTML dependiendo de los datos pasados junto a la plantilla.
Estas plantillas se ubican en la carpeta views.
Las claves de los usuarios son pre-procesadas por el navegador antes de enviarlas (en registro y login)
creando un hash sha256. Este hash funciona como la verdadera clave del usuario y es lo que recibe el
servidor. De este modo la aplicación nunca recibe la clave original ingresada por el usuario.
Esto no sirve para proteger la aplicación ante una captura de la clave. Solo evita que si la clave es capturada
el atacante pueda descifrar la clave original. Además de esto las claves se procesan con la librería Bcrypt
(Blow sh-based crypt) al momento de ser veri cadas o guardadas en la base de datos, esto permite
proteger las claves ante una captura de la base de datos. Para el manejo de la sesión se utiliza la librería
express-session, esta permite a través de una cookie identi car al usuario y guardar sus datos en una sesión
creada en el servidor.
Para la creación de los archivos pdf se utiliza la librería node-html-pdf y para los documentos Excel (lectura y
escritura) se utiliza exceljs.
Otras librerías utilizadas son: