Subido por alison capote

Modelos Cascada Espiral

Anuncio
Reporte sobre los artículos: Gestionando el
desarrollo de grandes sistemas de software por Dr
W. Royce y Modelo Espiral para el desarrollo y
mejora de software por Dr B. Boehm
Ing. Alison Munoz Capote
25 de septiembre de 2019
1
Introducción
A partir del análisis de los modelos en Cascada y Espiral, los cuales se utilizan para el desarrollo de grandes sistemas de sofwatre, el presente trabajo pretende
abordar la problematica existente en cada momento por lo cual se realizaron las
propuestas. También se explica cómo cada modelo soluciona dichos problemas y
posteriormente se elabora una matriz descriptiva para cada caso.
El modelo en cascada
El modelo de desarrollo en cascada fue propuesto a principio de la década de los
70, en pleno apogeo de la crisis de software. En esa época, el desarrollo de programas
para computadoras se concentraba solo en dos actividades: análisis y codificación,
sin importar que tan complejo o grande fuera el programa. Este modelo funcionaba
hasta cierto punto, mientras que el programa fuera para el uso de los propios desarrolladores. En caso de que el programara fuera complejo, o de un tamaño considerable
y para clientes que no participaran en el proceso de desarrollo, aplicar solo estas dos
actividades implicada invertir demasiado tiempo, esfuerzo, recursos, y sin dudas,
eran proyectos destinados al fracaso ya que el desarrollo se volvía insostenible. Es
importante destacar, de que la experiencia del Dr Royce, era fundamentalmente en
proyectos espaciales, ya que trabajaba en la división espacial de TRW Inc. en el
momento que propuso el modelo.
En función de resolver el problema que generaba este modelo, Royce plantea la
incorporación de 5 actividades más en el proceso de desarrollo. Dos antes del análisis, que serían los requerimientos de sistema y los requerimientos del software (lo
cual se podría englobar en análisis de requerimientos). Después del análsis, vendría
el diseño del sistema seguido de la implementación. Posteriormente, y como últimas
dos actividades vendrían las pruebas y las operaciones (mantenimiento). Royce se
percató de que este primer modelo presentaba un problema con altos riesgos: durante el período de pruebas, se podrían arrojar fallos en cuanto a funcionamiento
del sistema (elaboración del software de la manera correcta). Estos fallos, en casos
de ser de gran magnitud, pueden implicar realizar cambios considerables tanto en el
diseño como en los requisitos del software.
Cambios de esta magnitud en una de las actividades finales, podría afectar de
manera desiciva el exito del proyecto, por el esfuerzo, tiempo y recursos que serían
necesarios para resolver los fallos detectados. Para eviar este riesgo, Roy propone 5
criterios:
1. Primero el diseño
Esta etapa iría antes del análsis. El propósito que persigue es realizar el diseño
de un prototypo de software (con sus modos de procesamiento de datos) bien
documentado, que incluya todas las etapas del desarrollo. Una de las restricciones es que esta etapa debe comenzar únicamente con los diseñadores. El
objetivo fundamental es que cada trabajador de proyecto, sin importar la fase
en la que se encuentre, tuviera una idea general del sistema.
2
2. Documentar el diseño
Considerado el criterio más importante. Se enfoca de la suma importancia de
documentar tanto y tan detallada como sea posible, en cada una de las etapas del desarrollo. Hace énfasis de que el éxito del proyecto, depende en gran
medida de su documentación, ya que esta permite en cada etapa, una plena
comprensión del sistema que se está desarrollando y del estado en el que se
encuentra, sin necesidad de terceros y sin los riesgos de los malos entendidos
del lenguaje natural.
3. Repetirlo dos veces
La idea es simular, a partir del diseño preliminar, cada una de las etapas del
software realizando un prototipo o primera versión del proyecto. Se establece
el uso de un tercio del tiempo total estimado para el proyecto. Este prototipo
permitirá corregir los aspectos más criticos detectados y utilizar esta información en cada una de las actividades correspondientes.
4. Planear, controlar y monitorear las pruebas
Se condidera la etapa crítica debido a que detecta, en términos de funcionales,
el éxito del proyecto ya que todo problema que se detecte en esta etapa, tiene
un margen bien reducido de solución. Los criterios antes mencionados, se establencen con el propósito de que las pruebas muestren un resultado exitoso
para el proyecto disminuyendo así los riesgos de esta etapa. Es por ello que se
pretende que se hagan con exigencia y de forma municiosa.
5. Involucrar al cliente
Una de las novedades del modelo en cascada, y sobre todo para esta época,
era la propuesta de que el cliente estuviera involucrado en distintas etapas del
desarrollo con el objetivo de, dentro de los límites, ir valindando parcialmente
los resultados del producto. Téngase en cuenta que en el contecto donde se
propuso este modelo, los mayores conocedores del dominio del problema, eran
los clientes.
El modelo en espiral
El modelo en espiral, el cual fue publicado por primera vez en 1986 como alternativa a los modelos de la época, predominando fundamentalmente el Modelo en
Cascada. Boehm, realiza un análisis de los grupos de modelos usados en el desarrollo
de software para ese entonces, e indentifica los principales problemas de cada uno,
los cuales se muestran a continuación.
1. Modelo codifica-corrige
Fue el primer modelo de desarrollo de software, en el cual se manifiestan los
siguientes problemas:
3
a) El código se volvía rápidamente pobre en su estructura después de un
número de correcciones.
b) El usuario no participaba en el desarrollo lo que probocaba que no se
desarrollara el software correcto o que los cambios a realizar se volvieran
inviables.
c) Era muy costoso realizar correcciones porque existia una insuficiente preparación para las pruebas y/o modificaciones.
2. Modelo en Cascada
Fue el modelo propuesto, fundamentalmente para resolver los problemas planteados por el modelo codifica-corrige(fue descrito anteriormente). Las principales dificultades que presenta son:
a) Énfasis en la elaboración detallada y completa de la documentación como criterios de finalización en fases tempranas del proyecto (por eso es
considerado un modelo rígido).
b) El principio anterior es poco aplicable a sistemas de software altamente
interactivos con el usuario-final durante el proceso de desarrollo.
c) Elaboración de documentación con poca comprensión de las interfaces
de usuario y/o de las funciones de soporte para la toma de desiciones,
probocando el diseño y desarrollo de código inservible.
3. Modelo de desarrollo evolutivo En este modelo las etapas están definidas a
partir de la expansión de los incrementos de un producto de software operativo.
Se utiliza fundamentalmente cuando el usuario no sabe describir exactamente
el tipo de producto que necesita. Los problemas que presenta son los siguientes:
a) Ausencia de planificación y código deficiente en estructura y de alto costo en cambios. En este aspecto, este modelo se considera una versión
modificada del modelo codifica-corrige.
b) Es basado en la mítica suposición que el sistema operativo del usuario
será lo suficiente flexible las rutas sin planear de este modelo.
c) Prioriza la flexibilidad para el cambio en el código por encima de las
consideraciones arquitectónicas y de uso a largo alcance.
4. Modelo de transformación Se propone con el propósito de resolver el problema del código de spaguettis provocado por los modelos anteriores incluyendo el modelo en cascada. Asume la existencia de la capacidad para convertir
una especificación formal en un producto de software en el programa de manera que satisfaga la especificación. Aunque resuelve en alguna medida estos
problemas, genera también los siguientes:
a) Las capacidades de transformación automaticas, solo se encuentran en
pequeños productos en áreas muy limitadas.
b) El modelo de transformación presenta los mismos problemas del modelo
de desarrollo evolutivo respecto a la suposición mítica de sistemas flexibles
al cambio sin planificación.
4
El modelo en espiral pretende abordar y resolver cada una de estos problemas,
mostrándose como un modelo ajustable a cada uno de los anteriores y teniendo
como base el refinamiento de varios modelos basados en el modelo en cascada. Es
un modelo orientado al riesgo, donde cada uno de los ciclos de la espiral aborda
cada una de las etapas establecidas en el modelo en cascada. Cada ciclo construye
un prototipo del producto que aumenta en tamaño y en complejidad ya que es
progresivo. El ciclo comienza identificando los siguientes aspectos:
Objetivos de la porción del producto a elaborar.
Alternativas de implementación en esta porción.
Las restricciones impuestas por las alternativas planteadas (permite la evaluación de riesgos).
Este enfoque de objetivos-alternativas-restricciones-evaluación de riesgos y posterior
planificación para la siguiente fase, permiten al modelo tal flexibilidad que podría
de esta forma ajustarse a cualquier enfoque de desarrollo de software.
Matriz descriptiva
Cascada
Espiral
Análisis
Problema
Solución
Código pobre en su estruc- Crear fase previa de diseño.
tura después de un número
de correcciones.
Elaboración de software in- Crear fase previa de requecorrecto o cambios difíciles rimientos.
de realizar.
Insuficiente preparación pa- Planificación y preparación
ra las pruebas y/o modifica- para las pruebas en primeciones.
ras etapas. Incorporación de
5 pasos adicionales al modelo en vista a disminuir al
máximo los riesgos en la etapa final del proyecto.
Sistemas rígidos orientados Ciclos incrementales con
a la documentación
elaboración de objetivos para cada uno y desarrollo de
prototipos.
Sistemas flexibles orienta- Gestión de alternativas y
dos al código
riesgos en cada ciclo.
5
Descargar