Механизмы расширения

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

Механизмы расширения UML включают:

  • стереотипы;
  • помеченные значения;
  • ограничения.

Стереотип (Stereotype) расширяет словарь UML, позволяя на основе существующих блоков языка создавать новые, специфичные для решения конкретной проблемы. Например, работая с такими языками программирования, как C++ или C#, часто приходится моделировать исключения (Exceptions). В этих языках исключения являются обыкновенными классами, хотя и рассматриваются особым образом. Обычно требуется, чтобы исключения можно было генерировать и перехватывать. Если пометить исключения соответствующим стереотипом, то с ними можно будет обращаться как с обычными строительными блоками языка, например, для класса Overflow указать «exception».

Помеченное значение (Tagged value) расширяет свойства строительных блоков UML, позволяя включать новую информацию в спецификацию элемента. Скажем, если вы работаете над "коробочным" продуктом и выпускаете много его версий, то зачастую необходимо отслеживать версию и автора какой-нибудь важной абстракции. Ни версия, ни автор не являются первичными концепциями UML, но их можно добавить к любому блоку, такому, например, как класс, задавая для него новые помеченные значения.

Ограничения (Constraints) расширяют семантику строительных блоков UML, позволяя определять новые или изменять существующие правила. Вы можете, например, ограничить класс Счет в банке (см. рис.2.9) так, чтобы все события добавлялись по порядку, указав ограничение {ordered}. Если требуется реализовать тот факт, что счет в банке может иметь либо физическое лицо, либо юридическое лицо, то можно указать специальное ограничение в виде булевой функции {xor}.

Рис. 2.9 Использование ограничений

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

Для моделирования новой семантики можно воспользоваться следующими рекомендациями:

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

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: