Проектирование структуры потоков управления выполняется при наличии в системе параллельных процессов (параллелизма). Цель проектирования — выявление существующих в системе процессов, характера их взаимодействия, создания, уничтожения и отображения в среду реализации. Требование параллелизма возникает в следующих случаях:
· необходимо распределение обработки между различными процессорами или узлами;
· система управляется потоком событий (event-driven system);
· вычисления в системе обладают высокой интенсивностью;
· в системе одновременно работает много пользователей.
Например, система регистрации курсов обладает свойством параллелизма, поскольку она должна допускать одновременную работу многих пользователей (студентов и профессоров), каждый из которых порождает в системе отдельный процесс.
Понятие процесс (process) трактуется следующим образом:
· это ресурсоемкий поток управления, который может выполняться параллельно с другими процессами;
· он выполняется в независимом адресном пространстве и в случае высокой сложности может разделяться на два потока или более;
· объект любого класса должен существовать внутри хотя бы одного процесса.
Поток (thread) — это облегченный поток управления, который может выполняться параллельно с другими потоками в рамках одного и того же процесса в общем адресном пространстве. Необходимость создания потоков в системе регистрации курсов диктуется следующими требованиями:
· если курс окажется заполненным в то время, когда студент
формирует свой учебный график, включающий данный
курс, то он должен быть извещен об этом (необходим независимый процесс, управляющий доступом к информации конкретных курсов);
· существующая база данных каталога курсов не обеспечивает требуемую производительность (необходим процесс промежуточной обработки — подкачки данных).
Реализация процессов и потоков обеспечивается средствами операционной системы.
Для моделирования структуры потоков управления используются так называемые активные классы[28] — классы со стереотипами <<process>> и <<thread>>. Активный класс владеет собственным процессом или потоком и может инициировать управляющие воздействия. Связи между процессами моделируются как зависимости. Потоки могут существовать только внутри процессов, поэтому связи между процессами и потоками моделируются как композиции. Модель потоков управления помещается в пакет Process View В качестве примера на рис. 4.24 — 4.26 приведены фрагменты диаграммы классов, описывающей структуру процесса регистрации студента на курсы. Активные классы, показанные на этих диаграммах, выполняют следующее назначение:
· StudentApplication — процесс, управляющий всеми функциями студента-пользователя в системе. Для каждого студента, начинающего регистрироваться на курсы, создается один объект данного класса.
· CourseRegistrationProcess — процесс, управляющий непосредственно регистрацией студента. Для каждого студента, начинающего регистрироваться на курсы, также создается один объект данного класса.
· CourseCatalogSystemAccess — управляет доступом к системе каталога курсов. Один и тот же объект данного класса используется всеми пользователями при доступе к каталогу курсов.
· CourseCache и OfferingCache используются для асинхронного доступа к данным в БД с целью повышения производительности системы. Они представляют собой кэш для промежуточного хранения данных о курсах, извлеченных из БД.
Рис. 4.24. Процессы и потоки