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