Зависимости абстракции

Зависимости абстракции моделируют зависимости между сущностями, находящимися на разных уровнях абстракции. В качестве примера можно привести класс аналитической модели и тот же класс в проектной модели. Существует четыре зависимости абстракции: «trace», «substitute», «refine» и «derive».

Зависимость «trace»
Зависимость «trace» часто используется, чтобы проиллюстрировать отношение, в котором поставщик и клиент представляют одно понятие, но находятся в разных моделях. Например, поставщик и клиент могут находиться на разных стадиях разработки. Поставщик мог бы быть аналитическим представлением класса, а клиент – более детальным проектным представлением. Также «trace» можно использовать, чтобы показать отношение между функциональным требованием, таким как «банкомат должен обеспечивать возможность снятия наличных денег вплоть до достижения кредитного лимита карты», и прецедентом, поддерживающим это требование.

Зависимость «substitute»
Зависимость «substitute» (заместить) показывает, что клиент во время выполнения может заменять поставщика. Замещаемость основывается на общности контрактов и интерфейсов клиента и поставщика, т.е. они должны предоставлять один и тот же набор сервисов. Обратите внимание, что замещаемость не достигается посредством отношений специализации/обобщения между клиентом и поставщиком (специализация/обобщение обсуждаются в статьях далее). В сущности, «substitute» специально разработана для использования в средах, не поддерживающих специализации/обобщения.

Зависимость «refine»
Тогда как зависимость «trace» устанавливается между элементами разных моделей, «refine» (уточнить) может использоваться между элементами одной и той же модели. Например, в модели может быть две версии класса, одна из которых оптимизирована по производительности. Поскольку оптимизация производительности является разновидностью уточнения, это отношение между двумя классами можно смоделировать как зависимость «refine» с примечанием, описывающим суть уточнения.

Зависимость «derive»
Стереотип «derive» (получить) используется, когда необходимо явно показать возможность получения одной сущности как производной от другой. Например, в имеющемся классе BankAccount есть список Transaction (транзакция), в котором каждая Transaction содержит Quantity (количество) денег. По требованию всегда можно вычислить текущий баланс, суммируя Quantity по всем Transaction. Существует три способа показать, что balance (баланс) счета (его Quantity) может быть производной сущностью.
Все перечисленные способы обозначения балансов как производных сущностей эквивалентны.

Запись опубликована в рубрике Компьютеры и интернет с метками . Добавьте в закладки постоянную ссылку.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*

code