Я думаю, что UML-диаграммы могут быть полезны, только если они выражают что-то на более высоком уровне абстракции, чем ваш код .
Написание UML просто ради написания UML становится ненужной бюрократией и делает проект и код менее адаптируемыми к изменениям без какой-либо выгоды.
Например, диаграмма классов UML, показывающая все классы в пакете со всеми их атрибутами и методами - что-то, что может быть легко сгенерировано автоматически - не дает никакого значения вообще: она находится на том же уровне абстракции, что и ваш код , Кроме того, код, несомненно, будет лучшим источником этой информации, потому что он всегда будет актуальным, и, вероятно, он будет документирован и организован таким образом, чтобы было легче понять, какие методы / атрибуты / вещи важнее.
С другой стороны, если у вас есть понятия более высокого уровня абстракции, чем то, что может быть выражено в коде, то документирование их на диаграмме может быть хорошей идеей.
Например, диаграмма, показывающая абстрактные модули более высокого уровня в сложной системе, с их зависимостями и, возможно, небольшим описанием их обязанностей и того, на какой пакет / пространство имен они отображаются в исходном коде, может быть действительно полезной для нового члена команды. это должно быть введено в проект, или может также использоваться, чтобы выяснить, где новый класс / функциональность должен быть брошен.
Другим примером полезной диаграммы может быть диаграмма последовательности, показывающая шаги высокого уровня, которые должны быть предприняты в протоколе связи. Возможно, у каждого из этих шагов есть свои причуды и сложности, но этого, вероятно, достаточно, чтобы описать их в самом коде. Диаграмма более высокого уровня может помочь программисту легко понять «общую картину» вещей, не беспокоясь о сложностях каждого взаимодействия.
Во всяком случае, это только некоторые примеры; Есть много случаев, когда простая диаграмма может оказать большую помощь. Просто помните, что вы должны делать это только тогда, когда вы не можете выразить что-то в самом коде. Если вы обнаружите, что используете UML-диаграммы для объяснения самого исходного кода, вместо этого сделайте код soruce более самодокументированным.
Наконец, некоторые общие правила, применимые к коду, могут также применяться к диаграммам: избегайте повторения, сохраняйте простоту, не бойтесь что-то менять (только то, что что-то задокументировано на диаграмме UML, не означает, что это невозможно). быть измененным) и всегда думать о том, кто будет читать / поддерживать эти диаграммы в будущем (вероятно, ваше будущее) при их написании :)