Многоконтекстные системы: новые рубежи в архитектуреЧарли Альфред (Charlie Alfred), Март 2010 г. Краткое содержание.Многоконтекстные системы – это системы, единая архитектура и ключевые активы которых должны корректно работать в различных средах. Примерами могут служить архитектура семейства продуктов, некоторые элементы корпоративной архитектуры, особенно те, которые отвечают за интеграцию и инфраструктуру. В отличие от одноконтекстных систем, испытывающих влияние одного набора воздействий, многоконтекстные системы должны учитывать воздействия в каждом индивидуальном контексте. Введение Контекст – это несколько заинтересованных лиц, у которых одни и те же представления, приоритеты, желаемые результаты и которые зависят от одних и тех же условий и воздействий1.Профессионалы в сфере маркетинга называют их «рыночными сегментами» и используют для формирования целенаправленной рекламы и других маркетинговых кампаний. Архитекторы могут применять контексты, чтобы определять и создавать эффективные решения для логически связанного набора сред развертывания2. В таблице 1 показан простой пример контекстов в действии. Рассмотрим лыжный курорт Thinsulate, для которого установлена предельная температура работы – -40 °С. Его описание представлено в таблице 1.
Таблица 1. Пример контекста Эти обобщения не могут быть верными абсолютно для всех членов контекста, соответствующих критериям, но разумно предположить, что они будут правильными в большинстве случаев. Качественно определенные контексты эффективны, поскольку условия и воздействия, как правило, связаны с представлениями и приоритетами, и их комбинация формирует желаемый результат. Реальные примеры многоконтекстных систем Перед тем как приступить к исследованию многоконтекстных систем, рассмотрим два реальных примера:
Третий пример из области медицинской отчетности будет представлен позднее. С его помощью мы продемонстрируем, как следует применять многоконтекстный подход. Составление маршрутов и планирование грузоперевозок Несколько организаций координируют работу определенного числа водителей, которые вывозят и доставляют грузы в ограниченном районе. Эти организации имеют несколько важных общих черт:
В таблице 2 сведены воедино три типичных контекста для местных грузоперевозок.
Таблица 2. Контексты для местных грузоперевозок Производство полупроводников Производство полупроводников – процесс создания сотен микропроцессоров или чипов памяти на кремниевых пластинах размером 300 мм. Для сложных цепей требуются сотни технологических операций с применением различных инструментов. Каждый из этих инструментов обладает набором важных общих характеристик:
Как показано в таблице 3, существует четыре общих класса инструментов для производства полупроводников, факторы для каждого инструмента имеют важные отличия.
Таблица 3. Контексты для инструментов производства полупроводников При поверхностном рассмотрении в каждом приведенном примере достаточно общих черт для того, чтобы приступить к созданию единого решения, охватывающего предметную область. Тем не менее следует принять во внимание совет, который дал несколько лет назад неизвестный участник конференции, посвященной одному из семейств программных продуктов: Основная мотивация компаний к применению архитектуры линейки продуктов – окупаемость инвестиций за счет использования общих черт продуктов. К сожалению, единственный способ надежного роста окупаемости –понять разницу между продуктами и управлять ею. Архитектурные последствия Предположим, что вы пытаетесь собрать несколько миллионов долларов, чтобы спроектировать и создать универсальную систему медицинской отчетности. Вы ожидаете, что венчурные капиталисты захотят узнать, «для каких областей медицины система будет эффективным решением?» (Это вымышленный пример, основанный на опыте автора по решению проблем с медицинской отчетностью в учреждениях здравоохранения.) Многоконтекстный подход обеспечивает подходящую платформу для ответа на этот вопрос. Необходимо три высокоуровневых этапа:
Анатомия контекста Перед тем как подробнее остановиться на примере с медицинской отчетностью, уделим немного внимания исследованию анатомии контекста. На рисунке 1 изображен общий шаблон, представляющий степень согласованности между контекстом и решением. Рисунок 1. Согласованность решения и контекста (щелкните рисунок, чтобы увеличить изображение) Как упоминалось ранее, члены контекста хотят достичь одних и тех же результатов и сталкиваются с аналогичными проблемами. Это обусловлено тем, что они имеют похожие представления и приоритеты и находятся под влиянием сходных воздействий и условий. Когда проблемы мешают достичь желаемых результатов, возникает разрыв между текущим и будущим состоянием. Наличие проблемных или желаемых разрывов стимулирует к принятию решений, с помощью которых удастся преодолеть имеющиеся проблемы. Решение является успешным, если его функциональность и возможности архитектуры позволяют решить ранжированные задачи его контекстов. Этап 1: определение контекстов и проблем. Определение контекстов выглядит несложным. Однако качественное решение этой задачи зависит от навыков системного мышления, которое делает возможным абстрагирование и понимание произвольных систем внутри контекста. Некоторые авторы (в частности, Акофф3, Сенге4, Голдратт5, Вайнберг6 и Талеб7) написали превосходные работы, освещающие различные аспекты системного мышления. Например, можно рассмотреть организацию контекстов по размеру учреждений: частная терапевтическая практика, амбулаторная клиника, местная больница, городской медицинский центр или университетская больница. Однако это средство сегментирования не столь полезно, как может показаться. Границы учреждений есть смысл учитывать при их организации согласно размерам, но одни контексты имеют слишком много различий, а другие – слишком много общего. Более удачный набор критериев сегментирования можно сформировать согласно результатам исследования поведения желаемой функции: медицинской отчетности. Когда пациент посещает клинического врача, медицинский отчет должен создаваться и сохраняться в файле пациента. Эти требования применимы как в мелких частных практиках, так и в крупных медучреждениях. Способы их реализации варьируются: от использования бумажных документов до электронных записей. Ниже перечислены требования, общие для всех контекстов:
Один из главных моментов – существование важных типовых причин для создания медицинских отчетов. Эти типовые варианты определяют комплексы поведения и формируют начальные гипотезы для контекстов, что показано в таблице 4.
Таблица 4. Контексты медицинской отчетности Аспекты, общие для нескольких контекстов, часто очевидны, как показывают три вышеприведенных примера. Однако на более глубоком уровне существуют важные различия, зависящие от контекста. Этап 2: анализ контекстов путем сравнения проблем. Первичные описания контекстов, приведенные в таблице 4, – подходящая точка отсчета. Однако чтобы лучше понять желаемые результаты и проблемы, нужно перейти на уровень выше. Мы должны точнее представлять себе, как медицинская отчетность вписывается в общую схему учреждений здравоохранения в каждом контексте. Следует отметить чрезвычайно важный момент. Причиной множества неудачных архитектурных и проектных решений является наивный подход. В одних случаях наивный подход заключается в неверном понимании контекстов, в которых будет использоваться система. В других – речь идет об ограничениях, присущих используемым в решении технологиям, или о взаимодействии двух технологий между собой. Экспертный анализ тесно связан с системным мышлением. Навык определения центральных принципов организации и их использования в рассуждениях относительно других аспектов может существенно повысить скорость обучения. Дополнительные исследования, например беседы с отраслевыми экспертами или знакомство с опубликованными отчетами об исследовании рынка, необходимы для более глубокого понимания ситуации. В таблице 5 приведен пример результатов подобных действий.
Таблица 5. Проблемы медицинской отчетности, общие для многих контекстов Этот анализ позволяет сформировать два достаточно очевидных заключения:
Этап 3: синтез совместимых контекстов. Анализ ранжированных проблем является своеобразной лакмусовой бумажкой. Он полезен при формировании обоснованных предположений, чтобы исключить очевидные несоответствия и определить родственную природу прочих контекстов. Однако сам по себе он недостаточно точен для принятия окончательных решений. Для обеспечения более высокой точности нужно рассмотреть важные аспекты архитектуры решений. В некоторых случаях вы располагаете существующей архитектурой, в других случаях – нет. В примере с медицинской отчетностью мы предполагаем, что работа начинается с чистого листа. На рисунке 2 показан подход к решению этой проблемы, который можно адаптировать к ситуациям, когда имеется архитектура решения или ее предполагаемый вариант. Рисунок 2. Многоконтекстное оценивание(щелкните рисунок, чтобы увеличить изображение) На рисунке 2 представлены пять аспектов, важных для многоконтекстного анализа. Каждый из них обсуждается в следующих подразделах. Ограниченный размер статьи не позволяет провести глубокое исследование многоконтекстной архитектуры в примере с медицинской отчетностью. Однако мы будем использовать примеры, основанные на этой проблеме, чтобы подчеркнуть данные аспекты. Анализ контекста На этапе 2 описанного выше процесса было сформировано три контекста, относящихся к проблеме медицинской отчетности. В таблице 4 мы определили контексты и их стимулирующие факторы (например, воздействия, условия и представления). В таблице 5 мы ранжировали проблемы для каждого контекста. Архитектурные подходы Архитектурный подход – это небольшой набор взаимосвязанных решений, направленных на борьбу с одной или двумя конкретными проблемами8. Упорядоченный список архитектурных подходов (а также логическое обоснование каждого из них) является центральным элементом архитектурной стратегии. Архитектурные подходы, примененные ранее, обычно ограничивают архитектурные подходы, используемые позднее. По этой причине хорошей практикой архитектурных подходов, применяемых на ранних этапах, является концентрация внимания на проблемах, имеющих наивысший приоритет. В примере с медицинской отчетностью в контексте, основанном на пациенте, имелась высокоприоритетная потребность в обмене данными между врачами. Однако для контекста, основанного на лечении, эта задача не стоит на первом месте. Предположим, что мы хотим сохранить возможность работы с обоими контекстами в рамках одной платформы. Для этого нужно найти подходящий подход к проблеме, который бы уменьшил ограничения, накладываемые на другие проблемы. Один из способов решения проблемы – создание подсистемы обмена данными на основе сообщений, которая:
Адаптируемость подходов Помимо борьбы с проблемами, каждый архитектурный подход предлагает определенный уровень гибкости. На рисунке 2 это представлено меткой (слева от каждого подхода). Данные метки при необходимости можно расширить. Ниже приведен один из возможных наборов:
Подход, подобный описанному выше, может быть спроектирован на основе модулей. Для настройки потребностей различных контекстов применяются конфигурирование во время выполнения и подключаемые компоненты. Эти функциональные возможности можно использовать одним из перечисленных ниже способов:
Пригодность подходов Институтом программирования ПО (Software Engineering Institute, SEI) был описан механизм оценки пригодности архитектуры ПО10. В этом подходе архитектурные решения тщательно рассматриваются на предмет того, насколько хорошо они поддерживают сценарии атрибутов качества. В нашей модели архитектурные подходы эквивалентны архитектурным решениям, которые описаны SEI, а сценарии атрибутов качества – желаемым результатам и проблемам контекстов. Для оценки пригодности подхода сформируем матрицу, в столбцах которой будут расположены проблемы, в строках – архитектурные подходы. Проблемы можно взять из одного конкретного контекста либо же объединить проблемы двух и более контекстов. Перечень подходов получают на основе существующей архитектуры или формулируют как часть предполагаемой архитектуры. Каждый элемент матрицы представляет влияние конкретного подхода на конкретную проблему. Возможны следующие значения:
Другой возможный способ – раскрашивать элементы матрицы тремя оттенками зеленого, которые будут представлять степени положительного воздействия, и тремя оттенками красного – для представления отрицательного воздействия. Визуальное представление помогает определить компромиссы (негативное влияние) и покрытие (проблема решается ограниченным числом подходов либо не решается ни одним из них).
В примере с медицинской отчетностью пригодность можно оценить двумя способами:
Зависимости подходов Аналогичная матрица, изображенная в таблице 6, полезна при определении зависимостей между подходами. Это критически важно для любого анализа, где определяется возможность повторного использования ПО в двух контекстах, степень совместимости которых невысока. Любое повторно используемое ПО должно быть слабо связано с элементами, от которых оно зависит.
Таблица 6. Типы зависимостей между подходами Каждый элемент матрицы показывает зависимость подхода, расположенного в столбце, от подхода, расположенного в строке11. Существует несколько типов перекрестных зависимостей, которые могут быть представлены в каждом элементе матрицы. В примере с медицинской отчетностью этот анализ позволяет понять, что подход к созданию системы сообщений зависит от специального механизма доставки асинхронных уведомлений с сервера веб-клиентам. Архитектуры решений в контекстах, основанных на лечении и на пациентах, уже могут содержать подобный механизм, но архитектура, основанная на направлениях, – возможно, нет. Подобная реализация заставляет нас выполнить одно из следующих действий:
Заключение Многоконтекстные системы появляются в том случае, если предпринимаются попытки удовлетворить несколько потребностей заинтересованных лиц и отреагировать на внешние воздействия с помощью одного решения. Подходы к созданию архитектуры одноконтекстных и многоконтекстных систем, несмотря на схожесть, имеют некоторые крайне важные отличия. При создании многоконтекстных систем необходимо распознать контексты, определить и ранжировать ключевые проблемы для каждого из них, после чего сравнить полученные списки на предмет совместимости проблем. После того как совместимость проблем будет определена, совместимым контекстам необходимо назначить приоритеты согласно бизнес-ценности, а взвешенные проблемы объединить в один общий список. Затем начинается процесс рассмотрения проблем в порядке убывания приоритета и формулирование эффективных подходов для двух указанных типов архитектур, которые по сути не отличаются. Примечания
Об авторе Чарли Альфред (charliealfred@comcast.net) имеет 30-летний опыт разработки программного обеспечения, последние 10 лет он является архитектором ПО. За это время он поработал с несколькими типами системам, включая системы управления в реальном времени, обработки транзакций, оптимизации и линии программных продуктов. Г‑н Альфред проживает с семьей в г. Нашуа, штат Нью-Гемпшир. |