- •Министерство образования Российской Федерации
- •Введение
- •2.5. Абстрактный прецедент «Автоматический режим работы системы»
- •2.6. Абстрактный прецедент «Планирование работы системы управления дамбой»
- •2.7. Конкретный прецедент «Запуск системы»
- •2.8. Конкретный прецедент «Исправление ошибки функционирования дамбы»
- •3. Статическая модель предметной области
- •4. Разбиение на объекты
- •5. Динамическая модель
- •5.1. Диаграмма кооперации для прецедента «Запуск системы»
- •5.2. Диаграмма кооперации для прецедента «Исправление ошибок»
- •5.3. Диаграмма кооперации для прецедента «Остановка системы»
- •5.4. Консолидация диаграмм кооперации
- •6. Разбиение на подсистемы
- •7. Разбиение системы на задачи
- •7.1. Выделение задач в подсистеме управления исправлением ошибок
- •7.2. Выделение задач в подсистеме шлюзов
- •7.3. Выделение задач в подсистеме диспетчера
- •7.4. Определение интерфейсов задач
- •7.5. Проектирование класса абстрагирования данных
- •7.6. Обсуждение альтернативных архитектур
- •8. Проект распределенной системы управления дамбой
- •8.1. Структура подсистемы управления дамбой
- •8.2. Структура подсистемы шлюзов
- •8.3. Структура подсистемы диспетчера
- •8.4.Интерфейсы подсистем
- •9. Проектирование скрывающих информацию классов
- •9.1. Проектирование классов интерфейса устройств
- •9.2. Проектирование класса, зависящего от состояния
- •10. Разработка детального проекта программы
- •10.1. Проектирование объектов-разъемов
- •10.2. Проектирование составных задач
- •11. Конфигурирование целевой системы.
- •12. Анализ производительности системы управления дамбой.
- •12.1. Сценарий для анализа производительности
- •12.2. Последовательности событий
- •Заключение
- •Список литературы
8.2. Структура подсистемы шлюзов
В описанном выше распределенном решении существует по одному экземпляру Подсистемы шлюзов для каждого шлюза. В каждом таком экземпляре есть по одному экземпляру задач Интерфейс датчика неполадок шлюза и Интерфейс датчика исправления ошибок.
Архитектура задач для Подсистемы шлюзов показана на рис. 19. Она аналогична архитектуре для нераспределенного решения с тем отличием, что экземпляров подсистем существует несколько. Интерфейсы задач для пересмотренной архитектуры изображены на рис. 20.
Рис. 19. Архитектура задач для подсистемы шлюзов
Рис. 20. Архитектура задач для подсистемы шлюзов: интерфейсы задач
8.3. Структура подсистемы диспетчера
Существует единственный экземпляр Подсистемы шлюзов, которая состоит из двух задач и одного скрывающего информацию объекта. Это объект абстрагирования данных Сводное Состояние, который содержит текущее состояние каждого шлюза, описывающий, существует ли неполадка в работе шлюза или нет.
В любом узле доступ к объекту Локальное Состояние осуществляется со стороны задач Диспетчер. Серверная задача принимает сообщения о состоянии шлюза и обновляет объект Сводное Состояние, а координирующая задача принимает Запросы на обслуживание от нескольких экземпляров задачи Интерфейс кнопок. Каждый раз при получении сообщения Запрос на обслуживание задача Диспетчер проверяет, по отношении к какому шлюзу осуществляется запрос. Архитектура задач для Подсистемы диспетчера показана на рис. 21. Интерфейсы задач для пересмотренной архитектуры изображены на рис. 22.
Рис. 21. Архитектура задач для подсистемы диспетчера
Рис. 22. Архитектура задач для подсистемы диспетчера: интерфейсы задач
8.4.Интерфейсы подсистем
После определения интерфейсов задач во всех подсистемах можно обновить архитектуру распределенной программы с целью показа интерфейсов подсистем (см. рис. 23). На самом деле все интерфейсы принадлежат той или иной из ранее рассмотренных задач.
Рис. 23. Архитектура распределенной программы: интерфейсы подсистем
9. Проектирование скрывающих информацию классов
Сами классы были определены на этапе разбиения на объекты, теперь речь пойдет о проектировании их операций. Классы абстрагирования данных описаны выше; в этом разделе мы разработаем остальные классы, скрывающие информацию.
9.1. Проектирование классов интерфейса устройств
Класс интерфейса устройства скрывает истинный интерфейс с физическим устройством, предлагая вместо него виртуальный интерфейс. Для каждого типа устройств ввода/вывода имеется отдельный интерфейсный класс. Состав операций, поддерживаемых таким классом, зависит от функций, которые должен поддерживать объект интерфейса. Классы интерфейса устройств изображены на рис.24 и описаны ниже:
– Интерфейс Кнопок Прибора. Предоставляет две операции: читать (считывает значение датчика кнопки прибора) и инициализировать;
– Интерфейс Датчика Яркости. Предоставляет две операции: читать (считывает значение датчика поломок) и инициализировать;
– Интерфейс Поля индикации. Предоставляет две операции: читать (считывает значение поля индикации) и инициализировать;
9.2. Проектирование класса, зависящего от состояния
В системе есть только один зависящий от состояния класс Управление дамбой. Он поддерживает две операции: обработать состояние и текущее состояние. Этот объект вложен в задачу Диспетчер. Поскольку задача существует в нескольких экземплярах, то и экземпляров класса будет несколько – по одному для каждого прибора. Спецификация класса Управление дамбой представлена на рис.25.
Рис. 24. Классы интерфейса устройств
Рис. 25. Зависящий от состояния управляющий класс