Язык шаблонов - Pattern language

А язык шаблонов это организованный и последовательный набор узоры, каждый из которых описывает проблему и суть решения, которое может быть использовано разными способами в определенной области знаний. Термин был придуман архитектором Кристофер Александр и популяризирован его книгой 1977 года Язык шаблонов.

Язык шаблонов также может быть попыткой выразить более глубокую мудрость того, что приносит жизнь в конкретную область человеческих усилий, через набор взаимосвязанных шаблонов. Живость - это один из замещающих терминов для «качества, не имеющего названия»: чувство целостности, духа или благодати, которое, хотя и имеет различную форму, является точным и эмпирически проверяемым.[1] Некоторые защитники[ВОЗ? ] этого подхода к проектированию утверждают, что обычные люди могут использовать его для успешного решения очень больших и сложных задач проектирования.

Что такое узор?

Когда дизайнер что-то проектирует - будь то дом, компьютерная программа или лампа - он должен принять множество решений о том, как решать проблемы. Единственная проблема документируется с ее типичным местом ( синтаксис ) и используйте ( грамматика ) с наиболее распространенным и признанным хорошим решением, которое можно встретить в реальных условиях, например, в примерах из словари. Каждая такая запись представляет собой отдельную шаблон дизайна. У каждого шаблона есть имя, описательная запись и несколько перекрестных ссылок, как и у словарной статьи. Документированный шаблон должен объяснить, почему это решение хорошо в контексте шаблона.

Элементный или универсальный узоры такие как «дверь» или «партнерство» - это универсальные идеалы дизайна, обнаруженные на опыте или для использования в качестве компонентов на практике, явно описываемые как целостные решения сил в повторяющихся контекстах и ​​обстоятельствах, будь то в архитектуре, медицине, разработке программного обеспечения. или управление и т. д. Шаблоны могут быть изобретены, найдены и изучены, например, естественные шаблоны дизайна, которые характеризуют среду обитания человека.[2]

Как и все языки, язык шаблонов имеет запас слов, синтаксис, и грамматика - но язык шаблонов применим к некоторой сложной деятельности, отличной от общения. В языках шаблонов для дизайна части распределяются следующим образом:

  • Описание языка - запас слов - это набор названных, описанных решений проблем в интересующей области. Они называются шаблоны проектирования. Так, например, язык архитектуры описывает такие предметы, как: поселения, здания, комнаты, окна, защелки и т. Д.
  • Каждое решение включает синтаксис, описание, показывающее, как решение вписывается в более крупный, всеобъемлющий или более абстрактный дизайн. Это автоматически связывает решение с сетью других необходимых решений. Например, в комнатах есть способы освещать комнату и вводить людей внутрь и выходить.
  • Решение включает грамматика который описывает, как решение решает проблему или приносит пользу. Итак, если выгода не нужна, решение не используется. Возможно, эту часть дизайна можно оставить пустой, чтобы сэкономить деньги или другие ресурсы; если людям не нужно ждать, чтобы войти в комнату, простой дверной проем может заменить комнату ожидания.
  • В описании языка используется перекрестный указатель грамматики и синтаксиса (часто с буквенным алфавитным указателем имен шаблонов) для других именованных решений, чтобы разработчик мог быстро переходить от одного решения к связанным, необходимым решениям и документировать их в логической форме. В книге Кристофера Александра Язык шаблонов, узоры расположены в порядке убывания размера с отдельным алфавитным указателем.
  • Сеть взаимосвязей в индексе языка предоставляет множество путей в процессе проектирования.

Это упрощает работу по проектированию, поскольку дизайнеры могут начать процесс с любой части проблемы, которую они понимают, и работать над неизвестными частями. В то же время, если язык шаблонов хорошо зарекомендовал себя во многих проектах, есть основания полагать, что даже дизайнер, который сначала не полностью понимает проблему дизайна, завершит процесс проектирования, и результат будет пригоден для использования. Например, лыжники, заходящие внутрь, должны сбрасывать снег и хранить снаряжение. Грязный снег и очистители ботинок должны оставаться снаружи. Техника требует ухода, поэтому стойки должны находиться внутри.

