Открытая коллекция знаний

OpenU.Ru

Справочник UML. Объектно-ориентированное проектирование.



subsystem (подсистема)

Пакет экземпляров, представляющих собой единый блок, в который входит спецификация повеления всего содержимого пакета. Подсистема моделируется и как пакет, и как класс. У нас есть некое множество интерфейсов, которое описывает ее отношение ко всей прочей системе, и условия, при которых ее можно использовать.
См. interface; package; realization.

Семантика

Подсистема является частью системы, которую можно рассматривать как абстрактный единый блок. Она представляет независимое поседение части системы. Подсистема - это единый блок, у которого есть собственная спецификация поведения и программная реализация. Спецификация повеления определяет независимое повеление подсистемы в виде блока, который может взаимодействовать с другими подсистемами. Эта спецификация поведения оформляется в терминах вариантов использования и прочих элементов, описывающих поведение. Программная реализация описывает реализацию поведения подсистемы в терминах тех подчиненных элементов, из которых она состоит. Результат выглядит как множество коопераций между этими элементами.
Сама система представляет собой подсистему самого высокого уровня. Реализация одной подсистемы в программном коде может быть написана в виде кооперации подсистем нижнего уровня. С этой точки зрения всю систему можно развернуть в виде иерархии подсистем - вплоть до самых нижних подсистем, которые описываются в терминах обычных классов.
В подсистему могут входить структурные элементы и элементы спецификации, например варианты использования и операции, экспортируемые структурными элементами. Поведение подсистемы - это поведение ее элементов.

Структура

Спецификация подсистемы включает в себя элементы спецификации, а также операции и интерфейсы, определенные для всей подсистемы. К элементам спецификации относятся варианты использования, отношения между вариантами использования и т. д. С помощью этих элементов и операций определяется поведение подсистемы как независимой сущности, то есть конечный результат совместной работы ее частей. Варианты использования описывают законченную последовательность взаимодействий подсистемы с внешними актантами. Интерфейсы определяют операции, которые должна предоставлять подсистема или ее варианты использования. При этом спецификация не указывает явно, из каких частей состоит подсистема или как они взаимодействуют между собой для выработки требуемого поведения.
Остальные элементы подсистемы служат для реализации ее поведения. К ним могут относиться различные виды классификаторов и отношения между ними. Множество коопераций между элементами реализации подсистемы служит для се спецификации. Вообще, каждый вариант использования реализуется одной или несколькими кооперациями. Каждая кооперация описывает, каким образом взаимодействуют экземпляры элементов программной реализации для того, чтобы совместно осуществить поведение, заданное вариантом использования или операцией. Все сообщения, идущие к подсистеме иди от нее на уровне спецификации, должны соотноситься с сообщениями между элементам" реализации этой подсистемы и других подсистем.
Подсистема представляет собой пакет и обладает свойствами пакета. Так, импорт подсистем осуществляется точно так же, как и импорт пакетов, а обобщение подсистем точно так же влияет на видимость их содержимого.

Нотация

Подсистема изображается в виде символа пакета (прямоугольник с маленькой закладкой), у которого над именем подсистемы стоит ключевое слово "subsystem" (рис. 175).

Обсуждение

Подсистема является независимой группировкой элементов проектирования, например, логических классов. Компонент - это независимая группа элементов программной реализации, например, классов уровня программной реализации. Во многих случаях подсистемы реализуются в программном коде точно так же, как компоненты. Это упрощает соотнесение проектирования и программной реализации, поэтому представляет собой стандартный подход при создании архитектуры системы. Более того, многие компоненты реализуются в программном коде как доминантные классы, которые служат для непосредственной реализации интерфейсов этих компонентов. В таком случае и подсистема, и компонент, и класс могут иметь одинаковые интерфейсы.

Алфавитный указатель