0% encontró este documento útil (0 votos)
21 vistas12 páginas

Modelos de Ciclo de Vida del Software

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
21 vistas12 páginas

Modelos de Ciclo de Vida del Software

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Gestión de Proyectos Software Página 1

Ciclos de Vida del Software

Introducción

Un modelo de ciclo de vida define el estado de las fases a través de las cuales se mueve un
proyecto de desarrollo de software.
El primer ciclo de vida del software, “Cascada”, fue definido por Winston Royce a fines del 70.
Desde entonces muchos equipos de desarrollo han seguido este modelo. Sin embargo, ya
desde 10 a 15 años atrás, el modelo cascada ha sido sujeto a numerosas críticas, debido a
que es restrictivo y rígido, lo cual dificulta el desarrollo de proyectos de software. En su lugar,
muchos modelos nuevos de ciclo de vida han sido propuestos, incluyendo modelos que
pretenden desarrollar software más rápidamente, o más incrementalmente o de una forma
más evolutiva, o precediendo el desarrollo a escala total con algún conjunto de prototipos
rápidos.

1 Definición de un Modelo de Ciclo de Vida.


Un modelo de ciclo de vida de software es una visión de las actividades que ocurren durante el
desarrollo de software, intenta determinar el orden de las etapas involucradas y los criterios de
transición asociadas entre estas etapas.
Un modelo de ciclo de vida del software:
x Describe las fases principales de desarrollo de software.
x Define las fases primarias esperadas de ser ejecutadas durante esas fases.
x Ayuda a administrar el progreso del desarrollo, y
x Provee un espacio de trabajo para la definición de un detallado proceso de desarrollo de
software.
Así, los modelos por una parte suministran una guía para los ingenieros de software con el fin
de ordenar las diversas actividades técnicas en el proyecto, por otra parte suministran un
marco para la administración del desarrollo y el mantenimiento, en el sentido en que permiten
estimar recursos, definir puntos de control intermedios, monitorear el avance, etc.
Gestión de Proyectos Página 2

2 Alternativas de Modelos de Ciclo de Vida.

2.1 Modelo Cascada.


Este es el más básico de todos los modelos, y sirve como bloque de construcción para los
demás modelos de ciclo de vida. La visión del modelo cascada del desarrollo de software es
muy simple; dice que el desarrollo de software puede ser a través de una secuencia simple de
fases. Cada fase tiene un conjunto de metas bien definidas, y las actividades dentro de una
fase contribuye a la satisfacción de metas de esa fase o quizás a una subsecuencia de metas
de la fase. Las flechas muestran el flujo de información entre las fases. La flecha de avance
muestra el flujo normal. Las flechas hacia atrás representan la retroalimentación.
El modelo de ciclo de vida cascada, captura algunos principios básicos:
x Planear un proyecto antes de embarcarse en él.
x Definir el comportamiento externo deseado del sistema antes de diseñar su arquitectura
interna.
x Documentar los resultados de cada actividad.
x Diseñar un sistema antes de codificarlo.
x Testear un sistema después de construirlo.

Requerimientos

Diseño

Codificación y Test
Unitario

Integración del
Sistema

Operación y
Mantención

Modelo de Ciclo de Vida Cascada.


Gestión de Proyectos Software Página 3

Una de las contribuciones más importantes del modelo cascada es para los administradores,
posibilitándoles avanzar en el desarrollo, aunque en una escala muy bruta.

2.2 Modelo de Desarrollo Incremental.


