- •Министерство образования Российской Федерации
- •Введение
- •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. Последовательности событий
- •Заключение
- •Список литературы
7.3. Выделение задач в подсистеме диспетчера
В случае нераспределенного решения Диспетчер – это подсистема, которая состоит из одного объекта-координатора, выделенного в задачу. Задача Диспетчер активизируется по запросу, в частности после получения Запроса на обслуживание, и выбирает режим, наиболее подходящий для его удовлетворения.
Поскольку речь идет о нераспределенном решении, очевидно, что Диспетчер может напрямую читать Состояние. Архитектура задач для нераспределенного случая представлена на рис. 13.
Рис.13. Нераспределенная система управления дамбой: архитектура задач
7.4. Определение интерфейсов задач
Рассмотрим теперь, как определяются интерфейсы задач. В случае интерфейсов обмена сообщениями между параллельными задачами возможен либо слабо связанный, либо сильно связанный обмен. Необходимо исследовать только интерфейсы между объектами, выделенными в самостоятельные задачи. Кроме того, следует точно описать сообщения, включая их имена и параметры.
Взаимодействие между задачами Интерфейс кнопок и задачей Диспетчер, показанными на рис.13, отображается на слабо связанный обмен сообщениями (рис.14). Тем самым гарантируется, что исполнение задач Интерфейс кнопок не будет приостановлено после отправки сообщения задаче Диспетчер.
Рассмотрим интерфейс между Диспетчером и двумя задачами-мониторами ресурсов: Монитор контроля функционирования шлюза и Монитор контроля исправления ошибок. Диспетчер дает команды управления Монитору контроля функционирования шлюза и команды управления - Монитору контроля исправления ошибок (см. рис. 13). Подобное взаимодействие отображается на слабо связанный обмен сообщениями, так как несколько экземпляров Диспетчера в состоянии одновременно посылать сообщения Монитору контроля функционирования шлюза или Монитору контроля исправления ошибок (см. рис.14) и при этом не должны блокироваться.
Проанализируем пассивные сущностные объекты, к которым обращается сразу несколько задач. Состояние - объект абстрагирования данных, который инкапсулирует состояние прибора. В нераспределенном варианте есть только один экземпляр этого объекта, так что можно использовать централизованное хранилище. К объекту осуществляют доступ несколько экземпляров задачи Диспетчер (см. рис.13). Доступ к пассивному объекту должен быть синхронизирован, чтобы его операции исполнялись взаимно исключающим образом.
Рис.14. Нераспределенная система управления исправлением ошибок: интерфейсы задач
7.5. Проектирование класса абстрагирования данных
При централизованном подходе есть только один класс абстрагирования данных - Состояние и План работы системы исправления ошибок. Состояние - это текущее состояние шлюза. План работы системы исправления ошибок представляет собой список шлюзов, в которых произошла неполадка. Поскольку есть только один экземпляр указанного класса, мы вправе прибегнуть к централизованному хранилищу, как показано на рис. 15.
Чтобы определить операции класса абстрагирования данных, необходимо понять, как к нему обращаются. На рис. 14 показана задача, обращающаяся к такому объекту: Диспетчер.
Диспетчер читает план и состояние шлюзов с целью выбрать шлюз, в котором произошла неполадка. Эта функция выполняется внутри операции выбратьШлюз. Диспетчер обновляет план работы системы испраления ошибок и проверяет, не произошла ли неполадка в каком-либо шлюзе. Эта функция реализуется операцией обновитьПлан. Каждое из названных сообщений отображается на операцию объекта абстрагирования данных (см. рис. 15).
Рис.15. Классы абстрагирования данных: а – для централизованного решения; б – для распределенного решения
Операция проверитьЭтотШлюз вызывается с параметром Шлюз# и проверяет, существует ли неполадка и обновляет состояние и план работы шлюзов. Операция возвращает СостояниеШлюза: поломка, если в шлюзе произошла неполадка, или норма – в противном случае.
Операция проверитьСледующийШлюз (вызываемая после этого) проверяет, есть ли неполадка в каком-либо другом шлюзе. Операция также возвращает СостояниеШлюза: поломка, если в шлюзе произошла неполадка, или норма – в противном случае.