Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Para cualquier Proyecto no trivial es difícil tener una fase del ciclo de
vida de un producto de software perfeccionada antes de moverse a
las siguientes fases y aprender de ellas. Por ejemplo, los clientes
pueden no estar conscientes de exactamente qué requisitos quieren
hasta que ven un prototipo funcional y pueden realizar sus
comentarios. Puede que cambien sus requisitos constantemente y los
diseñadores del programa e implementadores deben tener algo de
control sobre esto. Si el cliente cambia sus requisitos luego de que el
diseño haya sido finalizado, ese diseño debe ser modificado para
adaptarse a los nuevos requisitos, lo que a menudo invalida una parte
del esfuerzo y las horas invertidas. La siguiente imagen da un modelo
típico de un desarrollo en Cascada.
Modelo de Cascada o metodología del ciclo de vida
Scrum es una forma para que los equipos trabajen juntos para desarrollar un producto.
El desarrollo de productos, utilizando Scrum ocurre en pequeñas piezas, cada pieza se
construye de piezas creadas previamente. Crear productos pieza por pieza alienta la
creatividad y permite que los equipos respondan a los comentarios y cambios, para crear
exactamente y solo lo que es necesario.
Ejemplo de scrum
En vez de crear todas las tareas y los horarios por adelantado, todo el tiempo es
encajonado en fases llamadas sprints. Cada sprint tiene una duración definida, la que
usualmente es de algunas semanas, con una lista de ejecución con entregables, y con
cada sprint planificado por adelantado. Los entregables son priorizados por su valor
empresarial el cual es determinado por el cliente. Si todo el trabajo planificado para un
sprint no puede ser completado, se le vuelve a dar prioridad al trabajo y la información
se utiliza para la planificación de los sprints futuros.
En la imagen se ve que el trabajo se toma de una lista ordenada por prioridades, la cual
se divide en sprints y luego se desarrolla. Los objetos en la parte superior de la lista
están más refinados que los de la parte inferior. Para no perder tiempo y dinero, los
objetos de la lista solo deben ser expandidos lo suficiente para realizar las decisiones
apropiadas. Para cada objeto en la lista de prioridades, se realiza en el sprint un historial
de usuario, una implementación y una prueba.
A medida que el trabajo sea completado durante cada sprint, se revisa y evalúa
continuamente por el cliente. Todo el trabajo que ha sido completado debe ser definido
como entregable, lo que significa que debe funcionar como se debe y debe haber pasado
a través de pruebas. Como resultado, Agile se basa en un alto nivel de participación del
cliente durante todo el proyecto ya que este es el que necesita validar la funcionalidad y
aceptar que funciona como se debe. El ciclo continúa hasta que el producto haya sido
completado y esté listo para ser desplegado o sea considerado como aceptable por la
empresa.
La calidad no es una parte del PMT, pero es el objetivo final de cada entrega. Por lo
tanto, el PMT implica calidad.
Muchos gestores de proyectos están bajo la noción de que una alta calidad implica altos
costos, lo que de cierta manera es verdad, a menos que la cantidad de funcionalidades
sea el parámetro que sufre. En todos los casos, usar recursos de baja calidad para
cumplir los tiempos de un proyecto no lleva al éxito general del proyecto.
Al igual que con el alcance, la calidad también debe ser una parte importante para el
proyecto.
Dependiendo en la fase del proyecto, todos los trabajadores no necesitan estar atrapados
en el mismo. Como ejemplo, los analistas de negocios (BAs) pueden continuar
trabajando en otras partes u otros proyectos completamente, luego de que los requisitos
hayan sido escritos y viceversa, los desarrolladores no necesitan estar involucrados
antes que los Bas sepan lo que necesita entregarse. En base a los requisitos de los BAs,
los probadores pueden preparar scripts de prueba mientras los desarrolladores están
codificando, etc.
Luego de la fase de requisitos ya no hay una fuerte necesidad para el cliente de estar
presente y, por lo tanto, puede enfocarse en cosas más pertinentes. El cliente
básicamente solo necesita involucrarse para revisiones, aprobaciones, etc.
Debido a que el método en Cascada requiere una planificación inicial, el software puede
ser lanzado rápidamente luego del desarrollo. Las estimaciones de horarios y
presupuestos pueden hacerse con mayor precisión, lo que definitivamente tiende a
complacer a los clientes.
La retroalimentación y las pruebas se diferirán hasta que se completen las partes más
importantes del proyecto. Esto significa que los problemas y las deficiencias pueden ser
más difíciles de cambiarse sin cantidades considerables de tiempo y esfuerzo.
Scrum producirá una versión base simple más rápido que la Cascada, lo que algunas
veces es adecuado para la creación de prototipos.
Scrum puede ser especialmente beneficioso en situaciones donde las metas finales de
los proyectos no estén claramente definidas. SI no es posible que el cliente proporcione
una meta clara en la parte temprana del proyecto, Scrum trabajará bien ya que esto
puede ser aclarado a medida que el proyecto avanza
Usualmente con Scrum hay más interacción y comunicación, lo que usualmente toma
prioridad en el diseño. Dado que las partes están más involucradas, es especialmente
propicio para entornos de trabajo en equipo. Diferentes desarrolladores trabajan en
diferentes módulos a través del proceso de desarrollo y luego trabajan para integrar
todos estos módulos en una pieza cohesiva de software al final del proyecto.
Scrum se enfoca en entregas en tiempo real y cambios frecuentes en las prioridades, por
lo que algunos puntos pueden no ser completados dentro del marco de tiempo
determinado para el proyecto. Puede que se necesiten sprints adicionales para completar
las características, lo que por supuesto se añade al costo total. Además, el alto grado de
participación del cliente usualmente lleva a peticiones adicionales de características a
través del proyecto, extendiendo el tiempo necesario para completarlo.
Los clientes usualmente tienen dificultades para mantenerse al día con la rápida
iteración y ciclos de pruebas del Scrum. Esto puede poner el proyecto en riesgo ya que,
mientras más tiempo pasen los desarrolladores sin una retroalimentación, más difícil
será recuperar si no están desarrollando exactamente lo que el cliente espera.
El trabajo en equipo en Scrum es más fácil de manejar cuando todos los miembros del
equipo se encuentran localizados en el mismo espacio físico. Además, la colaboración
intensa y los requisitos menos complejos resultan en problemas catastróficos si algún
miembro del equipo deja el proyecto.
Scrum tiene menos énfasis en entender el sistema finalizado como un todo en la parte
temprana del proyecto, lo que puede llevar a una reducción de la calidad y desempeño
general del sistema. Esto es especialmente cierto para implementaciones a gran escala o
con sistemas que incluyen un gran nivel de puntos de integración.
Este método de desarrollo puede ser bastante lento, mucho más que el desarrollo en
Cascada. Hay muchos códigos que se deben reescribir debido a cambios de requisitos y
problemas en la funcionalidad. A menudo, los requisitos no son claros al principio, lo
que puede resultar en una arquitectura poco óptima que no es lo suficientemente flexible
para alcanzar los requisitos finales. A menudo, se pasa mucho tiempo puliendo detalles
para los usuarios antes de que comience la programación.
Como el proyecto final no tiene un plan definitivo, el producto terminado puede ser
muy diferente a lo que se pretendía inicialmente. Esto además se relaciona con la
incapacidad de dar una fecha máxima al momento que se firma un contrato.
El presupuesto y el horario son flexibles a los cambios y son bienvenidos por los
clientes.
Al llegar a este punto, podemos decir que ni Agile con Scrum ni el método de Cascada
son inherentemente uno mejor que el otro. Dicho eso, cada método tiene sus méritos. La
cascada tiende a ser mejor para proyectos que no tengan muchos cambios durante el
proceso de desarrollo y que no aceptan errores. Scrum tiende a ser una opción mejor
para proyectos más pequeños donde los cambios son ya sea rápidos o fáciles de
implementar durante el proceso o con proyectos que puedan ser modularizados.
Si los equipos del proyecto están localizados en diferentes lugares y zonas horarias, la
coordinación del trabajo necesita ser relativamente detallada para evitar confusiones y
pérdidas de tiempo. En este caso, el método de Cascada es el más apropiado, ofreciendo
entregables, hitos y dependencias claras. Cuando los proyectos requieren conocimientos
especializados únicos y estos recursos no están disponibles inmediatamente, una buena
planificación es requerida. Si esto es costoso o difícil de organizar, es importante
asegurarse que el recurso se utilice plenamente durante su uso programado. Para esto, la
cascada es un mejor enfoque, ya que la planificación es mucho más confiable para
asegurar una máxima eficiencia de uso.
Mientras que cada modelo tiene sus fortalezas y defectos, los conceptos erróneos reinan
sobre ambos. Es una desorganización debido a la falta de disciplina o una complejidad
innecesaria arraigada en una creencia irracional de que uno puede eliminar el riesgo.
Las empresas eficientes y maduras entienden cuándo aplicar cualquiera de estos
métodos. En práctica, las organizaciones con ciclos de desarrollo exitosos usualmente
emplean un enfoque híbrido, tomando un poco de cada metodología.
Y, finalmente, ¡el patrocinio ejecutivo debe ser fuerte para que todos, hasta los
proyectos tengan éxito!
Diferentes situaciones obviamente requerirán diferentes enfoques. Pero, una cosa que es
cierta y es que el uso de cualquiera de las metodologías aumentará enormemente el
éxito a comparación de no seguir ningún proceso o simplemente ir a ad hoc.