Ejercicio 3

Anuncio
Métodos Ágiles
Trabajo Práctico Nº1
Crystal Clear - Fabrica Textil
Integrantes:
Antognetti, Germán
Crego, Facundo
Gini, Daniel
Jeanne, Federico
Llano, Anibal
Perez, Alejandro
Pucheta, Nestor
Ejercicios 1 y 2
Hemos decidido dar la respuesta a los dos incisos como uno solo, ya
que se hace más sencillo explicar cada una de las actividades
propuestas por Crystal Clear a medida que se van introduciendo. Al
momento de presentar cada “ciclo”, se presenta un workflow para el
mismo si se considera que es demasiado complejo.
CICLO DEL PROYECTO
A pesar de que un proyecto se ve
como una actividad única, en
realidad luego formará parte de un
proyecto más grande y conviene
verlo como un ciclo. El ciclo del
proyecto en CC consta de tres partes:
1. Una actividad de diagramación.
2. Una serie de dos o más
entregas.
3. Una conclusión del proyecto.
Diagramación
Esta actividad lleva desde algunos días hasta algunas semanas.
Consiste en cuatro pasos:
1. Construir la base del equipo.
2. Realizar el exploratory 360º (que puede dar lugar a cancelar el
proyecto).
3. Formar y ajustar las convenciones de la metodología.
4. Construir el plan inicial del proyecto.
1. Construir la base del equipo: normalmente se empieza con un
sponsor ejecutivo, un diseñador líder y eventualmente un usuario
clave.
Luego, se agregan de 2 a 5 personas con distintos niveles de
habilidades y experiencias: novatos o programadores junior, o más
gente experimentada. Mientras más gente inexperta haya en el
equipo, más difícil se hace avanzar y capacitar al personal
paralelamente. Debe haber al menos una persona experimentada por
cada dos o tres juniors.
2. Realizar el exploratory 360º: En un punto temprano del proyecto,
el equipo, incluido el sponsor ejecutivo, hace un chequeo de las
cuestiones claves. Esto es el equivalente, a la fase de Inception
del RUP. En este chequeo, se cercioran de que el proyecto no se
base en:
• El valor de negocio
• Los requisitos
• El modelo del dominio
• La tecnología que se utilizará
• El plan del proyecto
• La conformación del equipo
• La metodología o las convenciones que se utilizarán
En esta fase, el sponsor se asegura de que el equipo, la
tecnología y la metodología puedan dar el valor de negocio
intencionado para este proyecto. El sponsor puede cancelar el proyecto
en esta etapa (mejor ahora que más tarde).
3. Formar y ajustar las convenciones de la metodología: esta
actividad no debería llevar más de una semana. Puede hacerse
usando las técnicas de ajuste de metodologías, los casos de
desarrollo de RUP, o similares.
No es más que un conjunto de convenciones que el equipo acuerda
adoptar. Lo más rápido es empezar con el conjunto de reglas mejor
pensado por el equipo, así las adaptaciones no tendrán que ser tan
drásticas. Las reglas se adaptan dos veces por iteración o por ciclo
de entrega.
4. Construir el plan inicial del proyecto: Hay varias maneras dentro
de los límites de tolerancia del CC de construir un plan inicial del
proyecto.
• La técnica de blitz planning.
• Un método más riguroso y más cuidadoso: DSDM . Implica
un sistema de chequeos de los objetivos del proyecto con el
sponsor ejecutivo, seguidos por la construcción de un plan
de entrega y de una serie de time-boxes, cada uno de tres
meses de largo.
• El método Scrum, fija los time-boxes a un mes de duración.
• En el juego del planeamiento de XP el equipo, incluyendo su
“cliente,” escribe un conjunto de tarjetas para los requisitos
funcionales y clasifica esas tarjetas en time-boxes de tres
semanas. El equipo discute con el sponsor de la frecuencia
apropiada de la entrega a los usuarios reales, y después
agrupa las iteraciones en los períodos de entrega, a menudo
cerca de tres meses de largo.
Cada una de estas técnicas está dentro de las tolerancias de
la metodología CC. Cada una proporciona un plan inicial del
proyecto, y es suficientemente rápida como para ser
utilizada sobre una base regular para detectar cambios en
la situación del proyecto y para actualizar el plan.
Reflexión de la Diagramación
El objetivo es que el grupo conozca de manera temprana hacia
donde va dirigido el proyecto, la tecnología que usa, las metas y su
valor de negocio. Todo esto fortalece al equipo.
Los resultados de la actividad de diagramación son:
• Un voto para seguir o no con el proyecto.
• Un grupo de gente con un diagrama y una idea de lo que están
haciendo.
CICLO DE ENTREGA
El ciclo de la entrega tiene tres o
cuatro partes:
1. Una recalibración del plan de
entrega.
2. Una o más iteraciones, cada
una dando por resultado
código integrado, probado.
3. Entrega a los usuarios reales.
4. Un ritual de la terminación,
incluyendo la reflexión sobre
el producto que es creado y
las convenciones que son
utilizadas.
1. Recalibración: A esta altura el equipo aprendió que tan rápido
trabajan, que errores cometen, y que tan erradas estaban sus
estimaciones iniciales.
Deben elegir entre apegarse al plan original y simplemente
actualizarlo, o reveer ambos los requerimientos y el plan.
Crystal Clear no decide por ninguna opción, deja en manos del
sponsor del proyecto. Si este decide que el proyecto está llevando
demasiado tiempo, puede optar entre las siguientes tres
alternativas:
• Reemplazar el equipo.
• Ajustar el alcance del proyecto y los tiempos de entrega.
• Plantear nuevas estrategias para realizar el proyecto con el
equipo y tiempo disponibles.
2. Iteraciones: Ver sección de iteración.
3. Delivery: a la hora de realizar la entrega se cuenta con dos
opciones:
•
Hacer una entrega extensiva, con manuales y práctica para
el usuario, lo cual es más costoso.
• Encontrar un usuario amigable, que aprenda rápido, y que
lo haga como una cortesía para el equipo.
Uno trata de usar la primera opción, pero para que se haga de
manera más eficiente se deben hacer entregas en periodos de 3
meses. Si tarda menos se hacen muy costosas cada una de las
entregas, y si tardan más el equipo no puede mantener en mente
todo lo que realizaron.
4. Ritual de terminación: En esta fase se hace mucho hincapié en la
relajación del equipo, luego la reflexión sobre la metodología y,
en menor medida, cómo funciona el software.
El principal objetivo es lograr que los integrantes del equipo se
“desenchufen” del proyecto durante un tiempo (2 días),
realizando actividades sociales (caminatas, charlas, etc.), ya sea
entre el equipo o cada uno por separado. De esta manera al
momento de regresar al trabajo, el equipo viene con fuerzas
renovadas.
En la parte de la reflexión el equipo se pregunta: “¿Qué nos gustó
y debe permanecer así?”, “¿Qué debemos cambiar? ”.
Por último, para observar el uso del sistema, se pueden grabar e
incluso contratar a terceros para que observen a los usuarios en
interacción con el mismo.
CICLO DE ITERACION
El largo y formato de las
iteraciones varían según el equipo
de desarrollo. Hay 2 posibles tipos
de iteraciones: iteración de una
semana; iteración de 2 meses. Se
busca un tiempo intermedio entre
estos extremos.
Una iteración comprende 3 partes:
1 – Planeamiento de la iteración.
2 – Actividades diarias y ciclos de
integraciones.
3 – Reflection Workshop y
ceremonia.
Con el desarrollo de las
iteraciones, el equipo buscara
agregar requerimientos,
extendiendo, de esta manera, la
infraestructura del sistema, sumando funcionalidad con su
correspondiente testeo y mostrando el sistema al usuario.
Iteración de una semana:
Como una semana no es mucho tiempo, el equipo deberá dividir su
trabajo en pequeñas partes para garantizar que pueden ser
desarrolladas, testeadas e integradas.
A primera hora de cada día, el equipo se reunirá unos pocos minutos,
para planificar los puntos a tratar durante la jornada, resolver
problemas que pueden ser relevantes y que cada integrante tenga un
conocimiento general de la tarea de los demás.
Durante la semana se desarrollan las actividades normalmente. Los
episodios consisten en tomar el trabajo asignado, desarrollarlo y
chequearlo. También se desarrolla una integración y el testeo del
sistema.
El riesgo de las iteraciones cortas es que se olvidan de traer usuarios
reales.
Finalización:
Para una iteración de una semana, la ceremonia de cierre es algo
“emocional”, más que otra cosa. Algunos equipos van anotando
sugerencias durante las reuniones diarias, para permitir ser tratadas al
comienzo del siguiente día. De esta manera, al final de la semana,
permitirá evaluar puntos a favor y en contra de su hábito de trabajo.
Iteración de 2 meses:
El planear una iteración de esta longitud, puede tomar hasta un día
completo, dependiendo de la práctica que tenga el quipo en las técnicas
usadas.
Durante la iteración, el transcurso de las actividades diarias es igual a
las iteraciones de una semana. Una de las diferencia es que se debe
realizar un reflection workshop a mitad de iteración (al mes), aunque
más simple que el workshop final. El objetivo de esto, es descubrir
cosas que deben ser resueltas antes de terminar con dicha iteración.
Finalización
El reflection workshop puede llevar desde una hora hasta medio día, ya
que deberán revisar todos los aspectos de su trabajo, donde se
comentan convenciones de codificación y técnicas aprendidas, por
ejemplo.
Luego de la primera iteración o entrega, los equipos van adquiriendo
experiencia logrando que los tiempos tiendan a disminuir.
CICLO DE INTEGRACIÓN
Un ciclo de integración, puede durar
desde media hora a muchos días,
dependiendo de la práctica del
equipo. Algunos equipos utilizan
maquinas que corren script
automáticos, mientras que otros
hacen integración cada día o 3 veces
a la semana. Crystal Clear no
determina una duración para la
integración.
EL DIA
Comienza con la reunión diaria, y
consiste en diseñar uno o más
episodios. Algunos equipos integran
episodios de múltiples días, y otros
realizan en un día, varias
integraciones de varios episodios
cada una.
DESARROLLO DE UN EPISODIO
Es la unidad básica del trabajo del programador en un desarrollo ágil.
Durante un episodio, una persona toma una pequeña parte del diseño
que le fue asignada, la programa hasta completarla, esto incluye el
testeo, y lo verifica con las reglas de negocio.
En el Crystal Clear, no existen 2 roles diferentes entre diseñador y
programador, por eso, hay un único rol Diseñador-Programador, lo que
facilita poder sentarse a programar, pudiendo diseñar y viceversa.
Ejercicio 3
a) Enumere las ventajas y desventajas que ve de no tener un proceso definido
b) Tome las 3 prácticas de Crystal que le parecen más interesantes y desarrolle
un ejemplo donde considere que serían beneficiosas.
c) Cuáles son las 2 características que determinan la complejidad de un proyecto
según crystal?
d) Realice un Process Miniature de manera tal de poder realizar el ejercicio 4, y
presente las notas resultados del mismo, para presentar a la cátedra y a sus
compañeros de la materia
a) Las ventajas de no tener un proceso definido en la metodología
Crystal Clear, son:
1. El proceso se adapta fácilmente a cambios. Por ejemplo:
a. Cambio de requerimientos funcionales.
b. Anticipación en los tiempos de entrega.
2. Los integrantes del proyecto se sienten conformes, ya que todos
se encuentran prácticamente al mismo nivel, lo cual genera
motivación.
Las desventajas de no tener un proceso definido en la metodología
Crystal Clear, son:
1. Debido a la falta de documentación, la perdida de un empleado
genera un fuerte impacto ya que se lleva consigo todo su
conocimiento sobre el proyecto.
2. Los integrantes del grupo deben ser gente con experiencia.
3. La cantidad de integrantes del proyecto debe mantenerse baja.
4. No es posible aplicar la metodología a proyectos críticos
b)
Enumeraremos en un principio las tres prácticas de Crystal más
importantes:
Frequent Delivery
* Los usuario y los clientes consiguen retroalimentación en el
progreso del equipo
* Los clientes pueden verificar que sus necesidades fueron
interpretadas correctamente
* Los Desarrolladores pueden mantener el foco, y rompen “Tiempos
ociosos por indecisión”
* Las realizaciones frecuentes levantan la moral del grupo.
Las metodologías Crystal consideran que la entrega frecuente es la
característica más importante de las siete características, para
cualquier proyecto, sin importar su tamaño. Esta entrega de la
aplicación, y del código probado se debe efectuar, típicamente, cada
dos meses, y no más que cada cuatro meses. Si el proyecto es
particularmente pequeño, estas entregas deben ser más frecuentes. La
prueba de los verdaderos usuarios expertos es una característica
esencial de estas entregas.
Estas entregas dan a clientes la retroalimentación en cómo está
progresando el equipo. También permite al equipo y los clientes
verificar que el equipo han interpretado correctamente sus
necesidades, y proveer al equipo retroalimentación.
La entrega frecuente puede también ayudar al foco y a la moral de un
equipo. El equipo consigue la retroalimentación actualizada en las
decisiones del diseño. Pues el equipo puede eliminar errores y
desplegar productos con frecuencia, pueden obtener un alza de la
moral con estas realizaciones frecuentes.
Reflective Improvement
Reflective Improvement es otra característica esencial de los proyectos
Crystal Clear. Simplemente significa que los equipos deben reflejar en
lo que están haciendo y, basado en esta reflexión, buscar mejoras
potenciales. En una sesión de revisión, el equipo o individuo mira en lo
que creen que en el programa está funcionando, y qué podría
posiblemente funcionar mejor. Pueden entonces incorporar mejoras
potenciales en la iteración o la entrega siguiente. En la sesión siguiente
de la revisión, la eficiencia de estas mejoras puede ser evaluada.
Las reflexiones y las mejoras repetidas dejan a equipo constantemente
mejorar. Si qué se parecía como una mejora era realmente perjudicial,
esto puede ser detectada en la revisión siguiente, y ser invertida. Los
equipos no necesitan pasar una cantidad grande de tiempo en la mejora
reflexiva. Una hora cada pocas semanas pasaron el pensamiento de qué
trabaja, y las áreas para la mejora son generalmente suficientes.
Comunicación por ósmosis
La comunicación por ósmosis es una característica crucial en Crystal
Clear. En el entorno de trabajo, la información útil debe fluir libremente
en el ambiente que oyen los miembros del equipo. Esto permite que los
miembros tomen la información relevante, como si fuera por ósmosis.
Similarmente, si un miembro del equipo oye por casualidad una
pregunta o la discusión a la que sienten puede contribuir entonces
pueden hacer un comentario útil, y después vuelven a su trabajo. Por la
comunicación por ósmosis, los miembros del equipo pueden, casi
subconscientemente participar en conversaciones circundantes con
impacto mínimo a su trabajo.
El entorno de trabajo debe facilitar la comunicación osmótica. Lo más
importante para esto es tener el equipo entero trabajando en el mismo
cuarto - el “cuarto de guerra”. Esto permite que los miembros lo
adapten siempre que alguien haga una pregunta. Los miembros pueden
también tomar la información oyendo por casualidad discusiones
relevantes entre otros miembros.
Otros aspectos del ambiente pueden ayudar a la comunicación
osmótica. Los escritorios y las sillas se deben colocar para la
obstrucción mínima a las discusiones. También, los pizarrones son
útiles para compartir la información, pues pueden ser vistos por todos
los miembros, durante y después de la discusión. Si el equipo tiene
acceso a pizarrones imprimibles, esta información se puede almacenar
para una referencia posterior.
3 b) Un ejemplo donde la utilización de éstas prácticas de Crystal Clear pueden
ser beneficiosas sería en el caso de una pequeña empresa compuesta por un
grupo de desarrollo de 3 personas que se dedican al diseño e implementación de
sistemas Web. Las tres personas poseen conocimientos avanzados en la
tecnología utilizada, comparten un mismo espacio físico donde trabajan juntos y
poseen un pizarrón donde pueden expresar sus ideas.
Los tiempos de las “entregas frecuentes” se adaptan al tamaño del sistema Web
que se esta implementando.
3 c) Las 2 características que determinan la complejidad de un proyecto según
crystal son:
Numero de personas: Numero de personas que están involucradas en el
proyecto.
Criticidad: Se refiere en qué impactarán las fallas del sistema.(Comfort, Dinero,
Vidas).
En el siguiente gráfico se puede apreciar como dependiendo de éstas dos
características se puede seleccionar un determinado tipo de metodología dentro
de la familia Crystal (Crystal Clear, Crystal Yellow, Crystal Orange, Crystal Red)
Process Miniature:
Crear un pequeño proyecto de (90’ a un día) para permitir al grupo de
desarrollo para probar la metodología.
- Les permite aprender la metodología rápidamente.
- Les ayuda a identificar deficiencias en el proceso.
3 d) Para el Process miniature se seleccionó una parte pequeña del
proyecto que corresponde al login del sistema web utilizando una
pequeña base de datos. De esta forma el equipo puede comenzar a
poner en práctica las técnicas y estrategias de la metodología.
De esta forma logramos:
- Integración del grupo.
- Conocimiento de habilidades en el grupo.
- Definición de la ceremonia.
- Uso de las herramientas de documentación (pizarra).
Ejercicio 4
Tailoring
Debido a que en el método Crystal Clear se le da más importancia a los
recursos humanos que al proceso en sí, primero se realizará el tailoring
del ambiente de trabajo, la conformación del equipo, las técnicas,
estrategias, propiedades y por último el proceso.
Ambiente y conformación del equipo
El equipo de desarrollo se encuentra trabajando en el mismo lugar
físico, el cual cuenta con buena iluminación y ventilación.
Adicionalmente existe otro ambiente con muebles confortables y un
pizarrón donde los integrantes del equipo desarrollan las reuniones y
eventualmente distenderse. En ambos ambientes existen plantas y las
paredes se encuentran pintadas con colores armoniosos para permitir
un lugar saludable de trabajo.
La disposición de las computadoras y los integrantes del equipo es la
siguiente:
En este esquema se puede apreciar la disposición de los integrantes del
equipo y de los muebles que se encuentran en el lugar de trabajo.
Adicionalmente se aprecian las plantas, los colores tenues y los
pizarrones en las paredes. La disposición de los escritorios facilita la
utilización de la técnica Side-by-Side Programming y el contacto visual
entre las cuatro personas. Debido a la diferencia de habilidades entre
los miembros del equipo se sugiere que en una de las mesas se sienten
el Programador Senior y el Junior juntos y en la otra los dos
programadores Semi-Senior.
Como resultado de este ambiente de trabajo también se logra la
Comunicación Osmótica tan importante en esta metodología.
Otro aspecto importante para todo proyecto es la motivación de las
personas. Este grupo se encuentra motivado ya que habían trabajado
juntos, conocen la tecnología y se encuentran en un ambiente
agradable. Adicionalmente, el vínculo con el cliente es fuerte, debido a
que se cuenta con dos sponsors que avalan políticamente el proyecto y
transmiten seguridad al equipo.
Técnicas
Methodology shaping: como el equipo tiene experiencia previa en
desarrollos similares, no es necesaria una puesta en común con la
terminología que se va a usar, los integrantes se conocen y saben de lo
que se habla.
Reflection workshop: al final de cada iteración, el equipo se reúne en
la sala en el otro ambiente para discutir sobre cómo está trabajando el
equipo, cómo se relacionan los integrantes, incluso convenciones de
código. Luego identifican problemas y explican cómo los solucionaron y
cómo podrían evitar que vuelvan a aparecer.
Daily stand ups: los integrantes del equipo, se juntan 5 a 10 minutos a
primera hora de cada día para informarse sobre las tareas que
realizarán los demás.
Process Miniature: como se menciono anteriormente, se utilizo una
funcionalidad simple del sistema para familiarizarse con la metodología.
Delphi Estimation: vemos que esta técnica fue utilizada, ya que la
estimación del costo del proyecto fue realizada estimando con respecto
a horas de trabajo y comparando con proyectos análogos previos.
Estrategias:
Information radiators: como se mostró anteriormente, los radiadores
de información son los pizarrones ubicados en las paredes laterales del
ambiente de trabajo.
Walking Skeleton: Para el presente proyecto el Walking Skeleton
consistirá en una interface Web sencilla, la integración con la Base de
datos y permitirá cargar los datos básicos de los operarios. Dado que el
desarrollo debe ser implementado utilizando Open Source, las
tecnologías a utilizar son PHP, PostgreSQL y Eclipse.
Propiedades:
Frequent Delivery: Debido a las características del proyecto, se
utilizará un tiempo de entrega de dos semanas. Cada entrega estará
compuesta por más de una iteración.
Iteraciones: Las iteraciones pueden variar de una a dos semanas
dependiendo la funcionalidad abordada.
Automated Test: El sistema será testeado automáticamente 3 veces
por semana, en horario no laboral. El más importante de estos tests es
uno creado específicamente para realizar una gran cantidad de
consultas y verificar que ninguna de éstas exceda los 3 segundos en
devolver el resultado.
Ejercicio 5
Cuestionamientos a la metodología
-
-
El programador junior puede no contar con la experiencia
necesaria para hacer un uso correcto de las libertades que
brinda esta tecnología. Puede estar mucho tiempo ocioso o no
saber comunicarse con los demás integrantes del grupo.
La metodología no deja bien en claro cuales y que cantidad de
artefactos deben ser generados.
Es necesario que la empresa tenga la infraestructura necesaria
para que todos los integrantes ocupen un mismo lugar físico.
Descargar