Eliminando la brecha entre clientes y desarrolladores mediante BDD

39
Jorge Gamba Consultor en Arquitectura y Desarrollo de Software Web: http://jorgegamba.com Twitter: @jorgegamba Correo: [email protected] Eliminando la brecha entre clientes y desarrolladores mediante BDD (Behavior-Driven Development) para especificar e implementar mejor software

description

Muchos, si no la mayoría, de los problemas o fracasos en proyectos de desarrollo de software se debe a que clientes y equipos de implementación de aplicaciones sencillamente no se entienden porque ven el mundo de manera muy distinta, hay una brecha entre ambas partes, dificultando materializar los requerimientos en software que realmente aporta valor para el negocio. La metodología ágil BDD (Behavior-Driven Development) tiene precisamente el objetivo de lograr que ambas partes, cliente y equipo de desarrollo, en un proyecto se comuniquen de manera efectiva, ayudando a los primeros a especificar de manera sencilla y clara sus requerimientos, y a los segundos a entregar software que realmente cumple esas expectativas. Tomando muchas de las buenas prácticas de desarrollo ágil de software y Lean, BDD fomenta y facilita la colaboración entre los miembros de diferentes roles, así como la integración de todas las etapas del proceso de desarrollo de software de tal manera que, aun escribiendo código fuente, nunca se pierda la referencia y conexión con las especificaciones del cliente, asegurando que el producto que se entrega coincide con ellas, es de calidad y, como un beneficio adicional, queda soportado por pruebas automatizadas. Esta sesión mostrará, tanto a gente de negocios (gerentes de proyectos y analistas de negocios), como a gente técnica (especialistas en QA, arquitectos y desarrolladores de software), como aplicar BDD para obtener todos sus beneficios a la vez que hacen más felices a sus clientes con un proceso más eficiente y mejor producto.

Transcript of Eliminando la brecha entre clientes y desarrolladores mediante BDD

Page 1: Eliminando la brecha entre clientes y desarrolladores mediante BDD

Jorge GambaConsultor en Arquitectura y Desarrollo de SoftwareWeb: http://jorgegamba.comTwitter: @jorgegambaCorreo: [email protected]

Eliminando la brecha entre clientes y desarrolladores …mediante BDD (Behavior-Driven Development)

para especificar e implementar mejor software

Page 2: Eliminando la brecha entre clientes y desarrolladores mediante BDD

http://altnethispano.org/ http://agilescolombia.org/ http://mcscolombia.org/

Eliminando la brecha entre clientes y desarrolladores …mediante BDD (Behavior-Driven Development)

para especificar e implementar mejor software

Page 3: Eliminando la brecha entre clientes y desarrolladores mediante BDD

Eliminando la brecha entre clientes y desarrolladores …mediante BDD (Behavior-Driven Development)

para especificar e implementar mejor software

Agenda : Por qué Qué Cómo

Page 4: Eliminando la brecha entre clientes y desarrolladores mediante BDD

Por qué (BDD)

Page 5: Eliminando la brecha entre clientes y desarrolladores mediante BDD
Page 6: Eliminando la brecha entre clientes y desarrolladores mediante BDD

Los hombres son de MarteLas mujeres son de Venus

Page 7: Eliminando la brecha entre clientes y desarrolladores mediante BDD

Los desarrolladores son de MarteLos clientes son de Venus

Page 8: Eliminando la brecha entre clientes y desarrolladores mediante BDD

¿ Y cuál es el problema ?

Page 9: Eliminando la brecha entre clientes y desarrolladores mediante BDD

¿ Y cuál es el problema ?

No me cumpliste

como yo quería

Page 10: Eliminando la brecha entre clientes y desarrolladores mediante BDD

¿ Y cuál es el problema ?

No me cumpliste

como yo quería

Pero ¿quiénte entiende?

Page 11: Eliminando la brecha entre clientes y desarrolladores mediante BDD

¿ Y cuál es el problema ?

