Existe-t-il un livre canonique sur les modèles de conception? [fermé]


49

Je suis intéressé par l’apprentissage des modèles de design et je voudrais savoir quels livres sont considérés comme des livres de premier plan dans l’apprentissage de ce sujet.

Existe-t-il un livre qui constitue la norme de facto pour décrire les meilleures pratiques, les méthodologies de conception et d'autres informations utiles sur les modèles de conception? Qu'en est-il de ce livre qui le rend spécial?


Je ne sais pas si c'est ce à quoi vous pensez, mais je trouve plein de trucs de développement intelligents sur Forrst .
Trey Piepmeier le

2
Que diriez-vous d'un titre de "Sources de référence pour les modèles de conception" ou "Ressources de modèle de conception" (puisque je ne veux pas dire "référence" comme simplement "rechercher à la demande") et déplacer tout le contenu de la liste dans le corps (ou le supprimer )?


Pour certaines applications décentes, je jetais un coup d’œil à celles sur dofactory ( je n’avais pas acheté les livres cependant).
Steven Evers

4
Étant donné que cette question recevait une réponse complète et complète, j'ai fermé les autres questions sur les modèles de conception en les dupliquant pour la désigner comme paire de questions-réponses canonique et réponse pour ce sujet.

Réponses:


58

Modèles de conception: les éléments d'un logiciel orienté objet réutilisable sont très proches de ma définition d'un livre canonique sur les modèles de conception. Selon son article de Wikipédia (c'est moi qui souligne):

La date de publication initiale du livre était le 21 octobre 1994 avec un copyright de 1995. En juillet 2010, le livre en était à sa 38e édition . Le livre a d'abord été mis à la disposition du public lors de la réunion de l'OOPSLA qui s'est tenue à Portland (Oregon) en octobre 1994. Il a exercé une grande influence sur le domaine du génie logiciel et est considéré comme une source importante de théorie et de pratique de la conception orientée objet. Plus de 500 000 exemplaires ont été vendus en anglais et dans 13 autres langues .

Ward Cunningham , un pionnier des modèles de conception, tient à jour un catalogue en ligne des modèles du livre sur WikiWikiWeb . Et selon l'article de Wikipedia sur le modèle de conception (encore une fois, c'est moi qui souligne):

Les modèles de conception ont gagné en popularité en informatique après la publication du livre Design Patterns: Eléments de logiciels orientés objet réutilisables en 1994 par le dénommé "Gang of Four" (Gamma et al.).

Il y a beaucoup d'autres livres référencés dans le même article comme remarquables dans le genre:

Parmi ceux que j'ai lus, le livre de Fowler est très influent et bon à lire. À certains moments, c'est un peu vague à mon goût, mais dans l'ensemble, c'est un livre agréable. Il existe un catalogue en ligne des modèles inclus dans le livre, avec des descriptions minimales.

J'ai également parcouru les modèles de conception Head First, et si vous avez lu un autre livre de la série Head First, il est de la même qualité et aussi agréable que la plupart des livres de la série :

Head First est une série de livres d'introduction à de nombreux sujets, publiés par O'Reilly Media. Il met l'accent sur une combinaison peu orthodoxe, visuellement intense, impliquant le lecteur, comprenant des énigmes, des blagues, un design et une mise en page non standard, ainsi qu'un style de conversation engageant pour plonger le lecteur dans un sujet donné.

Le terme "modèle de conception" est quelque peu vague, car toute solution générale réutilisable peut être considérée comme un modèle de conception. J'ai toujours remarqué une tendance à appliquer l'étiquette sur les solutions décrites dans l'un des livres notables que j'ai énumérés ci-dessus, et plus particulièrement dans les livres Gang of Four et Fowler. Les modèles de conception ne suivent pas un processus de développement unique, ce sont des solutions logicielles normales extrêmement réutilisables et extrêmement difficiles à identifier .

Mais si vous comparez les catalogues en ligne des deux livres avec le contenu de livres spécifiques à une langue, vous remarquerez qu'ils sont souvent utilisés comme modèles. Donc, je dirais que les deux livres sont très proches d'être des références canoniques, le livre GoF étant le plus important du point de vue historique, même si les deux livres se limitent à la programmation orientée objet .