Многие шаблоны образуют язык

Как только слова должны быть грамматический и семантический отношения друг к другу, чтобы говорить язык Полезно, шаблоны проектирования должны быть связаны друг с другом по положению и порядку полезности для формирования языка шаблонов. Работа Кристофера Александера описывает процесс декомпозиции, в котором у дизайнера есть проблема (возможно, коммерческое задание), он выбирает решение, а затем обнаруживает новые, более мелкие проблемы, возникающие в результате более крупного решения. Иногда более мелкие проблемы не имеют решения, и необходимо выбирать другое более крупное решение. В конце концов, все оставшиеся проектные проблемы становятся достаточно мелкими или достаточно рутинными, чтобы их можно было решить импровизацией строителей, и «дизайн» готов.

Фактическая организационная структура (иерархический, итеративный и т. д.) оставлено на усмотрение разработчика, в зависимости от проблемы. Это явно позволяет дизайнеру исследовать дизайн, начиная с небольшой части. Когда это происходит, дизайнер часто понимает, что проблема на самом деле является частью более крупного решения. На этом этапе дизайн почти всегда становится лучше.

Таким образом, в языке каждый образец должен указывать свои отношения с другими образцами и языком в целом. Это дает разработчику, использующему язык, много рекомендаций по связанным проблемам, которые необходимо решить.

Самая трудная часть привлечения внешнего эксперта, применяющего язык шаблонов, - это фактически получить надежный полный список проблем, которые необходимо решить. Конечно, люди, наиболее знакомые с проблемами, - это люди, которым нужен дизайн. Так, Александр, как известно, выступал за импровизацию на месте заинтересованными, уполномоченными пользователями,[3][4] как мощный способ сформировать очень работоспособные крупномасштабные начальные решения, максимизирующие полезность дизайна и сводящие к минимуму переделки дизайна. Желание расширить возможности пользователей архитектуры было фактически тем, что привело Александра к созданию проекта языка шаблонов в первую очередь для архитектуры.

Проблемы дизайна в контексте

Важным аспектом шаблонов проектирования является выявление и документирование ключевых идей, которые отличает хорошую систему от плохой системы (которая может быть домом, компьютерной программой или предметом повседневного использования), а также помощь в проектировании будущего. системы. Идея, выраженная в шаблоне, должна быть достаточно общей, чтобы ее можно было применять в самых разных системах в ее контексте, но все же достаточно конкретной, чтобы дать конструктивное руководство.

Диапазон ситуаций, в которых применяются проблемы и решения, рассматриваемые в шаблоне, называется его контекстом. Важной частью каждого шаблона является описание этого контекста. Примеры могут дополнительно проиллюстрировать, как этот шаблон применим к очень разным ситуациям.

Например, в паттерне Александра «МЕСТО ЖДАТЬ» автобусные остановки рассматриваются так же, как и комнаты ожидания в хирургической, но при этом предлагаются полезные и конструктивные решения. В Книга "Банда четырех" Шаблоны проектирования от Gamma et al. предлагает решения, не зависящие от языка программирования и прикладной области программы.

Тем не менее, проблемы и решения, описанные в шаблоне, могут различаться по уровню абстракции и общности, с одной стороны, и специфичности, с другой. В конце концов, это зависит от предпочтений автора. Однако даже очень абстрактный узор обычно содержит примеры, которые по своей природе абсолютно конкретны и конкретны.

Шаблоны также могут различаться по тому, насколько они проверены в реальном мире. Александр дает каждому паттерну оценку ноль, одну или две звезды, указывая, насколько хорошо они проверены на реальных примерах. Обычно утверждается, что для всех шаблонов нужны хотя бы некоторые существующие примеры из реальной жизни. Однако можно задокументировать еще не реализованные идеи в формате, подобном шаблону.

