Modelo Evolutivo
Se intenta obtener en las primeras etapas un producto operativo. Evolución de ese primer producto. Sistemas que previsiblemente cambiarán en su período de funcionamiento. Nunca logra estabilizar los requisitos, ciclo del proyecto = ciclo de vida.
Inconvenientes:
- Carece de planificación.
- Producción de software mal estructurado.
- Código difícil de modificar por haberse hecho antes del análisis del sistema.
- Dificultad para integrarse con otras aplicaciones.
- Poco utilizable en sistemas grandes al no poder gestionarse el control de cambios.
- No es aconsejable para sustituir a sistemas bien definidos.
Modelo Incremental
Parecido al evolutivo. Se crea el sistema añadiendo componentes funcionales al sistema (incrementos). En cada paso se actualiza el sistema. Software como integración de resultados.
Inconvenientes:
- Se puede volver a soluciones prueba/error no estructuradas.
- El usuario es reacio a un desarrollo que no sabe cómo va a ser realmente.
Modelo en Espiral
Se debe a Barry Boehm. Surge para paliar los problemas del ciclo de vida clásico. Introduce el análisis de riesgos. Compuesto de una serie de ciclos. La espiral se divide en cuatro cuadrantes. El proyecto se comienza en el centro de la espiral y se avanza hasta llegar al final.
Planificación
- Identificación de los objetivos del producto.
- Alternativas. Estudio de las restricciones.
Análisis de riesgos
- Evaluación de las alternativas respecto a los objetivos y a las restricciones.
- Análisis de incertidumbres.
- Creación de un prototipo.
- Elementos de riesgo: Carencias de personal o de cualificación, presupuestos o planificación no realistas, desarrollo de funciones software incorrectas, desarrollo de una interfaz de usuario incorrecta, cambio de requisitos continuo, carencias de los elementos comprados en el exterior, carencias en las tareas realizadas en el exterior, restricciones de tiempo real, sobrepasar las posibilidades actuales de la informática.
Ingeniería
- Desarrollo y verificación del producto del siguiente nivel.
Evaluación
- Revisión.
Ventajas:
- Toma lo mejor y evita lo peor de los demás modelos, según la situación en cada momento.
- Las opciones de reutilización se tienen en cuenta desde el primer momento.
- Proporciona una preparación para la evolución, crecimiento y cambio.
- Proporciona un mecanismo para incorporar objetivos de calidad en el desarrollo.
- Se centra en la eliminación de errores y opciones no atractivas desde el principio.
- Determina el nivel de esfuerzo de cada fase en cada proyecto.
- Se sigue el mismo procedimiento para el desarrollo que para el mantenimiento, con lo que se evitan los problemas de las “mejoras rutinarias” de alto riesgo.
- Permite una gran flexibilidad.
- Se adapta bien al diseño y programación orientado a objetos.
Inconvenientes:
- No ha sido desarrollado en el mundo de la contratación comercial sino en el de desarrollo interno.
- Necesita experiencia en la evaluación de riesgos, expertos, que no siempre están disponibles.
- Necesita una elaboración adicional de los pasos del modelo.
- Es un modelo relativamente nuevo y no se ha usado tanto como el modelo en cascada o el modelo de prototipos.
Diferencias con otros modelos
- Existe un reconocimiento explícito de las diferentes alternativas para alcanzar los objetivos del proyecto.
- El modelo se centra en identificar los riesgos de cada alternativa, así como las formas de solventarlos.
- La división de los proyectos en ciclos, cada uno con un acuerdo al final, implica que existe un acuerdo para los cambios a realizar o para la finalización del mismo, en función de lo aprendido a lo largo del proyecto.
- Es un método que se adapta a cualquier tipo de actividad, alguna de las cuales no existen en otros paradigmas, como puede ser la consulta a asesores externos.
Metodologías
Resulta necesario establecer un enfoque sistemático y disciplinado para llevar a cabo un desarrollo software. Las metodologías de desarrollo influyen de forma directa en este proceso de construcción. Se elaboran a partir del marco definido por uno o varios ciclos de vida. No existe un consenso entre los diversos autores sobre el concepto de metodología.
Definición
Conjunto de pasos y procedimientos que deben seguirse para el desarrollo de software.
¿Qué Cubren las Metodologías?
- Mejores aplicaciones.
- Mejor proceso de desarrollo.
- Contar con un proceso estándar en la Organización.
Objetivos de las Metodologías
- Establecer los requisitos de un sistema software de una forma acertada.
- Construir un sistema software dentro de un tiempo apropiado y unos costes aceptables.
- Construir un sistema que esté bien documentado y que sea fácil de mantener.
- Ayudar a identificar, lo antes posible, cualquier cambio que sea necesario realizar dentro del proceso de Desarrollo.
- Proporcionar un sistema que satisfaga a todas las personas afectadas por el mismo.
Características Deseables en una Metodología
- Existencia de reglas predefinidas.
- Cobertura total del ciclo de vida.
- Verificaciones intermedias.
- Planificación y control.
- Comunicación efectiva.
- Utilización en amplio espectro de proyectos.
- Fácil formación.
- CASE.
- Actividades para mejorar el proceso de desarrollo.
- Soporte al mantenimiento.
- Soporte a la reutilización del software.
Metodología vs Método
Confusión entre los términos metodología, método y ciclo de vida por abuso del lenguaje técnico. Una metodología puede seguir uno o varios modelos de ciclo de vida, esto es, el ciclo de vida indica qué es lo que hay que obtener a lo largo del desarrollo del proyecto, pero no cómo. Esto sí lo debe indicar la metodología. Una metodología es un concepto más amplio que el de método. Así, se puede considerar a la metodología como un conjunto de métodos.
Clasificación
- Estructuradas: Orientadas a procesos, orientadas a datos (estructuras de datos jerárquicas, estructuras de datos no jerárquicas), mixtas.
- Orientadas a objeto.