Qu es un modelo de desarrollo? Un modelo de desarrollo es una representacin abstracta de un proceso de software, cada modelo representa el proceso de desarrollo de software de una manera en particular. A pesar de estar definidos claramente, no representan necesariamente la realidad de cmo se debe desarrollar el software, sino que establece un enfoque comn. Un modelo puede ser modificado y adaptado de acuerdo a las necesidades del software en desarrollo. En forma general podemos clasificar los modelos de desarrollo en 3 grupos: 1. El modelo en cascada. Considera las actividades fundamentales del proceso de especificacin, desarrollo, validacin y evolucin, y los representa como fases separadas del proceso, tales como la especificacin de requerimientos, el diseo del software, la implementacin, las pruebas, etctera. 2. Desarrollo evolutivo. Este enfoque entrelaza las actividades de especificacin, desarrollo y validacin. Un sistema inicial se desarrolla rpidamente a partir de especificaciones abstractas. ste se refina basndose en las peticiones del cliente para producir un sistema que satisfaga sus necesidades. 3. Ingeniera del software basada en componentes. Este enfoque se basa en la existencia de un nmero significativo de componentes reutilizables. El proceso de desarrollo del sistema se enfoca en integrar estos componentes en el sistema ms que en desarrollarlos desde cero. Aunque existen muchos tipos de modelos de desarrollo, de forma genrica la mayora est clasificada en una de estas 3 categoras, y estos a pesar de ser diferentes a veces son usados de manera simultneamente especialmente en sistemas grandes. Desarrollo Evolutivo El desarrollo evolutivo consta del desarrollo de una versin inicial que luego de exponerse se va refinando de acuerdo de los comentarios o nuevos requerimientos por parte del cliente o del usuario final. Las fases de especificacin, desarrollo y validacin se entrelazan en vez de separarse.
Existen dos tipos de desarrollo evolutivo:
1. Desarrollo exploratorio, donde el objetivo del proceso es trabajar con el cliente para explorar sus requerimientos y entregar un sistema final. El desarrollo empieza con las partes del sistema que se comprenden mejor. El sistema evoluciona agregando nuevos atributos propuestos por el cliente. 2. Prototipos desechables, donde el objetivo del proceso desarrollo evolutivo es comprender los requerimientos cliente y entonces desarrollar una definicin mejorada de requerimientos para el sistema. El prototipo se centra experimentar con los requerimientos del cliente que no comprenden del todo.
de del los en se
Desde el punto de vista de desarrollo de sistema el enfoque
evolutivo suele traer ms ventajas en comparacin con un enfoque en cascada ya que el sistema se va ajustando a las necesidades del cliente, a la vez que l mismo entiende mejor sus propios requerimientos. Sin embargo el enfoque evolutivo desde una perspectiva de ingeniera y gestin suele tener dos grandes problemas: 1. El proceso no es visible. Los administradores tienen que hacer entregas regulares para medir el progreso. Si los sistemas se desarrollan rpidamente, no es rentable producir documentos que reflejen cada versin del sistema. 2. A menudo los sistemas tienen una estructura deficiente. Los cambios continuos tienden a corromper la estructura del software. Incorporar cambios en l se convierte cada vez ms en una tarea difcil y costosa. Aunque supone grandes ventajas el desarrollo evolutivo solo es recomendado para sistemas pequeos y medianos. En los sistemas grandes, los constantes cambios en el desarrollo solo dificultan la estabilidad y la integracin de los avances de los distintos grupos de trabajo que puedan existir. La mayora de las empresas que desarrollan grandes sistemas usan un modelo mixto que usa las mayores fortalezas de los enfoques evolutivos y de cascada. Modelo Espiral Es un modelo de desarrollo evolutivo propuesto por Barry Boehm, que utiliza prototipos como apoyo. La forma de espiral representa una iteracin (repeticin) de procesos que, a medida
que se van entregando prototipos y stos son revisados por los
clientes o usuarios finales, el tiempo empleado para desarrollar la prxima versin es cada vez mayor. Cada divisin recibe el nombre de regin de tareas. Aunque el modelo espiral representa ventajas por sobre el desarrollo lineal, el clculo de los riesgos puede ser muy complicado y no es tan usado en la realidad.
Modelo Espiral WINWIN (gana & gana)
Una variante interesante del Modelo Espiral es el Modelo espiral Win-Win. El Modelo Espiral previo (clsico) sugiere la comunicacin con el cliente para fijar los requisitos, en que simplemente se pregunta al cliente qu necesita y l proporciona la informacin para continuar, sin embargo, esta es una situacin que rara vez ocurre. Normalmente el cliente y desarrollador entran en una negociacin, se negocia coste frente a funcionalidad, rendimiento, calidad, etc. Las mejores negociaciones se fuerzan en obtener Victoria & Victoria (Win & Win), es decir que el cliente gane obteniendo el producto que lo satisfaga, y el desarrollador tambin gane consiguiendo presupuesto y fecha de entrega realista. Evidentemente, este modelo requiere fuertes habilidades de negociacin. Modelo de desarrollo concurrente Es un modelo de tipo de red donde todas las personas actan simultneamente o al mismo tiempo. Davis Sitaram ha descrito el modelo de desarrollo concurrente, llamado algunas veces ingeniera 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 clsico] no tiene ideal del estado de sus proyectos. Estos son ejemplos de un intento por seguir los pasos extremadamente simples. Tenga en cuenta que aunque un proyecto [grande] este en la fase de codificacin, hay personal de ese proyecto implicado en actividades asociadas generalmente a muchas fases de desarrollo simultneamente. Por ejemplo,...el personal est escribiendo requisitos diseando, codificando, haciendo pruebas y probando la integracin (todo al mismo tiempo). Los modelos de proceso de ingeniera del software de Humphrey y Kellner han mostrado la concurrencia que existe para actividades que ocurren para cualquier fase. El trabajo ms reciente de Kellner utiliza diagramas de estado para representar la relacin concurrente que existe entre actividades asociadas a un acontecimiento especifico, pero falla en capturar
la riqueza de la concurrencia que existe en todas las actividades
del desarrollo y de gestin del software en mi proyecto...La mayora de los modelos de procesos de desarrollo del software son dirigido por el tiempo; cuanto ms tarde sea, ms atrs se encontrara en el proceso de desarrollo. (Un modelo de proceso concurrente) est dirigido por las necesidades del usuario, las decisiones de la gestin y los resultados de las revisiones. Modelo Incremental El modelo incremental es una unin de las mejores funcionalidades del modelo de cascada y del modelo de prototipos. A medida que se presenta un prototipo se produce un incremento, que es una iteracin del proceso anterior pero aplicando las experiencias aprendidas del proceso anterior. A diferencia del modelo de prototipos, los prototipos de este modelo estn orientados a ser operacionales en cada incremento y no ser solo una previa de cmo sera el sistema en su versin final.