¿Cuál es el ciclo de vida de un desarrollo web? ¿Cuáles son algunos ejemplos?

El uso de un paradigma particular de ingeniería de software para un proyecto a menudo está determinado por diferentes factores comerciales y técnicos, así como por la naturaleza de los datos y los formatos de datos que procesará la aplicación. Por lo tanto, los datos manejados por una aplicación pueden estar semiestructurados, es decir, si el formato se ajusta a los datos basados ​​en tablas en un RDBMS o documentos XML como RSS y Atom, o si es contenido multimedia no estructurado, por ejemplo, imágenes, audio y video. producido por las redes sociales que generalmente no siguen un esquema explícito.

Aunque muchos de los aspectos de la ingeniería de software tradicional se utilizan en el desarrollo de aplicaciones web, en los últimos años se ha diferenciado el proceso de ingeniería web de la ingeniería de software clásica. Deshpande y col. [1] enumeró dieciséis “Grandes diferencias entre las aplicaciones web y el software convencional”: enumeramos a continuación varias de estas diferencias:

  • El uso de “equipos pequeños” y “cronogramas de desarrollo comprimido”.
  • Donde “” el contenido es el rey “, es decir, está integrado de manera indisoluble con el procesamiento de procedimientos”.
  • Una “comprensión de las disciplinas adicionales requeridas para aplicaciones web, como hipertexto, diseño gráfico, arquitectura de la información”.
  • Los “estándares en evolución a los que las aplicaciones web deben o deben cumplir, dependiendo de las circunstancias específicas”.
  • “Entorno de implementación en rápida evolución, que abarca varias plataformas de hardware”.

Además, Ginige y Murugesan [2] distinguieron el desarrollo web del desarrollo de software tradicional, es decir, donde “el rápido crecimiento de los requisitos de los sistemas basados ​​en la web y el cambio continuo de su contenido de información”. Ginige y Murugesan escribieron además que “la escalabilidad y la mantenibilidad” deben estar presentes desde el principio. Las aplicaciones web también deben acomodar a “diferentes partes interesadas”, desde la planificación y la gestión, pasando por el mantenimiento, hasta las personas involucradas con los elementos de una aplicación, por ejemplo, los diferentes roles del diseñador de páginas web y el desarrollador de aplicaciones.

Ginige y Murugesan también discutieron la naturaleza “evolutiva” del desarrollo de aplicaciones web porque “no es posible especificar completamente lo que deberían o contendrían al comienzo de su desarrollo, porque su estructura y funcionalidad evolucionarán con el tiempo”. Por lo tanto, este ciclo de desarrollo iterativo consta de “muchas fases, pasos y actividades”.

Estas “fases, pasos y actividades” no se llevan a cabo en una secuencia fija y consecutiva como las del modelo clásico de desarrollo de software Waterfall. Más bien, hay ciclos de desarrollo en los que cada uno de estos resultados genera un incremento . Por lo tanto, con referencia al diagrama siguiente del ciclo de desarrollo para una aplicación web convencional (reproducida de [2]), durante la vida útil de la aplicación, cada incremento iterará desde el mantenimiento del sitio web hasta las fases anteriores ilustradas, es decir, esto explica lo permanente estado de versión beta de gran parte del desarrollo web Web 2.0 , desarrollo rápido de aplicaciones (RAD) y ágil .

Ginige y Murugesan resumen las etapas básicas anteriores de la siguiente manera:

  • Análisis de contexto: donde determinamos y entendemos los objetivos principales del sistema, los requisitos funcionales y de otro tipo. Se recopila información sobre el entorno y el funcionamiento de la aplicación, y se identifican las partes interesadas. El resultado es un conjunto de requisitos que influirán en el diseño de la aplicación web.
  • Modelo de producto: donde se definen las relaciones entre los diversos componentes del sistema. La arquitectura del sistema se centrará en el hardware, la arquitectura de la aplicación se referirá a la funcionalidad requerida, mientras que la arquitectura del software identificará formas alternativas de implementar la arquitectura de la aplicación. A partir de esto, se construirá un modelo de la aplicación web en función de los requisitos determinados a partir de
  • Modelo de proceso: pone en paralelo el modelo del producto y define las actividades necesarias para implementar el sistema. Estas actividades, que implicarán un enlace frecuente con las partes interesadas, incluyen análisis de requisitos, diseño, pruebas y despliegue, y pueden descomponerse en sub-actividades.
  • Plan del proyecto: gestión del proyecto y programación del desarrollo.
  • Desarrollo del sitio web: el desarrollo del software de aplicación requerido para entregar el contenido y la funcionalidad. Junto con esto, las pruebas de hardware y la integración deben llevarse a cabo para cumplir con los requisitos de rendimiento y seguridad.
  • Mantenimiento del sitio web: en relación con el mantenimiento del contenido de la aplicación, el software y el hardware necesarios después de la implementación de la aplicación.

Además de estas fases, Ginige y Murugesan también escribieron que la gestión de proyectos garantiza “que todos los procesos y actividades clave funcionen en armonía”. Además, la gestión de proyectos, el control de calidad y la documentación se “extienden a lo largo del ciclo de desarrollo web”.

Este ciclo básico continúa hasta nuestros días, independientemente de los tipos de aplicaciones web desarrolladas, es decir, si son comunidades informativas, interactivas, transaccionales, en línea, servicios web, etc.

Muy a menudo, una versión del patrón de diseño modelo-vista-controlador (MVC) también se empleará durante el desarrollo, posiblemente con un marco como Spring o Hibernate, Struts, etc., para dividir la arquitectura de una aplicación web en componentes distintos, es decir, el modelo maneja los datos del dominio de la aplicación web a través de objetos comerciales, los usuarios ven la vista en un navegador a través de HTML, y el controlador gestiona el flujo de la aplicación web al recibir solicitudes del usuario, interactuar con el modelo y devolver respuestas a través del ver.

[1] Y. Deshpande, S. Murugesan, A. Ginige, S. Hansen, D. Schwabe, M. Gaedke y B. White. INGENIERÍA WEB. Journal of Web Engineering, 1 (1): 3-17, octubre de 2002.

[2] A. Ginige y S. Murugesan. Ingeniería web: una metodología para desarrollar aplicaciones web escalables y mantenibles. Cutter IT Journal, 14 (7): 24-35, julio de 2001.