Modelos de Proceso de Software: Cascada, Evolutivo y Más
Enviado por Programa Chuletas y clasificado en Informática y Telecomunicaciones
Escrito el en
español con un tamaño de 5,08 KB
¿Qué es un Proceso de Software?
Un proceso de software es un conjunto estructurado de actividades necesarias para desarrollar un sistema de software. Estas actividades fundamentales incluyen:
- Especificación: Definir qué debe hacer el sistema.
- Diseño e implementación: Crear y codificar el sistema.
- Validación: Comprobar que el sistema cumple con lo que el cliente necesita.
- Evolución: Modificar el sistema para adaptarse a nuevas necesidades.
Un modelo de proceso de software es una representación abstracta de dicho proceso, una simplificación que nos ayuda a entenderlo. Los modelos generales, también conocidos como paradigmas del proceso de software, son abstracciones útiles para explicar diferentes enfoques para el desarrollo. Para desarrollar un sistema muy complejo, se pueden utilizar diferentes paradigmas para diversas partes del mismo.
Modelos Genéricos de Proceso de Software
Existen varios modelos genéricos que sirven como base para el desarrollo de software:
- Modelo en Cascada: Las fases de especificación y desarrollo son separadas y distintas.
- Desarrollo Evolutivo: La especificación y el desarrollo están entrelazados y se realizan de forma incremental.
- Desarrollo Basado en la Reutilización: El sistema se ensambla a partir de componentes preexistentes.
El Modelo en Cascada (Waterfall Model)
El modelo en cascada fue el primer modelo de proceso de desarrollo de software, derivado de otros procesos de ingeniería. A menudo se le denomina ciclo de vida del software. Su característica principal es que representa las actividades fundamentales del proceso como fases separadas y secuenciales. El modelo se llama "cascada" debido a que el flujo de trabajo avanza de una fase a otra, como una cascada.
Etapas del Modelo en Cascada
- Análisis y definición de requisitos: Los servicios, restricciones y metas del sistema se definen en detalle a partir de las consultas con los usuarios. El resultado sirve como una especificación del sistema.
- Diseño de sistemas y de software: Se separan los requisitos de hardware y de software y se establece una arquitectura completa del sistema.
- Implementación y prueba de unidades: Se desarrolla el código en unidades o módulos de programa. Cada unidad debe cumplir con su especificación particular.
- Integración y prueba del sistema: Las unidades se integran y se prueban como un sistema completo para asegurar que cumple con los requisitos generales del software.
- Operación y mantenimiento: El sistema se instala y se pone en uso. En esta fase se corrigen errores no descubiertos en las etapas anteriores, se mejora la implementación de las unidades y se atienden nuevos requisitos para evolucionar los servicios del sistema.
Problemas del Modelo en Cascada
- Rigidez secuencial: Cada fase debe ser completada antes de seguir con la siguiente. En la práctica, las etapas interaccionan e intercambian información, por lo que el proceso no es un modelo lineal simple, sino que implica una serie de iteraciones.
- Costo de las iteraciones: Las iteraciones son costosas, ya que implican rehacer trabajo y volver a aprobar documentación. Después de algunas iteraciones, se tiende a romper la regla de que cada fase debe ser terminada para seguir con la siguiente.
- Dificultad para gestionar cambios: Pueden aparecer errores, omisiones o la necesidad de nuevas funcionalidades que obliguen a repetir etapas previas del proceso, lo cual es ineficiente en este modelo.
Ventajas
- Es consistente con los procesos de ingeniería tradicionales.
- La documentación generada en cada fase es un hito claro que marca la finalización de la misma.
¿Cuándo usarlo?
Este modelo solo se debe utilizar cuando los requisitos están muy claros y existe una baja probabilidad de que cambien en el tiempo.
El Modelo Evolutivo
Este modelo se basa en la idea de desarrollar una implementación inicial, exponerla a los usuarios para que la comenten y refinarla a través de varias versiones hasta que se desarrolle un sistema adecuado. Existen dos tipos principales:
Desarrollo Exploratorio
El objetivo es trabajar con los clientes y evolucionar hacia un sistema final a partir de una especificación inicial. Debería partir de requisitos relativamente bien conocidos para explorar aspectos inciertos.
Prototipos Desechables
El objetivo principal es entender los requisitos del sistema. Se construye un prototipo rápido para aclarar los requisitos y luego se descarta para construir el sistema final con un proceso más estructurado. Debería comenzar con requisitos pobremente conocidos o ambiguos.