Descargar

Herramienta informática para el monitoreo de errores de las aplicaciones web


Partes: 1, 2, 3
Monografía destacada
  1. Introducción
  2. Fundamentación teórica
  3. Análisis y diseño
  4. Implementación y pruebas
  5. Conclusiones generales
  6. Recomendaciones
  7. Referencias bibliográficas
  8. Anexos

edu.red

"Sólo podemos ver poco del futuro, pero lo suficiente para darnos cuenta de que hay mucho que hacer."

Alan Turing

RESUMEN

Las aplicaciones web han alcanzado gran popularidad e importancia en los últimos años. Permiten el intercambio y consulta de información de los usuarios. La calidad con la que se brinda un servicio, es un factor clave mediante el cual una empresa puede ganar o perder clientes. La importancia de detectar errores a tiempo puede prevenir pérdida o adulteración de datos, el uso excesivo de recursos, incluso un mal funcionamiento de componentes de la aplicación.

La investigación que se presenta, aborda los principales aspectos que se desarrollaron con el fin de realizar la solución informática de una herramienta para el monitoreo de los errores en las aplicaciones web. Se realiza el estudio de las principales herramientas y tecnologías utilizadas en el proceso de creación de la solución. El documento de esta investigación, deja constancia de la metodología empleada la cual permitió cumplir el objetivo general propuesto y satisfacer las necesidades del cliente. Por último, se especifican las pruebas a las que fue sometida la solución elaborada, quedando demostrado que la misma cumple con la calidad y funcionalidades requeridas por el cliente.

Por el resultado alcanzado, la investigación se considera un aporte a la ciencia, debido a que auxilia a los desarrolladores que realizan el monitoreo de las aplicaciones web para el control de la calidad de las mismas.

Palabras claves: aplicaciones web, errores HTTP, monitoreo, servicio REST

Introducción

Las aplicaciones web han alcanzado gran popularidad e importancia en los últimos años. Permiten la consulta e intercambio de información de los usuarios, como también alta disponibilidad a partir de la posibilidad de ofrecer servicios desde múltiples localizaciones, lo cual asegura su continuidad. Puede contener además, elementos que permiten una comunicación activa entre el usuario y la información.

Luego del despliegue de las aplicaciones web, pueden presentarse errores o vulnerabilidades que no son depurados en el proceso de desarrollo. Corregirlos conlleva a una pérdida de tiempo, pues con frecuencia se desconoce cuándo ocurrió la excepción. Esto se debe entre otros factores a que no se poseen herramientas que permitan un monitoreo constante de los mismos. La importancia de detectar estos errores, previene la pérdida o adulteración de datos, el uso excesivo de recursos, mal funcionamiento de sus componentes y la aparición de errores inesperados provocados por ataques de denegación de servicio a través de software malicioso.

Es importante además, porque el uso de la Web cada día se extiende de forma vertiginosa a la mayoría de los ámbitos de la sociedad y la vida cotidiana. Es cada vez más utilizada para la información, el comercio y en especial en la educación a distancia. En este último aspecto su uso es dirigido fundamentalmente a apoyar el Proceso de Enseñanza y Aprendizaje (PEA), en el sentido de administrar, distribuir y controlar los procesos en línea, además de proporcionar funciones administrativas y de seguimiento necesarias para posibilitar y controlar el acceso a los contenidos, implementar recursos de comunicación y llevar a cabo el seguimiento de quienes utilizan la herramienta.

Cuba no está exenta del empleo de estas tecnologías para el desarrollo de software educativo, por lo que desarrolla los hiperentornos educativos o de aprendizaje como concepción pedagógica. La Universidad de las Ciencias Informáticas (UCI), específicamente el Centro de Tecnologías para la Formación (FORTES) perteneciente a la Facultad 4, desarrolla tecnologías que permiten ofrecer servicios y productos para la implementación de soluciones de formación, tanto para los niveles curriculares de la enseñanza inicial, media o preuniversitaria, así como tecnologías de formación a distancia y semi-presencial, utilizados mayormente en el nivel superior y de postgrado.

Muchos de estos productos se desarrollan sobre un marco de trabajo (framework) o un Sistema de Administración de Contenido (CMS por sus siglas del inglés Content Management System). En ambos casos se lleva un control de los errores, mediante eventos que se generan guardando la información del error en archivos de registro de sucesos HTTP (Protocolo de Transferencia de Hipertexto o Hypertext Transfer Protocol), o también conocidos como archivos log. En estos archivos se guarda toda la información referente a los eventos generados por las aplicaciones web, lo cual hace más engorroso el trabajo.

