2009-10-22 10 views
2

Les membres de l'équipe de notre projet sont de grands fans de Ubiquitous Language concept de la communauté de conception axée sur le domaine.Langage omniprésent - terme pour les développeurs et les utilisateurs

Et voici le problème que nous avons trouvé:

utilisateurs non-techy aiment utiliser un nom simplifié de tous les concepts, ils ne veulent pas connaître tous les détails, et c'est OK. Mais nous ne pouvons pas faire de même dans le code, car ces concepts ne sont pas aussi simples que nous les représentons aux utilisateurs. Exemple: L'utilisateur peut configurer un projet et choisir un modèle pour celui-ci. Mais sous le capot - il s'agit d'un concept du framework du Vendor1, qui est un composant tiers de notre logiciel.

Ainsi, en tant que développeurs, nous pouvons être déroutés par l'utilisation du terme «template» par les utilisateurs. Parce que nous sommes déjà habitués à utiliser le terme "template" dans la zone de notre framework MVC.

La solution temporaire que nous avons maintenant est:

  • montrent des termes simples pour les utilisateurs
  • utilisation termes réels dans le code
  • expliquer les termes du vocabulaire de traduction utilisateur des termes à code dans wiki

Comment devrions-nous résoudre ce problème?

+3

Il y a plusieurs années j'étais sur un projet qui a essayé d'employer la langue d'Ubiquitous. Ça n'a pas marché. Ils n'ont pas acheté d'expert en domaine. Ils avaient 19 termes pour le même concept et voulaient le garder. Ils voulaient être en guerre avec le développement. Sur ce projet, nous avons fini par créer le terme "UDickedWithUs Language". C'est un anti-pattern qui apparaît de temps en temps lorsque les experts du domaine ont peur de partager en raison de problèmes de sécurité d'emploi. J'ai eu beaucoup de chance avec le langage omniprésent sur d'autres projets. Ce premier était voué à l'échec pour les questions de culture d'entreprise. –

Répondre

6

Un peu en retard réponse ici ...

Vous ai bien eu un problème de « conditions » surchargées ici, où chaque « modèle » est différent, mais valable dans le contexte approprié.

Mon approche serait:

  1. sensibiliser tout le monde que « modèle » a des significations différentes dans des contextes différents. Ceci est essentiel si une personne doit faire face à des contextes différents.

  2. Préfixe le mot "Modèle" lorsque vous l'utilisez. Par exemple. utilisez "modèle MVC" ou "modèle [fournisseur]" ou "modèle [domaine]". Tous les artefacts (code/documentation) sont clairs et concis, sans avoir à se référer aux documents de traduction.

  3. accent clarté sur simplicité (surtout si attemping pour rendre les choses « plus simple » provoque des problèmes)

+0

Il n'est pas tard. J'attendais votre réponse :) Merci, approche intéressante. – ep3static

1

Utilisez des noms simples lorsque vous parlez avec des experts du domaine. Utilisez les mêmes noms et concepts simples lors de l'implémentation du modèle de domaine. Implémentez les mêmes exigences simples dans le modèle de domaine qui sont demandées. Il ne devrait pas y avoir quelque chose qui est implémenté dans le modèle de domaine, mais les experts du domaine n'en ont jamais entendu parler.

Utilisez des objets de fantaisie et techniques à l'extérieur dans d'autres couches. Si vous utilisez des outils tiers, utilisez-les directement dans le modèle de domaine.

1

Vous pouvez utiliser aussi bien la cartographie de contexte pour définir des contextes différents et leurs limites. En outre, vous pouvez séparer le domaine et le code en utilisant la modélisation (DSL, profils UML, ...) et les ramener à travers des approches pilotées par des modèles (par exemple la génération de code). En fait, le but du langage omniprésent est de résoudre ces conflits, vous devriez donc trouver une sorte de consensus.

Questions connexes