Всякий раз, когда я начинаю новую работу (что часто является контрактом), я провожу два-три дня, читая каждый отдельный исходный файл в хранилище, и веду записи по каждому классу в простом текстовом файле. Это довольно трудоемко, но это означает, что вы получите действительно хорошее представление о том, как совместим проект, и у вас есть надежная карта, когда вам нужно найти класс, который что-то делает.
Хотя я люблю UML / создание диаграмм при запуске проекта, я лично не нахожу их вообще полезными при изучении существующего кода.