DesarrolloAgil
DesarrolloAgil
https://www.visual-paradigm.com/scrum/extreme-programming-vs-scrum/
Scrum + XP
https://www.visual-paradigm.com/scrum/extreme-programming-vs-scrum/
Scrum + XP
https://www.visual-paradigm.com/scrum/extreme-programming-vs-scrum/
Fase de Inicio (Exploración-Sprint 0)
En esta fase, los clientes plantean a grandes rasgos las historias de usuario que son de interés para la primera
entrega del producto. Al mismo tiempo el equipo de desarrollo se familiariza con las herramientas, tecnologías
y prácticas que se utilizarán en el proyecto. Se prueba la tecnología y se exploran las posibilidades de la
arquitectura del sistema construyendo un prototipo. La fase de exploración toma de pocas semanas a pocos
meses, dependiendo del tamaño y familiaridad que tengan los programadores con la tecnología.
Después de Covid-19
Procesos de Historias de Usuario
COMO IDENTIFICAR HISTORIAS DE USUARIO
• Cliente, cuente una historia sobre cómo se utilizará el sistema.
• Programadores, escuchen y hagan preguntas para comprender.
• Programadores, Traten de mantenerse alejado de las
preguntas de implementación.
• Ahora, cliente, escriba la historia, con sus propias palabras, en
una sola tarjeta. Si toda la historia es demasiado grande,
escriba el núcleo esencial.
• A medida que avanza en este proceso, especialmente con
preguntas útiles, a menudo decidirá que una historia que ha
escrito no es del todo correcta. Eso es genial. Rompe esa
tarjeta y haz una nueva.
• Esto es muy importante: el análisis en tarjetas es flexible. No
solo está bien romper una tarjeta y comenzar una nueva, ¡es lo
mejor que puede suceder! Rompe las cartas temprano y con
frecuencia, para que todos se vuelvan buenos en eso,
• Las historias son una promesa de conversación
Tomado del Libro Extreme Programming Installed by Chet Hendrickson; Ann Anderson; Ron Jeffries 2000
EJEMPLOS DE HU
• Las cuotas sindicales varían según el sindicato y se toman solo en el primer período de
pago del mes. El sistema calcula la deducción automáticamente. El monto se muestra
hu1 en la tabla adjunta.
• Cuando una transacción hace que la cuenta de un cliente entre en sobregiro, transfiera
dinero desde la cuenta de protección contra sobregiros, si la hubiera.
hu2
• Cuando una transacción hace que la cuenta de un cliente entre en sobregiro, envíe un
correo electrónico que muestre la transacción y el saldo al cliente. Si la protección
contra sobregiros está vigente, muestre la transacción de sobregiro y los saldos de
hu3 cuenta resultantes en el correo electrónico.
Tomado del Libro Extreme Programming Installed by Chet Hendrickson; Ann Anderson; Ron Jeffries 2000
EJEMPLOS DE HU
•Permita que el usuario agregue nuevos tipos de servicios a la lista inicial del sistema. Por ejemplo, es posible que desee
agregar una entrada especial para lavar el automóvil en el lavado "gratuito" de la escuela secundaria. Incluya la cantidad
y fecha de los campos estándar, además de permitir que el usuario agregue cualquier texto adicional o campos
HU numéricos. Los informes deben sumar automáticamente cualquier campo numérico. (Nota del programador: la historia
debe dividirse. Separe los campos numéricos y de texto en dos historias, más una para la suma).
•(División 1) Permita que el usuario agregue nuevos tipos de servicios, incluidos los campos estándar más cualquier
campo de texto adicional que desee.
HU
•(División 2) Permitir al usuario agregar campos numéricos a los tipos de servicios definidos por el usuario.
HU
•(División 3) En todos los informes, muestre los totales de todos los campos numéricos, no solo los campos estándar de
galones y cantidades en dólares.
HU
Tomado del Libro Extreme Programming Installed by Chet Hendrickson; Ann Anderson; Ron Jeffries 2000
Las tres C’s de Ron Jeffries(2001)
• En XP y en general en los procesos agiles se
usan las HU para identificar los requisitos del
sistema.
Card • Card: Escribimos una descripción rápida de la
función en una tarjeta,
• Conversation la discutimos con nuestro cliente
Conversation (piense en el propietario del producto Scrum)
y luego
• (Confirmation)creamos ejemplos concretos
comprobables para confirmar que la función
Confirmation
hizo lo que nosotros y el cliente queríamos
Las tres C’s
• Las historias de usuario están escritas en tarjetas.
• La tarjeta no contiene toda la información que constituye el
requisito.
Card • En cambio, la tarjeta tiene suficiente texto para identificar
el requisito y recordarles a todos cuál es la historia.
• La tarjeta es una ficha que representa el requisito.
Conversation
• Se usa en la planificación.
• Se escriben notas en él, que reflejan la prioridad y el costo.
Confirmation
• A menudo se entrega a los programadores cuando la
historia está programada para ser implementada y se
devuelve al cliente cuando la historia está completa.
Las tres C’s
• El requisito en sí mismo se comunica del cliente a los
programadores a través de una conversación:
• un intercambio de pensamientos, opiniones y sentimientos.
Card • Esta conversación tiene lugar a lo largo del tiempo,
particularmente cuando se estima la historia (generalmente
durante la planificación del lanzamiento),
• y nuevamente en la reunión de planificación de iteraciones
cuando la historia está programada para su implementación.
Conversation
• La conversación es en gran parte verbal, pero se puede
complementar con documentos. Los mejores suplementos son
ejemplos; los mejores ejemplos son ejecutables, prototipos de
UI. A estos ejemplos los llamamos confirmación.
Confirmation
Las tres C’s
• Define las pruebas de aceptación que se utilizarán para demostrar
que la historia se ha implementado correctamente.
• Este componente es la prueba de aceptación.
Card • En lugar de documentos se confirmación, se prefiere: la confirmación
mediante ejemplos, preferiblemente automatizados, funciona mejor.
• Los programadores implementan la historia y también implementan
las pruebas de aceptación.
• Algunos equipos crean herramientas que permiten al cliente ingresar
Conversation a las pruebas por sí mismo, y otros equipos tienen personas de
control de calidad o evaluadores que ayudan con el trabajo.
• Al final de la iteración, cuando la historia está terminada, los
programadores le muestran al cliente que la historia está terminada,
confirmando el éxito mostrando que las pruebas de aceptación se
Confirmation ejecutan correctamente.
• La confirmación proporcionada por la prueba de aceptación es lo que
hace posible el enfoque simple de la tarjeta y la conversación.
FORMATOS DE HU
• En los enfoque agiles no son partidarios de formatos, sin embargo hay
varios formatos para escribir HU:
• Las tres R o el formato Connextra (de uso generalizado)
• Cinco W
• Kaizen-UX template
Tomado del Libro Extreme Programming Installed by Chet Hendrickson; Ann Anderson; Ron Jeffries 2000
Las tres R o el formato Connextra
"As a role I want feature so that benefit“ (Rachel Davies, 2001)
"As a type of user I want capability so that business value“ (Mike Cohn, 2004)
• Como _____ [rol -> persona] , quiero _____ [requisito -> resultado], para _____ [motivo -> resultado].
• La tercera parte R (motivo) de esta plantilla es opcional.
• La primera iteración del ejemplo del sitio de comercio electrónico con excedentes de comestibles: como comprador, quiero ver el
contenido de mi carrito de compras en cualquier momento, incluido el valor total, la cantidad de artículos y su peso combinado,
incluidos los costos de envío totales, para que Pueda tomar decisiones sobre cómo agregar más elementos.
• Esto contiene demasiados detalles, un error común. Entonces, eliminemos lo que no es un detalle crítico aquí: como comprador,
quiero ver el contenido de mi carrito de compras para poder tomar decisiones sobre cómo agregar más artículos.
• Mucho mejor, pero la tercera parte R (para que pueda tomar decisiones sobre la adición de más elementos ) se puede omitir y la
historia del usuario seguirá funcionando según lo previsto. No solo se puede omitir, sino que debemos recortar cualquier texto
innecesario de nuestras historias de usuario para seguir el principio de simplicidad de la sección anterior.
• El ejemplo simplificado debería decir: Como comprador, quiero ver el contenido de mi carrito de compras . Así es como se ve una
historia de usuario en el formato Three R.
Cinco W
• Como ______ [ ¿quién? -> persona ] ______ [¿cuándo?]
______ [¿dónde?], yo ______ [ ¿qué? -> salida ] porque ______ [
¿por qué? -> resultado ].
• como comprador, durante el proceso de búsqueda de artículos
adicionales, en una vista dedicada , quiero ver el contenido de mi
carrito de compras, porque necesito tomar decisiones sobre cómo
agregar más artículos.
Ejemplo
quiero ver el contenido de mi carrito de compras.
•N de Negociable, Una historia de usuario es una descripción corta de una necesidad que no incluye detalles. Las historias deben ser negociables ya que sus detalles serán acordados con el
cliente o el usuario durante la fase de conversación. Por tanto, se debe evitar historias de usuario con demasiados detalles porque limitaría la conversación acerca de las mismas.
N
•V de Valioso: Uno de los principios ágiles es entregar software valioso. Queremos crear algo valioso para alguien, idealmente tanto para el usuario como para la empresa. En realidad, el
experto en UX necesita equilibrar los objetivos comerciales con las necesidades del usuario.
V
•E de Estimable, Una buena historia de usuario debe de poder ser estimada con la precisión suficiente para ayudar al cliente, usuario o propietario del producto a priorizar y planificar su
implementación. La estimación generalmente la realizará el equipo de trabajo y está directamente relacionada con el tamaño de la historia de usuario (una historia de usuario de gran tamaño
E es más difícil de estimar) y con el conocimiento del equipo de la necesidad expresada (en el caso de falta de conocimiento, serán necesarias mas fases de conversación acerca de la misma).
•S de Small (pequeñas) Las historias de usuario deberían englobar como mucho unas pocas semanas/persona de trabajo. Incluso hay equipos que las restringen a días/persona. Una
descripción corta ayuda a disminuir el tamaño de una historia de usuario facilitando así su estimación. Las HU grandes, son comúnmente llamadas Epic’s o Epicas.
S
•T de Testeable, La historia de usuario debería ser capaz de ser probada (fase confirmación de la historia de usuario). Si el cliente o usuario no sabe como probar la historia de usuario significa
que no es del todo clara o que no es valiosa. Si el equipo no puede probar una historia de usuario nunca sabrá si la ha terminado o no.
T
Historias técnicas o elementos no funcionales
Se require ______ porque ____________
Se refiero a cosas que deben hacerse pero que no son un entregable ni están directamente
relacionadas con ninguna historia específica, y no son de valor inmediato para el Product Owner.
• Se requiere Instalar un servidor de compilación continua:
• Por qué debe hacerse: porque ahorra cantidades inmensas de tiempo a los desarrolladores y reduce el riesgo
de problemas explosivos de integración al final de la iteración.
• Se requiere Escribir una descripción general del diseño:
• Por qué debe hacerse: porque los desarrolladores olvidan constantemente el diseño general, y entonces
escriben código inconsistente. Necesitan una visión global documentada para mantener a todo el mundo en la
misma línea de diseño.
• Se requiere Refactorizar la capa de acceso a datos:
• Por qué debe hacerse: porque la capa de acceso a datos se ha vuelto realmente desordenada y le está
costando tiempo a todo el mundo debido a la confusión y los errores innecesarios. Limpiar el código ahorraría
tiempo a todo el mundo y mejoraría la robustez del sistema.
• Se requiere Actualizar Jira (seguimiento de errores)
• Por qué debe hacerse: la actual versión es demasiado lenta y falla demasiado. Actualizar a una nueva versión
ahorrará tiempo a todo el mundo.
X
Información de Historias de Usuarios
Valor de
Negocio
Prioridad
Estimación
Riesgo
(Costo)
http://www.pmoinformatica.com/2013/04/que-son-las-historias-de-usuario-7.html
User-Persona
La técnica se basa en la idea de conocer a los usuarios del producto que vamos a construir mediante
arquetipos descritos como personajes de ficción, como por ejemplo una representación realista de la
audiencia clave de nuestra web o aplicación.
Valor de X
Negocio
Prioridad
Estimación
Riesgo
(Costo)
Valor de negocio
• La información "valor" representa el valor de negocio que aporta una
HU una vez realizada.
• Representa "cuánto dinero está dispuesto a pagar nuestro cliente
por esa funcionalidad".
• El valor de negocio es muy importante para priorizar correctamente,
focaliza al equipo de desarrollo en todo momento en aquello que es
importante construir y maximiza el valor y la satisfacción percibida
por el cliente en cada sprint.
Valor de negocio
Como se puede medir:
• El valor se puede medir con: serie de Fibonacci, escala de numero
naturales por ejemplo escalas del uno al 10 ó del uno al 100, etc.
• Una forma muy estimulante es repartir billetes del Monopolio por el
valor total del proyecto a cada uno de los usuarios de negocio
involucrados, y que estos repartan el dinero en función del valor que
le atribuyen a cada historia de usuario.
• Otra forma es usar cartas de planning poker con la serie de Fibonacci
similar a la estimación del esfuerzo que hace el equipo, entre el
producto owner y el equipo de negocio.
Riesgo
• El riesgo es algo que todavia no ha ocurrido pero que puede poner en
peligro la realización el Proyecto.
• Riesgos comunes en proyectos de software:
• No cumplir con los plazos programados.
• Que la técnología no cumpla con las expectativas.
• Qué lo que se implemente no sea lo que los clientes/usuarios quieren.
• Riesgos que se mitigan en las HU:
• El riesgo de cada HU es determinado por el equipo.
• Con base al conocimiento y experiencia en la tecnologia y dominio (negocio)
• Pueden ver riesgos
Riesgo: Mitigación
Riesgo Mitigación
No cumplir con los plazos programados. ??
Que la técnología no cumpla con las Spike o Pruebas de Concepto
expectativas.
Qué lo que se implemente no sea lo que los Mockup Prototipos
clientes/usuarios quieren.
Estimación de Esfuerzo
Esfuerzo necesario para completar una HU.
• Ayuda en la priorización de las mismas por parte del propietario del
producto
• Permite al equipo hacer el corte en la pila de producto de qué historias
caben en el sprint.
Cómo se estima
• La estimación ágil se basa en la estimación relativa, y una buena serie para
la estimación de historias de usuario es la serie de Fibonacci modificada
• Es un hecho que para historias de usuario pequeñas la incertidumbre en la
estimación es mucho menor que para las historias grandes, y mientras el
tamaño de las historias crece linealmente la incertidumbre crece
exponencialmente.
Estimación ágil: Quién lo hace
• La estimación la debe realizar el Todo el equipo de desarrollo.
• Reforzar el compromiso de todo el equipo respecto a las fechas que dan al
cliente.
• Reforzar el compromiso de cada miembro del equipo respecto al resto.
• Hacer que todo el mundo se sienta oído.
https://proyectosagiles.org/2009/07/01/estimacion-planificacion-agil-quinto-encuentro-agil-barcelona/
Estimación ágil: Unidad de Medida
• La estimación se puede realizar utilizando alguna de las siguientes
unidades:
• Días ideales: los días necesarios para que el equipo pueda completar un
objetivo, sin considerar interrupciones.
• Para pasar a días reales hay que aplicar un factor de corrección que puede ir del 60 %
al 70 % de dedicación real al proyecto. Asimismo, habrá que tener en cuenta un
margen para imprevistos como bajas por enfermedad, etc.
• Puntos de historia de usuario: la complejidad que tiene cada historia de
usuario. Un equipo en un proyecto determinado es capaz de completar un
número semi-regular de puntos de historia cada iteración (“velocidad”).
https://proyectosagiles.org/2009/07/01/estimacion-planificacion-agil-quinto-encuentro-agil-barcelona/
Estimación ágil: Planning Pocker
Una de las técnicas más utilizadas en
procesos agiles.
Se recomiendan diversas series para
la estimación
HU: Serie de Fibonacci modificada, para
estimas HU.
Epics: Tallas de camisas.
theagilebox.com
Los valores representan el peso/ esfuerzo/complejidad para terminar una historio de usuario.
Estimando con Planning Pocker
1. El cliente toma un historia de usuario, la lee y explica
3. Cada miembro del equipo piensa en el esfuerzo necesario para completar la HU (en secreto)
5. Las personas que están más alejadas del consenso explican por qué su votación es más alta o mas baja.
•C - COULD HAVE (podría implementarse): Se podría tener - Es deseable, por tanto sería
conveniente tener esta funcionalidad implementada en la solución, dependerá de las
Co posibilidades de los tiempos y el presupuesto del proyecto.
https://railsware.com/blog/moscow-prioritization/
•W - WON'T HAVE (no lo queremos... quizá en un futuro): Se trata de una funcionalidad de muy
baja prioridad o descartada en ese momento, pero que en futuro pueda ser relevante.
W Posteriormente, cuando cobre importancia, puede pasar a alguno de los estados anteriores.
Definido por primera vez en 2004 por Dai Clegg de Oracle UK Consulting en el libro Case Method Fast-Track: A RAD Approach
Priorización con MoSCoW
Debe tener Debería tener Podría tener No tendré este tiempo
•No tiene sentido entregar en la fecha •Importante pero no vital •Los requisitos de Podría tener se •Estos son requisitos que el equipo del
prevista sin esto; si no se entrega, no •Puede ser doloroso dejar de lado, definen como: proyecto ha acordado que no se
tendría sentido implementar la pero la solución sigue siendo viable •Deseado o deseable pero menos cumplirán (como parte de este
solución en la fecha prevista •Puede necesitar algún tipo de importante plazo). Se registran en la Lista de
•No es legal sin eso solución alternativa, por ejemplo, •Menos impacto si se deja fuera (en requisitos priorizados donde ayudan a
•Inseguro sin él gestión de expectativas, alguna comparación con un Debería tener) aclarar el alcance del proyecto. Esto
ineficiencia, una solución existente, evita que se reintroduzcan de manera
•No se puede ofrecer una solución •Estos son los requisitos que
papeleo, etc. La solución puede ser informal en una fecha posterior. Esto
viable sin ella proporcionan el principal grupo de
solo temporal también ayuda a gestionar las
•Haga la pregunta '¿qué sucede si no contingencia, ya que solo se
expectativas de que algunos
se cumple este requisito?' Si la •Una forma de diferenciar un requisito entregarían en su totalidad en el
requisitos simplemente no se incluyan
respuesta es 'cancelar el proyecto; no de Debería tener de un Poder tener es mejor de los casos. Cuando ocurre un
en la solución implementada, al
tiene sentido implementar una revisando el grado de dolor causado problema y la fecha límite está en
menos no esta vez. Won't Haves
solución que no cumpla con este por el incumplimiento del requisito, riesgo, uno o más de los Podría tener
puede ser muy poderoso para
requisito', entonces es un requisito medido en términos de valor brindan la primera opción de lo que
mantener el enfoque en este
imprescindible. Si hay alguna forma comercial o número de personas se eliminará de este período de
momento en los May Haves más
de evitarlo, incluso si es una solución afectadas. tiempo.
importantes, Should Haves y
manual y dolorosa, entonces es un particularmente en los Must Haves.
requisito que debería tener o podría
tener. Categorizar un requisito como
Debería tener o Podría tener no
significa que no se
cumplirá; simplemente esa entrega
no está garantizada.
Priorización con MoSCoW
• En un proyecto tradicional, todos los requisitos se tratan como
imprescindibles, ya que la expectativa se establece desde el principio
de que todo se entregará y que, por lo general, el tiempo (la fecha de
finalización) se deslizará si se encuentran problemas. Los proyectos
DSDM tienen un enfoque muy diferente; fijando tiempo, costo y
calidad y características de negociación. Al final de Fundaciones, se
confirman las fechas de finalización del proyecto y del primer
Incremento del Proyecto.
• MoSCoW para el proyecto
• MoSCoW para el incremento del proyecto
• MoSCoW para este Timebox
https://www.agilebusiness.org/page/ProjectFramework_10_MoSCoWPrioritisation
Prioridad: ROI
• Otra herramienta que ayuda al propietario del producto a priorizar la pila
de producto de forma adecuada es el cálculo del ROI (Return of
Investment) o retorno de la inversión:
• Valor de negocio: el valor relativo del elemento para negocio o el cliente.
• Tamaño: estimación en puntos de historia del esfuerzo necesario teniendo
en cuenta complejidad y tamaño.
ROI = Valor de negocio / Tamaño
Comprobar [Criterios]
Verificar que cuando [Rol] hace [Acción] consigue [Resultado / Comportamiento esperado]
• https://ronjeffries.com/articles/019-01ff/3cs-revisited/
EL PROCESO DE LAS TRES C’S RON JEFFRIES
• 1. Card (tarjeta) Escribimos una descripción rápida de la función en
una tarjeta.
• 2. Conversation (Conversación) la discutimos con nuestro cliente
(piense en el propietario del producto Scrum)
• 3. Confirmation luego creamos ejemplos concretos comprobables
para confirmar que la función hizo lo que nosotros y el cliente
queríamos
• https://ronjeffries.com/articles/019-01ff/3cs-revisited/
EL PROCESO DE LAS TRES C’S RON JEFFRIES
• https://ronjeffries.com/xprog/articles/expcardconversationconfirmati
on/
VISION DEL PRODUCTO
• Todos nos reunimos con nuestro Cliente / Propietario del producto y
hablamos sobre el producto. Qué problemas resuelve, cómo podría
resolverlos. Nos contábamos historias sobre problemas y
soluciones. Hacíamos dibujos del producto. Probablemente
hablaríamos con usuarios reales o visitaríamos sus sitios y los
veríamos trabajar. Conceptualizaríamos el producto, tratando de dar
a todo el equipo una visión bastante coherente de lo que se
necesitaba hacer. Esta sería una conversación a gran escala.
• https://ronjeffries.com/articles/019-01ff/3cs-revisited/
VISION DEL PRODUCTO
• A medida que pasaba el tiempo, más como días que semanas o
meses, comenzábamos a desarrollar ideas de funciones, o
capacidades específicas, cosas que podíamos construir. Debido a que
trabajaríamos con una cadencia de una o dos semanas, o incluso uno
o dos días más continuos por historia, rápidamente nos volveríamos
muy específicos. Esta sería una conversación a menor escala y más
enfocada.
VISION DEL PRODUCTO
• A medida que comenzamos a elegir cosas específicas para hacer a
continuación, por supuesto necesitaríamos refinar nuestra
comprensión de esas cosas. Lo haríamos siendo muy específicos sobre
lo que una característica determinada, definida por una historia
determinada, debe hacer. Lo haríamos lo más concreto posible, para
asegurarnos de que todos, Clientes y Desarrolladores, tuviéramos un
entendimiento común de lo que se debe hacer.
VISION DEL PRODUCTO
• ¿Lo haríamos escribiendo un montón de texto en una tarjeta, en un
documento o en Jira? No lo haríamos. Expresaríamos las capacidades
acordadas como ejemplos de lo que debería hacer el sistema. Siempre
que sea posible, se expresarán como pruebas de cliente ejecutables
concretas. A veces, podrían expresarse como dibujos de la GUI o algo
menos concreto, pero siempre que fuera posible, siempre estaríamos
trabajando hacia una forma muy concreta de Confirmación de que el
producto estaba haciendo lo nuevo que nos propusimos hacer.
VISION DEL PRODUCTO
• Entonces, haríamos la cosa. Cuando terminamos, uno o dos días
después, las Confirmaciones concretas estarían funcionando y
pasaríamos a lo siguiente, repitiendo el proceso.