Charla Tdd Uji 032010

21
Desarrollo Dirigido por Ejemplos Concretar en lugar de Abstraer Carlos Blé Jurado Marzo 2010 – Universitat Jaume I www.carlosble.com

Transcript of Charla Tdd Uji 032010

Page 1: Charla Tdd Uji 032010

Desarrollo Dirigido por Ejemplos

Concretar en lugar de Abstraer

Carlos Blé Jurado

Marzo 2010 – Universitat Jaume I

www.carlosble.com

Page 2: Charla Tdd Uji 032010

Nada más salir de la facultad...

“¡Podemos programar lo que sea!!”

“¡Despues de la carrerasaco adelantecualquier cosa!!!!!!”

Page 3: Charla Tdd Uji 032010

Y va la experiencia y dice...

“así que... podeishacer lo que sea...”

“¡y quien lo va a mantener!!!!!!”

Page 4: Charla Tdd Uji 032010

No te torturescon códigoimposible ni se lo hagas atus compañeros

No juegues con el dinero del cliente. Dale soluciones, nomás problemas

Tranquilo majete: haz las cosas bien

Page 5: Charla Tdd Uji 032010

¿Y eso como se hace?

“...pero, no veas que broncas tienen con los usuarios...”

“...tengo uncolega en unaempresa dondesaben unmontón deingeniería delsoftware...”

Page 6: Charla Tdd Uji 032010

¡¡¡¡¡¡¡AL REVES!!!!!!!!

A lo mejor es que los estamos haciendo...

Page 7: Charla Tdd Uji 032010

Afrontemos los problemas del software

Tiene defectos(malditos bugs)

No hace lo que el cliente

necesita que haga (hace otros rollitos que están que te

cagas y tal)

Es muy caro de mantener y(más vale que el cliente

evolucionar no pida cambios)

Page 8: Charla Tdd Uji 032010

Los métodos tradicionales no están resultando eficajes para evitarlos

Escuchar (o peor, leer)

Transcribir (volcar los requisitos en 500 páginas)

Abstraer (intentar resumir las 500 páginas en conceptos)

Modelar (diagramas de clases, etc)

Implementar (a picar código)

Probar (tres días usando la app a mano)

Entregar (cobrar y salir pitando)

Page 9: Charla Tdd Uji 032010

En realidad hay aun más problemas

El mundo de la informática es complicado:

Os recomiendo: Informática Profesionalde Roberto Canales

Page 10: Charla Tdd Uji 032010

Pero en el lado técnico, al menos, podemos ser ágiles

for i in iteration:

Escuchar (de primera mano, del cliente)

Transcribir (escribimos historias de usuario)

Concretar (escribir criterios/tests de aceptación)

Probar/Implementar (primero la prueba, ¡cobarde!)

Entregar (una entrega cada 3 semanas y volver al inicio)

Page 11: Charla Tdd Uji 032010

La rueda ágil

Page 12: Charla Tdd Uji 032010

Concretando: TDD

Page 13: Charla Tdd Uji 032010

ATDD + TDD

Page 14: Charla Tdd Uji 032010

ATDD

Historias de Usuario que contienen una lista de ejemplos.

Los ejemplos son el puente que une a técnicos y usuarios/clientes

Eliminan la ambigüedad

Escaner de un tpv:

Page 15: Charla Tdd Uji 032010

Ejemplo de ejemplo :-)

40x20+8x20x1.5+8x20x2

Ejemplo de ejemplo :-)

Page 16: Charla Tdd Uji 032010

Ya sabemos lo que quiere el cliente.

Ahora vamos a pensar cómo queremos diseñar e implementar el software

Y vamos a implementarlo

Escribimos un test (JUnit, NUnit, PyUnit...)

Lo hacemos funcionar lo antes posible (implementamos el código de producción)

Refactorizamos el código

Page 17: Charla Tdd Uji 032010

Un test unitario

Page 18: Charla Tdd Uji 032010

Cada cosa tiene su ámbito

ATDD – ¿Qué quiere el cliente?

TDD – ¿Cómo lo implementamos?

Page 19: Charla Tdd Uji 032010

¿Qué ventajas tiene A/TDD?

Tenemos un producto (parcial) en producción desde las primeras semanas

No se implementa lo que no será usado (YAGNI)

Minimizamos el número de defectosConseguimos código más fácil de mantener

Código preparado para cambiarAumenta la confianza del equipo

Aumenta la productividadDetectamos antes las prioridades del cliente

Page 20: Charla Tdd Uji 032010

¿Cómo aprender todo esto?

Hay un tipo por ahí que imparte cursosHay un libro en castellano sobre el temaHay una comunidad de habla hispanaHay toneladas de herramientas libres¿Tienes ganas?

Just do it!!!

Page 21: Charla Tdd Uji 032010

dirigidoPorTests.com

Agile-spain.com

carlosble.com

Tambien

estamos

en Facebook!: