UNIVERSIDAD POLITÉCNICA DEL VALLE DE TOLUCA INGENIERÍA EN INFORMÁTICA NOMBRE DEL PROYECTO: SISTEMA DE TICKETS SOPORTE TECNICO PRESENTA JUSTO HUGO ALVAREZ MUCIÑO MATRÍCULA: 1623INI006 NOMBRE DEL ASESOR ACADÉMICO: MTRO. EN EDU. PEDRO VALENCIA PÉREZ. NOMBRE DEL ASESOR EXTERNO: LEONARDO ARRIAGA ARRIAGA. ALMOLOYA DE JUAREZ, FEBRERO DE 2020. Contenido INTRODUCCIÓN .................................................................................................... 3 JUSTIFICACIÓN DEL PROYECTO ........................................................................ 4 ALCANCES ............................................................................................................ 5 LIMITACIONES ....................................................................................................... 6 OBJETIVO GENERAL ............................................................................................ 6 OBJETIVOS ESPECÍFICOS ................................................................................... 6 CARACTERIZACIÓN DEL AREA QUE SE PARTICIPO ....................................... 7 BASES TEÓRICOS PRACTICAS UTILIZADAS .................................................... 9 ACTIVIDADES REALIZADAS .............................................................................. 43 PRODUCTOS DEL PROYECTO .......................................................................... 58 CONTRIBUCIONES REALIZADAS ...................................................................... 62 CONCLUSIONES ................................................................................................. 64 RECOMENDACIONES ......................................................................................... 65 REFERENCIAS ..................................................................................................... 66 INTRODUCCIÓN Las estancias son espacios académicos cuyo propósito es incorporar al alumno(a) al ámbito laboral, a través de la realización de proyectos de cooperación con las organizaciones, que permitan preparar a los futuros profesionistas con experiencia profesional, y conscientes de los problemas y necesidades del sector productivo, además de apoyar el desarrollo tecnológico regional, cubriendo un tiempo de 300 horas. El proyecto de Estancia II, es un conjunto de actividades que el alumno desarrolla en una organización de la zona de influencia, relacionado a las competencias profesionales y orientadas a resolver un problema específico. En este caso y de acuerdo con el segundo ciclo de formación, corresponde poner en práctica las competencias de especificar software a través del análisis de los requerimientos del cliente para satisfacer sus necesidades. Dichas actividades, serán desarrolladas en Cosmetic Colors S.A. de C.V, cuyo giro es el desarrollo y la fabricación de cosméticos con una larga historia de innovación subsidiaria de Schwan Stabilo Cosmetic Network. En este trabajo se describe la justificación del proyecto, los alcances obtenidos durante el desarrollo de la estancia II, así como las limitaciones y objetivos que se plantearon desde un principio, se dará a conocer características del área en la que se participó, se describen las actividades que fueron encomendadas por la organización, contribuciones realizadas por el alumno, así como también algunas bases teóricas involucradas con las actividades, conclusiones correspondientes y las referencias bibliográficas correspondientes. JUSTIFICACIÓN DEL PROYECTO El proceso formativo de Estancia tiene como objetivo que el alumno aplique las competencias adquiridas, en los sectores productivos y de servicios, ya sean públicos o privados, mediante el desarrollo de proyectos, asesorados por personal docente y externo. En este caso en particular, el proyecto se realizó en el departamento de IT (information technology), de la organización antes mencionada. En la cual se presentaba la siguiente problemática: La organización actualmente no cuenta con un sistema que automatice el registro de las actividades realizadas de soporte técnico (tickets) en el transcurso del mes, los cuales por normas de la empresa tienen que ser reportadas mensualmente al departamento de IT en Alemania por medio del llenado de una hoja de Excel, por lo que los encargados de realizar los tickets, no tienen un control de las actividades realizadas al día y al final del mes demora la entrega del reporte ya que lleva tiempo el escribir manualmente cada actividad. Por tal motivo, se precisa llevar a cabo actividades de análisis y diseño para desarrollar el sistema de tickets de soporte técnico para la empresa Cosmetic Colors S.A de C. V., con el que se tendrá mayor control y agilidad al entregar el reporte. Por otro lado, cabe mencionar que la práctica de conocimientos correspondientes, al ciclo de formación, constituye la responsabilidad del desarrollo de aptitudes y actitudes para el desenvolvimiento de asignaturas posteriores y de habilidades en el ámbito profesional, de futuros ingenieros. El presente proyecto describe las funciones que se desempeñaron, con el fin de resaltar la importancia de las actividades que fueron asignadas por la empresa. ALCANCES Para llevar a cabo el desarrollo del sistema de tickets de la empresa Cosmetic Colors S.A de C.V. . NO. ACTIVIDAD METAS Y/O ENTREGABLES PERIÓDO ESTIMADO 1 Identificación de Solicitar al cliente la información requerimientos. necesaria para 20 hrs. el desarrollo del sistema. 2 Análisis de Analizar los requisitos para definir las requerimientos. 3 Diseño interfaces de usuario. de Realizar el diseño del prototipo. prototipo. 4 Verificación Implementación pruebas prototipo. 150 hrs. del Identificar cambios en el diseño del prototipo. 5 20 hrs. sistema. 80 hrs. y del Implementar el software y revisar los 30 hrs. cambios identificados por el cliente. Tabla 1. Cronograma de Actividades realizadas en Estancia II. Fuente: Elaboración propia. LIMITACIONES Al realizar las actividades para el desarrollo del Sistema de Tickets de Soporte Técnico en la empresa antes mencionada como parte del proyecto de Estancia II, se presentaron las siguientes limitaciones: La falta de conocimiento para llevar a cabo el desarrollo de algún módulo. Falta de conocimientos para implementar el sistema en el servidor local de la empresa. Tiempo limitado para el desarrollo del proyecto. Falta de un jefe directo que nos asesore en cuanto a las necesidades de los usuarios, así como en el apoyo de las actividades que se llevan a cabo en el área. Proyectos en puerta que previamente se tenían programados en el área durante el periodo en el que se desarrolló la Estancia II . OBJETIVO GENERAL Desarrollar un sistema de tickets para la gestión del soporte técnico en el area de IT. OBJETIVOS ESPECÍFICOS Para lograr con el cumplimiento del objetivo general de manera satisfactoria se precisa de llevar a cabo tareas tales como: Solicitar al cliente la información necesaria para el desarrollo del sistema. Analizar los requisitos para definir las interfaces del software. Realizar el diseño del prototipo que satisfaga las necesidades del cliente. Identificar cambios en el diseño del software. Implementar el software y revisar los cambios identificados por el cliente. CARACTERIZACIÓN DEL AREA QUE SE PARTICIPO Cosmetic Colors es una subsidiaria del grupo global Schwan Stabilo Cosmetics. Se dedica al desarrollo y fabricación de cosméticos con una larga experiencia en innovación. Ofrece las fórmulas de color, cuidadosamente desarrolladas para satisfacer las exigencias de nuestros clientes, mientras le brinda experiencias sensoriales a través del color, textura, fragancia, empaque y decoración, con completo soporte de su equipo experto y profesional, (Cosmetic Colors, 2019). Imagen 1. Fachada de empresa Cosmetic Colors. Fuente: (Cosmetic Colors 2019) Misión. Ser una empresa global y dinámica que confía en el equipo que la integra, generando oportunidades para ellos. Dedicada al desarrollo continuo de productos cosméticos con base en conocimiento, productividad, innovación y servicio, obteniendo la lealtad del consumidor y los accionistas, (Cosmetic Colors, 2019). Visión. Ser la opción número uno para nuestros clientes, en la fabricación de sus productos cosméticos, (Cosmetic Colors 2019). Ubicación. Se localiza en Blvd. Miguel Alemán Valdés Km. 2.1, Col. Reforma, CP. 50226, Toluca Estado de México. Estructura Organizacional Cosmetic Colors cuenta con una estructura organizacional que le permite desarrollar las actividades requeridas, (Véase en figuras 3 y 4). Imagen 3. Organigrama general de la empresa Cosmetic Colors. Fuente: (Cosmetic Colors, 2019). Imagen 4. Organigrama del departamento de Finanzas de la empresa Cosmetic Colors. Fuente: (Cosmetic Colors, 2019). BASES TEÓRICOS PRACTICAS UTILIZADAS SISTEMAS DE INFORMACIÓN. Las finalidades de los sistemas de información, como las de cualquier otro sistema dentro de una organización, son procesar entradas, mantener archivos de datos relacionados con la organización y producir información, reportes y otras salidas (Senn,1990). Los sistemas de información están formados por subsistemas que incluyen hardware, software, medios de almacenamiento de datos para archivos y bases de datos. El conjunto particular de subsistemas utilizados son los equipos específicos, programas, archivos, procedimientos, es lo que Alcalde (1994) denomina como un sistema de información. Según Peralta (2008). Un sistema de información, es todo proceso por medio del cual se recopilan, clasifican, procesan, interpretan y se resumen cantidades de datos, a fin de sacar conclusiones con el deliberado propósito de orientar la toma de decisiones. Etapas de los sistemas de información: Identificación de problemas. Oportunidades y objetivos. Determinación de los requerimientos de información. Análisis de las necesidades del sistema. Diseño del sistema recomendado. Desarrollo del software. Prueba y mantenimiento del sistema, implantación y evaluación del sistema. Los sistemas de información organizacional se pueden establecer como ciertos procesos, donde se recopilan, clasifican e interpretan los datos. Tipos de sistemas de información Chen (2019) menciona que, en la cultura organizacional, existen varios tipos de sistemas de información según el nivel operacional en que se utilicen. Algunos de los sistemas más comunes se encuentran a continuación: Para procesamiento de datos (TPS: Traditional processing system): nivel operativo, destinado a procesar grandes volúmenes de información alimentando grandes bases de datos. Sistema de expertos o basados en el conocimiento (KWS: Knowledge working systems): nivel operativo, selecciona la mejor solución para el problema presentado. Para la administración y gerenciales (MIS: Management information systems): nivel administrativo, gestiona y elabora informes periódicos. Para la toma de decisiones (DSS: Decision support systems): nivel estratégico, se destaca por su diseño e inteligencia que permite una adecuada selección e implementación de proyectos. Para ejecutivos (EIS: Executive information systems): nivel estratégico, sistema personalizado para cada ejecutivo para que pueda ver y analizar datos críticos. Sistemas funcionales relacionados con los procesos ejecutivos. Algunas de las más conocidas implementadas para las necesidades de cada área son: internos de la organización: forman la base de los sistemas de información para Sistema de información de marketing (SIM) Sistema de información de producción (SIP) Sistema de información financiera (SIF) Sistema de información de recursos humanos (SIRH) Sistema de información para directivos (SDD) Sistema de información geográfica (SIG) Sistema de información legislativa (SIL) Elementos de un sistema de información Por lo general se considera que todos los SI contienen una diversidad de elementos clasificables en cinco grandes categorías: Imagen 5. Elementos de un sistema de información (López, 2012) Elementos financieros. Aquellos vinculados con el capital y con los activos disponibles de la organización. Elementos tecnológicos. Aquellos que tienen que ver con la maquinaria especializada y la capacidad de procesamiento automatizado de la información. Elementos humanos. Básicamente, personal, tanto especializado y directivo, como no especializado o común. Elementos materiales. Se refiere al emplazamiento del sistema, a su soporte físico y ubicación. Elementos administrativos. Aquellos relacionados con los procesos, la mecánica de conducción, los permisos, informes, transacciones, etc. (Medina, 2019). Componentes de un sistema de información Para Chen (2019) los componentes que forman un sistema de comunicación son: La entrada: por donde se alimentan los datos, El proceso: uso de las herramientas de las áreas contempladas para relacionar, resumir o concluir, La salida: refleja la producción de la información, y La retroalimentación: los resultados obtenidos son ingresados y procesados nuevamente. Imagen 6. Representación gráfica de los componentes de un sistema de información (Sistemasumma, 2017). Metodología de desarrollo de software Las metodologías para el desarrollo del software imponen un proceso disciplinado sobre el desarrollo de software con el fin de hacerlo más predecible y eficiente. Una metodología de desarrollo de software tiene como principal objetivo aumentar la calidad del software que se produce en todas y cada una de sus fases de desarrollo. No existe una metodología de software universal, ya que toda metodología debe ser adaptada a las características de cada proyecto (equipo de desarrollo, recursos, etc.) exigiéndose así que el proceso sea configurable. (EcuRed, 2018). Metodologías de desarrollo clásicas Las metodologías clásicas son aquellas que siguen una secuencia lógica y cada etapa es directamente dependiente de que se culmine la etapa anterior. Estas metodologías pueden ser clasificadas en: Cascada El modelo en cascada es un proceso de desarrollo secuencial, en el que el desarrollo de software se concibe como un conjunto de etapas que se ejecutan una tras otra. Se le denomina así por las posiciones que ocupan las diferentes fases que componen el proyecto, colocadas una encima de otra, y siguiendo un flujo de ejecución de arriba hacia abajo, como una cascada. (StudentPlace, 2018). Imagen 7. Etapas del modelo de cascada (StudentPlace, 2018). Método evolutivo Propuesto por Mills en 1980. Sugirió el enfoque incremental de desarrollo como una forma de reducir la repetición del trabajo en el proceso de desarrollo y dar oportunidad de retrasar la toma de decisiones en los requisitos hasta adquirir experiencia con el sistema. Surge porque en los primeros desarrollos se podía esperar largo tiempo hasta que el software estuviese listo. Las reglas del negocio de hoy no lo permiten. Este enfoque entrelaza las actividades de especificación, desarrollo y validación. Un sistema inicial se desarrolla rápidamente a partir de especificaciones abstractas. Éste se refina basándose en las peticiones del cliente para producir un sistema que satisfaga sus necesidades. El desarrollo evolutivo consta del desarrollo de una versión inicial que luego de exponerse se va refinando de acuerdo de los comentarios o nuevos requerimientos por parte del cliente o del usuario final. Las fases de especificación, desarrollo y validación se entrelazan en vez de separarse. (StudentPlace, 2018). Prototipos La creación de prototipos consiste en construir rápida y económicamente un sistema experimental para que lo evalúen los usuarios finales. Interactuando con el prototipo, los usuarios pueden darse una mejor idea de sus requerimientos de información. El prototipo avalado por los usuarios puede servir de plantilla para crear el sistema definitivo. (StudentPlace, 2018). El prototipo es una versión funcional de un sistema de información o de parte de éste, pero su propósito es el de servir de modelo preliminar. Una vez en operación, el prototipo se refinará más aún hasta que cumpla con precisión los requerimientos de los usuarios. Una vez finalizado el diseño, el prototipo se puede convertir en un sistema en producción refinado. De esta manera el prototipo servirá para modelar y poder mostrar al cliente cómo va a realizarse la E/S de datos en la aplicación, de forma que éste pueda hacerse una idea de cómo va a ser el sistema final, pudiendo entonces detectar deficiencias o errores en la especificación, aunque el modelo no sea más que una cáscara vacía. Imagen 8. Representación gráfica de un prototipo (StudentPlace, 2018). Según esto un prototipo puede tener alguna de las tres formas siguientes: Un prototipo, en papel o ejecutable en ordenador, que describa la interacción hombre-máquina y los listados del sistema. Un prototipo que implemente algún(os) subconjunto(s) de la función requerida, y que sirva para evaluar el rendimiento de un algoritmo o las necesidades de capacidad de almacenamiento y velocidad de cálculo del sistema final. Un programa que realice en todo o en parte la función deseada pero que tenga características (rendimiento, consideración. Etapas: Recolección y refinamiento de requisitos Modelado, diseño rápido Construcción del Prototipo Desarrollo, evaluación del prototipo por el cliente Refinamiento del prototipo Producto de Ingeniería Ventajas No modifica el flujo del ciclo de vida Reduce el riesgo de construir productos que no satisfagan las necesidades de los usuarios Reduce costo y aumenta la probabilidad de éxito Exige disponer de las herramientas adecuadas Este modelo es útil cuando el cliente conoce los objetivos generales para el software, pero no identifica los requisitos detallados de entrada, procesamiento o salida. También ofrece un mejor enfoque cuando el responsable del desarrollo del software está inseguro de la eficacia de un algoritmo, de la adaptabilidad de un sistema operativo o de la forma que debería tomar la interacción humanomáquina. Hay dos clases de prototipos el desechable y el evolucionario. El desechable: nos sirve para eliminar dudas sobre lo que realmente quiere el cliente además para desarrollar la interfaz que más le convenga al cliente. El evolucionario: es un modelo parcialmente construido que puede pasar de ser prototipo a ser software, pero no tiene una buena documentación y calidad. Razones para desarrollar prototipo de sistema. La utilización de prototipos no es necesaria o apropiada en todos los proyectos de sistemas. Sin embargo, las ventajas también se deben tener en consideración al decidir si debemos o no crearlos. Las tres principales ventajas de los prototipos son el potencial de cambiar el sistema durante las primeras etapas de su desarrollo, la oportunidad de detener el desarrollo en un sistema que no está funcionando y la posibilidad de desarrollar un sistema que cumpla mejor con las necesidades y expectativas de los usuarios. La creación de prototipos exitosos depende de la retroalimentación oportuna y frecuente de los usuarios, que los analistas pueden usar para modificar el sistema y hacerlo más sensible a las necesidades actuales. Al igual que con cualquier otro esfuerzo de sistemas, los cambios en las primeras etapas son menos costosos que los cambios tardíos. (Kendall & Kendall, 2011). Desarrollo basado en componentes La metodología de software basada en Componentes surgió a finales de los 90's como una aproximación basada en la reutilización al desarrollo de sistemas de software. El desarrollo de software basado en componentes permite reutilizar piezas de código pre elaborado que permiten realizar diversas tareas, conllevando a diversos beneficios como las mejoras a la calidad, la reducción del ciclo de desarrollo y el mayor retorno sobre la inversión. Es básicamente como cuando (si es que llevas tiempo programando) tienes ya una clase o un código guardado en algún lugar y te acuerdas del mismo, de manera que copeas y pegas el código en tu proyecto para usarlo, o lo conviertes en una clase y mandas llamar sus métodos, de esta manera podemos decir que es la metodología que recicla códigos. (StudentPlace, 2018). Espiral Propuesto originalmente por BOEHM en 1976, es un modelo de proceso de software evolutivo donde se conjuga la naturaleza de construcción de prototipos con los aspectos controlados y sistemáticos del MODELO LINEAL y SECUENCIAL. Proporciona el potencial para el desarrollo rápido de versiones incrementales del software que no se basa en fases claramente definidas y separadas para crear un sistema. Imagen 9. Ciclos de desarrollo de la metodología espiral (StudentPlace, 2018). En el modelo espiral, el software se desarrolla en una serie de versiones incrementales. Durante las primeras iteraciones la versión incremental podría ser un modelo en papel o un prototipo, durante las últimas iteraciones se producen versiones cada vez más completas del sistema diseñado. Una característica clave del desarrollo en espiral es la minimización de los riesgos en el desarrollo de software, lo que podría resultar en un aumento de los costes totales, más esfuerzo y un lanzamiento retardado. Estos riesgos son contrarrestados por el enfoque incremental, haciendo primero prototipos, que luego pasan al menos una vez, por las fases de desarrollo de software. El desarrollo en espiral es genérico y puede combinarse con otros métodos de desarrollo clásicos y ágiles, por lo que también se denomina modelo o desarrollo de segundo orden. (StudentPlace, 2018). Incremental El modelo incremental combina elementos del modelo en cascada con la filosofía interactiva de construcción de prototipos. Se basa en la filosofía de construir incrementando las funcionalidades del programa. Este modelo aplica secuencias lineales de forma escalonada mientras progresa el tiempo en el calendario. Cada secuencia lineal produce un incremento del software. En cada incremento, el producto debe mostrar una evolución con respecto a la fecha anterior; nunca puede ser igual. Cuando se utiliza un modelo incremental, el primer incremento es a menudo un producto esencial, sólo con los requisitos básicos. Este modelo se centra en la entrega de un producto operativo con cada incremento. Los primeros incrementos son versiones incompletas del producto final, pero proporcionan al usuario la funcionalidad que precisa y también una plataforma para la evaluación. Imagen 10. Calendario de proyecto utilizando el modelo incremental (StudentPlace, 2018). La principal diferencia del modelo incremental con los modelos tradicionales es que las tareas están divididas en iteraciones, es decir, pequeños lapsos en los cuales se trabaja para conseguir objetivos específicos. Con los modelos tradicionales no pasaba esto; era necesario esperar hasta el final del proceso. (StudentPlace, 2018). Metodologías de desarrollo ágil Muradas (2019) define las metodologías ágiles como un conjunto tareas y procedimientos dirigidos a la gestión de proyectos. Son aquellos métodos de desarrollo en los cuales tanto las necesidades como las soluciones a estas evolucionan con el pasar del tiempo, a través del trabajo en equipo de grupos multidisciplinarios que se caracterizan por tener las siguientes cualidades: Desarrollo evolutivo y flexible. Autonomía de los equipos. Planificación. Comunicación. Programación extrema (XP) Es una metodología basada en un conjunto de reglas y buenas prácticas para el desarrollo de software en ambientes muy cambiantes con requisitos imprecisos, por ende, está enfocada en la retroalimentación continua entre el equipo de desarrollo y el cliente. Es por ello que iniciando el proyecto se deben definir todos los requisitos, para luego invertir el esfuerzo en manejar los cambios que se presenten y así minimizar las posibilidades de error. XP tiene como base la simplicidad y como objetivo la satisfacción del cliente. La programación extrema optimiza los tiempos y se adapta al desarrollo de sistemas grandes y pequeños sin mayor documentación, el código es claro y simple, así mismo complementa los conocimientos entre los miembros del equipo, gracias a la programación en parejas. Sin embargo, una desventaja de esta metodología ágil, es que luego de cada entrega el sistema puede ir creciendo según sean las peticiones del cliente. (Muradas, 2019). Imagen 11. Fases de la programación extrema (Muradas, 2019). Scrum Esta metodología, es un marco de trabajo de procesos ágiles que trabaja con el ciclo de vida iterativo e incremental, donde se va liberando el producto por pares de forma periódica, aplicando las buenas prácticas de trabajo colaborativo (en equipo), facilitando el hallazgo de soluciones óptimas a los problemas que pueden ir surgiendo en el proceso de desarrollo del proyecto. Con Scrum se realizan entregas regulares y parciales (sprint) del producto final, todas ellas con una prioridad previamente establecida que nace según el beneficio que aporten al cliente, minimizando los riesgos que pueden surgir de desarrollos extremadamente largos. Es por tal motivo, que Scrum está especialmente indicado para proyectos en entornos complejos, donde se necesitan obtener resultados de manera inmediata y donde son fundamentales los siguientes aspectos: la innovación, la productividad, la flexibilidad y la competitividad. (Muradas, 2019). En los Equipos Scrum, se cuenta con roles específicos y cada uno de ellos es imprescindible para que se lleve a cabo el proceso de forma satisfactoria: Stakeholder: Es el cliente, su responsabilidad radica en definir los requerimientos (Product Backlog), recibir el producto al final de cada iteración y proporcionar el feedback correspondiente. Product Owner: Es el intermediario de la comunicación entre el cliente (stakeholder) y el equipo de desarrollo. Este debe priorizar los requerimientos según sean las necesidades de la solicitud. Scrum Master: Actúa como facilitador ante todo el equipo de desarrollo, elimina todos aquellos impedimentos que identifique durante el proceso, así mismo se encarga de que el equipo siga los valores y los principios ágiles, las reglas y los procesos de Scrum, incentivando al grupo de trabajo. Scrum Team (Equipo de desarrollo): Se encarga de desarrollar los casos de uso definidos en el Product Backlog, es un equipo auto gestionado lo que quiere decir que no existe un de jefe de equipo, motivo por el cual todos los miembros se deben de encargar de realizar las estimaciones y en base a la velocidad obtenida en las iteraciones irán construyendo el Sprint Backlog. Imagen 12. Fases de la metodología Scrum (Muradas, 2019). Kanban Proveniente de una palabra japonesa cuyo significado es “Tarjeta Visual” es un marco de trabajo que requiere una comunicación en tiempo real sobre la capacidad del equipo, utilizado para controlar el avance de trabajo en una línea de producción, en la cual se clasifican las tareas en sub estatus, esto con la intención de determinar los niveles de productividad en cada fase del proyecto. Para el desarrollo de software, gracias a su sencillez KANBAN, simplifica la planificación y la asignación de responsabilidades, en un tablero se representan los procesos del flujo de trabajo, cómo mínimo deben existir tres columnas (Pendiente, En Progreso, Terminado), la cantidad de tarjetas en estatus pendiente forma parte de lo solicitado por el cliente, aquellas colocadas en progreso dependerán de la capacidad del equipo de trabajo. (Muradas, 2019). Las principales ventajas de Kanban son: Planificación de tareas. Tiempos de ciclos reducidos. Rendimiento del equipo de trabajo. Entrega continua. Diagrama de flujo de datos. Modelación de los procesos. Para que los analistas de sistemas puedan comprender los requerimientos de información de los usuarios, deben ser capaces de conceptualizar la forma en que los datos se mueven a través de la organización, los procesos o la transformación por la que pasan los datos y las salidas de los mismos. Aunque las entrevistas y la investigación de datos “duros” proveen una narrativa verbal del sistema, una descripción visual puede cristalizar esta información para los usuarios y analistas de una manera útil. (Kendall & Kendall, 2011). Flujo de datos. Por medio de una técnica de análisis estructurado conocida como diagramas de flujo de datos (DFD), el analista de sistemas puede ensamblar una representación gráfica de los procesos de datos a través de la organización. Al usar combinaciones de sólo cuatro símbolos, el analista puede crear una descripción ilustrada de los procesos con el fin de elaborar una documentación sólida para el sistema. Se utilizan cuatro símbolos básicos para graficar el movimiento de los datos en los diagramas: un cuadrado doble, una flecha, un rectángulo con esquinas redondas y un rectángulo con un extremo abierto (cerrado del lado izquierdo y abierto del lado derecho). Se puede describir en forma gráfica todo un sistema y numerosos subsistemas al combinar estos cuatro símbolos. La flecha muestra el movimiento de los datos de un punto a otro; la cabeza de la flecha apunta hacia el destino de los datos. Los flujos de datos que ocurren al mismo tiempo se pueden describir mediante el uso de flechas paralelas. Como una flecha representa datos sobre una persona, lugar o cosa, también se debe describir con un sustantivo. (Kendall & Kendall, 2011). Imagen 13. Ejemplo de flujo de datos (Lucidchart, 2018). Agentes internos. Se utiliza un rectángulo con esquinas redondas para mostrar la ocurrencia de un proceso de transformación. Los procesos siempre expresan un cambio o transformación en los datos; por ende, el flujo de datos que sale de un proceso siempre se identifica de manera distinta al flujo que entra al proceso. Los procesos representan el trabajo que se realiza en el sistema. (Kendall & Kendall, 2011). Agentes externos. El cuadrado doble se utiliza para describir una entidad externa (otro departamento, una empresa, una persona o una máquina) que pueda enviar/recibir datos hacia/desde el sistema. La entidad externa, o simplemente entidad, también se conoce como origen o destino de los datos, y se considera externa al sistema que se está describiendo. Cada entidad se identifica con un nombre apropiado. Aunque interactúa con el sistema, se considera fuera de los límites de éste. Se debe denominar a las entidades con un sustantivo. Se puede utilizar la misma entidad más de una vez en un diagrama de flujo de datos para evitar cruzar las líneas de flujo de datos. (Kendall & Kendall, 2011). Almacenes de datos. El último símbolo básico que se utiliza en los diagramas de flujo de datos es un rectángulo con un extremo abierto, el cual representa a un almacén de datos. El rectángulo se dibuja con dos líneas paralelas que se cierran mediante una línea corta del lado izquierdo y cuyo extremo derecho está abierto. Estos símbolos se dibujan con la anchura suficiente como para permitir una leyenda de identificación entre las líneas paralelas. En los diagramas de flujo de datos lógicos no se especifica el tipo de almacenamiento físico. (Kendall & Kendall, 2011). Diccionario de datos. El diccionario de datos es una versión especializada de los diccionarios que se utilizan como referencias en la vida cotidiana. El diccionario de datos es una obra de consulta de información sobre los datos (es decir, metadatos); es compilado por los analistas de sistemas para guiarse a través del análisis y diseño. Como documento, el diccionario de datos recopila y coordina términos de datos específicos, además de confirmar lo que significa cada término para distintas personas en la organización. (Kendall & Kendall, 2011). Modelo de casos de uso Un modelo de casos de uso describe los requerimientos funcionales de un sistema. Este modelo contiene las funciones deseadas y sirve como un contrato entre el cliente y los desarrolladores. El cliente debe aprobar el modelo de casos de uso. Cuando esta aprobación se obtiene, tenemos la certeza de que sabemos lo que el sistema debe realizar. Este modelo también puede ser utilizado durante el desarrollo del sistema para realizar ajustes a la funcionalidad solicitada por el cliente. Imagen 15. Ejemplo de un modelo de casos de uso. (Cidecame, 2019). Los participantes en el proyecto lo utilizan para entender mejor el sistema. Los diseñadores lo utilizan como la base para realizar su trabajo y obtener una visión general del sistema. El personal de pruebas los utiliza para planificar qué funcionalidad es la que debe ser validada. Los documentadores los utilizan como base para escribir las guías de usuarios. El arquitecto los utiliza para identificar y validar la funcionalidad arquitectónicamente representativa. El líder de proyecto los utiliza para planificar las actividades del proyecto. Los componentes principales del modelo de casos de uso: Un actor representa un conjunto coherente de roles que son desempeñados cuando interactúa con el sistema. Típicamente un actor representa un rol que puede ser desempeñado por un humano, un dispositivo de hardware u otro sistema al momento de interactuar con el sistema en desarrollo. Un caso de uso es una secuencia de acciones que un sistema realiza y que dan como resultado un elemento de valor a un actor en particular. Un caso de uso describe lo que el sistema hace, pero no especifica cómo lo hace. (Cidecame, 2019). Modelo entidad-relación Según Millán (2012), cuando se utiliza una base de datos para gestionar información, se está plasmando una parte del mundo real en una serie de tablas, registros y campos ubicados en un ordenador; creándose un modelo parcial de la realidad. Antes de crear físicamente estas tablas en el ordenador se debe realizar un modelo de datos. Se suele cometer el error de ir creando nuevas tablas a medida que se van necesitando, haciendo así el modelo de datos y la construcción física de las tablas simultáneamente. El resultado de esto acaba siendo un sistema de información parcheado, con datos dispersos que terminan por no cumplir adecuadamente los requisitos necesarios. Entidades y Relaciones. El modelo de datos más extendido es el denominado ENTIDAD/RELACIÓN (E/R) En el modelo E/R se parte de una situación real a partir de la cual se definen entidades y relaciones entre dichas entidades: Entidad. - Objeto del mundo real sobre el que queremos almacenar información (Ej.: una persona). Las entidades están compuestas de atributos que son los datos que definen el objeto (para la entidad persona serían DNI, nombre, apellidos, dirección). De entre los atributos habrá uno o un conjunto de ellos que no se repite; a este atributo o conjunto de atributos se le llama clave de la entidad, (para la entidad persona una clave seria DNI). En toda entidad siempre hay al menos una clave que en el peor de los casos estará formada por todos los atributos de la tabla. Relación. - Asociación entre entidades, sin existencia propia en el mundo real que estamos modelando, pero necesaria para reflejar las interacciones existentes entre entidades (Millán, 2012). Ingeniería web La ingeniería web es un área que abarca procesos, técnicas y modelos orientados a los entornos Web. Consiste en la aplicación de metodologías sistemáticas, disciplinadas y cuantificables al desarrollo eficiente, operación y evolución de aplicaciones web de alta calidad. La ingeniería Web toma prestado muchos de los conceptos y principios básicos de la ingeniería del software, dando importancia a las mismas actividades técnicas y de gestión. Existen diferencias sutiles en la forma en que se llevan a cabo estas actividades, pero la filosofía primordial es idéntica dado que dicta un enfoque disciplinado para el desarrollo de un Sistema basado en computadora. La Ingeniería Web surge como una nueva disciplina orientada a solucionar los problemas derivados de una proliferación de sistemas web de baja calidad, realizados con una carencia completa de proceso. Esta nueva disciplina identifica nuevos elementos propios de las aplicaciones web que no se cubren en las Ciencias de la Computación, en la Ingeniería del Software o en los Sistemas de Información. (Bolaños, 2015). Procesos de ingeniería web. El desarrollo de software tradicional y el desarrollo web difieren en algunos aspectos. Los profesionales de desarrollo de software necesitan tener un conocimiento sólido de programación, diseño de base de datos y gestión de proyectos. Sin embargo, los desarrolladores web abarcan una variedad mucho más amplia como personas sin habilidades de programación, diseñadores gráficos, escritores, expertos en bases de datos entre otros (Mendes & Mosley, 2011). Las páginas web pueden ser creadas por cualquier persona sin la necesidad de tener conocimiento avanzado de programación. En el desarrollo de aplicaciones basadas en Web, se aplican herramientas de Ingeniería de Software, sin tener en cuenta que contienen características especiales, tales como la usabilidad, navegabilidad, seguridad, mantenimiento y escalabilidad (Peralta, 2008). El uso de soluciones de Ingeniería de Software puede crear aplicaciones basadas en Web pobremente desarrolladas y con una probabilidad de fallo considerablemente alto (Pressman, 2010). Por lo tanto, para lograr un mayor éxito en el desarrollo de aplicaciones Web complejas y a gran escala es necesario enfocarse en la ingeniería Web como una disciplina. Según Pressman (2010) numera siete actividades que forman parte del proceso de la Ingeniería Web y que son aplicables a cualquier aplicación Web independientemente de su tamaño y complejidad. 1. La Formulación identifica objetivos y establece el alcance de la primera entrega. 2. La Planificación genera estimación de costo, la evaluación de riesgo y el calendario del desarrollo y fechas de entrega. 3. El Análisis especifica los requerimientos e identifica el contenido. 4. La Modelización Consta de dos partes: 4.1. Diseño y producción del contenido. 4.2. Diseño de la arquitectura, navegación e interfaz del usuario. 5. En la Generación de Páginas se integran arquitectura, navegación e interfaz para la creación más visible del proyecto, que son las páginas. 6. El Test son pruebas en busca de errores en todos los niveles: contenido, funcional, navegación, etc. 7. El resultado final es sometido a Evaluación del Cliente. En la Ingeniería de Software tradicional, hay tareas que forman parte en el proceso como lo es el control y garantía de la calidad, que implican actividades como: supervisión de estándares, revisiones técnicas, análisis, seguimiento, entre otras, estas pueden ser igualmente aplicadas a la Ingeniería Web. Sin embargo, en la Ingeniería Web tiene otros aspectos para valorar la calidad como la usabilidad, accesibilidad, seguridad, eficiencia y mantenibilidad (Pressman, 2010). Las aplicaciones Web están dirigida frecuentemente a grupo de usuarios desconocidos haciendo que el desarrollo sea más desafiante a diferencia de, Aplicaciones de software convencionales que se desarrollan generalmente para un grupo de usuarios previamente conocido. Aplicación web Una aplicación web es una aplicación o herramienta informática accesible desde cualquier navegador, bien sea a través de internet (lo habitual) o bien a través de una red local. A través del navegador se puede acceder a toda la funcionalidad y tener cualquiera de las soluciones enumeradas en el punto anterior. Tiene unas grandes ventajas: La primera gran ventaja es que no necesita ningún tipo de instalación, ya que se accede a través de un navegador. Además, una aplicación web es multiplataforma y multidispositivo. Esto significa que nos podemos olvidar de que software tiene cada dispositivo que accede, y que puede acceder igualmente un ordenador, una Tablet, un Smartphone. Y otra gran ventaja es que la potencia no está en el dispositivo que accede, por lo que, aunque no tengamos un superordenador la aplicación puede ser muy potente, ya que el peso no lo soporta el equipo desde el que se accede sino el servidor donde está alojada. La aplicación puede estar en la nube, con lo que sería accesible para cualquier ordenador con acceso a internet (aunque también podría ser una aplicación local en una intranet). Y para finalizar, es muy adaptable, visualmente intuitiva y muy fácil de actualizar si fuera necesario. (Mateo, 2018). Lenguaje de programación Es un lenguaje artificial que expresa lo que denominamos computaciones. Las computaciones representan un término genérico para cualquier tipo y variante de algoritmo, proceso o medida que pueda ser ejecutada por una máquina o sistema complejo tal como un ordenador o computadora. En sentido estricto, los lenguajes de programación son variados y se caracterizan por ser utilizados para crear aplicaciones y software de cualquier tipo. En este caso nos referimos al desarrollo de programas que se encargan del control del comportamiento de la máquina, sistema or ordenador. El comportamiento específico se define mediante algoritmos predefinidos y pre-escritos ad hoc. (Fred, 2014). Imagen 16. Lenguajes de programación (Fred, 2014). Los primeros lenguajes fueron desarrollados y consecuentemente diseñados para controlar; manejar y coordinar el comportamiento de máquinas específicas tales como los telares de Jacquard y sistemas de reproducción de piano. PHP PHP es el acrónimo de Hipertext Preprocesor. Es un lenguaje de programación del lado del servidor gratuito e independiente de plataforma, rápido, con una gran librería de funciones y mucha documentación. Un lenguaje del lado del servidor es aquel que se ejecuta en el servidor web, justo antes de que se envíe la página a través de Internet al cliente. Las páginas que se ejecutan en el servidor pueden realizar accesos a bases de datos, conexiones en red, y otras tareas para crear la página final que verá el cliente. El cliente solamente recibe una página con el código HTML resultante de la ejecución de la PHP. Como la página resultante contiene únicamente código HTML, es compatible con todos los navegadores. PHP se escribe dentro del código HTML, lo que lo hace realmente fácil de utilizar, al igual que ocurre con el popular ASP de Microsoft. Imagen 17. Ejecución PHP (Álvarez, 2001). Este lenguaje de programación está preparado para realizar muchos tipos de aplicaciones web gracias a la extensa librería de funciones con la que está dotado. La librería de funciones cubre desde cálculos matemáticos complejos hasta tratamiento de conexiones de red, por poner dos ejemplos. Algunas de las más importantes capacidades de PHP son: compatibilidad con las bases de datos más comunes, como MySQL, mSQL, Oracle, Informix, y ODBC, por ejemplo. Incluye funciones para el envío de correo electrónico, upload de archivos, crear dinámicamente en el servidor imágenes en formato GIF, incluso animadas y una lista interminable de utilidades adicionales. (Álvarez, 2001). Frontend y Backend Imagen 18. Representación gráfica de frontend y backend (Guevara, 2016). Front-End Es la parte del desarrollo web que se dedica de la parte frontal de un sitio web, en pocas palabras del diseño de un sitio web, desde la estructura del sitio hasta los estilos como colores, fondos, tamaños hasta llegar a las animaciones y efectos. Un front-end entonces es la persona que se dedica básicamente al «diseño web», pero esto no signifique que no toque código, tanto el front-end como el back-end están en contacto con código todo el tiempo, dentro del área de front-end se trabaja con lenguajes mayormente del lado del cliente, como HTML y CSS para darle estructura y estilo al sitio, y Javascript para complementar los anteriores y darle dinamismo a los sitios web, aunque cabe mencionar que HTML y CSS son lenguajes pero no de programación, son lenguajes de marcado y estilo. Solo Javascript es un lenguaje de programación, y este último es en donde se requiere realmente una lógica de programación. Back-End Es el área que se dedica a la parte lógica de un sitio web, es el encargado de que todo funcione como debería, el back-end es la parte de atrás que de alguna manera no es visible para el usuario ya que no se trata de diseño, o elementos gráficos, se trata de programar las funciones que tendrá un sitio. El Back-End es la programación dura y pura, desde la programación de las funciones del sitio hasta bases de datos e incluso más. El Back-end trabaja todo el tiempo con lenguajes de programacion, lenguajes que requieren de una lógica ya que esta área es también la encargada de optimizar recursos, de la seguridad de un sitio y demás. Cosas que el usuario no ve de primeras pero que existe código detrás que está haciendo su trabajo. Los lenguajes de programación que se utilizan en el Back-end en la actualidad son PHP, Javascript, Phyton y Ruby. Además de HTML y CSS, que, aunque básico, también deben saber al menos un poco. (Arturo, 2014). Base de datos Es una colección de información organizada de tal modo que sea fácilmente accesible, gestionada y actualizada. En una sola vista, las bases de datos pueden ser clasificadas de acuerdo con los tipos de contenido: bibliográfico, de puro texto, numéricas y de imágenes. En informática, las bases de datos a veces se clasifican de acuerdo a su enfoque organizativo. El enfoque más frecuente es la base de datos relacional, una base de datos tabular en la que los datos se definen de manera que puede ser reorganizada y se accede en un número de maneras diferentes. Una base de datos distribuida es una que puede ser dispersada o replicada entre diferentes puntos de una red. Una base de datos de la programación orientada a objetos es una que es congruente con los datos definidos en clases y subclases de los objetos. Las bases de datos informáticas típicamente contienen agregados de registros de datos o archivos, tales como las operaciones de venta, catálogos de productos e inventarios y perfiles de clientes. Típicamente, un gestor de bases de datos proporciona a los usuarios la capacidad de controlar el acceso de lectura/escritura, especificando la generación de informes y analizando el uso. (Rouse, 2019). Mysql Según (Gustavo, 2019), Mysql es un sistema de gestión de bases de datos relacionales de código abierto (RDBMS, por sus siglas en inglés) con un modelo cliente-servidor. RDBMS es un software o servicio utilizado para crear y administrar bases de datos basadas en un modelo relacional. Una compañía sueca llamada MySQL AB originalmente desarrolló MySQL en 1994. La compañía de tecnología de los Estados Unidos Sun Microsystems luego tomó el control por completo cuando compró MySQL AB en el 2008. El gigante de la tecnología estadounidense Oracle adquirió Sun Microsystems en el 2010, y MySQL ha sido propiedad de Oracle desde entonces. Imagen 19. Funcionamiento de Mysql. (Gustavo, 2019). Algunas de sus características son: Flexible y fácil de usar: Puedes modificar el código fuente para satisfacer tus propias expectativas, y no tienes que pagar nada por este nivel de libertad, incluidas las opciones de actualización a la versión comercial avanzada. El proceso de instalación es relativamente simple y no debería durar más de 30 minutos. Alto rendimiento: Un amplio compendio de servidores de clúster respalda a MySQL. Ya sea que estés almacenando enormes cantidades de datos de eCommerce grandes o realizando actividades intensas de inteligencia de negocios, MySQL puede ayudarte sin problemas con una velocidad óptima. Un estándar de la industria: Las industrias han estado usando MySQL durante años, lo que significa que hay abundantes recursos para desarrolladores calificados. Los usuarios de MySQL pueden esperar un rápido desarrollo del software y trabajadores freelance expertos dispuestos a trabajar. Seguro: Tus datos deberían ser la principal preocupación al elegir el software RDBMS correcto. Con su sistema de privilegios de acceso y la administración de cuentas de usuario, MySQL establece un alto estándar de seguridad. La verificación basada en el host y el cifrado de contraseña están disponibles. SQL Plasencia (2016) Establece que SQL (Structured Query Language) es un lenguaje estándar e interactivo de acceso a bases de datos relacionales que permite especificar diversos tipos de operaciones en ellas, gracias a la utilización del álgebra y de cálculos relacionales, el SQL brinda la posibilidad de realizar consultas con el objetivo de recuperar información de las bases de datos de manera sencilla. Las consultas toman la forma de un lenguaje de comandos que permite seleccionar, insertar, actualizar, averiguar la ubicación de los datos, y más. SQL es un lenguaje declarativo estándar internacional de comunicación dentro de las bases de datos que nos permite a todos el acceso y manipulación de datos en una base de datos, y además se puede integrar a lenguajes de programación, por ejemplo, ASP o PHP, y en combinación con cualquier base de datos específica, por ejemplo, MySQL, SQL Server, MS Access, entre otras. Internet Es un conjunto descentralizado de redes de comunicación interconectadas que utilizan la familia de protocolos TCP/IP, lo cual garantiza que las redes físicas heterogéneas que la componen formen una red lógica única de alcance mundial. Sus orígenes se remontan a 1969, cuando se estableció la primera conexión de computadoras, conocida como ARPANET, entre tres universidades en California (Estados Unidos). Uno de los servicios que más éxito ha tenido en internet ha sido la World Wide Web (WWW o la Web), hasta tal punto que es habitual la confusión entre ambos términos. La WWW es un conjunto de protocolos que permite, de forma sencilla, la consulta remota de archivos de hipertexto. Esta fue un desarrollo posterior (1990) y utiliza internet como medio de transmisión. La mayoría de las industrias de comunicación, incluyendo telefonía, radio, televisión, correo postal y periódicos tradicionales están siendo transformadas o redefinidas por Internet, y permitió el nacimiento de nuevos servicios como correo electrónico (e-mail), telefonía por internet, televisión por Internet, música digital, y vídeo digital. (Graus, 2018). Página web Una página web es un documento o información electrónica capaz de contener texto, sonido, vídeo, programas, enlaces, imágenes y muchas otras cosas, adaptada para la llamada World Wide Web (WWW) y que puede ser accedida mediante un navegador web. Esta información se encuentra generalmente en formato HTML o XHTML, y puede proporcionar acceso a otras páginas web mediante enlaces de hipertexto. Frecuentemente también incluyen otros recursos como pueden ser hojas de estilo en cascada, guiones (scripts), imágenes digitales, entre otros. (Sánchez, 2007). Protocolo http El Protocolo de Transferencia de HiperTexto (Hypertext Transfer Protocol) es un sencillo protocolo cliente-servidor que articula los intercambios de información entre los clientes Web y los servidores HTTP. La especificación completa del protocolo HTTP 1/0 está recogida en el RFC 1945. Fue propuesto por Tim Berners-Lee, atendiendo a las necesidades de un sistema global de distribución de información como el World Wide Web. Desde el punto de vista de las comunicaciones, está soportado sobre los servicios de conexión TCP/IP, y funciona de la misma forma que el resto de los servicios comunes de los entornos UNIX: un proceso servidor escucha en un puerto de comunicaciones TCP (por defecto, el 80), y espera las solicitudes de conexión de los clientes Web. Una vez que se establece la conexión, el protocolo TCP se encarga de mantener la comunicación y garantizar un intercambio de datos libre de errores. (Cruz, 2019). Imagen 20. Diferencia entre http y https. (Cruz, 2019). HTTP se basa en sencillas operaciones de solicitud/respuesta. Un cliente establece una conexión con un servidor y envía un mensaje con los datos de la solicitud. El servidor responde con un mensaje similar, que contiene el estado de la operación y su posible resultado. Todas las operaciones pueden adjuntar un objeto o recurso sobre el que actúan; cada objeto Web (documento HTML, fichero multimedia o aplicación CGI) es conocido por su URL. Protocolo https HTTP es el acrónimo de Hypertext Transfer Protocol (en español protocolo de transferencia de hiper texto). HTTPS es igual, pero añadiéndole "Seguro". Estos dos protocolos se usan para lo mismo, la transferencia de datos. La diferencia básica entre ambos es la forma en la que viajan los datos. Si los datos son transferidos mediante HTTP, estos viajan en claro y son accesibles para cualquiera que intercepte la comunicación. En cambio, el protocolo HTTPS usa una conexión segura mediante un cifrado SSL y por tanto los datos viajan de un modo seguro de un lugar a otro. (Delgado, 2019). Dicho de otro modo, SSL funciona así: El navegador intenta conectarse a un sitio protegido con SSL. El navegador solicita que el servidor web se identifique. El servidor envía una copia de su certificado SSL al navegador. El navegador comprueba si el certificado SSL es de confianza. Si es así, envía un mensaje al servidor. El servidor devuelve un acuse de recibo firmado digitalmente para comenzar una sesión SSL cifrada. Los datos cifrados se comparten entre el navegador y el servidor. Servidor DNS En un estudio reciente (Méndez, 2019) dice que DNS es el acrónimo de Domain Name System o Sistema de Nombres de Dominio, que es el método utilizado por Internet para traducir de forma fácil de recordar los nombres de dominio como wpseguro.com en lugar de su IP 178.33.117.45 de manera que sean entendibles por las personas y más fácil que si se trata de recordar secuencias numéricas, como es el caso de las IPs. Todo equipo o dispositivo conectado a Internet necesita de una dirección IP y que esta sea única de forma que pueda ser accesible desde cualquier punto de la red. Recordar números de IPs para acceder a sitios web es una tarea compleja que nos limitaría bastante la cantidad que podríamos memorizar, por este motivo los DNS nos ayudan a convertir estas secuencias numéricas en nombres entendibles, y en la mayoría de casos asociados a la marca, entidad, persona o servicio al que sirven. Servidor web Un servidor Web es un programa que utiliza el protocolo de transferencia de hiper texto, HTTP (Hypertext Transfer Protocol), para servir los archivos que forman páginas Web a los usuarios, en respuesta a sus solicitudes, que son reenviados por los clientes HTTP de sus computadoras. Las computadoras y los dispositivos dedicados también pueden denominarse servidores Web. El proceso es un ejemplo del modelo cliente/servidor. Todos los equipos que alojan sitios Web deben tener programas de servidor Web. Los principales servidores Web incluyen Apache (el servidor Web más ampliamente instalado), Internet Information Server (IIS) de Microsoft y nginx (que se pronuncia engine X) de NGNIX. Otros servidores Web incluyen el servidor NetWare de Novell, el servidor Web de Google (GWS) y la familia de servidores Domino de IBM. Los servidores Web a menudo forman parte de un paquete más amplio de programas relacionados con internet e intranet para servir correo electrónico, descargar solicitudes de archivos de protocolo de transferencia de archivos (FTP) y crear y publicar páginas Web. Las consideraciones al elegir un servidor Web incluyen cuán bien funciona con el sistema operativo y otros servidores, su capacidad para manejar la programación del servidor, las características de seguridad y las herramientas particulares de publicación, motor de búsqueda y creación de sitios que vienen con él. (Rouse, 2019). Software de diseño. Para el desarrollo de software es necesario realizar un diseño previo de las interfaces antes de llevar a cabo el desarrollo codificado de estas. Algunos de los softwares especializados en esto son: Balsamiq. Es una herramienta rápida de UI de baja fidelidad que reproduce la experiencia de dibujar en un bloc de notas o pizarra, pero utilizando una computadora. Este software obliga al usuario a centrarse en la estructura y el contenido, evitando largas discusiones sobre los colores y los detalles que deberían aparecer más adelante en el proceso. (Balsamiq, 2019). Cookie Según (Endalia, 2019) una cookie es un pequeño fichero de texto que se almacena en su ordenador al acceder a determinadas páginas web. Cuando vuelve a visitar el mismo sitio, la cookie permite al sitio web reconocer su navegador. Las cookies permiten almacenar las preferencias del usuario y otro tipo de información. La configuración del navegador se puede modificar para que rechace todas las cookies o para indicar cuándo se deben enviar. Sin embargo, puede ser que algunas de las funciones o servicios del sitio web no funcionen correctamente sin las cookies. Usted puede permitir, bloquear o eliminar las cookies instaladas en su equipo mediante la configuración de las opciones del navegador instalado en su ordenado. Diseño responsivo Es crear un solo sitio web que se adapte a dispositivos diferentes, manteniendo su estructura y orden. Así, cada elemento de la web se adapta a las proporciones de cualquier pantalla, permitiendo una correcta visualización y navegación. Imagen 21. Representación del diseño responsivo. (Rubio, 2017). Las principales ventajas del diseño responsivo son: Mejora la experiencia de usuario, ya que los visitantes pueden acceder a los mismos contenidos fácilmente desde cualquier dispositivo. Brindarles un sitio web bien diseñado que puedan recorrer sin problema es clave para que quieran volver una y otra vez. A Google le gusta el diseño responsivo. Tener una web responsive es importante para el SEO, ya que al favorecer la experiencia de usuario y tener más tráfico, las páginas con diseño responsive tienen mayores probabilidades de éxito en el posicionamiento en buscadores. Aumenta la viralidad de los contenidos, permitiendo que los usuarios compartan el contenido de manera natural y sin problemas como la duplicación de información. Es más práctico, debido a que no hay necesidad de subir diferentes tipos de contenidos ni mantener diferentes webs. Te preparas para lo que venga. Constantemente aparecen nuevos dispositivos de tamaños distintos, y tú querrás que tu web se visualice correctamente desde cualquiera de ellos, El diseño responsivo se adelanta a esta necesidad, ya que no se limita por el tipo de dispositivo. (Rubio, 2017). Dominio web El dominio web de tu sitio web es esencialmente el equivalente a una dirección física. De la misma manera que un satélite necesita una dirección o un código postal para dar direcciones, un navegador web necesita un nombre de dominio para dirigirte a un sitio web. Un dominio de internet se forma a partir de dos elementos principales. Por ejemplo, el nombre de dominio Facebook.com consiste del nombre del sitio web (Facebook) y la extensión del dominio (.com). Cuando una empresa (o una persona) compra un dominio web, puede especificar a qué servidor apunta el nombre de dominio. Los registros de nombres de dominios son supervisados por una organización llamada ICANN (Corporación de Internet para Nombres y Números Asignados, por sus siglas en inglés). ICANN especifica qué extensiones de dominios están disponibles y mantiene una base de datos centralizada de dónde apuntan los dominios web. (Gustavo, 2019). ACTIVIDADES REALIZADAS Las actividades que se realizaron en la empresa son las siguientes: IDENTIFICACIÓN DE REQUERIMIENTOS. Solicitar al gerente la información necesaria para el desarrollo del sistema. Los requerimientos deben ser vistos como el acuerdo entre el cliente y el desarrollador, ya que posteriormente se deberá comparar el producto final con la especificación de dichos requerimientos, por lo que estos son la definición del problema que se pretende resolver. Los requisitos se deben registrar en formatos para que se tenga un control al momento de verificar el cumplimiento de los mismos. A continuación, se muestra el formato en el que se llevó a cabo la toma de requerimientos. (Ver figura 1). Requerimientos de Usuario Fecha: 14/10/19 Encargado del proyecto: Justo Hugo Alvarez Muciño Módulo: Usuarios No. Versión: 1 ID. RCCU01 RCCU02 RCCU03 Requerimiento El usuario debe ser capaz de crear una cuenta de usuario. El usuario y administrador podrán modificar la información de su cuenta. El administrador podrá gestionar las cuentas de usuario existentes. Prioridad Alta Media Alta Figura 1. Formato: Registro de Requerimientos de Usuario. Fuente: Elaboración propia. Fecha: 14/10/19 Encargado del proyecto: Justo Hugo Alvarez Muciño Módulo: Áreas No. Versión: 1 ID. RCCA01 Requerimiento El administrador podrá registrar una area. RCCA02 El administrador registradas. podrá gestionar las Prioridad Alta area Alta Figura 2. Formato: Registro de Requerimientos de Usuario. Fuente: Elaboración propia. Fecha: 14/10/19 Encargado del proyecto: Justo Hugo Alvarez Muciño Módulo: Tickets No. Versión: 1 ID. RCCT01 Requerimiento El usuario podrá registrar un nuevo ticket RCCT02 El usuario podrá visualizar los tickets registrados Prioridad Alta Media Figura 3. Formato: Registro de Requerimientos de Usuario. Fuente: Elaboración propia. ANÁLISIS DE REQUERIMIENTOS. Analizar los requisitos para definir los módulos del sistema. Una vez recolectados los requisitos se procede a realizar un análisis de los mismos, por lo que permite especificar detalladamente las características operacionales del software. Dicho análisis es realizado con los siguientes elementos que serán detallados a continuación: Requerimientos del Sistema. Es una versión extendida de los Requerimientos de Usuario que se toman como punto de partida para el diseño del sistema, en el que se explica con detalle cómo el sistema debe realizar dichos requerimientos. (Ver figura 4). Requerimientos del Sistema Requerimiento: Registro de usuario Tipo: ID derivado: Descripción: ID: RCCS01 Funcional RCCU01 Al hacer clic en el botón “regístrate “la interfaz del login se enlazará con la interfaz registro de usuario en el cual se llenará el formulario con la información solicitada, al final se presiona el botón “registrar” para generar la cuenta. Información presentada: Formulario de registro de datos. o Nombre o Apellido paterno o Apellido materno o Correo o Numero de contacto o Area o Usuario o Contraseña o Registrar (botón) o Volver (botón) Requerimiento: Editar usuario Tipo: ID derivado: Descripción: ID: RCCS02 Funcional RCCU02 Al tener un usuario previamente registrado, este puede modificar su información haciendo clic en el botón “perfil” o en la opción “configuración” del menú lateral izquierdo de la interfaz principal donde mostrará un formulario con la información del usuario. Nombre Apellido paterno Apellido materno Correo Numero de contacto Area Usuario Contraseña Actualizar datos (botón) Requerimiento: Gestión de usuario Tipo: ID derivado: Descripción: Funcional RCCU03 Al tener usuarios previamente registrados podemos modificar su información seleccionado la opción usuarios del menú lateral de la interfaz principal del administrador donde se mostrará dos tablas; una contiene a los usuarios estándar y la otra a los usuarios con privilegios de administrador. Nombre Apellido paterno Apellido materno Correo Numero de contacto Area Usuario Contraseña Actualizar datos (botón) Requerimiento: Registro de áreas Tipo: ID derivado: Descripción: ID: RCCS04 Funcional RCCA01 Al realizar un registro de una nueva area, en la interfaz de administrador se debe dirigir a la opción áreas en el menú lateral izquierdo en donde se debe seleccionar el botón “nuevo” para realizar un registro. Nombre de area Agregar “botón” Requerimiento: Gestión de áreas Tipo: ID derivado: ID: RCCS03 Funcional RCCA02 ID: RCCS05 Descripción: En la interfaz principal del administrador se selecciona la opción áreas del menú lateral en la cual se visualiza una tabla con las áreas registradas las cuales se pueden registrar o eliminar dando clic en el botón acción Nombre de area Editar (botón) Eliminar (botón) La tabla actualizara los datos dependiendo de la acción seleccionada. Requerimiento: Registrar ticket Tipo: ID derivado: Descripción: ID: RCCS06 Funcional RCCT01 En la interfaz principal del usuario estándar se podrá registrar un nuevo ticket llenado el cuadro de texto y enviar la solicitud a los administradores dando clic en el botón “enviar” Descripción de la incidencia Enviar (botón) Requerimiento: Visualizar ticket Tipo: ID derivado: Descripción: ID: RCCS07 Funcional RCCTC02 En la interfaz principal del usuario estándar, seleccionando la opción “mis tickets” en el menú lateral se visualizará una tabla con todos los tickets registrados, mostrando su información y estatus del mismo. Buscar (caja de texto) Anterior (botón) Siguiente (botón) Figura 4. Formato: Registro de Requerimientos del Sistema. Fuente: Elaboración propia. Diagrama de Casos de Uso. Representa la forma en como un Actor opera con el sistema en desarrollo, además de la forma, tipo y orden en como los elementos interactúan. (Ver figura 5). Figura 5. Diagrama de Casos de Uso modulo usuarios. Fuente: Elaboración propia. Figura 6. Diagrama de Casos de Uso modulo usuarios. Fuente: Elaboración propia. Figura 7. Diagrama de Casos de Uso modulo usuarios. Fuente: Elaboración propia. Diagrama de navegación El diagrama de navegación muestra al usuario en donde está posicionado dentro del sistema y cuál es la pantalla predecesora o sucesora. En este caso se muestra en diagrama de navegación de ambos módulos desarrollados. Diagrama 2. Diagrama de navegación (Elaboración propia). Diagrama 3. Diagrama de navegación (Elaboración propia). Diagrama 3. Diagrama de navegación (Elaboración propia). Diagrama Entidad – Relación. Es una herramienta para el modelado de datos, que permite representar entidades de una Base de Datos. (Ver figura 9). Figura 9. Diagrama Entidad - Relación. Fuente: Elaboración propia. Diccionario de Datos. Es utilizado para describir cada uno de los atributos que contienen las tablas de la Base de Datos. A continuación, se muestra el diccionario de datos de la tabla utilizada para el Módulo de Constancias de Estudio. Tabla: usuarios Columna Tipo Descripción id int(255) Identificador del usuario. nombre varchar(50) Nombre del usuario. apepat varchar(50) Apellido paterno del usuario. apemat varchar(50) Apellido materno del usuario. area_t text Área a la que pertenece el usuario. correo varchar(25) Correo electrónico del usuario. telefono varchar(15) Número telefónico del usuario. usuario varchar(50) Cuenta del usuario. password varchar(16) Password del usuario. tipo varchar(25) Tipo de usuario. Tabla 2. Tabla de datos usuarios. Fuente: Elaboración propia. Tabla: tickets_excel Columna Tipo Descripción id int(255) Identificador del ticket. C varchar(5) Empresa del ticket. id_ticket varchar(15) ID para el registro del ticket subject text Descripción del ticket. type varchar(25) Tipo de ticket. creation_time varchar(20) Fecha de creación del ticket. clausure varchar(20) Fecha de término del ticket. TIME varchar(6) Tiempo total de resolución del ticket. quantify int(2) Número de usuarios del ticket. usuario_que_atiende varchar(40) Usuario que atiende el ticket. usuario varchar(40) Usuario que reporta del ticket. solucion text Solución del ticket. Tabla 3. Tabla de datos tickets_excel. Fuente: Elaboración propia. Tabla: problematicas Columna Tipo Descripción id int(255) Identificador de la problemática. id_usuario int(255) ID del usuario de la problemática. codigo varchar(30) Código de la problemática. area_t varchar(20) Área de la problemática. fecha varchar(20) Fecha de la problemática. hora varchar(20) Hora de la problemática. estado varchar(20) Estado de la problemática. problema text Problema de la problemática. Tabla 4. Tabla de datos problematicas. Fuente: Elaboración propia. Tabla: area_trabajo Columna Tipo Descripción id int(255) Identificador del área. nombre varchar(50) Nombre del área. Tabla 5. Tabla de datos áreas_trabajo. Fuente: Elaboración propia. DISEÑO DEL PROTOTIPO. Realizar el diseño del prototipo. Es importante crear bocetos para tener una imagen visual de cómo serán las interfaces, esto ayudará más adelante a desarrollar el proyecto lo más semejante posible, mientras tanto se pueden realizar cambios de modo que se tenga una mejor idea que los convierta en el prototipo del proyecto final. Diseño de la Base de Datos. Figura 10. Diseño de la Base de Datos. Fuente: Elaboración propia Diseño de Interfaces . A continuación, se presentan algunas interfaces diseñadas: Figura 11. Interfaz generar áreas. Fuente: Elaboración Propia. Figura 12. Interfaz Editar area. Fuente: Elaboración Propia. Figura 13. Interfaz registro áreas. Fuente: Elaboración Propia. Figura 14. Interfaz editar áreas (usuario estándar). Fuente: Elaboración Propia. Figura 15. Interfaz registrar tickets. Fuente: Elaboración Propia. Figura 16. Interfaz visualizar tickets. Fuente: Elaboración Propia. VERIFICACIÓN DEL PROTOTIPO. Identificar cambios en el diseño del sistema. Una vez realizado el diseño del sistema se procede a realizar una revisión general junto con el cliente para obtener su aprobación. Los aspectos del sistema que requieran de un cambio son plasmados en un formato donde se especifican las interfaces y elementos a modificar. Control de Cambios Encargado del proyecto: Justo Hugo Alvarez Muciño Módulo: Usuarios No. Versión: 1 No. Interfaz 1 Registro de usuarios 2 Editar usuarios. Descripción Gestionar la validación de los campos de texto. Corrección de la gramática. Anexar la tabla de los usuarios con privilegios de administrador. Figura 17. Formato: Control de cambios para la segunda versión del software. 3 Gestión de usuarios. Fuente: Elaboración Propia. REDISEÑO DEL PROTOTIPO. Realizar los cambios identificados para satisfacer las necesidades del cliente. Para cada uno de los cambios registrados en el formato “Control de Cambios” se detalla de manera concreta dichas modificaciones en el siguiente formato. Especificación de Cambios Encargado del proyecto: Justo Hugo Alvarez Muciño Módulo: Usuarios No. Versión: 1 Interfaz: Elemento modificar Registros de usuarios. a Caja de texto de nombre, apellido paterno y materno, y numero de contacto. Descripción Añadir reglas de validación para ingresar solo los caracteres modificación propios del elemento. a realizar: Interfaz: Elemento modificar Editar usuarios a Etiquetas de cajas de texto Descripción modificación Escritura correcta de las etiquetas. a realizar: Interfaz: Elemento modificar Gestión de usuarios. a Tabla de visualización de usuarios. Descripción Añadir una tabla extra donde e muestren los usuarios con modificación privilegios de administrador. a realizar: Figura 18. Formato: Especificación de Cambios. Fuente: Elaboración propia. PRODUCTOS DEL PROYECTO El diseño del software es un proceso que incluye la codificación de las interfaces del sistema. Dichas interfaces requieren de la asignación de una medida específica, así como diversos componentes. Se incluyen capturas de pantalla de la codificación del diseño de las interfaces del sistema. Áreas Imagen 22. Interfaz de usuario gestión de áreas. Fuente elaboración propia. Imagen 23. Interfaz de usuario editar áreas. Fuente elaboración propia. Usuarios Imagen 23. Registro de usuarios. Fuente elaboración propia. Imagen 24. Interfaz editar usuarios estándar. Fuente elaboración propia. Imagen 25. Interfaz editar usuarios desde administrador. Fuente elaboración propia. Tickets Imagen 26. Interfaz de usuario generar ticket. Fuente elaboración propia. Visualizar tickets registrados Imagen 27. Interfaz visualizar tickets registros. Fuente elaboración propia. CONTRIBUCIONES REALIZADAS Mantenimiento al CCTV de la empresa En todo el tiempo del periodo de estancia se contribuyó en la instalación de cámaras de videovigilancia, así como el mantenimiento de los DVRS y revisión constante de que todas las cámaras conectadas dieran señal, además de la instalación de un nuevo DVR para ampliar la vigilancia dentro de la empresa. Imagen 28. Instalación de nuevo DVR. Fuente elaboración propia. Imagen 29. CCTV de cosmetic-colors. Fuente elaboración propia. Imagen 30. Peinado de cables del CCTV. Fuente elaboración propia. Instalación de un nuevo checador Imagen 31. Instalación de un checador. Fuente elaboración propia. CONCLUSIONES Una vez que se llevaron a cabo las diversas actividades estipuladas al comienzo de la Estancia II se acordó que el objetivo fue cumplido satisfactoriamente ya que la empresa quedo satisfecha puesto que el gerente de IT realizó comentarios positivos, argumentando que gracias a la implantación de este software no solo aumentaran los tiempos de respuesta y calidad del servicio de soporte técnico que brinda el área de IT, sino que en general, aumentara la productividad de los usuarios que cuentan con equipo de cómputo ya que sus incidencias se podrán resolver de una mena más óptima y rápida, así como la entrega mensual será más optima. Durante la realización de la Estancia II, en lo que corresponde a las actividades a realizar para cumplir con el objetivo del proyecto, a pesar de que durante el tiempo que se estuvo en la empresa no se contaba con un jefe directo que nos asesorara completamente en cuestiones del área, que hubieran varios proyectos mismos del área en puerta y la gran demanda de incidencias de soporte técnico que se tenía día con día por parte de los empleados, se logró concluir de manera satisfactoria puesto que el director del departamento previamente había presentado la propuesta de la implementación de un software como este. En la Estancia ll se dio la oportunidad de poner en práctica los conocimientos y técnicas adquiridas durante el segundo ciclo de formación académica al igual de la adquisición de nuevos conocimientos, habilidades y experiencias que nos serán muy útiles en un futuro no muy lejano para poder incorporarnos al sector laboral sin muchas complicaciones. RECOMENDACIONES Obtener más información acerca de estrategias y técnicas para implementar en el proyecto en el que se trabaje. Es muy importante, a la hora de realizar los checklist, agregar todos los puntos necesarios para realizar una buena recopilación de datos. Asesorarse directamente con la documentación oficial del software que se maneja. Utilizar todos los recursos disponibles que la empresa otorgué. Realizar todos los cambios en tiempo y forma para dar buenos resultados. Generar buena documentación para que personal posterior del área pueda darle mantenimiento o configurarlo en su momento. Referencias Alcalde, E. (1994). Informática Básica. 2° Ed. Madrid: McGraw Hill. Alvarez, M. A. (2001). Qué es PHP. Recuperado 3 febrero, 2020, de https://desarrolloweb.com/articulos/392.php Arturo, C. A. (2014). ¿Qué es Front-end y que es Back-End ? Recuperado 7 febrero, 2020, de http://www.falconmasters.com/web-design/que-es-frontend-y-que-es-back-end/ Bolaños, F. B. (2015). La ingeniería web. Recuperado 5 febrero, 2020, de https://laingenieriaweb.wordpress.com/la-ingenieria-web/ Chen, C. C. (2019). Significado de Sistema de información. Recuperado 10 febrero, 2020, de https://www.significados.com/sistema-de-informacion/ Cidecame. (2019). 2.3.2 Diagrama de casos de uso. Recuperado 9 febrero, 2020, de http://cidecame.uaeh.edu.mx/lcc/mapa/PROYECTO/libro10/232_diagrama_ de_casos_de_uso.html Cosmetic colors, (2019). Cruz, A. C. (2019). protocolo http. Recuperado 10 febrero, 2020, de http://neo.lcc.uma.es/evirtual/cdd/tutorial/aplicacion/http.html Delgado, P. D. (2016). HTTPS. Recuperado 10 febrero, 2020, de https://introbay.com/es/blog/2016/07/05/https-que-es-y-para-que-sirve EcuRed. (2018). Metodologias de desarrollo de Software - EcuRed. Recuperado 8 febrero, 2020, de https://www.ecured.cu/Metodologias_de_desarrollo_de_Software Endalia, V. E. (2019). información sobre cookies. Recuperado 8 febrero, 2020, de https://www.endalia.com/acerca-de-endalia/informacion-sobre- cookies/ Fred, N. F. (2014). ¿Qué es un lenguaje de programación? Recuperado 10 febrero, 2020, de https://velneo.es/que-es-un-lenguaje-de-programacion/ Graus, E. G. (2018). ¿Qué es internet? Recuperado 4 febrero, 2020, de https://www.todamateria.com/que-es-internet/ Guevara, A. G. (2016). Frontend y Backend. Recuperado 10 febrero, 2020, de https://devcode.la/blog/frontend-y-backend/ Gustavo, B. G. (2019). ¿Qué es MySQL? Explicación detallada para principiantes. Recuperado 7 febrero, 2020, de https://www.hostinger.mx/tutoriales/que-es-mysql/ Kendall, K. & Kendall, J. (2011). Análisis y Diseño de Sistemas. México: Pretince Hall. López, C. L. (2012). SISTEMAS DE INFORMACION. Recuperado 9 febrero, 2020, de https://christianlopezd.wordpress.com/2012/09/27/sistemas-de- informacion/ Lucidchart. (2018). Qué es un diagrama de flujo. Recuperado 9 febrero, 2020, de https://www.lucidchart.com/pages/es/que-es-un-diagrama-de-flujo Mateo, A. M. (2018). ¿Qué es una aplicación web? Recuperado 8 febrero, 2020, de https://www.neosoft.es/blog/que-es-una-aplicacion-web/ Medina, E. M. (2019). Sistema de Información: Concepto, Tipos, Elementos y Ejemplos. Recuperado 9 febrero, 2020, de https://concepto.de/sistema-deinformacion/ Mendes, E. & Mosley, N. (2011). Web engineering. Berlín: Springer. Méndez, L. M. (2019). Qué es un servidor DNS y cómo solucionar problemas habituales. Recuperado 10 febrero, 2020, de https://www.webempresa.com/blog/servidor-dns-como-solucionarproblemas-habituales.html Millán, M. (2012). Fundamentos de Bases de Datos. Cali: Universidad del Valle. Programa Editorial. Muradas, Y. M. (2019). Conoce las 3 metodologías ágiles más usadas. Recuperado 8 febrero, 2020, de https://openwebinars.net/blog/conoce-las-3metodologias-agiles-mas-usadas/ Peralta, F. (2008). Diseño y Desarrollo Web. Barcelona: OUC. Plasencia, C. P. (2016). ¿Qué es y por qué aprender SQL? Recuperado 8 febrero, 2020, de https://devcode.la/blog/que-es-sql/ Pressman, R. (2010). Ingeniería de Software, un enfoque práctico. 5ª ed. Madrid, España. McGraw Hill. Rouse, M. R. (2019). ¿Qué es Base de datos? - Definición en WhatIs.com. Recuperado 10 de febrero, 2020, de https://searchdatacenter.techtarget.com/es/definicion/Base-de-datos Rouse, M. R. (2019). ¿Qué es Base de datos? - Definición en WhatIs.com. Recuperado 10 febrero, 2020, de https://searchdatacenter.techtarget.com/es/definicion/Base-de-datos Rubio, M. R. (2017). ¿Qué es el diseño responsivo? Te contaremos por qué lo necesitas. Recuperado 8 febrero, 2020, de https://rockcontent.com/es/blog/diseno-responsivo/ Sánchez, L. (2007). Informática II [recurso electrónico]. México: Pearson Educación. Senn, J. (1990). Análisis y Diseño de Sistemas de Información. 2° Ed. España: McGraw Hill. Sistemasumma. Recuperado (2017). Sistemas y Teoria 10 General de febrero, Sistemas. 2020, de https://sistemasumma.com/2011/11/03/sistemas-y-teoria-general-desistemas/ StudentPlace. (2018). Metodología de Desarrollo de Software. Recuperado 8 febrero, 2020, de https://studentplace98.blogspot.com/2018/09/metodologia-de-desarrollo-desoftware.html