Modelos de software

Ciclo de vida se refiere al período de tiempo que comienza cuando se concibe la idea de generar el programa hasta que finalmente se retira.
• Waterfall (en cascada): Se denomina modelo en cascada porque su característica principal es que no se comienza con un paso hasta que no se ha terminado el anterior.
El principal problema de esta aproximación es el que no podemos esperar el quelas especificaciones iniciales sean correctas y completas y que el usuario puede cambiar de opinión sobre una u otra característica. Además los resultados no se pueden ver hasta muy avanzado el proyecto por lo que cualquier cambio debido a un error puede suponer un gran retraso además de un alto coste de desarrollo.
Como es evidente esto es solo un modelo teórico, si el usuario cambia deopinión en algún aspecto tendremos que volver hacia atrás en el ciclo de vida.
• Prototipos: Consiste en iterar en la fase de análisis tantas veces como sea necesario, mostrando prototipos al usuario para que pueda indicarnos de forma mas eficiente los requisitos del sistema. La iteración finalizará cuando el usuario de el visto bueno al prototipo.
• Evolutivo: Se diferencia del modelo porprototipos en que en prototipos se da por hecho que aunque se necesiten varias iteraciones para lograrlo al final se llegará a tener una serie de requisitos completos y sin errores, que no vayan a cambiar más.
En el modelo evolutivo se asume que los requisitos pueden cambiar en cualquier momento del ciclo de vida y no solo en la etapa de análisis.
• Incremental: Es una aproximación muyparecida a la evolutiva. En este modelo se desarrolla el sistema para satisfacer un subconjunto de los requisitos especificados y en posteriores versiones se incrementa el programa con nuevas funcionalidades que satisfagan mas requisitos.
En el caso del modelo evolutivo se desarrollaría una nueva versión de todo el sistema, en el incremental se parte de la versión anterior sin cambios y leañadimos las nuevas funciones.
• En espiral: Toma las ventajas del modelo de desarrollo en cascada y el de prototipos añadiéndole el concepto de análisis de riesgo.
Se definen cuatro actividades:
o Planificación, en la que se recolectan los requisitos iniciales o nuevos requisitos a añadir en esta iteración.
o Análisis de riesgo; basándonos en los requisitosdecidimos si somos capaces o no de desarrollar el software y se toma la decisión de continuar o no continuar.
o Ingeniería, en el que se desarrolla un prototipo basado en los requisitos obtenidos en la fase de planificación.
o Evaluación del cliente: el cliente comenta el prototipo. Si esta conforme con el se acaba el proceso, si no se añaden los nuevos requisitos en la siguienteiteración.
• Basada en transformaciones: Derivado del modelo en cascada, en el se considera que partiendo de las especificaciones y gracias a las herramientas CASE estas se transforman en diseño lógico del software, este se transforma en un diseño físico (un diseño dependiente de la tecnología) y éste en el código final.

EL MODELO DE DESARROLLO CONCURRENTE
Es un modelo de tipo de red dondetodas las personas actúan simultáneamente o al mismo tiempo.
Davis Sitaram ha descrito el modelo de desarrollo concurrente, llamado algunas veces ingeniería concurrente, de la siguiente forma:
Los gestores de proyectos que siguen los pasos del estado del proyecto en lo que se refiere a las fases importantes [del ciclo de vida clásico] no tiene ideal del estado de sus proyectos. Estos son ejemplosde un intento por seguir los pasos extremadamente simples. Tenga en cuenta que aunque un proyecto [grande] este en la fase de codificación, hay personal de ese proyecto implicado en actividades asociadas generalmente a muchas fases de desarrollo simultáneamente. Por ejemplo,…el personal esta escribiendo requisitos diseñando, codificando, haciendo pruebas y probando la integración (todo al…