La realidad constata problemas de organización en el proceso de almacenamiento en los archivos de tipo log. De una parte no se puede mostrar, de forma clasificada, los errores que son guardados por cada evento en los archivos log de las aplicaciones web. De otra, se necesita de la presencia de los administradores en el servidor para poder acceder a ellos. Además, los desarrolladores para poder llevar el control de los errores, necesitan otras informaciones que faciliten el control y servir de ayuda para descartar cualquier problema de compatibilidad que exista en la aplicación, sin embargo, tampoco son guardadas en este tipo de archivo. Se destacan los datos del usuario que generó el error, navegador web, sistema operativo, entre otros.

En el centro FORTES, los mecanismos existentes no son suficientes para lograr agilidad por el equipo de desarrollo en el entendimiento de las excepciones lanzadas por las distintas aplicaciones, pues al no ser guardadas en las bases de datos no se cuenta con un registro histórico de los mismos. Otra deficiencia encontrada, es que los reportes enviados se encuentran en distintos formatos lo que dificulta el proceso de unificación del contenido de los errores.

Las insuficiencias mencionadas indican que se está en presencia del siguiente Problema a resolver: ¿Cómo mostrar a los desarrolladores los errores que se generan en las aplicaciones web del centro FORTES para facilitar su solución?

Teniendo como objetivo general: Desarrollar una herramienta informática que permita mostrar de forma automática a los desarrolladores del centro FORTES los errores que generan las aplicaciones web y facilitar así su solución.

La parte de la ciencia que será objeto de estudio es los procesos de monitorización de las aplicaciones web.

Definiéndose como campo de acción las herramientas para el monitoreo y gestión de errores en las aplicaciones web desarrolladas en el centro FORTES.

Teniendo como objetivos específicos:

  • Fundamentar la teoría y metodología que soporta la investigación.

  • Realizar el análisis y el diseño de la solución de software propuesta.

  • Implementar la solución propuesta para el monitoreo de errores en las aplicaciones web.

Las insuficiencias señaladas en la monitorización de errores en las aplicaciones web del centro FORTES, indican una idea a defender y no una hipótesis a demostrar, que parte de la idea de que si se desarrolla una herramienta capaz de centralizar la información referente a los errores en las aplicaciones web desarrolladas en el centro FORTES, permitirá a los desarrolladores tener un mejor control de los mismos.

Posibles resultados:

  • Documentación de acuerdo a la metodología de desarrollo de software seleccionada.

  • Una herramienta que sea configurable, con el fin de realizar la vigilancia, visualización y seguimiento de errores en las aplicaciones web, que permita generar reportes estadísticos sobre los mismos y facilitar la toma de decisiones al respecto.

Tareas a cumplir:

  • 1. Elaboración de los diseños teóricos y metodológicos de la investigación.

  • 2. Realización de análisis críticos y valorativos de los sistemas informáticos que realizan tareas de monitorización web.

  • 3. Evaluación de las herramientas o componentes que se utilizarán para el análisis y diseño del sistema.

  • 4. Definición de la arquitectura para el desarrollo de la herramienta para el monitoreo de aplicaciones web.

  • 5. Identificación y descripción de los aspectos funcionales del software.

  • 6. Especificación de las estrategias de codificación, los estándares, estilos y métodos de validación a utilizar en el proceso de desarrollo.

  • 7. Implementación de las funcionalidades definidas en los aspectos funcionales del software. Los métodos de investigación que soportan la investigación son la combinación dialéctica de métodos teóricos y empíricos. Entre los primeros se emplearon el Histórico-Lógico, para la realización del estudio del estado del arte de los estándares y sistemas que presentan soluciones similares, así como la evolución y desarrollo que han experimentado, las metodologías de desarrollo de software, marcos de trabajo, lenguajes y herramientas de desarrollo necesarias para cumplir el objetivo general propuesto.

Analítico-Sintético, para examinar las partes fundamentales relacionadas con el objeto de estudio, comprender su funcionamiento y complementarlo con su utilización en el campo de acción de la investigación.

Métodos empíricos:

La observación: se empleó para determinar la evolución de los procesos, en específico en las validaciones de las funcionalidades de la solución. Se apoyó en las técnicas de recopilación de información: cuestionario y entrevista de tipo no estructurada.

Además de los métodos científicos anteriormente expuestos también se utilizó: El criterio de expertos: permitió obtener opiniones entre diferentes expertos para verificar que los reportes generados por la herramienta de monitoreo de errores, basado en los reportes de las excepciones lanzadas por las Aplicaciones del centro FORTES permiten apoyar la toma de decisiones.

