Я думаю, есть две проблемы для рассмотрения.
Будь бетоном
Диаграммы последовательности в лучшем случае, когда они используются для передачи одного конкретного сценария (например, варианта использования).
Когда вы используете их, чтобы изобразить более одного сценария, обычно, чтобы показать, что происходит на каждом возможном пути в сценарии использования, они очень быстро усложняются.
Поскольку исходный код в этом отношении подобен сценарию использования (т. Е. Общее описание вместо конкретного), диаграммы последовательности не очень подходят. Представьте себе расширение уровней x графа вызовов некоторого метода и отображение всей этой информации на одной диаграмме, включая все условия if & loop.
Вот почему «захват сущности», как вы ее выразили, так важен.
В идеале диаграмма последовательности помещается на одной странице формата A4 / Letter, все, что больше, делает диаграмму громоздкой. Возможно, как правило, ограничьте количество объектов 6-10, а количество звонков 10-25.
Фокус на общении
Диаграммы последовательности предназначены для выделения связи, а не внутренней обработки.
Они очень выразительны, когда речь идет об определении связи, которая происходит (участвующие стороны, асинхронная, синхронная, немедленная, задержка, сигнал, вызов и т. Д.), Но не когда речь идет о внутренней обработке (на самом деле только действия) 1019 *
Кроме того, хотя вы можете использовать переменные, это далеко не идеально. Объекты наверху - это, ну, объекты. Вы можете рассматривать их как переменные (то есть использовать их имена как переменные), но это просто не очень удобно.
Например, попробуйте изобразить обход связанного списка, где вам нужно следить за элементом и его предшественником с помощью диаграммы последовательности. Вы можете использовать два «переменных» объекта с именами «текущий» и «предыдущий» и добавить необходимые действия, чтобы сделать current = current.next и previous = current, но результат просто неловкий.