Bloque III. Tema 1. Concepto de ciclo de vida de los sistemas y fases. Modelo en cascada y modelo en espiral del ciclo de vida. Otros modelos.

Índice de contenido

Bloque III. Tema 1. Concepto de ciclo de vida de los sistemas y fases. Modelo en cascada y modelo en espiral del ciclo de vida. Otros modelos.        1

Ciclo de Vida        1

ISO/IEC 12207        2

Procesos Principales        2

Procesos de Apoyo        2

Procesos organizativos del ciclo de vida        3

Modelo en Cascada        3

Modelo en Espiral        3

Desarrollo Iterativo e Incremental        4

Metodologías        5

Peso Pesado        5

Modelo en V        5

Modelo Iterativo        6

Modelo Incremental        6

Modelo de Prototipos        6

Ágiles        6

RAD        7

RUP        7

Scrum        8

XP        8

Dinamic Systems Development Method DSDM        9

Crystal Clear        9

Agile Unified Process AUP        10

CASE        10

 

Fuentes:

Ciclo de Vida

La norma ISO/IEC 12207 define un modelo de ciclo de vida como un marco de referencia que contiene los procesos, actividades y tareas involucradas en el desarrollo, operación y mantenimiento de un producto software y que abarca toda la vida del sistema, desde la definición de sus requisitos hasta el final del uso.

Hay cinco procesos principales, ocho procesos de apoyo y cuatro procesos organizativos. Procesos principales:

*

Los procesos de apoyo al ciclo de vida:

ISO/IEC 12207

Marco común de referencia para los procesos del ciclo de vida del software. Contiene procesos, actividades y tareas para:

Procesos Principales

Son cinco procesos principales que dan servicio a las partes principales durante el ciclo de vida del software:

Procesos de Apoyo

Procesos que apoyan a otros procesos como parte esencial de los mismos, con un propósito bien definido y contribuyen al éxito y calidad del proyecto software:

Procesos organizativos del ciclo de vida

Se emplean para establecer e implementar una infraestructura construida por procesos y personal asociado al ciclo de vida, y para mejorar continuamente esta estructura y procesos:

Modelo en Cascada

https://secure.wikimedia.org/wikipedia/en/wiki/Waterfall_model

Es un proceso de diseño secuencial, que va a través de las fases:

Y no se pasa a otra hasta que la anterior está terminada perfectamente.

Modelo en Espiral

https://secure.wikimedia.org/wikipedia/en/wiki/Spiral_model

Combina los prototipos con el modelo en cascada. Se aplica a proyectos grandes y complejos. Definido por Barry Boehm en 1986. Es un acercamiento iterativo. Cada fase comienza con un objetivo de diseño y termina con el cliente revisando como va el proceso hasta ese momento.

Es el primer modelo en incluir explícitamente la gestión de riesgos en el desarrollo software, determinando como el control de esos riesgos puede mantener el proceso de desarrollo software bajo control.

Este modelo no fue el primero en tratar el desarrollo iterativo, sino que fue el primero en explicar las iteraciones.

                                       
 

Las fases de cada espiral son:

  1. Determinar objetivos
    1. Fijar también los productos definidos a obtener.
    2. Fijar las restricciones
    3. Identificación de los riesgos y estrategias para evitarlos
    4. Hay una cosa que solo se hace una vez: planificación inicial o previa.
  2. Analizar, identificar y resolver riesgos. (En cada pasada se termina definiendo prototipos, que cada vez son más grandes)
    1. Se estudian todos los riesgos potenciales y se seleccionan una o varias alternativas propuestas para reducir o eliminar riesgos.
  3. Desarrollo y pruebas. Diseño detallado, Codificación, Integración, Pruebas, Implementación. Terminan con una release.
  4. Planificar la próxima iteración, que volverá a 1.
    1. Revisar todo lo que hemos hecho, evalúandolo y con ello decidimos si continuamos con las fases siguientes y planificamos la próxima actividad.

Una de las ventajas es que incorpora objetivos de calidad. Pero es un modelo que genera mucho trabajo adicional.

Es como si en el cuadrante “3. Development and Test” hubiera una cascada y se hicieran varias cascadas a lo largo de todo el proyecto, solo que están separadas por un estudio de los riesgos y la elección de una alternativa entre varias, y además cada cascada que se haga será empezando desde lo anterior, refinando hasta llegar al sistema final.

 

