2008-09-25 8 views
2

En supposant que vous implémentez une user story nécessitant des modifications de toutes les couches, de l'interface utilisateur (ou de la façade de service) à la base de données.Développement d'une application N-Tier. Dans quelle direction?

Dans quelle direction vous déplacez-vous?

  • De l'interface utilisateur à la couche métier au référentiel à la base de données? De la base de données au référentiel en passant par la couche métier et l'interface utilisateur?
  • Cela dépend. (Sur quoi?)

Répondre

2

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.

0

Je le ferais de bas en haut, car vous obtiendrez des résultats rapides (vous pouvez écrire des tests unitaires sans interface utilisateur, mais vous ne pouvez pas tester l'interface utilisateur avant le modèle est fait).

Il existe d'autres avis, cependant.

0

Je commencerais à modéliser le domaine du problème. Créez des classes pertinentes représentant les entités du système. Une fois que je me sentirai à l'aise avec cela, j'essaierais de trouver une cartographie réalisable pour la persistance des entités dans la base de données. Si vous mettez trop de travail dans l'interface utilisateur avant d'avoir un modèle du domaine, il existe un risque important que vous ayez besoin de retravailler l'interface utilisateur par la suite.

y penser, vous devrez sans doute faire des mises à jour toutes les couches de toute façon ... =)

1

Si le changement est probable, commencer à l'avant. Vous pouvez obtenir une rétroaction immédiate de la part des actionnaires. Qui sait? Peut-être qu'ils ne savent pas vraiment ce qu'ils veulent. Regardez-les utiliser l'interface (interface utilisateur, service ou autre). Leurs actions pourraient vous inspirer à voir le problème sous un jour nouveau. Si vous pouvez intercepter les modifications avant de coder les objets de domaine et la base de données, vous économisez beaucoup de temps.

Si les exigences sont rigides, ce n'est pas aussi important. Commencez dans la couche qui risque d'être la plus difficile - adressez-vous tôt au risque. En fin de compte, c'est l'un de ces problèmes «plus un art qu'une science». C'est probablement une interaction délicate entre la conception de la couche qui crée la meilleure solution.

Cheers.

Questions connexes