- •1. Описание задачи
- •2. Модель прецедентов
- •2.1. Прецедент «Выбор необходимой температуры»
- •2.2. Прецедент «Поддержание оптимальной частоты воздуха и заданной температуры»
- •2.3. Абстрактные прецеденты
- •2.4. Абстрактный прецедент «Планирование вентиляционной установки при аварии»
- •2.5. Абстрактный прецедент «Забор воздуха с улицы»
- •2.6. Конкретный прецедент «Выбор необходимой
- •2.7. . Конкретный прецедент «Поддержание оптимальной частоты воздуха и заданной температуры»
- •3. Статическая модель предметной области
- •4. Разбиение на объекты
- •5. Динамическая модель
- •5.1. Диаграмма кооперации для прецедента «Выбор необходимой температуры»
- •5.2. Диаграмма кооперации для прецедента «Забор воздуха с улицы»
- •6. Модель состояний
- •7. Консолидация диаграмм кооперации
- •8. Разбиение на подсистемы
- •9. Разбиение системы на задачи
- •9.1. Выделение задач в подсистеме Вентиляции
- •9.2. Выделение задач в подсистеме датчиков
- •9.3. Выделение задач в подсистеме планировщика
- •9.4. Определение интерфейсов задач
- •10. Проект распределенной системы управления вентиляцией
- •10.1. Структура подсистемы вентиляции
- •10.2. Структура подсистемы датчиков
- •10.3. Структура подсистемы планировщика
- •10.4. Интерфейсы подсистем
- •11. Проектирование скрывающих информацию классов
- •11.1. Проектирование классов интерфейса устройств
- •11.2. Проектирование класса, зависящего от состояния
- •12. Разработка детального проекта программы
- •12.1. Проектирование объектов-разъемов для Вентиляции
- •12.2. Проектирование составных задач
- •13. Конфигурирование целевой системы
- •14. Анализ производительности нераспределенной системы управления Вентиляцией
- •14.1. Сценарий для анализа производительности
- •14.2. Последовательности событий
- •14.3. Назначение приоритетов
- •14.4. Планирование в реальном времени для нераспределенной архитектуры
- •14.5. Последовательность событий «Забор воздуха с улицы»
- •14.6. Последовательность событий «Выбор необходимой температуры»
10. Проект распределенной системы управления вентиляцией
Физическая конфигурация распределенной системы управления вентиляцией состоит из нескольких узлов, соединенных локальной сетью. В такой среде необходимо установить дисциплину, согласно которой все коммуникации между распределенными подсистемами происходят путем обмена сообщениями. Общая архитектура распределенного ПО показана на рис.17, где представлено несколько экземпляров Подсистемы Вентиляции несколько экземпляров Подсистемы Датчика (по одной на помещение) и один экземпляр подсистемы Планировщик. Все коммуникации между подсистемами осуществляются посредством слабо связанного обмена сообщениями.
В распределенной конфигурации нет разделяемой памяти, а значит, Планировщик и экземпляры Подсистемы Вентиляции не могут напрямую обратиться к объекту абстрагирования данных Состояние и Планирование Вентиляции, как было в предыдущем случае. Один из способов решить проблему - погрузить такой объект в серверную задачу. Вместо того чтобы вызывать операцию объекта абстрагирования данных, клиентская задача отправит синхронное сообщение с ответом задаче Сервер Состояния и Планирование Вентиляции. Но при этом сервер может стать узким местом, поскольку у него есть довольно много клиентов: Планировщик, а также несколько экземпляров Диспетчера Вентиляции и Контроллера Вентиляции, Интерфейса Пультов ДУ.
Альтернативное решение - применение репликации данных. Каждый экземпляр Подсистемы вентиляции хранит собственный локальный объект Локальное Состояние и План Движения Вентиляции. Есть такой объект и у Планировщика, только в нем содержатся состояния и планы работы всех Вентиляции и называется он Сводное Состояние и Планирование Вентиляции.
Рис.17. Архитектура распределенного ПО
10.1. Структура подсистемы вентиляции
В распределенном проекте для Вентиляции имеется по одному экземпляру Подсистемы Вентиляции, включающему по одному экземпляру задач Контроллер Вентиляции, Интерфейс Датчиков и Диспетчер Вентиляции. Кроме того, каждый экземпляр Подсистемы Вентиляции хранит собственный локальный экземпляр объекта абстрагирования данных Состояние и Планирование Вентиляции. Архитектура задач для Подсистемы Вентиляции показана на рис.18. Задача Диспетчер Вентиляции получает сообщения Запрос Вентиляции от задачи Интерфейс Пульта ДУ, сообщения Запрос Планировщика от Планировщика и посылает сообщения Обязательство Вентиляция задаче Планировщик. Контроллер Вентиляция отправляет сообщения о состоянии и Подсистеме Вентиляция, и Планировщику.
Пересмотренная архитектура задач показана на рис.19. Здесь изображены интерфейсы задач, а также способ доступа к объектам, скрывающим информацию. Проект объекта абстрагирования данных Локальное Состояние и Планирование Вентиляции проще, чем для централизованного решения (см. рис.21а), поскольку он поддерживает Вентиляцию.(см. рис.216).
На этапе конфигурирования целевой системы (см. раздел 13) каждый экземпляр Подсистемы Вентиляции обычно отображается на узел физической Вентиляции, поэтому программы в каждом узле исполняются независимо от всех остальных.