Para dar una respuesta académica a su pregunta: la medida clásica del desarrollo de software es el modelo en cascada, atribuido a Bell y Thayer [1] y Royce [2]. Este modelo tiene una secuencia lineal de pasos, cada uno con su propio conjunto de objetivos, y el desarrollo fluye como una cascada a medida que los pasos avanzan desde las tareas iniciales de ingeniería que definen la aplicación y los requisitos del usuario, las partes interesadas, etc., y culminan en la etapa de mantenimiento de la vida operación, como puede ver a continuación [3]:
El modelo en cascada también tiene sus variaciones, pero no está restringido a ninguna herramienta de administración de software en particular. Más recientemente, los modelos de desarrollo de software, especialmente en lo que respecta a las aplicaciones web, se conocen como “espiral”, “ágil”, “creación rápida de prototipos”, etc. Todos estos incluyen un subconjunto de las etapas del modelo de cascada, pero son más incrementales cuando un ciclo de desarrollo iterativo consiste, según lo definido por Ginige y Murugesan [4], de “muchas fases, pasos y actividades”, que no se llevan a cabo en una secuencia fija y consecutiva como las del modelo en cascada. Esto se debe al “rápido crecimiento de los requisitos de los sistemas basados en la Web y al cambio continuo de su contenido de información” [4] y explica el estado permanente de la versión beta de muchos Desarrollo web 2.0 web.
- Soy desarrollador web líder de PHP con 6 años de experiencia, ya que agregar a la Web ¿será el desarrollo móvil una buena opción para el crecimiento profesional o el marketing digital?
- ¿Es posible construir una aplicación sin codificación?
- ¿Qué programas de computadora usan los diseñadores de aplicaciones móviles?
- Cómo ganar dinero con las aplicaciones de Android
- ¿Cómo escribiría una función para calcular todos los vectores de asignación posibles de 2n usuarios, donde n usuarios se asignan al grupo 0 (control) yn usuarios se asignan al grupo 1 (tratamiento)?
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. [5] enumeró dieciséis “Grandes diferencias entre las aplicaciones web y el software convencional”: varias de estas diferencias se enumeran a continuación:
- 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 [4] 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 [4]), 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 .
Las etapas básicas anteriores se resumen por Ginige y Murugesan [4] 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 [4] 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 de modelo-vista-controlador (MVC) también se empleará durante el desarrollo web, 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 de la vista.
Una tendencia contemporánea es el desarrollo en los marcos de microservicios donde la arquitectura de una aplicación web se divide en un conjunto de servicios, de la siguiente manera:
Donde cada servicio tiene un conjunto de responsabilidades estrecho y enfocado, y se exponen de forma independiente en forma de API accesibles a distancia, por ejemplo, REST, consumidas mediante protocolos como HTTP.
Un servicio de compras en línea podría tener microservicios separados para cuentas de usuario, catálogo de productos, mantenimiento del carrito de compras y procesamiento de pedidos.
Otra tendencia en el desarrollo web son las variaciones de MVC en los marcos de JavaScript para aplicaciones web como Node.JS, React y AngularJS, que usan AJAX y REST ampliamente.
[1]: TE Bell y TA Thayer. Requisitos de software: ¿son realmente un problema? En Actas de la 2da Conferencia Internacional sobre Ingeniería de Software (ICSE ’76), páginas 61-68, celebrada en San Francisco, CA, EE. UU., 1976
[2]: WW Royce. Gestión del desarrollo de grandes sistemas de software: conceptos y técnicas. En Actas de la novena Conferencia Internacional sobre Ingeniería de Software (ICSE ’87), páginas 328-338, Monterey, CA, EE. UU., 1987.
[3]: RS Pressman. Ingeniería de software: un enfoque profesional, adaptación europea. McGraw-Hill, Europa, Maidenhead, Berkshire, Inglaterra, Reino Unido, 3a edición, 1992. Adaptado por D. Ince.
[4]: 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.
[5] 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.