Motif de langage

Un langage de modèle est une méthode de description de bonnes pratiques de conception ou de modèles d’organisation utile dans un domaine d’expertise. Le terme a été inventé par l’architecte Christopher Alexander et popularisé par son livre de 1977 A Pattern Language.

Un langage modèle peut également être une tentative d’exprimer la sagesse profonde de ce qui apporte la vitalité dans un domaine particulier de l’effort humain, à travers un ensemble de modèles interconnectés. Aliveness est un terme générique pour «la qualité qui n’a pas de nom»: un sentiment d’intégrité, d’esprit ou de grâce, qui, bien que de forme variable, est précis et empiriquement vérifiable. Certains défenseurs de cette approche de conception prétendent que les gens ordinaires peuvent l’utiliser pour résoudre avec succès de très grands problèmes de conception complexes.

Qu’est-ce qu’un motif?
Lorsqu’un concepteur conçoit quelque chose – qu’il s’agisse d’une maison, d’un programme informatique ou d’une lampe – il doit prendre de nombreuses décisions sur la façon de résoudre les problèmes. Un seul problème est documenté avec sa place typique (la syntaxe), et utilise (la grammaire) avec la bonne solution la plus commune et reconnue vu dans la nature, comme les exemples vus dans les dictionnaires. Chaque entrée de ce type est un motif de conception unique. Chaque motif a un nom, une entrée descriptive et quelques références croisées, un peu comme une entrée dans un dictionnaire. Un modèle documenté devrait expliquer pourquoi cette solution est bonne dans les contextes du modèle.

Les modèles élémentaires ou universels tels que «porte» ou «partenariat» sont des idéaux polyvalents de conception, que l’on trouve dans l’expérience ou dans la pratique, explicitement décrits comme des résolutions holistiques des forces dans des contextes et des circonstances récurrentes, que ce soit en architecture, la médecine, le développement de logiciel ou la gouvernance, etc. Les modèles pourraient être inventés ou trouvés et étudiés, tels que les modèles naturels de conception qui caractérisent les environnements humains.

Comme toutes les langues, un langage de modèle a du vocabulaire, de la syntaxe et de la grammaire – mais un langage de modèle s’applique à une activité complexe autre que la communication. Dans les langages à motifs pour le design, les pièces se décomposent de la manière suivante:

La description de la langue – le vocabulaire – est une collection de solutions nommées et décrites aux problèmes d’un domaine d’intérêt. Ce sont des modèles de conception. Ainsi, par exemple, le langage de l’architecture décrit des éléments tels que: les implantations, les bâtiments, les pièces, les fenêtres, les verrous, etc.
Chaque solution comprend une syntaxe, une description qui montre où la solution s’inscrit dans un design plus large, plus complet ou plus abstrait. Cela lie automatiquement la solution à un réseau d’autres solutions nécessaires. Par exemple, les pièces ont des façons d’obtenir de la lumière et des façons d’attirer et de recevoir les gens.
La solution inclut une grammaire qui décrit comment la solution résout un problème ou produit un bénéfice. Donc, si le bénéfice n’est pas nécessaire, la solution n’est pas utilisée. Peut-être que cette partie de la conception peut être laissée vide pour économiser de l’argent ou d’autres ressources; Si les gens n’ont pas besoin d’attendre pour entrer dans une pièce, une simple porte peut remplacer une salle d’attente.
Dans la description du langage, la grammaire et la syntaxe indexent (souvent avec un index alphabétique littéral des noms de modèles) d’autres solutions nommées, afin que le concepteur puisse rapidement réfléchir d’une solution aux solutions connexes et les documenter de manière logique. Dans le livre A Pattern Language de Christopher Alexander, les motifs sont classés par ordre décroissant de taille, avec un index alphabétique séparé.
Le réseau de relations dans l’index de la langue fournit de nombreux chemins à travers le processus de conception.
Cela simplifie le travail de conception car les concepteurs peuvent démarrer le processus à partir de n’importe quelle partie du problème qu’ils comprennent et travailler vers les parties inconnues. En même temps, si le langage des motifs a bien fonctionné pour de nombreux projets, il y a des raisons de croire que même un concepteur qui ne comprend pas complètement le problème de conception achèvera le processus de conception, et le résultat sera utilisable. Par exemple, les skieurs qui entrent à l’intérieur doivent laisser tomber la neige et entreposer l’équipement. Les nettoyeurs de neige et de bottes malpropres devraient rester à l’extérieur. L’équipement a besoin de soins, de sorte que les supports doivent être à l’intérieur.

