Декомпозиция подсистемы на модули.
Моделирование управления.
Известны два типа моделей управления: - модель централизованного управления и модель событийного управления.
В модели централизованного управления одна подсистема выделяется как системный контроллер. Ее обязанности — руководить работой других подсистем. Различают две разновидности моделей централизованного управления: модель вызов-возврат и модель менеджера, которая используется в системах параллельной обработки.
Модель «вызов - возврат» представляет собой классическую схему управления, близкую традиционному программированию. Основой управления в ней является анализ данных, а логика работы реализуется в структуре вызывающей программы.
В модели менеджера в центре системы размещается системный контроллер — процесс — координатор, реализующий логику работы системы и имеющий возможность запускать различные процессы.
В модели событийного управления системой управляют внешние события. Используются две разновидности модели событийного управления: широковещательная модель и модель, управляемая прерываниями.
В широковещательной модели каждая подсистема уведомляет обработчика о своем интересе к конкретным событиям, это позволяет сформировать набор блоков ожидаемых событий вида {событие, подсистема}. Когда событие происходит, обработчик пересылает его подсистеме, которая может обработать это событие. Функции управления в обработчик не встраиваются, а логика управления состоит в выборе набора событий.
В модели, управляемой прерываниями, все прерывания разбиты на группы — типы, которые образуют вектор прерываний. Для каждого типа прерывания есть свой обработчик. Каждый обработчик реагирует на свой тип прерывания и запускает свой процесс.
Каждое ПС, как правило, является большой системой, поэтому при разработке должны быть приняты меры для её упрощения. Для этого такую систему разрабатывают по частям, которые называются программными модулями , а сам такой метод разработки называют модульным программированием .
Программный модуль — любой фрагмент описания процесса, оформляемый как самостоятельный программный продукт, пригодный для использования в описаниях процесса.
Это означает, что каждый программный модуль программируется, компилируется и отлаживается от других модулей программы, и тем самым, физически разделён с другими модулями программы.
Более того, каждый программный модуль может включаться в состав разных программ, если выполнены условия его использования, декларированные в документации по этому модулю. Таким образом, программный модуль может рассматриваться и как средство борьбы со сложностями программ, и как средство борьбы с дублированием в программировании (т.е. как средство накопления и многократного использования программистских знаний и обеспечения независимости программных компонент).