domingo, 25 de febrero de 2007

CICLO DE VIDA DEL SOFTWARE

Ciclo de vida del software

Es el proceso que se sigue para construir, entregar y hacer evolucionar el software, desde la concepción de una idea, hasta la entrega y el retiro del sistema.
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.

Modelo de un ciclo de vida del software

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 dichas 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.

Tipos de modelos de un ciclo de vida del software

Modelo Cascada

Este 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.
Este modelo 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 contribuyen a la satisfacción de metas de esa fase o quizás a una subsecuencia de metas de la fase.

Un modelo de ciclo de vida cascada, tiene 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.
  • Someter a un control o prueba un sistema después de construirlo.

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.

Algunos de los beneficios que proporciona el desarrollo incremental para los proyectos son:

  • 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, solo 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 Desarrollo Evolutivo

Como el modelo de desarrollo incremental, el modelo de desarrollo 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.

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.

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.

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, se pueden pueden seguir estos cuatros pasos:

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

El modelo espiral tiene algunos principios básicos:

  • Decidir qué problema se quiere resolver antes de viajar a resolverlo.
  • Examinar las múltiples alternativas de acción y elegir una de las más convenientes.
  • Evaluar qué se tiene hecho y qué se tiene que haber aprendido después de hacer algo.
  • No ser tan ingenuo para pensar que el sistema que se está construyendo será "EL" sistema que el cliente necesita, y
  • Conocer (comprender) los niveles de riesgo, que se tendran que tolerar.

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.

No hay comentarios: