Архитектурные образцы и стили
Архитектурный образцы (стили) в программном обеспечении — это аналоги архитектурных стилей, применяемых в строительстве зданий (например, известны готический стиль, стиль эпохи Возрождения, античные стили). Любой архитектурный образец состоит из нескольких ключевых характеристик и правил, которые в сочетании обеспечивают архитектурную целостность. Архитектурный образец определяется: 4* набором типов элементов (например, репозитария данных или компонента, вычисляющего математическую функцию); ♦ топологической схемой элементов, обозначающей взаимосвязь между ними; ♦ набором семантических ограничений (например, фильтры в составе стиля «каналы и фильтры» — это преобразователи данных; они постепенно преобразуют входящие потоки в выходящие, но при этом не располагают контролем над восходящими и нисходящими потоками элементов); ♦ набором механизмов взаимодействия (например, вызовов подпрограмм, событий-подписчиков, досок объявлений), регламентирующих координацию элементов в рамках установленной топологии. Совсем недавно Мэри Шоу (Магу Shaw) и Дэвид Гарлан (David Garlan) попытались классифицировать набор архитектурных образцов, которые тогда назывались архитектурными стилями, или идиомами. Усилиями сообщества программных инженеров на основе результатов их исследований были сформулированы архитектурные образцы — по аналогии с образцами проектирования и образцами кодирования. В своей работе [Shaw 96] Мэри Шоу выдвинула гипотезу о существовании высокоуровневых абстракций сложных систем, которые на тот момент не изучались и не классифицировались, — впрочем, аналогичная ситуация в тот момент складывалась во многих других инженерных дисциплинах. Образцы регулярно проявляются в решениях систем, но иногда их трудно обнаружить, поскольку, в разных дисциплинах одни и те же архитектурные образцы называются по-разному. Ситуация требовала систематизации повторяющихся архитектурных образцов, формулирования их свойств и преимуществ. Один из вариантов такой классификации представлен на рис. 5.14. Образцы на этой иллюстрации подразделяются на родственные группы в рамках иерархии наследования. К примеру, событийная система изображается как вторичный стиль независимых элементов. У самих событийных систем два вторичных образца: неявный и явный вызов. Какая связь между архитектурными образцами и тактиками? Как мы уже говорили, любую тактику следует рассматривать как фундаментальный «строительный блок» проектного решения, из которого, в свою очередь, выводятся архитектурные образцы и стратегии. Заключение Мы рассмотрели способы выполнения архитектором требований по атрибутам качества. Эти требования, в свою очередь, позволяют системе выполнять поставленные перед ней коммерческие задачи. Объектом нашего внимания в настоящей главе стали тактики, которые, наравне с архитектурными образцами и стратегиями, позволяют архитектору вырабатывать проектное решение. Мы представили ряд распространенных тактик реализации шести проанализированных в главе 4 атрибутов качества: готовности, модифицируемости, производительности, безопасности, контролепригодности и практичности. Все рассмотренные тактики открыты и пользуются широкой известностью. Как мы уже говорили, выбрав тактики, архитектор лишь приступает к выпол-нению основной задачи, которая заключается в соотнесении тактик и образцов. Не существует проектного решения, в котором была бы задействована всего одна тактика. Архитектор, таким образом, должен иметь представление о том, какие атрибуты качества реализуют различные тактики и к каким побочным эффектам они приводят, а также осознавать риски, сопряженные с отказом от других возможных альтернатив. Дополнительная литература Подробный анализ проблем безопасности содержится в работе [Ramachandran 02]; сведения о связи между практичностью и программно-архитектурными образцами есть в издании [Bass 01а], а о методиках обеспечения готовности в распределенных системах — в исследовании [Jalote 94]. [McGregor 01] — добротный источник информации о контролепригодности. Двухтомный справочник по архитектурным образцам — [Buschmann 96] и [Schmidt 00] — содержит данные по образцам MVC и РАС (том 1) и программной архитектуре, ориентированной на образцы (том 2). Дискуссии по поводу симплекс-архитектуры обеспечения готовности ведутся по адресу http://www.sei.cmu.edu/sirnplex/. В работе [Bachmann 02] применение тактик рассматривается как основа для анализа модифицируемости и производительности; [Chretienne 95] содержит данные о концепциях теории планирования; в работе [Briand 99] предлагается обзор метрик сцепления. Существует документация по различным образцам: «Модель-представление- контроллер» [Gamma 95], «Представление-абстракция-управление» [Buschmann 96], «Seeheim» [Plaff 85] и «Arch/Slinky» [UIMS 92]. Дискуссионные вопросы 1. Возьмем популярный веб-сайт — например, Amazon или eBay. Какие тактики имеет смысл рассмотреть при выборе архитектурных образцов и стратегий, реализующих требования к производительности, которые вы должны были перечислить в ответе на вопрос 3 в главе 4? 2. Какие компромиссные решения относительно других атрибутов качества (безопасности, готовности и модифицируемости), вероятнее всего, придется принять, если обратиться к тактикам, выбранным при ответе на предыдущий вопрос? 3. Внимание, которое уделяется практичности в ходе проектирования архитектур, не всегда достаточно — таким образом, реализовать цели, связанные с практичностью, становится значительно сложнее, поскольку до них дело доходит в последний момент. Возьмите любую систему, об архитектуре которой вы имеете представление, и постарайтесь вспомнить, какие тактики реализации практичности в ней задействованы.
|