Понятие шаблона пришло из работ архитектора Кристофера Александра (Christopher Alexander), написанных в конце 1970-х годов. В своих книгах он использовал понятие шаблона для описания вопросов планирования городов и проектирования архитектуры зданий.
В конце 1980-х идею шаблонов начали применять при разработке программного обеспечения. С тех пор были выделены различные виды шаблонов, разработаны языки шаблонов и созданы многочисленные библиотеки, содержащие шаблоны для самых разных областей информационных технологий.
Шаблоны упрощают повторное использование удачных проектных, архитектурных, аналитических и других решений. Представление проверенных временем методик в виде шаблонов облегчает доступ к ним со стороны разработчиков новых систем. С помощью шаблонов можно улучшить качество документации, кода и других артефактов, создаваемых при разработке систем. Шаблоны могут быть полезны для улучшения процесса разработки. Шаблоны описывают причины, почему система должна быть построена так, а не иначе.
Существует несколько десятков определений шаблонов. Большинство из них отмечает, что шаблон является описанием удачного варианта решения определенной повторяющейся задачи в конкретном контексте. Приведем несколько определений шаблонов.
Шаблон (по Кристоферу Александру) - правило из трех частей, выражающее связи между определенным контекстом, задачей и решением. Как часть мира, шаблон связывает контекст, систему сил, регулярно появляющуюся в этом контексте, и определенную пространственную конфигурацию, позволяющую системе сил прийти в равновесие. Как элемент языка шаблон является инструкцией, описывающей повторное использование этой пространственной конфигурации для приведения системы сил в равновесие, когда это позволяет контекст. Шаблон - нечто, происходящее в реальном мире, и одновременно правило, описывающее, как и когда создавать это нечто. Это процесс и вещь, описание живой сущности и процесса, порождающего эту сущность.
Классические книги по ИТ-шаблонам описывают шаблон как нечто, состоящее из четырех основных элементов:
Не всякое решение, алгоритм, лучшие практики или эвристики могут быть названы шаблоном. Один или несколько признаков шаблона могут отсутствовать. Даже если все признаки шаблона есть, но описанная проблема и/или решение не являются повторяющимися, предлагаемую идею нельзя назвать шаблоном. Существует мнение, что такой находящийся в разработке шаблон (прото-шаблон) должен быть применен по крайней мере трижды, просмотрен и одобрен значительным числом пользователей шаблонов. Краткое описание прото-шаблона называется patlet.
В то время как обычный шаблон описывает положительный опыт решения задачи, анти-шаблоны описывают отрицательный опыт. Антишаблоны появились в середине 1990-х и не так многочисленны, как обычные шаблоны. Под анти-шаблонами понимают:
Шаблоны можно классифицировать по применимости на этапах жизненного цикла программной системы:
Шаблоны анализа - набор концепций для решения типичной задачи бизнес-моделирования. Такие шаблоны могут быть специфичны для конкретной предметной области или могут использоваться для решения задач из разных предметных областей. К шаблонам, специфичным для конкретной предметной области, относятся, например, шаблон "диагностика" или "лечение" из области медицины. Иногда предметные области бывают идентичны с точки зрения анализа и используют одни и те же шаблоны. Так, шаблон "диагностика" может быть применен в области финансового анализа.
Шаблоны анализа имеют разную степень детализации.
Среди шаблонов анализа иногда выделяют шаблоны бизнес-процессов. Шаблоны бизнес-процессов включают шаблоны последовательностей, параллельного исполнения, синхронизации и множественного выбора, шаблоны отката и другие.
Шаблоны анализа иногда относят к шаблонам проектирования на концептуальном уровне.
Шаблоны проектирования описывают периодически возникающую задачу проектирования информационной системы или ее составных частей, контекст задачи, принцип решения и положительный опыт решения, причем таким образом, что это решение может быть повторно использовано. Среди шаблонов проектирования иногда выделяют
Отражают фундаментальную структуру, схему информационной системы. Шаблоны описывают множество предопределенных подсистем, их функции и правила организации взаимодействия между подсистемами. То есть архитектурные шаблоны решают задачи проектирования системы на самом верхнем уровне абстракции.
Эти шаблоны касаются деталей проектирования подсистем, компонент информационной системы и отношений между ними. Шаблоны проектирования описывают часто повторяющиеся структуры взаимодействующих компонент, решающих типичную задачу проектирования в конкретном контексте. Именно в этом смысле чаще всего употребляется термин "шаблон проектирования". В случае объектно-ориентированного проектирования шаблоны могут оперировать понятиями классов и объектов. Такие шаблоны наиболее полно исследованы и организованы в обширные библиотеки.
Идиомой называют шаблон низкого уровня, специфичный для конкретного языка программирования. Идиома описывает вопрос реализации компонент или взаимосвязей между ними с использованием возможностей конкретного языка. Граница между идиомами и шаблонами реализации очень условна. Часто идиомы относят к шаблонам реализации.
Шаблоны классифицируются не только по принадлежности к этапам жизненного цикла системы. Часто шаблоны классифицируются по типу решаемой задачи. Например, шаблоны организации распределенных вычислений, шаблоны пользовательского интерфейса, шаблоны данных, организационные шаблоны (описывают структуру проектной команды или организации в целом). Кроме того, выделяют шаблоны, относящиеся к конкретной парадигме программирования (объектно-ориентированные шаблоны) или концепции (шаблоны для сервисно-ориентированного подхода).
Большинство шаблонов являются генерирующими. То есть они описывают, что необходимо предпринять для решения задачи, и как мы можем сгенерировать решения и сами шаблоны (вспомним, что шаблон - это и сущность и процесс). Более того, в некоторых случаях такие шаблоны утверждают, что их необходимо создать. Генерирующие шаблоны описывают, как создать нечто, и затем могут быть выделены в итоговой системе (например, в ее архитектуре или процессах). Негенерирующие шаблоны могут не содержать указаний о том, как создавать описываемые ими сущности.
Генерирующие шаблоны являются основой и прообразом языков шаблонов.
Набор шаблонов образует своеобразный словарь для обмена идеями, сочетания идей между собой и создания новых идей на основе предшествующих. Язык шаблонов включает в себя такой словарь (алфавит языка), набор правил образования новых шаблонов и правила преобразования шаблонов. Правила преобразования могут включать аксиомы и правила вывода. Таким образом, язык шаблонов представляет собой формальную систему. В частности, это означает, что все шаблоны, полученные в результате выводов в такой системе, действительно будут шаблонами (а не прото-шаблонами или чем-то еще). Иногда в языки шаблонов вводят как самостоятельную сущность ограничения.
Каталоги шаблонов (библиотеки) - наборы взаимосвязанных шаблонов (связи могут быть слабыми и неформальными). Обычно каталог шаблонов поддерживает классификацию шаблонов и перекрестные ссылки между ними. Существует множество каталогов шаблонов в сети, печатных изданиях и других источниках.
Системы шаблонов представляют собой множество связных шаблонов, совместно решающих какую-либо задачу (например, задачу проектирования конкретного типа систем). Шаблоны в системе организованы в группы и подгруппы, отличаются уровнями детализации решаемых подзадач. Связи в системе имеют более тесный характер, чем в каталогах. Все шаблоны в системе единообразно описываются, причем особое внимание в описании уделяется вопросам отношений с другими шаблонами системы.
В "хороших" проектах используется много шаблонов. Единое целое образуется в результате их согласованного взаимодействия. Применение шаблонов как повторное использование накопленного положительного опыта приносит очевидную пользу. Кроме того, изучение, классификация и выделение новых шаблонов (pattern mining), по мнению многих авторов, сами по себе являются интересными и перспективными задачами.
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.