Desarrollo Iterativo e Incremental

Empieza con una planificación inicial y termina con el despliegue, con la iteración cíclica en el medio.

Para apoyar al desarrollo de proyectos por medio de este modelo se han creado distintos frameworks, como puede ser el Rational Unified Process. Es también una parte esencial de XP y los demás frameworks de desarrollo rápido de software.

Los autores del Proceso Unificado UP y del Proceso Unificado Rational RUP seleccionaron el término desarrollo iterativo e iteraciones para hacer referencia de forma general a cualquier combinación de desarrollo incremental e iterativo. El proceso unificado agrupa las iteraciones en fases: inicio, elaboración, construcción  y transición:

Metodologías

Es un conjunto integrado de técnicas y métodos que permite abordar de forma homogénea y abierta cada una de las actividades del ciclo de vida de un proyecto de desarrollo. Es un proceso de software detallado y completo. Van un paso más allá de los ciclos de vida, especificando métodos, técnicas, prácticas, artefactos, etc. Define qué hacer, cómo y cuándo durante todo el desarrollo y mantenimiento de un proyecto.

Un marco de trabajo de una metodología de desarrollo software consiste en una filosofía de desarrollo de software, con el enfoque o enfoques del proceso de desarrollo de software y múltiples herramientas, modelos y métodos para ayudar en el proceso de desarrollo de software.

Peso Pesado

Modelo en V

Podemos relacionar V, aparte de gráficamente, con Verificación y Validación, que es la clave de este modelo.

Para intentar solucionar problemas del método en cascada tradicional. El modelo en V dice que las pruebas deben comenzarse lo más pronto posible en el ciclo de vida, y las integra en cada fase del ciclo de vida.

Se va hacia abajo como en la cascada, a través de todas las fases, pero cuando se llega a la codificación se vuelve atrás verificando primero el software, y luego el sistema, cada vez a más alto nivel.

Modelo Iterativo

Derivado del modelo en cascada. Busca reducir el riesgo que surge entre las necesidades del usuario y el producto final, por malos entendidos durante la etapa de recogida de requisitos. Consiste en la iteración de varios ciclos en cascada. Vemos como nos vamos acercando a la espiral.

Al final de cada iteración se le entrega al cliente una versión mejorada o con mayores funcionalidades del producto. El cliente lo evalúa y corrige o propone mejoras. Se suele utilizar cuando los requisitos no están claros. Diferenciar de espiral en la gestión de los riesgos, que aquí no es explícita.

Modelo Incremental

Combina elementos del modelo en cascada con la filosofía interactiva de construcción de prototipos. Se basa en construir incrementando las funcionalidades del programa.

Como inconvenientes, cada fase de una iteración es rígida y no se superponen con otras, y pueden surgir problemas referidos a la arquitectura.

Modelo de Prototipos

El paradigma de construcción de prototipos comienza con la recolección de requisitos. El desarrollador y el cliente encuentran y definen los objetivos globales para el software. Entonces aparece un diseño rápido, que se centra en una representación de esos aspectos del software que serán visibles para el usuario/cliente. El diseño rápido lleva a la construcción de un prototipo. La iteración ocurre cuando el prototipo se pone a punto para satisfacer las necesidades del cliente, permitiendo al mismo tiempo que el desarrollador comprenda mejor lo que necesita hacer.

 

Ágiles

Es en realidad un grupo de estrategias de desarrollo software basadas en:

Divide las tareas en pequeños incrementos con mínimas planificaciones, y no implican directamente planificación a largo plazo. Las iteraciones son marcos pequeños de tiempo (timeboxes) que normalmente duran de una a cuatro semanas. De cada iteración se hace cargo un equipo realizando un ciclo de desarrollo completo, incluyendo planificación, análisis de requisitos, diseño, codificación, pruebas unitarias y pruebas de aceptación. El objetivo es tener una versión disponible (con errores mínimos) al final de cada iteración. No importa qué disciplinas de desarrollo se requieran, cada equipo ágil contendrá un representante del cliente.

Se sugiere que se puede usar un análisis de riesgos para elegir entre métodos adaptativos (ágiles) o predictivos (orientados a planes).A continuación algunos elementos que pueden caracterizar a proyectos desarrollados con metodologías ágiles:

Y aquí a los orientados a planes:

