Архитектура. Что такое программная архитектура. Зачем нужна архитектура, страница 6

Шаблоны представляются в языке UML посредством сотрудничества. Сотрудничество (collaboration) — это описание общего расположения объектов и связей, взаимодействие которых в контексте дает определенное поведение. Сотрудничество имеет статическую и динамическую части. Статическая часть описывает роли, которые объекты и связи могут играть в экземпляре сотрудничества. Динамическая часть включает одно или несколько взаимодействий, которые изображают потоки сообщений в процессе сотрудничества.

Для шаблонов проектирования, которые могут применяться неоднократно, используется параметризованное сотрудничество, т.е. сотрудничество, состоящее из универсальных модельных элементов. Это делается путем объединения универсальных модельных элементов в специализированный элемент при создании экземпляра сотрудничества.

Сотрудничество допускает специализацию; следовательно, сотрудничества могут наследовать друг друга.

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

На рис. 6.4 показано представление в UML сотрудничества для шаблона Subject-Observer (субъект-наблюдатель). Шаблон представляется вместе со спецификацией структуры в форме диаграммы класса, а спецификация поведения выражается в форме диаграммы последовательностей или диаграммы состояний.

На рис. 6.5 и 6.6 показаны соответственно диаграмма классов и диаграмма последовательностей для шаблона проектирования Subject-Observer.

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

Многоуровневое представление

Крупная программная система масштаба предприятия может быть сложной и трудной в разработке и управлении. Многоуровневое представление (layering) — это шаблон для декомпозиции. Декомпозиция означает логическое разбиение системы на подсистемы и модули, а многоуровневое представление объединяет подсистемы в отдельные группы и устанавливает, кто имеет право использовать эти подсистемы, компоненты и модули. Уровни, задают "разделение труда" в программной системе, выделяя определенные типы функций в функциональные группы и создавая воображаемые границы между наборами служб.

В процессе RUP определены два основных подхода к многоуровневому представлению.

·  Разбиение на уровни по обязанностям.

·  Разбиение на уровни по повторному использованию.

При первом подходе уровни имеют четко определенные обязанности — это означает, что они играют ясно определенную роль в общей схеме. Такие уровни еще называются ярусами (tiers). Подробнее об этом виде уровней см. в следующем разделе.

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

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