Estructuración del trabajo de diploma

El primer capítulo describe la fundamentación teórica de dicha investigación, el cual incluye un estudio del estado del arte del tema. Se explican y justifican las tendencias, tecnologías y herramientas en las que se apoya la solución al problema. Posteriormente se incluye un capítulo que describe el proceso de análisis y diseño, el cual comienza con la descripción, priorización y planificación de las historias de usuario que describen las funcionalidades a implementar, pasando luego a detallar la arquitectura de la solución y sus principales características. Por último aparece un tercer capítulo donde se describen las fases de implementación y pruebas, se comienza con la descripción de los componentes de terceros utilizados en la solución. Se implementan todas las funcionalidades identificadas, logrando un sistema que satisface las principales necesidades del cliente. Se detallan también las pruebas que se le realizaron al sistema, con el objetivo de asegurar la calidad y eficiencia de la solución. Seguidamente se encuentran las referencias bibliográficas y la bibliografía que están formadas por documentos y artículos de interés para los autores de la investigación y se concluye con los Anexos donde se agregan algunos artefactos generados en el transcurso del desarrollo de la solución.

Capítulo 1

Fundamentación teórica

Los sistemas de gestión de aprendizaje amplían el espacio y el tiempo de la clase ya que facilitan el acceso a lecturas, ejercicios y material educativo, el envío de tareas y trabajos y la comunicación sincrónica o asincrónica entre estudiantes y profesores. En varias ocasiones sucede que posterior a su despliegue, son detectados errores que dificultan su solución y trasciende en otras consecuencias relacionadas con el plan de negocio de un proyecto.

Desarrollar una herramienta informática para su solución significa, ante todo, realizar un levantamiento de experiencias anteriores tanto fuera, como dentro de Cuba, así como examinar los elementos que permitan su desarrollo. Es el objetivo que se propone este capítulo, dividido en cinco epígrafes y sub-epígrafes.

Conceptos asociados al dominio del problema

Los conceptos asociados al dominio del problema esclarecen el significado que para la investigación que se realiza tienen todas las categorías y términos fundamentales empleados en el planteamiento del problema y el objetivo general. Su definición conceptual se corresponde con la idea que sustenta el investigador. En este sentido, se puntualiza el significado del término Tecnologías de la Información y las Comunicaciones (TIC), software educativo, hiperentornos de aprendizaje y errores HTTP.

Tecnologías de la Información y las Comunicaciones

A partir de la bibliografía consultada se estudiaron varios conceptos sobre las TIC, uno de los más completo es el del autor A. M. Cabrera que define las TIC como "…el conjunto de procesos y productos derivados de las nuevas herramientas (hardware y software), soportes de la información y canales de comunicación relacionados con el almacenamiento, procesamiento y transmisión digitalizados de los datos" (1).

Del estudio realizado por Cabrera, sobre las características de las TIC, se resumen las siguientes:

  • Inmaterialidad, ya que su materia prima es la información, e información en múltiples códigos y formas: visuales, auditivas, audiovisuales, textuales y de datos.

  • Interconexión, aunque suelen presentarse de forma independiente, ofrece grandes posibilidades para que puedan combinarse y ampliar de esta forma sus potencialidades y extensiones.

  • Interactividad, es una de las características que le permiten adquirir un sentido pleno en el terreno de la formación, permite una interacción sujeto-máquina y la adaptación de esta a las características educativas y cognitivas de la persona, facilitando de esta forma que los sujetos no sean meros receptores pasivos de información sino procesadores activos y conscientes de la misma.

  • La instantaneidad, facilita la rapidez al acceso e intercambio de información, rompiendo las barreras espacio temporales que han influido durante bastante tiempo en la organización de actividades formativas.

  • Su mayor influencia sobre los procesos que sobre los productos.

  • La creación de nuevos lenguajes expresivos que permiten nuevas realidades expresivas como es el caso de los multimedia e hipertextos, que al mismo tiempo llevarán a la necesidad de adquirir nuevos dominios alfabéticos y la posibilidad de la interconexión de las mismas.

  • La tendencia progresiva a la automatización, es decir, a la realización de sus actividades controladas desde dentro del propio sistema (1).

  • Software educativo

Varios autores hacen alusión al tema del software educativo. No obstante se asume el definido por Sonia Morejón que lo considera como: "…cualquier programa computacional cuyas características estructurales y funcionales sirvan de apoyo al proceso de enseñar – aprender y administrar" (2).

De igual forma, Sonia identifica las características del software educativo, las que se pueden resumir en la idea de que propicia la creación de un contexto adecuado para la construcción y transmisión de conocimiento en el momento que se integran en el proceso educativo propicio. Su evolución a través de la historia ha aportado cada vez más prestaciones y facilidades al proceso educativo.

Hiperentornos de aprendizaje

El método de síntesis permitió puntualizar el término hiperentornos de aprendizaje, definido en estos estudios como, sistemas informáticos basados en tecnologías hipermedia y que contienen una mezcla de elementos representativos de diversas tipologías de software educativo. Es una "mezcla de tutoriales, entrenadores simuladores, juegos y evaluadores o como: tutoriales, tutoriales inteligentes, sistemas hipermedias, simulaciones y micro-mundos" (2).

Errores en aplicaciones web

Según el estudio bibliográfico realizado en internet1 sobre el protocolo de transferencia de hipertexto, o HTTP, se define que es el protocolo usado en cada transacción de la World Wide Web (www) y administrado por el Consorcio World Wide Web Consortium (W3C).

edu.red

1 http://www.hasheado.com/

Uno de los aspectos fundamentales del HTTP es el permitir a los navegadores obtener información en un formato simple (HTML, siglas del inglés HyperText Markup Language) de un servidor. Sin embargo, para poder desplegar esta información, el navegador o el cliente necesitan saber qué

tipo de información es la que va a recibir, si una imagen, un texto, un documento de alguna aplicación, etc. También necesita saber si va a recibir la información, o si hubo algún error durante la realización del proceso. Para esto, el protocolo HTTP cuenta con ciertos códigos de respuesta estándar.

Hay varios tipos de respuesta:

  • "Un código de respuesta 1xx Informacional. Se recibe la petición y se continúa con el proceso. Los códigos en este rango indican respuestas provisionales. Los servidores web no deben enviar mensajes 1xx al cliente HTTP excepto bajo condiciones experimentales.

  • Un código de respuesta 2xx Éxito. Esta clase de códigos indican que la petición del cliente fue recibida, entendida, aceptada y procesada exitosamente.

  • Un código de respuesta 3xx Redireccionamiento2. Para estos códigos el cliente debe realizar acciones adicionales para completar la petición. La acción requerida debe ser portada por el agente de usuario sin la interacción del usuario si y solo si el método usado en la segunda petición es de tipo GET o HEAD. El agente de usuario no debería redireccionar automáticamente más de 5 veces, sino se considera un bucle infinito.

  • Un código de respuesta 4xx Error en el Cliente. Indica que hubo un error del lado del cliente.

  • Un código de respuesta 5xx Errores de Servidor. Indica que el error fue del lado del servidor"

(3).

Estudio comparativo de herramientas con soluciones similares

Luego de un estudio parcial de las herramientas usadas en internet para conocer el tráfico de una página y que una empresa pueda mediante estas, llevar las tareas de monitoreo sobre los mismos, a continuación se presenta un análisis de las herramientas más usadas para realizar este proceso3:

Compete

Con el servicio de www.compete.com se puede realizar un análisis exhaustivo de la competencia. Con esta herramienta se puede encontrar puntualmente el tráfico de la página de una empresa y el de los competidores para realizar exhaustivas comparaciones. Compete tomar en cuenta las estadísticas del tráfico en la red para realizar los análisis de forma gráfica mostrando visualmente los datos.

Este servicio se considera una buena referencia para el mercadeo en internet, ya que brinda un análisis de los mercados principales, palabras claves y los portales en la web.

edu.red

2 Redireccionar: acceder a una determinada dirección mediante otra. http://tecnologia.glosario.net/terminos-viricos/redireccionar-9828.html 3 Para mayor información consultar el "AlmacenPlantillasWeb", en

http://almacenplantillasweb.es/herramientas/herramientas-seo/herramientas-para-anlisis-del-trafico-de- una-web/.

Entre los análisis que realiza se encuentra: hacer una comparación numérica de los sitios, análisis del comportamiento y mantener un seguimiento.

Compete ofrece además una gráfica de análisis de páginas web con mayor índice de visitas. Se puede observar en una gráfica por periodo de tiempo y en el tiempo total que los usuarios permanecieron durante su visita (4).

Alexa

Alexa es un medidor que provee información histórica del tráfico de una web o la cantidad de visitas que recibe. Presenta estadísticas de qué países generan más tráfico y de qué países provienen los usuarios de ese sitio web.

La información que presenta Alexa acerca de una web son: la imagen de la portada de un sitio web, el rango de tráfico de la página, páginas que visitan las mismas personas que acceden a la página actual, velocidad del servidor, etc.

