Desde los años 80 se han
desarrollado tantos modelos de procesos, marcos y prácticas de trabajo para
mejorar la calidad y la eficiencia en los proyectos de software, que resulta
útil trascender las etiquetas y llegar a la base de los principios que
subyacen, y las estrategias con las que los desarrollan; de forma que con tres
conceptos (desarrollo, trabajo y conocimiento) y dos modelos de gestión
(predictiva y evolutiva) se despeja y simplifica el aparente laberinto de
modelos de procesos, marcos o prácticas de trabajo a los que nos referimos:
CMM-SW, CMMI, PMBOK, DSDM, Crystal, ISO 15504, RUP, XP, Scrum, ITIL, ASD,
PRINCE 2, LEAN, KANBAN, TDD, etc..
Los conceptos que se
combinan en los distintos marcos y estrategias son:
1.- Desarrollo
§ Completo: La
descripción de lo que se desea obtener está disponible al inicio del proyecto,
es completa y detallada, sirve de base para estimar el plan del proyecto:
tareas, recursos y agenda de trabajo. Durante la ejecución se gestiona su
cumplimiento.
§ Incremental: La
descripción de lo que se desea obtener no está disponible de forma completa y
detallada al inicio: se complementa y evoluciona en paralelo al desarrollo, que
genera el resultado de forma incremental y que se puede gestionar con dos
tácticas diferentes:
§ Desarrollo
incremental continuo: Empleando técnicas para lograr y mantener un flujo
continuo de desarrollo de funcionalidades o partes del producto que entrega de
forma continua al cliente.
§ Desarrollo
iterativo: El marco de producción emplea técnicas de tiempo prefijado o
timeboxing para mantener la producción de incrementos del producto de forma
cíclica y continua. Este es el marco de producción empleado en scrum estándar,
que define como sprint a cada iteración de desarrollo al final de la cual se
produce un incremento del producto.
2.- Trabajo
§ Secuencial
(cascada): Secuencia
las tareas en fases, cada una de las cuales comienza al terminar la anterior y
con el resultado que se ha obtenido en ella. El ejemplo más habitual es el
ciclo de cascada definido en Ingeniería del software con las fases de
requisitos, análisis, diseño, codificación, pruebas e implementación.
§ Concurrente: Solapa
en el tiempo los diferentes tipos de tareas. Siguiendo con el ejemplo de
ingenería de software, la definición de requisitos, el análisis, la
codificación y el despliegue del resultado se realiza y revisa de forma
simultánea y continua.
3.- Conocimiento
Principal conocimiento
empleado, protagonista de la calidad del resultado.
§ El
conocimiento o know-how protagonista de la calidad del resultado se encuentra
en mayor medida en los procesos y la tecnología empleada. “La calidad
del resultado depende de la calidad de los procesos empleados“.
§ El
conocimiento o know-how protagonista de la calidad del resultado se encuentra
en mayor medida en el conocimiento tácito de las personas que
lo consltruyen.
Gestión
predictiva
Modelo de
gestión de proyectos cuyo objetivo es ofrecer resultados predecibles: desarrollar
el producto previsto en el tiempo previsto e invirtiendo los recursos
previstos. Emplea una estrategia de desarrollo completo con prácticas de
planificación tradicional los principales referentes en el desarrollo de
conocimiento para este tipo de gestión son PMI e IPMA y los modelos
desarrollados (CMMI, ISO 15504, SPICE entre otros) emplean ingeniería
secuencial y producción basada en procesos.
Gestión
evolutiva
Modelo de
gestión de proyectos cuyo objetivo es la entrega en el menor tiempo posible un producto
mínimo viable, e incrementar su valor de forma iterativa y continua. Emplea una
estrategia de desarrollo incremental, que puede obtener con tácticas iterativas
o de mantenimiento de flujo continuo, y un modelo de trabajo de fases
solapadas. Puede emplearse con producción basada en
procesos (ingeniería concurrente) o con producción basada en
personas (agilidad).
Es importante esta
distinción porque sin ella se generan situaciones confusas que llegan a
considerar agilidad a la simple aplicación de un marco de desarrollo estándar
de scrum (ciclo de incremento iterativo con roles y artefactos definidos), o al
simple uso de técnicas de gestión visual kanban para mantener un flujo continuo
de tareas.
Espero estos conceptos les ayude a aclarar sus dudas, ya que entrando al mundo de la gestion de proyectos de desarrollo de software cualquier cosa puede pasar...