На этом шаге рассмотрим моделирование множества потоков управления в UML.
Построение системы с несколькими потоками управления – непростая задача. Надо не только решить, как распределить работу между параллельными активными объектами, но и продумать механизмы коммуникации и синхронизации между активными и пассивными объектами в системе, гарантирующие правильность их поведения в присутствии нескольких потоков управления. Поэтому полезно визуализировать способы взаимодействия этих потоков. В UML это можно сделать с помощью диаграмм взаимодействия (для описания динамической семантики), в которых участвуют активные классы и объекты.
Для моделирования нескольких потоков управления потребуется:
На рис. 1 показана часть представления трейдерской системы с точки зрения процессов.
Рис.1. Моделирование потоков управления
Вы видите три объекта, которые параллельно питают систему информацией: StockTicker (БиржевойТикер), IndexWatcher (НаблюдательИндекса) и CNNNewsFeed (НовостнаяЛентаCNN), названные соответственно s, i и c. Два из них, s и i, обмениваются каждый со своим экземпляром класса Analyst (Аналитик) – а1 и а2. В рамках этого небольшого фрагмента модели класс Analyst может быть спроектирован в упрощенном виде – из расчета на то, что в каждый момент времени в любом из его экземпляров может быть активен только один поток управления. Однако оба экземпляра класса Analyst одновременно общаются с объектом AlertManager (ДиспетчерОповещений), которому мы дали имя m. Следовательно, m необходимо спроектировать так, чтобы он сохранял свою семантику в присутствии нескольких потоков управления. Объекты m и c одновременно общаются с t – объектом класса TradingManager (МенеджерПоПродажам). Каждому соединению присвоен порядковый номер, определяемый тем, какой поток управления им владеет.
Диаграммы взаимодействия, подобные представленной выше, полезны для визуализации тех мест, где два потока управления могут пересекаться и где, следовательно, необходимо обратить особое внимание на проблемы коммуникации и синхронизации. С помощью инструментальных средств допускается реализация дополнительных визуальных меток – например, раскрашивание потоков в разные цвета.
К подобным диаграммам часто присоединяют автоматы с ортогональными состояниями, чтобы в деталях передать поведение активных объектов.
На следующем шаге рассмотрим моделирование межпроцессных коммуникаций.