IEDGE – Ciclo de vida en el Desarrollo de Software, primera parte


1 Star2 Stars3 Stars4 Stars5 Stars (Valora este post)
Loading...

1.- Ciclo de Vida de los Proyectos vs. Ciclo de Vida del Desarrollo de Software

En el post sobre Estándares para la Gestión de TI describíamos el ciclo de vida de los proyectos tal y como lo describe el PMBOK, es decir, Inicio – Planificación – Ejecución – Cierre. Ya advertíamos en ese post que no se debe confundir este ciclo de vida de los proyectos con las fases o etapas de la ejecución del proyecto como tal.

Ahora, de la mano de la ingeniería de software vamos a dar un repaso al ciclo de vida del desarrollo de software, es decir, al “Marco de referencia que contiene los procesos, las actividades y las tareas involucradas en el desarrollo, la explotación y el mantenimiento de un producto de software, abarcando la vida del sistema desde la definición de los requisitos hasta la finalización de su uso” (definición de la norma ISO 12207-1).

2.- Elementos base del desarrollo de software

Lo organicemos como lo organicemos, cualquier proceso de desarrollo de software tiene más o menos los siguientes elementos:

  • Requisitos: toma de requisitos de alto nivel sobre qué tiene que hacer el sistema que hay que desarrollar.
  • Análisis: revisión de los requisitos componiéndolos como un todo coherente, revisando si existen carencias o inconsistencias.
  • Diseño: descripción de los diferentes componentes tecnológicos y cómo van a interactuar entre ellos
  • Programación / Parametrización: implementación de las diferentes funcionalidades por medio de lenguajes de programación o parametrización de paquetes o sistemas preexistentes
  • Pruebas: confirmación que los desarrollos no contienen errores (pruebas unitarias), que el diseño es completo y consistente (pruebas de integración) y que los requisitos y objetivos se cumplen (pruebas funcionales y de usuario).
  • Despliegue: aunque en ocasiones se olvida, el despliegue y capacitación de los usuarios también es parte del ciclo de vida del software y debe ser tenido en cuenta dentro de su gestión.

La organización de estos elementos definen los diferentes modelos del ciclo de vida del desarrollo de software que se han ido utilizando a través del tiempo en las diferentes organizaciones. Vamos a dar un repaso a algunos de estos modelos.

3.- Ciclo de vida “primitivo”

Aunque parezca increíble, más de un desarrollo se realiza en base a programar y probar, sin una definición clara de los objetivos o un diseño general de las diferentes piezas.

En muy pocas ocasiones da buen resultado y sólo es práctico en el caso de que el usuario y el programador sean la misma persona. En este desarrollo de tipo “personal” se puede encontrar sistemas de macros en Excel, desarrollos de aplicaciones en Access o pequeñas utilidades de productividad personal, pero no es, en general, un modelo aplicable a nivel empresarial.

 

Ilustración 1: Ciclo de vida primitivo

 

4.- Ciclo de vida clásico o en cascada

Este modelo de ciclo de vida en cascada fue creado por W.W. Royce [1970], y ha sufrido innumerables versiones y adaptaciones posteriores. Se caracteriza por estar compuesto por una serie de fases que se ejecutan secuencialmente. Cada fase finaliza con la obtención de productos que son utilizados en la fase siguiente

 

Ilustración 2: Ciclo de vida clásico o en cascada

Este ciclo de vida ha sido especialmente discutido y rechazado por muchas generaciones de programadores, si bien sus principios básicos se recogen en todos los modelos posteriores. Su principal pega es la dificultad de realizar “correcciones hacia arriba”, hacia las etapas anteriores del proceso, es decir, si en el diseño se detecta un error o conflicto en el análisis, es muy complicado volver atrás, ya que esa fase se ha dado por concluida y por lo tanto no se puede reabrir con facilidad.

No debemos rechazar este método sin más, sólo hay que tener en cuenta la posibilidad de poder revisar en fases posteriores el trabajo ya realizado. En desarrollos conocidos y estables es un método utilizado con éxito, sobre todo en grandes sistemas donde prácticamente toda la funcionalidad debe estar disponible desde la primera versión.

5.- Ciclo de vida iterativo

En la práctica casi todos los proyectos no cubren todos los requisitos en su primera versión, por lo que una vez realizada una entrega se vuelve a abordar una versión posterior que incluye nuevas funcionalidades. Asumir que esto es así desde un principio es lo que plantea el ciclo de vida iterativo: que una vez realizada la integración o entrega de una versión, se volverá a la fase de análisis para seguir avanzando en el desarrollo.

 

Ilustración 3: Ciclo de vida iterativo

Este tipo de ciclo de vida también tiene sus peligros, ya que puede convertirse en un ciclo sin fin y las entregas terminan quedando sin contenido, ya que prácticamente todo se queda siempre para la versión posterior, por lo que la gestión de las expectativas de los usuarios y clientes puede llegar a ser complicada si no se gestiona por medio de una comunicación y planificación clara. Con la adecuada comunicación y gestión de expectativas es un modelo muy útil para ir avanzando en la construcción de sistemas complejos de forma paulatina.

En el próximo post les hablaré de la evolución de los ciclos de vida de desarrollo de software: Ciclo de vida en espiral y sus variantes RAD y RUP

¡Quedo a la espera de sus comentarios!

Pablo Almunia

Profesor de Dirección de Sistemas y Tecnologías de la Información

Nota: aprender de una forma práctica y rápida como poner en marcha, desarrollar y controlar planes totalmente eficaces de Sistemas y Tecnologías de la información para pymes, les invitamos a que consulten la Especialidad Europea en Gestión de Sistemas y Tecnologías de la Información

* Los contenidos publicados en este post son responsabilidad exclusiva del Autor.

¡Pronto grandes sorpresas en Facebook y Twitter!:


Comentarios


  1. Fernando Pulido Soto
    comento el día 28 de Septiembre a las 8:01 pm (#)


    hola Pablo,
    que blog tan útil ya que sabemos que hay diferencia entre software y proyectos. Claro que crear un software requiere mucho mas epecializacion y mas si queires crear un software de éxito. También como lo comentas hay software muy sencillos como una plantilla de Excel por ejemplo.
    Saludos
    Fernando


Deje su comentario