Los riesgos asociados con el desarrollo de sistemas largos y complejos son enormes. Una
forma de reducir los riesgos es construir sólo una parte del sistema, reservando otros aspectos
para niveles posteriores. El desarrollo incremental es el proceso de construcción siempre
incrementando subconjuntos de requerimientos del sistema. Típicamente, un documento de
requerimientos es escrito al capturar todos los requerimientos para el sistema completo.
Note que el desarrollo incremental es 100% compatible con el modelo cascada. El desarrollo
incremental no demanda una forma específica de observar el desarrollo de algún otro
incremento. Así, el modelo cascada puede ser usado para administrar cada esfuerzo de
desarrollo, como se muestra en la figura.
El modelo de desarrollo incremental provee algunos beneficios significativos para los
proyectos:
x Construir un sistema pequeño es siempre menos riesgoso que construir un sistema
grande.
x Al ir desarrollando parte de las funcionalidades, es más fácil determinar si los
requerimientos planeados para los niveles subsiguientes son correctos.
x Si un error importante es realizado, sólo la última iteración necesita ser descartada.
x Reduciendo el tiempo de desarrollo de un sistema (en este caso en incremento del
sistema) decrecen las probabilidades que esos requerimientos de usuarios puedan
cambiar durante el desarrollo.
x Si un error importante es realizado, el incremento previo puede ser usado.
x Los errores de desarrollo realizados en un incremento, pueden ser arreglados antes del
comienzo del próximo incremento.

Requerimientos

Construir Incremento Construir Incremento


#1 #2

Modelo de Desarrollo Incremental.


Gestión de Proyectos Software Página 4

Requerimientos

Diseño Diseño

Codificación y Test Codificación y Test


Unitario Unitario

Integración del Integración del


Sistema Sistema

Operación y Operación y
Mantención Mantención

Modelo de Desarrollo Incremental con desarrollo en cascada de los incrementos.

2.3 Modelo De Desarrollo Evolutivo.


Como el modelo de desarrollo incremental, el modelo de desarrollo evolutivo (algunas veces
denominado como prototipado evolutivo) construye una serie de grandes versiones sucesivas
de un producto. Sin embargo, mientras que la aproximación incremental presupone que el
conjunto completo de requerimientos es conocido al comenzar, el modelo evolutivo asume que
los requerimientos no son completamente conocidos al inicio del proyecto.
En el modelo evolutivo, los requerimientos son cuidadosamente examinados, y sólo esos que
son bien comprendidos son seleccionados para el primer incremento. Los desarrolladores
construyen una implementación parcial del sistema que recibe sólo estos requerimientos.
El sistema es entonces desarrollado, los usuarios lo usan, y proveen retroalimentación a los
desarrolladores. Basada en esta retroalimentación, la especificación de requerimientos es
actualizada, y una segunda versión del producto es desarrollada y desplegada. El proceso se
repite indefinidamente.
Note que el desarrollo evolutivo es 100% compatible con el modelo cascada. El desarrollo
evolutivo no demanda una forma específica de observar el desarrollo de algún incremento. Así,
el modelo cascada puede ser usado para administrar cada esfuerzo de desarrollo.
Obviamente, el desarrollo incremental y evolutivo puede ser combinado también.
Todo lo que uno tiene que hacer es construir un subconjunto de requerimientos conocidos
(incremental), y comprender al principio que muchos nuevos requerimientos es probable que
aparezcan cuando el sistema sea desplegado o desarrollado.
Gestión de Proyectos Software Página 5

El desarrollo de software en forma evolutiva requiere un especial cuidado en la manipulación


de documentos, programas, datos de test, etc. desarrollados para distintas versiones del
software. Cada paso debe ser registrado, la documentación debe ser recuperada con facilidad,
los cambios deben ser efectuados de una manera controlada.

Requerimientos Requerimientos

Construir Incremento Construir Incremento


#1 #2

Modelo Evolutivo.

2.4 Modelo de Prototipado de Requerimientos.