De nombreux modèles forment une langue
Tout comme les mots doivent avoir des relations grammaticales et sémantiques les uns avec les autres afin de rendre une langue parlée utile, les modèles de conception doivent être reliés les uns aux autres en position et en ordre d’utilité pour former un langage de modèle. Le travail de Christopher Alexander décrit un processus de décomposition, dans lequel le concepteur a un problème (peut-être une affectation commerciale), sélectionne une solution, puis découvre de nouveaux problèmes plus petits résultant de la solution plus grande. Parfois, les plus petits problèmes n’ont pas de solution, et une autre solution plus importante doit être sélectionnée. Finalement, tous les problèmes de conception restants sont assez petits ou assez routiniers pour être résolus par l’improvisation par les constructeurs, et le « design » est fait.

La structure organisationnelle réelle (hiérarchique, itérative, etc.) est laissée à la discrétion du concepteur, selon le problème. Cela permet explicitement à un concepteur d’explorer une conception, en commençant par une petite partie. Lorsque cela se produit, il est courant pour un concepteur de se rendre compte que le problème fait partie d’une solution plus grande. À ce stade, le design devient presque toujours un meilleur design.

Dans le langage, par conséquent, chaque modèle doit indiquer ses relations avec d’autres modèles et avec la langue dans son ensemble. Cela donne au concepteur qui utilise le langage beaucoup de conseils sur les problèmes connexes qui doivent être résolus.

La partie la plus difficile de l’application d’un langage de modèle par un expert externe est en fait d’obtenir une liste complète et fiable des problèmes à résoudre. Bien sûr, les personnes les plus familières avec les problèmes sont les personnes qui ont besoin d’un design. Ainsi, Alexander a préconisé l’improvisation sur place par des utilisateurs concernés, responsabilisés, comme un moyen puissant de former des solutions initiales à grande échelle très exploitables, en maximisant l’utilité d’une conception, et en minimisant la reprise de conception. Le désir d’autonomiser les utilisateurs de l’architecture était, en fait, ce qui a conduit Alexander à entreprendre un projet de langage modèle pour l’architecture en premier lieu.

Problèmes de conception dans un contexte
Un aspect important des schémas de conception est d’identifier et de documenter les idées clés qui rendent un bon système différent d’un système médiocre (qui peut être une maison, un programme informatique ou un objet d’utilisation quotidienne) et d’aider à la conception de futurs systèmes. L’idée exprimée dans un schéma devrait être assez générale pour être appliquée dans des systèmes très différents dans son contexte, mais toujours suffisamment spécifique pour donner une orientation constructive.

L’éventail des situations dans lesquelles les problèmes et les solutions abordés dans un modèle s’appliquent est appelé son contexte. Une partie importante de chaque modèle consiste à décrire ce contexte. Des exemples peuvent illustrer comment le modèle s’applique à une situation très différente.

Par exemple, le modèle d’Alexander «A PLACE TO WAIT» aborde les arrêts d’autobus de la même manière que les salles d’attente dans une chirurgie, tout en proposant des solutions utiles et constructives. Le livre « Gang-of-Four » Design Patterns de Gamma et al. propose des solutions indépendantes du langage de programmation et du domaine d’application du programme.

Pourtant, les problèmes et les solutions décrites dans un modèle peuvent varier dans leur niveau d’abstraction et de généralité d’un côté, et la spécificité de l’autre côté. En fin de compte, cela dépend des préférences de l’auteur. Cependant, même un modèle très abstrait contiendra généralement des exemples qui sont, par nature, absolument concrets et spécifiques.

