На этом шаге рассмотрим прямое и обратное проектирование диаграмм вариантов использования в UML.
Большинство других диаграмм UML, включая диаграммы классов, компонентов, состояний, – явные кандидаты на прямое и обратное проектирование, потому что каждая из них имеет некий аналог в исполняемой системе. Диаграммы вариантов использования в этом смысле стоят слегка особняком, потому что они скорее отражают, чем специфицируют реализацию системы, подсистемы или класса. Варианты использования описывают то, как ведет себя элемент, а не то, как он реализован, поэтому они не могут быть подвергнуты прямому и обратному проектированию.
Прямое проектирование (forward engineering) – это процесс трансформации модели в код путем ее отображения на язык реализации. Диаграмма вариантов использования может быть подвергнута прямому проектированию с целью формирования тестов для того элемента, который она описывает. Каждый вариант использования на такой диаграмме специфицирует поток событий с его вариациями, и все эти потоки описывают ожидаемое поведение элемента – то есть нечто такое, что подлежит тестированию. Хорошо структурированный вариант использования даже специфицирует пред- и постусловия, которые могут применяться в целях определения начального состояния теста и критериев его успешности. Для каждого варианта использования из диаграммы вы можете создать сценарий тестирования (test case), который будет выполняться при выпуске каждой новой версии данного элемента, таким образом подтверждая, что он работает надлежащим образом, прежде чем другие элементы смогут опираться на него в своей работе.
Чтобы осуществить прямое проектирование диаграммы вариантов использования, необходимо:
Обратное проектирование (reverse engineering) – процесс трансформации кода в модель посредством его отображения из определенного языка реализации. Автоматически выполнить обратное проектирование диаграммы вариантов использования на данном этапе не представляется возможным, потому что на пути от спецификации поведения элемента к его реализации происходит потеря информации. Однако в ваших силах изучить существующую систему и распознать ее подразумеваемое поведение самостоятельно, с тем чтобы на этой основе оформить диаграмму вариантов использования. В любом случае неплохо это делать каждый раз, когда вы имеете дело с недокументированным программным обеспечением. Диаграммы вариантов использования UML просто предоставляют вам стандарт и выразительный язык, чтобы можно было зафиксировать то, что вы при этом обнаружите.
Чтобы осуществить обратное проектирование диаграммы вариантов использования, необходимо:
Когда вы создаете диаграммы вариантов использования в UML, помните, что каждая такая диаграмма – это просто графический срез статического представления вариантов использования системы. Отсюда следует, что нет необходимости в одной-единственной диаграмме, которая охватывала бы это представление целиком. Диаграммы вариантов использования, взятые в совокупности, формируют статическое представление вариантов использования системы; каждая из них в отдельности выражает только какой-то один аспект.
Хорошо структурированная диаграмма вариантов использования обладает следующими характеристиками:
Когда вы рисуете диаграмму вариантов использования:
Вообще, если вы задействуете сложные связи включения и расширения, вынесите их в отдельную диаграмму.
На следующем шаге рассмотрим понятие диаграммы деятельности в UML.