O Desenvolvimento Orientado a Testes trata de escrever testes para definir as especificações do programa
Você não escreve testes para definir a especificação, as descrições de teste, histórias de usuário e descrições de recursos são a especificação, no sentido de 'árvores mortas'.
Para revisar, o processo TDD em poucas palavras é:
- definir um projeto em termos de recursos
- descrever a parte interessada, o comportamento e a meta de cada recurso usando histórias de usuários
- especifique os dados esperados, acionando eventos / condições e comportamentos / resultados associados a uma história de usuário usando descrições de teste [e isso completa a 'especificação']
- escolha um conjunto de recursos para cada iteração; as iterações devem ser curtas [estou omitindo as etapas de planejamento e estimativa por questões de brevidade]
- codifique um teste para um recurso (ele falhará, mas você teve que tomar decisões de API para codificar o teste)
- implementar o suficiente do recurso para que o teste seja aprovado
- refatorar o código, se necessário
- repita com o próximo teste até que o recurso seja concluído
- repita com o próximo recurso até que a iteração seja concluída
- repita com a próxima iteração até que o projeto seja concluído
quanto design, arquitetura, documentação de suporte etc. você não faz parte do TDD. Você pode ler sobre algumas das "melhores práticas" práticas, mas lembre-se de que essas são as "melhores" práticas no workshop de outra pessoa , não na sua.
observe que o ponto é o cliente e o desenvolvedor apresentar os recursos e escrever as histórias e as descrições dos testes juntos , para entendimento mútuo
então, com isso fora do caminho, a pergunta original era:
qual é o papel de um arquiteto de software no TDD?
E a resposta curta é:
O mesmo de sempre, o mesmo de sempre. --David Byrne
EDIT: A resposta longa é: o arquiteto desempenha as funções habituais de visionário / investigador / irritante / suporte / suporte durante todo o processo, conforme necessário.
EDIT 2: desculpe, eu perdi o ponto das sub-perguntas! Todos são responsáveis por escrever as especificações; todos os desenvolvedores, incluindo o arquiteto, se / quando apropriado, mais o cliente . Os desenvolvedores também codificam os testes.