• 4 hours
  • Easy

Free online content available in this course.

course.header.alt.is_video

course.header.alt.is_certifying

Got it!

Last updated on 2/6/20

El ciclo de vida del software

Log in or subscribe for free to enjoy all this course has to offer!

 

El proceso de desarrollo de software o ciclo de vida

El proceso de desarrollo de software o ciclo de vida del software, es el proceso de organizar el proyecto de desarrollo en fases para mejorar la productividad y la calidad del proyecto. Existen diferentes modelos para planificar el proceso que seguirá el desarrollo de software, cada uno de estos modelos tiene características que le hacen adaptarse mejor a unos tipos de proyecto que a otros.

Podemos englobar los modelos para gestionar el proceso de desarrollo de software, en dos grandes grupos principales: las metodologías secuenciales y las metodologías ágiles.

Las metodologías secuenciales que podríamos denominar "tradicionales" tienen distintas fases bien definidas que se desarrollan de forma ordenada, una detrás de otra. Fueron las primeras metodologías que se utilizaron en los proyectos de desarrollo de software, y todavía son ampliamente utilizadas. Por el contrario, las metodologías ágiles avanzan de forma iterativa, repitiéndose etapas cortas donde se desarrollan pequeñas partes del proyecto. En cada una de estas pequeñas etapas se trabajan todas las fases del producto: análisis, diseño, implementación y verificación.

Dentro de las metodologías secuenciales, en este curso nos centraremos en el llamado modelo en cascada, mientras que de las metodologías ágiles, nos centraremos en entender la filosofía en la que se inspiran, y veremos Scrum, uno de los modelos ágiles más utilizados en desarrollo de software hoy en día. 

El modelo en cascada y las nuevas metodologías de desarrollo 

El desarrollo en cascada

El modelo en cascada es una forma de organizar un proceso de desarrollo que comprende un conjunto de fases que se recorren de forma ordenada, una tras otra.

Este modelo se fundamenta en tener una fuerte visión de conjunto, planeando minuciosamente el proyecto, las fechas límite, el presupuesto y la implementación de todo el sistema al mismo tiempo.

Las 5 fases en las que se divide el modelo en cascada las siguientes:

  1. Definición de los requisitos

  2. Diseño

  3. Implementación

  4. Verificación

  5. Instalación y mantenimiento

Cada una de las partes está exhaustivamente documentada y la fase siguiente no empieza hasta que la anterior haya concluido en su totalidad. En el modelo en cascada, no se debe volver a una fase ya superada, siendo por ello un sistema poco flexible. Los críticos de este sistema sostienen que en un proceso de desarrollo de software, contrariamente a un proyecto de construcción o industrial, realizar cambios a un producto no es tan costoso, ya que no se trata de un producto físico y que este modelo encorseta el proceso de desarrollo. Más adelante veremos que este sistema cuenta con ventajas, sobre todo en proyectos en los que los requisitos están muy claros y no es necesario contar con un alto grado de adaptabilidad.  

El desarrollo con metodologías ágiles como Scrum

La base de las metodologías ágiles de desarrollo es la iteración y la retroalimentación o "feedback" del cliente. La mayoría de las metodologías de desarrollo ágiles dividen el proyecto en pequeñas partes que minimizan la cantidad de horas de planeamiento y diseño necesarias al principio de un proyecto secuencial. Las iteraciones suelen durar entre 1 y 4 semanas, y al final de cada iteración se muestra al cliente la parte del producto desarrollada. De esta forma el producto se adapta a los cambios, ya que el cliente a medida que va viendo el software desarrollarse, va incorporando nuevas ideas de lo que debería ser el producto final. Pueden hacer falta varias iteraciones para obtener un producto que pueda utilizarse o para incorporar nuevas funcionalidades.

Diferencias fundamentales del modelo en cascada y ágil

Las metodologías predictivas en comparación con las metodologías adaptativas

Las metodologías adaptativas se centran en permitir dar soluciones rápidas a los cambios en el proyecto, sin embargo en un proyecto así es difícil saber qué se hará en el futuro. 

Por el contrario, las metodologías predictivas se centran en el análisis y la planificación de todo el proyecto. Prácticamente todo el proyecto está previsto desde el principio, y se puede saber en qué fechas o cuanto se tardará en desarrollar funcionalidades del software mucho antes de que llegue el momento de ponerse a trabajar en ello. Si el análisis del proyecto falla, las consecuencias pueden ser muy negativas.

Las metodologías iterativas en comparación con las metodologías secuenciales

Una de las mayores diferencias entre las metodologías ágiles y las secuenciales como la del ciclo de vida en cascada es la forma en la que se plantean las etapas del proyecto.

Iterar quiere decir repetir. En el modelo en cascada, se desarrollarán todos los requerimientos de la aplicación en la fase de implementación. En cambio, en un modelo iterativo, en una primera iteración el equipo de desarrollo puede crear un formulario básico para que los usuarios se registren. Más adelante, en una futura iteración, se le encomienda al equipo que implemente un cambio de diseño y un sistema que verifique que las contraseñas elegidas tengan más de 8 caracteres.

Por esto decimos que este modelo es iterativoincremental. La aplicación se desarrolla poco a poco, a través de repeticiones que van añadiendo valor a la aplicación.

¿Cuál es la mejor opción para mi proyecto?

Hay una serie de factores que te pueden indicar qué tipo de proceso de desarrollo se puede adaptar mejor a tu proyecto.

Uno de los principales factores es el conocimiento de los requisitos que se deberán implementar. Si los requisitos están muy claros desde el principio, y no hay previsión de que vayan a cambiar, el modelo en cascada puede ser el apropiado. Si por el contrario los requisitos no están claros, será más conveniente utilizar una metodología ágil que permita tener flexibilidad para cambiar y añadir nuevos requisitos.

Otro factor importante es la novedad. Si el grupo de desarrolladores ha realizado proyectos similares anteriormente, y tienen muy claro qué tienen que hacer para que el proyecto llegue a buen puerto, no se requieren tantas iteraciones ni retroalimentaciones. En este caso la metodología ágil puede no ser la más eficiente.

Uno de las principales razones por las que no se suele utilizar las metodologías ágiles es por el precio y el tiempo de desarrollo. Cuando los requisitos se han establecido a priori, y se ha aceptado un presupuesto, el cliente teme que el cambio de los requisitos pueda alargar los plazos y aumentar el precio final del producto. Por lo tanto, prefiere la seguridad de obtener el producto con el precio pactado a la flexibilidad y adaptabilidad de un proyecto ágil.

En conclusión, cada proyecto se desarrolla en un contexto particular, y los diferentes factores que condicionen el proyecto, harán que una metodología sea más favorables que otra. Depende del equipo y de los gestores del proyecto el saber elegir la metodología de desarrollo apropiada para cada proyecto.

Example of certificate of achievement
Example of certificate of achievement