Modelos de ciclo de vida de desarrollo de software: elegir una forma de hacer las cosas

Publicado: 2021-10-05

La filosofía de “planifica tu trabajo y trabaja tu plan” ha demostrado su eficacia muchas veces en la historia. La planificación adecuada define el éxito de cualquier iniciativa seria, incluido el desarrollo de software. La industria del desarrollo de software ha ideado varios enfoques para satisfacer los requisitos comerciales.

El ciclo de vida del desarrollo de software o SDLC define la forma en que un producto cobra vida y se mantiene. Le ayuda a convertir las ideas creativas y los requisitos del mercado en funciones y características del producto.

En resumen, un modelo de ciclo de vida de desarrollo de software es una forma de hacer las cosas en términos de desarrollar un producto y convertirlo en un negocio.


Contenido:

  1. Modelos SDLC
  2. Modelo de cascada
  3. Modelo en forma de V
  4. Modelo Big Bang
  5. Modelo de prototipos
  6. Modelo iterativo e incremental
  7. Modelo RAD
  8. Modelo de desarrollo en espiral
  9. Modelo ágil

Modelos SDLC

Según el mercado, el contexto del proyecto y los requisitos comerciales, puede elegir un modelo de ciclo de vida de desarrollo de software establecido o crear el suyo propio.

Modelo de cascada

Modelo de cascada modelo SDLC

El primer modelo SDLC en la historia del desarrollo de software, Waterfall es el más simple. En el modelo Waterfall, el proceso de desarrollo es lineal. Las tareas y fases se completan una a una en un orden estricto. El progreso fluye constantemente hacia abajo, como el agua sobre una cascada.

Las fases tradicionales del modelo Waterfall son:

  1. Recopilación de requisitos
  2. Diseño
  3. Implementación
  4. Integración y prueba
  5. Despliegue
  6. Mantenimiento

El modelo Waterfall no permite volver a etapas anteriores de desarrollo para arreglar cosas o implementar cambios. Esto solo se puede hacer en la próxima iteración de Waterfall.

Ventajas:

  • Fácil de explicar al cliente y fácil de entender para el equipo.
  • Estructura obvia con etapas y actividades bien definidas.
  • Planificación y programación sencillas con hitos claros
  • Fases completadas una a la vez
  • Los errores y los errores son fáciles de verificar en cada etapa.
  • Cada etapa es fácil de analizar y evaluar
  • Procesos bien documentados

Desventajas:

  • Solo funciona con requisitos no flexibles
  • No se puede volver a las etapas completadas
  • Difícil de ajustar
  • El costo de desarrollo suele ser alto
  • Alto riesgo de errores y otros inconvenientes.
  • Difícil de medir el progreso durante las etapas

Ideal para proyectos con:

  • Requisitos estables y no ambiguos
  • Una clara definición y visión del producto.
  • Tecnologías conocidas y una pila tecnológica estable
  • Recursos suficientes para la implementación y el soporte
  • Un período de tiempo corto

Modelo en forma de V

Enfoque SDLC modelo en forma de V

También conocido como modelo V o modelo de verificación y validación , el modelo en forma de V es una extensión del enfoque Waterfall SDLC. Con el modelo V, el progreso no se mueve en línea recta, sino que aumenta después de la implementación y la codificación.

La planificación temprana de pruebas es típica de los proyectos SDLC del modelo V, que es la principal diferencia con respecto al modelo Waterfall. Cada etapa de desarrollo tiene una fase de prueba paralela, que ayuda a verificar y validar cada paso antes de pasar al siguiente.

Ventajas:

  • Fácil de usar y explicar
  • Entregables claros para cada fase, lo que significa una mayor disciplina
  • Mejores resultados que en el modelo Waterfall debido a las primeras pruebas
  • Verificación y validación claras en cada etapa
  • Seguimiento fluido de defectos, ya que los errores se encuentran en las primeras etapas
  • Seguimiento del progreso más fácil, al menos en comparación con el modelo Waterfall

Desventajas:

  • Poca flexibilidad sin soporte para iteraciones
  • Es difícil y costoso realizar ajustes debido a que no se gestionan eventos paralelos
  • Altos riesgos comerciales y de desarrollo
  • No hay prototipos iniciales disponibles
  • No hay una solución clara para los problemas detectados durante las pruebas.

