Шаг 226.
Унифицированный язык моделирования UML.
Моделирование клиент-серверной системы

    На этом шаге рассмотрим типичные приемы моделирования клиент-серверной системы в UML.

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

    Здесь существует множество вариаций. Например, можно выбрать "тонкого" клиента, вычислительные мощности которого ограничены и который, следовательно, занят в основном взаимодействием с пользователем и отображением информации. У "тонких" клиентов может даже не быть собственных артефактов – вместо этого они загружают артефакты с сервера по мере необходимости, как, скажем, в случае с Enterprise JavaBeans. С другой стороны, можно выбрать и "толстого&Quot; клиента, у которого вычислительных ресурсов больше и который вследствие этого может заниматься не только визуализацией. Выбор между "толстым" и "тонким" клиентом – это архитектурное решение, на которое влияют различные технические, экономические и политические факторы.

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

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

    Для моделирования клиент-серверной системы вам понадобится:

  1. Идентифицировать узлы, представляющие процессоры клиента и сервера.
  2. Выделить те устройства, которые так или иначе влияют на поведение системы. Например, вы, скорее всего, захотите смоделировать устройство считывания кредитных карт и устройство отображения, отличные от стандартных мониторов, поскольку их расположение в топологии аппаратных средств системы имеет важное значение с точки зрения системной архитектуры.
  3. С помощью стереотипов разработать визуальные обозначения для процессоров и устройств.
  4. Смоделировать топологию узлов на диаграмме размещения. Также специфицировать связи между артефактами представления системы с точки зрения реализации и узлами представления системы с точки зрения размещения.

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


Рис.1. Моделирование клиент-серверной системы

    Мы видим, что граница между клиентом и сервером проведена явно путем использования пакетов client и server. Пакет client содержит два узла: console (консоль) и kiosk (киоск), имеющих свои стереотипы и потому визуально легко отличимых. Пакет server содержит два вида узлов: caching server (кэширующий сервер) и server (сервер), для каждого из которых дополнительно описаны артефакты, размещаемые в узле. Заметьте, что как для caching server, так и для server указаны множественности, специфицирующие, сколько экземпляров ожидается в конкретной конфигурации. К примеру, из диаграммы видно, что кэширующих серверов должно быть не меньше двух.

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




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