$30 off During Our Annual Pro Sale. View Details »

Modular design with TDD

Modular design with TDD

The slides we used during the workshop at http://conferencia2013.agile-spain.org.

It's only the exercise description. No explanations in it. Oh, and it's in spanish.

Javier Acero

October 10, 2013
Tweet

More Decks by Javier Acero

Other Decks in Programming

Transcript

  1. DIRIGIDO POR PRUEBAS
    DISEÑO
    @jacegu
    @pasku1
    MODULAR

    View Slide

  2. LA APLICACIÓN

    View Slide

  3. Iñaki Azkuna
    Alcalde de Bilbao

    View Slide

  4. View Slide

  5. ROAR!!

    View Slide

  6. ¿Cómo va a funcionar?

    View Slide

  7. RESTRICCIONES:
    - Haz lo más simple que pueda funcionar.
    - Escribe el mejor código que puedas.
    - No hagas más de lo que pide la
    funcionalidad.
    - No introduzcas infraestructura si la
    funcionalidad no lo pide explícitamente.
    - No dependas de librerías si la
    funcionalidad no lo pide explícitamente.

    View Slide

  8. ITERACIÓN I
    Un usuario puede registrarse con
    un nombre de usuario.
    Por ejemplo: “@pasku1”
    Si otra persona se ha registrado usando
    ese mismo nombre de usuario se produce
    un error.
    10min

    View Slide

  9. ITERACIÓN II
    Un usuario puede seguir a otros usuarios.
    Para hacerlo basta con conocer el
    nickname del usuario al que se quiere
    seguir.
    Cualquiera debe poder consultar a quién
    sigue un determinado usuario conociendo
    su nickname.
    20min

    View Slide

  10. MÁS RESTRICCIONES:
    - No se puede modificar el código escrito
    hasta ahora.

    View Slide

  11. ITERACIÓN III
    Los registros de usuarios así como las listas
    de usuarios seguidos deben almacenarse
    de forma durable.
    20min

    View Slide

  12. MÁS RESTRICCIONES:
    - Situar el código escrito hasta ahora dentro
    de un namespace llamado “core”
    - Usar el código escrito hasta ahora como si
    fuera una librería externa.
    - El código de esta iteración debe estar en
    un namespace diferente.
    - Ese namespace puede tener una única
    dependencia del “core”.

    View Slide

  13. ITERACIÓN IV
    Crear un mecanismo de entrega HTTP que
    permita acceder a la funcionalidad
    desarrollada hasta ahora.
    30min

    View Slide

  14. ITERACIÓN V
    Un usuario puede publicar “roars”.
    El resto de usuarios deben poder consultar
    todos los “roars” que un usuario con un
    determinado “nickname” ha escrito.
    20min

    View Slide

  15. ITERACIÓN VI
    Poner esta nueva funcionalidad disponible
    en mecanismo de entrega.
    Garantizar la durabilidad de los datos.
    40min

    View Slide

  16. View Slide