Alexa también calcula el tráfico de los sitios, los clasifica en atención a su importancia y determina su posición en el ranking mundial (5).

Site24x7

Site24x7 es una herramienta para monitorear sitios web, pero además ofrece otras ventajas, por ejemplo:

  • Es una herramienta totalmente gratis.

  • Monitorea transacciones de una web, almacenando la secuencia de peticiones http (tanto métodos post como get).

  • Monitorea si se ha sido víctima de un ataque de desfiguración (ataque para desfigurar o dañar las páginas del sitio).

  • Monitoreo continuo en intervalos desde 5 minutos hasta 24 horas (6). Además de otras características.

Netvibes

Es un servicio web que actúa a modo de escritorio virtual personalizado, similar a la Página Principal Personalizada de Google (iGoogle), MSN Live.

Visualmente está organizada en solapas o pestañas (tabs), donde cada solapa por lo general es en sí un para agregar diversos módulos y widgets desplazables previamente definidos por el usuario. Estos módulos, a su vez, actúan como pequeñas ventanas cuyo contenido es generado por otro servicio web o ser mini-aplicaciones.

Desde el punto de vista comercial, están los llamados Universos, que son páginas creadas principalmente por empresas o grupos musicales y en que se muestran diversas fuentes web, imágenes y otros materiales relacionados con el creador (7).

OpManager

Características del monitoreo de URL de OpManager:

  • "Monitoreo de URL, hosts virtuales y la Intranet.

  • OpManager revisa las URLs para asegurar que tengan acceso y estén sirviendo páginas, esta es una forma más fiable de monitoreo de sitios web que dependen de pings ICMP (Protocolo de Mensajes de Control de Internet, por sus siglas en inglés de Internet Control Message Protocol) o chequeo de puertos TCP (Protocolo de Control de Transmisión, por sus siglas en inglés Transmission Control Protocol) en el puerto 80.

  • Monitorea todos sus sitios web públicos, así como la disponibilidad y el buen estado de las aplicaciones basadas en Web y que se encuentren en su Intranet.

  • OpManager proporciona también las tendencias de la disponibilidad y del rendimiento de su sitio web" (8).

El análisis de las soluciones similares permitió observar algunas fortalezas que pueden ser reutilizadas de desarrollo como son: el uso de servicio web y la vista de los datos obtenidos del proceso de monitoreo. Independientemente de las características que con anterioridad han sido expuestas, ninguna de ellas cumple con los requerimientos que dan solución al problema de la investigación que se presenta en estos estudios. Entre otros motivos porque todas tienen una tarea en común que consiste en el monitoreo del tráfico de la red, sin embargo lo que se necesita es el monitoreo de los errores. Esta conclusión es la que condiciona que el autor se proponga el desarrollo del objetivo general propuesto.

1.3 Metodología de desarrollo de software

El empleo de una metodología durante el desarrollo de un software, le confiere a este y a la investigación que se le asocia, transparencia y calidad, elementos muy perseguidos por el cliente y necesarios para el producto.

La aplicación correcta de una metodología ayuda a mejorar el tiempo de desarrollo del software; definir con exactitud el personal que requiere el proyecto, las herramientas a utilizar, conocimientos concretos sobre el problema a resolver, entre otros aspectos que deben ser chequeados y controlados.

El análisis de la bibliografía consultada, muestra que existen dos tipos de metodologías: ágiles y tradicionales, dejando al equipo de desarrollo de un producto, tomar la decisión de cuál es la que más se ajusta a sus características.

Las metodologías pueden ser tradicionales o pesadas, que según la filosofía de desarrollo son las que hacen mayor énfasis en la planificación y control del proyecto, y necesitan de una especificación precisa de aspectos funcionales y modelado.

Las metodologías tradicionales imponen una disciplina de trabajo sobre el proceso de desarrollo del software, con el fin de conseguir un software más eficiente. Para ello, se hace énfasis en la planificación total de todo el trabajo a realizar y una vez que está todo detallado, comienza el ciclo de desarrollo del producto. Se centran especialmente en el control del proceso, mediante una rigurosa definición de roles, actividades, artefactos, herramientas y notaciones para el modelado y documentación detallada. Además, las metodologías tradicionales no se adaptan adecuadamente a los cambios, por lo que no son métodos adecuados cuando se trabaja en un entorno, donde los requisitos no pueden predecirse o bien pueden variar.

Según autores consultados en la Ecured plantean que las metodologías ágiles se encargan de valorar al individuo y promover las iteraciones del equipo más que a las herramientas o los procesos utilizados. Plantean además, que se hace mucho más importante crear un producto de software que funcione, que escribir mucha documentación (9). Esta metodología propone que el cliente esté en todo momento colaborando en el proyecto. A diferencia de otras metodologías es más importante la capacidad de respuesta ante un cambio realizado, que el seguimiento estricto de un plan (10).

Por los recursos, el personal y tiempo para realizar el trabajo se opta por usar una metodología ágil. Aunque los creadores e impulsores de las metodologías ágiles más populares han suscrito el manifiesto ágil y coinciden con los principios enunciados anteriormente, cada metodología tiene características propias y hace hincapié en algunos aspectos más específicos.

En lo adelante se profundizará en las metodologías SCRUM4 y Programación Extrema (XP) por ser metodologías ágiles que se basan en el trabajo orientado directamente al objetivo.

  • 1. SCRUM.

  • 2. Extreme Programming.

Scrum

En artículo publicado por Mike Cohen define Scrum como un marco para la gestión de proyectos (11). Está especialmente indicada para proyectos con un rápido cambio de requisitos. Sus principales características se pueden resumir en dos: el desarrollo de software se realiza mediante iteraciones, denominadas sprints, con una duración de 30 días, donde el resultado de cada sprint es un incremento ejecutable que se muestra al cliente; la segunda característica son las reuniones a lo largo del proyecto, entre ellas destaca la reunión diaria de 15 minutos del equipo de desarrollo para coordinación e integración (12).

edu.red

4 SCRUM: Término en rugby, que hace referencia a como se devuelve un balón que ha salido fuera del campo, al terreno de juego de una manera colectiva, la traducción al castellano sería melé.

edu.red

Figura 1.1 Ciclo de vida de la metodología SCRUM

Según Palacios es posible identificar tres fases durante el ciclo de vida en SCRUM: 1) planificación del sprint, 2) seguimiento del sprint, y 3) revisión del sprint. Estas fases pueden encontrarse como: fase antes del juego, fase del juego o desarrollo, fase después del juego (13). Dentro de los principios de SCRUM, se pueden mencionar:

  • Los equipos son auto-gestionados.

  • Se realizan reuniones diarias en las que los miembros del equipo se plantean 3 cuestiones:

¿Qué has hecho desde la última revisión?

¿Qué obstáculos te impiden cumplir la meta?

¿Qué vas a hacer antes de la próxima reunión?

  • Las iteraciones de desarrollo tienen una frecuencia inferior a un mes, al final de las cuales se presenta el resultado a los externos del equipo de desarrollo, y se realiza una planificación de la siguiente iteración, guiada por el cliente (14).

Sin embargo requiere confiar responsabilidades al equipo, incluso permite fallar si es necesario, además los miembros del equipo de trabajo programan de forma individual.

Esta metodología es apropiada para entornos ligeros donde se tiene una útil realimentación de los usuarios, en cada iteración se definen cuáles son los objetivos de la siguiente, tiene una planificación más transparente para los clientes al estar diseñada para el cambio.

XP

La literatura constata varias definiciones de esta metodología. Programación Extrema (XP por sus siglas del inglés eXtreme Programming), es definida por varios actores, el desarrollo de esta investigación se guío por los conceptos definidos por el autor Ian Sommerville que especifica:

XP es posiblemente el método ágil más conocido y ampliamente utilizado. El nombre fue acuñado por Beck (15), debido a que el enfoque fue desarrollado utilizando buenas prácticas reconocidas, como el desarrollo iterativo, y con la participación del cliente en niveles extremos.

En la programación extrema todos los requerimientos se expresan como escenarios llamados historias de usuario los cuales se implementan directamente como una serie de tareas. Los programadores trabajan en parejas y desarrollan pruebas para cada tarea antes de escribir el código. Todas las pruebas se deben ejecutar satisfactoriamente cuando el código nuevo se integre al sistema. Existe un pequeño espacio de tiempo entre las entregas del sistema (16).

La programación extrema implica varias prácticas que se ajustan a los principios de los métodos ágiles5:

  • El desarrollo incremental, se lleva a cabo a través de entregas del sistema, pequeñas y frecuentes, y por medio de un enfoque para la descripción de requerimientos basados en las historias de cliente o escenarios que pueden ser la base para el proceso de planificación.

  • La participación del cliente se lleva a cabo a través del compromiso a tiempo completo del cliente en el equipo de desarrollo. Los representantes de los clientes participan en el desarrollo y son los responsables de definir las pruebas de aceptación del sistema.

  • El interés en las personas, en vez de en los procesos, se lleva a cabo a través de la programación en parejas, la propiedad colectiva del código del sistema, y un proceso de desarrollo sostenible que no implique excesivas jornadas de trabajo.

  • El cambio se lleva a cabo a través de las entregas regulares del sistema, un desarrollo previamente probado y la integración continua.

  • El mantenimiento de la simplicidad se lleva a cabo a través de la refactorización constante para mejorar la calidad del código y la utilización de diseños sencillos que no prevén cambios futuros en el sistema (17).

