Что такое фокус управления на диаграмме последовательности
Что проверяют
Знаете ли вы нотацию UML предметно, а не на уровне «рисовал стрелочки». Фокус управления это мелкий элемент, по которому сразу видно, читает ли аналитик диаграмму как описание порядка вызовов или как картинку. Заодно проверяют, отличаете ли вы линию жизни от периода активности.
Как отвечать
Фокус управления это узкий вертикальный прямоугольник на линии жизни, показывающий отрезок времени, когда объект активен: выполняет операцию сам или ждёт возврата от вызванного объекта. В UML 2 элемент называется спецификацией выполнения, старое название прижилось в литературе и в редакторах.
Правила, которые стоит назвать:
- прямоугольник начинается с приходом сообщения и заканчивается возвратом управления;
- вложенный вызов рисуется вторым прямоугольником поверх первого со сдвигом вправо, так же рисуется и самовызов;
- возврат из синхронного вызова показывают пунктирной стрелкой либо просто концом активации, отдельным сплошным сообщением его не рисуют;
- у асинхронного сообщения отправитель управления не отдаёт, его активация продолжается независимо от адресата;
- уничтожение объекта закрывает активацию крестом на линии жизни.
Аналитику это нужно не ради красоты нотации: по высоте и вложенности прямоугольников видно, кто держит цепочку синхронных вызовов, где закладывать таймаут и какой участок разумно сделать асинхронным.
Где спотыкаются
Путают фокус управления с линией жизни. Пунктирная вертикаль это всё время существования объекта, прямоугольник только период его активности, и объект вполне может быть жив, но неактивен.
Называют фокусом управления участника, который руководит сценарием. Это другое понятие: фокус относится к отрезку времени на конкретной линии жизни, а не к роли объекта в процессе.
Рисуют активацию во всю высоту диаграммы у каждого участника. Тогда диаграмма перестаёт отвечать на главный вопрос, кто в какой момент ждёт, и разница между синхронным и асинхронным обменом на ней просто исчезает.