Las fases del proyecto en el V-Model son las mismas que en Waterfall, pero con verificación y validación para cada fase mediante pruebas . Entonces, el V-Model es bueno para tipos de proyectos similares a Waterfall.

Modelo Big Bang

Modelo Big Bang SDLC

Este modelo de ciclo de vida de desarrollo de software normalmente no sigue ningún proceso o instrucción específicos.
El desarrollo comienza con los recursos y esfuerzos disponibles en el momento, con muy poca o ninguna planificación. Como resultado, el cliente obtiene un producto que puede que ni siquiera cumpla con los requisitos. Las funciones se implementan sobre la marcha.

La idea clave del modelo Big Bang SDLC es asignar todos los recursos disponibles al desarrollo del producto en sí, principalmente en términos de codificación, sin preocuparse por cumplir con los planes.

Ventajas:

  • Modelo dramáticamente simple
  • Casi no se necesita planificación
  • Sencillo de administrar
  • No requiere muchos recursos
  • Flexible para el equipo de desarrollo

Desventajas:

  • Alto riesgo e incertidumbre; Es posible que sea necesario rehacer todo el proyecto desde cero.
  • No se ajusta a proyectos complicados, a largo plazo u orientados a objetos
  • Alta probabilidad de desperdicio de recursos debido a requisitos inciertos

Mejor para:

  • Equipos pequeños o desarrolladores individuales
  • Proyectos académicos
  • Proyectos sin ciertos requisitos o fecha de lanzamiento prevista
  • Proyectos pequeños y repetitivos de bajo riesgo

Modelo de prototipos

Modelo de prototipos

El enfoque de Prototyping SDLC consiste en crear un prototipo funcional del producto de software con funcionalidad limitada y luego convertir rápidamente el prototipo en el producto completo. Es posible que el prototipo no contenga la lógica exacta del producto terminado.

Este enfoque del ciclo de vida del desarrollo de software es bueno para permitir que el consumidor visualice el producto. Recopilar y analizar los comentarios de los clientes ayuda al equipo de desarrollo a comprender mejor los requisitos del cliente en las primeras etapas del desarrollo.

Consulte este artículo para saber por qué los requisitos son importantes en la ingeniería de software.

La creación de prototipos también se valora porque implica menos iteraciones que el modelo Waterfall tradicional. Esto se debe a que las pruebas se realizan (y se realizan cambios) en el prototipo, no en el producto completamente desarrollado.

Por supuesto, la creación de un prototipo valioso requiere una comprensión básica del producto y los requisitos del mercado, especialmente en términos de la interfaz de usuario.

Con el modelo de creación de prototipos, los comentarios de los usuarios asumen el papel definitivo en la planificación del desarrollo posterior.

La creación de prototipos permite a los usuarios evaluar las propuestas de los desarrolladores para la funcionalidad adicional de las aplicaciones y probarlas antes de implementarlas.

Cada prototipo de este modelo SDLC suele cobrar vida en las siguientes fases :

  • Identificar los requisitos
  • Desarrollar el prototipo inicial
  • Revisar
  • Revisar y mejorar

Tan pronto como se completa el prototipo final, los requisitos del proyecto se consideran inalterables .

También hay varios tipos tradicionales de creación de prototipos:

  • Prototipos desechables : el equipo desarrolla varios prototipos diferentes y descarta los que son obviamente inaceptables. La funcionalidad útil de cada prototipo pasa a las siguientes fases de desarrollo.

  • Creación de prototipos evolutivos : el equipo muestra el prototipo a grupos focales de usuarios potenciales, recopila sus comentarios e implementa cambios a través de iteraciones hasta que se completa el producto final.

  • Creación de prototipos incrementales : el equipo crea varios prototipos y, finalmente, los fusiona en un solo diseño.

  • Prototipos extremos : el equipo crea un prototipo en tres partes: un prototipo estático, un prototipo de simulación de funcionalidad y un prototipo de servicios implementados. Este tipo de creación de prototipos se utiliza principalmente en el desarrollo de aplicaciones web.

