« Bounded Context Canvas » : différence entre les versions
(5 versions intermédiaires par le même utilisateur non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
[[Category:DDD]] | [[Category:DDD]] | ||
Auteurs : Kenny Baas, Kim Lindhard, Michael Plöd, Maxime Sanglan-Charlier<br/> | Auteurs : [https://github.com/ddd-crew/bounded-context-canvas/graphs/contributors Contributeurs] ainsi que Kenny Baas, Kim Lindhard, Michael Plöd, Maxime Sanglan-Charlier<br/> | ||
Source : [https://github.com/ddd-crew/bounded-context-canvas The Bounded Context Canvas]<br/> | Source : [https://github.com/ddd-crew/bounded-context-canvas The Bounded Context Canvas]<br/> | ||
Date : 21/05/2023<br/> | Date : 21/05/2023<br/> | ||
Ligne 143 : | Ligne 143 : | ||
===Conseils généraux=== | ===Conseils généraux=== | ||
Faites des expériences en déplaçant un élément du canevas dans un autre contexte. Comment la conception est-elle impactée ? | Faites des expériences en déplaçant un élément du canevas dans un autre contexte. Comment la conception est-elle impactée ? | ||
===Conseils pour la conception de l'interface=== | |||
L'interface publique d'un contexte délimité est son contrat avec le reste du système. Les contrats ont un impact important sur les collaborateurs et sont difficiles à modifier, c'est pourquoi une bonne conception est vitale. Voici quelques conseils pour vous aider à évaluer la conception de l'interface d'un contexte délimité.<br/> | |||
<br/> | |||
Les noms des messages sont-ils cohérents entre eux et avec la description du contexte ? | |||
# Chaque type de message est-il optimal (par exemple, une commande doit-elle être un événement) ? | |||
# L'interface est-elle trop grande (trop de types de messages uniques) ? | |||
# Le contexte expose-t-il trop d'éléments internes ? | |||
# Certains messages semblent-ils devoir être traités ailleurs ? | |||
==Ressources complémentaires== | ==Ressources complémentaires== | ||
* [https://medium.com/nick-tune-tech-strategy-blog/bounded-context-canvas-v2-simplifications-and-additions-229ed35f825f Bounded Context Canvas V3: Simplifications and Additions] | |||
* [https://xebia.com/blog/extending-the-bounded-context-canvas-with-bdd-examples/ Extending the Bounded Context Canvas with BDD Examples] | |||
==Traductions== | ==Traductions== | ||
Toutes les ressources sont disponibles en [https://github.com/ddd-crew/bounded-context-canvas/blob/master/translations/fr/resources français] et en [https://github.com/ddd-crew/bounded-context-canvas/blob/master/translations/pt/resources portugais]. | |||
==Contributeurs== | ==Contributeurs== | ||
Merci à [https://github.com/ddd-crew/bounded-context-canvas/graphs/contributors tous les contributeurs actuels et futurs] ainsi qu'aux personnes suivantes qui ont toutes contribué au Bounded Context Canvas : | |||
* [https://github.com/Baasie Kenny Baas] | |||
* [https://github.com/kim-lindhard-dfds Kim Lindhard] | |||
* [https://github.com/mploed Michael Plöd] | |||
* [https://twitter.com/__maxs__ Maxime Sanglan-Charlier] | |||
Le [https://www.strategyzer.com/canvas/business-model-canvas Business Model Canvas] a été une source d'inspiration importante pour le Bounded Context Canvas. | |||
==Contributions et feedbacks== | ==Contributions et feedbacks== | ||
Le canevas de contexte délimité est mis gratuitement à votre disposition. En outre, vos feedbacks et vos idées sont les bienvenus pour améliorer le canevas ou pour créer de nouvelles versions.<br/> | |||
<br/> | |||
N'hésitez pas à nous envoyer une pull request avec vos exemples ou de nouvelles traductions.<br/> | |||
<br/> | |||
[http://creativecommons.org/licenses/by/4.0/ CC BY 4.0]<br/> | |||
<br/> | |||
Ce travail est placé sous une [http://creativecommons.org/licenses/by/4.0/ Licence Creative Commons Attribution 4.0 International].<br/> | |||
<br/> | |||
[http://creativecommons.org/licenses/by/4.0/ CC BY 4.0] |
Dernière version du 30 juin 2023 à 09:35
Auteurs : Contributeurs ainsi que Kenny Baas, Kim Lindhard, Michael Plöd, Maxime Sanglan-Charlier
Source : The Bounded Context Canvas
Date : 21/05/2023
Traducteur : Fabrice Aimetti
Date : 30/06/2023
Traduction :
Le Bounded Context Canvas est un outil collaboratif permettant de concevoir et de documenter la conception d'un unique contexte délimité (bounded context).
Si vous ne savez pas ce qu'est un contexte délimité, vous pouvez vous reporter au manuel DDD Reference d'Eric Evans et à l'article de Martin Fowler.
Le canevas vous guide tout au long du processus de conception d'un contexte délimité en vous demandant de prendre en compte et de faire des choix sur les éléments clés de sa conception, du nommage aux responsabilités, en passant par son interface publique et ses dépendances.
Téléchargez le canevas vierge
Comment l'utiliser
Pour commencer rapidement avec le canevas de contexte délimité, complétez le canevas dans l'ordre où les rubriques sont présentées dans le chapitre Définition des rubriques.
Commencez par le nom et la description du canevas afin de clarifier sa raison d'être et ses principales responsabilités en une phrase ou deux. Vous pouvez ensuite remplir les autres rubriques du canevas dans n'importe quel ordre. Vous pouvez concevoir le canevas de l'extérieur vers l'intérieur en commençant par la communication entrante ou de l'intérieur vers l'extérieur en commençant par les règles métier et le langage du domaine.
Il se peut que vous ne disposiez pas de toutes les informations nécessaires pour compléter certaines rubriques du canevas. Dans ce cas, vous devrez utiliser d'autres techniques de modélisation pour trouver les informations dont vous avez besoin.
Formats alternatifs
Le format par défaut du canevas Bounded Context présenté ci-dessus n'est pas le seul disponible, vous en trouverez d'autres ci-dessous. N'hésitez pas à expérimenter de nouveaux formats.
Couloirs de nage des cas d'utilisation : ce style organise la rubrique "communication" en couloirs de nage montrant la séquence dans laquelle les interactions se produisent en utilisant le format suivant : message entrant -> décision(s) prise(s) -> message(s) sortant(s).
Définition des rubriques
Voici une brève explication de chaque rubrique du canevas.
Nom
Il est difficile de donner un nom. Le fait d'écrire le nom de votre contexte et d'obtenir l'accord de l'équipe orientera la manière dont vous concevrez le contexte.
Objectif
Quelques phrases décrivant le pourquoi et le quoi du contexte en langage métier. Aucun détail technique à ce stade.
La rédaction de l'objectif vous oblige à formuler clairement des idées imprécises et à veiller à ce que tous les membres de l'équipe soient sur la même longueur d'onde.
Décrivez l'objectif d'un point de vue métier, vous pouvez également nommer les acteurs clés pour lesquels le contexte délimité apporte de la valeur.
Classification stratégique
Quelle est l'importance de ce contexte pour le succès de votre organisation ?
- domaine principal : une initiative stratégique clé
- domaine support : nécessaire mais pas un facteur de différenciation
- domaine générique : une capacité commune que l'on retrouve dans de nombreux domaines
Quel rôle le contexte joue-t-il dans votre modèle d'entreprise ?
- générateur de revenus : les gens paient directement pour cela
- générateur d'engagement : les utilisateurs l'apprécient mais ne paient pas pour cela
- générateur de conformité : protège la notoriété et l'existence de l'entreprise.
L'évolution du concept (voir les Cartes de Wardley) :
- genèse : nouveau domaine inexploré
- sur mesure : les entreprises construisent leurs propres versions
- produit : des versions prêtes à l'emploi existent et offrent une certaine différenciation
- produit de base : il existe des versions hautement standardisées.
Pour une description détaillée de la genèse, du sur-mesure, du produit de base, voir les définitions dans les Évolutions des Cartes de Wardley.
Pour obtenir de l'aide pour remplir cette section du canevas, voir les Diagrammes des Domaines de base (Core Domain Charts).
Rôles du domaine
Comment pouvez-vous caractériser le comportement de ce contexte délimité ? Reçoit-il de gros volumes de données et les analyse-t-il pour en tirer des enseignements - un contexte d'analyse ? Ou applique-t-il un flux de travail - un contexte d'exécution ? L'identification des différents rôles joués par un contexte permet d'éviter le chevauchement des responsabilités.
Jetez un coup d'œil aux Archétypes de contextes délimités d'Alberto Brandolini et aux Stéréotypes de rôles d'objets de Rebecca Wirfs-Brock pour une analyse plus approfondie de cet espace. La feuille de travail Model Traits contient des exemples de rôles générés par la communauté (Model Traits était l'ancien nom des rôles de domaine).
Communication entrante
La communication entrante représente les collaborations initiées par d'autres collaborateurs.
Messages
Les messages sont les informations qu'un collaborateur envoie à un autre. Trois types de conversation peuvent avoir lieu entre des contextes délimités. Une demande pour faire quelque chose (une commande), une demande d'information (une requête), ou une notification que quelque chose s'est produit (un événement).
Le mot "message" est utilisé au sens général et n'est lié à aucune implémentation. Aucun bus de messages ou flux de travail asynchrone n'est obligatoire. Une commande, par exemple, peut simplement consister à afficher des données à partir d'un formulaire HTML sous la forme d'une commande HTTP POST.
Collaborateurs
Les collaborateurs sont d'autres systèmes ou sous-systèmes qui envoient des messages à ce contexte. Il peut s'agir d'autres contextes délimités, de frontaux (web ou mobile) ou d'autres choses.
Si le contexte délimité possède une interface utilisateur (par exemple, un micro-frontend), le type de collaborateur est l'interaction directe avec l'utilisateur.
Type de Relation
Le type de relation entre deux contextes délimités indique comment les modèles et les équipes s'influencent mutuellement. Pour en savoir plus sur les types de relation, reportez-vous à Context Mappping.
Organisation en couloirs de nage
Les collaborateurs peuvent être organisés en couloirs de nage horizontaux indiquant les messages qu'ils envoient.
Communication sortante
La communication sortante représente les collaborations initiées par ce contexte pour interagir avec d'autres collaborateurs. Les mêmes types de messages et les mêmes conventions s'appliquent que pour la communication entrante.
Langage ubiquitaire
Quels sont les termes clés du domaine qui existent dans ce contexte et que signifient-ils ?
Décisions métier
Quelles sont les principales règles et politiques métier dans ce contexte ?
Hypothèses
Vous ne prendrez jamais de décisions de conception en ayant une connaissance complète de tout ce qui se passe dans votre domaine. La plupart des conceptions sont basées sur des hypothèses et il est fortement recommandé de les rendre explicites. Cela peut être fait dans cette rubrique du canevas de conception du contexte délimité.
Mesures de vérification
Le Domain Driven Design est une approche itérative de la modélisation et de la conception basée sur l'apprentissage continu. Les mesures peuvent vous aider à recueillir des informations précieuses pour ces apprentissages (pensez à la boucle construire-mesurer-apprendre). Réfléchissez aux mesures que vous et votre équipe pouvez définir afin de savoir si les limites choisies de votre contexte délimité sont adaptées ou non.
Vous pouvez collecter ces mesures, par exemple, à partir de :
- Vos environnements CI / CD
- Des outils comme JIRA
- De vos systèmes opérationnels
Questions ouvertes
Si vous avez des questions auxquelles personne dans la salle ne peut répondre au cours d'un atelier, vous pouvez les consigner dans cette rubrique du canevas. De cette manière, vous pouvez vous assurer qu'aucune question ouverte ne se perd, mais vous pouvez également obtenir un indicateur visuel du degré de certitude de l'équipe concernant la conception d'un contexte délimité donné. Un grand nombre de questions est un bon indicateur d'un degré élevé d'incertitude.
Exemple
Ci-dessous, une version remplie du canevas de contexte délimité.
Outils
Voici quelques outils qui peuvent vous aider à utiliser le canevas de contexte délimité.
Version HTML
Une version HTML du canevas que vous pouvez éditer dans un navigateur et versionner dans le gestionnaire de versions avec votre code. Contribution de Nelson da Costa.
Version Miro
Un modèle MiroHQ gratuit du Bounded Context Canvas.
La version actuelle du modèle sur le site Miroverse est la v4 pour le moment. En attendant, vous pouvez télécharger une [sauvegarde du tableau Miro ici à partir de ce dépôt.
Excalidraw Version
Un modèle Excalidraw du canevas contenant le Bounded Context Canvas comme modèle.
Conseils de conception
En rendant visibles sur le canevas les éléments importants de la conception d'un contexte délimité, vous pouvez plus facilement la remettre en question et l'améliorer. Voici quelques conseils pour vous aider à revoir et à améliorer une conception.
- N'hésitez pas à créer une Pull Request pour partager vos astuces.
Conseils généraux
Faites des expériences en déplaçant un élément du canevas dans un autre contexte. Comment la conception est-elle impactée ?
Conseils pour la conception de l'interface
L'interface publique d'un contexte délimité est son contrat avec le reste du système. Les contrats ont un impact important sur les collaborateurs et sont difficiles à modifier, c'est pourquoi une bonne conception est vitale. Voici quelques conseils pour vous aider à évaluer la conception de l'interface d'un contexte délimité.
Les noms des messages sont-ils cohérents entre eux et avec la description du contexte ?
- Chaque type de message est-il optimal (par exemple, une commande doit-elle être un événement) ?
- L'interface est-elle trop grande (trop de types de messages uniques) ?
- Le contexte expose-t-il trop d'éléments internes ?
- Certains messages semblent-ils devoir être traités ailleurs ?
Ressources complémentaires
- Bounded Context Canvas V3: Simplifications and Additions
- Extending the Bounded Context Canvas with BDD Examples
Traductions
Toutes les ressources sont disponibles en français et en portugais.
Contributeurs
Merci à tous les contributeurs actuels et futurs ainsi qu'aux personnes suivantes qui ont toutes contribué au Bounded Context Canvas :
Le Business Model Canvas a été une source d'inspiration importante pour le Bounded Context Canvas.
Contributions et feedbacks
Le canevas de contexte délimité est mis gratuitement à votre disposition. En outre, vos feedbacks et vos idées sont les bienvenus pour améliorer le canevas ou pour créer de nouvelles versions.
N'hésitez pas à nous envoyer une pull request avec vos exemples ou de nouvelles traductions.
CC BY 4.0
Ce travail est placé sous une Licence Creative Commons Attribution 4.0 International.
CC BY 4.0