Metodología Espiral
La Ingeniería de software, se vale y
establece a partir de una serie de modelos que establecen y muestran las
distintas etapas y estados por lo que pasa un producto software, desde su
concepción inicial, pasando por su desarrollo, puesta en marcha y posterior
mantenimiento, hasta la retirada del producto. A estos modelos se les denomina
«modelos de ciclo de vida del software». El primer modelo concebido fue el de
Royce, más comúnmente conocido como desarrollo en cascada o desarrollo lineal
secuencial. Este modelo establece que las diversas actividades que se van
realizando al desarrollar un producto software se suceden de forma lineal.
PROCESO
DE DESARROLLO DE SOFTWARE
El desarrollo de un software en sí es
complejo, es usualmente no viable conseguir un 100% de confiabilidad de un
programa por pequeño que sea. Existe una gran combinación de factores que
imposibilitan realizar una verificación minuciosa de todas las posibles
situaciones de ejecución que se puedan presentar. Poniendo como ejemplo la
creación de un sistema operativo, esto es una tarea que requiere proyecto,
gestión, numerosos recursos y todo un equipo disciplinado de trabajo.
Un desarrollo de software es
imperceptible y por lo general muy abstracto, esto pone trabas en la definición
del producto y sus requisitos, más que nada cuando no se tiene precedentes
definidos de un desarrollo de software similar. Esta situación va hacer que los
requisitos sean difíciles de consolidar con anterioridad. Es por esto que ahora
los cambios en los requisitos son inevitables, no sólo después de entregado el
producto sino también durante el proceso de desarrollo. Sea cual fuere el
proceso utilizado y aplicado al desarrollo del software, casi siempre
libremente de este proceso, se debe aplicar un modelo de ciclo de vida. Según
varias fuentes consultadas se estima que, del total de proyectos software
grandes emprendidos, un 28% fracasan, un 46% caen en severas modificaciones que
lo retrasan y un 26% son totalmente exitosos. Cuando un proyecto de desarrollo
de software “fracasa” (28% estadísticamente), muy rara vez es causado por
fallas técnicas, principalmente el origen de los fallos y fracasos es la falta
de aplicación de una buena metodología o procesos de desarrollo. Una fuerte
tendencia, desde hace pocos años, es mejorar las metodologías y procesos, o
crear nuevas e incentivar a los profesionales de la informática en su
aplicación adecuada, normalmente utilizan sus conocimientos especializados con
modelos, paradigmas y procesos obsoletos que ya fueron diseñados.
MODELO
ESPIRAL
El modelo espiral en el desarrollo del
software es un modelo meta del ciclo de vida del software donde el esfuerzo del
desarrollo es iterativo, tan pronto culmina un esfuerzo del desarrollo por ahí
mismo comienza otro; además en cada ejecución del desarrollo se sigue cuatro
pasos principales:
1. Determinar o fijar los
objetivos. En este paso se definen los objetivos específicos para
posteriormente identifica las limitaciones del proceso y del sistema de
software, además se diseña una planificación detallada de gestión y se
identifican los riesgos.
2. Análisis del riesgo. En este paso se
efectúa un análisis detallado para cada uno de los riesgos identificados del
proyecto, se definen los pasos a seguir para reducir los riesgos y luego del
análisis de estos riesgos se planean estrategias alternativas.
3. Desarrollar, verificar y validar. En
este tercer paso, después del análisis de riesgo, se eligen un paradigma para
el desarrollo del sistema de software y se lo desarrolla.
4. Planificar. En este último paso
es donde el proyecto se revisa y se toma la decisión si se debe continuar con
un ciclo posterior al de la espiral. Si se decide continuar, se desarrollan los
planes para la siguiente fase del proyecto. Con cada iteración alrededor de la
espiral, se crean sucesivas versiones del software, cada vez más completas y,
al final, el sistema de software ya queda totalmente funcional.
La diferencia principal entre el modelo
espiral y los modelos anteriores (ej.: cascada, evolutivo, incremental, etc.)
es la evaluación del riesgo. El riesgo es todo lo que pueda salir mal en un
proyecto de desarrollo de software. Por ejemplo, si queremos utilizar un
lenguaje de programación para desarrollar un sistema operativo, un riesgo
posible es que los compiladores utilizables no produzcan un código objeto
eficiente. Los riesgos originan problemas en el proyecto, como el exceso de los
costos. Es así que, la disminución de los riesgos es una actividad muy
importante.
Un modelo espiral comienza con la
determinación de los objetivos tanto funcionales como de rendimiento. Después
se enumeran algunas formas posibles de alcanzar estos objetivos identificando
las fuentes de riesgos posibles. Luego continuamos con el siguiente paso que es
resolver estos riesgos y llevar a cabo las actividades de desarrollo, para
finalizar con la planificación del siguiente ciclo de la espiral.
Ventajas
• Reduce riesgos del proyecto
• Incorpora objetivos de calidad
• Integra el desarrollo con el
mantenimiento.
• Genera mucho tiempo en el desarrollo
del sistema
• Modelo costoso
• Requiere experiencia en la
identificación de riesgos
Planificar un proyecto con esta
metodología es a menudo imposible, debido a la incertidumbre en el número de
iteraciones que serán necesarias. En este contexto la evaluación de riesgos es
de la mayor importancia y, para grandes proyectos, dicha evaluación requiere la
intervención de profesionales de gran experiencia.
El IEEE clasifica al desarrollo en
espiral como modelo no operativo en sus clasificaciones de MCV.
ACOPLAMIENTOS
DEL MODELO ESPIRAL
Los nuevos requerimientos del
sistema se definen en todo los detalles posibles, esto implica generalmente el
entrevistarse con un número determinado de usuarios que representarán a todos
los usuarios tanto externos como internos y otros aspectos del sistema
existente.
Un prototipo preliminar se crea para el
desarrollo del nuevo software partiendo de un diseño hecho del sistema que se
construyó del prototipo inicial. Esto es generalmente un sistema scaled-down, y
representa una aproximación de las características del producto final.
Un segundo diseño de software es
desarrollado por un procedimiento cuádruple:
Evaluación del primer prototipo en
términos de sus fuerzas, debilidades, y riesgos;
- Definir los requisitos del segundo prototipo;
- Planeando y desarrollando el segundo prototipo;
- Construyendo y probando el segundo prototipo.
En la opción del cliente, el proyecto
completado puede ser abortado si el riesgo se juzga demasiado grande. Los
factores de riesgo pudieron implicar los excesos de coste del desarrollo,
cálculo erróneo del fusionar los costes, o cualquier otro factor que podría, en
el juicio del cliente, dar lugar a un producto final menos que
satisfactorio.
El diseño existente se evalúa de manera
semejante al igual que el diseño anterior, y, en caso de necesidad, otro
prototipo se desarrolla de él según el procedimiento cuádruple expuesto
anteriormente. Se iteran los pasos precedentes hasta que el cliente está
satisfecho sabiendo que el diseño mejorado representa el producto final deseado.
Además, se construye el sistema final, basado en el diseño mejorado. El sistema
final se evalúa y se prueba con todas las de ley. El mantenimiento general se
realiza sobre una base continua para prevenir fallas en grande y para reducir
al mínimo el tiempo perdido.
Elieth
Picon
Yeferson
Cardenas