Ventajas:

  • Mayor participación del usuario antes de la implementación del producto
  • Posibilidad de reducir el tiempo y los costos de desarrollo (en caso de un prototipo exitoso)
  • Mejor comprensión de la funcionalidad por parte de los usuarios a medida que participan en el proceso de desarrollo.
  • Detección temprana de defectos
  • Retroalimentación rápida
  • Analítica simple y valiosa

Desventajas:

  • Alto riesgo de análisis incompleto debido a la dependencia del prototipo
  • Los usuarios pueden considerar un prototipo como un producto terminado y permanecer insatisfechos
  • Riesgo de un alto costo de implementación del prototipo.
  • El desarrollo de varios prototipos puede llevar demasiadas iteraciones y, en consecuencia, demasiado tiempo.

Mejor para:

  • Utilizando en paralelo con cualquier otro modelo SDLC
  • Productos con muchas interacciones de usuario
  • Productos que deben ser aprobados por los usuarios en las primeras etapas

Modelo iterativo e incremental

Etapas del modelo del ciclo de vida del desarrollo de software iterativo e incremental

El modelo SDLC iterativo e incremental une un diseño iterativo y un flujo de trabajo con un modelo de construcción incremental. En este caso, el equipo desarrolla un producto en ciclos, construyendo piezas pequeñas de forma evolutiva .

El proceso de desarrollo comienza con la implementación simple de un conjunto pequeño y estrictamente limitado de requisitos del producto. Luego, el producto se mejora y se convierte en versiones más completas de sí mismo hasta que está completo y listo para su implementación. Cada iteración puede contener actualizaciones de diseño y nuevas funciones.

Una característica valiosa del modelo iterativo e incremental es que el desarrollo se puede iniciar sin conocer todos los requisitos . Este modelo contiene los pasos de otros modelos SDLC (recopilación, diseño, implementación y prueba de requisitos), pero a lo largo de varias compilaciones. El equipo de desarrollo aprovecha lo que se logró en versiones anteriores para mejorar la siguiente.

El modelo SDLC iterativo e incremental puede verse como un conjunto de modelos mini cascada o mini en forma de V.

Ventajas:

  • Produce valor comercial temprano, ya que se entrega un producto funcional con cada incremento.
  • Se puede hacer con recursos escasos.
  • Proporciona espacio para la flexibilidad
  • Permite un mayor enfoque en el valor del usuario
  • Funciona bien con desarrollo paralelo
  • Detecta problemas en etapas tempranas
  • Fácil de evaluar el progreso del desarrollo
  • Utiliza muchos comentarios de los clientes

Desventajas:

  • Requiere documentación pesada
  • Sigue un conjunto predefinido de fases
  • Los incrementos se definen por función y dependencias de características
  • Requiere más participación del usuario por parte de los desarrolladores que Waterfall u otros SDLC lineales
  • Puede resultar difícil integrar funciones entre iteraciones si no se planifican con anticipación
  • Pueden ocurrir problemas de arquitectura o diseño debido a requisitos incompletos en las primeras etapas
  • Complicado de manejar
  • Difícil de predecir el final del proyecto

Mejor para:

  • Proyectos complicados y de misión crítica como sistemas ERP
  • Proyectos con requisitos estrictos para el producto final pero con espacio para mejoras adicionales
  • Proyectos en los que se definen requisitos importantes, pero algunas funcionalidades pueden evolucionar o se pueden realizar mejoras.
  • Proyectos en los que la tecnología requerida es nueva y aún no se ha dominado o solo está planificada para una parte del producto
  • Productos con características de alto riesgo que es posible que deban cambiarse

Modelo RAD

Flujo del modelo RAD

El modelo de desarrollo rápido de aplicaciones (RAD) se basa en la creación de prototipos y el desarrollo iterativo sin una planificación específica. Con este modelo, la planificación pasa a un segundo plano frente a la creación rápida de prototipos.

Los datos primarios necesarios en el modelo RAD se recopilan a través de talleres, grupos focales y demostraciones de prototipos tempranos , así como mediante la reutilización de prototipos existentes.

Los módulos funcionales en el modelo de ciclo de vida de desarrollo de software RAD se desarrollan en paralelo como prototipos y se integran para entregar el producto completo rápidamente. Es probable que los prototipos desarrollados sean reutilizables.