2
+1 En fait, je voulais vous donner +5 mais hélas ce n’est pas permis.
Dipan Mehta

Toute la série Architecture logicielle orientée modèle concerne les modèles de différents types de systèmes. Le volume 4 concerne les systèmes distribués et le volume 5, les langages de modèles ainsi qu'une référence pour les 4 autres volumes. Compte tenu de la question, je pense que le volume 5 pourrait également s'appliquer, mais je n'ai pas passé trop de temps à le lire ... pour le moment.
Thomas Owens

@Yannis this one and head first est généralement basé sur des langages à typage statique. Existe-t-il de bons livres pour les langages dynamiques comme python.
Ravi404


27

Le livre de Gang of Four - Modèles de conception: éléments d’un logiciel orienté objet réutilisable est probablement ce qui se rapproche le plus des normes de l’industrie en matière de modèles de conception.

Pour une introduction plus accessible, Head First: Design Patterns est également utile. Ne soyez pas rebutés par la couverture "à la mode", car c'est une bonne lecture et vous aidera probablement à comprendre les concepts du livre GoF beaucoup plus facilement si vous le lisez au préalable.


23

Head First Design Patterns

À tout moment, quelque part dans le monde, quelqu'un rencontre les mêmes problèmes de conception de logiciel que vous. Vous savez que vous ne voulez pas réinventer la roue (ou pire, un pneu crevé), vous vous reportez donc à Design Patterns, les leçons apprises par ceux qui ont été confrontés aux mêmes problèmes. Avec Design Patterns, vous tirez parti des meilleures pratiques et de l'expérience des autres pour passer votre temps ... sur autre chose. Quelque chose de plus difficile. Quelque chose de plus complexe. Quelque chose de plus amusant.

Vous voulez en savoir plus sur les modèles qui importent - pourquoi les utiliser, quand les utiliser, comment les utiliser (et quand ne PAS les utiliser). Mais vous ne voulez pas seulement voir à quoi ressemblent les motifs dans un livre, vous voulez savoir à quoi ils ressemblent "à l'état sauvage". Dans leur environnement d'origine. En d'autres termes, dans les applications du monde réel. Vous souhaitez également savoir comment les modèles sont utilisés dans l'API Java et comment exploiter la prise en charge intégrée des modèles de Java dans votre propre code.

Vous voulez apprendre les vrais principes de conception OO et pourquoi tout ce que votre patron vous a dit au sujet de l'héritage peut être faux (et que faire à la place). Vous voulez savoir comment ces principes vous aideront la prochaine fois que vous remonterez un ruisseau sans motif.

Plus important encore, vous voulez apprendre le "langage secret" de Design Patterns pour pouvoir vous débrouiller seul avec votre collègue (et impressionner les invités à un cocktail) lorsqu'il mentionne avec désinvolture son utilisation étonnamment intelligente de Command, Facade, Proxy et. Fabrique entre les gorgées d'un martini. Vous comprendrez aisément pourquoi Singleton n’est pas aussi simple que cela en a l’air, comment l’usine est si souvent mal comprise, ou encore sur la véritable relation entre Décorateur, Façade et Adaptateur.

Avec Head First Design Patterns , vous éviterez l'embarras de penser que Decorator est quelque chose du spectacle "Trading Spaces" ...


Cette. C'est une lecture très accessible qui a complètement changé ma façon d'aborder le génie logiciel.
GSto

2
toute la tête première série sont super, en particulier pour les devs de départ.
Thomas Stock

2
J'adore le livre, mais je déteste absolument la couverture! Un de mes collègues non programmeurs est passé devant mon bureau l’autre jour, a vu le livre et a déclaré: "Head First Designer Patterns? Vous allez dans le secteur de la mode?"
Pete

1
@Pete Pourquoi la couverture peut vous causer plus de problèmes. Elle vit apparemment une double vie. fishbowl.pastiche.org/2005/08/12/…
Gordon

10

