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