El modelo RAD distribuye las fases de análisis, diseño, construcción y prueba en una serie de ciclos de desarrollo breves e iterativos.

Fases del modelo RAD:

  • Modelado de negocios: modela el flujo de información y la distribución de información entre varios canales comerciales. Esta parte es necesaria para encontrar información vital para el negocio y definir cómo se puede obtener, cómo y cuándo se procesa la información, y qué factores están impulsando el flujo de información exitoso.

  • Modelado de datos : los datos de la fase anterior se procesan para formar los conjuntos de datos necesarios con atributos identificados y establecidos.

  • Modelado de procesos : los conjuntos de datos de la etapa anterior se convierten en modelos de procesos para lograr los objetivos comerciales y se les proporcionan descripciones de procesos para agregar, eliminar, recuperar o modificar cada objeto de datos.

  • Generación de aplicaciones : el sistema se construye y la codificación se realiza mediante herramientas de automatización para convertir los modelos de datos y procesos en prototipos reales.

  • Pruebas y rotación : la mayoría de los prototipos se prueban de forma independiente durante cada iteración. Los desarrolladores solo prueban el flujo de datos y las interfaces entre todos los componentes durante esta fase.

Ventajas:

  • Puede adaptarse a los requisitos cambiantes
  • Progreso fácil de medir
  • Capacidad para reducir el tiempo de iteración con potentes herramientas RAD
  • Mejor productividad con menos miembros del equipo involucrados, en comparación con otros SDLC
  • Desarrollo más rápido
  • Mejor reutilización de componentes
  • Revisiones iniciales anteriores
  • Mayor oportunidad de obtener comentarios de los clientes

Desventajas:

  • Requiere equipos técnicos y de diseño sólidos
  • Solo válido para sistemas que se pueden modularizar
  • Mucha dependencia del modelado
  • Alto costo de modelado y generación de código automatizado
  • Manejo complicado
  • Solo apto para sistemas escalables y basados ​​en componentes
  • Se necesita mucha participación del usuario durante todo el ciclo de vida

Mejor para:

  • Sistemas modularizados entregados de manera incremental
  • Proyectos basados ​​en diseño con mucho modelado sólido
  • Proyectos con funcionalidad de generación de código automatizado
  • Proyectos con requisitos que cambian dinámicamente para los que se deben presentar pequeñas iteraciones cada 2 o 3 meses.

Modelo de desarrollo en espiral

Etapas del modelo de desarrollo en espiral

El modelo Spiral SDLC es una combinación de los enfoques de creación de prototipos y cascada . Se sincroniza bien con el proceso de desarrollo de software natural. El modelo Spiral presenta las mismas fases que Waterfall en el mismo orden (recopilación de requisitos, diseño, implementación y prueba), separadas por la planificación, la evaluación de riesgos y la construcción de prototipos y simulaciones durante cada paso.

Ventajas:

  • Las estimaciones (presupuesto, cronograma, etc.) se vuelven más realistas a medida que avanza el trabajo, ya que los problemas importantes se descubren antes
  • Participación temprana del equipo de desarrollo y los usuarios
  • Mayor calidad de la gestión de riesgos en cada fase
  • Mayor flexibilidad que en los modelos lineales
  • Uso extendido de prototipos

Desventajas:

  • Más dinero y tiempo necesarios para obtener el producto terminado.
  • Más complicado de ejecutar debido a la mayor necesidad de gestión de riesgos.
  • Reutilización limitada debido a resultados altamente personalizados de las espirales de desarrollo
  • Requiere documentación pesada

Mejor para:

  • Proyectos complicados con muchas pequeñas funciones integradas
  • Proyectos con presupuestos estrictos (la gestión de riesgos ayudará a ahorrar dinero)
  • Proyectos de alto riesgo
  • Proyectos de desarrollo a largo plazo
  • Proyectos sin requisitos claros en las primeras etapas o con requisitos que deben evaluarse
  • Nuevas líneas de productos destinadas a ser lanzadas en fases
  • Proyectos en los que es probable que se produzcan cambios significativos en el producto durante el desarrollo.

Modelo ágil

Etapas del modelo ágil

