Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Uml Book (Rus).doc
Скачиваний:
15
Добавлен:
11.08.2019
Размер:
58.74 Mб
Скачать

Прямое и обратное проектирование

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

Исключением из этого правила являются диаграммы, содержащие экземпляры компонентов и узлов. Те и другие представляют собой разновидность соответствен­но диаграмм компонентов (см. главу 29) и развертывания (см. главу 30) и рассма­триваются ниже. Здесь отметим только, что экземпляры компонентов и узлов

существуют вне работающей системы и до некоторой степени поддаются прямо­му проектированию.

Обратное проектирование диаграмм объектов (создание модели на основе кода) - что совершенно другое дело. Фактически, отлаживая вашу систему, вы непосред­ственно или с помощью каких-либо инструментов непрерывно осуществляете этот процесс. Например, чтобы отыскать «висячую» связь, необходимо реально или мысленно нарисовать диаграмму взаимодействующих объектов, которая и позво­лит определить, в каком месте нарушилось состояние одного из них или его отно­шения с другими.

Обратное проектирование объектной диаграммы осуществляется так:

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

  2. С помощью инструментальных средств или просто пройдясь по сценарию, зафиксируйте выполнение системы в некоторый момент времени.

  3. Идентифицируйте множество интересующих вас объектов, сотрудничающих в данном контексте, и изобразите их на диаграмме объектов.

4. Если это необходимо для понимания семантики, покажите состояния объектов.

5. Чтобы обеспечить понимание семантики, идентифицируйте связи, существующие между объектами.

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

Советы

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

Хорошо структурированная диаграмма объектов характеризуется следующи­ми свойствами:

  • акцентирует внимание на одном аспекте статического вида системы с точки зрения проектирования или процессов;

  • представляет лишь один из кадров динамического сценария, показанного на диаграмме взаимодействия;

  • содержит только существенные для понимания данного аспекта элементы;

  • уровень ее детализации соответствует уровню абстракции системы. (Пока­зывайте только те значения атрибутов и дополнения, которые существенны для понимания);

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

Изображая диаграмму объектов, придерживайтесь следующих правил:

  • давайте ей имя, соответствующее назначению;

  • располагайте элементы так, чтобы число пересечений было минимальным-

  • располагайте элементы так, чтобы семантически близкие сущности оказыва­лись рядом;

  • используйте примечания и цвет для привлечения внимания к важным осо­бенностям диаграммы;

  • включайте в описания каждого объекта значения, состояния и роли, если это необходимо для понимания ваших намерений.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]