Personas que intervienen en la metodología XP:

En un proceso XP, los clientes están fuertemente implicados en la especificación y establecimiento de prioridades de los requerimientos del sistema.

Los requerimientos no se especifican como una lista de funciones requeridas del sistema. Más bien, los clientes del sistema son parte del equipo de desarrollo y discuten escenarios con otros miembros del equipo. Desarrollan conjuntamente una tarjeta de historia que recoge las necesidades del cliente. El equipo de desarrollo intentará entonces implementar ese escenario en una entrega futura del software.

edu.red

5 La descripción del análisis de la metodología XP se basó fundamentalmente en (17).

La participación del cliente se lleva a cabo a través del compromiso a tiempo completo del cliente en el equipo de desarrollo. Los representantes de los clientes participan en el desarrollo y son los responsables de definir las pruebas de aceptación del sistema.

edu.red

Figura 1.1 Principales elementos de la metodología XP

Los pasos de la metodología XP:

  • Planificación incremental.

Los desarrolladores dividen estas historias en tareas de desarrollo.

  • Entregas pequeñas.

  • Diseño sencillo.

  • Desarrollo previamente probado.

  • Refactorización.

Esto conserva el código sencillo y fácil de mantener.

  • Programación en parejas.

  • Propiedad colectiva.

  • Integración continua.

Después de la integración, se deben pasar al sistema todas las pruebas de unidad.

  • Ritmo sostenible.

  • Cliente presente.

El ciclo de vida ideal de XP consiste de seis fases, las mismas son (12):

Exploración: en esta etapa los clientes escriben las Historias de Usuario (HU) que quieren que sean incluidas en la aplicación, que describen las funcionalidades que serán añadidas al sistema. Planificación (Release): se establece la prioridad de las HU y se acuerda el contenido de la primera entrega del proyecto, así como su estimación temporal.

Iteraciones: durante esta fase se decide cuáles serán las historias que se desarrollarán en cada iteración, así como las pruebas funcionales ejecutadas al final de cada iteración.

Producción: en esta fase se llevan a cabo un conjunto de pruebas extras, de rendimiento y funcionamiento que son necesarias antes de entregar el producto.

Mantenimiento: una vez sea liberada la primera versión a los usuarios, el sistema se debe mantener en el entorno de producción siempre y cuando aún hayan iteraciones en fase de producción.

Cierre del proyecto o Muerte del Proyecto: cuando ya no hay más HU que deban ser implementadas, las necesidades del cliente han sido satisfechas, así como la documentación (17).

edu.red

Figura 1.2 Fases XP

Cosas que propone esta metodología:

  • Hay una comunicación frecuente entre el cliente y el equipo de desarrollo. El equipo técnico realiza una estimación del esfuerzo requerido para la implementación de las historias de usuario y los clientes deciden sobre el ámbito y tiempo de las entregas y de cada iteración.

  • Entregas pequeñas. Producir rápidamente versiones del sistema que sean operativas, aunque no cuenten con toda la funcionalidad del sistema. Esta versión ya constituye un resultado de valor para el negocio. Una entrega no debería tardar más de tres meses.

  • Integración continua. Cada pieza de código es integrada en el sistema una vez que esté lista. Así, el sistema puede llegar a ser integrado y construido varias veces en un mismo día.

  • Estándares de programación. XP enfatiza que la comunicación de los programadores es a través del código, con lo cual es indispensable que se sigan ciertos estándares de programación para mantener el código legible.

  • Se debe trabajar un máximo de 40 horas por semana. No se trabajan horas extras en dos semanas seguidas. Si esto ocurre, probablemente está ocurriendo un problema que debe corregirse. El trabajo extra desmotiva al equipo.

  • Disponibilidad del cliente. El cliente tiene que estar presente y disponible todo el tiempo para el equipo. Éste es uno de los principales factores de éxito del proyecto XP. El cliente conduce constantemente el trabajo hacia lo que aportará mayor valor de negocio y los programadores pueden resolver de manera inmediata cualquier duda asociada. La comunicación oral es más efectiva que la escrita (12).

Fundamentación de la metodología a utilizar