El modelo Agile SDLC es una combinación de enfoques iterativos e incrementales, centrados en adaptarse a los requisitos flexibles y satisfacer a los usuarios y clientes mediante la entrega temprana de software que funcione .

Los requisitos y las soluciones en los proyectos ágiles pueden evolucionar durante el desarrollo.

Con el desarrollo ágil, el producto se divide en pequeñas compilaciones incrementales y se entrega en iteraciones . Todas las tareas se dividen en pequeños períodos de tiempo para preparar la funcionalidad de trabajo con cada compilación. La compilación del producto final contiene todas las características necesarias.

En Agile, los enfoques de desarrollo existentes deben adaptarse a los requisitos de cada proyecto específico. Lea el sitio web oficial del Manifiesto Agile para obtener más información sobre la filosofía Agile.

Ventajas:

  • Se necesita menos tiempo para ofrecer funciones específicas
  • No deja espacio para conjeturas debido a la comunicación cara a cara y la participación continua del cliente.
  • Resultados de alta calidad en el menor tiempo posible
  • El valor comercial se puede entregar y demostrar rápidamente
  • Requiere recursos mínimos
  • Altamente adaptable a los requisitos cambiantes

Desventajas:

  • Requiere que el cliente se dé cuenta de la importancia del enfoque centrado en el usuario
  • La entrega tardía de la documentación resulta en una transferencia de tecnología más difícil a los nuevos miembros del equipo
  • Presenta demandas estrictas en términos de alcance, funcionalidad entregada y mejoras que deben realizarse a tiempo
  • No es fácil lidiar con dependencias complejas
  • Requiere muchas habilidades blandas del equipo de desarrollo

Mejor para:

  • Casi cualquier tipo de proyecto, pero con mucho compromiso por parte del cliente
  • Proyectos con un entorno en constante cambio
  • Clientes que necesitan que se realice alguna funcionalidad rápidamente, por ejemplo, en menos de 3 semanas

¿Por qué Agile?

Según el informe anual State of Agile, Agile sigue siendo el modelo de ciclo de vida de desarrollo de software más utilizado en la industria de la tecnología. En Mind Studios , usamos principalmente el modelo Agile SDLC para desarrollar productos de software para nuestros clientes. Este es el por qué.

Lo principal que distingue a Agile de otros modelos SDLC es que Agile es adaptativo , mientras que otros modelos son predictivos. Los modelos de desarrollo predictivo dependen en gran medida del análisis y la planificación adecuados de los requisitos . Por eso, es difícil implementar cambios en las metodologías predictivas: el desarrollo se apega mucho al plan. Y si es necesario cambiar algo, enfrentará todas las consecuencias de la gestión del control y la priorización.

El desarrollo de software moderno requiere la capacidad de realizar cambios de inmediato . El desarrollo Adaptive Agile no depende tanto de la planificación detallada como de las metodologías predictivas. Por lo tanto, si es necesario cambiar algo, se puede cambiar a más tardar en el siguiente sprint de desarrollo.

Un equipo de desarrollo impulsado por funciones puede adaptarse a los cambios en los requisitos de forma dinámica. Además, la frecuencia de las pruebas en Agile ayuda a minimizar el riesgo de fallas importantes .

Leer más: Cómo gestionar los riesgos en el desarrollo de software .

Por supuesto, Agile significa mucha interacción entre el cliente y el usuario para que funcione correctamente. Las necesidades del usuario, no del cliente, definen los requisitos finales del proyecto.

Scrum y Kanban

Scrum y Kanban

Hay muchos enfoques establecidos para el ciclo de vida del desarrollo de software ágil. Dos de los más populares son Scrum y Kanban .

Scrum es un marco de flujo de trabajo utilizado para entregar software en sprints, que generalmente son períodos de dos semanas. Scrum se concentra en cómo gestionar las tareas dentro de un entorno de desarrollo y ayuda a mejorar la dinámica del equipo.

No existe una forma única de realizar Scrum debido a su alta adaptabilidad. Pero, en general, un equipo necesita organizar roles, eventos, artefactos y reglas asociados dentro de un determinado proyecto.

