martes, 11 de septiembre de 2012

Ciclo de vida en espiral Win & Win

Barry Boehm, años después realizó una variante o actualización del ciclo de vida en espiral que definió en 1988.

 
Con la variante trata de ajustarse más a la realidad de lo que es un proyecto de desarrollo de software, en el cual el resultado final no es exactamente la implementación del catálogo de requisitos, sino que una vez definido se renegocia el alcance del mismo, incluso en diversas partes del proyecto, entre cliente y proveedor con el objetivo de intentar que ambas partes queden satisfechas (aunque en la mayoría de los casos, cada parte solo se mire su ombligo).
La variante se basa en la inclusión de tres etapas o regiones al principio:

1.- Identificar las partes interesadas (stakeholders) para esta nueva iteración del producto: Es necesario definir los interlocutores que serán de áreas que se verán afectadas por el resultado final de la nueva versión. Estos interlocutores serán del área del cliente (puede haber más de uno) y del proveedor.

2.- Identificar las condiciones de victoria de las partes interesadas en el proyecto: Se concreta cuáles son las condiciones que requiere cada parte para que se sienta satisfecha una vez realizada esta versión.
3a.- Reunir las condiciones de victoria: Con las etapas anteriores se han definido unos objetivos generales para la versión y se obtiene conocimiento de los objetivos particulares de cada parte. Ahora toca negociar hasta dónde realmente se va a llegar y cómo, intentando llegar a una solución en la que todos ganen (cliente y proveedor).

Las siguientes etapas tienen una correspondencia con algunas variantes, con la versión inicial del ciclo de vida en espiral:
3b.- Establecer los objetivos, restricciones y alternativas del siguiente nivel: Teniendo en cuenta los objetivos y acuerdos de las fases anteriores, se definirían los requisitos de esta versión, además de especificarse diversas alternativas en el caso de que existan.

4.- Evaluar las alternativas del producto y del proceso y resolución de riesgos: Se realizaría el análisis del riesgo típico de los modelos en espiral.

5.- Definir el siguiente nivel del producto y del proceso, incluyendo particiones: Esta etapa completaría el proceso de análisis y realizaría el diseño y la construcción.

6.- Validar las definiciones del producto y del proceso: Comprendería la implantación y aceptación de la versión, verificándose si el resultado de la iteración satisface el alcance indicado.

7.- Revisión y comentarios: Tocaría hacer inventario, medir el nivel de satisfacción de las partes, el nivel de cumplimiento de objetivos con el objetivo sobre todo de intentar aprender de los errores para mejorar en versiones sucesivas y de detectar correcciones y mejoras a realizar en el producto.

Lo más interesante del modelo es que se especifique de forma explícita la necesidad de que las partes negocien para llegar a un acuerdo satisfactorio para todos, por eso esta variante recibe el nombre de Win Win. Aunque es complicado alcanzar un equilibrio en el que ambas partes ganen a un 50%, sí que es fundamental que independientemente de si uno es un poco más ganador que el otro, todas las partes estén convencidas en que el acuerdo es bueno.

En cualquier caso sigue sin ser absolutamente realista con respecto al transcurso normal de un proyecto de desarrollo de software, donde la negociación se extiende en muchos proyectos hasta el mismo proceso de construcción del sistema de información, no obstante, si los incrementos no son muy grandes no tendría por qué extenderse tanto la negociación, no obstante, como en este tipo de modelos de ciclo de vida, en cada iteración (incluida la primera) se intenta tener un producto funcionando, salvo que éste sea trivial, las primera etapa por lo menos tendrá tamaño suficiente para que en muchos casos nos encontremos con casos donde se estén negociando aspectos del proyecto hasta el final.

Generalidades del Método


Modelo en Espiral (Clásico)



Modelo en espiral (win-win)

 
El modelo en espiral sugiere una actividad del marco de trabajo que aborda la comunicación con el cliente. El objetivo de esta actividad es mostrar los requisitos del cliente. En un contexto ideal, el desarrollador simplemente le pregunta al cliente lo que necesita y el cliente proporciona detalles suficientes para continuar. Desgraciadamente, esto raramente ocurre. En realidad, el cliente y el desarrollador entran en un proceso de negociación, en el cual el cliente puede ser preguntado para sopesar la funcionalidad, el rendimiento y otros productos o características del sistema frente al coste y al tiempo de comercialización.

