Архитектурные системные паттерны

В отличие от паттернов СоР, архитектурные паттерны чаще всего не имеют четко определенной структуры, которую можно было бы описать иМЬ-диаграммами, четкой области применения и конкретной решаемой проблемы, а лишь представляют собой обобщенные подходы, рекомендации и принципы, используемые при проектировании дизайна системы. Ниже приводятся наиболее известные и часто применяемые паттерны [62].

Репозиторий

Описание. Все совместно используемые подсистемами данные хранятся в центральной базе данных, доступной всем подсистемам. Репозиторий является пассивным элементом, а управление им возложено на подсистемы.

Рекомендации. Логично использовать, если система обрабатывает большие объемы данных.

Преимущества. Совместное использование больших объемов данных эффективно, поскольку не требуется передавать данные из одной подсистемы в другие. Подсистема не должна знать, как используются данные в других подсистемах — уменьшается степень связывания.

В системах с Репозиторием резервное копирование, обеспечение безопасности, управление доступом и восстановление данных централизованы, поскольку входят в систему управления репозиторием.

Недостатки. Все подсистемы должны быть согласованы со структурой Репозитория (моделью данных). Модернизировать модель данных достаточно трудно. К разными подсистемам предъявляются различные требования по безопасности, восстановлению и резервированию данных, а в паттерне Репозиторий ко всем подсистемам применяется одинаковая политика.

Паттерн Клиент/сервер

Описание. Данные и процессы системы распределены между несколькими процессорами. Паттерн имеет три основных компонента: набор автономных серверов (предоставляют сервисы другим подсистемам), набор подсистем — клиентов (которые вызывают сервисы, предоставляемые серверами) и сеть (служит для доступа клиентов к сервисам). Клиенты должны знать имена серверов и сервисов, в то время как серверам не надо знать имена клиентов и их количество. Клиенты получают доступ к сервисам, предоставляемым серверами посредством удаленного вызова процедур.

Рекомендации. Данный подход можно использовать при реализации систем, основанных на Репозитории, который поддерживается как сервер системы. Подсистемы, имеющие доступ к Репозиторию, являются клиентами.

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

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

Паттерн обьектно-ориентированный

Модель предметной области (Domain Model), модуль таблицы (Data Mapper)

Задача. Бизнес-логика крайне сложна, имеется множество правил и условий, оговаривающих различные варианты поведения системы.

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

Преимущества. Упрощается процесс модификации системы: можно изменять реализацию того или иного объекта, не воздействуя на другие объекты. Обьектно-ориентированная система проще в понимании и модернизации. Данная система удобна для групповой разработки: работу по реализации системы легко разделить между разработчиками. Потенциально все объекты являются повторно используемыми компонентами, так как они независимо инкапсулируют данные о состоянии и операции. Архитектуру системы можно разрабатывать на базе обьектов (структур обьектов), уже созданных в предыдущих проектах.

Недостатки. При использовании сервисов объекты должны явно ссылаться на имена других объектов и знать их интерфейс (это необходимо учесть, если при изменении системы требуется изменить интерфейс).

Паттерн Многоуровневая система (Layers) или Абстрактная машина

Описание: В соответствии с паттерном Многоуровневая система структурные элементы системы организуются в отдельные уровни со взаимосвязанными обязанностями таким образом, чтобы на нижнем

Представление -i-

I

I

Домен (предметная область, бизнес-логика)

-1-

I

I

I

V

Источники

данных

Рис. 78. Типичные уровни логической архитектуры многоуровневой системы

уровне располагались низкоуровневые службы и службы общего назначения, а на более высоких — объекты уровня логики приложения. При этом взаимодействие и связывание уровней происходит сверху вниз. Связывания объектов снизу вверх следует избегать. На рис. 78 показаны типичные уровни логической архитектуры системы.

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

Пример. Примером данного подхода может служить модель взаимодействия открытых систем (OSI — Open System Interconnection — международная программа стандартизации обмена данными между компьютерными системами на основе семиуровневой модели протоколов передачи данных в открытых системах).

Преимущества. Многоуровневая система может быть разработана пошагово (итеративно).

Недостатки. Изменение исходного кода влечет за собой переделку всех элементов системы, поскольку все элементы системы тесно связаны друг с другом. Логика приложения тесно связана с интерфейсом пользователя — затруднительно менять интерфейс или принципы реализации логики. Из-за высокой связанности работу по реализации системы сложно разделить между разработчиками и, кроме того, сложно модифицировать функции приложения или переходить на новые технологии.

Паттерн Потоки данных (конвейер или фильтр)

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

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

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

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

 
< Пред   СОДЕРЖАНИЕ     След >