Test-Driven Development se trata de escribir pruebas para definir las especificaciones del programa
No escribe pruebas para definir la especificación, las descripciones de las pruebas, las historias de los usuarios y las descripciones de características son la especificación, en el sentido de 'árboles muertos'.
Para revisar, el proceso de TDD en pocas palabras es:
- definir un proyecto en términos de características
- Describir la parte interesada, el comportamiento y el objetivo de cada característica utilizando historias de usuario
- especifique los datos esperados, los eventos / condiciones desencadenantes y los comportamientos / resultados asociados con una historia de usuario utilizando descripciones de prueba [y esto completa la 'especificación']
- elija un conjunto de características para cada iteración; las iteraciones deben ser cortas [omito los pasos de planificación y estimación por brevedad]
- codifique una prueba para una función (fallará, pero tuvo que tomar decisiones de API para codificar la prueba)
- implementar suficiente de la función para que la prueba pase
- refactorizar el código si es necesario
- repita con la próxima prueba hasta que se complete la función
- repita con la siguiente característica hasta que se complete la iteración
- repita con la siguiente iteración hasta que se complete el proyecto
la cantidad de diseño, arquitectura, documentación de respaldo, etc., que elija hacer no forma parte de TDD. Hay algunas 'mejores prácticas' prácticas sobre las que puede leer, pero tenga en cuenta que esas son las 'mejores' prácticas en el taller de otra persona , no en las suyas.
tenga en cuenta que el punto es que el cliente y el desarrollador presenten las características y escriban las historias y las descripciones de las pruebas juntas , para un entendimiento mutuo
entonces, con eso fuera del camino, la pregunta original fue:
¿Cuál es el papel de un arquitecto de software en TDD?
Y la respuesta corta es:
Igual que siempre, igual que siempre. --David Byrne
EDITAR: La respuesta larga es: el arquitecto desempeña los roles habituales de visionario / investigador / irritante / apoyo / respaldo durante todo el proceso, según sea necesario.
EDIT 2: lo siento, perdí el punto de las subpreguntas! Todos son responsables de escribir las especificaciones; todos los desarrolladores, incluido el arquitecto, si corresponde, más el cliente . Los desarrolladores también codifican las pruebas.