Прецеденты. В прецедентах появились новые отношения

В прецедентах появились новые отношения. В UML 1.1 имелись толь­ко два типа отношений между прецедентами: «uses» (использует) и «extends» (расширяет), каждое их которых является стереотипом обоб­щения. UML 1.3 предлагает три типа отношений:

• Конструкция «includes» (включает) является стереотипом зависимости. Она означает, что выполнение одного прецедента включает в себя другой прецедент. Обычно это отношение встречается в си­туации, когда несколько прецедентов имеют общие этапы или час­ти. Включаемый прецедент может предоставлять другим некоторое общее поведение. В качестве примера можно рассмотреть банкомат (ATM), в контексте которого оба прецедента Withdraw Money (Полу­чить деньги) и Make Transfer (Сделать перевод) используют преце­дент Validate Customer (Проверить подлинность клиента). Это отно­шение в общем случае заменяет применение стереотипа «uses».

• Обобщение (generalization) прецедента означает, что один преце­дент представляет собой вариацию другого. Таким образом, можно иметь один прецедент для сценария «Получить деньги» (базовый вариант использования) и другой прецедент для ситуации, когда выдача денег невозможна по причине отсутствия средств на счету
клиента. Отказ от выплаты денег можно представить в виде отдель­ ного прецедента, который уточняет базовый прецедент. (Кроме то­го, можно определить еще и дополнительный сценарий для преце­дента «Получить деньги».) В этом случае специальный прецедент, подобно рассмотренному выше, может изменить какой-либо аспект базового прецедента.

• Конструкция «extends» (расширяет) является стереотипом зависи­
мости. Она обеспечивает более управляемую форму расширения по


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

Существует некоторая путаница насчет старой и новой интерпретаций указанных отношений. Большинство разработчиков применяют сте­реотип «uses» в ситуациях, когда версия 1.3 рекомендует указывать стереотип «includes», поскольку для многих из них стереотип «in­cludes» может быть заменен стереотипом «uses». И большинство разра­ботчиков применяют стереотип «extends» из версии 1.1 в более широ­ком смысле, предполагая не только отношение «extends» из версии 1.3, но также и важнейшую составляющую отношения обобщения в вер­сии 1.3. Поэтому можно считать, что отношение со стереотипом «ex­tends» расщепляется в версии 1.3 на два отношения: со стереотипом «extends» и обобщение (generalization).

Хотя это объяснение охватывает большую часть известных мне прило­жений языка UML, в настоящее время мне неизвестен строгий и пра­вильный способ применения в них старых отношений. Однако боль­шинство разработчиков вовсе не пользуются этим строгим определени­ем отношений, поэтому мне не хотелось бы развивать эту тему дальше.


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



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