Explora Libros electrónicos
Categorías
Explora Audiolibros
Categorías
Explora Revistas
Categorías
Explora Documentos
Categorías
FACULTAD DE CIENCIAS Y
TECNOLOGIA
DIRECCIÓN DE POSGRADO
Cochabamba – Bolivia
2018
ii
Agradecimientos:
A mi amada familia: Victor Balderrama, Aidee Guzman,
Fabiola Balderrama, y Yoselin Balderrama por todo su apoyo,
motivación, y amor incondicional que me han brindado desde
el día en que nací, las palabras ni la vida me alcanzarán para
retribuirles todo lo que han hecho por mí.
A mis mejores amigas: Belen Bilbao, Vanessa Vargas, Regina
Murillo, por su hermosa amistad e indescriptibles valiosos
momentos compartidos.
A mi tutor Edson Terceros, por su guía, paciencia y
dedicación.
INDICE DE FIGURAS ..................................................................................................................... 5
Resumen ......................................................................................................................................... 7
Introducción..................................................................................................................................... 8
1 Generalidades ......................................................................................................................... 9
2 Metodología .......................................................................................................................... 10
4 Angular .................................................................................................................................. 11
4.4 Lodash........................................................................................................................... 12
7 Diseño ................................................................................................................................... 21
3
4
8 Conclusiones......................................................................................................................... 36
9 Bibliografía ............................................................................................................................ 37
5
INDICE DE FIGURAS
INDICE DE TABLAS
RESUMEN
En la presente monografía se explica los conceptos basicos de Angular, Angular CLI, Material
Design, Seguridad industrial y se detalla la implementación de una arquitectura de los
componentes dinámicos: formularios y listados, que se renderizan a partir de metadatos
utilizando el framework Angular con el lenguaje de programación Typescript, que fue aplicado al
caso de estudio: “Sistema de seguridad industrial para la constructora BUDESA”.
INTRODUCCIÓN
Entre las aplicaciones de escritorio y web se puede encontrar aspectos en común como son:
Formularios, que son un medio de entrada de información al sistema.
Listas, son usados para desplegar la actual información existente.
Generalmente un sistema web puede tener múltiples formularios para la recolección de
información de diversos módulos definidos dentro el sistema, este número es proporcional a la
cantidad de vistas que poseen el despliegue de esta información, la forma más básica de
desplegar información es mediante listas tabuladas.
En la actualidad existen diversos frameworks para facilitar el desarrollo de los sistemas web,
cada uno de ellos provee diversos beneficios, es importante seleccionar el framework que mejor
se adecue a las necesidades del proyecto, esto podría basarse en la cantidad de documentación
existente, librerías, y otros factores.
Para la programación del lado del cliente se seleccionó JavaScript, usando el framework Angular.
Angular actualmente en la versión 6, permite usar TypeScript, este framework hace uso de la
arquitectura basada en componentes.
En la presente monografía se tomará como caso de estudio la creación de una librería compuesta
de dos componentes:
Componente formulario
Reutilizará los componentes que provee angular material.
Los campos del formulario deben ser definidos en un JSON.
Los tipos de campo que se proponen son: textarea, select, input text, input number, checkbox,
Radio button, datepicker.
Componente lista
Se contará con la funcionalidad de seleccionar una fila.
Se implementará la lógica de definir acciones que puedan ser aplicadas a una fila en específico.
Las columnas podrán ser ordenadas de forma Ascendente y descendente.
Los campos de la lista deben ser definidos en un JSON.
En este caso de estudio se pretende facilitar la creación de formularios y listas permitiendo
uniformizar los estilos de los existentes en un sistema web, como principal contribución del uso
de la librería será el tiempo de desarrollo en la definición para los formularios y listas identificadas,
junto a la reducción de código duplicado e innecesario.
9
1 GENERALIDADES
Dentro de las aplicaciones web al igual que en los sistemas de información de escritorio se
pueden distinguir cuatro actividades importantes:
La entrada de Información
Representa los datos que son requeridos para ser procesados, los datos pueden ser ingresados
de las siguientes formas como:
Ingreso manual, que son ingresadas por el usuario de forma directa.
Automáticas, información que proviene de la interacción con otros sistemas.
Almacenamiento de información
Esta actividad es una de las más importantes que debe tener un sistema, una vez que la
información de entrada es ingresada debe ser persistida para posteriormente acceder a esta
información cuando sea requerida.
Procesamiento de Información:
Son operaciones establecidas en el sistema que procesan la información, a partir de ella se
genera información procesada.
10
Salida de información:
El sistema puede desplegar la información procesada de diversas formas para la interpretación
del usuario.
2 METODOLOGÍA
3 METODOLOGÍA DE DESARROLLO
3.1 Cascada
4 ANGULAR
Angular es un framework de desarrollo para JavaScript creado por Google, el cual utiliza
templates y componentes. Los componentes están basados en Typescript que es un lenguaje
que nos permite beneficiarnos de las características de los lenguajes orientado a objetos y se
compila a javascript. Angular nos permite la construcción de interfaces de usuario que por lo
12
general consumen un API REST. Gracias a su CLI y a Material Design es posible construir una
interfaz en menor tiempo. (Angular, 2018)
4.1 TypeScript
Angular material permite implementar de una manera muy cómoda un diseño de aplicación con
las directrices de Material Design de Google. (Angular Material, 2018)
Usando los componentes que nos ofrece podremos producir aplicaciones que son estéticamente
brillantes, junto con una serie de componentes adicionales al propio HTML, sin necesidad de
escribir nada de CSS, consiguiendo diseños muy atractivos, aprovechando, pero sin necesidad
de dominar, características modernas de CSS como por ejemplo Flexbox.
4.4 Lodash
Lodash.js es una de las librerías de referencia en JavaScript a la hora de trabajar con colecciones
de objetos. Lodash fue en su momento un fork de Underscore.js pero con el paso del tiempo se
ha rediseñado por completo y añadido mayor funcionalidad. (Lodash, 2018)
13
5 SEGURIDAD INDUSTRIAL
Incidentes: Son los sucesos que bajo circunstancias levemente diferentes, podrían haber dado
por resultado una lesión, un daño a la propiedad o una pérdida en el proceso.
Plazas Principales, Tinglados, Graderías, Canchas Múltiples, Coliseos, Colegio Técnico, etc.
Actualmente se encuentra realizando trabajos en la localidad de Villa Tunari. Con la finalidad de
asumir responsabilidad, legal, social y ambiental precisa generar un plan de seguridad que
permita generar lugares de trabajo saludables, seguros, que minimicen los riesgos y sean
compatibles con el medio ambiente, con el fin de detectar sus fallas, corregirlas y encaminar la
empresa dentro de estándares que den a sus trabajadores ambientes adecuados libres de
factores que sean causales de deterioro de su salud e integridad física encaminado en un marco
con condiciones de trabajo dignas, seguras, saludables que generen bienestar y como
mecanismo que mejore la productividad, potencializando positivamente la empresa generando
crecimiento económico y social.
6.1 Requerimientos
La empresa BUDESA tiene un registro precario de control y registro de accidentes, se detalla los
requerimientos identificados que el sistema de seguridad industrial:
Se identificaron los siguientes rrequerimientos funcionales:
Requerimiento Requerimiento
funcional
RF1 Gestionar la estructura organizacional de la constructora.
6.2 Formularios
Registro de proyectos:
Para la adición y actualización de los proyectos.
Descripción Textarea
Lugar Dropdown
Estado Dropdown
Registro de empleados:
Para la adición y actualización de los empleados.
Nombre del campo Tipo de campo
Nombres Textbox(tipo: text)
Apellidos Textbox(tipo: text)
CI Textbox(tipo: number)
Fecha de nacimiento Datepicker
Género Radiobutton
Dirección Textbox(tipo: text)
Número telefónico Textbox(tipo: number)
Email Textbox(tipo: text)
Registro de equipos:
Para la adición y actualización de los equipos.
Nombre del campo Tipo de campo
Código Textbox(tipo: text)
Categoría Dropdown
Estado Dropdown
Registro de accidentes:
6.3 Listas
El despliegue de información para mejor visión del usuario es mediante un listado, el número de
listas es proporcional a la cantidad de formularios, todos los campos previamente mencionados
serán visibles como columnas, y solo se desplegará los valores en forma de lectura,
adicionalmente se puede configurar una columna de acciones.
7 DISEÑO
Un patrón de diseño es una descripción de clases y objetos comunicándose entre sí, adaptada
para resolver un problema de diseño general en un contexto particular. (Gamma, Helm, Johnson,
& Vlissides, 1995)
22
Se hizo uso del patrón Composite, que tiene como propósito componer objetos en estructuras
arbóreas para representar jerarquías todo-parte. Manipular todos los objetos del árbol de manera
uniforme.
Los formularios son construidos a partir de un arreglo de campos, cada campo tiene un tipo
definido, a continuación, se detallan los componentes reconocidos dentro el formulario.
7.2.1 Componentes
Todos los componentes tienen atributos en común que son abstraídos en la clase componente:
Especificaciones:
Campos Descripción
key Este campo debe coincidir con el nombre del
campo que debe ser enviado en el json.
label Es una cadena que será desplegada como
etiqueta relacionado al componente.
type Los tipos permitidos son:
Textbox
Textarea
23
Radiobutton
Checkbox
Dropdown
Datepicker
Campos Descripción
Config Representa el tipo de textbox:
Text
Number
pattern Recibe una expresión regular que será
tomada en cuenta para la validación del
campo
error Mensaje de error que será desplegado en
caso de que no cumpla con la expresión
regular.
24
En el caso del componente textarea, cuenta con las mismas características que un componente
base.
Campos Descripción
options Representa un arreglo de opciones a ser
seleccionadas.
Nota: Solo una opción puede ser
seleccionada.
Campos Descripción
options Representa un arreglo de opciones a ser
seleccionadas.
Nota: Múltiples opciones pueden ser
seleccionada.
Campos Descripción
options Representa un arreglo de opciones a ser seleccionadas.
Nota: Solo una opción puede ser seleccionada.
En el caso del componente datepicker, cuenta con las mismas características que un
componente base.
Campos Descripción
Items Representa un arreglo de los campos con los
que contara el formulario.
labelButton La etiqueta para el botón
save El evento que transmitirá al componente
padre cuando se presione el botón.
disabled Pondrá a todo el formulario en modo de
lectura.
Para renderizar los componentes se hizo uso de los componentes que provee la librería Angular
Material.
Fue necesario iterar la lista de componentes, para que cada componente sea renderizado de
acuerdo al campo “type”
variable Descripción
items Representa al arreglo que se desea iterar.
item Un elemento dentro la lista
Tabla 16. Especificación de campos de un Dynamic form.
Fuente: Elaboración propia
28
NgIf puede recibir una condición o una variable, en caso de que el valor sea falso no se renderiza
en el DOM los elementos que están dentro del elemento que tiene definido ngIf.
NgSwitch se usa para declarar la variable que evalúa y *ngSwitchCase son los casos donde
concuerde la evaluación.
29
NgSwitch fue utilizada en lugar de ngIf por que necesitamos contar con 6 tipos de comparaciones
de un mismo campo, ayudando a la legibilidad del código como se muestra en:
La información del formulario es expuesta en el momento que el usuario presione el botón como
representación de petición, la cual se llevara a cabo siempre y cuando el formulario cumpla con
las validaciones que los campos contienen.
7.2.4.1 Validación
Todos los componentes pueden ser campos requeridos, sin embargo, el campo textbox puede
contar con una validación adicional relacionada a una expresión regular.
7.3.1 Cabeceras
7.3.3 Acciones
Las acciones son definidas en un arreglo con la siguiente sintaxis:
Campos Descripción
label Es una cadena que será desplegada en el link de acción.
callback Función a ser llamada cuando se dispare el evento click.
hasIcon La clase de icono de Font Awesome.
Tabla 17. Especificación de campos de una acción
Fuente: Elaboración propia
8 CONCLUSIONES
Angular es un framework de desarrollo para JavaScript creado por Google, el cual utiliza templates
y componentes. Los componentes están basados en Typescript que es un lenguaje que nos
permite beneficiarnos de las características de los lenguajes orientado a objetos y se compila a
javascript. Angular nos permite la construcción de interfaces de usuario que por lo general
consumen un API REST. Gracias a su CLI y a Material Design es posible construir una interfaz en
menor tiempo.
Los históricos de los incidentes registrados en la empresa BUDESA fue un gran aporte para la etapa
de identificación de los requerimientos.
El uso del patrón composite se pudo contar con un código mantenible y reutilizable.
Gracias al diseño de software orientado a objetos y el uso de patrones de diseño de creación, el
proyecto de sistema de seguridad para la empresa constructora BUDESA que tenía un plazo de 2
meses para tener una versión inicial de implementación de los formularios y listas se redujo a 1
semana usando los componentes dinámicos de la librería desarrollada lo que significa una
diferencia del 75% de ahorro en tiempo de desarrollo. Estos componentes pueden ser reutilizados
para cualquier nuevo requerimiento. Si en un futuro el sistema decide cambiar y convertirse un
CMS solo se necesitaría un adaptador para pasar el formato de metadatos que proviene desde
BackEnd.
37
9 BIBLIOGRAFÍA
Angular. (22 de Octubre de 2018). Angular CLI Wiki. Recuperado el Octubre de 2018, de Angular
CLI: https://github.com/angular/angular-cli/wiki
Angular. (2018). What is Angular. Recuperado el Octubre de 2018, de Angular:
https://angular.io/docs#what-is-angular
Angular Material. (2018). Material Design components for Angular. Recuperado el Octubre de
2018, de Angular Material: https://material.angular.io/)
Aponte Benavides, L. F. (2017). Análisis de la relación costo-beneficio de la implementación de
un sistema gps para el control de rutas en la empresa bimbo de colombia s.a regional
bogotá. Universidad Distrital Francisco José de Caldas. Bogotá.
Asfahl, C. R. (2000). Seguridad industrial y salud.
Cortés Díaz, J. M. (2005). Seguridad e higiene en el trabajo. Técnica de prevención de riesgos
laborales. Madrid, España: Editorial Tébar.
Gamma, E., Helm, R., Johnson, R., & Vlissides, J. (1995). Design Patterns. Addison Wesley.
Henao, F. (2013). Riesgos en la construcción.
Instituto Radiofónico Fé y Alegria Quito – Ecuador. (2012). Sistemas de Información. Recuperado
el Octubre de 2018, de https://irfeyal.wordpress.com/investigaciones/sistemas-de-
informacion/
Lodash. (2018). lodash v4.17.11. Obtenido de lodash: https://www.npmjs.com/package/lodash
Nwamba, C. (2017). TypeScript 2.x for Angular Developers.
TypeScript. (2018). TypeScript. Recuperado el Octubre de 2018, de
https://www.typescriptlang.org