Oui, il existe un livre bien connu sur les modèles de conception: Modèles de conception: éléments d'un logiciel orienté objet réutilisable. Les auteurs sont souvent appelés "le groupe de quatre" (GoF) et sont référencés dans presque tous les textes relatifs aux modèles de conception.



Ce n'est pas un livre sur les modèles de conception. C'est un catalogue de motifs. Il y a une brève introduction aux modèles de conception au début, mais je ne pense pas que cette introduction soit suffisante.
Jörg W Mittag

@ JörgWMittag Il n'y a pas de processus unique de création de modèles de conception, les modèles de conception sont des solutions réutilisables relativement petites. Les modèles de conception sont créés au travers des processus normaux de développement logiciel. Ce qui les distingue est leur immense capacité de réutilisation. Le seul processus unique pertinent consiste à identifier une solution en tant que modèle de conception, ce que les catalogues font avec précision.
Yannis

9

Design patterns: éléments d'un logiciel orienté objet réutilisable

texte alternatif

De wikipedia :

Schémas de conception: Éléments du logiciel orienté objet réutilisable est un livre de génie logiciel décrivant les solutions récurrentes aux problèmes courants de la conception de logiciels. Les auteurs du livre sont Erich Gamma, Richard Helm, Ralph Johnson et John Vlissides avec une préface de Grady Booch. Les auteurs sont souvent désignés sous le nom de Gang of Four, GoF ou Go4. Le livre est divisé en deux parties, les deux premiers chapitres explorant les capacités et les pièges de la programmation orientée objet, et les chapitres restants décrivant 23 modèles de conception de logiciels classiques. Le livre comprend des exemples en C ++ et Smalltalk.


3

L'un des meilleurs sites Web de modèles de conception est le wiki de Ward, le tout premier wiki. Voir http://c2.com/cgi/wiki?HistoryOfPatterns pour une bonne page de démarrage.

En 1987, Ward et Kent consultaient le groupe de systèmes de test de semi-conducteurs de Tektronix qui rencontrait des difficultés pour terminer une conception. Ils ont décidé d'essayer les modèles qu'ils avaient étudiés. Comme Alexander qui a déclaré que les occupants d'un bâtiment devaient le concevoir, Ward et Kent ont laissé les représentants des utilisateurs (un formateur et un ingénieur de terrain) terminer la conception.

Ward a mis au point un "langage" à cinq motifs qui a aidé les concepteurs novices à tirer parti des forces de Smalltalk et à éviter ses faiblesses ...

Ward et Kent ont été étonnés par l'élégance (certes spartiate) de l'interface conçue par leurs utilisateurs. Ils ont rapporté les résultats de cette expérience à l'OOPSLA 87 à Orlando. Ils ont rédigé une position de panel et présenté lors de l'atelier de Norm Kerth intitulé D'où viennent les objets? Ils ont parlé de modèles jusqu’à ce qu’ils soient bleus au visage et aient obtenu beaucoup d’accord, mais sans modèles plus concrets, personne n’a souscrit.

Pendant ce temps, Erich Gamma était occupé à écrire et à réfléchir sur la conception orientée objet dans ET ++ dans le cadre de sa thèse. Erich avait compris que les structures ou les motifs de conception récurrents étaient importants. La question était vraiment de savoir comment les capturer et les communiquer.

Bruce Anderson a donné une conférence à TOOLS 90 à laquelle Erich Gamma était présent; Erich a aimé la conversation. Bruce a donné un document à EcoopOopsla90 (Ottawa) et a dirigé un BOF appelé Vers un manuel d'architecture, où lui, Erich Gamma, Richard Helm et d'autres ont eu des discussions sur les modèles. C'était la première fois que Richard et Erich se rencontraient et ils ont compris qu'ils partageaient des idées communes sur les idées clés de la création d'un logiciel OO réutilisable.

Juste avant ECOOP'91, Erich Gamma et Richard Helm, assis sur un toit à Zurich par une journée d'été étouffante, ont rassemblé les très modestes débuts du catalogue de motifs qui deviendraient par la suite DesignPatterns ...

Les choses ont vraiment commencé lors de l'atelier OOPSLA organisé par Bruce en 1991. Par coïncidence, Erich Gamma, Richard Helm, Ralph Johnson et John Vlissides étaient tous présents; ils deviendraient plus tard le Gang of Four qui a écrit le livre Design Patterns ...


2

Je pense que le Refactoring to Patterns peut être utile simplement parce qu'il décrit comment certains dessins / codes peuvent être refactorisés en fonction de modèles dans le livre GoF. Cela peut aider à surmonter la courbe d'apprentissage initiale. Oh et il contemple aussi sur 'Pattern-happiness' :)

Vous pouvez également constater que les trois premiers volumes de l’architecture logicielle orientée modèle constituent une bonne lecture.


1

Modèles de conception

Ce site de tutoriel contient les sous-sections suivantes

  • Intention de chaque motif
  • Structure du monde réel pour le modèle de conception
  • Une déclaration de problème
  • Discussion détaillée sur le problème
  • Check-list sur comment arriver à un motif
  • Règles de base pour arriver au motif.
  • Extraits de code pour le modèle de conception comprenant C #, C ++, Delphi, Java et PHP

Ce site contient également un guide sur les anti-modèles, UML et le refactoring.


Le site SourceMaking semble simpliste à première vue, mais c’est vraiment une excellente référence. Outre les modèles de conception, certains des anti-modèles de développement, d'architecture et de gestion de projet sont hilarants. Les solutions refactorisées peuvent en réalité vous aider à enregistrer une réunion qui déraille. (Pas mal pour une référence de modèle de conception)
Quoi que

1

Le livre original, "Modèles de conception: éléments d'un logiciel orienté objet réutilisable" est une bonne ressource pour les modèles de conception orientés objet.

Il existe de nombreux autres livres là-bas. Lorsque j'ai besoin d'une référence rapide et que mon livre GoF est hors de portée, Wikipedia dispose normalement de suffisamment d'informations sur ces modèles de conception.

Ce sont les principaux que j'utilise. Il convient également de noter que les utilisateurs ont commencé à appliquer le format de modèle à d’autres tâches, telles que la gestion de projet.

Si vous souhaitez en savoir plus sur les antipatterns, consultez le livre "AntiPatterns: Logiciel de refactoring, architectures et projets en crise", ainsi que "Refactoring: Amélioration de la conception du code existant" qui comporte une section sur le code sent, un autre nom pour les anti-modèles.


1

"Principes, modèles et pratiques agiles en C #" de Robert C. Martin. Je pense qu'il a aussi une version Java du livre.

En outre, pas de motif en soi, mais Domain Driven Design présente des concepts géniaux, même si vous n'utilisez pas l'approche DDD complète.

  * Ubiquitous Language
  * Code first approach (vs. DB first)
  * etc.

1

Si vous êtes particulièrement intéressé par les modèles de conception en C ++, essayez Modern C ++ Design de Andrei Alexandrescu.

Ce livre explique comment implémenter des modèles couramment utilisés tels que Factory, Singleton et Visitor en C ++. Il aborde également des sujets très spécifiques à C ++, tels que les pointeurs intelligents, la métaprogrammation de modèles et la conception de classes basée sur des règles.

Auteur de livre est un expert faisant autorité , connu pour son

travail de pionnier sur la conception basée sur les politiques mis en œuvre via la métaprogrammation des modèles. Ces idées sont articulées dans son livre Modern C ++ Design et ont été mises en œuvre pour la première fois dans sa bibliothèque de programmation, Loki. Il a également implémenté le concept de "constructeurs de mouvements" dans sa bibliothèque MOJO. Il a contribué au journal des utilisateurs C / C ++ sous la signature "Générique <Programmation>" ...


1
cela vous dérangerait-il d'expliquer plus en détail ce qu'il fait et à quoi il sert? Les "réponses en lien uniquement" ne sont pas tout à fait les bienvenues à Stack Exchange
Gnat

@gn: comment ça va?
Dima

Et bien votre récente édition me semble certainement une amélioration. Bien que les lecteurs de la réponse bénéficieraient probablement d’une explication plus détaillée de qui est Aleksandresku
gnat

@gnat: puisque vous savez évidemment qui il est, n'hésitez pas à modifier ma réponse.
Dima
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.