Les modèles peuvent également varier dans la mesure où ils sont prouvés dans le monde réel. Alexander donne à chaque motif une note de zéro, une ou deux étoiles, indiquant à quel point elles sont prouvées dans des exemples du monde réel. Il est généralement affirmé que tous les modèles ont besoin d’au moins quelques exemples réels existants. Il est cependant concevable de documenter des idées encore non implémentées dans un format semblable à un motif.

Les modèles dans le livre d’Alexander varient également dans leur niveau d’échelle – certains décrivant comment construire une ville ou un quartier, d’autres traitant des bâtiments individuels et l’intérieur des chambres. Alexander voit les artefacts à petite échelle comme des éléments constructifs du monde à grande échelle, de sorte qu’ils peuvent être connectés à un réseau hiérarchique.

Équilibrage des forces
Un modèle doit caractériser les problèmes qu’il est censé résoudre, le contexte ou la situation où ces problèmes se posent et les conditions dans lesquelles les solutions proposées peuvent être recommandées.

Souvent, ces problèmes découlent d’un conflit d’intérêts ou de «forces» différents. Un schéma apparaît comme un dialogue qui aidera ensuite à équilibrer les forces et finalement à prendre une décision.

Par exemple, il pourrait y avoir un modèle suggérant un téléphone sans fil. Les forces seraient le besoin de communiquer et le besoin de faire d’autres choses en même temps (cuisiner, inspecter la bibliothèque). Un modèle très spécifique serait simplement « TÉLÉPHONE SANS FIL ». Des schémas plus généraux seraient «APPAREIL SANS FIL» ou «ACTIVITÉ SECONDAIRE», suggérant qu’une activité secondaire (comme parler au téléphone ou inspecter les poches de vos jeans) ne devrait pas interférer avec d’autres activités.

Bien que très peu spécifiques dans leur contexte, les forces du modèle « ACTIVITÉ SECONDAIRE » sont très similaires à celles du « TÉLÉPHONE SANS FIL ». Ainsi, les forces concurrentes peuvent être considérées comme faisant partie de l’essence d’un concept de conception exprimé dans un modèle.

Les motifs contiennent leur propre raison
Habituellement, un motif contient une justification se référant à certaines valeurs données. Pour Christopher Alexander, il est très important de penser aux personnes qui entreront en contact avec une architecture. Une de ses valeurs clés est de rendre ces gens plus vivants. Il parle de la «qualité sans nom» (QWAN).

Plus généralement, nous pourrions dire qu’un bon système devrait être accepté, accueilli et adopté avec bonheur comme un enrichissement de la vie quotidienne par ceux qui sont destinés à l’utiliser, ou – mieux encore – par tous les gens qu’il affecte. Par exemple, en discutant d’un café de rue, Alexander discute des désirs possibles d’un invité, mais mentionne également les personnes qui passent juste à côté.

La même réflexion peut être appliquée aux dispositifs techniques tels que les téléphones et les voitures, aux structures sociales comme une équipe travaillant sur un projet ou à l’interface utilisateur d’un programme informatique. Les qualités d’un système logiciel, par exemple, pourraient être évaluées en observant si les utilisateurs passent leur temps à apprécier ou à se débattre avec le système.

En mettant l’accent sur les impacts sur la vie humaine, nous pouvons identifier des modèles qui sont indépendants de l’évolution de la technologie, et ainsi trouver une «qualité intemporelle» (Alexander).

Structure générique et mise en page
Habituellement, l’auteur d’un langage ou d’une collection de motifs choisit une structure générique pour tous les motifs qu’il contient, en les décomposant chacun en sections génériques comme contexte, énoncé de problème, solution, etc.

Les patrons de Christopher Alexander, par exemple, se composent chacun d’un nom court, d’une note (jusqu’à deux symboles *), d’une image sensibilisante, de la description du contexte, de l’énoncé du problème, d’une partie plus longue du texte avec exemples et explications. déclaration, un croquis et d’autres références. Cette structure et mise en page est parfois appelée «forme alexandrine».

Alexander utilise une disposition de texte spéciale pour marquer les différentes sections de ses modèles. Par exemple, l’énoncé du problème et l’énoncé de la solution sont imprimés en caractères gras, ce dernier étant toujours précédé du mot-clé «Therefore:». Certains auteurs utilisent plutôt des étiquettes explicites, ce qui crée un certain degré de redondance.