Паттерны в книге Александра также различаются по масштабу: одни описывают, как построить город или район, другие - отдельные здания и интерьер комнат. Александр рассматривает мелкомасштабные артефакты как конструктивные элементы крупномасштабного мира, поэтому их можно соединить с иерархическая сеть.

Баланс сил

Шаблон должен характеризовать проблемы, которые он предназначен для решения, контекст или ситуацию, в которой эти проблемы возникают, а также условия, при которых предлагаемые решения могут быть рекомендованы.

Часто эти проблемы возникают из-за конфликта различных интересов или «сил». Образец возникает в виде диалога, который затем поможет уравновесить силы и, наконец, принять решение.

Например, может быть шаблон, предлагающий беспроводной телефон. Силами будет необходимость общаться и одновременно заниматься другими делами (приготовление пищи, осмотр книжной полки). Очень конкретный шаблон был бы просто «БЕСПРОВОДНОЙ ТЕЛЕФОН». Более общие шаблоны - «БЕСПРОВОДНОЕ УСТРОЙСТВО» или «ВТОРИЧНАЯ ДЕЯТЕЛЬНОСТЬ», предполагая, что второстепенная деятельность (например, разговор по телефону или осмотр карманов джинсов) не должна мешать другим действиям.

Несмотря на то, что в своем контексте это довольно неспецифично, силы в шаблоне «ВТОРИЧНАЯ ДЕЯТЕЛЬНОСТЬ» очень похожи на силы в «БЕСПРОВОДНОМ ТЕЛЕФОНЕ». Таким образом, конкурирующие силы можно рассматривать как часть сущности концепции дизайна, выраженной в шаблоне.

Шаблоны содержат собственное обоснование

Обычно шаблон содержит обоснование, относящееся к некоторым данным значениям. Для Кристофера Александра важнее всего думать о людях, которые будут соприкасаться с архитектурой. Одна из его ключевых ценностей - сделать этих людей более живыми. Он говорит о «качестве без имени» (QWAN).

В более общем плане мы могли бы сказать, что хорошая система должна приниматься, приветствоваться и с радостью восприниматься как обогащение повседневной жизни теми, кому предназначено ее использовать, или, что еще лучше, всеми людьми, которых она затрагивает. Например, обсуждая уличное кафе, Александр обсуждает возможные желания гостя, но также упоминает людей, которые просто проходят мимо.

То же самое можно применить к техническим устройствам, таким как телефоны и автомобили, к социальным структурам, таким как команда, работающая над проектом, или к пользовательскому интерфейсу компьютерной программы. Например, качества программной системы можно оценить, наблюдая за тем, проводят ли пользователи свое время, наслаждаясь системой или борясь с ней.

Сосредоточившись на влиянии на человеческую жизнь, мы можем выявить закономерности, не зависящие от меняющихся технологий, и, таким образом, найти «вечное качество» (Александр).

Общая структура и макет

Обычно автор языка шаблонов или коллекции выбирает общую структуру для всех содержащихся в ней шаблонов, разбивая каждый на общие разделы, такие как контекст, постановка проблемы, решение и т. Д.

Например, каждый паттерн Кристофера Александра состоит из короткого имени, рейтинга (до двух символов '*'), сенсибилизирующего изображения, описания контекста, постановки задачи, более длинной части текста с примерами и пояснениями, решения. выписка, эскиз и другие ссылки. Эту структуру и расположение иногда называют «александрийской формой».

Александр использует специальный текстовый макет, чтобы отмечать различные участки своих узоров. Например, формулировка проблемы и формулировка решения напечатаны жирным шрифтом, последнему всегда предшествует ключевое слово «Следовательно:». Некоторые авторы вместо этого используют явные метки, что создает некоторую степень избыточности.

Значимые имена

Когда дизайн выполняется командой, названия паттернов образуют словарь, которым они могут поделиться. Это делает необходимым, чтобы имена паттернов легко запоминались и были в высшей степени информативными. Некоторые примеры из работ Александра: WINDOW PLACE (помогает определить, где должны выходить окна в комнате) и A PLACE TO WAIT (помогает определить характеристики автобусных остановок и залов ожидания больниц, например).

