Шаг 218.
Унифицированный язык моделирования UML.
Моделирование архитектурных образцов

    На этом шаге рассмотрим типичные приемы моделирования архитектурных образцов в UML.

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

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

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

    Чтобы смоделировать архитектурный образец, необходимо:

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

    На рис. 1 показана спецификация архитектурного образца Blackboard (КласснаяДоска), который позаимствован из книги Buschmann et al. Pattern-Oriented Software Architecture. – New York, NY: Wiley, 1996.


Рис.1. Моделирование архитектурного образца

    Как говорится в его описании, этот образец "применим к задачам преобразования данных в высокоуровневые структуры, которые не имеют простого детерминированного решения". В основе архитектуры лежит образец Blackboard, определяющий порядок совместной работы классов KnowledgeSource (ИсточникЗнаний), Blackboard и Controller (Контроллер). Этот каркас включает также образец проектирования Reasoning engine (ПроцессорЛогическогоВвода), который определяет общий механизм работы класса KnowledgeSource. И наконец, как видно из рисунка, каркас раскрывает один вариант использования – Apply new knowledge sources (Применить новые источники знаний), поясняющий клиенту, как можно этот каркас адаптировать.

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

    На следующем шаге рассмотрим понятия диаграммы артефактов в UML.




Предыдущий шаг Содержание Следующий шаг