Диаграммы компонентов относятся только к физическим компонентам? - PullRequest
0 голосов
/ 22 февраля 2019

Правда ли, что хороший тест на то, что что-то квалифицируется как «компонент» на диаграмме компонентов UML, является ли он физически изолированным?

Большинство найденных мной определений (Wikipedia, TutorialsPoints, ..) относятся к компонентам как «файлы, библиотеки, исполняемые файлы и т. Д.»

Однако некоторые иллюстрации (см. http://agilemodeling.com/artifacts/componentDiagram.htm), кажется, моделирует классы как компоненты (например, «Студент», «Семинар»), которые на первый взгляд могут указывать на то, что это лишь некоторые важные классы в приложении. Однако, читая далее вниз подзаголовок «Создание диаграмм компонентов» содержит множество ссылок на «сетевой трафик» («уменьшить потенциальный сетевой трафик»); подразумевается, что моделируемые компоненты представляют собой отдельные процессы или исполняемые файлы, которые обмениваются данными через сетевые порты.подразумевать, что отдельные классы, экземпляры которых находятся в одной и той же JVM (и я мог бы добавить один и тот же физический файл .jar), должны находиться в одном и том же компоненте на диаграмме компонентов UML. Это всегда так? Если нет, то когда случаются случаи, когда экземпляры объектоводин и тот же сосуд и тот же JVM будет рассматриваться как разные компоненты яНа этой диаграмме?

Ответы [ 2 ]

0 голосов
/ 22 февраля 2019

В дополнение к превосходному ответу Гирта, часто хорошей идеей является инкапсуляция того, что обычно выглядит как класс, со всеми связанными с ним вещами в качестве компонента, когда это не всегда необходимо.

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

Другим примером компонента в таких системах могут быть драйверы.Это уже не подкласс Транспортного средства, а отдельный класс, взаимодействующий с Транспортным средством.Опять же, в зависимости от ситуации вас могут заинтересовать только автомобили, принадлежащие компании или связанные с водителями, которые назначены на них или даже имеют право их использовать.Таким образом, вы получаете совершенно другой набор зависимостей, экранов, методов и т. Д., Которые связаны не только с самим драйвером, но и с окружением.

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

0 голосов
/ 22 февраля 2019

Нет, компонент UML не ограничен физическим файлом или чем-то в этом роде.

Физическим может даже не быть подходящим термином для обсуждения файлов насистема, поскольку вы не можете по-настоящему потрогать файл.Это всего лишь биты и байты.

UML 2.5 определяет компонент как

Компонент представляет собой модульную часть системы, которая инкапсулирует ее содержимое, и проявление которой можно заменить в своей среде.

Кроме того, в нем говорится:

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

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

Таким образом, такое программное приложение, как Skype или Chrome может быть смоделирован как компонент, но компонентами могут быть также внутренние компоненты, такие как механизм чата или HTML-рендерер .

Часто структура компонента фактически отражается в физической реализации 1038 *;каждый компонент программного обеспечения может быть скомпилирован в одну DLL

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...