Агрегация в ассоциативной сети (язык шаблонов)

Язык шаблонов, задуманный Александром, содержит ссылки от одного шаблона к другому, поэтому при попытке применить один шаблон в проекте дизайнер вынужден использовать другие шаблоны, которые считаются полезными в его контексте.

В книге Александра такие ссылки собраны в части «ссылки» и отражены в «контекстной» части связанного шаблона - таким образом, общая структура представляет собой ориентированный граф. Шаблон, на который ссылаются в «ссылках», обычно решает проблему более низкого масштаба, которая предлагается как часть проблемы более высокого масштаба. Например, в шаблоне «ОБЩЕСТВЕННАЯ НАРУЖНАЯ КОМНАТА» есть ссылка на «ЛЕСТНИЦЫ».

Даже без описания шаблона эти ссылки вместе со значимыми именами несут сообщение: при строительстве места на улице, где люди могут проводить время («ОБЩЕСТВЕННАЯ НАРУЖНАЯ КОМНАТА»), подумайте о том, чтобы окружить его лестницей, на которой люди могут сидеть («ЛЕСТНИЦЫ "). Если вы планируете офис («МАСТЕРСКИЕ И ОФИСЫ»), рассмотрите возможность организации рабочих мест в небольших группах («МАЛЫЕ РАБОЧИЕ ГРУППЫ»). Александр утверждает, что связи в сети можно считать даже более значимыми, чем текст самих паттернов.

Ссылки в книге Александра явно приводят к иерархической сети. Александр проводит параллель с иерархией грамматики - это один из аргументов для него, чтобы говорить о шаблоне. язык.

Идея связывания является общепринятой среди авторов шаблонов, хотя семантическое обоснование ссылок может различаться. Однако некоторые авторы, такие как Gamma et al. в Шаблоны проектирования, очень мало используют связывание шаблонов - возможно, потому, что это не имело большого смысла для их коллекции шаблонов. В таком случае мы будем говорить о каталог выкроек а не язык шаблонов.[5]

Применение

Александр призвал людей, которые использовали его систему, расширить его язык собственными образцами. Чтобы сделать это возможным, его книги не сосредотачиваются строго на архитектуре или гражданском строительстве; он также объясняет общий метод языков шаблонов. Оригинальная концепция книги Язык шаблонов заключалось в том, что он будет опубликован в виде папки с тремя кольцами, чтобы страницы можно было легко добавлять позже; это оказалось непрактичным в публикации.[6] Подход с использованием языка шаблонов использовался для документирования опыта в различных областях. Некоторые примеры архитектурные образцы, шаблоны информатики, паттерны дизайна взаимодействия, педагогические модели, садоводство, шаблоны социальных действий и шаблоны групповой поддержки. Подход с использованием языка шаблонов также рекомендуется как способ продвижения гражданская разведка помогая координировать действия различных людей и сообществ, которые вместе работают над важными общими проблемами.[7] Спецификации Александра для использования языков шаблонов, а также создания новых остаются влиятельными, а его книги ссылаются на стиль у экспертов в несвязанных областях.

Важно отметить, что такие обозначения, как UML или блок-схема Коллекция символов - это не языки шаблонов. Их можно было бы более точно сравнить с алфавитом: их символы могут использоваться для документирования языка шаблонов, но сами по себе они не являются языком. А рецепт или другой последовательный набор шагов, которым необходимо следовать, с единственным правильным путем от начала до конца, также не является языком шаблонов. Однако в процессе разработки нового рецепта может быть полезно использование языка шаблонов.

Простой пример выкройки

  • имя: ChocolateChipRatio
  • Контекст: Вы печете шоколадное печенье небольшими партиями для семьи и друзей.
  • Сначала рассмотрим эти шаблоны: SugarRatio, FlourRatio, EggRatio
  • Проблема: Определите оптимальное соотношение шоколадной крошки к тесту для печенья.
  • Решение: Заметьте, что большинство людей считают шоколад лучшей частью печенья с шоколадной крошкой. Также обратите внимание, что слишком много шоколада может помешать склеиванию печенья, что снизит его привлекательность. Поскольку вы готовите небольшими партиями, стоимость не принимается во внимание. Поэтому используйте максимальное количество шоколадной крошки, чтобы печенье получилось действительно крепким.
  • Рассмотрим следующий: NutRatio или CookingTime или FreezingMethod

Источник

Кристофер Александр, архитектор и автор, придумал термин «язык шаблонов».[3] Он использовал его для обозначения общих проблем дизайн и строительство зданий и городов и как их решать. Решения, предложенные в книге, включают предложения, начиная от того, как города должны быть структурированы, до того, где должны быть размещены окна в комнате.

Основы и философия подхода "языка шаблонов" были первоначально популяризированы в книге. Язык шаблонов это было написано Кристофером Александром и пятью коллегами из Центра структуры окружающей среды в Беркли, Калифорния, в конце 1970-х годов. В то время как Язык шаблонов содержит 253 «паттерна» от первого паттерна «Независимые регионы» (самый общий) до последнего «Вещи из вашей жизни», книга Александра Вневременный способ строительства более подробно рассказывает о мотивации и цели работы. Следующие определения понятий "шаблон" и "язык шаблонов" перефразированы из Язык шаблонов[3]:

шаблон - это подробное описание постоянного решения повторяющейся проблемы в контексте здания, описывающее одну из конфигураций, которая оживляет здание. Каждый шаблон описывает проблему, которая возникает снова и снова в нашей среде, а затем описывает основное решение этой проблемы таким образом, что вы можете использовать решение миллион раз, никогда не повторяя одно и то же дважды ».[3]

А язык шаблонов это сеть шаблонов, которые взывают друг к другу. Шаблоны помогают нам запоминать идеи и знания о дизайне и могут использоваться в сочетании для создания решений.

Домены приложений

Идея Кристофера Александра была принята в других дисциплинах, часто гораздо сильнее, чем исходная. применение шаблонов к архитектуре как изображено в книге Язык шаблонов.[3] Примеры с 1990-х годов включают шаблоны проектирования программного обеспечения в разработке программного обеспечения и, в более общем плане, архитектурные шаблоны в информатике, а также паттерны дизайна взаимодействия. С конца 1990-х гг. педагогические модели были использованы для документирования передового опыта в обучении.[8] По крайней мере, с середины 2000-х годов идея языка шаблонов была введена в системная архитектура дизайн.[9][10] Книга Освобождающие голоса: образец языка коммуникативной революции, содержащий 136 шаблонов для использования информации и коммуникации для содействия устойчивости, демократии и позитивным социальным изменениям, был опубликован в 2008 году вместе с веб-сайтом, содержащим еще больше шаблонов.[11] Колода «Групповые работы: образец языка для оживления встреч и других собраний» была опубликована в 2011 году.[12] Идея языка шаблонов также была применена в пермакультура дизайн.[13]

Уорд Каннингем, изобретатель вики, в соавторстве с Майкл Мехаффи утверждая, что между вики и языками шаблонов существует глубокая взаимосвязь, и что вики «на самом деле были разработаны как инструменты, облегчающие эффективное совместное использование и изменение шаблонов».[14]

Смотрите также

Рекомендации

  1. ^ Александр, Кристофер (1979). Вневременный способ строительства. Издательство Оксфордского университета. ISBN  978-0-19-502402-9.
  2. ^ Хеншоу, Дж. Руководящие шаблоны естественного дизайна: элементы. PURPLSOC, 2015 г., 3-5 июля 2015 г. Кремс, Австрия Встреча PURPLSOC по многим открытым научным вопросам, например относительно теоретической основы шаблонов и практического применения шаблонных методов в исследованиях и обучении.
  3. ^ а б c d е Александр, Кристофер (1977). Язык шаблона: Города, Здания, Строительство. Oxford University Press, СОЕДИНЕННЫЕ ШТАТЫ АМЕРИКИ. п.1216. ISBN  978-0-19-501919-3.
  4. ^ Александр, Кристофер, Проект Орегон
  5. ^ Энди Дирден, Джанет Финли (январь 2006 г.). «Языки шаблонов в HCI: критический обзор». Взаимодействие человека с компьютером. 21 (1).
  6. ^ Симпозиум 2009 г., Портлендская лаборатория исследований городской архитектуры, презентация 4 из 6 оригинальных авторов Язык шаблонов.
  7. ^ Дополнительное обсуждение мотивации и обоснования, а также примеры и эксперименты см .: Шулер, Дуглас. «Выбор успеха: языки моделей как важнейшие факторы гражданского интеллекта» (PDF). publicsphereproject.org. Конференция Лаборатории исследований городской архитектуры Портленда, Портленд, Орегон, 2009 г.. Получено 6 марта 2017.
  8. ^ Финчер, Салли (сентябрь 1999 г.). «Анализ дизайна: исследование шаблонов и языков шаблонов для педагогики». Журнал "Компьютеры в математике и преподавании естественных наук". 18 (3): 331–348.
  9. ^ Клотье, Роберт Дж .; Верма, Динеш (июнь 2007 г.). «Применение концепции паттернов к архитектуре систем». Системная инженерия. 10 (2): 138–154. Дои:10.1002 / sys.20066.
  10. ^ Клотье, Роберт Дж .; Мюллер, Геррит; Верма, Динеш; Нильчиани, Рошанак; Дыра, Эйрик; Кость, Мэри (март 2010). «Концепция эталонных архитектур». Системная инженерия. 13 (1): 14–27. Дои:10.1002 / sys.20129.
  11. ^ "Свободный язык образцов голосов". publicsphereproject.org. Получено 6 марта 2017.
  12. ^ "Проект языка групповых шаблонов". groupworksdeck.org. Получено 6 марта 2017.
  13. ^ Джек, Дэйв; Тенсмайер, Эрик (2005). "Язык узоров лесного сада". Съедобные лесные сады, Том II: Экологический дизайн и практика пермакультуры с умеренным климатом. Уайт-Ривер-Джанкшн, VT: Chelsea Green Publishing. С. 63–139. ISBN  1-931498-80-6.
  14. ^ Каннингем, Уорд; Мехаффи, Майкл В. (2013). «Вики как язык шаблонов». Материалы 20-й конференции по шаблонным языкам программ, 23–26 октября 2013 г., Монтичелло, Иллинойс. PLoP '13. Корритон, Теннесси: Группа Hillside. С. 32: 1–32: 14. ISBN  9781941652008.

дальнейшее чтение

  • Кристофер Александр, Сара Исикава, Мюррей Сильверстайн (1974). «Коллекция шаблонов, которые создают мультисервисные центры» в Деклан и Маргрит Кеннеди (ред.): Внутренний город. Ежегодник архитекторов 14, Элек, Лондон. ISBN  0 236 15431 1.
  • Александр, К. (1977). Язык шаблона: Города, Здания, Строительство. СОЕДИНЕННЫЕ ШТАТЫ АМЕРИКИ: Oxford University Press. ISBN  978-0-19-501919-3.
  • Александр, К. (1979). Вневременный способ строительства. США: Издательство Оксфордского университета. ISBN  978-0-19-502402-9.
  • Шулер Д. (2008). Освобождающие голоса: образец языка коммуникативной революции. СОЕДИНЕННЫЕ ШТАТЫ АМЕРИКИ: MIT Press. ISBN  978-0-262-69366-0.
  • Лейтнер, Гельмут (2015): Теория паттернов: введение и перспективы по следам Кристофера Александра. ISBN  1505637430.

внешняя ссылка

О выкройках в целом

Коллекции выкроек онлайн