Noms significatifs
Lorsque le design est réalisé par une équipe, les noms de patterns forment un vocabulaire qu’ils peuvent partager. Cela nécessite que les noms de modèles soient faciles à mémoriser et hautement descriptifs. Quelques exemples des travaux d’Alexander sont WINDOW PLACE (aide à définir où les fenêtres devraient aller dans une pièce) et A PLACE D’ATTENDRE (aide à définir les caractéristiques des arrêts d’autobus et des salles d’attente des hôpitaux, par exemple).

Agrégation dans un réseau associatif (langage pattern)
Un langage de modèle, tel que conçu par Alexander, contient des liens d’un modèle à un autre. Ainsi, lorsque vous essayez d’appliquer un modèle dans un projet, un concepteur est poussé vers d’autres modèles considérés comme utiles dans son contexte.

Dans le livre d’Alexander, de tels liens sont collectés dans la partie « références », et répercutés dans la partie « contexte » du motif lié – ainsi la structure globale est un graphe orienté. Un modèle auquel il est fait référence dans les «références» aborde habituellement un problème d’échelle inférieure, qui est suggéré comme faisant partie du problème à plus grande échelle. Par exemple, le modèle « PUBLIC OUTDOOR ROOM » fait référence à « STAIR SEATS ».

Même sans la description du motif, ces liens, accompagnés de noms significatifs, transmettent un message: Lorsque vous construisez un endroit à l’extérieur où les gens peuvent passer du temps («SALLE D’EXTÉRIEUR»), envisagez de l’entourer d’escaliers. « ). Si vous planifiez un bureau («ATELIERS ET BUREAUX»), envisagez d’aménager des espaces de travail en petits groupes («PETITS GROUPES DE TRAVAIL»). Alexander fait valoir que les connexions dans le réseau peuvent être considérées comme plus significatives que le texte des modèles eux-mêmes.

Les liens dans le livre d’Alexander aboutissent clairement à un réseau hiérarchique. Alexandre établit un parallèle avec la hiérarchie d’une grammaire – c’est un argument pour lui de parler d’un langage de modèle.

L’idée de la liaison est généralement acceptée parmi les auteurs de modèle, bien que la logique sémantique derrière les liens puisse varier. Certains auteurs, cependant, aiment Gamma et al. Dans Design Patterns, n’utilisez que très peu de liens, probablement parce que cela n’a pas beaucoup de sens pour leur collection de patterns. Dans un tel cas, nous parlerions d’un catalogue de modèles plutôt que d’un langage de modèle.

Usage
Alexander a encouragé les gens qui utilisaient son système à élargir sa langue avec des modèles qui leur étaient propres. Pour ce faire, ses livres ne se concentrent pas uniquement sur l’architecture ou le génie civil; il explique également la méthode générale des langages de formes. Le concept original pour le livre A Pattern Language était qu’il serait publié sous la forme d’un classeur à trois anneaux, de sorte que les pages pourraient facilement être ajoutées plus tard; cela s’est avéré irréalisable dans la publication. L’approche du langage modèle a été utilisée pour documenter l’expertise dans divers domaines. Quelques exemples sont les modèles architecturaux, les modèles informatiques, les modèles de conception d’interaction, les modèles pédagogiques, les modèles d’action sociale et les modèles de facilitation de groupe. L’approche du langage modèle a également été recommandée comme un moyen de promouvoir l’intelligence civique en aidant à coordonner des actions pour diverses personnes et communautés qui travaillent ensemble sur des problèmes communs importants. Les spécifications d’Alexander pour l’utilisation des langages de modèle ainsi que la création de nouveaux modèles restent influentes, et ses livres sont référencés pour le style par des experts dans des domaines sans rapport.

