Проектирование структуры потоков управления

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

· необходимо распределение обработки между различными процессорами или узлами;

· система управляется потоком событий (event-driven system);

· вычисления в системе обладают высокой интенсивностью;

· в системе одновременно работает много пользователей.

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

Понятие процесс (process) трактуется следующим образом:

· это ресурсоемкий поток управления, который может выпол­няться параллельно с другими процессами;

· он выполняется в независимом адресном пространстве и в случае высокой сложности может разделяться на два потока или более;

· объект любого класса должен существовать внутри хотя бы одного процесса.

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

· если курс окажется заполненным в то время, когда студент
формирует свой учебный график, включающий данный
курс, то он должен быть извещен об этом (необходим независимый процесс, управляющий доступом к информации конкретных курсов);

· существующая база данных каталога курсов не обеспечива­ет требуемую производительность (необходим процесс про­межуточной обработки — подкачки данных).

Реализация процессов и потоков обеспечивается средствами операционной системы.

Для моделирования структуры потоков управления исполь­зуются так называемые активные классы[28] — классы со стереоти­пами <<process>> и <<thread>>. Активный класс владеет собственным процессом или потоком и может инициировать управляющие воздействия. Связи между процессами моделируются как зависимости. Потоки могут существовать только внутри процессов, поэтому связи между процессами и потоками моде­лируются как композиции. Модель потоков управления поме­щается в пакет Process View В качестве примера на рис. 4.24 — 4.26 приведены фрагменты диаграммы классов, описывающей структуру процесса регистрации студента на курсы. Активные классы, показанные на этих диаграммах, выполняют следующее назначение:

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

· CourseRegistrationProcess — процесс, управляющий непосре­дственно регистрацией студента. Для каждого студента, на­чинающего регистрироваться на курсы, также создается один объект данного класса.

· CourseCatalogSystemAccess — управляет доступом к системе каталога курсов. Один и тот же объект данного класса ис­пользуется всеми пользователями при доступе к каталогу курсов.

· CourseCache и OfferingCache используются для асинхрон­ного доступа к данным в БД с целью повышения произво­дительности системы. Они представляют собой кэш для промежуточного хранения данных о курсах, извлеченных из БД.

Проектирование структуры потоков управления - student2.ru

Рис. 4.24. Процессы и потоки

Наши рекомендации