- •Пример системы управления лифтами
- •1. Описание задачи
- •2. Модель прецедентов
- •2.1. Прецедент «Выбор Этажа Назначения»
- •2.2. Прецедент «Вызов Лифта»
- •2.3. Абстрактные прецеденты
- •2.4. Абстрактный прецедент «Остановка Лифта на Этаже»
- •2.5. Абстрактный прецедент «Планирование Лифта»
- •2.7. Конкретный прецедент «Вызов Лифта»
- •18.3. Статическая модель предметной области
- •2.6. Конкретный прецедент «Выбор Этажа Назначения»
- •5. Динамическая модель
- •5.1. Диаграмма кооперации для прецедента «Выбор Этажа Назначения»
- •5.2. Диаграмма кооперации для прецедента «Вызов Лифта»
- •5.3. Диаграмма кооперации для прецедента «Остановка Лифта на Этаже»
- •5.4. Абстрактный прецедент «Отправить Лифт»
- •6. Модель состояний
- •7. Консолидация диаграмм кооперации
- •8. Разбиение на подсистемы
- •9. Разбиение системы на задачи
- •9.1. Выделение задач в подсистеме лифта
- •9.2. Выделение задач в подсистеме этажа
- •9.3. Выделение задач в подсистеме планировщика
- •9.4. Определение интерфейсов задач
- •9.5. Проектирование класса абстрагирования данных
- •9.6. Обсуждение альтернативных архитектур
- •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. Последовательность событий «Выбор Этажа Назначения»
- •14.7. Последовательность событий «Вызов Лифта»
- •15. Анализ производительности распределенной системы управления лифтами
- •15.1. Сценарий для анализа производительности
- •15.2. Планирование в реальном времени для распределенной архитектуры
- •15.3. Последовательность событий «Остановка Лифта на Этаже»
- •15.4. Последовательность событий «Выбор Этажа Назначения»
- •15.5. Последовательность событий «Вызов Лифта»
2.2. Прецедент «Вызов Лифта»
Актеры. Пользователь лифта (главный), датчик прибытия.
Предусловие. Пользователь находится на этаже и ждет лифта.
Описание:
Пользователь нажимает кнопку этажа «вверх». Датчик кнопки этажа посылает системе запрос, содержащий указание на этаж, где находится пользователь.
Система выбирает, какой лифт направить на этаж. Новый запрос добавляется в список этажей, которые должен посетить лифт. Если лифт стоит, система определяет, куда его направить для удовлетворения запроса. Система отдает лифту команду закрыть дверь. Как только дверь закроется, система предписывает мотору привести лифт в движение – вверх или вниз.
По мере движения лифта датчики прибытия распознают приближение лифта к этажу и извещают об этом систему. Система проверяет, должен ли лифт остановиться на данном этаже. Если да, то система отдает мотору команду остановиться. После остановки система приказывает открыть дверь.
Если есть другие ожидающие вызовы, лифт посещает этажи по пути к тому, куда был вызван. В конечном итоге лифт приезжает на этаж, где его ждет пользователь.
Альтернативы:
– пользователь нажимает кнопку этажа «вниз». Реакция системы такая же, как в главной последовательности;
– если лифт находится на некотором этаже и новых вызовов нет, то он остается в покое с открытой дверью.
Постусловие. Лифт прибыл на этаж, на который был вызван пользователем.
2.3. Абстрактные прецеденты
Анализ данных прецедентов показывает, что есть две общие последовательности, которые допустимо вынести в абстрактные прецеденты, а затем включить в новые, более простые варианты исходных прецедентов. Первый абстрактный прецедент – это планирование действий лифта в ответ на запрос пользователя. Его можно так и назвать – Планирование Лифта. Другую общую последовательность, связанную с остановкой лифта, удобно вынести в абстрактный прецедент Остановка Лифта на Этаже. Отношения между прецедентами показаны на рис.2. Оба прецедента – Выбор Этажа Назначения и Вызов Лифта – включают абстрактные прецеденты, которые описываются ниже.
Рис.2. Модель прецедентов с абстрактными прецедентами
2.4. Абстрактный прецедент «Остановка Лифта на Этаже»
Актер. Датчик прибытия.
Предусловие. Лифт движется.
Описание.
По мере движения лифта датчик прибытия распознает приближение лифта к этажу и извещает об этом систему. Система проверяет, должен ли лифт остановиться на данном этаже. Если да, то система отдает мотору команду остановиться. После остановки система приказывает открыть дверь.
Альтернатива. Лифту не нужно останавливаться на данном этаже, и он проезжает мимо.
Постусловие. Лифт остановился на этаже, дверь открыта.
2.5. Абстрактный прецедент «Планирование Лифта»
Предусловие. Лифт должен посетить хотя бы один этаж.
Описание.
Система выбирает, в каком направлении послать лифт, чтобы удовлетворить очередной запрос. Система отдает лифту команду закрыть дверь. Как только дверь закроется, система командует мотору привести лифт в движение – вверх или вниз.
Альтернатива. Если лифт находится на некотором этаже и новых вызовов нет, то он остается в покое с открытой дверью.
Постусловие. Лифт движется в указанном направлении.
