Сущность –управление–граница ( ECB ), или сущность–граница–управление ( EBC ), или граница–управление–сущность ( BCE ) — это архитектурный шаблон , используемый в объектно-ориентированном программировании , основанном на вариантах использования , который структурирует классы, составляющие высокоуровневый объектно-ориентированный исходный код, в соответствии с их обязанностями в реализации варианта использования.
Подход «сущность–управление–граница» берет свое начало в методе объектно-ориентированной программной инженерии (OOSE) , основанном на вариантах использования, разработанном Иваром Якобсоном и опубликованном в 1992 году. [1] [2] Первоначально он назывался «сущность–интерфейс–управление » ( EIC ), но очень быстро термин « граница » заменил « интерфейс », чтобы избежать возможной путаницы с терминологией объектно-ориентированного языка программирования .
Он далее развивается в унифицированном процессе , который способствует использованию ECB в деятельности по анализу и проектированию с поддержкой стереотипов UML . [3] Гибкое моделирование [4] [5] и процесс ICONIX [6] разработаны на основе шаблона архитектуры ECB с диаграммами надежности. [7]
Шаблон ECB организует обязанности классов в соответствии с их ролью в реализации варианта использования:
Соответствующие классы затем группируются в пакеты услуг, которые представляют собой неделимый набор связанных классов, которые могут использоваться в качестве единиц поставки программного обеспечения.
Классы ECB впервые определяются при анализе вариантов использования :
Затем классы уточняются и реструктурируются или реорганизуются по мере необходимости для проекта, например:
Модель ECB предполагает, что обязанности классов также отражены в отношениях и взаимодействиях между различными категориями классов, чтобы обеспечить надежность конструкции. [8] [9]
Диаграммы надежности позволяют визуально представлять отношения между сущностями, элементами управления, границами и субъектами. [4] Они используют графические стереотипы, введенные в ранних работах Якобсона:
Представление | Связь с | ||||
---|---|---|---|---|---|
Роль | Символ | Актер | Граница | Контроль | Сущность |
Актер | Да | Да | Нет | Нет | |
Граница | Да | Часть/целое | Да | Нет | |
Контроль | Нет | Да | Да | Да | |
Сущность | Нет | Нет | Да | Да |
Применяются следующие ограничения надежности:
В принципе сущности не должны знать о границах и элементах управления. Однако на практике некоторые варианты позволяют сущностям, границам и элементам управления подписываться в качестве наблюдателей на сущность.
Аналогично, ограничение граничного класса, не знающего о других граничных классах, применяется только на самом высоком уровне, а не между классами, которые взаимодействуют для реализации одной и той же границы.
Между ECB и model–view–controller (MVC) есть некоторое сходство : сущности принадлежат модели, а представления принадлежат границам. Однако роль ECB-control сильно отличается от MVC-controller, поскольку он инкапсулирует также бизнес-логику варианта использования, тогда как контроллер MVC обрабатывает пользовательский ввод, который был бы обязанностью границы в ECB. ECB-control увеличивает разделение интересов в архитектуре, инкапсулируя бизнес-логику, которая не связана напрямую с сущностью. [2]
ECB может использоваться в сочетании с гексагональной архитектурой , когда границы образуют внешний слой адаптера. [10]
ECB совместим с чистой архитектурой, которая объединяет принципы ECB с другими парадигмами архитектурного проектирования. [11] [12] Чистая архитектура помещает сущности в ядро и окружает их кольцом вариантов использования (т. е. контролем ECB) и кольцом со шлюзами и презентаторами (т. е. границами ECB). Однако чистая архитектура требует односторонней зависимости снаружи внутрь, что требует разделения элементов управления ECB на логику вариантов использования и координацию объектов.
{{cite book}}
: CS1 maint: другие ( ссылка ){{cite book}}
: CS1 maint: несколько имен: список авторов ( ссылка ) CS1 maint: числовые имена: список авторов ( ссылка ){{cite web}}
: CS1 maint: несколько имен: список авторов ( ссылка )