Как правильно использовать порт и интерфейсы в диаграмме компонентов UML2 - PullRequest
2 голосов
/ 01 апреля 2020

Я плохо понял, как использовать порт, разъем и интерфейсы в диаграмме компонентов UML2.

Я понимаю, что компонент может быть физическим или логическим компонентом, то же самое с интерфейсами? Например, требуемый импорт становится обязательным интерфейсом на диаграмме компонентов или простым использованием, как на диаграмме классов? И также я не понимаю концепцию порта как точки взаимодействия: это только представление точки входа и выхода в amicroservice?

Чтобы понять, я сделал два очень типичных сценария ios в приложениях (Я java разработчик).

Сценарий 1

Типичный шаблон фасада, где моему клиентскому приложению необходимо вызывать несколько веб-служб (отдых или * 1050). *) через фасад.

enter image description here

Я пытаюсь представить на диаграмме компонентов:

enter image description here 1a) верна ли эта диаграмма?

1b) Между клиентом и фасадным компонентом правильно ли использовать интерфейсы или мне нужен только простой <>? Физически нет интерфейса, а только импорт класса, но логически даже компонент фасада предоставляет API (отличный от API веб-службы). Порт не нужен, потому что клиент и фасад не являются полностью независимыми частями программного обеспечения, не так ли?

1 c) Между Фасадом и Сервисами мне нужны порты, потому что мы подключаемся к различным независимым частям программного обеспечения (возможно, нет). событие наше программное обеспечение). Правильно?

Сценарий 2 Теперь я сделал второй сценарий, также очень типичный для веб-приложения java. MVC приложение, которое должно вызывать EJB (удаленный класс с интерфейсом) для бизнес-целей.

enter image description here

Моя диаграмма компонентов:

enter image description here 2a) В этом случае мои пользовательские интерфейсы, вложенные в компонент представления, заключены в соединение делегирования между различным пользовательским интерфейсом и всем компонентом. Является ли это правильным способом его использования?

2b) Между представлением и бизнес-компонентом та же ситуация сценария1, когда я вызываю веб-службы и требуется использование порта?

Если мои схемы компонентов неверны, пожалуйста, помогите мне понять мои ошибки и как сделать правильные схемы компонентов для этих сценариев ios.

1 Ответ

1 голос
/ 01 апреля 2020

Это почти нормально. Ваш Delegate класс выглядит лишним. Делегирование - это более абстрактная концепция:

enter image description here (извините за ярлык pinki sh; проблема с инструментом)

Итак, вы просто рисуете отношение <<delegate>> от порта к классу, компоненту или свойству, которые внутри компонента будут нести ответственность. Вы также можете делегировать внутренним интерфейсам, как вы это сделали.


Я посмотрел UML 2.5 для делегирования. На стр.189:

Соединитель делегирования - это соединитель, который связывает порт с ролью в собственном EncapsulatedClassifier. Он представляет пересылку запросов (Операции, вызовы и Сигналы). Запрос, поступающий в порт с соединителем делегирования для одного или нескольких свойств или портов свойств, будет передан этим целевым объектам для обработки.

Соединители делегирования могут использоваться для моделирования иерархической декомпозиции поведения, где услуги, предоставляемые EncapsulatedClassifier, в конечном итоге могут быть реализованы с помощью одного, который вложен в несколько уровней глубоко внутри него.

В качестве ConnectableElement эффективные предоставляемые интерфейсы (см. 11.2.3) порта являются его предоставленными интерфейсами, и эффективные требуемые интерфейсы - это требуемые интерфейсы. Однако для делегирующего порта, т. Е. Порта, который находится в конце соединителя делегирования и не входит в роль и который не является портом поведения, эффективные предоставляемые интерфейсы являются его обязательными интерфейсами, а его эффективные требуемые интерфейсы - его предоставленными. интерфейсы. Следовательно, делегирующий порт ведет себя для соединения так, как если бы он имел внутреннее «лицо», являющееся сопряженным с его внешним «лицом».

Если на одной стороне порта подключено несколько соединителей, тогда любой запрос прибытие в этот порт по ссылке, полученной от соединителя на другой стороне порта, будет перенаправлено по ссылкам, соответствующим этим соединителям. Не определено, будут ли эти запросы пересылаться по всем ссылкам или только по одной из этих ссылок.

Более подробно о портах вокруг этой страницы.

...