Un sprint es un período de tiempo de dos a cuatro semanas durante el cual el equipo crea una pieza de software utilizable. Un nuevo sprint comienza justo después de que finaliza el anterior.

Estos son los elementos típicos de un sprint:

  • Planificación de Sprint , donde el equipo planifica la cantidad de trabajo a realizar en el Sprint dado.

  • La reunión diaria de Scrum: una breve reunión diaria para que el equipo discuta lo que se ha hecho, lo que planean hacer hoy y los problemas que ocurrieron desde la última reunión.

  • Sprint Review , una reunión al final del sprint durante la cual el equipo repasa el trabajo completado y realiza cambios en la cartera de productos, si es necesario

  • Una retrospectiva de Sprint ocurre justo antes del inicio de un nuevo Sprint. Durante la retrospectiva, el equipo Scrum concluye el trabajo y crea planes de mejora para futuros sprints basados ​​en su experiencia de sprints pasados.

Kanban es un método de visualización de gestión ampliamente utilizado en el modelo Agile SDLC. Ayuda a mejorar y mantener un alto nivel de productividad dentro de un equipo de desarrollo. Kanban opera con iteraciones cortas: si Scrum dura unas semanas, Kanban dura unas horas. Scrum apunta a terminar el sprint, mientras que Kanban apunta a terminar la tarea. Kanban es anti-multitarea.

Las prácticas clave de Kanban son:

  • Visualizando el flujo de trabajo
  • Limitar las tareas en curso
  • Gestionar el flujo de trabajo

Kanban se implementa mediante un tablero donde todas las tareas del proyecto se visualizan y se dividen en columnas, como por hacer, en progreso, en espera, terminado y en revisión.
Kanban también es bueno para actividades menos técnicas, como ventas, marketing y contratación.

DevOps

Enfoque DevOps

Hablando de modelos SDLC como formas de hacer las cosas, debemos mencionar el enfoque DevOps . DevOps es una combinación de herramientas, prácticas y enfoques que ayudan a entregar productos de software a un ritmo más rápido. DevOps se trata de la colaboración de entornos de desarrollo y operaciones.
Tenga en cuenta que DevOps no es un modelo SDLC, pero también le ayuda a hacer las cosas.

Principalmente, DevOps se realiza automatizando la infraestructura y los flujos de trabajo y realizando un seguimiento continuo del rendimiento de las aplicaciones. Un enfoque de DevOps le permite aumentar la frecuencia de las implementaciones, documentar el código y acortar el tiempo necesario para implementar un nuevo código . Es muy bueno para evitar errores de dependencia.

DevOps usa iteraciones para mejorar, medir y monitorear el código en las operaciones diarias. Su objetivo final es tener un entorno de producción lo más eficaz posible para proporcionar una mejor experiencia al cliente.

Pero la implementación del modelo DevOps requiere una mentalidad específica de los equipos de desarrollo y operaciones , así como la preparación para desarrollar más rápido y dominar las herramientas y habilidades de DevOps.

Ventajas:

  • Lanzamientos más frecuentes para una entrega más rápida al mercado
  • Más enfoque en mejorar el producto y más capacidad de respuesta a las necesidades comerciales
  • Mejor colaboración entre los miembros del equipo
  • Mejor calidad del producto final y clientes más felices.

Desventajas:

  • DevOps es nuevo, lo que significa que no está tan bien estudiado
  • No es la mejor opción para proyectos de misión crítica
  • Requiere un esfuerzo adicional por parte del equipo para organizarse
  • Alta posibilidad de errores en las primeras etapas de desarrollo.
  • Necesita elegir entre centrarse en la seguridad o la velocidad de desarrollo

Conclusión

El negocio del desarrollo de software cambia constante y rápidamente. Cambia más rápido de lo que la gente crea formas establecidas de administrarlo. Puede que no exista un SDLC específico que se adapte perfectamente a su negocio. Pero los modelos de ciclo de vida de desarrollo de software existentes pueden al menos guiarlo en la dirección correcta y ayudarlo a armonizar sus procesos comerciales.

Si desea obtener una comprensión más clara de qué SDLC se adaptará mejor a su proyecto, o si necesita un equipo ágil de primer nivel para desarrollar su aplicación o producto web, envíenos un mensaje a través de nuestra página de contacto.