Las mejores negociaciones se esfuerzan en obtener “gana-gana”. Esto es, el cliente gana obteniendo el producto o sistema que satisface la mayor parte de sus necesidades y el desarrollador gana trabajando para conseguir presupuestos y lograr una fecha de entrega realista.

El modelo en espiral win-win define un conjunto de actividades de negociación al principio de cada paso alrededor de la espiral.

Además del énfasis realizado en la negociación inicial, el modelo en espiral win-win introduce tres hitos en el proceso, llamados puntos de fijación, que ayudan a establecer la completitud de un ciclo alrededor de la espiral y proporcionan hitos de decisión antes de continuar el proyecto de software.
 
En esencia, los puntos de fijación representan tres visiones diferentes del progreso mientras que el proyecto recorre la espiral. El primer punto de fijación, llamado objetivos del ciclo de vida, define un conjunto de objetivos para cada actividad principal de ingeniería de software. El segundo punto de fijación, llamado arquitectura del ciclo de vida, establece los objetivos que se deben conocer, mientras que se define la arquitectura del software y el sistema. La capacidad operativa inicial es el tercer punto de fijación y representa un conjunto de objetivos asociados a la preparación del software para la instalación y distribución.

Ingeniería de Software

Una Pequeña introducción a la Ingeniería de Software


Casos de la Vida Real:
 
Si los Ingenieros de Software fueran Médicos...y los usuarios Pacientes

El Transplante Versión 1.0
Un Doctor experto en transplantes de corazón...
Paciente: “Doctor, necesito hacerle una consulta. Hace días tengo una molestia y he llegado a la conclusión de que es mi corazón.”
Doctor: “Umm, lo mejor en esos casos es no dudar y hacer el cambio a uno que funcione bien.”
Paciente: “De acuerdo, pero necesito que me lo cambie realmente rápido, el problema es que tengo un viaje mañana, y no deseo que me incomode. Me lo cambia ahora, y esta noche descanso para poder hacer el viaje mañana.”
 El doctor, basado en su experiencia en transplantes de corazón le pasa la cuenta de cobro, el paciente negocia un poco el descuento y la forma de pago, proceden a la operación. En horas de la noche el paciente muere. El médico se queda con su dinero, pensando en que la próxima vez lo hará con otro tipo de tecnología, no presenta ningún remordimiento.
y... ¿qué pasó con el diagnóstico?


El Transplante Versión 2.0

 
Un Doctor experto en transplantes de riñones...
El paciente con mucha seguridad le comenta al Doctor: “Doctor, necesito que me haga un transplante de corazón. Por el dinero no se preocupe, que lo importante es la salud.”
El doctor, competente en transplantes de riñones, le replica: “Lamento profundamente contradecirlo, pero el color de su piel, y con los síntomas que me ha comentado su problema no es de corazón, es de riñones. Con mucho gusto, en horas de la tarde iniciamos la preparación para realizar el transplante. De una vez aprovechamos que nos acaba de llegar la maquina Riñones 2003 que es lo último en tecnología de transplantes de riñón.”
El paciente, asombrado por los avances tecnológicos y la seguridad del doctor, acepta el trato.
La operación es un éxito, sin embargo el paciente ahora sigue con su problema de corazón y con un riñón que no es el suyo.
A veces llevamos a nuestros clientes a hacer cosas que no necesitan.

El Transplante Versión 3.0
 
Un Médico general experto en diagnóstico...
Paciente: “Doctor, he decidido que deseo un transplante de corazón.”
El médico, un poco asombrado, le pregunta las razones y le ofrece un estudio para una segunda opinión.
El paciente, algo serio, le dice que no tiene tiempo para perder haciendo diagnósticos, que lo importante es hacer la operación lo antes posible.
El médico finalmente acepta la posición de su paciente y ordena la operación...
 A veces, nuestros clientes nos llevan a hacer cosas que ellos no necesitan