No me cumpliste

como yo quería

Pero ¿quiénte entiende?

Nunca cumplescon los tiempos

esperados

Page 12: Eliminando la brecha entre clientes y desarrolladores mediante BDD

¿ Y cuál es el problema ?

No me cumpliste

como yo quería

Pero ¿quiénte entiende?

Nunca cumplescon los tiempos

esperadosAyer lo queríasde una maneray hoy de otra

Page 13: Eliminando la brecha entre clientes y desarrolladores mediante BDD

djfhdjhfjdhfdhfjdhjfdEl problema es: Comunicación …No se están entendiendo [los requerimientos]

Page 14: Eliminando la brecha entre clientes y desarrolladores mediante BDD

Core / BusinessStakeholders(ejecutivos)

IncidentalStakeholders

(usuarios)

Business Analysts(BAs)

QAs(Testers)

Desarrolladores(Devs)

Cliente

Equipo de Desarrollo

El teléfono roto

Page 15: Eliminando la brecha entre clientes y desarrolladores mediante BDD

Qué (BDD)

Page 16: Eliminando la brecha entre clientes y desarrolladores mediante BDD

Desarrollo Ágil de Software

Page 17: Eliminando la brecha entre clientes y desarrolladores mediante BDD

Agile es acerca de …minimizar el tiempo para obtener feedback

Page 18: Eliminando la brecha entre clientes y desarrolladores mediante BDD

http://agilemanifesto.org/iso/es/

Page 19: Eliminando la brecha entre clientes y desarrolladores mediante BDD

“Behaviour-driven developmentis about implementing an application by describing its behaviourfrom the perspective of itsstakeholders”

http://dannorth.net/

Page 20: Eliminando la brecha entre clientes y desarrolladores mediante BDD

“BDD is a second-generation, outside-in, pullbased, multiple-stakeholder, multiple-scale, high-automation, agile methodology.

“It describes a cycle of interactions with welldefinedoutputs, resulting in the delivery of working, tested softwarethat matters.”

http://dannorth.net/

Page 21: Eliminando la brecha entre clientes y desarrolladores mediante BDD

BDDTDD

ATDD

DDD

Page 22: Eliminando la brecha entre clientes y desarrolladores mediante BDD

Cómo (BDD)

Page 23: Eliminando la brecha entre clientes y desarrolladores mediante BDD

El ciclo

• Outside-In

• Pull-based

• Fractal

• Decomposition

• Deriving scope from goals

http://www.infoq.com/articles/pulling-power

Page 25: Eliminando la brecha entre clientes y desarrolladores mediante BDD

Business Value

• Factor diferenciador

• Se hace software por

– Hacer dinero

– Ahorrar dinero

– Proteger dinero

• Core Stakeholders

Page 26: Eliminando la brecha entre clientes y desarrolladores mediante BDD

“Aumentar las ventas y controlar la cartera en un estado saludable”

Page 27: Eliminando la brecha entre clientes y desarrolladores mediante BDD

Vision

• Todo proyecto necesita una únicavisión, de un mejor futuro– Por qué es importante

– Qué esperamos lograr

– Cómo se reconocerá el logro

• Debe ser transmitida al equipo

• Es la definición general de “Done”

• Es el mayor punto de referencia

• Core Stakeholders

Bu

sin

ess

Val

ue

Page 28: Eliminando la brecha entre clientes y desarrolladores mediante BDD

MyCRM dará a la organización un control que no se tieneactualmente, al proporcionar información valiosa que serviráde soporte para la toma de decisiones y definición de estrategias para proteger nuestro patrimonio.

Esto mediante proporcionar herramientas de capturaefectiva de información útil, analizándola y reportandoindicadores que permitan evaluar el estado del negocio.

Page 29: Eliminando la brecha entre clientes y desarrolladores mediante BDD

Feature Sets(Epics)

• Lo que necesitamos paraimplementar la visión