A partir del estudio realizado se decidió que la metodología XP es la óptima a utilizar, ya que está: empleada para proyectos de corto plazo, con un equipo de trabajo pequeño, propone una realimentación continua entre el cliente y el equipo de desarrollo, el modelo de 40 horas semanales que define para no trabajar horas extras y la propiedad colectiva del código.

Dada las condiciones, facilidades que brinda y la idea de desarrollo que se tiene de la solución, se acordó que sus características son las más asociadas al proyecto que se lleva a cabo durante el desarrollo de la presente investigación. Hace énfasis que la comunicación y satisfacción del cliente es lo principal.

Para una mejor estructuración del documento y un mejor entendimiento, se decide agrupar las seis fases en cuatro, sin violar el ciclo de vida de la metodología, estas fases son:

Fase I: Exploración Fase II: Planificación Fase III: Implementación Fase IV: Pruebas

Con la aplicación de las características antes mencionadas, se espera llevar a cabo un proceso de desarrollo que guíe los pasos hacia la construcción de un producto con calidad y que cumpla con los plazos de tiempo y alcance previstos.

Herramientas y tecnologías

La solución propuesta será integrada al módulo ZERA Support que está actualmente en desarrollo en La Plataforma Educativa ZERA, por lo que se consideró trabajar con las versiones actuales del ambiente de desarrollo existente.

Para dar inicio al desarrollo de la herramienta para el monitoreo de errores de las aplicaciones web en el Centro FORTES, la metodología seleccionada posibilitó realizar previamente un estudio riguroso y detallado de tecnologías, herramientas, lenguaje de modelado, framework, servidores web, gestores de bases de datos, lenguajes de desarrollo y servicios web definidas por el equipo de desarrollo del módulo "ZERA Support". Se priorizaron las herramientas y tecnologías de código abierto o pertenecientes al software libre, en las cuales el desarrollador tenga experiencias en su uso y que cuenten con una amplia documentación y comunidad de usuarios, aspectos importantes en la retroalimentación y rectificación de errores.

Para el desarrollo de la solución propuesta se utilizará:

Lenguaje de modelado

La bibliografía constata que el Lenguaje Unificado de Modelado (UML, por sus siglas en inglés, Unified Modeling Language) es el lenguaje de modelado de sistemas de software más conocido y utilizado en la actualidad; entre sus funciones se define que es un lenguaje gráfico para visualizar, especificar, construir y documentar un sistema. UML ofrece un estándar para describir el modelo de un sistema. UML cuenta con una gran variedad de propiedades entre las que se destacan:

  • Ampliamente utilizado por la industria.

  • Modela estructuras complejas.

  • Las estructuras más importantes que soportan tienen su fundamento en las tecnologías orientadas a objetos, tales como objetos, clase, componentes y nodos.

  • Comportamiento del sistema: casos de uso, diagramas de secuencia y de colaboraciones, que sirven para evaluar el estado de las máquinas.

UML se ha convertido ya en una de las mejores herramientas para el diseño y desarrollo de software fiable, eficiente y de calidad. Permite modelar sistemas de información, y su objetivo es lograr modelos que, además de describir con cierto grado de formalismo tales sistemas, puedan ser entendidos por los clientes o usuarios de aquello que se modela (18).

Herramienta CASE

Las herramientas CASE (Computer Aided Software Engineering, Ingeniería de Software Asistida por Computadora) son diversas aplicaciones informáticas destinadas a aumentar la productividad en el desarrollo de software reduciendo el costo de las mismas en términos de tiempo y de dinero. La evolución de las herramientas CASE está ligada a la evolución de la Ingeniería de Software como disciplina. El propósito de una herramienta CASE es dar soporte automatizado para la aplicación de todas o algunas técnicas usadas por una o varias metodologías (19). Algunas de estas herramientas son: Umbrello, Rational Rose, Visual Paradigm, Software Modeling entre otras.

Para modelar la propuesta de solución se hará uso de la herramienta Visual Paradigm en su versión 8.0. Esta herramienta CASE soporta los principales estándares de la industria tales como UML, la Notación para el Modelado de Procesos de Negocio (BPMN), entre otras especificaciones definidas por el grupo de estandarización OMG (Object Management Group). Además ofrece un completo conjunto de herramientas que facilitan a los desarrolladores la captura de requisitos, planificación de software, planificación de controles, el modelado de clases, modelado de datos, entre otros (19).

Está concebida para soportar el ciclo de vida completo del proceso de desarrollo del software. Dentro de sus características se destacan las siguientes.

  • Disponible para múltiples plataformas.

  • Posee capacidades de ingeniería directa e inversa.

  • Soporta aplicaciones web.

  • Partes: 1, 2, 3
Página siguiente