Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
El modelo adaptativo está construido desde un punto de vista diferente. Aunque cíclico
como el modelo evolutivo, los nombres de la fase reflejan la naturaleza impredecible de
sistemas cada vez más complejos.
Especular
Colaborar
Aprender
Estas tres fases reflejan la naturaleza dinámica del desarrollo de software adaptativo. El
desarrollo adaptativo reemplaza explícitamente el determinismo con la emergencia. Va más
allá de un simple cambio en el ciclo de vida a un cambio más profundo en el estilo de
gestión. El desarrollo de software adaptativo tiene un ciclo de vida dinámico Speculate-
Collaborate-Learn.
Colaborar
Aprender
La parte de Aprendizaje del ciclo de vida es vital para el éxito del proyecto. El equipo tiene
que mejorar sus conocimientos constantemente, utilizando prácticas como:
Revisiones técnicas
Retrospectivas del proyecto
Grupos de enfoque del cliente
Las revisiones deben hacerse después de cada iteración. Tanto los desarrolladores como los
clientes examinan sus suposiciones y usan los resultados de cada ciclo de desarrollo para
conocer la dirección del siguiente. El equipo aprende
Las iteraciones deben ser cortas, para que el equipo pueda aprender de los errores pequeños
en lugar de los grandes.
Misión enfocada
Basado en funciones
Iterativo
Caja de tiempo
Impulsado por el riesgo
Cambio tolerante
En este capítulo, comprenderá estas seis características del desarrollo de software
adaptativo.
Enfocado en la misión
Para muchos proyectos, la misión general que guía al equipo está bien articulada, aunque
los requisitos pueden ser inciertos al comienzo del proyecto. Las declaraciones de misión
actúan como guías que fomentan la exploración al principio pero tienen un enfoque
limitado en el transcurso de un proyecto. Una misión proporciona límites en lugar de un
destino fijo. Las declaraciones de misión y las discusiones que dan como resultado esas
declaraciones proporcionan dirección y criterios para tomar decisiones críticas de
intercambio de proyectos.
Sin una misión clara y una práctica constante de refinamiento de la misión, los ciclos de
vida iterativos se convierten en ciclos de vida oscilantes, oscilando de un lado a otro sin
progreso en el desarrollo.
Basado en funciones
Adaptive Software Development Lifecycle se basa en las características de la aplicación y
no en las tareas. Las características son la funcionalidad que se desarrolla durante una
iteración basada en las prioridades del cliente.
Las características pueden evolucionar a lo largo de varias iteraciones cuando los clientes
brindan comentarios.
Iterativo
El ciclo de vida de desarrollo de software adaptativo es iterativo y se enfoca en
lanzamientos frecuentes para obtener comentarios, asimilar el aprendizaje resultante y
establecer la dirección correcta para un mayor desarrollo.
Caja de tiempo
En Adaptive Software Development Lifecycle, las iteraciones tienen una caja de tiempo.
Sin embargo, uno debe recordar que el boxeo de tiempo en Adaptive Software
Development no se trata de plazos de tiempo. No debe usarse para hacer que el equipo
trabaje durante largas horas desafiando un entorno de colaboración o comprometiendo la
calidad de los entregables.
En el desarrollo de software adaptativo, el time-boxing se considera como una dirección
para enfocar y forzar decisiones difíciles de compensación cuando sea necesario. En un
entorno incierto, en el que las tasas de cambio son altas, debe haber una función de
forzamiento periódica, como un timebox para finalizar el trabajo.
Tolerante al cambio
El desarrollo de software adaptativo es tolerante al cambio, y ve el cambio como la
capacidad de incorporar una ventaja competitiva, pero no como un problema para el
desarrollo.
Aprendizaje continuo
Cambiar orientación
Reevaluación
Mirando hacia un futuro incierto
Intensa colaboración entre desarrolladores, gerentes y clientes.
SDLC adaptativo
El desarrollo de software adaptativo combina RAD con las mejores prácticas de ingeniería
de software, tales como:
Iniciación
Planificación
Speculate tiene cinco prácticas que pueden ejecutarse repetidamente durante la fase de
iniciación y planificación. Ellos son
Iniciacion del proyecto
Establecer cronograma para todo el proyecto
Decida el número de iteraciones y asigne un cuadro de tiempo a cada una.
Desarrolle un tema u objetivo para cada una de las iteraciones.
Asigna funciones a cada iteración
Iniciacion de proyecto
Los datos de inicio del proyecto deben recopilarse en una sesión preliminar de JAD,
considerando la velocidad como el aspecto principal. La iniciación se puede completar en
un esfuerzo concentrado de dos a cinco días para proyectos pequeños a medianos, o en un
esfuerzo de dos a tres semanas para proyectos más grandes.
Durante las sesiones de JAD, los requisitos se recopilan con suficiente detalle para
identificar características y establecer una visión general del objeto, los datos u otro modelo
arquitectónico.
El plazo para todo el proyecto debe establecerse, en función del alcance, los requisitos del
conjunto de características, las estimaciones y la disponibilidad de recursos que resultan del
trabajo de inicio del proyecto.
Como saben, especular no abandona la estimación, pero solo significa aceptar que las
estimaciones pueden salir mal.
Iterations y Time-box
Los miembros del equipo deben desarrollar un tema u objetivo para cada iteración. Esto es
algo similar al Objetivo Sprint en Scrum. Cada iteración debe ofrecer un conjunto de
características que puedan demostrar la funcionalidad del producto haciendo que el
producto sea visible para el cliente para permitir su revisión y comentarios.
Asignar características
Los desarrolladores y los clientes deben asignar juntos características a cada iteración. El
criterio más importante para esta asignación de características es que cada iteración debe
entregar un conjunto visible de características con una funcionalidad considerable para el
cliente.
Problemas técnicos
Requisitos comerciales
Toma de decisiones rápida
Las siguientes son las prácticas relevantes para la fase de colaboración en el desarrollo de
software adaptativo:
En los proyectos más pequeños, cuando los miembros del equipo están trabajando en
proximidad física, se debe alentar la colaboración con los chats informales en los pasillos y
los garabatos de la pizarra, ya que esto se considera efectivo.
Aprender de los errores y la experimentación requiere que los miembros del equipo
compartan el código y los artefactos parcialmente completados temprano, a fin de:
Encuentra errores
Aprende de ellos
Reduzca el retrabajo encontrando pequeños problemas antes de que se conviertan en
grandes.
Al final de cada iteración de desarrollo, hay cuatro categorías generales de cosas que
aprender:
Las sesiones de grupos focales para clientes son sesiones facilitadas, similares a las
sesiones jad, pero en lugar de generar requisitos o definir planes de proyecto, están
diseñados para revisar la aplicación en sí. Los clientes brindan comentarios sobre el
software que funciona como resultado de una iteración.
La revisión del estado del proyecto ayuda a planificar más trabajo. En los proyectos de
desarrollo de software adaptativo, determinar el estado del proyecto es un enfoque basado
en características, el final de cada iteración marcado por características completadas que
dan como resultado un software que funciona.
Como los planes en los proyectos de desarrollo de software adaptativo son especulativos,
más que la pregunta 2 anterior, la pregunta 3 es importante. Es decir, el equipo del proyecto
y los clientes deben preguntarse continuamente: "¿Qué hemos aprendido hasta ahora y
cambia nuestra perspectiva de hacia dónde debemos ir?"