El prototipado de requerimientos es la creación de una implementación parcial de un sistema,
para el propósito explícito de aprender sobre los requerimientos del sistema. Un prototipo es
construido de una manera rápida tal como sea posible. Esto es dado a los usuarios, clientes o
representantes de ellos, posibilitando que ellos experimenten con el prototipo. Estos individuos
luego proveen la retroalimentación sobre lo que a ellos les gustó y no les gustó acerca del
prototipo proporcionado, quienes capturan en la documentación actual de la especificación de
requerimientos la información entregada por los usuarios para el desarrollo del sistema real. El
prototipado puede ser usado como parte de la fase de requerimientos (determinar
requerimientos) o justo antes de la fase de requerimientos (como predecesor de
requerimientos). En otro caso, el prototipado puede servir su papel inmediatamente antes de
algún o todo el desarrollo incremental en modelos incremental o evolutivo.
El Prototipado ha sido usado frecuentemente en los 90, porque la especificación de
requerimientos para sistemas complejos tienden a ser relativamente dificultoso de cursar.
Muchos usuarios y clientes encuentran que es mucho más fácil proveer retroalimentación
convenientemente basado en la manipulación, desde un prototipo, en vez de leer una
especificación de requerimientos potencialmente ambigua y extensa.
Diferente del modelo evolutivo donde los requerimientos mejor entendidos están incorporados,
un prototipo generalmente se construye con los requerimientos entendidos más pobremente.
En caso que ustedes construyan requerimientos bien entendidos, el cliente podría responder
con “sí, así es”, y nada podría ser aprendido de la experiencia.
Gestión de Proyectos Software Página 6

Prototipado

Requerimientos

Diseño

Codificación y Test
Unitario

Integración del
Sistema

Operación y
Mantención

Prototipado de Requerimientos basado en el modelo Cascada.

Requerimientos

Construir Incremento Construir Incremento


#1 #2

Prototipado Prototipado

Prototipado de Requerimientos basado en el modelo de desarrollo incremental.

2.5 Modelo Espiral.


El modelo espiral de los procesos software es un modelo del ciclo de meta-vida. En este
modelo, el esfuerzo de desarrollo es iterativo. Tan pronto como uno completa un esfuerzo de
desarrollo, otro comienza. Además, en cada desarrollo ejecutado, puedes seguir estos cuatros
pasos:
Gestión de Proyectos Software Página 7

1. Determinar qué se quiere lograr.


2. Determinar las rutas alternativas que se pueden tomar para lograr estas metas. Por
cada una, analizar los riesgos y resultados finales, y seleccionar la mejor.
3. Seguir la alternativa seleccionada en el paso 2.
4. Establecer qué se tiene terminado.

La dimensión radial en la figura refleja costos acumulativos incurridos en el proyecto.


Observemos un escenario particular. Digamos que en este proyecto, nosotros viajaremos a
resolver un conjunto particular de problemas del cliente. Durante el primer viaje alrededor de la
espiral, analizamos la situación y determinamos que los mayores riesgos son la interfaz del
usuario. Después de un cuidadoso análisis de las formas alternativas de direccionar esto (por
ejemplo, construir un sistema y esperar lo mejor, escribir una especificación de requerimientos
y esperar que el cliente lo entienda, y construir un prototipo), determinamos que el mejor curso
de acción es construir un prototipo.
Lo realizamos. Luego proveemos el prototipo al cliente quien nos provee con retroalimentación
útil. Ahora, comenzamos el segundo viaje alrededor de la espiral. Este tiempo decidimos que el
mayor riesgo es ese miedo a que muchos nuevos requerimientos comiencen a aparecer sólo
después de que el sistema sea desplegado. Analicemos las rutas alternativas, y decidimos
que la mejor aproximación es construir un incremento del sistema que satisfaga sólo los
requerimientos mejor entendidos. Hagámoslo ya. Después del despliegue, el cliente nos
provee de retroalimentación que dirá si estamos correctos con esos requerimientos, pero 50
nuevos requerimientos ahora se originarán en las cabezas de los clientes. Y el tercer viaje
alrededor de la espiral comienza.

El modelo espiral captura algunos principios básicos:


x Decidir qué problema se quiere resolver antes de viajar a resolverlo.
x Examinar tus múltiples alternativas de acción y elegir una de las más convenientes.
x Evaluar qué tienes hecho y qué tienes que haber aprendido después de hacer algo.
x No ser tan ingenuo para pensar que el sistema que estás construyendo será “EL” sistema
que el cliente necesita, y
x Conocer (comprender) los niveles de riesgo, que tendrás que tolerar.
El modelo espiral no es una alternativa del modelo cascada, ellos son completamente
compatible.
Gestión de Proyectos Software Página 8

Costo

