Разверну идею, поданую
macklakov.
Создаете новую таблицу с полем единственным полем ClassID. Из new пишите в нее ClassID. Потом сажаете несколько человек на тестирование всех стандартных операций в системе. Тестируете и получаете ClassID всех используемых. Далее любым известным способом формируете разность - все классы минус используемые.
Из числа оставшихся возможно предположить 2-3% тех, которые нужны, но функционал просто забыли протестировать. Далее перекрестными ссылками ищутся все определения каждого конкретного класса из числа разностных классов и коментарятся. Коментарий дополняется двумя спец. макросами. Первый нужен, чтобы все такие комментарии можно было найти для удаления, второй - все с использованием такого класса для восстановления в случае ошибки.
Постепенно кол-во оставшихся классов сведется к 0. В финале, тестируете еще раз и вытираете комментарии. Работа долгая и потная, но чудес не бывает
По крайней мере, это системный подход..