La idea detrás de este modelo es el desarrollo de una implantación del sistema inicial, exponerla a los comentarios del usuario, refinarla en N versiones hasta que se desarrolle el sistema adecuado. En la Figura 12 se observa cómo las actividades concurrentes: especificación, desarrollo y validación, se realizan durante el desarrollo de las versiones hasta llegar al producto final.
Una
ventaja de este modelo es que se obtiene una rápida realimentación del usuario,
ya que las actividades de especificación, desarrollo y pruebas se ejecutan en
cada iteración.
Figura 12: Modelo de desarrollo evolutivo.
Existen
dos tipos de desarrollo evolutivo:
·
Desarrollo Exploratorio: El objetivo de este
enfoque es explorar con el usuario los
requisitos hasta llegar a un sistema final. El desarrollo comienza con
las partes que se tiene más claras. El sistema evoluciona conforme se añaden
nuevas características propuestas por el usuario.
·
Enfoque
utilizando prototipos: El objetivo
es entender los requisitos del usuario y trabajar para mejorar la calidad de
los requisitos. A diferencia del desarrollo exploratorio, se comienza por
definir los requisitos que no están claros para el usuario y se utiliza un
prototipo para experimentar con ellos. El prototipo ayuda a terminar de definir
estos requisitos.
Este
modelo no secuencial, basado en la construcción de simulaciones o modelos
ejecutables de aplicaciones más extensos, persigue un objetivo principal: la
participación directa del cliente en la construcción del software requerido.
Las fases son similares a las del modelo en cascada: es necesario un análisis
previo de los requisitos tanto del sistema como del cliente, se concibe la
arquitectura del sistema y se realiza el diseño del software. Sin embargo, se
incluye un elemento hasta ahora no utilizado, que consiste en el diseño rápido
de un prototipo que se mostrará al cliente para que evalúe el trabajo
realizado.[1]
El
prototipo es una versión reducida del programa completo; es una fachada virtual
que mostramos al cliente (que carece de la posibilidad de ser utilizada de la
forma en que lo haríamos con el software final.
Tras recoger los requisitos tanto del cliente
como del sistema, se comienza con el diseño rápido del prototipo; el diseño
completo obedece al previo diseño de pequeños prototipos específicos para
funciones individuales. Más tarde, estos diseños serán unidos en uno sólo.
Después,
se procede a la construcción del mismo. Éste prototipo es el que mostraremos al
cliente para que lo evalúe y considere cambios en él, aunque no se trate de una
versión definitiva.
Entre
los puntos favorables de este modelo están:
·
La especificación
puede desarrollarse de forma creciente.
·
Los usuarios y
desarrolladores logran un mejor entendimiento del sistema. Esto se refleja en
una mejora de la calidad del software.
·
Es más efectivo
que el modelo de cascada, ya que cumple con las necesidades inmediatas del
cliente.
Desde
una perspectiva de ingeniería y administración se identifican los siguientes
problemas:
·
Proceso no
Visible: Los administradores necesitan entregas para medir el progreso. Si el
sistema se necesita desarrollar rápido, no es efectivo producir documentos que
reflejen cada versión del sistema.
·
Sistemas
pobremente estructurados: Los cambios continuos pueden ser perjudiciales para
la estructura del software haciendo costoso el mantenimiento.
·
Se requieren
técnicas y herramientas: Para el rápido desarrollo se necesitan herramientas
que pueden ser incompatibles con otras o que poca gente sabe utilizar.
Este
modelo es efectivo en proyectos pequeños (menos de 100.000 líneas de código) o
medianos (hasta 500.000 líneas de código) con poco tiempo para su desarrollo y
sin generar documentación para cada versión.
Para
proyectos largos es mejor combinar lo mejor del modelo de cascada y evolutivo:
se puede hacer un prototipo global del sistema y posteriormente reimplementarlo
con un acercamiento más estructurado. Los subsistemas con requisitos bien
definidos y estables se pueden programar utilizando cascada y la interfaz de
usuario se puede especificar utilizando un enfoque exploratorio.
No hay comentarios:
Publicar un comentario