Note 3 ; Les principes embryonnaires de la conception objet
Il y a « l’avant » Design Patterns, et « l’après ». Cet ouvrage est dans la catégorie « avant ». Il fait aussi suit à « l’Analyse orientée objet » des mêmes auteurs. Et son âge respectable le classe parmi les livres qui ont servi de fondation à l’orienté objet. Bien sûr, depuis on a construit pas mal d’étages, et seul les férus d’histoire informatique auront à cœur de se replonger dans ces textes !
Le problème avec « l’avant » Design Patterns, c’est que l’on parle bien d’analyse et de conception (ici séparés en 2 livres) et que l’on prétend faire la différence clairement, mais en fait ce n’est pas le cas ! Au long des 160 pages du texte principal, les auteurs peinent à exposer des aspects clairement différents entre l’analyse et la conception. Voyons cela.
En plus du texte principal découpé en 10 chapitres, l’ouvrage compte 24 pages d’annexes, elles-mêmes séparées en 3. Passé la quinzaine de pages d’avant-propos, ce sont les 10 pages du premier chapitre « améliorer la conception » qui ouvrent le bal. Bien que cela ne soit pas avoué ouvertement, la conception y est présenté comme quelque chose d’ajoutée « après coup » pour améliorer la qualité et la maintenance ! On y évoque aussi les principes d’encapsulation et l’organisation fonctionnelle.
Le chapitre 2 traite du passage au modèle en couche. Un modèle en couche bien rigide qui en possède nécessairement 5 ! Les auteurs posent aussi leur position sur le passage de l’analyse à la conception : c’est un continuum. J’aime tout particulièrement le passage où l’on explique que le modèle passe d’analyste aux concepteurs qui reviennent avec une matrice de traçabilité pour prouver qu’ils ont effectivement fait quelque chose !
Après voir tenté de nous faire admettre aux forceps qu’il y a une différence entre analyse et conception, le chapitre 3 en rajoute une couche. Oui, la COO est différente : on ajoute des abstractions, on optimise pour la vitesse, on ajoute des composants bas-niveau. Si vous n’avez pas été convaincus par le chapitre 2 (comme moi), il y a peu de chances que vous le soyez par les 20 pages de ce chapitre ci.
C’est de composants d’interaction humaine qu’il s’agit au chapitre 4. Les 15 pages de ce chapitre sont assez perturbantes, car il commence par une note résolument fonctionnelle (mais sans l’avouer) : identification des utilisateurs et les cas d’usage ! La partie résolument conception est un exposé de l’utilisation de l’outil OOATool ! Un chapitre à oublier.
Le chapitre 5 ne fait que 6 pages. C’est bien suffisant pour traiter le « composant de coordination des tâches ». Il s’agit du pattern Command (en moins bien).
C’est la gestion de données qu’est sensé traiter le chapitre 6 sur 15 pages. On connaît la complexité du sujet. Et les auteurs font leur possible pour l’esquiver. On aurait pu économiser du papier.
Plus de 30 pages sont consacrées au passage en revue des langages OO de l’époque et de la façon dont ils abordent les concepts OO : C++, Pascal Objet, Objective C (si, si), Eiffel et même Ada. Sans être un modèle du genre, cela reste mon chapitre préféré !
Au chapitre 8, on parle des critères de la conception OO. Disons que c’est mon deuxième chapitre préféré : couplage faible, forte cohésion, simplicité. Les prémisses de ce qui fera le succès des livres de Robert Martin est bien là !
L’avant-dernier chapitre est consacré aux outils. Donc un chapitre à peu près inutile. Heureusement il ne pèse que 5 pages. C’est à peu près la taille du dernier chapitre qui sert essentiellement à nous donner la bénédiction des auteurs pour partir sur la conception en objet !
Nous sommes ici encore dans le schéma des méthodologies rigides et de styles architecturaux qui sont de mêmes ! Ne perdez pas votre temps sur cet ouvrage si votre intérêt est autre qu’historique. Le texte ne recèle pas de pépites le gardant pertinent 25 ans plus tard…

Référence complète : Conception orientée objet – Peter Coad & Edward Yourdon – Masson 1993 (V.O.: Object Oriented Design – Prentice Hall 1991) – ISBN: 2-225-84212-4