Ciclo de Vida del Software
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
moderno. 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.
Definición de un Modelo de Ciclo de Vida
Un modelo de ciclo de vida de software es una vista 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:
Describe las fases principales de desarrollo de software.
Define las fases primarias esperadas de ser ejecutadas
durante esas fases.
Ayuda a administrar el progreso del desarrollo, y
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
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:
Planear un proyecto antes de embarcarse en él.
Definir el comportamiento externo deseado del sistema antes
de diseñar su arquitectura interna.
Documentar los resultados de cada actividad.
Diseñar un sistema antes de codificarlo.
Testear un sistema después de construirlo.
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.
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:
Construir un sistema pequeño es siempre menos riesgoso que
construir un sistema grande.
Al ir desarrollando parte de las funcionalidades, es más
fácil determinar si los requerimientos planeados para los niveles subsiguientes
son correctos.
Si un error importante es realizado, sólo la última
iteración necesita ser descartada.
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.
Si un error importante es realizado, el incremento previo
puede ser usado.
Los errores de desarrollo realizados en un incremento,
pueden ser arreglados antes del comienzo del próximo incremento.
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.
No hay comentarios:
Publicar un comentario