charla tdd uji 032010

Post on 12-Jul-2015

671 Views

Category:

Technology

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Desarrollo Dirigido por Ejemplos

Concretar en lugar de Abstraer

Carlos Blé Jurado

Marzo 2010 – Universitat Jaume I

www.carlosble.com

Nada más salir de la facultad...

“¡Podemos programar lo que sea!!”

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

Y va la experiencia y dice...

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

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

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

¿Y eso como se hace?

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

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

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

A lo mejor es que los estamos haciendo...

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)

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)

En realidad hay aun más problemas

El mundo de la informática es complicado:

Os recomiendo: Informática Profesionalde Roberto Canales

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)

La rueda ágil

Concretando: TDD

ATDD + TDD

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:

Ejemplo de ejemplo :-)

40x20+8x20x1.5+8x20x2

Ejemplo de ejemplo :-)

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

Un test unitario

Cada cosa tiene su ámbito

ATDD – ¿Qué quiere el cliente?

TDD – ¿Cómo lo implementamos?

¿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

¿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!!!

dirigidoPorTests.com

Agile-spain.com

carlosble.com

Tambien

estamos

en Facebook!:

top related