Ciclo de vida del desarrollo de software (sdlc)

Definición: ¿Qué significa el ciclo de vida del desarrollo de software (SDLC)?

Un modelo de ciclo de vida de desarrollo de software (SDLC) es un marco conceptual que describe todas las actividades de un proyecto de desarrollo de software, desde la planificación hasta el mantenimiento. Este proceso está asociado con varios modelos, cada uno de los cuales incluye una variedad de tareas y actividades.

El desarrollo de software es una actividad engorrosa que requiere la identificación adecuada de los requisitos, su implementación y la implementación del software. Sin embargo, las actividades no terminan ahí. Después de la distribución del software, se debe proporcionar el mantenimiento adecuado de manera oportuna.

Este término también se conoce como modelo de proceso de desarrollo de software.

Techinfo explica el ciclo de vida del desarrollo de software (SDLC)

Veamos una forma más intuitiva de abordar la definición del ciclo de vida del desarrollo de software (SDLC). Piense en las etapas por las que atraviesa el desarrollo de software, desde las primeras fulminaciones de la idea de un proyecto, hasta el lanzamiento de ese software en vivo en un entorno de producción.

Piense en el SDLC como compuesto de varias "estaciones de paso" en el camino hacia el desarrollo y lanzamiento final completo, con todas las pruebas de usuario y otras cosas que continúan al final del proceso.

Esa es una buena forma de empezar a pensar en qué es el SDLC.

Conclusiones clave de SDLC

Aquí hay algunas cosas que serán fundamentales para nuestra explicación del ciclo de vida del desarrollo de software:

  • SDLC abarca: planificación, implementación, pruebas, documentación, implementación y mantenimiento.
  • Los modelos pasaron de los procesos SDLC por etapas tradicionales a los ágiles y luego a los Devops.
  • Agile y Devops como prácticas fusionaron la puesta en escena tradicional de formas nuevas e interesantes.
  • La nube trajo a la escena la llegada de recursos entregados a través de la web.
  • Aunque SDLC ahora ha cambiado mucho, el concepto sigue siendo en gran medida el mismo.

Historia del ciclo de vida del desarrollo de software

El consenso es que el SDLC como marco desarrollado en las décadas de 1950 y 1960 como la ciencia de la computación evolucionó rápidamente.

Antes de la segunda mitad de la década de 1900, cuando ENIAC y varias otras innovaciones hicieron avanzar rápidamente el mundo de la informática, la informática realmente no era lo suficientemente elaborada como para necesitar algo como el SDLC. Las primeras implementaciones de tecnologías de software involucraron herramientas simples, como líneas de referencia básicas y declaraciones if / then.

Con el tiempo, el concepto de programación estructurada trajo consigo la necesidad de modelos de desarrollo y nació el SDLC.

Los primeros modelos tempranos se definieron principalmente por etapas.

Eche un vistazo a esta infografía para comprender esta migración histórica de prácticas de la cascada a nuevas metodologías ágiles y DevOps.

Comparte esta imagen en tu sitio

Incluya la atribución a techopedia.com con este gráfico.

Las prácticas iterativas e incrementales llevaron a la creación de prototipos en la década de 1980, lo que condujo a varios tipos diferentes de innovaciones, como los marcos en espiral y modelo V, y luego a la agilidad en la década de 1990.

Hay numerosas formas de describir estos cambios a lo largo del tiempo, pero la conclusión es que el ciclo de vida del desarrollo de software comenzó como un proceso cuidadosamente organizado.

La cascada sigue siendo el modelo dominante para estos marcos de ciclo de vida de desarrollo de software temprano. En el modelo de cascada, todo en una etapa se completa antes de pasar a la siguiente etapa. Toda la planificación se completa antes de que el proyecto pase a la implementación. Toda la implementación se completa antes de que el proceso pase a la prueba.

Luego, a medida que estos marcos se volvían ágiles, esta idea se transformó en un sistema en el que el trabajo colaborativo cambiaba los flujos de trabajo, y la puesta en escena previamente monolítica se dividía en partes compuestas. Por ejemplo, las pruebas podrían continuar en diferentes fases en diferentes entornos.

Como nota al margen, las pruebas también se estaban automatizando cada vez más.

En cualquier caso, el paso de la cascada a otros modelos, a Agile y DevOps, nos lleva al día actual, donde la mentalidad DevOps está aprovechando las arquitecturas en la nube, los microservicios y más para redefinir lo que significa el trabajo del ciclo de vida del desarrollo de software.

Proceso SDLC

Las principales actividades de desarrollo de software incluyen:

Extracción de requisitos

El cliente tiene una vaga idea de lo que se requiere. El departamento de ventas, los ingenieros de software y los expertos en el dominio colaboran para recopilar información sobre cuál debería ser el producto, sus propósitos y cómo se supone que debe funcionar. Este análisis suele ir acompañado de estudios de mercado.

Análisis de viabilidad

Después de un análisis exhaustivo de los requisitos y los pasos de planificación para alcanzar el objetivo, un grupo de ingenieros de software pone en práctica la idea abstracta del cliente. Se compila un documento de “Especificación de requisitos de software” (SRS) para incluir todo lo que se debe desarrollar para completar el proyecto.

Fase de diseño

Durante esta fase, la arquitectura general del sistema se diseña definiendo la funcionalidad de cada módulo, así como su interacción con módulos de terceros.

Etapa de construcción y codificación

El producto está construido y codificado según los estándares propios de la empresa. Los diseñadores siguen un conjunto de mejores prácticas y pautas, y utilizan las herramientas de programación que tienen a su disposición para desarrollar el producto.

Fase de prueba

El código se prueba para asegurarse de que esté libre de errores, cumpla con los requisitos del cliente e interactúe correctamente con otros productos de software junto con el hardware subyacente.

Despliegue y mantenimiento

Se lanza al mercado la versión final del producto. El mantenimiento se realiza a lo largo del tiempo para cambiar la arquitectura del sistema de acuerdo con las necesidades futuras. Esto puede requerir la adición de código o la alteración del código existente.

El proceso de desarrollo anterior se simplifica mediante una serie de modelos. El equipo de desarrollo selecciona el modelo más adecuado entre varios conocidos. Los diferentes modelos son:

Modelo de cascada

Los desarrolladores establecen los requisitos, los analizan, determinan una solución y enmarcan una arquitectura de software, representación de interfaz y detalles algorítmicos. Luego, desarrollan el código, prueban el código, implementan el software y lo mantienen. El principal problema de este modelo es que el requisito de corregir los errores debe conocerse por adelantado y en una etapa temprana. De lo contrario, todo el proceso puede continuar en la dirección incorrecta, lo que podría afectar negativamente el costo de producción.

Modelo en forma de V

Es una variación del modelo de cascada. Destaca la verificación y validación del producto. Todos los entregables son comprobables y el progreso se rastrea por hitos. Las pruebas se implementan en paralelo a la fase de desarrollo.

Modelo de prototipo

Un prototipo se desarrolla en la fase de requisitos y es evaluado por los usuarios finales. Según los comentarios de los usuarios, los desarrolladores modifican el prototipo para satisfacer los requisitos del usuario. Si bien este modelo finaliza los requisitos fácilmente, su uso en el entorno de producción puede dar lugar a problemas de calidad, lo que hace que el proceso de corrección continúe para siempre.

Modelo espiral

Hace uso de modelos de cascada y prototipo. Agrega lenguajes de programación de cuarta generación, creación rápida de prototipos de desarrollo de aplicaciones y análisis de riesgos al modelo en cascada. Se diseñan los requisitos del sistema y se crea un diseño preliminar del sistema. Se diseña y prueba un prototipo inicial. Sobre la base de la evaluación de los resultados de las pruebas, se crea un segundo prototipo. Los prototipos posteriores se construyen para garantizar la satisfacción del cliente. El sistema se crea en base al prototipo final. El sistema final se evalúa y prueba. Aunque este modelo reduce el riesgo en gran medida, es posible que no cumpla con el presupuesto y se aplique de manera diferente para cada aplicación.

Modelo SDLC iterativo e incremental

Especifica e implementa una parte del software, que luego se revisa y se agregan e implementan más requisitos en grupos. Cada lanzamiento ofrece un producto operativo que presenta a los clientes funcionalidades importantes en primer lugar, reduciendo los costos de entrega iniciales. El riesgo de cambiar los requisitos se reduce en gran medida y los clientes pueden responder a cada construcción. A pesar de sus puntos fuertes, este modelo requiere una buena planificación y una definición temprana del sistema completo y completamente funcional. También requiere interfaces de módulo bien definidas.

Modelo de desarrollo ágil

Se utiliza para aplicaciones de tiempo crítico en organizaciones que emplean métodos disciplinados. Acelera las fases del ciclo de vida y tiene un alcance reducido.

Modelo de caja mágica

Es un modelo de desarrollo de aplicaciones web. Es la forma más rápida de terminar el proyecto con la menor cantidad de errores, ya que brinda la oportunidad de alterar el código y las estructuras de la base de datos.

Hay muchas partes móviles. Esa es parte de la razón por la que las empresas comenzaron a contratar scrum masters, para reunir equipos y orientarlos rápidamente sobre lo que está sucediendo en el terreno.

Ese tipo de registro garantiza que, incluso en un entorno sumamente complejo, todo marcha bien.

Acerca del desarrollo de software como servicio (SDaaS)

Con todo lo anterior en mente, el desarrollo de software como servicio, o SDaaS, se refiere a la amplia gama de servicios disponibles de los proveedores que asumirán aspectos del proceso del ciclo de vida del desarrollo de software de alguna manera, forma o formato.

Estas empresas pueden dedicar equipos de personas a administrar el ciclo de vida del software de una manera que apoye a la empresa cliente en función del descubrimiento y la participación.

Muchos de estos sistemas se basan en el método ágil, porque puede ser muy simbiótico con la naturaleza de SDaaS. Debido a que hay tanta interactividad e interoperabilidad, el cliente puede interactuar rutinariamente con el proveedor de soporte de manera que promueva buenos resultados.

Los proveedores pueden tener scrum masters y otros profesionales disponibles para guiar a los equipos de desarrollo o implementación que cumplen con las necesidades específicas.

Algunos proveedores caracterizan esto como ofrecer servicios de desarrollo de software con costos proyectados continuos, con el fin de ayudar a los clientes a subcontratar, aunque muchos consideran que SDaaS es diferente al modelo de TI subcontratado.

Consideraciones finales

Todo lo anterior ayuda a mostrar por qué el ciclo de vida del desarrollo de software es importante y cómo ha evolucionado con el tiempo.

Piense en este método fundamental para crear aplicaciones, ejecutables y productos de software que usamos a diario.