Aller au contenu
Filtrer les règles par style d’implémentation
Partie 1 · Conception stratégique

Bounded contexts ​

Un bounded context donne à chaque terme un sens précis. Ces règles vérifient que le code respecte cette frontière :

  • un langage par bounded context ;
  • aucun concept étranger dans le modèle ;
  • une traduction à chaque entrée ;
  • une taille fixée par le langage ;
  • un style d’implémentation qui suit la complexité du domaine.

Elles s’appuient sur la context map : avant de juger un dossier, il faut savoir à quel bounded context il appartient. C’est pourquoi plusieurs d’entre elles concluent par une question plutôt que par un défaut.

En pratique ​

Dans les services d’un établissement de paiement, les mêmes mots changent de sens d’un bounded context à l’autre :

TermeDans CustomerDans Ledger
CompteLa relation avec un client : qui il est, comment le joindreUne ligne des livres comptables, débitée et créditée, avec un solde
Clôturer un compteMettre fin à la relationRefuser toute nouvelle écriture sur cette ligne

Chaque bounded context garde son propre modèle, et déclare comment il est construit :

json
{
	"contexts": {
		"payment": "tactical",
		"ledger": "tactical",
		"customer": "transaction-script",
		"safeguarding": "transaction-script",
		"compliance": "tactical"
	}
}
  • Un langage par bounded context : aucun n’emprunte le modèle de compte de l’autre (CTX-01, CTX-07).
  • L’effort de modélisation suit la complexité de chaque bounded context (CTX-13), et ce choix est déclaré (CTX-14).

Règles ​

Langage et frontière

CodeRègleSévéritéDétection
CTX-01Un langage par bounded context, pas de modèle universel majeure
CTX-02Un terme a un seul sens dans le bounded context question
CTX-03Le code suit le glossaire du bounded context majeure
CTX-04Aucun concept d’un autre subdomain dans le modèle majeure
CTX-05À la frontière, traduire en un concept local majeure
CTX-06Un système externe est un autre bounded context majeurefitness

Homonymes entre bounded contexts

CodeRègleSévéritéDétection
CTX-07Chaque bounded context a son propre modèle d’un concept partagé majeure
CTX-08Pas de préfixe juste pour éviter un conflit avec un autre bounded context mineure

Ce que contient un bounded context

CodeRègleSévéritéDétection
CTX-09Le schéma de la base parle le langage du modèle mineure
CTX-10Les composants autour du modèle délèguent majeure

Taille et organisation

CodeRègleSévéritéDétection
CTX-11La taille d’un bounded context suit le langage question
CTX-12Une équipe par bounded context majeure
CTX-15Un module avant un bounded context question

Style d’implémentation

CodeRègleSévéritéDétection
CTX-13L’investissement tactique suit la complexité du domaine question
CTX-14Chaque bounded context déclare son style d’implémentation majeurefitness
CTX-16Chaque choix d’architecture répond à un risque réel bloquante