моделирования использования к моделированию структуры (глава 4) и
поведения (глава 5).
37
• При составлении диаграмм взаимодействия для нескольких вариантов
использования могут быть задействованы одни и те же классы, играющие
разные роли в различных кооперациях (см. главу 5). Одинаковое поведение и
структура, проявляющиеся в разных вариантах использования, оказываются
реализованными одним классом. Такой стиль моделирования полностью
соответствует объектно-ориентированному подходу и обеспечивает
концептуальную целостность проектируемой системы.
38
• При реализации вариантов использования диаграммами взаимодействия на
ранних этапах моделирования появляются сопутствующие фрагменты
диаграмм классов (и, может быть, диаграмм реализации). Эти диаграммы
гораздо ближе к целевому артефакту — программному коду — нежели
диаграммы использования и даже диаграммы деятельности. Все инструменты
поддерживают генерацию кода по диаграммам классов, а некоторые — и по
диаграммам взаимодействия. Таким образом, появляется возможность
автоматизированного построения прототипов (версий системы,
обеспечивающих функциональность частично), что полностью соответствует
идеологии инкрементальной разработки.
Однако у диаграмм взаимодействия UML есть существенное ограничение. В целом
эти диаграммы формулируются на уровне объектов, а потому позволяют
реализовать только отдельный сценарий (экземпляр варианта использования).
Другими словами, диаграммы взаимодействия позволяют описать протокол
выполнения алгоритма, но не сам алгоритм, они не являются универсальной
моделью вычислимости. Возникает вопрос: насколько существенным и
обременительным оказывается это ограничение при практическом моделировании?
Если алгоритм варианта использования линеен (просто последовательность
действий, без ветвлений и циклов), то проблемы нет — линейные алгоритмы суть
протоколы выполнения. Для ветвлений и циклов диаграммы взаимодействия
содержат некоторые (весьма ограниченные, см. главу 5) средства моделирования.
Иногда этих средств может оказаться достаточно.
Что же делать, если все-таки никак не удается построить исчерпывающую
диаграмму взаимодействия для варианта использования? В этом случае
рекомендуется применять следующие методы. Во-первых, реализовать вариант
использования несколькими диаграммами взаимодействия. Каждая диаграмма
описывает отдельный сценарий, а все вместе они дают достаточное представление
об алгоритме варианта использования. Во-вторых, можно пересмотреть
представление использования таким образом, чтобы исключить трудно
реализуемые варианты использования. Например, с помощью обобщения выделить
37
Отметим, что в диаграмме деятельности это не так: вы можете использовать в качестве действий
операции классов, но не обязаны этого делать. Большинство инструментов даже не поддерживают
применения на диаграммах активности элементов модели, определенных в других диаграммах.
38
Отметим, что применение диаграмм деятельности не обеспечивает концептуальной целостности.
Диаграммы деятельности никак не связаны друг с другом. Некоторые инструменты, например,
Visio, даже не поддерживают использование деятельности, определенной на одной диаграмме, в
другой диаграмме.