Это действительно зависит от того, на кого ориентирован проектный документ. Если это босс нетехнический, значит, вы хороши в том, что имеете.
Если это для вас самих, то вы используете инструмент, чтобы помочь вам, поэтому вы решаете. Я создаю документы по проектированию на уровне методов, когда создаю проект, но он находится на высоком уровне, поэтому я могу понять, какими должны быть функции различных классов. Я обнаружил, что в разных языках основные функциональные возможности класса имеют мало общего с языком программирования, на котором мы работаем. Некоторые из требуемых внутренних деталей и функций определенно различаются в зависимости от выбранного языка, но это детали реализации, с которыми я не обращаю внимание на этапе проектирования.
Это, безусловно, помогает мне знать, что, например, класс авторизации может иметь функцию аутентификации, которая принимает объект User в качестве параметра. На самом деле мне все равно, во время проектирования, что мне может понадобиться внутренняя строка-функция md5 для выполнения какой-то конкретной цели. Я узнаю об этом во время кодирования.
Целью первоначального проектирования является организация, чтобы вы могли продвигаться вперед с ясностью и продуманностью, а не вырывать и повторно реализовывать одну и ту же функцию 4 раза, потому что вы забыли какой-то сценарий из-за отсутствия планирования.
РЕДАКТИРОВАТЬ: я много работаю в PHP, и я на самом деле использую PhpDoc для разработки документации, просто записывая сигнатуру метода без реализации, а затем помещая подробное описание того, что метод должен делать в заголовке метода Комментарии. Это поможет любому, кто использует мой класс в будущем, потому что дизайн - это документация. Я также могу изменить документацию, если мне нужно внести некоторые изменения во время кодирования.
Я много работаю в php4, поэтому не могу использовать интерфейсы. В php5 я создаю интерфейс, а затем внедряю его в другом месте.