Modelo Espiral
Análisis de
Riesgo
Progreso Evaluación
de
Alternativas,
Análisis de
Identificación
Riesgo
y
S l ió d
Determinación de
Objetivos, Análisis de
Alternativas Riesgo

Análisis
Prototipo
Prototipo 1 Prototipo 2 Prototipo 3 Operacional
Revisió
Requerimien Simulaciones, Modelos y
Concepto
tos
de Requerimien
tos Software
Diseño
Diseño
Validación Producto
Desarrollo
Requerimient
Códig
Integración Test
y Test Validación y de
Verificación
Planificación
del Diseño Integració
Próximas Monitoreo
n y Test
Test de Desarrollo,
Implementaci Aceptació Verificación, Producto

2.6 Modelo Concurrente.


Como el modelo espiral, el modelo concurrente provee una meta-descripción del proceso
software. Mientras que la contribución primaria del modelo espiral es en realidad que esas
actividades del software ocurran repetidamente, la contribución del modelo concurrente es su
capacidad de describir las múltiples actividades del software ocurriendo simultáneamente.
Esto no sorprende a nadie que ha estado involucrado con las diversas actividades que ocurren
en algún tiempo del proceso de desarrollo de software. Discutamos un poco tales casos:
Los requerimientos son usualmente “líneas base”, cuando una mayoría de los
requerimientos comienzan a ser bien entendidos, en este tiempo se dedica un esfuerzo
considerable al diseño. Sin embargo, una vez que comienza el diseño, cambios a los
requerimientos son comunes y frecuentes (después de todo, los problemas reales cambian, y
nuestro entendimiento de los problemas desarrollados también). Es desaconsejado detener el
diseño en este camino cuando los requerimientos cambian; en su lugar, existe una necesidad
de modificar y rehacer líneas base de los requerimientos mientras progresa el diseño. Por
Gestión de Proyectos Software Página 9

supuesto, dependiendo del impacto de los cambios de los requerimientos el diseño puede no
ser afectado, medianamente afectado o se requerirá comenzar todo de nuevo.
Durante el diseño de arquitectura, es posible que algunos componentes comiencen a ser bien
definidos antes que la arquitectura completa sea estabilizada. En tales casos, puede ser
posible comenzar el diseño detallado en esos componentes estables. Similarmente, durante el
diseño detallado, puede ser posible proceder con la codificación y quizás regular testeando en
forma unitaria o realizando testeo de integración previo a llevar a cabo el diseño detallado de
todos los componentes.
En algunos proyectos, múltiples etapas de un producto se han desarrollado concurrentemente.
Por ejemplo, no es inusual estar haciendo mantención de la etapa 1 de un producto, y al
mismo tiempo estar haciendo mantención sobre un componente 2, mientras que se está
haciendo codificación sobre un componente 3, mientras se realiza diseño sobre una etapa 4, y
especificación de requisitos sobre un componente 5.
En todos estos casos, diversas actividades están ocurriendo simultáneamente. Eligiendo
seguir un proyecto usando técnicas de modelación concurrente, se posibilita el conocimiento
del estado verdadero en el que se encuentra el proyecto.

3 Seleccionando Modelos de Ciclo de Vida.


Los modelos presentados, suministran una guía con el fin de ordenar las diversas actividades
técnicas en el proyecto de desarrollo de software e intentan suministrar un marco para la
administración en el desarrollo y el mantenimiento. Aunque todos ellos son compatibles unos
con otros, un proyecto puede decidir cuáles enfoques son más útiles en situaciones
especiales.
Criterios a considerar:
x Madurez de la aplicación (relacionado a la probabilidad que muchos requerimientos
comenzarán a conocerse sólo después del uso del sistema).
x Complejidad del problema y de la solución.
x Frecuencias y magnitudes esperadas de los cambios de requerimientos.
x Financiamiento disponible, y su perfil como una función del tiempo.
x Acceso de los desarrolladores a los usuarios.
x Certeza de requerimientos conocidos.

Otros que pueden incluirse:


x Tolerancia al riesgo.
Gestión de Proyectos Software Página 10

x Planes y presupuestos críticos


x Grado de lentitud de construcción dentro de los planes y presupuestos.

