Implementación de un sistema web para el control e inventario de medios computacionales
64
0
0
Texto completo
(2) Universidad Central “Marta Abreu” de Las Villas Facultad de Ingenierı́a Eléctrica Departamento de Automática y Sistemas Computacionales. TRABAJO DE DIPLOMA Implementación de un sistema web para el control e inventario de medios computacionales. Tesis presentada en opción al grado de Ingeniero en Automática Autor: Yaiko Orlando Unufio Torres [email protected]. Tutor: Ing. Javier Molina Hernández Dpto. de Automática, Facultad de Ing. Eléctrica, UCLV email: [email protected]. Santa Clara 2016 “Año 58 de la Revolución”.
(3) Hago constar que el presente trabajo de diploma fue realizado en la Universidad Central “Marta Abreu” de Las Villas como parte de la culminación de estudios de Ingenierı́a en Automática, autorizando a que el mismo sea utilizado por la Institución, para los fines que estime conveniente, tanto de forma parcial como total y que además no podrá ser presentado en eventos, ni publicados sin autorización de la Universidad.. Yaiko Orlando Unufio Torres Autor. Fecha. Los abajo firmantes certificamos que el presente trabajo ha sido realizado según acuerdo de la dirección de nuestro centro y el mismo cumple con los requisitos que debe tener un trabajo de esta envergadura referido a la temática señalada.. Yaiko Orlando Unufio Torres Autor. Fecha. , Jefe del Departamento. Fecha. , () Responsable de Información Cientı́fico-Técnica. Fecha.
(4) PENSAMIENTO. “El primer problema, para todos nosotros, tanto hombres como mujeres, no es aprender, sino desprendernos de lo aprendido.” Gloria Steinem.. i.
(5) DEDICATORIA. A mis padres por el amor, la dedicación, el apoyo incondicional y por haberse sacrificado en varias ocasiones para que yo pudiera estar aquı́ A mi hermana por siempre estar a mi lado y por hacerme los dı́as más placenteros A mi abuela que aunque no podrá disfrutar este triunfo conmigo, seguirá siendo mi motor impulsor. ii.
(6) AGRADECIMIENTOS. A mi tutor Javier Molina, por su disposición y ayuda incondicional en la elaboración de este trabajo, por convertir este tiempo en un continuo aprendizaje. A todos los profesores que durante la carrera han intervenido en mi formación profesional. A los amigos y compañeros de estudio durante toda la carrera, por compartir juntos estos 5 años. A mi amiga Liana que me apoyó en todo momento. En general quisiera agradecer a todo aquel que de una forma u otra, ayudó a la realización de este trabajo de diploma. Santa Clara, Cuba, 2016. iii.
(7) RESUMEN. El inventario es uno de los pilares fundamentales de cualquier institución, esto les permite conocer con exactitud el estado de sus medios básicos, de ahı́ la importancia de tener una planificación que sea capaz de controlar los medios presentes en cada una de sus instalaciones. Para la implementación de SIMC (Acrónimo de Sistema de Inventario de los Medios de Cómputo) se ha realizado un estudio de las diferentes tecnologı́as a utilizar, se han examinado diferentes bibliografı́as tanto a nivel nacional como internacional, además se ha diseñado e implementado la estructura básica del sistema que está en correspondencia con sus necesidades y que presenta sus respectivas especificaciones. También se confeccionó un Manual de Usuarios que facilita la interacción con el software. SIMC permite que exista un mayor control sobre los medios de cómputos que se encuentran en la universidad y contribuye al ahorro de materiales y recursos económicos.. iv.
(8) TABLA DE CONTENIDO Página PENSAMIENTO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. i. DEDICATORIA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. ii. AGRADECIMIENTOS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. iii. RESUMEN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. iv. INTRODUCCIÓN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 1. 1.. ANÁLISIS DE LAS TECNOLOGÍAS A UTILIZAR . . . . . . . . . . . . .. 5. 1.1.. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 5. 1.2.. Lenguaje de Marcas de Hipertexto . . . . . . . . . . . . . . . . . . .. 5. 1.2.1. Ventajas de HTML5 . . . . . . . . . . . . . . . . . . . . . . .. 6. 1.3.. Hojas de Estilo en Cascada. . . . . . . . . . . . . . . . . . . . . . .. 6. 1.4.. Twitter BootStrap . . . . . . . . . . . . . . . . . . . . . . . . . . .. 7. 1.4.1. Ventajas de Twitter Bootstrap . . . . . . . . . . . . . . . . .. 7. Gestor de Bases de Datos MySQl . . . . . . . . . . . . . . . . . . .. 8. 1.5.1. Ventajas de MySQl . . . . . . . . . . . . . . . . . . . . . . .. 8. JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 9. 1.6.1. Ventajas de JavaScript . . . . . . . . . . . . . . . . . . . . .. 9. jQuery, biblioteca de JavaScript . . . . . . . . . . . . . . . . . . . .. 10. 1.7.1. Ventajas de jQuery . . . . . . . . . . . . . . . . . . . . . . .. 10. Preprocesador de Hipertexto . . . . . . . . . . . . . . . . . . . . . .. 11. 1.8.1. Ventajas de PHP . . . . . . . . . . . . . . . . . . . . . . . .. 11. Selección del Framework PHP . . . . . . . . . . . . . . . . . . . . .. 11. 1.9.1. CakePHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 11. 1.9.2. Symfony . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 13. 1.9.3. Yii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 14. 1.5. 1.6. 1.7. 1.8. 1.9.. v.
(9) 2.. 3.. 1.9.4. Zend . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 15. 1.9.5. Codeigniter . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 15. 1.9.6. Laravel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 17. 1.9.7. Framework escogido . . . . . . . . . . . . . . . . . . . . . . .. 17. 1.10. Modelo-Vista-Controlador (MVC) . . . . . . . . . . . . . . . . . . .. 18. 1.10.1. Modelo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 18. 1.10.2. Vista . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 19. 1.10.3. Controlador . . . . . . . . . . . . . . . . . . . . . . . . . . .. 19. 1.11. JavaScript Ası́ncrono+XML (Ajax) . . . . . . . . . . . . . . . . . .. 19. 1.12. Servidor LAMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 20. 1.13. Lenguaje Unificado de Modelado (UML) . . . . . . . . . . . . . . .. 20. 1.13.1. Ventajas de UML . . . . . . . . . . . . . . . . . . . . . . . .. 20. 1.14. Protocolo Ligero de Acceso a Directorios (LDAP) . . . . . . . . . .. 21. DISEÑO GENERAL DEL SISTEMA. . . . . . . . . . . . . . . . . . . . .. 22. 2.1.. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 22. 2.2.. Arquitectura básica del sistema . . . . . . . . . . . . . . . . . . . .. 22. 2.2.1. Estructura de la base de datos y relaciones entre tablas. . . .. 22. 2.2.2. Estructura de las tablas de propósito general. . . . . . . . . .. 23. 2.2.3. Estructura de la tabla de computadoras.. . . . . . . . . . . .. 23. 2.2.4. Estructura de la tabla de usuarios . . . . . . . . . . . . . . .. 24. 2.2.5. Estructura de la tabla datos de instalación. . . . . . . . . . .. 24. 2.2.6. Estructura de la tabla de historial manual . . . . . . . . . . .. 25. 2.2.7. Estructura de la tabla de historial automático. . . . . . . . .. 25. 2.3.. Módulo de control de acceso y sistema de usuarios. . . . . . . . . .. 26. 2.4.. Casos de uso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 26. 2.4.1. Casos de Usos Generales. . . . . . . . . . . . . . . . . . . . .. 27. ANÁLISIS DE LOS RESULTADOS. . . . . . . . . . . . . . . . . . . . . .. 35. 3.1.. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 35. 3.2.. Manual de Usuario. . . . . . . . . . . . . . . . . . . . . . . . . . . .. 35. 3.2.1. Servicio de Autenticación.. 35. vi. . . . . . . . . . . . . . . . . . . ..
(10) 3.2.2. Servicio de Filtrado. . . . . . . . . . . . . . . . . . . . . . . .. 36. 3.2.3. Servicio de Visualización de Hojas de Vida de las Computadoras. 38 3.2.4. Servicio de Administración de Medios de Cómputo. . . . . .. 39. 3.2.5. Servicio de Administración de Usuarios . . . . . . . . . . . .. 41. 3.2.6. Servicio de Administración de Locales . . . . . . . . . . . . .. 44. 3.3.. Análisis económico y aplicabilidad. . . . . . . . . . . . . . . . . . .. 47. 3.4.. Análisis medioambiental. . . . . . . . . . . . . . . . . . . . . . . . .. 47. CONCLUSIONES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 48. RECOMENDACIONES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 49. REFERENCIAS BIBLIOGRÁFICAS . . . . . . . . . . . . . . . . . . . . . . . .. 51. A.. MÓDULO PARA LA GESTIÓN DE INVENTARIO. . . . . . . . . . . . .. 52. B.. HOJA DE VIDA DE LA COMPUTADORA. . . . . . . . . . . . . . . . .. 53. C.. MODELO 223-060. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 54. vii.
(11) INTRODUCCIÓN. El control e inventario ha sido un problema que se ha venido dando desde los tiempos más remotos, se cree que las sociedades antiguas tenı́an que almacenar grandes cantidades de alimentos y repartirlos luego en tiempos de sequı́a y escaseces, para esto tenı́a que existir un modelo de control que pudiera permitir el reparto de los productos de manera equitativa y eficiente, ası́ es como nace el inventario.(Capielo, 2015) El inventario es y ha sido uno de los principales ejes de funcionamiento de toda institución, debido a su gran impacto económico y a su aporte en los procesos productivos y organizativos. El mismo involucra, tanto el proveer a la institución de los materiales necesarios para su continuo y regular desenvolvimiento frente a sus demandas, como el de representar un activo o efectivo en forma de material; por lo que su administración debe ser llevada a cabo bajo un adecuado control que permita minimizar los costos asociados a su almacenamiento, proporcionando además altos ı́ndices de rotación.(Colón, 2010) Con el crecimiento vertiginoso que ha tenido el mundo en el ámbito de la informática ya existen gran cantidad de software que realizan las tareas de control e inventario, facilitando este proceso en las actividades de los usuarios, permitiéndoles un mayor control y administración de sus posesiones materiales, a nivel internacional se han desarrollado gran cantidad de investigaciones para implementar sistemas informáticos con este propósito. En el año 2011 se implementó un sistema de Información para el Control de Inventarios del Almacén del ITS en el estado de Coahuila de Zaragoza (México). Este sistema cubre las necesidades del almacén del ITS enfocándose en tener organizada la información concerniente al manejo de actividades básicas de inventarios acordes a las necesidades de la Institución, además permite el control del proceso de requisiciones de las diferentes áreas del Instituto para el almacén, brinda seguridad al usuario para no permitir la manipulación de la base de datos y genera los reportes correspondientes para cada uno de los procesos del almacén de acuerdo al sistema de calidad ISO 9001-2000. Esta herramienta cubre una necesidad que presentaba el Instituto.(Sánchez, 2011). 1.
(12) INTRODUCCIÓN. 2. En el año 2008 se implementó un sistema de control de inventarios y facturación en la Licorerı́a Tropical Club de Girardot (Colombia), este sistema usa un sistema web para el control e inventario que analiza de forma ordenada y confiable, optimiza la búsqueda de productos utilizando la base de datos de la licorerı́a y ofrece a los clientes una rápida y eficaz atención al momento de hacer sus compras.(Alfonso, 2008) En 2015 se implementó un sistema de gestión de inventarios para la empresa Calmetal S.A ubicada en la ciudad Santiago de Guayaquil (Ecuador), este sistema elimina la ausencia de controles y el deficiente manejo de los inventarios por parte del personal responsble de esta tarea. También permite que sus ingresos aumenten, ya que mejora la calidad del manejo del inventario, generando una mayor satisfacción y captación de clientes, eliminando problemas de faltantes y deterioro de productos que presentaba e influı́an consecuentemente en el decline de sus ventas y utilidades.(Cando, 2015) En el ámbito internacional existen varias soluciones informáticas para el control e inventario dentro de los que se encuentran programas como Fakturama, Lecprog Stock Management, inFlow Inventory Free Edition, programas que se especializan en el control e inventario de disı́miles materiales y que son muy bien aceptados por los usuarios que los utilizan. A nivel nacional se destacan algunas soluciones de empresas y otras de universidades que se han dedicado a implementar sistemas de control para erradicar problemas atenuantes que existı́an en sus diferentes instalaciones. El sistema Cóndor fue desarrollado en la Universidad de las Ciencias Informáticas, debido a las desventajas señaladas por los clientes surge la idea de modelar y diseñar una aplicación Web, en este caso, para uno de sus módulos, que reemplaza la aplicación de escritorio existente, para complacer las exigencias y sugerencias de los clientes del SICS y usuarios del sistema, además cuenta con mejoras y agrega funcionalidades contables, todo esto con un entorno sencillo y amigable, fácil de instalar y utilizar. Con esto se logra una aplicación que brinda seguridad e integridad a la hora de procesar los datos y además agiliza y facilita el proceso de control de inventario.(Fuentes, 2008) En la Universidad de las Ciencias Informáticas se implementó un sistema para el control de medios en los laboratorios, este sistema se implementa debido a la incapacidad de procesar planillas manuscritas con los inventarios y reportes de afectaciones que presentaban los métodos utilizados anteriormente, por otro lado permitió que se visualizaran un conjunto de reportes previamente implementados que facilitaban la toma de decisiones a los directivos.(Mar, 2013).
(13) INTRODUCCIÓN. 3. Con SIMC se solucionarán problemáticas como la descentralización de la información referente a los medios de cómputos y la pérdida de información en formato fı́sico por parte del personal administrativo encargado de su gestión, todo esto a través de una plataforma online y centralizada haciendo que la información sea más asequible, confiable y de fácil acceso. Situación del problema: Aunque existen varias soluciones informáticas disponibles, actualmente en la Universidad Central “Marta Abreu”de las Villas el control de los medios computacionales se realiza a través del modelo 223-060 (Anexo C) y de la hoja de vida de la computadora (Anexo B). Implementando un sistema web para el control e inventario de los medios de cómputo se garantiza el acceso inmediato a la información de cada equipo de forma centralizada y se evitan las posibles pérdidas de las informaciones contenidas en estos documentos por parte del personal que labora en estas actividades. Además, el sistema tendrá un gran impacto económico y medioambiental debido al ahorro de hojas de papel que actualmente se imprimen para cada reporte u hoja de vida. Por lo que se plantea el siguiente problema cientı́fico: No se dispone de un software que mejore el almacenamiento y filtrado de la información referente a los medios de cómputos presentes en la Universidad Central “Marta Abreu”de las Villas, este proceso en la actualidad se lleva a cabo mediante un engorroso trabajo manual y además con el apoyo de hojas de cálculo Excel que dificulta mucho la realización de los trabajos de filtrado y búsqueda. Posibles resultados: Con este proyecto se pretende optimizar y organizar el proceso de control de los medios de cómputo en la Universidad Central “Marta Abreu”de las Villas, brindando un servicio donde los usuarios autorizados puedan acceder a las hojas de vida e informaciones sobre las computadoras de forma más centralizada y sencilla. Se pretende implementar un sistema modular que permita el desarrollo de futuras versiones, que cumpla con las exigencias básicas de seguridad informática y que se pueda integrar como un servicio más de la red UCLV. Con esta investigación se pretende cumplir los siguientes objetivos: Objetivo general: Implementar un sistema web para el control e inventario de los medios computacionales. Objetivos especı́ficos: 1. Estudiar los temas relacionados con control de inventario en la literatura especializada..
(14) INTRODUCCIÓN. 2. 3. 4. 5.. 4. Estudiar las tecnologı́as existentes para el desarrollo de aplicaciones web. Seleccionar las tecnologı́as a emplear para el desarrollo del sistema. Programar el sistema de gestión de inventario. Confeccionar un Manual de Usuarios para un mejor entendimiento y facilitar el trabajo en el sistema.. Tareas de investigación: Realización de un estudio de los antecedentes y software similares al sistema que se pretende desarrollar. Determinación de las tecnologı́as a utilizar para el diseño e implementación del sistema. Realización del diseño de la estructura de la base de datos y de los casos de usos del sistema. Implementación de la interfaz gráfica del sistema. Implementación de los controladores y filtros para el manejo de la información. Elaboración de un Manual de Usuarios. Análisis económico y medioambiental del proyecto. Elaboración del informe final del proyecto. Capitulario : El informe de la investigación estará compuesto por introducción, capitulario, conclusiones, referencias bibliográficas y/o bibliografı́a y anexos. En la introducción se dejará definida la importancia, actualidad y necesidad del control sobre los medios de cómputos, además se dedicará al análisis de las tendencias nacionales e internacionales que existen en la actualidad. CAPÍTULO I: Se argumenta el por qué del uso de las tecnologı́as implementadas en este proyecto, además se hace un análisis de la bibliografı́a consultada tanto nacional como internacional. CAPÍTULO II: Se diseña e implementan las estructuras, las bases de datos, los casos de usos, el sistema de seguridad. En este capı́tulo se lleva a cabo el diseño general del sistema con todas sus respectivas especificaciones. CAPÍTULO III: Se realiza un análisis económico y medioambiental del proyecto. También se confecciona un Manual de Usuarios para facilitar el trabajo con el software. Este capı́tulo se dedica a realizar un análisis de los resultados obtenidos y a explicar cómo interactuar con el sistema..
(15) CAPÍTULO 1 ANÁLISIS DE LAS TECNOLOGÍAS A UTILIZAR. 1.1.. Introducción. El diseño e implementación de un Sistema Web para el control e inventario conlleva un estudio detallado de una amplia gama de tecnologı́as, analizar las ventajas y desventajas de cada una, hacer comparaciones y escoger frameworks que se ajusten a las necesidades del sistema son tareas a realizar, por lo que este capı́tulo se concentrará en consumar esta labor. El cumplimiento de la misma permitirá un desarrollo más eficiente de la aplicación. En este capı́tulo se describen y analizan un grupo de tecnologı́as, que son las utilizadas en la confección del sistema web, además se realiza una comparación y se explica por qué se escogió el framework php que se utiliza en la elaboración del mismo. 1.2.. Lenguaje de Marcas de Hipertexto. HTML, siglas de HyperText Markup Language, hace referencia al lenguaje de marcado para la elaboración de páginas web. Es un estándar que sirve de referencia para la elaboración de páginas web en sus diferentes versiones, define una estructura básica y un código (denominado código HTML) para la definición de contenido de una página web, como texto, imágenes, videos, entre otros. Es un estándar a cargo de la W3C, organización dedicada a la estandarización de casi todas las tecnologı́as ligadas a la web, sobre todo en lo referente a su escritura e interpretación. Se considera el lenguaje web más importante siendo su invención crucial en la aparición, desarrollo y expansión de la World Wide Web. Es el estándar que se ha impuesto en la visualización de páginas web y es el que todos los navegadores actuales han adoptado.(Aponte, 2013) Sin embargo, a lo largo de sus diferentes versiones, se han incorporado y suprimido diversas caracterı́sticas, con el fin de hacerlo más eficiente y facilitar el desarrollo de páginas web compatibles con distintos navegadores y plataformas. HTML5 es la nueva versión del lenguaje de marcado que se usa para estructurar páginas web, actualmente en desarrollo, que surge como una evolución lógica de las especificaciones anteriores con 5.
(16) ANÁLISIS DE LAS TECNOLOGÍAS A UTILIZAR. 6. los siguientes objetivos: separar totalmente la información, y la forma de presentarla, resumir, simplificar y hacer más sencillo el código utilizado, incorporar nuevas etiquetas semánticas, páginas compatibles con todos los navegadores web incluyendo los de los teléfonos móviles y otros dispositivos utilizados en la actualidad para navegar en Internet.(Robbins, 2013) 1.2.1.. Ventajas de HTML5. Es nativo, y por tanto independiente de plugins de terceros. Además es open source. Es más semántico, con etiquetas que permiten clasificar y ordenar en distintos niveles y estructuras el contenido. Incorpora metadatos de manera más formal, favoreciendo el posicionamiento SEO y la accesibilidad. El código es más simple lo que permite hacer páginas más ligeras que se cargan más rápidamente favoreciendo la usabilidad y la indexación en buscadores. Ofrece una compatibilidad mayor con los navegadores de dispositivos móviles. Incluye la etiqueta de dibujo canvas, que ofrece más efectos visuales. Ofrece soporte a codecs especı́ficos. Posibilita la inserción de vı́deos y audio de forma directa. Permite la geolocalización del usuario, algo muy útil para el marketing móvil. Tiene la capacidad de ejecutar páginas sin estar conectado. Incorpora nuevas capacidades JavaScript que aumentan la capacidad de almacenamiento. Frente a las cookies que dejaban almacenar algunos kilobytes, ahora se puede conseguir el almacenamiento de entre 5 y 10 megas, dependiendo de la plataforma. Además, se permiten múltiples Javascripts corriendo en paralelo en una misma página. Dispone de nuevas capacidades CSS3 como posibilidad de usar cualquier fuente o tipografı́a en HTML, columnas de texto, opacidad, transparencia, contraste, saturación, brillo, animaciones de transición y transformación, bordes redondeados, gradientes, sombras, etc. 1.3.. Hojas de Estilo en Cascada. El CSS es un lenguaje de estilos empleado para definir la presentación, el formato y la apariencia de un documento de marcaje, sea html, xml, o cualquier otro. Comúnmente se emplea para dar formato visual a documentos html o xhtml que funcionan como espacios web. También puede ser empleado en formatos xml, u otros tipos de documentos de marcaje para la posterior generación de documentos. Las hojas de estilos nacen de la necesidad de diseñar la información de tal manera que se pueda separar el contenido de la presentación y, ası́, por una misma fuente de información, generalmente definida mediante un lenguaje de marcaje, ofrecer diferentes presentaciones en función de dispositivos, servicios, contextos o aplicativos. Por lo que un mismo documento html, mediante diferentes hojas de estilo, puede ser presentado por pantalla, por impresora, por lectores de voz o por tabletas braille. Separando el contenido de la forma, composición, colores y fuentes..
(17) ANÁLISIS DE LAS TECNOLOGÍAS A UTILIZAR. 7. A diferencia de las otras especificaciones, la tercera revisión de la especificación CSS se ha dividido en temas. De este modo se disponen de diferentes temas que pueden crecer y evolucionar en paralelo, y no como uno grande y monolı́tico, con muchı́simas revisiones. Ası́, en la nueva revisión se encontran grupos como el de los selectores, unidades de medida, modelo de caja, colores y gamas, modelo de lı́nea, texto, fuentes, lenguajes verticales, page-media, entre otros. Y de este modo, diferentes módulos tienen un estatus diferente y son adoptados por los fabricantes de software a diferente velocidad.(Puig, 2013) El CSS3 se utiliza para dar estilo a los documentos HTML, separando el contenido de la presentación. Los estilos definen la forma de mostrar los elementos HTML. CSS3 permite a los desarrolladores Web controlar el estilo y el formato de múltiples páginas Web al mismo tiempo. Cualquier cambio en el estilo marcado para un elemento en la CSS3 afectará a todas las páginas vinculadas a esa CSS3 en las que aparezca ese elemento. Esta forma de descripción de estilos ofrece a los desarrolladores el control total sobre estilo y formato de sus documentos.(McFarland, 2013) 1.4.. Twitter BootStrap. Twitter BootStrap es una colección de herramientas de software libre para la creación de sitios y aplicaciones Web. Contiene plantillas de diseño basadas en: HTML y CSS con tipografı́as, formularios, botones, gráficos, barras de navegación y demás componentes de interfaz, ası́ como extensiones opcionales de JavaScript, además permite la adaptación de la interfaz, en dependencia del tamaño del dispositivo en el que se visualice sin que el usuario tenga que hacer nada, esto se denomina Responsive Web Design. El framework trae varios elementos con estilos predefinidos fáciles de configurar e integración jQuery para ofrecer ventanas y tooltips dinámicos. Es el proyecto más popular en GitHub (Fontanela, 2013). Las caracterı́sticas de Twitter BootStrap son: ofrece grids fijados y lı́quidos 724px, 940px, 1170px, un sistema de parrilla de 12 columnas para maquetar la Web app, se gestiona a través de GitHub, es compatible con Chrome, Firefox, Safari, IE 7 y Opera en tablet y teléfonos inteligentes, usa HTML5 y CSS3. Además de integrar librerı́as JavaScript y Less. Es open source, su descarga ocupa pocos Kilobytes.(Templatemonster, 2013) 1.4.1.. Ventajas de Twitter Bootstrap. Twitter BootStrap utiliza componentes y servicios creados por la comunidad como por ejemplo, HTML5 shim, Normalize.css, OOCSS, jQuery UI (implementa 12 plugins), LESS, GitHub. Es un compendio de buenas prácticas porque implementa los nuevos.
(18) ANÁLISIS DE LAS TECNOLOGÍAS A UTILIZAR. 8. estándares HTML5 + CSS3, cross-browser, IE 7/8/9, Firefox, Chrome, Safari y Opera 11, Grid system, 12 columnas por defecto, fijas (px) o fluidas a la hora de la maquetación. También aprovecha la comunidad GitHub de Twitter BootStrap. Es una herramienta ágil para construir interfaces con un tema por defecto.(Echegaray, 2014) 1.5.. Gestor de Bases de Datos MySQl. MySQL es un sistema gestor de bases de datos muy conocido y ampliamente usado por su simplicidad y notable rendimiento. Es una opción atractiva tanto para aplicaciones comerciales, como de entretenimiento, precisamente por su facilidad de uso y tiempo reducido de puesta en marcha. Esto y su libre distribución en internet bajo licencia GPL le otorgan como beneficios adicionales contar con un alto grado de estabilidad y un rápido desarrollo. Existen muchos tipos de bases de datos, desde un simple archivo hasta sistemas relacionales orientados a objetos. MySQL, como base de datos relacional, utiliza múltiples tablas para almacenar y organizar la información. Fue escrito en C y C++ y destaca por su gran adaptación a diferentes entornos de desarrollo, permitiendo su interacción con los lenguajes de programación más utilizados como PHP, Perl y Java y su integración en distintos sistemas operativos.(Casillas, 2011) El servidor MySQL fue desarrollado originalmente para manejar grandes bases de datos mucho más rápido que las soluciones existentes y ha estado siendo usado exitosamente en ambientes de producción sumamente exigentes por varios años. Aunque se encuentra en desarrollo constante, este servidor ofrece hoy un conjunto rico y útil de funciones. Su conectividad, velocidad, y seguridad hacen que sea un servidor bastante apropiado para acceder a bases de datos en Internet. Algunos detalles técnicos de MySQL: El software de bases de datos MySQL consiste de un sistema cliente/servidor que se compone de un servidor SQL multihilo, varios programas clientes y bibliotecas, herramientas administrativas, y una gran variedad de interfaces de programación (APIs). Se puede obtener también como una biblioteca multihilo que se puede enlazar dentro de otras aplicaciones para obtener un producto más pequeño, más rápido, y más fácil de manejar. Para obtener información técnica más detallada, es necesario consultar la guı́a de referencia de MySQL. 1.5.1.. Ventajas de MySQl. MySQL es un software open source. Tiene buena velocidad al realizar las operaciones, lo que le hace uno de los gestores con mejor rendimiento. Presenta bajo costo en requerimientos para la elaboración de bases de datos, ya que debido a su bajo consumo.
(19) ANÁLISIS DE LAS TECNOLOGÍAS A UTILIZAR. 9. puede ser ejecutado en una máquina con escasos recursos sin ningún problema. Es fácil de configurar e instalar. Soporta gran variedad de Sistemas Operativos. Tiene bajas probabilidades de corromper datos, incluso si los errores no se producen en el propio gestor, sino en el sistema en el que está. 1.6.. JavaScript. JavaScript es un lenguaje de programación interpretado, dialecto del estándar ECMAScript. Se define como orientado a objetos, basado en prototipos, imperativo, débilmente tipado y dinámico. Se utiliza principalmente en su forma del lado del cliente (clientside), implementado como parte de un navegador web permitiendo mejoras en la interfaz de usuario y páginas web dinámicas aunque existe una forma de JavaScript del lado del servidor (Server-side JavaScript o SSJS). Su uso en aplicaciones externas a la web, por ejemplo en documentos PDF, aplicaciones de escritorio (mayoritariamente widgets) es también significativo. JavaScript se diseñó con una sintaxis similar al C, aunque adopta nombres y convenciones del lenguaje de programación Java. Sin embargo Java y JavaScript no están relacionados y tienen semánticas y propósitos diferentes. Todos los navegadores modernos interpretan el código JavaScript integrado en las páginas web. Para interactuar con una página web se provee al lenguaje JavaScript de una implementación del Document Object Model (DOM). Tradicionalmente se venı́a utilizando en páginas web HTML para realizar operaciones y únicamente en el marco de la aplicación cliente, sin acceso a funciones del servidor. JavaScript se interpreta en el agente de usuario, al mismo tiempo que las sentencias van descargándose junto con el código HTML.(Vega, 2014) Este lenguaje posee varias caracterı́sticas, entre ellas podemos mencionar que es un lenguaje basado en acciones que posee menos restricciones. Además, es un lenguaje que utiliza Windows y sistemas X-Windows, gran parte de la programación en este lenguaje está centrada en describir objetos, escribir funciones que respondan a movimientos del mouse, aperturas, utilización de teclas, cargas de páginas entre otros 1.6.1.. Ventajas de JavaScript. JavaScript es una excelente solución para poner en práctica la validación de datos de un formulario en el lado del cliente. Si un usuario omite escribir su nombre en un formulario, una función de validación en JavaScript puede desplegar en pantalla un mensaje popup para hacerle saber al usuario acerca de la omisión. Este tipo de funcionalidades son más ventajosas que tener una rutina de validación del lado del servidor para controlar el error, dado que el servidor en este caso no tiene que hacer ningún tipo de procesamiento.
(20) ANÁLISIS DE LAS TECNOLOGÍAS A UTILIZAR. 10. de información adicional. Una rutina de ASP o PHP podrı́a ser escrita para lograr la misma tarea pero un formulario desarrollado en JavaScript no permitirı́a que la información se enviase a menos que se complete correctamente el formulario. Una de las áreas en la que sobresale radicalmente JavaScript es en la creación de efectos dinámicos tales como imágenes dinámicas y presentaciones de diapositivas, donde su uso se ha convertido algo común hoy en dı́a. Debido a que JavaScript se ejecuta dentro del navegador de los clientes, se puede utilizar para cambiar el aspecto de la pantalla en el dispositivo de los usuarios después que la página ha sido enviada por el servidor. Esto le permite al desarrollador web crear efectos dinámicos muy impresionantes mejorando ası́ la experiencia que recibe un usuario en el momento que ingresa a un sitio web.(Vega, 2014) JavaScript es un lenguaje de programación que se utiliza principalmente para crear páginas web dinámicas. Una página web dinámica es aquella que incorpora efectos como texto que aparece y desaparece, animaciones, acciones que se activan al pulsar botones y ventanas con mensajes de aviso al usuario. Técnicamente, JavaScript es un lenguaje de programación interpretado, por lo que no es necesario compilar los programas para ejecutarlos. En otras palabras, los programas escritos con JavaScript se pueden probar directamente en cualquier navegador sin necesidad de procesos intermedios. 1.7.. jQuery, biblioteca de JavaScript. jQuery es una biblioteca de JavaScript, creada inicialmente por John Resig, que permite simplificar la manera de interactuar con los documentos HTML, manipular el árbol DOM, manejar eventos, desarrollar animaciones y agregar interacción con la técnica AJAX a páginas web. Fue presentada el 14 de enero de 2006 en el BarCamp NYC. jQuery es software libre y de código abierto, posee un doble licenciamiento bajo la Licencia MIT y la Licencia Pública General de GNU v2, permitiendo su uso en proyectos libres y privativos. jQuery, al igual que otras bibliotecas, ofrece una serie de funcionalidades basadas en JavaScript que de otra manera requerirı́an de mucho más código, es decir, con las funciones propias de esta biblioteca se logran grandes resultados en menos tiempo y espacio.(Rivera, 2012) 1.7.1.. Ventajas de jQuery. Es open source. Es increı́blemente popular, tiene una comunidad grande de usuarios y una cantidad saludable de contribuyentes que participan como diseñadores. Normaliza las diferencias entre los navegadores web para que usted no tenga que hacerlo. Su almacén de plugins inmenso ha mantenido un crecimiento firme desde la primera descarga de jQuery. Es amistoso, por ası́ decirlo, proporciona maneras útiles de evitar los.
(21) ANÁLISIS DE LAS TECNOLOGÍAS A UTILIZAR. 11. conflictos con otras bibliotecas de JavaScript. Se desarrolla abiertamente, cualquiera puede contribuir con mejoras y ayuda de desarrollo, además su desarrollo es firme y consecuente. Su adopción por las organizaciones grandes está y continuará engendrando longevidad y estabilidad (el ej., Microsoft, Dell, el Banco de América, Digg, CBS, Netflix). Incorporaba las especificaciones del W3C antes que los navegadores lo hicieran. Un ejemplo es que el jQuery soportaba la gran mayorı́a de los seleccionadores de CSS3. Se dobla para facilitar prácticas de JavaScript discretas intencionalmente. Su curva de aprendizaje es accesible porque se basa en conceptos que la mayorı́a de los diseñadores y desarrolladores ya entienden. 1.8.. Preprocesador de Hipertexto. PHP (Hypertext Pre-processor) es un lenguaje multiparadigma, imperativo, orientado a objetos, procedural y reflexivo que está muy extendido a lo largo de internet hoy en dı́a. El gran parecido que posee PHP con los lenguajes más comunes de programación estructurada, como C y Perl, permiten a la mayorı́a de los programadores crear aplicaciones complejas con una curva de aprendizaje muy corta. También les permite involucrarse con aplicaciones de contenido dinámico sin tener que aprender todo un nuevo grupo de funciones y todo su diseño está orientado a facilitar la creación de sitios webs cada vez más complejos y funcionales.(Sanchis, 2013) PHP es un lenguaje de programación de uso general de código del lado del servidor originalmente diseñado para el desarrollo web de contenido dinámico. Fue uno de los primeros lenguajes de programación del lado del servidor que se podı́an incorporar directamente en el documento HTML en lugar de llamar a un archivo externo que procese los datos. El código es interpretado por un servidor web con un módulo de procesador de PHP que genera la página Web resultante.(Vega, 2014) 1.8.1.. Ventajas de PHP. PHP no solo tiene una excelente velocidad de ejecución, sino además no crea demoras en la máquina. Por esta razón no debe requerir demasiados recursos de sistema. PHP utiliza su propio sistema de administración de recursos y dispone de un sofisticado método de manejo de variables, conformando un sistema robusto y estable. PHP provee diferentes niveles de seguridad, estos pueden ser configurados desde el archivo .ini. 1.9. 1.9.1.. Selección del Framework PHP CakePHP. CakePHP es un marco de desarrollo (Framework) rápido para PHP, libre, de código abierto. Se trata de una estructura que sirve de base a los programadores para que éstos puedan crear aplicaciones Web. El principal objetivo es que se pueda trabajar de forma.
(22) ANÁLISIS DE LAS TECNOLOGÍAS A UTILIZAR. 12. estructurada y rápida, sin pérdida de flexibilidad. Con CakePHP el desarrollo web ya no es monótono porque ofrece las herramientas para que se pueda empezar a escribir el código que realmente se necesita: la lógica especı́fica de la aplicación. CakePHP tiene un equipo de desarrolladores y una comunidad activos, lo que añade valor al proyecto. Con CakePHP, el núcleo de la aplicación se mejora constantemente.(Marcos, 2013) Ventajas de CakePHP El patrón de desarrallo MVC: se basa en la arquitectura de desarrollo del ModeloVista-Controlador. Reutilización de código. Objetos Mapeo Relacional. CakePHP soporta técnicas de ORM (Object Relational Mapping). Ninguna configuración complicada: CakePHP no requiere configuraciones para empezar a utilizarlo. Plataforma de código abierto. Validación incorporada. Comunidad activa y amistosa. Licencia flexible. Compatible con PHP4 y PHP5. CRUD (Crear, Obtener, Actualizar y Borrar) integrado para la interacción con la base de datos. Generación de código. Arquitectura Modelo Vista Controlador (MVC). Despachador de peticiones (dispatcher), con URLs y rutas personalizadas y limpias. Plantillas rápidas y flexibles (sintaxis de PHP, con ayudantes). Ayudantes para AJAX, Javascript, formularios HTML y más. Componentes de email, cookie, seguridad, sesión y manejo de solicitudes. Listas de control de acceso flexibles. Limpieza de datos. Caché flexible. Localización. Funciona en cualquier subdirectorio del sitio web, con poca o ninguna configuración de Apache. Desventajas de CakePHP Malos hábitos: algunos puntos de su documentación motivan a realizar algunos malos hábitos que deberı́an evitarse al trabajar con cualquier tipo de framework MVC, como por ejemplo, con el método find de los modelos..
(23) ANÁLISIS DE LAS TECNOLOGÍAS A UTILIZAR. 13. Exceso de consultas: en proyectos en los que el número de tablas es muy elevado y hay muchas relaciones, el ORM integrado puede llegar a realizar excesivas consultas. Tamaño de ficheros: Algunos de los ficheros del propio framework son demasiados pesados. 1.9.2.. Symfony. Symfony es un completo framework diseñado para optimizar. Para empezar, 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. Además, automatiza las tareas más comunes, permitiendo al desarrollador dedicarse por completo a los aspectos especı́ficos de cada aplicación. El resultado de todas estas ventajas es que no se debe reinventar la rueda cada vez que se crea una nueva aplicación web. Symfony está desarrollado completamente con PHP 5. Ha sido probado en numerosos proyectos reales y se utiliza en sitios web de comercio electrónico de primer nivel. Symfony es compatible con la mayorı́a de gestores de bases de datos, como MySQL, PostgreSQL, Oracle y SQL Server de Microsoft. Se puede ejecutar tanto en plataformas *nix (Unix, Linux, etc.) como en plataformas Windows.(Marcos, 2013) Ventajas de Symfony Basado en PHP 5 y por tanto, lenguaje orientado a objetos. Fácil de instalar y configurar en la mayorı́a de plataformas. Independiente del sistema gestor de bases de datos. Sencillo de usar en la mayorı́a de los casos, pero lo suficientemente flexible como para adaptarse a los casos más complejos. Preparado para aplicaciones empresariales y adaptable a las polı́ticas y arquitecturas propias de cada empresa, además de ser lo suficientemente estable como para desarrollar aplicaciones a largo plazo. Código fácil de leer que incluye comentarios de phpDocumentor y que permite un mantenimiento muy sencillo. Fácil de extender, lo que permite su integración con librerı́as desarrolladas por terceros. Desventajas de Symfony Primero que nada se necesita por lo menos un VPS para poder publicar las aplicaciones en la web ya que se necesita tener la habilidad de poder descargar e instalar cosas en el servidor para que symfony funcione apropiadamente. El otro problema de Symfony es el caché cuando se está desarrollando tiende a ser algo tedioso tener que estar limpiando el caché de vez en cuando..
(24) ANÁLISIS DE LAS TECNOLOGÍAS A UTILIZAR. 14. Los procesos utilizan demasiada memoria. 1.9.3.. Yii. Yii es un framework PHP basado en componentes de alto performance para desarrollar aplicaciones Web de gran escala. El mismo permite la máxima reutilización en la programación web y puede acelerar el proceso de desarrollo. El nombre Yii es por fácil (en inglés: easy), eficiente (en inglés: efficient) y extensible (en inglés: extensible).(Marcos, 2013) Ventajas de Yii Patrón de diseño Modelo Vista Controlador (MVC). Database Access Objects. Integración con jQuery. Entradas de Formulario y validación. Widgets de Ajax, como autocompletado de campos de texto y demás. Personalización de aspectos y temas. Generación compleja automática de Web Services Description Language (WSDL), especificaciones y administración de peticiones Web service. Esquema de caching por capas. El manejo de errores y logging. Los errores son manejados y personalizados, y los log de mensajes pueden ser categorizados, filtrados y movidos a diferentes destinos. Las medidas de seguridad incluyen la prevención cross-site scripting (XSS), prevención cross-site request forgery (CSRF), prevención de la manipulación de cookies, etc. Generación automática de código para el esqueleto de la aplicación, aplicaciones CRUD, etc. Generación de código por componentes de Yii y la herramienta por lı́nea de comandos cumple con los estándares de XHTML. Cuidadosamente diseñado para trabajar bien con código de terceros. Por ejemplo, es posible usar el código de PHP o Zend Framework en una aplicación Yii. Desventajas de Yii Tiempo de aprendizaje. Aprender a utilizar un framework no necesariamente es algo que se pueda hacer en un par de dı́as. Dependencia. Una vez que se escribe un programa para determinado framework es casi imposible migrar a otro sin tener que reescribir todo el código. En ese sentido cuando se comienza un proyecto con un framework prácticamente se está comprometiendo con él..
(25) ANÁLISIS DE LAS TECNOLOGÍAS A UTILIZAR. 1.9.4.. 15. Zend. Zend Framework no solo facilita la programación a través del patrón MVC, sino también automatiza tareas más especı́ficas, como el acceso a base de datos, el filtrado de datos ingresados a la aplicación o la búsqueda en un sitio web ordenando resultados por relevancia. Zend Framework es un framework de código abierto para desarrollar aplicaciones web y servicios web con PHP 5. Es una implementación que usa código 100 % orientado a objetos. La estructura de los componentes es algo único; cada componente está construido con una baja dependencia de otros componentes. Esta arquitectura débilmente acoplada permite a los desarrolladores utilizar los componentes por separado. Ofrece un gran rendimiento y una robusta implementación MVC, una abstracción de base de datos fácil de usar, y un componente de formularios que implementa la prestación de formularios HTML, validación y filtrado para que los desarrolladores puedan consolidar todas las operaciones usando de una manera sencilla la interfaz orientada a objetos.(Marcos, 2013) Ventajas de Zend Reduce el tiempo de desarrollo de las aplicaciones. Estandariza los procesos más frecuentes, dotándolos de gran robustez. Facilita el mantenimiento de las aplicaciones. Ofrece muchas facilidades para el acceso a recursos avanzados, que de otro modo resultan bastante más costosos de desarrollar A diferencia de otros frameworks, es posible utilizarlo en modo desacoplado, es decir, aquellas clases o componentes que sean necesarios en cada proyecto, sin arrastrar todo el framework detrás para cualquier pequeña necesidad. Tiene el respaldo de la propia ZEND, creadora de PHP, lo que asegura su continuidad futura tanto como la del propio lenguaje PHP. Desventajas de Zend Es necesario comprender algunos patrones de diseño y programación orientada a objetos para utilizar todo el potencial de Zend Framework. Y eso no sólo requiere tiempo dedicado al aprendizaje, sino también la experiencia de trabajar con él. Es grande, es pesado, gasta mucha memoria y tiene una gran cantidad de inclusiones. 1.9.5.. Codeigniter. CodeIgniter es un entorno de desarrollo abierto (licencia Open Source Apache/BSDstyle) que permite crear webs dinámicas con PHP. Su principal objetivo es ayudar a que los desarrolladores puedan realizar proyectos mucho más rápido que creando toda la estructura desde cero. Esto se debe a que dispone de un conjunto bastante amplio de.
(26) ANÁLISIS DE LAS TECNOLOGÍAS A UTILIZAR. 16. librerı́as útiles para realizar tareas comúnmente necesarias, ası́ como una interfaz simple y una estructura lógica sencilla para acceder a esas librerı́as. Entre otras caracterı́sticas podemos destacar que es un entorno muy simple. El núcleo del sistema sólo requiere unas pocas librerı́as para funcionar adecuadamente. Esto supone una gran ventaja frente a otros frameworks de desarrollo que requieren muchos más recursos para realizar las mismas tareas. Las librerı́as adicionales que se necesiten se cargan de forma dinámica, con lo cual el sistema en sı́ es muy simple y bastante rápido (está considerado como el framework más rápido, sobre todo en desarrollo bajo PHP).(Marcos, 2013) Ventajas de Codeigniter Sistema basado en Modelo-Vista-Controlador. Compatible con PHP4. Muy liviano. Clases de base de datos llenas de caracterı́sticas con soporte para varias plataformas. Formulario y Validación de datos. Seguridad y filtro XSS. Manejo de sesión. Librerı́a de manipulación de imágenes (cortar, copiar, redimensionar...) Clase de upload de fichero. Clase de FTP. Encriptación de datos. Scaffolding. Clase de codificación Zip. Clase de motor de plantillas. Ruteo de URI Flexible. Larga librerı́a de funciones auxiliares. Desventajas de Codeigniter No tiene sistema de plantillas. No tiene un layout general. No hay módulos. No hay un ORM. Los controladores no cargan por defecto las listas. Las vistas no tienen un orden por defecto (ejemplo, controlador/método). Hay algunas cosas que no se pueden configurar, por lo tanto te obligan a modificar el núcleo..
(27) ANÁLISIS DE LAS TECNOLOGÍAS A UTILIZAR. 1.9.6.. 17. Laravel. Laravel tiene como objetivo ser un framework que permita el uso de una sintaxis elegante y expresiva para crear código de forma sencilla y permitiendo multitud de funcionalidades. Intenta aprovechar lo mejor de otros frameworks y aprovechar las caracterı́sticas de las últimas versiones de PHP. Gran parte de Laravel está formado por dependencias, especialmente de Symfony, esto implica que el desarrollo de Laravel dependa también del desarrollo de sus dependencias.(Marcos, 2013) Ventajas de Laravel Reducción de costos y tiempos en el desarrollo y mantenimiento. Flexible y adaptable no solo al MVC Tradicional (Modelo vista controlador) sino que para reducir código propone usar “Routes with clousures”. Buena y abundante documentación sobre todo en el sitio oficial. Posee una amplia comunidad y foros Es modular y con una amplio sistemas de paquetes y drivers con el que se puede extender la funcionalidad de forma fácil, robusta y segura. Hace que el manejo de los datos en Laravel no sea complejo; mediante Eloquent (que es un ORM basado en el patrón active record) la interacción con las bases de datos es totalmente orientada a objetos, siendo compatible con la gran mayorı́a de las bases de datos del mercado actual y facilitando la migración de nuestros datos de una forma fácil y segura. Otro punto es que permite la creación de consultas robustas y complejas. Facilita el manejo de ruteo de nuestra aplicación como ası́ también la generación de url amigables y control de enlaces auto actualizables lo que hace mas fácil el mantenimiento de un sitio web. El sistema de plantillas Blade de Laravel, trae consigo la generación de mejoras en la parte de presentación de la aplicación como la generación de plantillas más simples y limpias en el código y además incluye un sistema de cache que las hace más rápidas, lo que mejora el rendimiento de la aplicación. También cuenta con una herramienta de interfaces de lı́neas de comando llamada Artisan que permite programar tareas como por ejemplo ejecutar migraciones, pruebas, etc. 1.9.7.. Framework escogido. Todos los frameworks antes mencionados son perfectamente valiosos para el desarrollo de aplicaciones de diversos tipos, compatibles además con PHP5 y capaces de soportar múltiples bases de datos. CakePHP, y CodeIgniter pueden de manera adicional ejecutarse utilizando PHP4. En el caso particular de Symfony, añade una nueva capa por.
(28) ANÁLISIS DE LAS TECNOLOGÍAS A UTILIZAR. 18. encima de PHP y proporciona herramientas que simplifican el desarrollo de las aplicaciones web. Su comprensión se centra en el conocimiento de conceptos básicos de la programación moderna, sobre todo acerca de la programación orientada a objetos (OOP), el mapeo de objetos a bases de datos (ORM) y el desarrollo rápido de aplicaciones (RAD), teniendo como único requisito técnico para su manipulación el conocimiento previo de PHP 5. Como elección para este trabajo se decidió escoger Codeigniter Framework. La elección se ha hecho atendiendo a las caracterı́sticas que tiene y a su curva de aprendizaje, además trabaja con la estructura del modelo-vista-controlador que organiza y facilita el trabajo a la hora de crear el código del Sistema Web y es un micro-framework que se ajusta perfectamente a los objetivos que se buscan en el proyecto. 1.10.. Modelo-Vista-Controlador (MVC). Este modelo fue diseñado para reducir el esfuerzo de programación necesario en la implementación de sistemas múltiples y sincronizados de los mismos datos. Sus caracterı́sticas principales están dadas por el hecho de que el Modelo, las Vistas y los Controladores se tratan como entidades separadas; esto hace que cualquier cambio producido en el Modelo se refleje automáticamente en cada una de las Vistas. Este modelo de arquitectura se puede emplear en sistemas de representación gráfica de datos, donde se presentan partes del diseño con diferente escala de aumento, en ventanas separadas.(Fernández, 2012) El M-V-C es tı́picamente utilizado para la creación de aplicaciones web y no sólo CodeIgniter lo implementa, sino también otra serie de frameworks de desarrollo web, en PHP u otros lenguajes es un patrón de desarrollo o un estilo de arquitectura de software que separa el código fuente de las aplicaciones en tres grupos.(Alvano, 2012) 1.10.1.. Modelo. Todo el código que tiene que ver con el acceso a base de datos se encuentra en esta sección. En el modelo se mantienen encapsuladas las operaciones que se realizan con base de datos y simplemente se crean funciones para recibir, insertar, actualizar o borrar información de las tablas. Al mantenerse todas las llamadas a la base de datos en un mismo código, desde otras partes del programa se pueden invocar las funciones que se necesitan del modelo y este se encargará de procesarlas.(Alvano, 2012) El Modelo no tiene conocimiento especı́fico de los Controladores o de las Vistas, ni siquiera contiene referencias a ellos. Es el propio sistema el que tiene encomendada la responsabilidad de mantener enlaces entre el Modelo y sus Vistas, y notificar a las Vistas cuando cambia el Modelo.(Fernández, 2012).
(29) ANÁLISIS DE LAS TECNOLOGÍAS A UTILIZAR. 1.10.2.. 19. Vista. La vista codifica y mantiene la presentación final de nuestra aplicación de cara al usuario. En la vista se encuentra todo el código HTML, CSS, Javascript, etc. que se genera para producir la página que será mostrada al usuario. La vista no sólo sirve para producir páginas web, sino también cualquier otra salida que se quiera enviar al usuario, en formatos o lenguajes distintos, como pueden ser feeds, RSS, archivos JSON, XML, etc.(Fernández, 2012) 1.10.3.. Controlador. El controlador es la parte más importante, porque hace de enlace entre el modelo, la vista y cualquier otro recurso que se tenga que procesar en el servidor para generar la página web. En el controlador se guarda la lógica de la páginas y se realizan todas las acciones que son necesarias para generarlas, ayudados del modelo o la vista.(Fernández, 2012) 1.11.. JavaScript Ası́ncrono+XML (Ajax). En realidad, el término AJAX es un acrónimo de Asynchronous JavaScript + XML. Ajax no es una tecnologı́a en sı́ mismo. En realidad, se trata de varias tecnologı́as independientes que se unen de formas nuevas y sorprendentes. Las tecnologı́as que forman AJAX son: 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. Desarrollar aplicaciones AJAX requiere un conocimiento avanzado de todas y cada una de las tecnologı́as anteriores. En las aplicaciones web tradicionales, las acciones del usuario en la página (pinchar en un botón, seleccionar un valor de una lista, etc.) desencadenan llamadas al servidor. Una vez procesada la petición del usuario, el servidor devuelve una nueva página HTML al navegador del usuario. Las aplicaciones construidas con AJAX eliminan la recarga constante de páginas mediante la creación de un elemento intermedio entre el usuario y el servidor. 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. Las peticiones HTTP al servidor se sustituyen por peticiones JavaScript que se realizan al elemento encargado de AJAX. Las peticiones más simples no requieren intervención del servidor, por lo que la respuesta es inmediata. Si la interacción requiere una respuesta del servidor,.
(30) ANÁLISIS DE LAS TECNOLOGÍAS A UTILIZAR. 20. la petición se realiza de forma ası́ncrona mediante AJAX. En este caso, la interacción del usuario tampoco se ve interrumpida por recargas de página o largas esperas por la respuesta del servidor. Desde su aparición, se han creado cientos de aplicaciones web basadas en AJAX. En la mayorı́a de casos, AJAX puede sustituir completamente a otras técnicas como Flash. Además, en el caso de las aplicaciones web más avanzadas, pueden llegar a sustituir a las aplicaciones de escritorio.(Fernández, 2010) 1.12.. Servidor LAMP. Es una plataforma de desarrollo web de código abierto que se consigue mediante la unión de las siguientes tecnologı́as: Linux, el Sistema operativo. Apache, el servidor web. MySQL, el gestor de bases de datos. Perl, PHP, o Python, los lenguajes de programación. 1.13.. Lenguaje Unificado de Modelado (UML). En todas las disciplinas de la Ingenierı́a se hace evidente la importancia de los modelos ya que describen el aspecto y la conducta de “algo”. Ese “algo”puede existir, estar en un estado de desarrollo o estar, todavı́a, en un estado de planeación. Es en este momento cuando los diseñadores del modelo deben investigar los requerimientos del producto terminado y dichos requerimientos pueden incluir áreas tales como funcionalidad, performance y confiabilidad. Además, a menudo, el modelo es dividido en un número de vistas, cada una de las cuales describe un aspecto especı́fico del producto o sistema en construcción. El modelado sirve no solamente para los grandes sistemas, aun en aplicaciones de pequeño tamaño se obtienen beneficios de modelado, sin embargo es un hecho que entre más grande y más complejo es el sistema, más importante es el papel que juega el modelado por una simple razón: “El hombre hace modelos de sistemas complejos porque no puede entenderlos en su totalidad ”.(Booch, 2011) 1.13.1.. Ventajas de UML. Mejores tiempos totales de desarrollo (de 50 % o más). Modelar sistemas (y no sólo de software) utilizando conceptos orientados a objetos. Establecer conceptos y artefactos ejecutables. Encaminar el desarrollo del escalamiento en sistemas complejos de misión crı́tica. Crear un lenguaje de modelado utilizado tanto por humanos como por máquinas. Mejor soporte a la planeación y al control de proyectos. Alta reutilización y minimización de costos..
(31) ANÁLISIS DE LAS TECNOLOGÍAS A UTILIZAR. 1.14.. 21. Protocolo Ligero de Acceso a Directorios (LDAP). LDAP son las siglas de Lightweight Directory Access Protocol que hacen referencia a un protocolo a nivel de aplicación el cual permite el acceso a un servicio de directorio ordenado y distribuido para buscar diversa información en un entorno de red. LDAP también es considerado una base de datos (aunque su sistema de almacenamiento puede ser diferente) a la que pueden realizarse consultas Habitualmente, almacena la información de autenticación (usuario y contraseña) y es utilizado para autenticarse aunque es posible almacenar otra información (datos de contacto del usuario, ubicación de diversos recursos de la red, permisos, certificados, etc). A manera de sı́ntesis, LDAP es un protocolo de acceso unificado a un conjunto de información sobre una red..
(32) CAPÍTULO 2 DISEÑO GENERAL DEL SISTEMA. 2.1.. Introducción. La arquitectura del sistema está basada en un modelo de aplicación cliente-servidor donde los usuarios con credenciales válidas pueden acceder a los diferentes módulos o controladores según su nivel de privilegio dentro del sistema. En este capı́tulo se va a desarrollar y explicar la constitución de las bases de datos del sistema, ası́ como los casos de uso, los métodos y clases que lo conforman. 2.2.. Arquitectura básica del sistema. En una primera etapa el usuario realiza una petición al servidor web apache a través de su navegador web (Cliente), el servidor accede al controlador seleccionado generando una vista que es devuelta en forma de hipertexto HTML y de esta forma comienza la interactividad entre las peticiones del cliente y las respuestas del servidor web. En el momento en que el servidor web recibe las peticiones requiere interpretar el código PHP que se encuentra en los controladores y realizar, en caso que sean necesarias, las encuestas al servidor de bases de datos MySql. En el caso de esta aplicación en especı́fico se utiliza la configuración LAMP, acrónimo de (Linux, apache, MySql y PHP), permitiendo que del lado del cliente se pueda usar cualquier navegador web moderno como Mozilla Firefox, Google Chrome, Safari, Microsoft EDGE entre otros. Para lograr una mayor organización, reutilización y modularidad del código fuente se desarrolla el sistema sobre el framework PHP Codeigniter que utiliza la filosofı́a de trabajo MVC (Modelo-Vista-Controlador), donde los controladores se encargan de interactuar con los modelos para acceder a la base de datos y además generan las vistas que son devueltas al cliente (Navegador web). 2.2.1.. Estructura de la base de datos y relaciones entre tablas.. El sistema web para la gestión de inventario de los medios computacionales de la UCLV consta de varios módulos para la gestión de la información, garantizando una estructura modular que recoja los aspectos fundamentales de la hoja de vida de la computadora como se refleja en el anexo A. En este sentido se debe garantizar que la estructura 22.
(33) DISEÑO GENERAL DEL SISTEMA.. 23. de la base de datos recoja en tablas diferentes cada uno de los elementos que pueden componer cada equipo y que deben ser auditados e inventariados. Con esto se asegura que el diseño de las vistas y los controladores deba estar en correspondencia con las relaciones implementadas entre cada una de las tablas que compongan la base de datos. En cada tabla se pueden diferenciar los componentes por su id el cual es un número entero dentro de un campo auto incremental, con esto se asegura que no exista más de un componente con el mismo valor para el campo id. 2.2.2.. Estructura de las tablas de propósito general.. Según lo planteado con anterioridad se impone diseñar la estructura de las tablas tal que recojan de forma independiente cada uno de los componentes de una computadora en tablas diferentes, a continuación se enuncian las tablas que van a almacenar la información básica contenida en la hoja de vida de cada PC. Tabla de procesadores: id, tipo, marca, velocidad, cantidad de bits, id de la PC y número de serie. Tabla de Discos Duros: id, tipo, marca, capacidad, id de la PC y número de serie. Tabla de Memorias RAM: id, tipo, marca, capacidad, id de la PC y número de serie. Dispositivos Ópticos: id, tipo, marca, modelo id de la PC y número de serie. Fuentes de Alimentación: id, marca, modelo, potencia id de la PC y número de serie. Tabla de Motherboard: id, marca, modelo, id de la PC y número de serie. Tabla de Monitores: id, marca, modelo, tamaño, id de la PC y número de serie. Tabla de bocinas: id, marca, modelo, id de la PC y número de serie. Tabla de WebCam: id, marca, modelo, id de la PC y número de serie. Tabla de UPS: id, marca, modelo, id de la PC y número de serie. Tabla MAC de la tarjeta de red: id, marca, modelo, dirección MAC, id de la PC y número de serie. Tabla de responsables de equipos: id, id de la PC, usuario en el dominio UCLV del responsable. Tabla de Áreas: id, nombre del área. Tabla de departamentos o centros de estudio: id, id del área a la que pertenece, nombre del departamento o centro de estudio. Tabla de locales: id, id del departamento centro de estudios al que pertenece, nombre del local o laboratorio. 2.2.3.. Estructura de la tabla de computadoras.. Esta tabla constituye la columna vertebral del sistema y almacena las relaciones de cada equipo con sus componentes y caracterı́sticas básicas. A continuación se mencionan los campos que componen la tabla de computadoras:.
(34) DISEÑO GENERAL DEL SISTEMA.. 24. Campo id: es un campo con un valor entero de tamaño 11 con auto incremento. Campo local: Contiene el id del local donde se encuentra situado el equipo, a su vez cada local pertenece a un departamento y que a su vez pertenece a un área de la tabla áreas. Campo responsable: contiene el id de la persona con responsabilidad material sobre el equipo contenida en la tabla de responsables. Campo nombre: contiene el nombre del equipo dentro del dominio UCLV. Campo número de Inventario: contiene el número de inventario del equipo. Campo estado del equipo: este campo puede tomar los valores; funcionando, fuera de servicio o baja. Campo imagen: puede contener un enlace a una fotografı́a del equipo. Campo descripción: este campo opcional, puede contener una breve descripción literal del equipo o cualquier dato útil sobre el mismo. Campo de utilización: contiene información sobre el usos que se le da al equipo, puede ser trabajo profesoral, estudiantes, gestión u otros. Campo de red: determina si el equipo tiene conexión de red. Campo de intranet: determina si el equipo tiene conexión a intranet. Campo de internet: determina si el equipo tiene conexión a internet. Campo de adquisición de PC: determina si la PC se obtuvo mediante el programa estudiantil o por otras vı́as. 2.2.4.. Estructura de la tabla de usuarios. La tabla de usuarios contiene la información necesaria para el acceso al sistema, está relacionada directamente con el módulo de control de acceso y seguridad del sistema. Utiliza encriptación para la protección de los datos de usuario y está estructurada de la siguiente forma: Campo id: es un campo con un valor entero de tamaño 11 con auto incremento. Campo usuario: contiene el nombre de usuario para el acceso al sistema. Campo role: contiene el rol del usuario dentro del sistema el cuál determina su nivel de privilegio. Campo área: contiene el id del área a la que pertenece el usuario Campo departamento: contiene el id del departamento al que pertenece el usuario Campo local: contiene el id del local al que pertenece el usuario 2.2.5.. Estructura de la tabla datos de instalación.. Esta tabla contiene la información referente a las instalaciones o actualizaciones de sistemas operativos realizadas sobre las PC y se compone de la siguiente estructura:.
(35) DISEÑO GENERAL DEL SISTEMA.. 25. Campo id: es la clave primaria de la instalación con un valor entero de 11 dı́gitos con incremento automático. Campo fecha de instalación: contiene la fecha de la instalación o actualización en cuestión. Campo ip: contiene el número ip asignado a la PC después de instalada o se deja en blanco en caso de utilizar DHCP. Campo sistema operativo: almacena la familia de sistema operativo instalada en el equipo, puede ser GNU/Linux, Windows, MacOs, Solaris u otros. Campo de versión: contiene la versión o distribución de sistema operativo instalada en el equipo. Campo instalador: Contiene el nombre completo de la persona que realizó la instalación o actualización del equipo. Campo id de la PC: contiene el id del equipo relacionado con la tabla de computadoras descrita anteriormente siendo la clave primaria y el campo necesario para relacionar esta tabla con su respectiva PC. 2.2.6.. Estructura de la tabla de historial manual. Esta tabla contiene los datos sobre modificaciones realizadas a los equipos que no se registran de forma automática por el sistema automatizado de gestión e inventario de los medios de cómputo y deben ser ingresadas manualmente por los técnicos o personal con acceso al sistema y se organiza como se muestra a continuación. Campo id: id único con auto incremento. Campo fecha: contiene la fecha en que se registra el cambio en el sistema de forma automática. Campo observaciones: contiene las observaciones descritas por la persona encargada de registrar el cambio en el sistema. Campo de usuario: contiene el nombre completo del usuario que realizó el cambio u observación. Campo id de la PC: contiene el id del equipo relacionado con la tabla de computadoras descrita anteriormente siendo la clave primaria y el campo necesario para relacionar esta tabla con su respectiva PC. 2.2.7.. Estructura de la tabla de historial automático.. Esta tabla contiene los datos sobre modificaciones realizadas a los equipos que el sistema registra de forma automática constituyendo el medio de seguridad más efectivo ante modificaciones ilegales o violaciones del mismo y se compone de la siguiente estructura: Campo id: id único con auto incremento del cambio..
(36) 26. DISEÑO GENERAL DEL SISTEMA.. Campo id de la PC: contiene el id del equipo relacionado con la tabla de computadoras descrita anteriormente siendo la clave primaria y el campo necesario para relacionar esta tabla con su respectiva PC. Campo modificación: contiene el nombre de la tabla de información general del equipo donde se realizó el cambio (ej: procesador, RAM o disco duro). Campo valor anterior: registra el valor anterior del campo modificado. Campo valor actual: registra el nuevo valor modificado dentro de las tablas del sistema. Campo fecha: registra la fecha del sistema en el momento en que se produce el cambio. Campo usuario: registra el nombre de usuario de la persona que realizó el cambio en el sistema. 2.3.. Módulo de control de acceso y sistema de usuarios.. El módulo de control de acceso del sistema de gestión de inventario de medios computacionales, se relaciona directamente con dos elementos fundamentales, en primer lugar el servidor LDAP de la UCLV y en segundo lugar la propia base de datos del sistema donde se recoge la relación de los usuarios registrados en el dominio UCLV que pueden acceder. Esto implica que se deben cumplir dos condiciones siempre que se quiera acceder al sistema; que al realizar el login de un usuario especifico, el servidor LDAP devuelva una respuesta afirmativa certificando que el usuario existe y que sus credenciales son correctas y en segundo lugar que el mismo usuario esté registrado en la base de datos del sistema con un rol asignado. 2.4.. Casos de uso. Actores Usuario Anónimo. Súper Admin. Administrador. Usuario Invitado. Figura 2–1: Actores Actores El sistema cuenta con cuatro actores (figura 2–1), cada uno con roles especı́ficos que le asignan sus respectivos permisos, estos roles son usuario anónimo, administrador de local, administrador de departamento, administrador de área y auditor. A continuación se describe la relación de cada uno de los actores con el caso de uso que tienen asociados. Usuario Anónimo A este actor el sistema solo le permite loguearse para que sea identificado como uno de los otros actores, de esta forma obtiene los permisos según su respectivo rol..
(37) 27. DISEÑO GENERAL DEL SISTEMA.. Usuario Invitado A este actor el sistema le permite acceder a los filtros, reportes y hojas de vidas de las computadoras, no tiene acceso a ingresar o modificar información, solamente puede visualizarla, navegar por el sistema y auditar desde un nivel de área hasta los diferentes locales. Administrador A este actor el sistema le permite administrar los medios de cómputo relacionados con las locaciones a la que pertenece respectivamente, además el sistema le permite acceder a los filtros, reportes y hojas de vidas de las computadoras. Súper Admin Este actor es el que presenta todos los privilegios del sistema, tiene permitido administrar usuarios, administrar los medios de cómputo de cualquier local, departamento o área; ası́ como acceder a los filtros, reportes y hojas de vidas de las computadoras de toda la institución. 2.4.1.. Casos de Usos Generales.. A continuación se describen los detalles del funcionamiento de los diferentes casos de uso. Servicio de autenticación: Cuando el Usuario Anónimo trata de loguearse accede al servicio de autenticación, al ingresar sus credenciales si están correctas accede al sistema y se generan las vistas en correspondencia con el tipo de actor que sea el Usuario Anónimo (figura 2–2). Actores Súper Admin Servicio de Autenticación. Creación de Vistas según el actor. Usuario Anónimo. Administrador. Usuario Invitado. Figura 2–2: Servicio de Autenticación En la siguiente tabla se muestra el flujo de eventos de este caso de uso..
(38) 28. DISEÑO GENERAL DEL SISTEMA.. ¿Qué hace el actor? Ingresa sus credenciales en el formulario y presiona el botón Ingresar. ¿Qué hace el sistema? Accede a la base de datos del propio sistema y comprueba si el Usuario Anónimo se encuentra registrado dentro de la misma, si se encuentra registrado valida la cuenta en el LDAP UCLV e ingresa al sistema generando las vistas correspondientes al tipo de actor que se ha logueado. Si es Súper Admin la vista presenta todas las computadoras de la institución y además tiene permisos para visualizar, editar y eliminar cualquier computadora de cualquier local, departamento o área. Si es Administrador la vista generada presenta los datos de la locación (local, departamento o área) especı́fica a la que pertenece este usuario y el sistema le da permisos para visualizar, editar y eliminar cualquier computadora de dicha locación. Si es Usuario Invitado la vista que se va a generar dependen del área, departamento y local que escoja el mismo, pero el sistema no le permite editar, agregar ni eliminar ningún medio de cómputo. Si no se valida el usuario, se muestra nuevamente el formulario y se indica que el usuario o la contraseña estaban incorrectos.. Actores Súper Admin. Roles Súper Admin Administrador de área. Administrador. Administrador. de departamento. Administrador de local. Usuario Invitado. Auditor. Figura 2–3: Actores y roles.
(39) DISEÑO GENERAL DEL SISTEMA.. 29. Actores y roles: Luego de pasar por el servicio de autenticación el sistema te clasifica en uno de estos tres actores: Súper Admin, Administrador y Usuario Invitado, pero estos actores presentan diferentes roles dentro del sistema que le asignan permisos especı́ficos (figura 2–3). El actor Súper Admin tiene un solo rol, que concuerda con el nombre del actor, Súper Admin. El actor Administrador puede ser uno de estos tres roles, Administrador de Área, Administrador de Departamento, Administrador de Local, cada uno con diferentes permisos. El actor Usuario Invitado presenta un solo rol, Auditor, a continuación se explican detalladamente los derechos que trae consigo cada rol. -Súper Admin: Este rol posee todos los permisos y no tiene restricciones para acceder dentro de ningún área o controlador, además puede gestionar otras cuentas de usuario realizando su creación, edición o cancelación dentro de la base de datos del sistema. Es el rol más importante y queda reservado para el personal con mayor nivel de autorización. -Administrador de Área: Sus permisos se restringen a cualquier acción dentro de un área determinada, facultad o centro de estudios. Este usuario no puede modificar ni agregar información de equipos que se encuentren dentro de otra área diferente a la que fue asignado. -Administrador de Departamento: Sus permisos se restringen a cualquier acción dentro de un departamento en especı́fico, además incluye todos los locales que se encuentren dentro de dicho departamento. Este usuario no puede modificar ni agregar información de equipos que se encuentren dentro de un departamento diferente al que fue asignado. -Administrador de Local: Sus permisos se restringen a cualquier acción dentro de un local especı́fico. Este usuario no puede modificar ni agregar información de equipos que se encuentren dentro de otro local diferente al que fue asignado. -Auditor: Un auditor es un usuario que solamente tiene permisos para acceder a los filtros, reportes y hojas de vidas gestionados por el sistema, no tiene acceso a ingresar o modificar información, solamente puede visualizarla, navegar por el sistema y auditar desde un nivel de área hasta los diferentes locales. Servicio de Filtrado: Todos los actores que hayan ingresado al sistema a través de la autenticación tienen acceso a este servicio, le permite hacer el filtrado de computadoras que se encuentren en la locación por la que está navegando (figura 2–4)..
Documento similar