La meilleure réponse que j'ai vue à ce genre de question a été fournie par les gars Atomic Object et leur modèle Presenter First. Fondamentalement, il s'agit d'une implémentation du modèle MVP, dans lequel (comme son nom l'indique) vous commencez à travailler à partir du présentateur. Ceci vous fournit un objet très léger (puisque le présentateur est essentiellement là pour rassembler des données du modèle à la vue, et des événements de la vue au modèle) qui peut modéliser directement votre ensemble d'actions de l'utilisateur. Lorsque vous travaillez sur le présentateur, la vue et le modèle sont généralement définis en tant qu'interfaces et modifiés, de sorte que votre objectif initial est de définir comment l'utilisateur interagit avec vos objets.
En général, j'aime travailler de cette façon, même si je ne fais pas un modèle MVP strict. Je trouve que le fait de mettre l'accent sur l'interaction avec l'utilisateur m'aide à créer des objets métier plus faciles à interagir. Nous utilisons également Fitnesse en interne pour les tests d'intégration, et je trouve qu'écrire les appareils pour Fitnesse tout en construisant mes objets métier aide à garder les choses au point de vue de l'utilisateur. Je dois dire, cependant, que vous vous retrouvez avec un cycle TDD assez intéressant lorsque vous commencez avec un test Fitnesse défaillant, puis créez un test d'unité défaillant pour cette fonctionnalité, et remontez la pile.Dans certains cas, j'écris aussi des tests d'unité de base de données, donc il y a une autre couche de tests qui peut être écrite, échouée, et passée, avant que les tests Fitnesse ne passent.