- •Пример системы управления лифтами
- •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. Последовательность событий «Вызов Лифта»
8. Разбиение на подсистемы
На следующем шаге система разбивается на подсистемы. Поскольку потенциально это приложение является распределенным, то прежде всего применяются рекомендации, касающиеся географического местоположения и агрегирования/композиции. В частности, все объекты-лифты (числом n) являются частями составного объекта Подсистема Лифта. С другой стороны, объекты Интерфейс Двери, Интерфейс Мотора, Интерфейс Кнопки Лифта (m экземпляров – по одному на этаж), Интерфейс Лампочки Лифта (также m экземпляров) входят в состав одного лифта. Помимо этого, каждому лифту нужны объекты Управление Лифтом, Диспетчер Лифта и Состояние и План Движения Лифта. В системе есть также m этажей, а составной объект Подсистема Этажа включает в себя Интерфейс Лампочки Этажа и Интерфейс Кнопки Этажа. Другие объекты могут относиться к Подсистеме Лифта, Подсистеме Этажа или к какой-то другой подсистеме. В качестве примера назовем Интерфейс Датчика Прибытия (по одному на этаж, располагается в шахте лифта). Этот объект отнесен к Подсистеме Лифта, поскольку связан с ней наиболее тесно, о чем свидетельствует его участие в прецеденте Остановка Лифта на Этаже. С другой стороны, объект Интерфейс Лампочки Направления принадлежит Подсистеме Этажа, так как находится на каждом этаже. Наконец, объект-координатор Планировщик помещается в своей собственной подсистеме, поскольку не зависит ни от числа этажей, ни от числа лифтов.
На рис.15 показана общая структура разбиения на подсистемы лифта, этажа и планировщика. Подсистема Лифта – это управляющая подсистема, Подсистема Этажа – подсистема сбора данных, а подсистема Планировщик –координирующая. Структура Подсистемы Лифта представлена на рис.16, а Подсистемы Этажа – на рис.17.
Дополнительно разрабатывается уточненная статическая модель, изображаемая на диаграмме классов. Эта диаграмма выводится из общей архитектуры подсистем и структуры каждой подсистемы. На диаграмме классов отражены все классы, из которых создаются объекты, представленные на диаграммах кооперации, а также отношения между этими классами, то есть сами кооперации. На рис.18 приведена уточненная статическая модель, в которой каждая подсистема предстает в виде составного класса. Становится очевидным, как программные понятия соответствуют статической модели предметной области, созданной ранее (см. рис.3). Так, составной класс Подсистема Лифта включает несколько классов, в том числе классы интерфейса устройств, например Интерфейс Мотора, которые взаимодействуют с внешними классами, в частности Мотор, представленными в статической модели. Однако в класс Подсистема Лифта входят также и другие классы, среди них три управляющих (зависящий от состояния, координатор и таймер) и один сущностный. Аналогичные наблюдения справедливы в отношении составного класса Подсистема Этажа и его составляющих. Операции каждого класса определены в разделах 9.5 и 11, посвященных проектированию классов.
Рис.15. Разбиение на подсистемы
Рис.16. Структура подсистемы лифта
Рис.17. Структура подсистемы этажа