• Son Stories muy grandes paramanejar y estimar, deben serdivididas

• Pueden corresponder con los subsistemas de la aplicación

• Se deben mantener en un alto nivel de abstracción

• Incidental Stakeholders

Vis

ión

Page 30: Eliminando la brecha entre clientes y desarrolladores mediante BDD

Para contar con informaciónque podamos evaluarComo un gerente de departamento comercialYo quiero capturarinformación comercial de los

clientes

Para tomar mejoresdecisiones en el tratamientode clientesComo un asesor comercialYo quiero que el sistema me proporcione informaciónsobre cada cliente

Para diseñar mejoresestrategias de cobroComo un gerente de departamento de carteraYo quiero disponer de reportes que me detallen el estado actual de la cartera

Page 31: Eliminando la brecha entre clientes y desarrolladores mediante BDD

Stories

• Es una manera de capturar y describir una feature del sistema, algo que el usuario quiere

• Constituye una unidad de entrega, algo que habrá queimplementar

• Debe ser tan pequeña como sea posible sin perder significadopara el negocio

• Business Analysts (BAs)

Feat

ure

Set

s

Page 32: Eliminando la brecha entre clientes y desarrolladores mediante BDD

Para realizar una venta ágil y sin demorasComo un asesor comercialYo quiero disponerinformación detallada sobrelos artículos en venta

Para no poner en riesgo la cartera de la empresaComo un asesor comercialYo quiero saber si le puedevender a crédito a un clientesegún su endeudamiento

Para concretaroportunamente una ventaComo un asesor comercialYo quiero registrar los datosde una venta potencial o efectiva

Page 33: Eliminando la brecha entre clientes y desarrolladores mediante BDD

Scenarios

• Constituyen o detallan los criterios de aceptación

• Son ejemplos, así de sencillo

• Deben incluir contexto, accióny verficación

• Given / When / Then

• Se pueden automatizar

• Qas / Testers [ + Bas + devs]

Sto

ries

Page 34: Eliminando la brecha entre clientes y desarrolladores mediante BDD

Dado que el cliente no esmorosoCuando solicite comprar a créditoEntonces debería aprobarse

Y mostrarle el nuevo cupo

Dado que el cliente es morosoY no excede su límite de créditoCuando solicite comprar a créditoEntonces debería aprobarseY mostrarle el nuevo cupo

Dado que el cliente es morosoY excede su límite de créditoCuando solicite comprar a créditoEntonces debería negarseY debería informarse la causa

Page 35: Eliminando la brecha entre clientes y desarrolladores mediante BDD

Executable Specifications

• No son scripts, son especificaciones• Son mejores que la documentación

tradicional– Especifican qué hay que hacer– Pruebas de aceptación y regresión– Documentación dinámica

• Son el artefacto más durable en el proyecto

• Son tan confiables como el códigopero más legibles

• Devs (desarrolladores)

Scen

ario

s

Page 36: Eliminando la brecha entre clientes y desarrolladores mediante BDD

Beneficios• Win-Win• Clientes felices• Equipo feliz• Calidad• Menos bugs• Documentación• Pruebas• Etc.

http://www.infoq.com/articles/pulling-power

Page 37: Eliminando la brecha entre clientes y desarrolladores mediante BDD

Referencias

• Dan North - http://dannorth.net/

• Liz Keogh - http://lizkeogh.com/

• Jorge Gamba - http://jorgegamba.com/

• Skills Matter - http://skillsmatter.com/

• InfoQ - http://www.infoq.com/

Page 38: Eliminando la brecha entre clientes y desarrolladores mediante BDD

¿ Preguntas ?

Page 39: Eliminando la brecha entre clientes y desarrolladores mediante BDD

Jorge GambaConsultor en Arquitectura y Desarrollo de SoftwareWeb: http://jorgegamba.comTwitter: @jorgegambaCorreo: [email protected]

http://altnethispano.org/ http://agilescolombia.org/ http://mcscolombia.org/