2.2.3. Определение зависимостей
На следующем этапе построения объектной модели определяются зависимости между классами. Прежде всего из классов исключаются атрибуты, являющиеся явными ссылками на другие классы; такие атрибуты заменяются зависимостями. Смысл такой замены в том, что зависимости представляют собой абстракцию того же уровня, что и классы, и потому не оказывают непосредственного влияния на будущую реализацию (ссылка на класс лишь один из способов реализации зависимостей).
Аналогично тому, как имена возможных классов получались из существительных, встречающихся в предварительной постановке прикладной задачи, имена возможных зависимостей могут быть получены из глаголов или глагольных оборотов, встречающихся в указанном документе. Так обычно описываются: физическое положение (следует_за, является_частью, содержится_в), направленное действие (приводит_в_движение), общение (разговаривает_с), принадлежность (имеет, является_частью) и т.п. Пример выделения явных и неявных глагольных оборотов из предварительной постановки конкретной прикладной задачи рассмотрен в п. 2.3.3.
Затем следует убрать ненужные или неправильные зависимости, используя следующие критерии:
- зависимости между исключенными классами
должны быть исключены, либо переформулированы в терминах оставшихся классов (см. пример в п. 2.3.3);
- нерелевантные зависимости
и зависимости, связанные с реализацией, должны быть исключены (см. пример в п. 2.3.3);
- действия:
зависимость должна описывать структурные свойства прикладной области, а не малосущественные события (см. примеры в п. 2.3.3);
- тренарные зависимости:
большую часть зависимостей между тремя или большим числом классов можно разложить на несколько бинарных зависимостей, используя в случае необходимости квалификаторы (см. примеры в п. 2.3.3); в некоторых (очень редких) случаях такое разложение осуществить не удается; например, тренарная зависимость "Профессор читает курс в аудитории 628" не может быть разложена на бинарные без потери информации;
- производные зависимости:
нужно исключать зависимости, которые можно выразить через другие зависимости, так как они избыточны (см. пример в п. 2.3.3); при исключении избыточных (производных) зависимостей нужно быть особенно осторожным, так как не все дублирующие одна другую зависимости между классами избыточны; в некоторых случаях другие зависимости позволяют установить только существование еще одной производной зависимости, но не позволяют установить кратность этой зависимости; например, в случае, представленном на рисунке 2.36, фирма имеет много служащих и владеет многими компьютерами; каждому служащему предоставлено для персонального использования несколько компьютеров, кроме того, имеются компьютеры общего пользования; кратность зависимости предоставлен_для_использования не может быть выведена из зависимостей служит и владеет; хотя производные зависимости и не добавляют новой информации, они часто бывают удобны; в этих случаях их можно указывать на диаграмме, пометив косой чертой.
Рис. 2.36. Неизбыточные зависимости
Удалив избыточные зависимости, нужно уточнить семантику оставшихся зависимостей следующим образом:
- неверно названные зависимости:
их следует переименовать, чтобы смысл их стал понятен (см. пример в п. 2.3.3);
- имена ролей:
нужно добавить имена ролей там, где это необходимо; имя роли описывает роль, которую играет соответствующий класс в данной зависимости с точки зрения другого класса, участвующего в этой зависимости; если имя роли ясно из имени класса, его можно не указывать (см. пример в п. 2.3.3);
- квалификаторы:
добавляя квалификаторы там, где это необходимо, мы вносим элементы контекста, что позволяет добиться однозначной идентификации объектов; квалификаторы позволяют также упростить некоторые зависимости, понизив их кратность;
- кратность:
необходимо добавить обозначения кратности зависимостей; при этом следует помнить, что кратность зависимостей может меняться в процессе дальнейшего анализа требований к системе;
- неучтенные зависимости
должны быть выявлены и добавлены в модель.
Назад | Содержание | Вперед
|
 |
 |
 |
|
 |
 |
 |
Новости мира IT:
- 02.02 - Власти РФ согласовали сделку по продаже «Билайна» российскому топ-менеджменту — акции компании выросли
- 02.02 - Сергей Брин снова начал работать программистом в Google
- 02.02 - МТС начнёт выпускать в Твери автомобильные мультимедийные системы с навигацией
- 02.02 - В России возник дефицит чипов для документов — проблема затронула загранпаспорта нового образца
- 01.02 - Microsoft прекратила прямые продажи Windows 10
- 01.02 - «Яндекс» интегрирует в поиск и другие сервисы свой аналог ChatGPT до конца года
- 01.02 - Солнце и ветер дали Европе больше электроэнергии, чем любой другой источник в 2022 году
- 01.02 - Google тестирует на своих сотрудниках потенциальных конкурентов ChatGPT, включая бот Apprentice Bard
- 01.02 - Создатель ChatGPT разработал инструмент для выявления текстов, написанных ИИ
- 30.01 - Роскомнадзор получил более 44 тыс. жалоб о неправомерной обработке персональных данных в 2022 году
- 30.01 - На Apple подали в суд из-за сбора данных пользователей
- 30.01 - «Ростелеком», возможно, интересуется покупкой «Мегафона»
- 30.01 - В идеале Apple стремится создать очки дополненной реальности, которые можно носить весь день
- 30.01 - Российские мобильные операторы перешли на отечественную техподдержку
- 30.01 - Продажа «Билайна» российскому топ-менеджменту затягивается
- 27.01 - «Яндекс» попал в десятку самых посещаемых сайтов в мире
- 27.01 - В списке кредиторов криптобиржи FTX оказались Apple, Google, Amazon, Microsoft, а также авиакомпании, СМИ и университеты
- 27.01 - IBM и SAP показали хорошие квартальные результаты, но всё равно сокращают рабочие места
- 27.01 - От антимонопольного иска против Google выиграет Apple и другие компании
- 26.01 - Власти США подали иск, чтобы заблокировать сделку между Microsoft и Activision Blizzard
Архив новостей
|
 |
 |
 |
|
 |
 |
 |
|
|
 |
 |
|