Il est important de noter que les notations telles que UML ou la collection de symboles d’organigramme ne sont pas des langages de modèle. Ils pourraient être plus étroitement comparés à un alphabet: leurs symboles pourraient être utilisés pour documenter un langage de modèle, mais ils ne sont pas un langage par eux-mêmes. Une recette ou un autre ensemble séquentiel d’étapes à suivre, avec un seul chemin correct du début à la fin, n’est pas non plus un langage de modèle. Cependant, le processus de conception d’une nouvelle recette pourrait bénéficier de l’utilisation d’un langage de modèle.

Exemple simple d’un motif
Nom: ChocolateChipRatio
Contexte: Vous préparez des biscuits aux pépites de chocolat en petits lots pour la famille et les amis
Considérez ces modèles d’abord: SugarRatio, FlourRatio, EggRatio
Problème: Déterminer le rapport optimal entre les pépites de chocolat et la pâte à biscuits
Solution: Observez que la plupart des gens considèrent le chocolat comme la meilleure partie du biscuit aux pépites de chocolat. Notez également que trop de chocolat peut empêcher le cookie de se tenir ensemble, ce qui diminue son attrait. Puisque vous cuisinez en petites quantités, le coût n’est pas une considération. Par conséquent, utilisez la quantité maximale de pépites de chocolat qui se traduit par un biscuit vraiment robuste.
Considérez ensuite: NutRatio ou CookingTime ou FreezingMethod

Origine
Christopher Alexander, un architecte et auteur, a inventé le terme langage de modèle. Il l’a utilisé pour se référer aux problèmes communs de la conception et de la construction des bâtiments et des villes et comment ils devraient être résolus. Les solutions proposées dans le livre comprennent des suggestions allant de la façon dont les villes et les villes devraient être structurées à l’endroit où les fenêtres devraient être placées dans une pièce.

Le cadre et la philosophie de l’approche «pattern pattern» ont été initialement popularisés dans le livre A Pattern Language qui a été écrit par Christopher Alexander et cinq collègues du Center for Environmental Structure à Berkeley en Californie à la fin des années 1970. Alors que A Pattern Language contient 253 « patterns » du premier pattern, « Independent Regions » (le plus général) au dernier, « Things from Your Life », le livre d’Alexander The Timeless Way of Building approfondit la motivation et le but du travail. Les définitions suivantes de « pattern » et de « pattern pattern » sont paraphrasées à partir de A Pattern Language:

« Un modèle est une description attentive d’une solution pérenne à un problème récurrent dans un contexte de construction, décrivant l’une des configurations qui donne vie à un bâtiment.Chaque modèle décrit un problème qui se produit encore et encore dans notre environnement, puis décrit la solution de base à ce problème, de telle sorte que vous pouvez utiliser la solution un million de fois, sans jamais le faire deux fois de la même manière.  »

Un langage de modèle est un réseau de modèles qui s’appellent les uns les autres. Les modèles nous aident à nous souvenir des idées et des connaissances sur la conception et peuvent être combinés pour créer des solutions.

Domaines d’application
L’idée de Christopher Alexander a été adoptée dans d’autres disciplines, souvent beaucoup plus fortement que l’application originale des modèles à l’architecture comme décrit dans le livre A Pattern Language. Des exemples récents comprennent des modèles de conception de logiciels dans le génie logiciel et, plus généralement, des modèles architecturaux en informatique, ainsi que des modèles de conception d’interaction. Les modèles pédagogiques sont utilisés pour documenter les bonnes pratiques dans l’enseignement. Le livre Libérer les voix: un langage modèle pour la révolution de la communication, contenant 136 modèles d’utilisation de l’information et de la communication pour promouvoir la durabilité, la démocratie et le changement social positif, a été publié en 2008. Le jeu «Travaux de groupe: un langage de modèle pour donner vie aux réunions et autres rassemblements» a été publié en 2011. Récemment, des modèles ont également été introduits dans la conception d’architecture de systèmes. La stratégie et les tactiques d’échecs impliquent beaucoup de modèles de l’ouverture au mat.

Ward Cunningham, l’inventeur de wiki, co-écrit un article avec Michael Mehaffy affirmant qu’il existe des relations profondes entre les wikis et les langages de modèles, et que les wikis « ont été développés comme outils pour faciliter le partage et la modification des modèles ».