Considerando la importancia de la planificación se recomienda realizar el desarrollo de un


proyecto de software bajo el modelo espiral insertando en él, cualquier otro modelo que se
requiera dependiendo de las necesidades que se presenten. Este modelo permite realizar una
planificación del proceso de desarrollo del software considerando los riesgos asociados en
cada etapa identificada. El identificar los riesgos en proyectos, evaluar su impacto, monitorear
y controlar el avance del desarrollo del proyecto, permite al administrador aumentar las
posibilidades de éxito de un proyecto o, minimizar las posibilidades de fracaso de éste.
Uno de los factores que más influyen en el proceso de desarrollo de software y que
prácticamente acompaña a toda aplicación es el hecho de que en su mayoría, no hay forma de
tener todos los requerimientos corregidos antes del desarrollo del software. Muchas veces los
requerimientos emergen a medida que la aplicación o partes de ella están disponible para
experimentación práctica. En todos los casos, el trabajo comienza con la determinación de
objetivos, alternativas y restricciones, paso que a veces se llama recolección preliminar de
requisitos.
El prototipado es ampliamente recomendado para realizar la especificación de requerimientos,
se debe notar que la idea del prototipado es capturar por retroalimentación los objetivos,
necesidades y expectativas del cliente por lo cual no se debe caer en una utilización de estos
prototipos como partes finales del sistema, ya que en su desarrollo generalmente no se
consideran aspectos de calidad, ni otros asociados con facilitar la etapa de mantención del
sistema. El prototipo trata de minimizar los cambios en los requerimientos, mientras que el
diseño modular (incremental, en funcionalidades) trata de minimizar el impacto de los cambios
en los requerimientos.
El cambio es una propiedad intrínseca del software. Hoy en día el software debe poseer un
enfoque evolutivo, un sistema debe evolucionar para acomodar la naturaleza evolutiva de los
grandes sistemas. El software cambia constantemente, debido a la necesidad de reparar el
software (eliminando errores no detectados anteriormente) como a la necesidad de apoyar la
evolución de los sistemas a medida que aparecen nuevos requerimientos o cambian los
antiguos.
Por lo cual es importante enfatizar que no tiene sentido entonces que un proyecto tome
estrictamente una decisión concerniente con cual modelo se adherirá. Los modelos de ciclo de
vida presentados, son complementarios en vez de excluyentes.
Gestión de Proyectos Software Página 11

En muchos casos, los paradigmas pueden y deben combinarse de forma que puedan utilizarse
las ventajas de cada uno en un único proyecto. El paradigma del modelo en espiral lo hace
directamente, combinando la creación de prototipos y algunos elementos del ciclo de vida
clásico, en un enfoque evolutivo para la ingeniería de software.
No hay necesidad por tanto de ser dogmático en la elección de los paradigmas para la
ingeniería de software: la naturaleza de la aplicación debe dictar el método a elegir. Ver Anexo.
ANEXO

SELECCIÓN DEL CICLO DE VIDA PARA UN PROYECTO SOFTWARE

En base a la siguiente tabla de caracteristicas y elementos requeridos para el proyecto


software se puede determinar el ciclo de vida más apropiado.

Requerimientos Cascada Incremental Evolutivo Prototipado Espiral

Los requerimientos son facilmente


definidos y/o bien conocidos ? SI SI NO NO NO

Pueden ser los requerimientos definidos


temprano durante el ciclo de vida? SI SI SI NO NO

Cambiaran los requerimientos


frecuentemente? NO NO NO NO SI

Hay la necesidad de demostrar los


requerimientos para alcanzar la
definición? NO NO NO SI SI

Hay la necesidad de demostrar la


validez de concepto para el sistema? NO NO NO SI SI

Especifican los requerimientos un


sistema complejo? NO SI SI SI SI

Es uno de los requerimientos la


funcionalidad temprana del sistema? NO SI SI SI SI

Otros Factores

El gerente de proyecto supervisará


cercanamente el progreso del
proyecto? SI SI SI NO SI

Es una prioridad la facilidad de


asignación de recursos? SI SI SI NO NO

También podría gustarte