Note : 6 ; Où il apparait que l’on parle plus de DDD que de sécurité, mais que les deux parviennent à être indissociables…
J’avais initialement classé cet ouvrage dans ma (très pauvre) section « sécurité ». Il m’est très vite apparu que ce n’était pas sa place. C’est bien de conception dont va nous parler cet ouvrage, et même de DDD en grande partie. C’est donc un cocktail assez inhabituel et intéressant, au sens positif.
L’objet n’est pas léger, avec ses 360 pages. Nous verrons que ce n’est pas son meilleur aspect, hélas. Le tout compte 14 chapitres divisés en 3 parties. La première s’intitule sobrement introduction et contient les deux premiers chapitres, soit 45 pages. « Why design matters for security ? » est le chapitre qui ouvre le bal. L’approche évoquée par ce livre est la sécurité de l’intérieur, au niveau du code lui-même, un propos que les auteurs illustrent fort bien avec quelques histoires, que ce soit avec une histoire de braquage de banque avec le « billion Lauga » torché en 2 coups de cuiller à XML. Un chapitre très plaisant. Le second chapitre est un interlude pour nous illustrer les conséquences d’une modélisation un peu légère, ou comment obtenir un livre gratuit en commandant dans le même panier un « Hamlet » et… un « anti-Hamlet ». Une histoire hélas inspirée d’un fait réel.
La seconde partie « fondamentaux » couvre la majeure partie de l’ouvrage, avec 9 chapitres sur près de 250 pages. J’ai dit que le DDD était une pierre angulaire de l’approche, le chapitre 3 qui ouvre cette partie est une introduction au sujet. C’est bien écrit, mais un peu verbeux, car il faut compter 37 pages. Ne ratez pas l’explication du « tomber pour tourner » sur les virages pris à vélo ! Au sein du DDD, ce sont surtout les value objects qui retienne l’attention des auteurs. En l’occurrence deux aspects qui leur sont rattachés : construire des value objects immutables (bonjour Scala) et le « fail fast », c’est-à-dire des objets rejetés à la construction s’ils ne satisfont pas les conditions d’entrée (bonjour Bertrand Meyer). Ce chapitre est l’un des points forts du livre. Le chapitre 5 va un cran plus loin, avec les « domain primitives » qui sont un sur-ensemble des value objects. On voit ici comment construire ces primitives de manière sécure, en s’appuyant entre autres sur les invariants. Moins fort que le chapitre précédent, le texte reste quand même intéressant.
