Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Uml Book (Rus).doc
Скачиваний:
15
Добавлен:
11.08.2019
Размер:
58.74 Mб
Скачать

Типичные приемы моделирования Встроенная система

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

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

Моделирование встроенной системы включает в себя следующие этапы:

1. Идентифицируйте устройства и узлы, уникальные для системы.

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

3. Смоделируйте отношения между процессорами и устройствами на диаграм­ме развертывания. Кроме того, специфируйте отношения между компонен­тами вида системы с точки зрения реализации и узлами вида с точки зрения развертывания.

4. При необходимости раскройте описание наиболее «интеллектуальных» устройств, промоделировав их структуру на более детальной диаграмме развертывания.

Например, на рис. 30.2 показана аппаратная реализация автономного робота. Вы видите один узел (материнская плата на базе процессора Pentium) со стереотипом processor.

Вокруг этого узла расположено восемь устройств, каждое из которых имеет стереотип device и изображено в виде пиктограммы, похожей на реальный про­тотип.

Клиент-серверная система

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

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

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

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

Моделирование клиент-серверной системы осуществляется так:

1. Идентифицируйте узлы, представляющие процессоры клиента и сервера.

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

3. С помощью стереотипов разработайте визуальные обозначения для процес­соров и устройств.

4. Смоделируйте топологию узлов на диаграмме развертывания. Специфируйте также отношения между компонентами вида системы с точки зрения реа­лизации и узлами вида с точки зрения развертывания.

На рис. 30.3 показана топология системы, следующей классической клиент-сер­верной архитектуре. Мы видим, что граница между клиентом и сервером проведена явно путем использования пакетов (см. главу 12) клиент и сервер. Пакет клиент

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]