Los métodos ágiles suelen cubrir la gestión de proyectos. Algunos métodos se suplementan con guías en gestión de proyectos. PRINCE2 se ha propuesto como un sistema de gestión de proyectos complementario y adecuado.

 

RAD

El método RAD tiene una lista de tareas y una estructura de desglose de trabajo diseñada para la rapidez. El método comprende:

RUP

Es un marco de trabajo de proceso de desarrollo de software iterativo creado por Rational Software Corporation. Es un marco de trabajo de proceso adaptable. El mismo proceso tiene un modelo orientado a objetos subyacente, usando UML.

RUP se basa en un conjunto de módulos que describen qué se va a producir, las habilidades necesarias requeridas y la explicación paso a paso describiendo cómo se consiguen los objetivos de desarrollo. Los módulos principales son:

El ciclo de vida del proyecto consiste en cuatro fases. Hay iteraciones dentro de las fases. Fases:

RUP proporciona un prototipo al final de cada iteración. Dentro de cada iteración, las tareas se categorizan en nueve disciplinas: 6 disciplinas de ingeniería y 3 disciplinas de soporte.

Existe una certificación a nivel personal -cuidado, no para organizaciones-

Scrum

Un proceso ágil que se puede usar para gestionar y controlar desarrollos complejos de software y productos usando prácticas iterativas e incrementales. Viene de un término que se usa en rugby.

Scrum es un esqueleto de proceso que incluye un conjunto de prácticas y roles predefinidos. Los roles principales son:

Iteraciones (aquí aparece el concepto de “sprints”) de 2 a 4 semanas en el que el equipo crea un incremento del software, operativo.

El backlog del producto es el conjunto priorizado de requisitos de trabajo de alto nivel que se ha de hacer. Del backlog se sacan requisitos a implementar durante una iteración concreta, y durante esa iteración los requisitos están congelados, ya no se cambian hasta la siguiente reunión.

Una parte importante de Scrum son las reuniones que se realizan durante cada una de las reuniones. Hay distintos tipos:

Se desarrollan planes de riesgos y mitigación frecuentes por parte del equipo de desarrollo, la mitigación de riesgos, la monitorización y la gestión de riesgos se lleva a cabo en todas las etapas y con compromiso.

XP

Un enfoque de ingeniería del software formulado por Kent Beck. Es el más destacado de los procesos ágiles. Al igual que el resto, pone más énfasis en la adaptabilidad que en la previsibilidad. Centrada en potenciar las relaciones interpersonales y la realimentación continua entre el cliente y el equipo de desarrollo. Elementos:

El ciclo de vida ideal consiste en 6 fases: exploración, planificación de la entrega, iteraciones, producción, mantenimiento y muerte del proyecto.

Algunas prácticas:

Dinamic Systems Development Method DSDM

Metodología de desarrollo basada originalmente en RAD. DSDM es un enfoque iterativo e incremental que enfatiza la participación continua del usuario. Su objetivo es entregar sistemas software en tiempo y presupuesto ajustándose a los cambios de requisitos durante el proceso de desarrollo.

Como extensión del RAD, DSDM se centra en proyectos de sistemas de información que se caracterizan por planificaciones y presupuestos estrictos. Consiste en tres fases:

En DSDM hay nueve procesos subyacentes que consisten en cuatro fundamentos y cinco puntos de partida.

Ningún sistema es construido perfectamente al primer intento. En pocas palabras, el 80% de los beneficios del negocio vienen de un 20% de los requisitos de diseño, por lo tanto DSDM empieza implementando ese 20% crítico primero.

Crystal Clear

Miembro de la familia de metodologías Crystal.  Pensada para aplicarse a equipos pequeños de 6 a 8 desarrolladores ubicados en el mismo sitio trabajando en sistemas que no sean críticos. Se centra en las personas, no en los artefactos.

Agile Unified Process AUP

Una versión de RUP. Implica técnicas ágiles incluyendo desarrollo orientado a pruebas, modelado ágil, gestión de cambios ágil y refactorización de bases de datos para mejorar la productividad. Se presenta en cuatro fases:

AUP tiene siete disciplinas:

  1. Modelado
  2. Implementación
  3. Pruebas
  4. Despliegue
  5. Gestión de configuración
  6. Gestión de proyecto
  7. Entorno

CASE

La siguiente clasificación es la más habitual basada en las fases del ciclo de desarrollo que cubren:

Hasta ahí la clasificación más aceptada, pero existen otros puntos de vista: