Domain-Drive Design Flashcards

1
Q

Quelles sont les deux composantes fondamentales pour avoir une modélisation viable ?

A

Il faut que sa construction soit itérative, et que les développeurs aient une très bonne communication avec les experts du domaine.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Qu’est ce que l’analyse paralysante ?

A

C’est quand on a trop de documents inutiles, trop de specs en avance, et que cela nous bloque pour avancer.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Qu’est ce qu’un modèle ?

A

Une connaissance sélectionnée, simplifiée et structurée d’un élément d’un domaine.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Qu’est ce qu’une modélisation ?

A

Le fait de lier plusieurs modèles entre eux afin de créer un ensemble représentant le domaine.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Par qui le modèle doit être compris ?

A

Par tous les gens de l’entreprise. Ce doit être un langage commun.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Comment les modèles doivent ils être conçus ?

A

Par le knowledge crunching (du brainstorming avec les experts du domaine et les développeurs), et de l’itération (des expérimentations)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Qu’est ce qu’un langage ubiquitaire ?

A

C’est quand on utilise le même vocabulaire entre experts et développeurs.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Que permet d’éviter le langage ubiquitaire ?

A

Les traductions entre les services, ce qui amène à une incompréhension du modèle.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Qu’induit un changement du langage ubiquitaire ?

A

Un refactoring dans le code.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Qu’est ce qui ne fait pas parti du langage ubiquitaire ?

A

Les termes techniques (patterns, code…), les termes business qui sont inconnus au développeur.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Que faut il éviter avec les diagrammes UML ?

A

Qu’ils contiennent trop d’informations. Il faut éviter les implémentations techniques dedans (signatures des fonctions par ex, type des variables..)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Peut on représenter tout le domaine via UML ?

A

C’est impossible : trop gros, complétement indigeste pour tout le monde. Il faut faire une belle doc qui va séparer en petits diagrammes.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Que doit faire la documentation ?

A

Compléter le code et la parole. Avoir une vision en hauteur, sans trop rentrer dans les détails. Apprendre pas à pas la modélisation.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Que doit on faire au niveau du code avec le langage ubiquitaire ?

A

Utiliser le même vocabulaire partout, même pour nos classes.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Qui doit faire la conception des logiciels ?

A

Les développeurs qui vont réaliser le logiciel. Ce sont les lead développeurs qui vont lier la modélisation du domaine avec la conception du logiciel.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

En combien de couches l’auteur de DDD propose de séparer une application ?

A

4 : UI, Applicative, Domain, Infrastructure

17
Q

Que faut il faire avec les relations de models ?

A

Il faut les réduire au maximum, pour avoir le moins de chemins possibles.

18
Q

Que faut il faire avec les relations bidirectionnelle ?

A

Le rendre unidirectionnelle, pour simplifier la modélisation. On va garder la relation directionnelle la plus forte, qui a le plus de sens (Formuler la question pour trouver)

19
Q

Qu’est ce qu’une entité ?

A

Un model qui a une continuité, une vie dans le SI

20
Q

Que doit on s’assurer avec les entités ?

A

Qu’ils aient un identifiant unique à travers tout le SI, et qu’on ne se base pas sur des attributs mouvants (coucou l’email)

21
Q

Qu’est-ce qu’un Service ?

A

Une classe qui va coordonner une action en prenant en paramètre des models. Son nom doit être un verbe, tiré du langage uniquitaire.

22
Q

Qu’est ce qu’un Value Object en DDD ?

A

Un model mais qui n’est pas une intentité

23
Q

Qu’est-ce qu’un Aggregate en DDD?

A

Un ensemble composé d’une Entité racine et de plusieurs Objects Values qui la référence.

24
Q

Que doit on s’assurer avec les Aggregate en DDD ?

A

Si l’entité est mise à jour (ajout ou suppression id), les Objects Values doit être immédiatement mises à jour. Les références externes à l’Entité de l’Aggregation peuvent être faite en asynchrone.

25
Q

Qu’est ce qu’un Repository ?

A

Une classe qui va faire créer nos objets de la DB vers l’application. Il va pouvoir aussi faire des recherches plus complexes, avec des filtres…

26
Q

Qu’est ce qu’une Specification en DDD ?

A

Un object Value mais dédié à produite un résultat Booléen (ex : isValid). Permet de séparer cette logique de du model, mais quand même mettre en avant dans la modélisation

27
Q

Peut avoir un model identique (exemple un utilisateur) pour tous le SI ?

A

Non, car il ne matcherai pas pour tous les besoins des Apps.

28
Q

Qu’est ce qu’un Bounded Context ?

A

C’est le périmètre dans lequel un modèle peut agir

29
Q
A